            DOSPLUS 3.4 Notes and Transfer Program

        by Roxton Baker, Box 8272, APO San Fran 96555


DOSPLUS 3.4 from Micro-Systems Software is a VERY fine DOS.  It is smooth,
powerful, easy to use and reliable, and I have few complaints about it.  It is
significant that the worst problems I have found are in fact so trivial:  a
non-standard entry into Basic and a non-standard DIR printout.  I doubt that
MSS has received anything but complaints about these two characteristics
(which prevent MANY standard utilities from running) - but they haven't
changed them since the first DOSPLUS.  I can only attribute this to a "Not
Invented Here" syndrome.

In any case, I was hampered for a long time by an inability to easily transfer
files between disks.  This was entirely due to the funny "DIR" command, and to
a lack of operator prompting in the TRANSFER utility supplied with DOSPLUS by
MSS.  They do not seem to realize that in making a change as big as going from
single density to double, a LOT of transfers will be needed.  I had many disks
to reformat and dozens of files to move.

MSS does supply a Basic directory read routine in their 3.4 manual, around
which you can build a file transfer utility.  That's essentially what I have
done; but a bad problem remains in that disks made by other DOSs (such as
Newdos 2.1) have a directory password or read-protection that prevents DOSPLUS
from opening the directory as a random file.  The solution to this and many
other frequent hassles is to disable the password checking in DOSPLUS -
bringing it back towards the ease of use of Newdos 2.1.  Of course DOSPLUS is
written for many different applications, some of which require passwords, so
it is understandable that MSS leaves them enabled.  I just don't need
passwords, and maybe you don't either.  To disable password checking, use
DISKDUMP to zap SYS2/SYS.H4, File Sector 1, at byte C8:

                From  E1 28 37
                  to  E1 18 37

This is just as it was done in Newdos 2.1.

One thing I do need is to have all data transfers verified.  I can't imagine
anyone NOT needing this.  But using AUTO to turn on Verify at every boot-up
not only slows the boot process, it also corrupts memory above 5200H.  This
gets you if you are trying to reenter the Electric Pencil, for example.  Or if
you are trying to DUMP code in that area.  So I wanted to force Verify to be
on all the time unless I turned it off.  This can be done by using DISKDUMP
again to zap SYS0/SYS.H4, File Relative Sector 1, at byte CF:

                From  C3 2A 48
                  to  C3 47 48


With these changes made, especially the password disable, I am much happier
using the DOS.  The transfer program listed will now read the directories on
almost all my old disks.  This program is only useable on a two-drive system,
and probably only really useful with three drives.

Program XFR34 operates as follows.  After scanning the source disk directory,
it presents each filespec and gives you the option of marking it to be copied,
or of saying that you want it and all the remaining files copied, or that you
want none of them, or that you would like to back up and change your decision
on a previous file.  When you are done, it transfers all the files.  Two
drives are required.  When you specify the Source drive, appending an 'S' to
it will cause all /SYS files to be presented as well.  For example, giving 1S
as the Source drive means that you want to be offered all user and SYStem
files on Drive 1 for copy.  Omit the 'S' and you will just get the (visible
and invisible) user files.  There are more notes in the program itself.


------------------------------------------------------------
10 ' Roxton Baker  6/2/82
20 ' Box 8272, APO San Fran  96555

30 ' XFR34  -  DOSPLUS 3.4 File Transfer Utility.
40 ' Based on MSS Directory Read routine provided in the
50 '  DOSPLUS 3.4 manual.

60 ' To use with disks created under other DOSs, disable
70 '  password checking when running this program.  To do
80 '  this in DOSPLUS 3.4, zap file SYS2/SYS.H4, file sector 1:
90 '      Change at byte C8:  E1 28 37  to  E1 18 37.
100 ' I recommend this as a permanent modification anyway,
110 '  unless you really need passwords.

120 ' It is also most convenient to enter Basic with at least
130 '  one file buffer available (for the use of this program).
140 '  A DOSPLUS errata notice gives the zap for this.  File
150 '  BASIC/CMD.XANTH, file sector 10 (dec.):
160 '      Change at byte 9E:  3E 00  to  3E XX
170 '  where XX is the number of files you want, in hex.

180 ' To copy /SYS files also, add an 'S' to the Source Drive
190 '  number e.g.:  2S.

200 ' When selecting files to copy, besides Y (the default)
210 '  and N (or right-arrow), you may back up one with B or
220 '  left-arrow, copy all remaining files with D, skip all
230 '  remaining files with S, or Quit.

240 ' You may hold down 'M' during copying to return
250 '  to the beginning of the selection process.

260 ' If you experience a disk error during copying, such as
270 '  a CRC error or Disk Full, you may continue or retry
280 '  by typing: GOTO 10.

