Research V7 development
[unix-history] / usr / src / cmd / as / as24.s
/
/
/ a4 -- pdp-11 assembler pass 2
oset:
mov r2,-(sp)
mov r3,-(sp)
mov (r5)+,r3
mov r1,r2
bic $!777,r1
add r3,r1
add $8,r1
mov r1,(r3)+ / next slot
mov r3,r1
add $1006,r1
mov r1,(r3)+ / buf max
mov r0,(r3)+
mov r2,(r3)+ / seek addr
mov (sp)+,r3
mov (sp)+,r2
rts r5
putw:
mov r1,-(sp)
mov r2,-(sp)
mov (r5)+,r2
mov (r2)+,r1 / slot
cmp r1,(r2) / buf max
bhis 1f
mov r0,(r1)+
mov r1,-(r2)
br 2f
1:
tst (r2)+
mov r0,-(sp)
jsr r5,flush1
mov (sp)+,r0
mov r0,*(r2)+
add $2,-(r2)
2:
mov (sp)+,r2
mov (sp)+,r1
rts r5
flush:
mov (r5)+,r2
cmp (r2)+,(r2)+
flush1:
mov (r2)+,0f
mov (r2)+,r1
mov r1,0f+2 / seek address
mov fout,r0
sys indir; 9f
.data
9: sys lseek; 0:..; ..; 0
.text
bic $!777,r1
add r2,r1 / write address
mov r1,0f
mov r2,r0
bis $777,-(r2)
add $1,(r2) / new seek addr
adc -(r2)
cmp -(r2),-(r2)
sub (r2),r1
neg r1
mov r1,0f+2 / count
mov r0,(r2) / new next slot
mov fout,r0
sys indir; 9f
jes wrterr
.data
9: sys write; 0:..; ..
.text
rts r5
wrterr:
mov $1,r0
sys write; 9f; 8f-9f
jmp saexit
9: <as: write error on output\n>; 8:
readop:
mov savop,r4
beq 1f
clr savop
rts pc
1:
jsr pc,getw1
cmp r4,$200
blo 1f
cmp r4,$4000
blo 2f
add $usymtab-4000,r4
rts pc
2:
add $symtab-1000,r4
1:
rts pc
getw:
mov savop,r4
beq getw1
clr savop
rts pc
getw1:
dec ibufc
bgt 1f
movb fin,r0
sys read; inbuf; 512.
bes 3f
asr r0
mov r0,ibufc
bne 2f
3:
mov $4,r4
sev
rts pc
2:
mov $inbuf,ibufp
1:
mov *ibufp,r4
add $2,ibufp
rts pc