Add original unix v6
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ f39 -- i/o statements
|
||||
|
||||
.globl sread
|
||||
.globl swrit
|
||||
.globl sprin
|
||||
.globl sback
|
||||
.globl srewi
|
||||
.globl sendf
|
||||
|
||||
.globl getsym
|
||||
.globl error
|
||||
.globl geticon
|
||||
.globl e2
|
||||
.globl lvalue
|
||||
.globl rvalue
|
||||
.globl iserror
|
||||
.globl convrt
|
||||
.globl code
|
||||
.globl chrtab
|
||||
.globl blocks
|
||||
.globl blockp
|
||||
.globl doend
|
||||
.globl genop
|
||||
.globl levzer
|
||||
.globl dobeg
|
||||
.globl intexp
|
||||
.globl ptemp
|
||||
.globl blocks
|
||||
.globl blockp
|
||||
.globl intexp
|
||||
.globl newline
|
||||
.globl nelem
|
||||
|
||||
sprin:
|
||||
mov $8.,-(sp)
|
||||
jsr r5,getfmt
|
||||
br 9f
|
||||
cmp r0,$36. / ,
|
||||
beq 1f
|
||||
cmp r0,$40. / =|
|
||||
bne 8f
|
||||
clrb (r1)
|
||||
1:
|
||||
mov $34.,r0 / simulate )
|
||||
br 2f
|
||||
|
||||
sread:
|
||||
mov $2,-(sp)
|
||||
br 1f
|
||||
|
||||
swrit:
|
||||
clr -(sp)
|
||||
|
||||
1:
|
||||
cmpb (r1)+,$'(
|
||||
bne 8f
|
||||
jsr r5,intexp
|
||||
mov $blocks,blockp
|
||||
cmp r0,$34. / ), implies unformatted
|
||||
beq 2f
|
||||
cmp r0,$36. / ,
|
||||
bne 8f
|
||||
jsr r5,getfmt
|
||||
br 9f
|
||||
add $4,(sp)
|
||||
cmp r0,$34. / )
|
||||
bne 8f
|
||||
2:
|
||||
mov (sp),r0
|
||||
mov iotype(r0),r0
|
||||
jsr r5,code
|
||||
< %s\n\0>; .even
|
||||
r0
|
||||
1:
|
||||
tstb (r1)
|
||||
beq 9f
|
||||
1:
|
||||
jsr r5,list
|
||||
cmp r0,$40. / |=
|
||||
beq 9f
|
||||
8:
|
||||
jsr r5,error; 41.
|
||||
9:
|
||||
jsr r5,code
|
||||
< endio\n\0>; .even
|
||||
tst (sp)+
|
||||
rts r5
|
||||
|
||||
iotype:
|
||||
1f
|
||||
2f
|
||||
3f
|
||||
4f
|
||||
5f
|
||||
|
||||
1:
|
||||
<iowu\0>
|
||||
2:
|
||||
<ioru\0>
|
||||
3:
|
||||
<iowf\0>
|
||||
4:
|
||||
<iorf\0>
|
||||
5:
|
||||
<iowp\0>
|
||||
.even
|
||||
|
||||
getfmt:
|
||||
movb (r1),r0
|
||||
cmpb chrtab(r0),$4 / digit
|
||||
beq 1f
|
||||
jsr r5,e2
|
||||
jsr r5,iserror
|
||||
rts r5
|
||||
mov r0,-(sp)
|
||||
jsr r5,lvalue
|
||||
mov $blocks,blockp
|
||||
br 8f
|
||||
1:
|
||||
jsr r5,geticon
|
||||
br 8f
|
||||
mov r0,temp
|
||||
jsr r5,ptemp; 'i; temp; line / register use of format
|
||||
jsr r5,code
|
||||
< lval; .%d\n\0>; .even
|
||||
r0
|
||||
jsr r5,getsym
|
||||
mov r0,-(sp)
|
||||
8:
|
||||
mov (sp)+,r0
|
||||
tst (r5)+
|
||||
rts r5
|
||||
|
||||
list:
|
||||
jsr r5,lstitm
|
||||
cmp r0,$36. / ,
|
||||
beq list
|
||||
rts r5
|
||||
|
||||
lstitm:
|
||||
mov $blocks,blockp
|
||||
cmpb (r1),$'( / test for sublist
|
||||
beq 1f
|
||||
jsr r5,e2
|
||||
jsr r5,iserror
|
||||
rts r5
|
||||
mov r0,-(sp)
|
||||
clr -(sp)
|
||||
tst (r2)
|
||||
bne 2f / test for name
|
||||
mov 2(r2),r3
|
||||
mov symtab(r3),r0
|
||||
bic $!70,r0
|
||||
cmp r0,$20 / test for short list
|
||||
bne 2f
|
||||
mov pc,(sp)
|
||||
mov symtab+2(r3),r3
|
||||
mov (r3)+,-(sp)
|
||||
asl (sp)
|
||||
add (sp)+,r3
|
||||
mov (r3),r3
|
||||
jsr r5,code
|
||||
< slist1; d%d\n2:\0>; .even
|
||||
r3
|
||||
2:
|
||||
jsr r5,lvalue
|
||||
tst (sp)
|
||||
beq 3f
|
||||
jsr r5,code
|
||||
< slist3\n\0>; .even
|
||||
3:
|
||||
mov $"io,r0
|
||||
jsr r5,genop
|
||||
tst (sp)+
|
||||
beq 2f
|
||||
jsr r5,code
|
||||
<\n slist2; 2b\0>; .even
|
||||
2:
|
||||
jsr r5,newline
|
||||
mov (sp)+,r0
|
||||
rts r5
|
||||
1:
|
||||
inc r1
|
||||
jsr r5,levzer; '=
|
||||
br 1f / yes, implied do
|
||||
jsr r5,list
|
||||
jsr r5,chkel
|
||||
jsr r5,getsym
|
||||
rts r5
|
||||
1:
|
||||
cmp r1,r0
|
||||
bhis 8f
|
||||
cmpb -(r0),$', / look backwards
|
||||
bne 1b
|
||||
mov r0,-(sp)
|
||||
mov r1,-(sp)
|
||||
movb $'),(r0) / fake!!
|
||||
mov r0,r1
|
||||
inc r1
|
||||
clr r0
|
||||
jsr r5,dobeg / get do
|
||||
jsr r5,chkel
|
||||
mov (sp)+,r0
|
||||
mov r1,-(sp)
|
||||
mov r0,r1
|
||||
jsr r5,list
|
||||
jsr r5,chkel
|
||||
clr r0
|
||||
jsr r5,doend
|
||||
mov (sp)+,r1
|
||||
movb $',,*(sp)+ / unfake!!
|
||||
jsr r5,getsym
|
||||
rts r5
|
||||
|
||||
chkel:
|
||||
cmp r0,$34. / )
|
||||
beq 1f
|
||||
8:
|
||||
jsr r5,error; 41.
|
||||
1:
|
||||
rts r5
|
||||
|
||||
sback:
|
||||
mov $bksp,r2
|
||||
br 1f
|
||||
|
||||
srewi:
|
||||
mov $rewi,r2
|
||||
br 1f
|
||||
|
||||
sendf:
|
||||
mov $enfl,r2
|
||||
|
||||
1:
|
||||
mov r2,-(sp)
|
||||
jsr r5,intexp
|
||||
mov (sp),r2
|
||||
jsr r5,code
|
||||
< %s\n\0>; .even
|
||||
r2
|
||||
cmp r0,$40. / =|
|
||||
beq 9f
|
||||
8:
|
||||
jsr r5,error; 41.
|
||||
9:
|
||||
tst (sp)+
|
||||
rts r5
|
||||
|
||||
bksp:
|
||||
<bksp\0>
|
||||
rewi:
|
||||
<rewi\0>
|
||||
enfl:
|
||||
<enfl\0>
|
||||
|
||||
Reference in New Issue
Block a user