1: / C library-- floating output 2: 3: .globl pfloat 4: .globl pscien 5: .globl pgen 6: .globl fltused 7: 8: .globl _ecvt 9: .globl _fcvt 10: .globl _gcvt 11: 12: fltused: / force loading 13: 14: pgen: 15: mov r3,-(sp) 16: mov r0,-(sp) 17: tst r2 18: bne 1f 19: mov $6,(sp) 20: 1: 21: movf (r4)+,fr0 22: movf fr0,-(sp) 23: jsr pc,_gcvt 24: add $8+2+2,sp 25: 1: 26: tstb (r3)+ 27: bne 1b 28: dec r3 29: rts pc 30: 31: pfloat: 32: mov $sign,-(sp) 33: mov $decpt,-(sp) 34: tst r2 35: bne 1f 36: mov $6,r0 37: 1: 38: mov r0,-(sp) 39: mov r0,ndigit 40: movf (r4)+,fr0 41: movf fr0,-(sp) 42: jsr pc,_fcvt 43: add $8+2+2+2,sp 44: tst sign 45: beq 1f 46: movb $'-,(r3)+ 47: 1: 48: mov decpt,r2 49: bgt 1f 50: movb $'0,(r3)+ 51: 1: 52: mov r2,r1 53: ble 1f 54: 2: 55: movb (r0)+,(r3)+ 56: sob r1,2b 57: 1: 58: mov ndigit,r1 59: beq 1f 60: movb $'.,(r3)+ 61: 1: 62: neg r2 63: ble 1f 64: 2: 65: dec r1 66: blt 1f 67: movb $'0,(r3)+ 68: sob r2,2b 69: 1: 70: tst r1 71: ble 2f 72: 1: 73: movb (r0)+,(r3)+ 74: sob r1,1b 75: 2: 76: rts pc 77: 78: pscien: 79: mov $sign,-(sp) 80: mov $decpt,-(sp) 81: mov r0,-(sp) 82: mov r0,ndigit 83: tst r2 84: bne 1f 85: mov $6,(sp) 86: 1: 87: movf (r4)+,fr0 88: movf fr0,-(sp) 89: jsr pc,_ecvt 90: add $8+2+2+2,sp 91: tst sign 92: beq 1f 93: movb $'-,(r3)+ 94: 1: 95: cmpb (r0),$'0 96: bne 1f 97: inc decpt 98: 1: 99: movb (r0)+,(r3)+ 100: movb $'.,(r3)+ 101: mov ndigit,r1 102: dec r1 103: ble 1f 104: 2: 105: movb (r0)+,(r3)+ 106: sob r1,2b 107: 1: 108: movb $'e,(r3)+ 109: mov decpt,r2 110: dec r2 111: mov r2,r1 112: bge 1f 113: movb $'-,(r3)+ 114: neg r1 115: br 2f 116: 1: 117: movb $'+,(r3)+ 118: 2: 119: clr r0 120: div $10.,r0 121: add $'0,r0 122: movb r0,(r3)+ 123: add $'0,r1 124: movb r1,(r3)+ 125: rts pc 126: .data 127: sign: .=.+2 128: ndigit: .=.+2 129: decpt: .=.+2