📄 unprnt.s
字号:
/ C library -- unprintf.globl _unprintf.globl ndigix.globl pfloat.globl pscien.globl _IEH3revp.globl _IEH3bcko_unprintf: mov r5,-(sp) mov sp,r5 mov 4(r5),formp / format mov r5,r4 add $6,r4 / arglist sub $128.,sp / bufferloop: movb *formp,r0 beq 1f inc formp cmp r0,$'% beq 2f3: mov r4,-(sp) mov r0,-(sp) jsr pc,*$_IEH3revp tst (sp)+ mov (sp)+,r4 br loop1: add $128.,sp mov (sp)+,r5 jsr pc,_IEH3bcko rts pc2: clr rjust clr ndigix cmpb *formp,$'- bne 2f inc formp inc rjust2: jsr r3,gnum; width clr ndfnd cmp r0,$'. bne 1f jsr r3,gnum; ndigix1: mov sp,r3 mov $swtab,r11: mov (r1)+,r2 beq 3b cmp r0,(r1)+ bne 1b jmp (r2)swtab: decimal; 'd octal; 'o float; 'f scien; 'e charac; 'c string; 's logical; 'l 0; 0decimal: mov (r4)+,r1 bge 1f neg r1 movb $'-,(r3)+ br 1flogical: mov (r4)+,r11: jsr pc,1f br prbuf1: clr r0 div $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,1b1: mov (sp)+,r0 add $'0,r0 movb r0,(r3)+ rts pccharac: movb (r4)+,(r3)+ bne 1f dec r31: movb (r4)+,(r3)+ br prbufstring: mov ndigix,r11: mov (r4)+,r21: movb (r2)+,(r3)+ beq prbuf sob r1,1b br prbufoctal: mov (r4)+,r1 jsr pc,1f br prbuf1: mov r1,-(sp) beq 1f ash $-3,r1 bic $!17777,r1 jsr pc,1b1: mov (sp)+,r0 bic $!7,r0 add $'0,r0 movb r0,(r3)+ rts pcfloat: mov ndfnd,r2 jsr pc,pfloat br prbufscien: mov ndfnd,r2 jsr pc,pscien br prbufprbuf: cmp r3,sp blos 1f tstb -1(r3) bne 1f dec r3 br prbuf1: mov sp,r2 mov r4,-(sp) mov $' ,-(sp) mov width,r1 sub r3,r1 clrb (r3)+ add r2,r1 mov r1,spaces ble 1f tst rjust bne 1f2: jsr pc,*$_IEH3revp dec spaces bne 2b1: mov r2,bufp1: movb *bufp,(sp) beq 1f inc bufp jsr pc,*$_IEH3revp br 1b1: tst spaces ble 1f tst rjust beq 1f mov $' ,(sp)2: jsr pc,*$_IEH3revp dec spaces bne 2b1: tst (sp)+ mov (sp)+,r4 jmp loopgnum: clr ndfnd clr r11: movb *formp,r0 inc formp sub $'0,r0 cmp r0,$9. bhi 1f inc ndfnd mul $10.,r1 add r0,r1 br 1b1: add $'0,r0 mov r1,*(r3)+ rts r3 .bssndigix: .=.+2width: .=.+2formp: .=.+2rjust: .=.+2ndfnd: .=.+2bufp: .=.+2spaces: .=.+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -