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

  1. /
  2. /
  3.  
  4. / f22 -- allocate common
  5.  
  6. .globl    calloc
  7. .globl    entry
  8.  
  9. .globl    declimpl
  10. .globl    size
  11. .globl    getc
  12. .globl    getw
  13. .globl    xbuf
  14. .globl    code
  15. .globl    typ
  16.  
  17. calloc:
  18.     clr    r3
  19. 1:
  20.     cmp    r3,symtp
  21.     bhis    1f
  22.     mov    symtab(r3),r0
  23.     bic    $!70,r0        / class
  24.     cmp    r0,$40        / common block
  25.     bne    3f
  26.     mov    r3,-(sp)
  27.     mov    symtab+2(r3),r3
  28.     clr    r2        / byte offset
  29. 2:
  30.     tst    r3
  31.     beq    2f
  32.     jsr    r5,declimpl
  33.     mov    symtab+4(r3),-(sp)
  34.     mov    2(sp),symtab+4(r3)
  35.     mov    r2,symtab+6(r3)
  36.     jsr    r5,size
  37.     add    r0,r2
  38.     mov    (sp)+,r3
  39.     br    2b
  40. 2:
  41.     mov    (sp)+,r3
  42.     clr    symtab+2(r3)
  43.     mov    r2,symtab+6(r3)        / common block size
  44. 3:
  45.     add    $8,r3
  46.     br    1b
  47. 1:
  48.     rts    r5
  49.  
  50. entry:
  51.     mov    progt,r0
  52.     jmp    *1f(r0)
  53. 1:
  54.     main
  55.     subr
  56.     funct
  57.     blocd
  58.  
  59. main:
  60.     jsr    r5,code
  61.         <main:\n\0>; .even
  62.     rts    r5
  63.  
  64. subr:
  65. funct:
  66.     jsr    r5,code
  67.         <%n.:    %n_\n\0>; .even
  68.         8
  69.         8
  70.     clr    r3
  71. 1:
  72.     cmp    r3,symtp
  73.     bhis    1f
  74.     mov    symtab+2(r3),r0
  75.     beq    2f
  76.     mov    (r0)+,r1    / num dims
  77.     asl    r1
  78.     add    r0,r1        / ptr to last dim
  79.     mov    r3,-(sp)
  80.     mov    (r1),-(sp)    / dope id
  81.     clr    r2        / dope offset
  82. 3:
  83.     add    $2,r2
  84.     mov    -(r1),r3
  85.     cmp    r0,r1
  86.     bhi    3f
  87.     neg    r3        / adjustable dimension
  88.     ble    3b
  89.     mov    r0,-(sp)
  90.     jsr    r5,declimpl
  91.     mov    symtab(r3),r0
  92.     clrb    r0
  93.     swab    r0
  94.     jsr    r5,code
  95.         <    rval%dp; %n_\n\0>; .even
  96.         r0
  97.         r3
  98.     mov    symtab(r3),r3
  99.     bic    $![377\<8+7],r3
  100.     cmp    r3,$2\<8+1        / is it i*2
  101.     beq    4f
  102.     bic    $!7,r3
  103.     movb    typ(r3),r3
  104.     jsr    r5,code
  105.         <    %c%di2\n\0>; .even
  106.         r3
  107.         r0
  108. 4:
  109.     mov    2(sp),r0
  110.     jsr    r5,code
  111.         <    stst; d%d+%d.\n\0>; .even
  112.         r0
  113.         r2
  114.     mov    (sp)+,r0
  115.     br    3b
  116. 3:
  117.     tst    (sp)+
  118.     mov    (sp)+,r3
  119. 2:
  120.     add    $8,r3
  121.     br    1b
  122. 1:
  123. blocd:
  124.     rts    r5
  125.  
  126.