1972_stuff/s1/frag34
/ a3 -- pdp-11 assembler pass 2
assem:
jsr pc,readop
jsr pc,checkeos
br ealoop
mov r4,-(sp)
jsr pc,readop
cmp (sp),$1
bne 1f
mov $2,(sp)
mov r4,numval
jsr pc,readop
1:
cmp r4,$'=
beq 4f
cmp r4,$':
beq 1f
mov r4,savop
mov (sp)+,r4
jsr pc,opline
br ealoop
1:
mov (sp)+,r4
cmp r4,$200
bhis 1f
cmp r4,$2
beq 3f
jsr r5,error; 'x
br assem
1:
cmp dot,symtab+2(r4)
beq assem
jsr r5,error; 'p
br assem
3:
mov numval,r4
jsr pc,fbadv
br assem
4:
jsr pc,readop
jsr pc,expres
mov (sp)+,r1
cmp r1,$200 /test for dot
bne 1f
bic $40,r3
cmp r3,dot-2 / can't change relocation
bne 2f
cmp r3,$4 / bss
bne 3f
mov r2,dot
br ealoop
3:
sub dot,r2
bmi 2f
mov r2,-(sp)
3:
dec (sp)
bmi 3f
clr r2
mov $1,r3
jsr pc,outb
br 3b
3:
tst (sp)+
br ealoop
2:
jsr r5,error; '.
br ealoop
1:
cmp r3,$40
bne 1f
jsr r5,error; 'r
1:
bic $37,symtab(r1)
bic $!37,r3
bne 1f
clr r2
1:
bisb r3,symtab(r1)
mov r2,symtab+2(r1)
ealoop:
cmp r4,$'\n
beq 1f
cmp r4,$'\e
bne assem
rts pc
1:
inc line
br assem
checkeos:
cmp r4,$'\n
beq 1f
cmp r4,$';
beq 1f
cmp r4,$'\e
beq 1f
add $2,(sp)
1:
rts pc
fbadv:
movb nxtfbr(r4),curfbr(r4)
asl r4
mov nxtfb(r4),curfb(r4)
mov nxtfbp(r4),r1
bne 1f
mov fbbufp,r1
1:
cmpb r4,(r1)+
beq 1f
tstb (r1)+
bpl 2f
dec r1
br 1f
2:
tst (r1)+
br 1b
1:
movb (r1)+,r0
mov (r1)+,nxtfb(r4)
mov r1,nxtfbp(r4)
asr r4
movb r0,nxtfbr(r4)
rts pc
bisb r3,symtab(r1)
mov r2,symtab+2(r1)
ealoop:
cmp r4,$'\n
beq 1f
cmp r4,$'\e
bne assem
rts pc
1:
inc line