home *** CD-ROM | disk | FTP | other *** search
- / 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 / buffer
- loop:
- movb *formp,r0
- beq 1f
- inc formp
- cmp r0,$'%
- beq 2f
- 3:
- mov r4,-(sp)
- mov r0,-(sp)
- jsr pc,*$_IEH3revp
- tst (sp)+
- mov (sp)+,r4
- br loop
- 1:
- add $128.,sp
- mov (sp)+,r5
- jsr pc,_IEH3bcko
- rts pc
- 2:
- clr rjust
- clr ndigix
- cmpb *formp,$'-
- bne 2f
- inc formp
- inc rjust
- 2:
- jsr r3,gnum; width
- clr ndfnd
- cmp r0,$'.
- bne 1f
- jsr r3,gnum; ndigix
- 1:
- mov sp,r3
- mov $swtab,r1
- 1:
- 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; 0
-
- decimal:
- mov (r4)+,r1
- bge 1f
- neg r1
- movb $'-,(r3)+
- br 1f
-
- logical:
- mov (r4)+,r1
- 1:
- jsr pc,1f
- br prbuf
- 1:
- clr r0
- div $10.,r0
- mov r1,-(sp)
- mov r0,r1
- beq 1f
- jsr pc,1b
- 1:
- mov (sp)+,r0
- add $'0,r0
- movb r0,(r3)+
- rts pc
-
- charac:
- movb (r4)+,(r3)+
- bne 1f
- dec r3
- 1:
- movb (r4)+,(r3)+
- br prbuf
-
- string:
- mov ndigix,r1
- 1:
- mov (r4)+,r2
- 1:
- movb (r2)+,(r3)+
- beq prbuf
- sob r1,1b
- br prbuf
-
- octal:
- mov (r4)+,r1
- jsr pc,1f
- br prbuf
- 1:
- mov r1,-(sp)
- beq 1f
- ash $-3,r1
- bic $!17777,r1
- jsr pc,1b
- 1:
- mov (sp)+,r0
- bic $!7,r0
- add $'0,r0
- movb r0,(r3)+
- rts pc
-
- float:
- mov ndfnd,r2
- jsr pc,pfloat
- br prbuf
-
- scien:
- mov ndfnd,r2
- jsr pc,pscien
- br prbuf
-
- prbuf:
- cmp r3,sp
- blos 1f
- tstb -1(r3)
- bne 1f
- dec r3
- br prbuf
- 1:
- 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 1f
- 2:
- jsr pc,*$_IEH3revp
- dec spaces
- bne 2b
- 1:
- mov r2,bufp
- 1:
- movb *bufp,(sp)
- beq 1f
- inc bufp
- jsr pc,*$_IEH3revp
- br 1b
- 1:
- tst spaces
- ble 1f
- tst rjust
- beq 1f
- mov $' ,(sp)
- 2:
- jsr pc,*$_IEH3revp
- dec spaces
- bne 2b
- 1:
- tst (sp)+
- mov (sp)+,r4
- jmp loop
-
- gnum:
- clr ndfnd
- clr r1
- 1:
- movb *formp,r0
- inc formp
- sub $'0,r0
- cmp r0,$9.
- bhi 1f
- inc ndfnd
- mul $10.,r1
- add r0,r1
- br 1b
- 1:
- add $'0,r0
- mov r1,*(r3)+
- rts r3
-
- .bss
- ndigix: .=.+2
- width: .=.+2
- formp: .=.+2
- rjust: .=.+2
- ndfnd: .=.+2
- bufp: .=.+2
- spaces: .=.+2
-