From be6c89122efe20ffbde96f2b0e03ecf8498e384b Mon Sep 17 00:00:00 2001 From: Dennis Ritchie Date: Tue, 26 Nov 1974 18:13:21 -0500 Subject: [PATCH] Research V5 development Work on file usr/source/s1/as27.s Synthesized-from: v5 --- usr/source/s1/as27.s | 295 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 usr/source/s1/as27.s diff --git a/usr/source/s1/as27.s b/usr/source/s1/as27.s new file mode 100644 index 0000000000..95f1bd682f --- /dev/null +++ b/usr/source/s1/as27.s @@ -0,0 +1,295 @@ +/ +/ copyright 1972 bell telephone laboratories inc. +/ + +/ a7 -- pdp-11 assembler + +expres: + clr xsymbol +expres1: + mov r5,-(sp) + mov $'+,-(sp) + clr r2 + mov $1,r3 + br 1f +advanc: + jsr pc,readop +1: + mov r4,r0 + jsr r5,betwen; 0; 177 + br .+4 + br 7f + movb (r4),r0 + tst r0 + bne 1f + tstb passno + beq 1f + jsr r5,error; 'u +1: + cmp r0,$40 + bne 1f + mov r4,xsymbol + clr r1 + br oprand +1: + mov 2(r4),r1 + br oprand +7: + cmp r4,$141 + blo 1f + asl r4 + mov curfb-[2*141](r4),r0 + mov 2(r0),r1 + movb (r0),r0 + br oprand +1: + mov $esw1,r1 +1: + cmp (r1)+,r4 + beq 1f + tst (r1)+ + bne 1b + tst (sp)+ + mov (sp)+,r5 + rts pc +1: + jmp *(r1) + +esw1: + '+; binop + '-; binop + '*; binop + '/; binop + '&; binop + 037; binop + 035; binop + 036; binop + '%; binop + '[; brack + '^; binop + 1; exnum + 2; exnum1 + '!; binop + 200; 0 + +binop: + cmpb (sp),$'+ + beq 1f + jsr pc,errore +1: + movb r4,(sp) + br advanc + +exnum1: + mov numval,r1 + br 1f + +exnum: + jsr pc,getw + mov r4,r1 +1: + mov $1,r0 + br oprand + +brack: + mov r2,-(sp) + mov r3,-(sp) + jsr pc,readop + jsr pc,expres1 + cmp r4,$'] + beq 1f + jsr r5,error; '] +1: + mov r3,r0 + mov r2,r1 + mov (sp)+,r3 + mov (sp)+,r2 + +oprand: + mov $exsw2,r5 +1: + cmp (sp),(r5)+ + beq 1f + tst (r5)+ + bne 1b + br eoprnd +1: + jmp *(r5) + +exsw2: + '+; exadd + '-; exsub + '*; exmul + '/; exdiv + 037; exor + '&; exand + 035;exlsh + 036;exrsh + '%; exmod + '^; excmbin + '!; exnot + 200; 0 + +excmbin: + mov r0,r3 + br eoprnd + +exrsh: + neg r1 + beq exlsh + inc r1 + clc + ror r2 +exlsh: + jsr r5,combin; relte2 + als r1,r2 + br eoprnd + +exmod: + jsr r5,combin; relte2 + mov r3,r0 + mov r2,r3 + clr r2 + dvd r1,r2 + mov r3,r2 + mov r0,r3 + br eoprnd + +exadd: + jsr r5,combin; reltp2 + add r1,r2 + br eoprnd + +exsub: + jsr r5,combin; reltm2 + sub r1,r2 + br eoprnd + +exand: + jsr r5,combin; relte2 + com r1 + bic r1,r2 + br eoprnd + +exor: + jsr r5,combin; relte2 + bis r1,r2 + br eoprnd + +exmul: + jsr r5,combin; relte2 + mpy r2,r1 + mov r1,r2 + br eoprnd + +exdiv: + jsr r5,combin; relte2 + mov r3,r0 + mov r2,r3 + clr r2 + dvd r1,r2 + mov r0,r3 + br eoprnd + +exnot: + jsr r5,combin; relte2 + com r1 + add r1,r2 + br eoprnd + +eoprnd: + mov $'+,(sp) + jmp advanc + +combin: + tstb passno + bne combin1 + mov r0,-(sp) + bis r3,(sp) + bic $!40,(sp) + bic $!37,r0 + bic $!37,r3 + cmp r0,r3 + ble 1f + mov r0,-(sp) + mov r3,r0 + mov (sp)+,r3 +1: + tst r0 + beq 1f + cmp (r5)+,$reltm2 + bne 2f + cmp r0,r3 + bne 2f + mov $1,r3 + br 2f +1: + tst (r5)+ + clr r3 +2: + bis (sp)+,r3 + rts r5 +combin1: + mov r1,-(sp) + clr maxtyp + jsr pc,maprel + mov r0,r1 + mpy $6,r1 + mov r3,r0 + jsr pc,maprel + add (r5)+,r0 + add r1,r0 + movb (r0),r3 + bpl 1f + cmp r3,$-1 + beq 2f + jsr r5,error; 'r +2: + mov maxtyp,r3 +1: + mov (sp)+,r1 + rts r5 + +maprel: + cmp r0,$40 + bne 1f + mov $5,r0 + rts pc +1: + bic $!37,r0 + cmp r0,maxtyp + blos 1f + mov r0,maxtyp +1: + cmp r0,$5 + blos 1f + mov $1,r0 +1: + rts pc + +X = -2 +M = -1 +reltp2: + .byte 0, 0, 0, 0, 0, 0 + .byte 0, M, 2, 3, 4,40 + .byte 0, 2, X, X, X, X + .byte 0, 3, X, X, X, X + .byte 0, 4, X, X, X, X + .byte 0,40, X, X, X, X + +reltm2: + .byte 0, 0, 0, 0, 0, 0 + .byte 0, M, 2, 3, 4,40 + .byte 0, X, 1, X, X, X + .byte 0, X, X, 1, X, X + .byte 0, X, X, X, 1, X + .byte 0, X, X, X, X, X + +relte2: + .byte 0, 0, 0, 0, 0, 0 + .byte 0, M, X, X, X, X + .byte 0, X, X, X, X, X + .byte 0, X, X, X, X, X + .byte 0, X, X, X, X, X + .byte 0, X, X, X, X, X + -- 2.20.1