1: / tap2 -- dec-tape lod/dmp
   2: 
   3: pstr:
   4:         movb    (r1)+,r0
   5:         beq     1f
   6:         jsr     pc,putc
   7:         br      pstr
   8: 1:
   9:         rts     pc
  10: 
  11: mesg:
  12:         movb    (r5)+,r0
  13:         beq     1f
  14:         jsr     pc,putc
  15:         br      mesg
  16: 1:
  17:         inc     r5
  18:         bic     $1,r5
  19:         rts     r5
  20: 
  21: putc:
  22:         movb    r0,ch
  23:         mov     $1,r0
  24:         sys     write; ch; 1
  25:         rts     pc
  26: 
  27: getc:
  28:         clr     r0
  29:         sys     read; ch; 1
  30:         movb    ch,r0
  31:         rts     pc
  32: 
  33: clrdir:
  34:         mov     $dir,r1
  35:         mov     ndirent,r2
  36: 1:
  37:         jsr     pc,clrent
  38:         sob     r2,1b
  39:         rts     pc
  40: 
  41: clrent:
  42:         mov     r1,-(sp)
  43:         add     $dirsiz,(sp)
  44: 1:
  45:         clr     (r1)+
  46:         cmp     r1,(sp)
  47:         blo     1b
  48:         tst     (sp)+
  49:         rts     pc
  50: 
  51: rddir:
  52:         clr     sum
  53:         jsr     pc,clrdir
  54:         clr     r0
  55:         jsr     pc,rseek
  56:         jsr     pc,tread
  57:         mov     tapeb+510.,r0
  58:         beq     1f
  59:         tstb    flm
  60:         beq     1f
  61:         mov     r0,ndirent
  62: 1:
  63:         mov     $dir,r1
  64:         mov     ndirent,r2
  65: 1:
  66:         bit     $7,r2
  67:         bne     2f
  68:         jsr     pc,tread
  69:         mov     $tapeb,r3
  70: 2:
  71:         mov     r1,-(sp)
  72:         mov     r3,-(sp)
  73:         mov     $32.,r0
  74:         clr     -(sp)
  75: 2:
  76:         add     (r3)+,(sp)
  77:         sob     r0,2b
  78:         bis     (sp),sum
  79:         tst     (sp)+
  80:         bne     2f
  81:         mov     (sp),r3
  82:         tst     (r3)
  83:         beq     2f
  84:         mov     r3,0f
  85:         jsr     pc,9f
  86: .data
  87: 9:
  88:         jsr     r5,encode; 0:..
  89:         rts     pc
  90: .text
  91:         add     $32.,r3
  92:         mov     r1,-(sp)
  93:         add     $dirsiz,(sp)
  94:         tst     (r1)+           / namep
  95: 9:
  96:         mov     (r3)+,(r1)+
  97:         cmp     r1,(sp)
  98:         blo     9b
  99:         tst     (sp)+
 100: 2:
 101:         mov     (sp)+,r3
 102:         add     $64.,r3
 103:         mov     (sp)+,r1
 104:         bic     $100000,mode(r1)
 105:         add     $dirsiz,r1
 106:         sob     r2,1b
 107:         tst     sum
 108:         beq     1f
 109:         jsr     r5,mesg
 110:                 <Directory checksum\n\0>; .even
 111:         tstb    fli
 112:         bne     1f
 113:         jmp     done
 114: 1:
 115:         jsr     pc,bitmap
 116:         rts     pc
 117: 
 118: wrdir:
 119:         clr     r0
 120:         jsr     pc,wseek
 121:         tstb    flm
 122:         bne     1f
 123:         sys     open; tboot; 0
 124:         bes     3f
 125:         br      2f
 126: 1:
 127:         sys     open; mboot; 0
 128:         bes     3f
 129: 2:
 130:         mov     r0,r1
 131:         sys     read; tapeb; 512.
 132:         mov     r1,r0
 133:         sys     close
 134:         mov     ndirent,tapeb+510.
 135: 3:
 136:         jsr     pc,twrite
 137:         mov     $dir,r1
 138:         mov     ndirent,r2
 139: 1:
 140:         bit     $7,r2
 141:         bne     2f
 142:         mov     $256.,r0
 143:         mov     $tapeb,r3
 144: 3:
 145:         clr     (r3)+
 146:         sob     r0,3b
 147:         mov     $tapeb,r3
 148: 2:
 149:         mov     r3,-(sp)
 150:         tst     (r1)
 151:         beq     2f
 152:         mov     r3,0f
 153:         jsr     pc,9f
 154: .data
 155: 9:
 156:         jsr     r5,decode; 0:..
 157:         rts     pc
 158: .text
 159: 2:
 160:         add     $32.,r3
 161:         mov     r1,-(sp)
 162:         add     $dirsiz,(sp)
 163:         tst     (r1)+
 164: 9:
 165:         mov     (r1)+,(r3)+
 166:         cmp     r1,(sp)
 167:         blo     9b
 168:         tst     (sp)+
 169:         mov     (sp)+,r3
 170:         clr     -(sp)
 171:         mov     $31.,r0
 172: 2:
 173:         sub     (r3)+,(sp)
 174:         sob     r0,2b
 175:         mov     (sp)+,(r3)+
 176:         dec     r2
 177:         bit     $7,r2
 178:         bne     1b
 179:         jsr     pc,twrite
 180:         tst     r2
 181:         bne     1b
 182:         rts     pc
 183: 
 184: tread:
 185:         mov     fio,r0
 186:         sys     read; tapeb; 512.
 187:         bes     trderr
 188:         cmp     r0,$512.
 189:         bne     trderr
 190: 1:
 191:         inc     rseeka
 192:         rts     pc
 193: 
 194: trderr:
 195:         jsr     r5,mesg
 196:                 <Tape read error\n\0>; .even
 197:         tstb    fli
 198:         beq     1f
 199:         mov     $tapeb,r0
 200: 2:
 201:         clr     (r0)+
 202:         cmp     r0,$tapeb+512.
 203:         blo     2b
 204:         br      1b
 205: 1:
 206:         jmp     done
 207: 
 208: twrite:
 209:         mov     fio,r0
 210:         sys     write; tapeb; 512.
 211:         bes     twrerr
 212:         cmp     r0,$512.
 213:         bne     twrerr
 214:         inc     wseeka
 215:         rts     pc
 216: 
 217: twrerr:
 218:         jsr     r5,mesg
 219:                 <Tape write error\n\0>; .even
 220:         jmp     done
 221: 
 222: rseek:
 223:         mov     r0,rseeka
 224:         mov     r0,0f
 225:         mov     fio,r0
 226:         sys     0; 9f
 227: .data
 228: 9:
 229:         sys     seek; 0:..; 3
 230: .text
 231:         bes     seekerr
 232:         rts     pc
 233: 
 234: wseek:
 235:         mov     r0,-(sp)
 236:         sub     wseeka,r0
 237:         bge     1f
 238:         neg     r0
 239: 1:
 240:         cmp     r0,$25.                 / longest write seek
 241:         ble     1f
 242:         mov     (sp),0f
 243:         beq     2f
 244:         dec     0f
 245: 2:
 246:         mov     fio,r0
 247:         sys     0; 9f
 248: .data
 249: 9:
 250:         sys     seek; 0:..; 3
 251: .text
 252:         mov     fio,r0
 253:         sys     read; wseeka; 1
 254: 1:
 255:         mov     (sp),wseeka
 256:         mov     (sp)+,0f
 257:         mov     fio,r0
 258:         sys     0; 9f
 259: .data
 260: 9:
 261:         sys     seek; 0:..; 3
 262: .text
 263:         bes     seekerr
 264:         rts     pc
 265: 
 266: seekerr:
 267:         jsr     r5,mesg
 268: <Tape seek error\n\0>; .even
 269:         jmp     done
 270: 
 271: verify:
 272:         movb    (r5)+,0f
 273:         inc     r5
 274:         tstb    flw
 275:         bne     1f
 276:         tstb    flv
 277:         beq     2f
 278: 1:
 279:         jsr     pc,9f
 280: .data
 281: 9:
 282:         jsr     r5,mesg
 283:                 0:<x \0>; .even
 284:         rts     pc
 285: .text
 286:         mov     r1,-(sp)
 287:         mov     $name,r1
 288:         jsr     pc,pstr
 289:         mov     (sp)+,r1
 290:         tstb    flw
 291:         beq     1f
 292:         jsr     r5,mesg
 293:                 < \0>
 294:         jsr     pc,getc
 295:         cmp     r0,$'x
 296:         bne     3f
 297:         jsr     pc,getc
 298:         jmp     done
 299: 3:
 300:         cmp     r0,$'\n
 301:         beq     3f
 302:         cmp     r0,$'y
 303:         bne     4f
 304:         jsr     pc,getc
 305:         cmp     r0,$'\n
 306:         beq     2f
 307: 4:
 308:         jsr     pc,getc
 309:         cmp     r0,$'\n
 310:         bne     4b
 311:         br      1b
 312: 1:
 313:         jsr     r5,mesg
 314:                 <\n\0>
 315: 2:
 316:         tst     (r5)+
 317: 3:
 318:         rts     r5
 319: 
 320: getfiles:
 321:         cmp     narg,$2
 322:         bne     1f
 323:         mov     $".\0,name
 324:         jsr     pc,callout
 325: 1:
 326:         cmp     narg,$2
 327:         ble     1f
 328:         dec     narg
 329:         mov     *parg,r1
 330:         add     $2,parg
 331:         mov     $name,r2
 332: 2:
 333:         movb    (r1)+,(r2)+
 334:         bne     2b
 335:         jsr     pc,callout
 336:         br      1b
 337: 1:
 338:         rts     pc
 339: 
 340: expand:
 341:         sys     open; name; 0
 342:         bes     fserr
 343:         mov     r0,-(sp)
 344: 1:
 345:         mov     (sp),r0
 346:         sys     read; catlb; 16.
 347:         bes     fserr
 348:         tst     r0
 349:         beq     1f
 350:         tst     catlb
 351:         beq     1b
 352:         mov     $name,r0
 353:         mov     $catlb+2,r1
 354:         cmpb    (r1),$'.
 355:         beq     1b
 356: 2:
 357:         tstb    (r0)+
 358:         bne     2b
 359:         dec     r0
 360:         mov     r0,-(sp)
 361:         cmpb    -1(r0),$'/
 362:         beq     2f
 363:         movb    $'/,(r0)+
 364: 2:
 365:         movb    (r1)+,(r0)+
 366:         bne     2b
 367:         jsr     pc,callout
 368:         clrb    *(sp)+
 369:         br      1b
 370: 1:
 371:         mov     (sp)+,r0
 372:         sys     close
 373:         rts     pc
 374: 
 375: fserr:
 376:         mov     $name,r1
 377:         jsr     pc,pstr
 378:         jsr     r5,mesg
 379:                 < -- Cannot open file\n\0>; .even
 380:         jmp     done
 381: 
 382: callout:
 383:         sys     stat; name; statb
 384:         bes     fserr
 385:         mov     statb+4,r0
 386:         bic     $!60000,r0
 387:         beq     1f
 388:         cmp     r0,$40000
 389:         beq     expand
 390:         rts     pc
 391: 1:
 392:         mov     $dir,r1
 393:         clr     -(sp)
 394: 1:
 395:         tst     (r1)
 396:         bne     3f
 397:         tst     (sp)
 398:         bne     2f
 399:         mov     r1,(sp)
 400: 2:
 401:         add     $dirsiz,r1
 402:         cmp     r1,edir
 403:         blo     1b
 404:         mov     (sp)+,r1
 405:         bne     4f
 406:         jsr     r5,mesg
 407:                 <Directory overflow\n\0>; .even
 408:         jmp     done
 409: 4:
 410:         jsr     r5,verify; 'a
 411:                 rts pc
 412:         jsr     r5,encode; name
 413:         br      2f
 414: 3:
 415:         jsr     r5,decode; name1
 416:         mov     $name,r2
 417:         mov     $name1,r3
 418: 3:
 419:         cmpb    (r2)+,(r3)
 420:         bne     2b
 421:         tstb    (r3)+
 422:         bne     3b
 423:         tst     (sp)+
 424:         tstb    flu
 425:         beq     3f
 426:         cmp     time0(r1),statb+32.
 427:         blo     3f
 428:         bhi     1f
 429:         cmp     time1(r1),statb+34.
 430:         bhis    1f
 431: 3:
 432:         jsr     r5,verify; 'r
 433:                 rts pc
 434: 2:
 435:         mov     statb+4,mode(r1)
 436:         bis     $100000,mode(r1)
 437:         movb    statb+7,uid(r1)
 438:         movb    statb+8,gid(r1)
 439:         tstb    flf
 440:         beq     2f
 441:         clrb    statb+9.
 442:         clr     statb+10.
 443: 2:
 444:         movb    statb+9.,size0(r1)
 445:         mov     statb+10.,size1(r1)
 446:         mov     statb+32.,time0(r1)
 447:         mov     statb+34.,time1(r1)
 448: 1:
 449:         rts     pc

Defined functions

callout defined in line 382; used 3 times
clrdir defined in line 33; used 1 times
  • in line 53
clrent defined in line 41; used 1 times
  • in line 37
expand defined in line 340; used 1 times
fserr defined in line 375; used 3 times
getc defined in line 27; used 4 times
getfiles defined in line 320; never used
mesg defined in line 11; used 10 times
pstr defined in line 3; used 3 times
putc defined in line 21; used 2 times
  • in line 6, 14
rddir defined in line 51; never used
rseek defined in line 222; used 1 times
  • in line 55
seekerr defined in line 266; used 2 times
trderr defined in line 194; used 2 times
tread defined in line 184; used 2 times
twrerr defined in line 217; used 2 times
twrite defined in line 208; used 2 times
verify defined in line 271; used 2 times
wrdir defined in line 118; never used
wseek defined in line 234; used 1 times
Last modified: 1975-05-14
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 316
Valid CSS Valid XHTML 1.0 Strict