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

  1. /
  2. /
  3.  
  4. / f14 -- common statement
  5. /
  6.  
  7. .globl    scomm
  8.  
  9. .globl    getsym
  10. .globl    sdime1
  11. .globl    error
  12. .globl    getid
  13. .globl    lookid
  14.  
  15. scomm:
  16.     mov    r5,-(sp)
  17.     jsr    r5,getsym
  18.     cmp    r0,$6        / / for named common
  19.     beq    ncom
  20. 3:
  21.     tst    r0
  22.     bne    9f
  23.     mov    r3,-(sp)
  24.     clr    r5
  25.     br    2f
  26.  
  27. ncom:
  28.     cmpb    (r1),$'/
  29.     bne    3f
  30.     inc    r1
  31.     jsr    r5,getsym
  32.     br    3b
  33. 3:
  34.     jsr    r5,getid
  35.         br 9f        / not identifier
  36.     jsr    r5,lookid; symbuf-1
  37.     bis    $40,symtab(r3)    / set named common
  38.     mov    r3,r5
  39.     jsr    r5,getsym
  40.     cmp    r0,$6        / /
  41.     bne    9f
  42. 1:
  43.     jsr    r5,getsym
  44.     tst    r0
  45.     bne    9f
  46.     mov    r3,-(sp)
  47. 2:
  48.     jsr    r5,getsym
  49.     cmp    r0,$32.        / (
  50.     bne    2f
  51.     mov    (sp),r3
  52.     jsr    r5,sdime1
  53.     jsr    r5,getsym
  54. 2:
  55.     mov    (sp)+,r3
  56.     bit    $300,symtab(r3)    / test param/common
  57.     beq    2f
  58.     jsr    r5,error; 9.    / not commonable or already commoned
  59.     br    3f
  60. 2:
  61.     mov    r0,-(sp)
  62.     mov    symtab+4(r5),r0
  63.     beq    2f
  64.     mov    r3,symtab+4(r0)    / next ptr of old last block
  65. 2:
  66.     mov    (sp)+,r0
  67.     mov    r3,symtab+4(r5)    / new last ptr of head block
  68.     tst    symtab+2(r5)
  69.     bne    3f
  70.     mov    r3,symtab+2(r5)    / first ptr if first block
  71. 3:
  72.     bis    $100,symtab(r3)
  73.     cmp    r0,$36.        / ,
  74.     beq    1b
  75.     cmp    r0,$6        / another /
  76.     beq    ncom
  77.     cmp    r0,$40.        / =|
  78.     beq    8f
  79. 9:
  80.     jsr    r5, error; 10.    / common syntax error
  81. 8:
  82.     mov    (sp)+,r5
  83.     rts    r5
  84.  
  85.  
  86.