Add original unix v6
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ a4 -- pdp-11 assembler pass 2
|
||||
|
||||
oset:
|
||||
mov r2,-(sp)
|
||||
mov (r5)+,r1
|
||||
mov r0,r2
|
||||
bic $!777,r0
|
||||
add r1,r0
|
||||
add $6,r0
|
||||
mov r0,(r1)+ / next slot
|
||||
mov r1,r0
|
||||
add $1004,r0
|
||||
mov r0,(r1)+ / buf max
|
||||
mov r2,(r1)+ / seek addr
|
||||
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)+,r1
|
||||
mov r1,0f / seek address
|
||||
mov fout,r0
|
||||
sys indir; 9f
|
||||
.data
|
||||
9: sys seek; 0:..; 0
|
||||
.text
|
||||
bic $!777,r1
|
||||
add r2,r1 / write address
|
||||
mov r1,0f
|
||||
mov r2,r0
|
||||
bis $777,-(r2)
|
||||
inc (r2) / new seek addr
|
||||
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
|
||||
.data
|
||||
9: sys write; 0:..; ..
|
||||
.text
|
||||
rts r5
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user