/ / / 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: 2: 3: 4: 5: .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: rewi: enfl: