📄 fx8.s
字号:
/// fx8 -- read source line.globl getline.globl isagn.globl levzer.globl error.globl getc.globl chrtabgetline: mov r3,-(sp) clr holquo clr r3 / line number clr line mov $line,r11: jsr pc,get sub $'0,r0 cmp r0,$9 bhi 1f mpy $10.,r3 add r0,r3 br 1b1: add $'0,r0 movb r0,ch mov r3,efno1: mov lino, ifno inc ifno jsr pc,get cmp r0,$'\n / nl beq 1f cmp r0,$'' beq 2f cmp r0,$'" bne 3f2: mov r0,holquo add $4,r1 / room for h count mov r1,-(sp)2: jsr pc,get cmp r0,$'\n beq 4f cmp r0,holquo beq 2f bis $200,r0 movb r0,(r1)+ cmp r1,$eline-1 blo 2b4: tst (sp)+ br err12: mov (sp)+,r3 mov r1,-(sp) sub r3,r1 movb $'h,-(r3) clr r0 div $10.,r0 add $'0,r1 movb r1,-(r3) mov r0,r1 clr r0 div $10.,r0 add $'0,r1 movb r1,-(r3) add $'0,r0 movb r0,-(r3) mov (sp)+,r1 clr holquo br 1b3: cmp r0,$'h bne 2f clr r3 / quote count mov r1,-(sp)3: cmp r1,$line blos 4f movb -(r1),r0 cmpb chrtab(r0),$4 / digit? beq 3b cmpb chrtab(r0),$2 / test letter beq 3f cmp r0,$'* beq 3f inc r14: cmp r1,(sp) bhis 4f movb (r1)+,r0 sub $'0,r0 mpy $10.,r3 add r0,r3 br 4b4: mov r3,r0 beq 3f mov r0,holquo mov (sp)+,r1 movb $'h,(r1)+4: jsr pc,get cmp r0,$'\n bne 5f mov r0,ch mov $' ,r05: bis $200,r0 movb r0,(r1)+ cmp r1,$eline-1 bhis err1 dec holquo bne 4b br 1b3: mov (sp)+,r1 mov $'h,r02: movb r0,(r1)+ cmp r1,$eline-1 blo 1berr1: jsr r5,error; 1.1: clrb (r1)+ mov (sp)+,r3 tstb line bne 1f jmp getline1: rts r5isagn: jsr r5,levzer; '= br 1f br 3f1: mov r0,-(sp) jsr r5,levzer; ', br 4f jsr r5,levzer; '( br 1f tst (sp)+2: rts r51: cmp (sp)+,r0 blt 2b mov r1,-(sp) mov r0,r1 inc r1 jsr r5,levzer; ') br 1f1: mov (sp)+,r1 cmpb 1(r0),$'= bne 3f rts r5levzer: mov r1,r0 clr -(sp)1: tst (sp) bne 2f cmpb (r0),(r5) beq 1f2: cmpb (r0),$'( bne 2f inc (sp)2: cmpb (r0),$') bne 2f dec (sp) blt 5f2: tstb (r0)+ bne 1b5: tst (r5)+1:4: tst (sp)+3: tst (r5)+ rts r5get: movb ch,r0 beq 1f clrb ch rts pc1: jsr pc,get1 cmp r0,$'\n bne 2f jsr pc,get1 cmp r0,$'& beq 1b movb r0,ch1 mov $'\n,r02: tst holquo bne 1f cmp $' ,r0 beq 1b cmp $'\t,r0 beq 1b1: cmp r0,$4 / test EOT bne 1f mov $1,r0 sys write; mes; emes-mes mov $1,r0 / syntax errors detected sys exit1: rts pcget1: movb ch1,r0 beq 1f clrb ch1 br 2f1: jsr r5,getc; ibuf bcs 1f bic $!177,r0 beq 1b cmp r0,$'\n bne 2f inc lino2: tst nlflg beq 2f clr nlflg cmp r0,$'c bne 2f3: jsr pc,get1 cmp r0,$'\n beq 1b cmp r0,$4 bne 3b2: cmp r0,$'\n bne 2f inc nlflg2: rts pc1: mov $4,r0 rts pc.datanlflg: 1.textmes: <EOF on input\n\0>emes:.bsslino: .=.+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -