📄 c0t.s
字号:
/ assure fake printf (no floating).globl fltused; fltused = 0/ convert stream to number; result is type./ value in cval or fcvalfpp = 1.globl _getnum.globl _peekc.globl _getchar.globl _cval.globl _fcval.globl _error_getnum: .if fpp movif $10.,fr3 clrf fr0 .endif clr nfract clr totdig clr decpt clr _cval mov 2(sp),base mov r2,-(sp)1: jsr r5,getdig br 2f .if fpp mulf fr3,fr0 movif r0,fr1 addf fr1,fr0 .endif inc nfract br 1b2: tst decpt bne 1f clr nfract cmp r0,$'. bne 1f mov pc,decpt br 1b1: tst totdig beq 1f cmp r0,$'e bne 1f clr -(sp) clr _cval mov pc,decpt clr _cval mov $10.,base jsr pc,_getchar cmp r0,$'+ beq 2f cmp r0,$'- bne 3f inc (sp) br 2f3: mov r0,_peekc2: jsr r5,getdig br 2f br 2b2: tst (sp)+ beq 2f neg _cval2: sub _cval,nfract1: mov r0,_peekc tst totdig bne 1f mov $39.,r0 / "." operator9: mov (sp)+,r2 rts pc1: tst decpt bne 1f mov $21.,r0 / fixed constant br 9b1: .if fpp movif $1,fr2 mov nfract,r2 mov r2,-(sp) beq 2f bgt 1f neg r21: mulf fr3,fr2 sob r2,1b2: tst (sp)+ ble 1f divf fr2,fr0 br 2f1: mulf fr2,fr02: mov $_fcval,r0 movf fr0,(r0) tst (r0)+ tst (r0)+ bne 1f tst (r0)+ bne 1f tst (r0)+ bne 1f mov $24.,r0 mov _fcval,_cval br 9b1: mov $23.,r0 br 9b .endif .if 1-fpp mov $fperr,-(sp) jsr pc,_error tst (sp)+ mov $21.,r0 br 9bfperr: <No floating point!\0>; .even .endifgetdig: mov _peekc,r0 beq 1f clr _peekc br 2f1: jsr pc,_getchar2: sub $'0,r0 cmp r0,$9. bhi 1f inc totdig mov _cval,r1 mul base,r1 add r0,r1 mov r1,_cval tst (r5)+ rts r51: add $'0,r0 rts r5.bssbase: .=.+2nfract: .=.+2decpt: .=.+2totdig: .=.+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -