1: /
   2: /
   3: 
   4: / a21 -- pdp-11 assembler pass 2
   5: 
   6: main:
   7:         sys     signal; 2; 1
   8:         ror     r0
   9:         bcs     1f
  10:         sys     signal; 2; saexit
  11: 1:
  12:         jmp     start
  13: 
  14: / set up sizes and origins
  15: 
  16: go:
  17: 
  18: / read in symbol table
  19: 
  20:         mov     $usymtab,r1
  21: 1:
  22:         jsr     pc,getw
  23:         bvs     1f
  24:         add     $14,symsiz              / count symbols
  25:         jsr     pc,getw
  26:         jsr     pc,getw
  27:         jsr     pc,getw
  28:         jsr     pc,getw
  29:         mov     r4,r0
  30:         bic     $!37,r0
  31:         cmp     r0,$2                   /text
  32:         blo     2f
  33:         cmp     r0,$3                   /data
  34:         bhi     2f
  35:         add     $31,r4                  /mark "estimated"
  36:         mov     r4,(r1)+
  37:         jsr     pc,getw
  38:         mov     r4,(r1)+
  39:         br      3f
  40: 2:
  41:         clr     (r1)+
  42:         clr     (r1)+
  43:         jsr     pc,getw
  44: 3:
  45:         jsr     pc,setbrk
  46:         br      1b
  47: 1:
  48: 
  49: / read in f-b definitions
  50: 
  51:         mov     r1,fbbufp
  52:         movb    fbfil,fin
  53:         clr     ibufc
  54: 1:
  55:         jsr     pc,getw
  56:         bvs     1f
  57:         add     $31,r4                  / "estimated"
  58:         mov     r4,(r1)+
  59:         jsr     pc,getw
  60:         mov     r4,(r1)+
  61:         jsr     pc,setbrk
  62:         br      1b
  63: 1:
  64:         mov     r1,endtable
  65:         mov     $100000,(r1)+
  66: 
  67: / set up input text file; initialize f-b table
  68: 
  69:         jsr     pc,setup
  70: / do pass 1
  71: 
  72:         jsr     pc,assem
  73: 
  74: / prepare for pass 2
  75:         cmp     outmod,$777
  76:         beq     1f
  77:         jmp     aexit
  78: 1:
  79:         clr     dot
  80:         mov     $2,dotrel
  81:         mov     $..,dotdot
  82:         clr     brtabp
  83:         movb    fin,r0
  84:         sys     close
  85:         jsr     r5,ofile; a.tmp1
  86:         movb    r0,fin
  87:         clr     ibufc
  88:         jsr     pc,setup
  89:         inc     passno
  90:         inc     bsssiz
  91:         bic     $1,bsssiz
  92:         mov     txtsiz,r1
  93:         inc     r1
  94:         bic     $1,r1
  95:         mov     r1,txtsiz
  96:         mov     datsiz,r2
  97:         inc     r2
  98:         bic     $1,r2
  99:         mov     r2,datsiz
 100:         mov     r1,r3
 101:         mov     r3,datbase      / txtsiz
 102:         mov     r3,savdot+2
 103:         add     r2,r3
 104:         mov     r3,bssbase      / txtsiz+datsiz
 105:         mov     r3,savdot+4
 106:         clr     r0
 107:         asl     r3
 108:         adc     r0
 109:         add     $20,r3
 110:         adc     r0
 111:         mov     r3,symseek+2    / 2*txtsiz+2*datsiz+20
 112:         mov     r0,symseek
 113:         sub     r2,r3
 114:         sbc     r0
 115:         mov     r3,drelseek+2   / 2*txtsiz+datsiz
 116:         mov     r0,drelseek
 117:         sub     r1,r3
 118:         sbc     r0
 119:         mov     r3,trelseek+2   / txtsiz+datsiz+20
 120:         mov     r0,trelseek
 121:         sub     r2,r3
 122:         sbc     r0
 123:         mov     r0,datseek
 124:         mov     r3,datseek+2    / txtsiz+20
 125:         mov     $usymtab,r1
 126: 1:
 127:         jsr     pc,doreloc
 128:         add     $4,r1
 129:         cmp     r1,endtable
 130:         blo     1b
 131:         clr     r0
 132:         clr     r1
 133:         jsr     r5,oset; txtp
 134:         mov     trelseek,r0
 135:         mov     trelseek+2,r1
 136:         jsr     r5,oset; relp
 137:         mov     $8.,r2
 138:         mov     $txtmagic,r1
 139: 1:
 140:         mov     (r1)+,r0
 141:         jsr     r5,putw; txtp
 142:         dec     r2
 143:         bne     1b
 144:         jsr     pc,assem
 145: 
 146: /polish off text and relocation
 147: 
 148:         jsr     r5,flush; txtp
 149:         jsr     r5,flush; relp
 150: 
 151: / append full symbol table
 152: 
 153:         mov     symf,r0
 154:         mov     r0,fin
 155:         sys     lseek; 0; 0; 0
 156:         clr     ibufc
 157:         mov     symseek,r0
 158:         mov     symseek+2,r1
 159:         jsr     r5,oset; txtp
 160:         mov     $usymtab,r1
 161: 1:
 162:         jsr     pc,getw
 163:         bvs     1f
 164:         mov     r4,r0
 165:         jsr     r5,putw; txtp
 166:         jsr     pc,getw
 167:         mov     r4,r0
 168:         jsr     r5,putw; txtp
 169:         jsr     pc,getw
 170:         mov     r4,r0
 171:         jsr     r5,putw; txtp
 172:         jsr     pc,getw
 173:         mov     r4,r0
 174:         jsr     r5,putw; txtp
 175:         mov     (r1)+,r0
 176:         jsr     r5,putw; txtp
 177:         mov     (r1)+,r0
 178:         jsr     r5,putw; txtp
 179:         jsr     pc,getw
 180:         jsr     pc,getw
 181:         br      1b
 182: 1:
 183:         jsr     r5,flush; txtp
 184:         jmp     aexit
 185: 
 186:         .data
 187: saexit:
 188:         mov     pc,errflg
 189: 
 190: aexit:
 191:         mov     a.tmp1,0f
 192:         sys     unlink; 0:..
 193:         mov     a.tmp2,0f
 194:         sys     unlink; 0:..
 195:         mov     a.tmp3,0f
 196:         sys     unlink; 0:..
 197:         tst     errflg
 198:         bne     2f
 199:         sys     umask; 0
 200:         bic     r0,outmod
 201:         sys     chmod; a.outp2:a.out; outmod: 777
 202:         clr     r0
 203:         br      1f
 204: 2:
 205:         mov     $2,r0
 206: 1:
 207:         sys     exit
 208:         .text
 209: 
 210: filerr:
 211:         mov     *(r5),r5
 212: 1:
 213:         movb    (r5)+,ch
 214:         beq     1f
 215:         mov     $1,r0
 216:         sys     write; ch; 1
 217:         br      1b
 218: 1:
 219:         mov     $1,r0
 220:         sys     write; qnl; 2
 221:         jmp     saexit
 222: 
 223: doreloc:
 224:         movb    (r1),r0
 225:         bne     1f
 226:         bisb    defund,(r1)
 227: 1:
 228:         bic     $!37,r0
 229:         cmp     r0,$5
 230:         bhis    1f
 231:         cmp     r0,$3
 232:         blo     1f
 233:         beq     2f
 234:         add     bssbase,2(r1)
 235:         rts     pc
 236: 2:
 237:         add     datbase,2(r1)
 238: 1:
 239:         rts     pc
 240: 
 241: setbrk:
 242:         mov     r1,-(sp)
 243:         add     $20,r1
 244:         cmp     r1,0f
 245:         blo     1f
 246:         add     $512.,0f
 247:         sys     indir; 9f
 248:         .data
 249: 9:      sys     break; 0: end
 250:         .text
 251: 1:
 252:         mov     (sp)+,r1
 253:         rts     pc
 254: 
 255: setup:
 256:         mov     $curfb,r4
 257: 1:
 258:         clr     (r4)+
 259:         cmp     r4,$curfb+40.
 260:         blo     1b
 261:         mov     txtfil,fin
 262:         clr     ibufc
 263:         clr     r4
 264: 1:
 265:         jsr     pc,fbadv
 266:         tstb    (r4)+
 267:         cmp     r4,$10.
 268:         blt     1b
 269:         rts     pc
 270: 
 271: ofile:
 272:         mov     *(r5),0f
 273:         sys     indir; 9f
 274:         .data
 275: 9:      sys     open; 0:..; 0
 276:         .text
 277:         bes     1f
 278:         tst     (r5)+
 279:         rts     r5
 280: 1:
 281:         jmp     filerr

Defined functions

doreloc defined in line 223; used 1 times
filerr defined in line 210; used 1 times
go defined in line 16; never used
main defined in line 6; never used
ofile defined in line 271; used 1 times
  • in line 85
setbrk defined in line 241; used 2 times
setup defined in line 255; used 2 times

Defined variables

a.outp2 defined in line 201; never used
aexit defined in line 190; used 2 times
outmod defined in line 201; used 2 times
saexit defined in line 187; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 551
Valid CSS Valid XHTML 1.0 Strict