📄 f39.s
字号:
/// 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 nelemsprin: 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 2fsread: mov $2,-(sp) br 1fswrit: 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 8f2: mov (sp),r0 mov iotype(r0),r0 jsr r5,code < %s\n\0>; .even r01: tstb (r1) beq 9f1: jsr r5,list cmp r0,$40. / |= beq 9f8: jsr r5,error; 41.9: jsr r5,code < endio\n\0>; .even tst (sp)+ rts r5iotype: 1f 2f 3f 4f 5f1: <iowu\0>2: <ioru\0>3: <iowf\0>4: <iorf\0>5: <iowp\0> .evengetfmt: 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 8f1: 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 r5list: jsr r5,lstitm cmp r0,$36. / , beq list rts r5lstitm: 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 r32: jsr r5,lvalue tst (sp) beq 3f jsr r5,code < slist3\n\0>; .even3: mov $"io,r0 jsr r5,genop tst (sp)+ beq 2f jsr r5,code <\n slist2; 2b\0>; .even2: jsr r5,newline mov (sp)+,r0 rts r51: inc r1 jsr r5,levzer; '= br 1f / yes, implied do jsr r5,list jsr r5,chkel jsr r5,getsym rts r51: 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 r5chkel: cmp r0,$34. / ) beq 1f8: jsr r5,error; 41.1: rts r5sback: mov $bksp,r2 br 1fsrewi: mov $rewi,r2 br 1fsendf: mov $enfl,r21: mov r2,-(sp) jsr r5,intexp mov (sp),r2 jsr r5,code < %s\n\0>; .even r2 cmp r0,$40. / =| beq 9f8: jsr r5,error; 41.9: tst (sp)+ rts r5bksp: <bksp\0>rewi: <rewi\0>enfl: <enfl\0>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -