home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / s2 / tp1.s < prev    next >
Encoding:
Text File  |  1975-05-13  |  2.7 KB  |  268 lines

  1. / tap1 -- dec-disk lod/dmp
  2.  
  3. .globl    _localtime, _end
  4. namep = 0
  5. mode = 2
  6. uid = 4; gid = 5
  7. size0 = 7
  8. size1 = 8
  9. time0 = 10.
  10. time1 = 12.
  11. tapea = 14.
  12. dirsiz = 16.
  13. mdirent = 496.
  14.  
  15.     mov    (sp),rnarg
  16.     mov    (sp)+,narg
  17.     mov    $cmr,command
  18.     incb    flu
  19.     tst    (sp)+
  20.     cmp    narg,$2
  21.     bge    1f
  22.     mov    $2,narg
  23.     br    3f
  24. 1:
  25.     mov    (sp)+,r0
  26.     mov    sp,parg
  27. 1:
  28.     movb    (r0)+,r1
  29.     beq    3f
  30.     mov    $swtab,r2
  31. 2:
  32.     cmp    r1,(r2)+
  33.     beq    2f
  34.     tst    (r2)+
  35.     bne    2b
  36.     br    useerr
  37. 2:
  38.     jsr    pc,*(r2)+
  39.     br    1b
  40. 3:
  41.     jsr    pc,optap
  42.     mov    $_end,r4 / string pointer
  43.     jsr    pc,setb
  44.     jmp    *command
  45.  
  46. optap:
  47.     tstb    flm
  48.     bne    2f
  49.     mov    $578.,tapsiz
  50.     mov    $192.,ndirent
  51.     sys    open; tc; 2
  52.     br    3f
  53. 2:
  54.     mov    $-1,tapsiz
  55.     mov    $mdirent,ndirent
  56.     cmp    command,$cmr
  57.     beq    2f
  58.     sys    open; mt; 0
  59.     br    3f
  60. 2:
  61.     sys    open; mt; 1
  62. 3:
  63.     bes    1f
  64.     mov    r0,fio
  65.     mov    ndirent,r1
  66.     ash    $-3,r1
  67.     mov    r1,ndentd8
  68.     mov    ndirent,r1
  69.     mul    $dirsiz,r1
  70.     add    $dir,r1
  71.     mov    r1,edir
  72.     rts    pc
  73. 1:
  74.     jsr    r5,mesg
  75.         <Tape open error\n\0>; .even
  76.     jmp    done
  77.  
  78. setcom:
  79.     cmp    command,$cmr
  80.     bne    useerr
  81.     mov    (r5)+,command
  82.     rts    r5
  83.  
  84. noflag:
  85.     mov    (r5)+,r0
  86.     beq    1f
  87.     tstb    (r0)
  88.     beq    noflag
  89.     br    useerr
  90. 1:
  91.     rts    r5
  92.  
  93. useerr:
  94.     jsr    r5,mesg
  95.         <Bad usage\n\0>; .even
  96.     jmp    done
  97.  
  98. swtab:
  99.     '0; dcof
  100.     '1; dcof
  101.     '2; dcof
  102.     '3; dcof
  103.     '4; dcof
  104.     '5; dcof
  105.     '6; dcof
  106.     '7; dcof
  107.     'c; dcc
  108.     'd; dcd
  109.     'f; dcf
  110.     'i; dci
  111.     'm; dcm
  112.     'r; dcr
  113.     't; dct
  114.     'u; dcu
  115.     'v; dcv
  116.     'w; dcw
  117.     'x; dcx
  118.      0; 0
  119.  
  120. dcof:
  121.     movb    r1,tcx
  122.     movb    r1,mtx
  123.     rts    pc
  124.  
  125. dcc:
  126.     incb    flc
  127.     rts    pc
  128.  
  129. dcf:
  130.     incb    flf
  131.     rts    pc
  132.  
  133. dcd:
  134.     jsr    r5,setcom; cmd
  135.     rts    pc
  136.  
  137. dci:
  138.     incb    fli
  139.     rts    pc
  140.  
  141. dcm:
  142.     incb    flm
  143.     rts    pc
  144.  
  145. dcu:
  146.     incb    flu
  147.     jsr    r5,setcom; cmr
  148.     rts    pc
  149.  
  150. dcr:
  151.     clrb    flu
  152.     jsr    r5,setcom; cmr
  153.     rts    pc
  154.  
  155. dct:
  156.     jsr    r5,setcom; cmt
  157.     rts    pc
  158.  
  159. dcv:
  160.     incb    flv
  161.     rts    pc
  162.  
  163. dcw:
  164.     incb    flw
  165.     rts    pc
  166.  
  167. dcx:
  168.     jsr    r5,setcom; cmx
  169.     rts    pc
  170.  
  171. cmd:
  172.     jsr    r5,noflag; flm; flc; flf; 0
  173.     cmp    narg,$2
  174.     bgt    1f
  175.     jmp    useerr
  176. 1:
  177.     jsr    pc,rddir
  178.     jsr    r5,gettape; delete
  179.     jsr    pc,wrdir
  180.     br    check
  181.  
  182. cmr:
  183.     jsr    r5,noflag; 0
  184.     tstb    flc
  185.     bne    1f
  186.     tstb    flm
  187.     bne    1f
  188.     jsr    pc,rddir
  189.     br    2f
  190. 1:
  191.     jsr    pc,clrdir
  192. 2:
  193.     jsr    pc,getfiles
  194.     jsr    pc,update
  195.     br    check
  196.  
  197. cmt:
  198.     jsr    r5,noflag; flc; flf; flw; 0
  199.     jsr    pc,rddir
  200.     tstb    flv
  201.     beq    1f
  202.     jsr    r5,mesg
  203.     <   mode    uid gid tapa    size   date    time name\n\0>; .even
  204. 1:
  205.     jsr    r5,gettape; taboc
  206.     br    check1
  207.  
  208. cmx:
  209.     jsr    r5,noflag; flc; flf; 0
  210.     jsr    pc,rddir
  211.     jsr    r5,gettape; xtract
  212.     br    done
  213.  
  214. check:
  215.  
  216. check1:
  217.     jsr    pc,usage
  218.  
  219. done:
  220.     jsr    r5,mesg
  221.         <END\n\0>; .even
  222.     sys    exit
  223.  
  224. encode:
  225.     mov    r2,-(sp)
  226.     mov    r4,(r1)
  227.     mov    (r5)+,r2
  228. 1:
  229.     movb    (r2),(r4)+
  230.     jsr    pc,setb
  231.     tstb    (r2)+
  232.     bne    1b
  233.     mov    (sp)+,r2
  234.     rts    r5
  235.  
  236. decode:
  237.     mov    r2,-(sp)
  238.     mov    r1,-(sp)
  239.     mov    (r1),r1
  240.     mov    (r5)+,r2
  241. 1:
  242.     movb    (r1)+,(r2)+
  243.     bne    1b
  244.     mov    (sp)+,r1
  245.     mov    (sp)+,r2
  246.     rts    r5
  247.  
  248. setb:
  249.     mov    r0,-(sp)
  250.     mov    r4,r0
  251.     add    $513.,r0
  252.     cmp    r0,sp
  253.     bhis    2f
  254.     bic    $777,r0
  255.     cmp    r0,0f
  256.     beq    1f
  257.     mov    r0,0f
  258.     sys    break; 0:..
  259.     bes    2f
  260. 1:
  261.     mov    (sp)+,r0
  262.     rts    pc
  263.  
  264. 2:
  265.     jsr    r5,mesg
  266.         <Out of core\n\0>; .even
  267.     jmp    done
  268.