diff --git a/README.md b/README.md index b0cad9aa..f6bd846f 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ A list of [known ITS machines](doc/machines.md). - DCROCK, digital watch. - DDTDOC, interactive DDT documentation. - DECUUO, TOPS-10 and WAITS emulator. + - DIRCPY, copy directory. - DIRDEV, list directories, sorted or subsetted. - DIRED, directory editor (independent from EMACS DIRED). - DMPCPY, crach dump copy dragon. diff --git a/build/build.tcl b/build/build.tcl index 4b8c553a..017f2668 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -1003,6 +1003,10 @@ expect ":KILL" respond "*" ":midas sys;ts dired_sysen2;dired\r" expect ":KILL" +# dircpy +respond "*" ":midas sys3;ts dircpy_sysen3;dircop\r" +expect ":KILL" + # hsname respond "*" ":midas sys2;ts hsname_sysen1;hsname\r" expect ":KILL" diff --git a/src/sysen3/dircop.1 b/src/sysen3/dircop.1 new file mode 100644 index 00000000..a5b85d69 --- /dev/null +++ b/src/sysen3/dircop.1 @@ -0,0 +1,82 @@ +title DIRCPY, copy a directory to another + +A=1 +B=2 +C=3 +D=4 +E=5 +T=6 +TT=7 +P=17 + +CHDIRI=10 +CHDSKI=11 +CHDSKO=12 + +.INSRT SYSENG;FSDEFS > + +PDL: -20,,. + BLOCK 20 + + +indir: sixbit /FOO/ +outdir: sixbit /BAR/ + +DIR: BLOCK 2000 +BUF: BLOCK 2000 + +GO: .CLOSE 1, ;RUNS AS DAEMON + MOVE P,PDL +CHKDIR: .CALL [ SETZ ? SIXBIT/OPEN/ + [.BII,,CHDIRI] + [SIXBIT/DSK/] + [SIXBIT/.FILE./] + [SIXBIT/(DIR)/] + SETZ INDIR] + .LOSE 1400 + MOVE TT,[-2000,,DIR] + .IOT CHDIRI,TT + .CLOSE CHDIRI, + MOVE D,UDNAMP+DIR +CHKFIL: CAIL D,2000 + .logout 1, + + tlne tt,unigfl ;ignored? + jrst nxtfil ; yes, skip it + + .CALL [ SETZ ? SIXBIT/OPEN/ + [.BII,,CHDSKI] + [SIXBIT/DSK/] + UNFN1+DIR(D) + UNFN2+DIR(D) + SETZ indir ] + .LOSE 1400 + .CALL [ SETZ ? SIXBIT/OPEN/ + [.BIO,,CHDSKO] + [SIXBIT/DSK/] + [SIXBIT/_DIRCP/] + [SIXBIT/OUTPUT/] + setz outdir ] + .LOSE 1400 +CPYFIL: MOVE TT,[-2000,,BUF] + .IOT CHDSKI,TT + MOVEI T,-BUF(TT) + JUMPE T,ENDFIL + MOVNS T + MOVSS T + HRRI T,BUF + .IOT CHDSKO,T + JRST CPYFIL + +ENDFIL: .CLOSE CHDSKI, + .CALL [ SETZ ? 'RENMWO + MOVEI CHDSKO + UNFN1+DIR(D) + SETZ UNFN2+DIR(D) ] + .LOSE 1000 + .CLOSE CHDSKO, +NXTFIL: ADDI D,LUNBLK + JRST CHKFIL + + +END GO