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

  1. /
  2. /
  3.  
  4. /  a7 -- pdp-11 assembler pass 1
  5.  
  6. expres:
  7.     mov    r5,-(sp)
  8.     mov    $'+,-(sp)
  9.     clr    opfound
  10.     clr    r2
  11.     mov    $1,r3
  12.     br    1f
  13. advanc:
  14.     jsr    pc,readop
  15. 1:
  16.     mov    r4,r0
  17.     jsr    r5,betwen; 0; 177
  18.         br .+4
  19.     br    7f
  20.     movb    (r4),r0
  21.     mov    2(r4),r1
  22.     br    oprand
  23. 7:
  24.     cmp    r4,$141
  25.     blo    1f
  26.     cmp    r4,$141+10.
  27.     bhis    2f
  28.     movb    curfbr-141(r4),r0
  29.     asl    r4
  30.     mov    curfb-[2*141](r4),r2
  31.     bpl    oprand
  32.     jsr    r5,error; 'f
  33.     br    oprand
  34. 2:
  35.     clr    r3
  36.     clr    r2
  37.     br    oprand
  38. 1:
  39.     mov    $esw1,r1
  40. 1:
  41.     cmp    (r1)+,r4
  42.     beq    1f
  43.     tst    (r1)+
  44.     bne    1b
  45.     tst    opfound
  46.     bne    2f
  47.     jsr    pc,errore
  48. 2:
  49.     tst    (sp)+
  50.     mov    (sp)+,r5
  51.     rts    pc
  52. 1:
  53.     jmp    *(r1)
  54.  
  55. esw1:
  56.     '+;    binop
  57.     '-;    binop
  58.     '*;    binop
  59.     '/;    binop
  60.     '&;    binop
  61.     037;    binop
  62.     035;    binop
  63.     036;    binop
  64.     '%;    binop
  65.     '[;    brack
  66.     '^;    binop
  67.     1;    exnum
  68.     '!;    binop
  69.     0;    0
  70.  
  71. binop:
  72.     cmpb    (sp),$'+
  73.     beq    1f
  74.     jsr    pc,errore
  75. 1:
  76.     movb    r4,(sp)
  77.     br    advanc
  78.  
  79. exnum:
  80.     mov    numval,r1
  81.     mov    $1,r0
  82.     br    oprand
  83.  
  84. brack:
  85.     mov    r2,-(sp)
  86.     mov    r3,-(sp)
  87.     jsr    pc,readop
  88.     jsr    pc,expres
  89.     cmp    r4,$']
  90.     beq    1f
  91.     jsr    r5,error; ']
  92. 1:
  93.     mov    r3,r0
  94.     mov    r2,r1
  95.     mov    (sp)+,r3
  96.     mov    (sp)+,r2
  97.  
  98. oprand:
  99.     inc    opfound
  100.     mov    $exsw2,r5
  101. 1:
  102.     cmp    (sp),(r5)+
  103.     beq    1f
  104.     tst    (r5)+
  105.     bne    1b
  106.     br    eoprnd
  107. 1:
  108.     jmp    *(r5)
  109.  
  110. exsw2:
  111.     '+; exadd
  112.     '-; exsub
  113.     '*; exmul
  114.     '/; exdiv
  115.     037; exor
  116.     '&; exand
  117.     035;exlsh
  118.     036;exrsh
  119.     '%; exmod
  120.     '!; exnot
  121.     '^; excmbin
  122.     0;  0
  123.  
  124. excmbin:
  125.     mov    r0,r3            / give left flag of right
  126.     br    eoprnd
  127.  
  128. exrsh:
  129.     neg    r1
  130.     beq    exlsh
  131.     inc    r1
  132.     clc
  133.     ror    r2
  134. exlsh:
  135.     jsr    r5,combin; 0
  136.     als    r1,r2
  137.     br    eoprnd
  138.  
  139. exmod:
  140.     jsr    r5,combin; 0
  141.     mov    r1,-(sp)
  142.     mov    r2,r1
  143.     clr    r0
  144.     dvd    (sp)+,r0
  145.     mov    r1,r2
  146.     br    eoprnd
  147.  
  148. exadd:
  149.     jsr    r5,combin; 0
  150.     add    r1,r2
  151.     br    eoprnd
  152.  
  153. exsub:
  154.     jsr    r5,combin; 1
  155.     sub    r1,r2
  156.     br    eoprnd
  157.  
  158. exand:
  159.     jsr    r5,combin; 0
  160.     com    r1
  161.     bic    r1,r2
  162.     br    eoprnd
  163.  
  164. exor:
  165.     jsr    r5,combin; 0
  166.     bis    r1,r2
  167.     br    eoprnd
  168.  
  169. exmul:
  170.     jsr    r5,combin; 0
  171.     mpy    r2,r1
  172.     mov    r1,r2
  173.     br    eoprnd
  174.  
  175. exdiv:
  176.     jsr    r5,combin; 0
  177.     mov    r1,-(sp)
  178.     mov    r2,r1
  179.     clr    r0
  180.     dvd    (sp)+,r0
  181.     mov    r0,r2
  182.     br    eoprnd
  183.  
  184. exnot:
  185.     jsr    r5,combin; 0
  186.     com    r1
  187.     add    r1,r2
  188.     br    eoprnd
  189.  
  190. eoprnd:
  191.     mov    $'+,(sp)
  192.     jmp    advanc
  193.  
  194. combin:
  195.     mov    r0,-(sp)
  196.     bis    r3,(sp)
  197.     bic    $!40,(sp)
  198.     bic    $!37,r0
  199.     bic    $!37,r3
  200.     cmp    r0,r3
  201.     ble    1f
  202.     mov    r0,-(sp)
  203.     mov    r3,r0
  204.     mov    (sp)+,r3
  205. 1:
  206.     tst    r0
  207.     beq    1f
  208.     tst    (r5)+
  209.     beq    2f
  210.     cmp    r0,r3
  211.     bne    2f
  212.     mov    $1,r3
  213.     br    2f
  214. 1:
  215.     tst    (r5)+
  216.     clr    r3
  217. 2:
  218.     bis    (sp)+,r3
  219.     rts    r5
  220.  
  221.