1: .globl succ,fail,iget 2: .globl seekchar,getword,alterword 3: .globl sprv,update 4: .globl .l,.u,.p,.t,.st, 5: 6: / infix = 7: .st: 8: jsr pc,sprv 9: mov (sp)+,(sp) 10: mov (sp)+,(sp) 11: / update 12: .u: 13: jsr pc,update 14: br 9f 15: / pop stack 16: .p: 17: jsr pc,sprv 18: cmp (sp)+,(sp)+ 19: br 9f 20: / test stack 21: .t: 22: jsr pc,sprv 23: mov (sp)+,(sp)+ 24: bne 9f 25: jmp fail 26: / load named value 27: / rvalue into (sp), lvalue into 2(sp) 28: .l: 29: jsr pc,iget 30: mov r0,-(sp) 31: mov (r0),-(sp) 32: br 9f 33: / update a stored value, used by all assignments 34: update: 35: cmp 2+2(sp),$-1 36: beq 1f 37: mov 0+2(sp),*2+2(sp) 38: rts pc 39: 1: 40: mov 4+2(sp),r1 41: mov 6+2(sp),r0 42: jsr pc,seekchar 43: mov 0+2(sp),r0 44: jsr pc,alterword 45: / make sp hold a simple rv (forget it might be a table value) 46: sprv: 47: mov (sp)+,r0 48: cmp $-1,2(sp) 49: bne 1f 50: mov (sp)+,(sp) 51: mov (sp)+,(sp) 52: 1: 53: mov r0,pc 54: 9: 55: jmp succ