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

  1. /
  2. /
  3.  
  4. / a2 -- pdp-11 assembler pass 2
  5.  
  6. outw:
  7.     cmp    dot-2,$4
  8.     beq    9f
  9.     bit    $1,dot
  10.     bne    1f
  11.     add    $2,dot
  12.     tstb    passno
  13.     beq    8f
  14.     clr    -(sp)
  15.     rol    r3
  16.     adc    (sp)
  17.     asr    r3        / get relative pc bit
  18.     cmp    r3,$40
  19.     bne    2f
  20. / external references
  21.     mov    $666,outmod        / make nonexecutable
  22.     mov    xsymbol,r3
  23.     sub    $usymtab,r3
  24.     asl    r3
  25.     bis    $4,r3        / external relocation
  26.     br    3f
  27. 2:
  28.     bic    $40,r3        / clear any ext bits
  29.     cmp    r3,$5
  30.     blo    4f
  31.     cmp    r3,$33        / est. text, data
  32.     beq    6f
  33.     cmp    r3,$34
  34.     bne    7f
  35. 6:
  36.     jsr    r5,error; 'r
  37. 7:
  38.     mov    $1,r3        / make absolute
  39. 4:
  40.     cmp    r3,$2
  41.     blo    5f
  42.     cmp    r3,$4
  43.     bhi    5f
  44.     tst    (sp)
  45.     bne    4f
  46.     add    dotdot,r2
  47.     br    4f
  48. 5:
  49.     tst    (sp)
  50.     beq    4f
  51.     sub    dotdot,r2
  52. 4:
  53.     dec    r3
  54.     bpl    3f
  55.     clr    r3
  56. 3:
  57.     asl    r3
  58.     bis    (sp)+,r3
  59.     mov    r2,r0
  60.     jsr    r5,putw; txtp
  61.     add    $2,*tseekp
  62.     mov    r3,r0
  63.     jsr    r5,putw; relp
  64.     add    $2,*rseekp
  65. 8:
  66.     rts    pc
  67. 1:
  68.     jsr    r5,error; 'o
  69.     clr    r3
  70.     jsr    pc,outb
  71.     rts    pc
  72.  
  73. 9:
  74.     jsr    r5,error; 'x
  75.     rts    pc
  76.  
  77. outb:
  78.     cmp    dot-2,$4        / test bss mode
  79.     beq    9b
  80.     cmp    r3,$1
  81.     blos    1f
  82.     jsr    r5,error; 'r
  83. 1:
  84.     tstb    passno
  85.     beq    2f
  86.     mov    r2,r0
  87.     bit    $1,dot
  88.     bne    1f
  89.     jsr    r5,putw; txtp
  90.     clr    r0
  91.     jsr    r5,putw; relp
  92.     add    $2,*rseekp
  93.     add    $2,*tseekp
  94.     br    2f
  95. 1:
  96.     mov    txtp,r0
  97.     movb    r2,-1(r0)
  98. 2:
  99.     inc    dot
  100.     rts    pc
  101.  
  102. error:
  103.     mov    $666,outmod        / make nonexecutable
  104.     mov    r3,-(sp)
  105.     mov    r2,-(sp)
  106.     mov    r1,-(sp)
  107.     mov    r0,-(sp)
  108.     mov    $argb,r1
  109. 1:
  110.     movb    (r1),ch
  111.     beq    1f
  112.     clrb    (r1)+
  113.     mov    $1,r0
  114.     sys    write; ch; 1
  115.     br    1b
  116. 1:
  117.     mov    (r5)+,r0
  118.     movb    r0,0f
  119.     mov    line,r3
  120.     mov    $0f+6,r0
  121.     mov    $4,r1
  122. 2:
  123.     clr    r2
  124.     dvd    $10.,r2
  125.     add    $'0,r3
  126.     movb    r3,-(r0)
  127.     mov    r2,r3
  128.     sob    r1,2b
  129.     mov    $1,r0
  130.     sys    write; 0f; 7
  131.     mov    (sp)+,r0
  132.     mov    (sp)+,r1
  133.     mov    (sp)+,r2
  134.     mov    (sp)+,r3
  135.     rts    r5
  136.  
  137.     .data
  138. 0:    <f xxxx\n>
  139.     .even
  140.     .text
  141.  
  142. betwen:
  143.     cmp    r0,(r5)+
  144.     blt    1f
  145.     cmp    (r5)+,r0
  146.     blt    2f
  147. 1:
  148.     tst    (r5)+
  149. 2:
  150.     rts    r5
  151.  
  152.