/* @(#)fltpr.s 2.1 SCCS id keyword */ / C library-- floating output .globl pfloat .globl pscien .globl pgen .globl fltused .globl _ecvt .globl _fcvt .globl _gcvt fltused: / force loading pgen: mov r3,-(sp) mov r0,-(sp) tst r2 bne 1f mov $6,(sp) 1: movf (r4)+,fr0 movf fr0,-(sp) jsr pc,_gcvt add $8+2+2,sp 1: tstb (r3)+ bne 1b dec r3 rts pc pfloat: mov $sign,-(sp) mov $decpt,-(sp) tst r2 bne 1f mov $6,r0 1: mov r0,-(sp) mov r0,ndigit movf (r4)+,fr0 movf fr0,-(sp) jsr pc,_fcvt add $8+2+2+2,sp tst sign beq 1f movb $'-,(r3)+ 1: mov decpt,r2 bgt 1f movb $'0,(r3)+ 1: mov r2,r1 ble 1f 2: movb (r0)+,(r3)+ sob r1,2b 1: mov ndigit,r1 beq 1f movb $'.,(r3)+ 1: neg r2 ble 1f 2: dec r1 blt 1f movb $'0,(r3)+ sob r2,2b 1: tst r1 ble 2f 1: movb (r0)+,(r3)+ sob r1,1b 2: rts pc pscien: mov $sign,-(sp) mov $decpt,-(sp) mov r0,-(sp) mov r0,ndigit tst r2 bne 1f mov $6,(sp) 1: movf (r4)+,fr0 movf fr0,-(sp) jsr pc,_ecvt add $8+2+2+2,sp tst sign beq 1f movb $'-,(r3)+ 1: cmpb (r0),$'0 bne 1f inc decpt 1: movb (r0)+,(r3)+ movb $'.,(r3)+ mov ndigit,r1 dec r1 ble 1f 2: movb (r0)+,(r3)+ sob r1,2b 1: movb $'e,(r3)+ mov decpt,r2 dec r2 mov r2,r1 bge 1f movb $'-,(r3)+ neg r1 br 2f 1: movb $'+,(r3)+ 2: clr r0 div $10.,r0 add $'0,r0 movb r0,(r3)+ add $'0,r1 movb r1,(r3)+ rts pc .data sign: .=.+2 ndigit: .=.+2 decpt: .=.+2