mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-04-11 23:12:59 +00:00
the s1-bits tape. Doug has provided as11.s as12.s as13.s as14.s as15.s as16.s as17.s as18.s as19.s as21.s as22.s as23.s as24.s as25.s as26.s as27.s as28.s as29.s, and Warren has compared against his production, and against V5 (to determine the correct trailing blank line). These files can be considered authentic. The other file's are Warren's production only, so we need to compare against Doug's versions to ensure correctness.
207 lines
2.2 KiB
ArmAsm
207 lines
2.2 KiB
ArmAsm
/ a4 -- pdp-11 assembler pass1
|
|
|
|
rname:
|
|
mov r1,-(sp)
|
|
mov r2,-(sp)
|
|
mov r3,-(sp)
|
|
mov $2,r5
|
|
mov $symbol,r2
|
|
clr -(sp)
|
|
1:
|
|
jsr pc,rnch
|
|
mov r3,r1
|
|
mpy $40.,r1
|
|
jsr pc,rnch
|
|
add r3,r1
|
|
mpy $40.,r1
|
|
jsr pc,rnch
|
|
add r1,r3
|
|
add r3,(sp)
|
|
mov r3,(r2)+
|
|
sob r5,1b
|
|
jsr pc,rnch
|
|
mov r3,r1
|
|
add r3,(sp)
|
|
als $10.,r1
|
|
mov r1,(r2)
|
|
1:
|
|
jsr pc,rnch
|
|
tst r3
|
|
bne 1b
|
|
mov (sp)+,r1
|
|
clr r0
|
|
dvd $hshsiz,r0
|
|
mov r1,r0
|
|
asl r0
|
|
add $hshtab,r0
|
|
1:
|
|
cmp r0,$hshtab
|
|
bhi 2f
|
|
mov $2*hshsiz+hshtab,r0
|
|
2:
|
|
mov $symbol,r2
|
|
mov -(r0),r4
|
|
beq 3f
|
|
cmp (r2)+,(r4)+
|
|
bne 1b
|
|
cmp (r2)+,(r4)+
|
|
bne 1b
|
|
cmpb 1(r4),1(r2)
|
|
bne 1b
|
|
br 1f
|
|
3:
|
|
mov symend,r4
|
|
mov r4,(r0)
|
|
mov r4,-(sp)
|
|
add $20,r4
|
|
cmp r4,0f
|
|
blos 4f
|
|
add $512.,0f
|
|
sys break; 0:end
|
|
4:
|
|
mov (sp)+,r4
|
|
mov (r2)+,(r4)+
|
|
mov (r2)+,(r4)+
|
|
mov (r2)+,(r4)+
|
|
clr (r4)+
|
|
mov r4,symend
|
|
sub $4,r4
|
|
1:
|
|
mov r4,-(sp)
|
|
sub $symtab-374,r4
|
|
asr r4
|
|
jsr pc,putw
|
|
mov (sp)+,r4
|
|
mov (sp)+,r3
|
|
mov (sp)+,r2
|
|
tst (sp)+
|
|
mov (sp)+,r1
|
|
rts pc
|
|
|
|
rnch:
|
|
jsr pc,rch
|
|
movb chartab(r0),r3
|
|
ble 1f
|
|
rts pc
|
|
1:
|
|
movb r0,ch
|
|
clr r3
|
|
rts pc
|
|
|
|
number:
|
|
mov r2,-(sp)
|
|
mov r3,-(sp)
|
|
mov r5,-(sp)
|
|
clr r1
|
|
clr r5
|
|
1:
|
|
jsr pc,rch
|
|
jsr r5,betwen; '0; '9
|
|
br 1f
|
|
sub $'0,r0
|
|
mpy $10.,r5
|
|
add r0,r5
|
|
als $3,r1
|
|
add r0,r1
|
|
br 1b
|
|
1:
|
|
cmp r0,$'b
|
|
beq 1f
|
|
cmp r0,$'f
|
|
beq 1f
|
|
cmp r0,$'.
|
|
bne 2f
|
|
mov r5,r1
|
|
clr r0
|
|
2:
|
|
movb r0,ch
|
|
mov r1,r0
|
|
mov (sp)+,r5
|
|
mov (sp)+,r3
|
|
mov (sp)+,r2
|
|
rts pc
|
|
1:
|
|
mov r0,r3
|
|
mov r5,r0
|
|
jsr pc,fbcheck
|
|
add $141,r0
|
|
cmp r3,$'b
|
|
beq 1f
|
|
add $10.,r0
|
|
1:
|
|
mov r0,r4
|
|
mov (sp)+,r5
|
|
mov (sp)+,r3
|
|
mov (sp)+,r2
|
|
add $2,(sp)
|
|
rts pc
|
|
|
|
rch:
|
|
movb ch,r0
|
|
beq 1f
|
|
clrb ch
|
|
rts pc
|
|
1:
|
|
dec inbfcnt
|
|
blt 2f
|
|
movb *inbfp,r0
|
|
inc inbfp
|
|
bic $!177,r0
|
|
beq 1b
|
|
rts pc
|
|
2:
|
|
movb fin,r0
|
|
beq 3f
|
|
sys read; inbuf;512.
|
|
bcs 2f
|
|
tst r0
|
|
beq 2f
|
|
mov r0,inbfcnt
|
|
mov $inbuf,inbfp
|
|
br 1b
|
|
2:
|
|
movb fin,r0
|
|
clrb fin
|
|
sys close
|
|
3:
|
|
decb nargs
|
|
bgt 2f
|
|
mov $'\e,r0
|
|
rts pc
|
|
2:
|
|
tst ifflg
|
|
beq 2f
|
|
jsr r5,error; 'i
|
|
jmp aexit
|
|
2:
|
|
mov curarg,r0
|
|
tst (r0)+
|
|
mov (r0),0f
|
|
mov r0,curarg
|
|
incb fileflg
|
|
sys open; 0:0; 0
|
|
bec 2f
|
|
mov 0b,0f
|
|
jsr r5,filerr; 0:0; <?\n>
|
|
jmp aexit
|
|
2:
|
|
movb r0,fin
|
|
mov $1,line
|
|
mov r4,-(sp)
|
|
mov r1,-(sp)
|
|
mov $5,r4
|
|
jsr pc,putw
|
|
mov *curarg,r1
|
|
2:
|
|
movb (r1)+,r4
|
|
beq 2f
|
|
jsr pc,putw
|
|
br 2b
|
|
2:
|
|
mov $-1,r4
|
|
jsr pc,putw
|
|
mov (sp)+,r1
|
|
mov (sp)+,r4
|
|
br 1b
|
|
|