Improving a Sector_COPYing Program

The following program LISTing is an enhancement of the earlier SCOPY 1.6 (PLATYPUS) program derived from R. Dwight’s FASTDISK program kernel (QUANTA) and now handles HD (high density) disks. As written, the program does not compile in a functional way with TURBO, but may do so with the LIBERATOR. The program requires TK2_EXTensions. [NOTE: SCOPY_bas is included as a supplemental program with QLuMSi, QLAMBer and QLUSTer].

The code is not optimized for size or speed. This should allow those who are so inclined to more easily modify it. Error checking is minimal, with only the indication of the drive number being trapped to avoid duplication.

It takes a little over ten minutes to sector copy HD disks on a QXL. Your times with a (SUPER) GOLD CARDed QL and dual HD drives should be about 2/3rds that of the time required on a QXL based on DD sector copy times. The code for using Extra Density (ED) drives could not be tested since I don’t have ED drives and so ED support is not included; but, after analyzing the extra code for HD drives, you might be able to come up with suitable code amendment.

The advantage which SCOPY had over DISCED (CST) is that the latter only allowed for a dual drive system. SCOPY allows you any drive number option. Thus, if you had triple DD drives, but wanted to sector copy from flp3_ to flp1_, you could do this with SCOPY but not with DISCED.

The advantage over programs such as DISK MATE 4 (PM DATA) or FLOPPY DISK UTILITIES (ERGON) is that SCOPY is free — you simply have to key it in.

I have already found this to be useful for archiving data; and, if you have dual HD (and, ED?) drives I hope you also find it to be useful, too.

HAPPY TRAILS,
AND COMPUTING, TO YOU …

110 REMark ---------------------------
120 REMark | SCOPY 1.9b |
130 REMark | |
140 REMark | by Al Feng |
150 REMark | PLATYPUS Software |
160 REMark ---------------------------
180 :
200 WINDOW#0,440,32,50,224: WINDOW#1,
440,226,50,30: WINDOW#2,512,256,0,0
210 PAPER#2,0: INK#2,5: CLS#2: PAPER#1,0: MODE 0
220 Blank$=" ": REMark 25 spaces
230 Press$=" ... then PRESS <ENTER> "
240 MAIN
250 :
260 DEFine PROCedure MAIN
270 WINDOW#0,190,142,163,80: PAPER#0,0: INK#0,5
280 CSIZE#2,2,1: INK#2,5: PAPER#2,0: AT#2,1,15:
PRINT#2,"SCOPY Utility";: CSIZE#2,1,0
290 PRINT#2,\ TO 20, "S(ector)COPY(ing) Utility " ,,,
" Version 1.09b";: INK#2,7
300 BORDER#0,1,4,3: STRIP#0,7: INK#0,2
310 PRINT#0," -- USE EQUAL DENSITY DISKS -- "
320 PRINT#0," ------ IN BOTH DRIVES ------- "
330 STRIP#0,0: INK#0,5
340 PRINT#0,,
" 0 = QUIT"\,
" 1 = 720K",
" 2 = 1.44M" ,
" 3 = 3.2M"\,
" 4 = FORMAT"
350 BEEP 900,20: PAUSE 7: BEEP 400,30
360 STRIP#0,2: INK#0,7
370 PRINT#0," --- CONTINUE WITH CAUTION --- "
380 STRIP#0,0
390 anykey=INKEY$(-1)
400 SELect ON anykey
410 =1: LET Density=1: message$="DD/720K": SCOPY
420 =2: LET Density=2: message$="HD/1.44": SCOPY

[Lines 430 to 1080 were left out of this issue and printed as errata in Vol. 6 No. 2; they are inserted here from that errata.]

