home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / fort / f4 / f46.s < prev    next >
Encoding:
Text File  |  1975-07-17  |  1.6 KB  |  167 lines

  1. /
  2. /
  3.  
  4. / f46 -- constant evaluation
  5.  
  6. .globl    getcon
  7. .globl    dope
  8.  
  9. .globl    code
  10.  
  11. getcon:
  12.     mov    r0,-(sp)
  13.     mov    r2,-(sp)
  14.     clr    r2            / dec . counter
  15.     clrf    fr0
  16.     movif    $10.,fr1
  17.     clr    -(sp)            / - flag
  18.     cmpb    (r1)+,$'+
  19.     beq    1f
  20.     cmpb    -(r1),$'-
  21.     bne    1f
  22.     inc    r1
  23.     inc    (sp)
  24. 1:
  25.     movb    (r1)+,r0
  26.     sub    $'0,r0
  27.     cmp    r0,$9
  28.     blos    2f
  29.     cmp    r0,$'.-'0
  30.     bne    1f
  31.     dec    r2
  32.     br    1b
  33. 2:
  34.     tst    r2
  35.     beq    2f
  36.     dec    r2
  37. 2:
  38.     mulf    fr1,fr0
  39.     movif    r0,fr2
  40.     addf    fr2,fr0
  41.     br    1b
  42. 1:
  43.     tst    r2
  44.     bne    1f
  45.     dec    r2
  46. 1:
  47.     cmp    r0,$'e-'0
  48.     beq    2f
  49.     cmp    r0,$'d-'0
  50.     bne    1f
  51. 2:
  52.     mov    r3,-(sp)
  53.     clr    r3
  54.     clr    -(sp)
  55.     cmpb    (r1),$'-
  56.     bne    3f
  57.     inc    r1
  58.     inc    (sp)
  59.     br    2f
  60. 3:
  61.     cmpb    (r1),$'+
  62.     bne    2f
  63.     inc    r1
  64. 2:
  65.     movb    (r1)+,r0
  66.     sub    $'0,r0
  67.     cmp    r0,$9
  68.     bhi    2f
  69.     mpy    $10.,r3
  70.     add    r0,r3
  71.     br    2b
  72. 2:
  73.     tst    (sp)+
  74.     beq    2f
  75.     neg    r3
  76. 2:
  77.     add    r3,r2
  78.     mov    (sp)+,r3
  79. 1:
  80.     movf    fr1,fr2
  81.     add    $1,r2
  82.     beq    1f
  83.     blt    2f
  84.     clr    -(sp)
  85.     br    3f
  86. 2:
  87.     mov    pc,-(sp)
  88.     neg    r2
  89. 3:
  90.     sub    $1,r2
  91.     ble    2f
  92.     mulf    fr1,fr2
  93.     br    3b
  94. 2:
  95.     tst    (sp)+
  96.     bne    2f
  97.     mulf    fr2,fr0
  98.     br    1f
  99. 2:
  100.     divf    fr2,fr0
  101. 1:
  102.     tst    (sp)+
  103.     beq    1f
  104.     negf    fr0
  105. 1:
  106.     cmpb    -(r1),$',
  107.     bne    1f
  108.     movf    fr0,-(sp)
  109.     inc    r1
  110.     jsr    r5,getcon
  111.     movf    (sp)+,fr1        / a,b -> r1,r0
  112. 1:
  113.     mov    (sp)+,r2
  114.     mov    (sp)+,r0
  115.     rts    r5
  116.  
  117. dope:
  118.     cmp    progt,$6        / test "block data"
  119.     bne    1f
  120.     rts    r5
  121. 1:
  122.     clr    r3
  123. 1:
  124.     cmp    r3,symtp
  125.     bhis    1f
  126.     mov    symtab(r3),r0
  127.     bic    $!70,r0
  128.     cmp    r0,$20
  129.     bne    2f
  130.     mov    symtab+2(r3),r0
  131.     beq    2f
  132.     mov    (r0)+,r1
  133.     mov    r1,r2
  134.     asl    r2
  135.     add    r0,r2
  136.     mov    (r2),r0
  137.     jsr    r5,code
  138.         <d%d:    %d.\n    \0>; .even
  139.         r0
  140.         r1
  141. 3:
  142.     dec    r1
  143.     blt    3f
  144.     mov    -(r2),r0
  145.     bge    4f
  146.     jsr    r5,code
  147.         <..; \0>; .even
  148.     br    3b
  149. 4:
  150.     jsr    r5,code
  151.         <%d.; \0>; .even
  152.         r0
  153.     br    3b
  154. 3:
  155.     mov    symtab(r3),r2
  156.     clrb    r2
  157.     swab    r2
  158.     jsr    r5,code
  159.         <%d.\n\0>; .even
  160.         r2
  161. 2:
  162.     add    $8,r3
  163.     br    1b
  164. 1:
  165.     rts    r5
  166.  
  167.