290 IFRTTHENFI=Z-1:GOTO810ELSECLEAR10000
300 CLS:PRINT:PRINT"File Transfer Utility"
310 PRINT"   by Roxton Baker":PRINT:CMD"VERIFY":DEFINTA-Z
320 DIMI$,D$,A$,FE$,FS$,S,SI,TS,I,J,K,Z,SP
330 DIMLA$,RA$,CA$,RL,FI,CD$,DS$,DD$,VD,VS,SI$
340 KL$=CHR$(30):E$=CHR$(13)
350 AL$=CHR$(8):AR$=CHR$(9):B$=CHR$(138)+CHR$(133)
360 DIMA$(128),C(128)

370 ' Get drive #s
380 ONERRORGOTO390
390 SI=0:PRINT:LINEINPUT"Source Drive: ";DS$
400 IFLEN(DS$)>2THEN390
410 VS=INSTR("0123",LEFT$(DS$,1))-1:IF(VS>3)OR(VS<0)THEN390
420 IFLEN(DS$)=1THEN440ELSESI$=RIGHT$(DS$,1)
430 SI=(SI$="S")OR(SI$="s"):IFNOT(SI)THEN390
440 DS$=":"+DS$:ONERRORGOTO450
450 LINEINPUT"Dest Drive:   ";DD$:IFLEN(DD$)<>1THEN450
460 VD=INSTR("0123",DD$)-1:IF(VD>3)OR(VD<0)THEN450
470 IFVS<>VDTHEN490ELSEPRINT:PRINT"Source = Dest!":GOTO390

480 ' Filespecs into A$( )
490 DD$=":"+DD$:ONERRORGOTO0:PRINT
500 PRINT"Reading source directory...":OPEN"R",1,"DIR/SYS"+DS$
510 J=1:FORI=3TOLOF(1):GET1,I:FORK=0TO7
520 FIELD1,(K*32)ASD$,1ASA$,4ASD$,8ASFS$,3ASFE$

530 ' Set Bit 6 in mask to reject /SYS files:
540 IFSITHENTS=144ELSETS=208
550 IFNOT(CVI(A$+CHR$(0))ANDTS)=16THEN570

560 A$(J)=FS$+" "+FE$:J=J+1
570 NEXTK,I:J=J-1:CLOSE:IFJ<>0THEN600ELSEPRINT:PRINT"No files!"
580 GOTO390

590 ' Display directory
600 CLS:PRINT"Directory of Source Drive =";VS:PRINT:K=0
610 FORI=1TOJ:K=K+1:PRINTCHR$(149)+A$(I),
620 IF((K<>48)OR(J=48))THENNEXT:GOTO660
630 PRINT@960,"<Enter> for more...";
640 I$=INKEY$:IFI$=""THEN640ELSEK=0:PRINT@128,CHR$(31);:NEXT

650 ' Offer filespecs for Copy
660 FORZ=1TOJ
670 IFZ<1THENZ=1
680 C(Z)=0
690 PRINT@960,KL$;"Copy: ";A$(Z);"   (*Yes";B$;"No";B$;"Back";B$;"Do rest";B$;"Skip rest";B$;"Quit)";
700 I$=INKEY$:IFI$=""THEN700
710 IF(I$="Q")OR(I$="q")THENZ=J:GOTO780
720 IF(I$="B")OR(I$="b")OR(I$=AL$)THENZ=Z-1:GOTO670
730 IF(I$="D")OR(I$="d")THENFORZ=ZTOJ:C(Z)=-1:GOTO780
740 IF(I$="S")OR(I$="s")THENFORZ=ZTOJ:C(Z)=0:GOTO780
750 IF(I$="Y")OR(I$="y")OR(I$=E$)THENC(Z)=-1:GOTO780
760 IF(I$="N")OR(I$="n")OR(I$=AR$)THENC(Z)=0:GOTO780
770 GOTO700
780 NEXTZ

790 ' Copy those requested
800 RT=-1:FI=0:FORZ=1TOJ
810 IFNOT(C(Z))THEN900ELSESP=INSTR(A$(Z)," ")
820 LA$=LEFT$(A$(Z),SP-1)
830 IFMID$(A$(Z),10,1)=" "THENCA$=LA$:GOTO870
840 RA$=RIGHT$(A$(Z),3):RL=INSTR(RA$," "):IFRL=0THEN860
850 RA$=LEFT$(RA$,RL-1)
860 CA$=LA$+"/"+RA$
870 PRINT@960,KL$;"Copying:   ";CA$+DS$+" "+DD$+"   ";
880 CD$="COPY "+CA$+DS$+" "+DD$:FI=FI+1:I$=INKEY$
890 IFI$="M"ORI$="m"THENZ=J:GOTO660ELSECMDCD$
900 NEXTZ:RT=0
910 PRINT@960,KL$;FI;"files copied.  <Enter> to run again...";
920 I$=INKEY$:IFI$<>E$THEN920ELSERUN