430 =3: LET Density=3: message$="ED/3.2M": AT#0,8,7:
PRINT#0, "not yet supported": PAUSE 60:
AT#0,8,10: PRINT#0,Blank$: MAIN
440 =0: GO TO 1240
450 =4: Fmat
460 END SELect
470 END DEFine MAIN
480 :
490 DEFine PROCedure DD
500 OPEN#3, 'flp'&Aa$&'_*d2d'
510 OPEN#4, 'flp'&Ab$&'_*d2d'
520 END DEFine DD
530 :
540 DEFine PROCedure HD
550 OPEN#3, 'flp'&Aa$&'_*d2h'
560 OPEN#4, 'flp'&Ab$&'_*d2h'
570 END DEFine HD
580 :
590 DEFine PROCedure ExD
600 OPEN#3, 'flp'&Aa$&'_*d4e'
610 OPEN#4, 'flp'&Ab$&'_*d4e'
620 END DEFine ExD
630 :
640 DEFine PROCedure SCOPY
650 CLS#2: PAPER 0: INK 7
660 AT 2,41: PRINT " _";: INK 5: PRINT Press$: INK 2
670 AT 2,19: PRINT "SCOPY ";: INK 5: PRINT "from ";:
INK 7: PRINT message$;: INPUT" flp";a
680 Aa$=a
690 AT 2,43: PRINT Blank$: INK 7
700 AT 4,41: PRINT " _";: INK 5: PRINT Press$: INK 5
710 AT 4,24: PRINT " to ";: INK 7: PRINT message$;:
INPUT" flp";b
720 IF b=a THEN BEEP 2000,20: GO TO 700
730 Ab$=b
740 AT 4,43: PRINT Blank$: INK 7
750 IF Density=1 THEN DD
760 IF Density=2 THEN HD
770 IF Density=3 THEN ExD
780 tracks = 80
790 sides = 2
800 FOR track = 0 TO tracks - 1
810 x = 65536 * track
820 getrack
830 putrack
840 WINDOW#0,190,50,166,130: BORDER#0,1,2:
INK#0,7
850 AT#0,2,10: PRINT#0,(1.25*(track+1)) DIV 1.25;" %";:
INK#0,2: PRINT#0," COPied"
860 NEXT track
870 END FOR track
880 CLOSE#3
890 CLOSE#4
900 PAPER 0: INK 7: CLS: PAPER#2,0: CLS#2
910 BEEP 2000,20: PAUSE 14: BEEP 1000,14: PAUSE 10:
BEEP 2000,20
920 INK 7: PRINT\,
"Disk in flp"&a&"_ CLONEd TO Disk in
flp"&b&"_" \\\," - PRESS <ANY KEY> to
Continue -" :
PAUSE: CLS#2: MAIN
930 END DEFine SCOPY
940 :
950 DEFine PROCedure getrack
960 GET #3x+1,a$:
GET #3x+4,b$:
GET #3x+7,c$:
GET #3x+2,d$:
GET #3x+5,e$:
GET #3x+8,f$:
GET #3x+3,g$:
GET #3x+6,h$:
GET #3x+9,i$
970 IF Density=2 OR Density=3 THEN
GET #3x+1+9,ha$:
GET #3x+4+9,hb$:
GET #3x+7+9,hc$:
GET #3x+2+9,hd$:
GET #3x+5+9,he$:
GET #3x+8+9,hf$:
GET #3x+3+9,hg$:
GET #3x+6+9,hh$:
GET #3x+9+9,hi$
980 REMark IF Density=3 THEN REMark
990 IF sides = 2 THEN
1000 GET #3x+257,j$:
GET #3x+260,k$:
GET #3x+263,l$:
GET #3x+258,m$:
GET #3x+261,n$:
GET #3x+264,o$:
GET #3x+259,p$:
GET #3x+262,q$:
GET #3x+265,r$
1010 IF Density=2 OR Density=3 THEN GET
#3x+257+9,hj$:
GET #3x+260+9,hk$:
GET #3x+263+9,hl$:
GET #3x+258+9,hm$:
GET #3x+261+9,hn$:
GET #3x+264+9,ho$:
GET #3x+259+9,hp$:
GET #3x+262+9,hq$:
GET #3x+265+9,hr$
1020 REMark IF Density=3 THEN REMark 1030 END IF
1040 END DEFine getrack
1050 :
1060 DEFine PROCedure putrack
1070 PUT #4x+1,a$:
PUT #4x+4,b$:
PUT #4x+7,c$:
PUT #4x+2,d$:
PUT #4x+5,e$:
PUT #4x+8,f$:
PUT #4x+3,g$:
PUT #4x+6,h$:
PUT #4x+9,i$
1080 IF Density=2 OR Density=3 THEN PUT
#4x+1+9,ha$:
PUT #4x+4+9,hb$:
PUT #4x+7+9,hc$:
PUT #4x+2+9,hd$:
PUT #4x+5+9,he$:
PUT #4x+8+9,hf$:
PUT #4x+3+9,hg$:
PUT #4x+6+9,hh$:
PUT #4x+9+9,hi$
1090 REMark IF Density =3 THEN REMark
1100 IF sides = 2 THEN
1110 PUT #4x+257,j$:
PUT #4x+260,k$:
PUT #4x+263,l$:
PUT #4x+258,m$:
PUT #4x+261,n$:
PUT #4x+264,o$:
PUT #4x+259,p$:
PUT #4x+262,q$:
PUT #4x+265,r$
1120 IF Density=2 THEN
PUT #4x+257+9,hj$:
PUT #4x+260+9,hk$:
PUT #4x+263+9,hl$:
PUT #4x+258+9,hm$:
PUT #4x+261+9,hn$:
PUT #4x+264+9,ho$:
PUT #4x+259+9,hp$:
PUT #4x+262+9,hq$:
PUT #4x+265+9,hr$
1130 REMark IF Density=3 THEN REMark
1140 END IF
1150 END DEFine putrack
1160 :
1170 DEFine PROCedure Fmat
1180 INK#0,7: AT#0,11,18: PRINT#0," _ ": AT#0,11,10:
INPUT#0,"FORMAT flp";zzz
1190 STRIP#0,5: INK#0,0: AT#0,11,4:
PRINT#0, " FORMATting ";: INK#0,2:
PRINT#0, "flp";zzz;"_ ": STRIP#0,0
1200 INK#0,0: INK#0,0: FORMAT#0,"flp"&zzz&"_"
1210 CLS#0: AT#0,2,2: INK#0,5: DIR#0,"flp"&zzz&"_":
PAUSE 40: CLS#0: MAIN
1220 END DEFine Fmat
1230 :
1240 PAPER 0: CSIZE#2,0,0: CLS#2: AT#2,24,28:
INK#2,7: PRINT#2, "@mended PLATYPUS
Software"