home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / libc / stdio / fltpr.s < prev    next >
Encoding:
Text File  |  1979-01-10  |  1.3 KB  |  130 lines

  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
  130.