166 lines
1.7 KiB
ArmAsm
166 lines
1.7 KiB
ArmAsm
/
|
|
/
|
|
|
|
/ a3 -- pdp-11 assembler pass 2
|
|
|
|
assem:
|
|
jsr pc,readop
|
|
cmp r4,$5
|
|
beq 2f
|
|
cmp r4,$'<
|
|
beq 2f
|
|
jsr pc,checkeos
|
|
br eal1
|
|
mov r4,-(sp)
|
|
cmp (sp),$1
|
|
bne 1f
|
|
mov $2,(sp)
|
|
jsr pc,getw
|
|
mov r4,numval
|
|
1:
|
|
jsr pc,readop
|
|
cmp r4,$'=
|
|
beq 4f
|
|
cmp r4,$':
|
|
beq 1f
|
|
mov r4,savop
|
|
mov (sp)+,r4
|
|
2:
|
|
jsr pc,opline
|
|
dotmax:
|
|
tstb passno
|
|
bne eal1
|
|
movb dotrel,r0
|
|
asl r0
|
|
cmp dot,txtsiz-4(r0)
|
|
blos ealoop
|
|
mov dot,txtsiz-4(r0)
|
|
eal1:
|
|
jmp ealoop
|
|
1:
|
|
mov (sp)+,r4
|
|
cmp r4,$200
|
|
bhis 1f
|
|
cmp r4,$2
|
|
beq 3f
|
|
jsr r5,error; 'x
|
|
br assem
|
|
1:
|
|
tstb passno
|
|
bne 2f
|
|
movb (r4),r0
|
|
bic $!37,r0
|
|
beq 5f
|
|
cmp r0,$33
|
|
blt 6f
|
|
cmp r0,$34
|
|
ble 5f
|
|
6:
|
|
jsr r5,error; 'm
|
|
5:
|
|
bic $37,(r4)
|
|
bis dotrel,(r4)
|
|
mov 2(r4),brdelt
|
|
sub dot,brdelt
|
|
mov dot,2(r4)
|
|
br assem
|
|
2:
|
|
cmp dot,2(r4)
|
|
beq assem
|
|
jsr r5,error; 'p
|
|
br assem
|
|
3:
|
|
mov numval,r4
|
|
jsr pc,fbadv
|
|
asl r4
|
|
mov curfb(r4),r0
|
|
movb dotrel,(r0)
|
|
mov 2(r0),brdelt
|
|
sub dot,brdelt
|
|
mov dot,2(r0)
|
|
br assem
|
|
4:
|
|
jsr pc,readop
|
|
jsr pc,expres
|
|
mov (sp)+,r1
|
|
cmp r1,$symtab /test for dot
|
|
bne 1f
|
|
bic $40,r3
|
|
cmp r3,dotrel / can't change relocation
|
|
bne 2f
|
|
cmp r3,$4 / bss
|
|
bne 3f
|
|
mov r2,dot
|
|
br dotmax
|
|
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 dotmax
|
|
2:
|
|
jsr r5,error; '.
|
|
br ealoop
|
|
1:
|
|
cmp r3,$40
|
|
bne 1f
|
|
jsr r5,error; 'r
|
|
1:
|
|
bic $37,(r1)
|
|
bic $!37,r3
|
|
bne 1f
|
|
clr r2
|
|
1:
|
|
bisb r3,(r1)
|
|
mov r2,2(r1)
|
|
|
|
ealoop:
|
|
cmp r4,$'\n
|
|
beq 1f
|
|
cmp r4,$'\e
|
|
bne 9f
|
|
rts pc
|
|
1:
|
|
inc line
|
|
9:
|
|
jmp assem
|
|
|
|
checkeos:
|
|
cmp r4,$'\n
|
|
beq 1f
|
|
cmp r4,$';
|
|
beq 1f
|
|
cmp r4,$'\e
|
|
beq 1f
|
|
add $2,(sp)
|
|
1:
|
|
rts pc
|
|
|
|
fbadv:
|
|
asl r4
|
|
mov nxtfb(r4),r1
|
|
mov r1,curfb(r4)
|
|
bne 1f
|
|
mov fbbufp,r1
|
|
br 2f
|
|
1:
|
|
add $4,r1
|
|
2:
|
|
cmpb 1(r1),r4
|
|
beq 1f
|
|
tst (r1)
|
|
bpl 1b
|
|
1:
|
|
mov r1,nxtfb(r4)
|
|
asr r4
|
|
rts pc
|
|
|