home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / as / as24.s < prev    next >
Encoding:
Text File  |  1979-01-10  |  1.5 KB  |  126 lines

  1. /
  2. /
  3.  
  4. / a4 -- pdp-11 assembler pass 2
  5.  
  6. oset:
  7.     mov    r2,-(sp)
  8.     mov    r3,-(sp)
  9.     mov    (r5)+,r3
  10.     mov    r1,r2
  11.     bic    $!777,r1
  12.     add    r3,r1
  13.     add    $8,r1
  14.     mov    r1,(r3)+    / next slot
  15.     mov    r3,r1
  16.     add    $1006,r1
  17.     mov    r1,(r3)+    / buf max
  18.     mov    r0,(r3)+
  19.     mov    r2,(r3)+    / seek addr
  20.     mov    (sp)+,r3
  21.     mov    (sp)+,r2
  22.     rts    r5
  23.  
  24. putw:
  25.     mov    r1,-(sp)
  26.     mov    r2,-(sp)
  27.     mov    (r5)+,r2
  28.     mov    (r2)+,r1    / slot
  29.     cmp    r1,(r2)        / buf max
  30.     bhis    1f
  31.     mov    r0,(r1)+
  32.     mov    r1,-(r2)
  33.     br    2f
  34. 1:
  35.     tst    (r2)+
  36.     mov    r0,-(sp)
  37.     jsr    r5,flush1
  38.     mov    (sp)+,r0
  39.     mov    r0,*(r2)+
  40.     add    $2,-(r2)
  41. 2:
  42.     mov    (sp)+,r2
  43.     mov    (sp)+,r1
  44.     rts    r5
  45.  
  46. flush:
  47.     mov    (r5)+,r2
  48.     cmp    (r2)+,(r2)+
  49. flush1:
  50.     mov    (r2)+,0f
  51.     mov    (r2)+,r1
  52.     mov    r1,0f+2        / seek address
  53.     mov    fout,r0
  54.     sys    indir; 9f
  55.     .data
  56. 9:    sys    lseek; 0:..; ..; 0
  57.     .text
  58.     bic    $!777,r1
  59.     add    r2,r1        / write address
  60.     mov    r1,0f
  61.     mov    r2,r0
  62.     bis    $777,-(r2)
  63.     add    $1,(r2)        / new seek addr
  64.     adc    -(r2)
  65.     cmp    -(r2),-(r2)
  66.     sub    (r2),r1
  67.     neg    r1
  68.     mov    r1,0f+2        / count
  69.     mov    r0,(r2)        / new next slot
  70.     mov    fout,r0
  71.     sys    indir; 9f
  72.     jes    wrterr
  73.     .data
  74. 9:    sys    write; 0:..; ..
  75.     .text
  76.     rts    r5
  77.  
  78. wrterr:
  79.     mov    $1,r0
  80.     sys    write; 9f; 8f-9f
  81.     jmp    saexit
  82. 9:    <as: write error on output\n>; 8:
  83.  
  84. readop:
  85.     mov    savop,r4
  86.     beq    1f
  87.     clr    savop
  88.     rts    pc
  89. 1:
  90.     jsr    pc,getw1
  91.     cmp    r4,$200
  92.     blo    1f
  93.     cmp    r4,$4000
  94.     blo    2f
  95.     add    $usymtab-4000,r4
  96.     rts    pc
  97. 2:
  98.     add    $symtab-1000,r4
  99. 1:
  100.     rts    pc
  101.  
  102. getw:
  103.     mov    savop,r4
  104.     beq    getw1
  105.     clr    savop
  106.     rts    pc
  107. getw1:
  108.     dec    ibufc
  109.     bgt    1f
  110.     movb    fin,r0
  111.     sys    read; inbuf; 512.
  112.     bes    3f
  113.     asr    r0
  114.     mov    r0,ibufc
  115.     bne    2f
  116. 3:
  117.     mov    $4,r4
  118.     sev
  119.     rts    pc
  120. 2:
  121.     mov    $inbuf,ibufp
  122. 1:
  123.     mov    *ibufp,r4
  124.     add    $2,ibufp
  125.     rts    pc
  126.