home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / fort / f3 / f31.s next >
Encoding:
Text File  |  1975-07-17  |  1.9 KB  |  180 lines

  1. /
  2. /
  3.  
  4. / f31 - pass3 dispatcher
  5. /
  6. /    main scan loop for pass3
  7. /    picks up executable statements
  8. /
  9.  
  10. .globl    pass3
  11. .globl    ifstmt
  12.  
  13. .globl    isagn
  14. .globl    signon
  15. .globl    signoff
  16. .globl    getline
  17. .globl    lookup
  18. .globl    sasgn
  19. .globl    error
  20. .globl    perror
  21. .globl    doend
  22. .globl    sform
  23. .globl    sdata
  24. .globl    sdo
  25. .globl    sassi
  26. .globl    scall
  27. .globl    scont
  28. .globl    sretu
  29. .globl    sgoto
  30. .globl    sif
  31. .globl    spaus
  32. .globl    sstop
  33. .globl    sread
  34. .globl    sprin
  35. .globl    swrit
  36. .globl    srewi
  37. .globl    sback
  38. .globl    sendf
  39. .globl    blocks
  40. .globl    blockp
  41. .globl    code
  42. .globl    ptemp
  43. .globl    dotabp
  44.  
  45. pass3:
  46.     jsr    r5,signon; 3
  47.     br    2f
  48.  
  49. scan3:
  50.     jsr    r5,getline
  51. 2:
  52.     mov    $blocks,blockp
  53.     mov    $line,r1
  54.     mov    r1,r2
  55.     jsr    r5,lookup; fmttab
  56.         br 2f
  57.     mov    r0,-(sp)
  58.     jsr    r5,isagn
  59.         br 1f
  60.     mov    (sp)+,r0
  61.     jsr    r5,*fmtlst(r0)
  62.     br    scan3
  63. 1:
  64.     tst    (sp)+
  65. 2:
  66.     mov    efno,r0
  67.     beq    1f
  68.     jsr    r5,ptemp; 's; efno; line
  69.     jsr    r5,code
  70.         <.%d:\n\0>; .even
  71.         r0
  72. 1:
  73.     jsr    r5,isagn
  74.         br 1f
  75.     mov    r1,r2
  76.     jsr    r5,lookup; stmtab
  77.         br 2f
  78.     mov    r2,r1
  79.     jsr    r5,*sublst(r0)
  80.     br    3f
  81. 1:
  82.     jsr    r5,sasgn
  83.     br    3f
  84. 2:
  85.     jsr    r5,error; 101.
  86. 3:
  87.     cmp    progt,$6
  88.     bne    1f
  89.     jsr    r5,error; 50. / execut in block data
  90. 1:
  91.     jsr    r5,perror
  92.     mov    efno,r0
  93.     beq    scan3
  94.     jsr    r5,doend
  95.     br    scan3
  96.  
  97. ifstmt:
  98.     mov    $blocks,blockp
  99.     jsr    r5,isagn
  100.         br 1f
  101.     mov    r1,r2
  102.     jsr    r5,lookup; stmtab1
  103.         br 2f
  104.     mov    r2,r1
  105.     cmp    r0,$4        / don't allow end
  106.     beq    2f
  107.     jmp    *sublst1(r0)
  108. 1:
  109.     jmp    sasgn
  110. 2:
  111.     jsr    r5,error; 101.
  112.     rts    r5
  113.  
  114. send:
  115.     tst    dotabp
  116.     beq    1f
  117.     clr    r0
  118.     jsr    r5,doend
  119.     br    send
  120. 1:
  121.     tst    progt
  122.     bne    1f
  123.     jsr    r5,sstop
  124.     br    2f
  125. 1:
  126.     cmp    progt,$6        / block data
  127.     beq    2f
  128.     jsr    r5,sretu
  129. 2:
  130.     jsr    r5,perror
  131.     jsr    r5,signoff; 3
  132.  
  133. sublst:
  134.     sdo
  135. sublst1:
  136.     sif
  137.     sendf
  138.     send
  139.     sassi
  140.     scall
  141.     scont
  142.     sretu
  143.     sgoto
  144.     spaus
  145.     sstop
  146.     sread
  147.     sprin
  148.     swrit
  149.     srewi
  150.     sback
  151. fmtlst:
  152.     sform
  153.     sdata
  154. stmtab:
  155.     <do\0>
  156. stmtab1:
  157.     <if(\0>
  158.     <endfile\0>
  159.     <end\0>        / keep in this spot!!!
  160.     <assign\0>
  161.     <call\0>
  162.     <continue\0>
  163.     <return\0>
  164.     <goto\0>
  165.     <pause\0>
  166.     <stop\0>
  167.     <read\0>
  168.     <print\0>
  169.     <write\0>
  170.     <rewind\0>
  171.     <backspace\0>
  172.     <\0>
  173.  
  174. fmttab:
  175.     <format\0>
  176.     <data\0>
  177.     <\0>
  178.     .even
  179.  
  180.