Listing of file='@DOSDCPY' on disk='vmedia/turbo-1.30.01.wvd.zip'
# Sector 2778, program filename = '@DOSDCPY'
0010 REM %^ Dos Diskcopy command 'WRITTEN BY KIRITBAXI E.A.M.E R&D
0020 REM % VERSION 1.0 20 JUN 1991
0030 REM ************************************************************
0040 REM * *
0050 REM * DOS DISKCOPY EMULATION *
0060 REM * *
0070 REM ************************************************************
0100 DIM D$(16),G1$17,E1$32,P$1,G1$(32)3,B$3,G2$1,J$11,L$1,M$1
: P$=HEX(10)
: REM VARIABLES FOR GETTING DISK STATUS
0110 DIM A$(16)32,K$1,G$15,H$8,J$11
: H$=I4$
0120 REM % set cursor flash
: PRINT HEX(02050F)
0130 REM % ADDRESS SETUP BY DOS PROG.
: B$=SELECT #N
: SELECT #4<B$>
: IF N=2THEN L$="A"
: IF N=3THEN L$="B"
: IF I2$="B:"THEN N0=N2
: IF I2$="A:"THEN N0=N1
: IF I2$=" "THEN N0=N
: IF N0=2THEN M$="A"
: IF N0=3THEN M$="B"
: B$=SELECT #N0
: SELECT #5<B$>
0140 REM % check if workfile exists if not create
: LIMITS T#0,"workfile",A1,B1,C1,D1
: IF D1=0THEN DO
: DATA SAVE DC OPEN T#0,(4801)"workfile"
: LIMITS T#0,"workfile",A1,B1,C1,D1
: END DO
0150 GOSUB 8000
: IF A$="HD"THEN A=4800
: IF A$="DD"THEN A=1440
: REM Get Disk status
0160 C=A-1
: REM LAST SECTOR ON DISK.
0170 PRINTUSING 610;L$
0180 PRINTUSING 620;
0190 GOSUB 500
: IF POS(HEX(7E7FF0)=K$)<>0THEN 490
: IF K$<>HEX(0D)THEN 190
0200 REM % Check if drive has a disk
: DATA LOAD BMT#N,(0,L)G2$
: ERRORE=ERR
: IF E=98THEN 200
: ELSE GOTO 210
0210 PRINT
: PRINT " Reading Source disk...";
0220 REM % Copy source to workfile starting sector a1
: PRINT HEX(0A)
: COPY T#N,(0,C)TO T#0,(A1)
0230 PRINTUSING 680;M$
0240 PRINTUSING 620;
0250 GOSUB 500
: IF POS(HEX(7E7FF0)=K$)<>0THEN 490
: IF K$<>HEX(0D)THEN 250
0260 REM % Check if drive has a disk
: DATA LOAD BMT#N0,(0,L)G2$
: ERRORE=ERR
: IF E=98THEN 260
: ELSE GOTO 270
0270 REM % Check if disk is formatted
: DATA LOAD BMT#N0,(0,L)G2$
: ERRORE=ERR
: IF E=93THEN GOSUB 360
0280 GOSUB 9000
0290 IF K$="y"THEN 310
0300 IF K$="n"THEN 490
0310 PRINT
: PRINT " Copying to output diskette...";
0320 REM %copy from sector a1 of workfile upto c sectors to floppy
: COPY T#0,(A1,A1+C)TO T#N0,(0)
: PRINT
: PRINT " Copy Complete. . ."
0330 PRINTUSING 690;
0340 GOSUB 500
: K$=K$OR HEX(20)
: IF POS("YyNn"=K$)<>0THEN PRINT K$
: IF K$="y"THEN 230
: ELSE GOTO 350
0350 GOTO 490
0360 REM % Format Disk
0370 PRINT HEX(0D0A0E);" Format in Progress ..."
0380 $GIO#5(0600070070A0400288D0704001306A10680240018B67,G$)
0390 IF STR(G$,6,3)=HEX(000000)THEN 470
0400 IF STR(G$,6,3)=HEX(000204)THEN 430
: REM RETRY COMMAND
0410 IF STR(G$,6,3)=HEX(010000)THEN 430
0420 IF STR(G$,6,3)<>HEX(000000)THEN 450
0430 PRINT
: PRINT
: PRINTUSING 630;L$
: PRINTUSING 640;
0440 GOSUB 500
: K$=K$OR HEX(20)
: PRINT K$;
: IF K$="a"THEN 490
: IF K$="r"THEN 370
: IF K$="f"THEN GOTO 490
: GOSUB 500
: IF K$=HEX(7E)OR K$=HEX(7F)THEN 490
0450 PRINT
: PRINT
: PRINTUSING 650
: PRINTUSING 660
0460 GOSUB 500
: K$=K$OR HEX(20)
: IF K$="y"OR K$="n"THEN PRINT K$;
: IF K$="y"THEN PRINT
: IF K$="y"THEN 170
: IF K$="n"THEN 490
: IF K$=HEX(7E)OR K$=HEX(7F)THEN 490
: GOTO 460
0470 PRINT
: PRINTUSING 670
: PRINT
: RETURN
0480 GOSUB 500
: K$=K$OR HEX(20)
: IF K$="y"OR K$="n"THEN PRINT K$;
: IF K$="y"THEN PRINT
: IF K$="y"THEN 170
: IF K$="n"THEN 490
: IF K$=HEX(7E)OR K$=HEX(7F)THEN 490
: GOTO 480
0490 REM % RET > COMMAND PROC
: PRINT
: I4$="R"
: LOAD T"@DOS"
0500 K$=" "
: KEYIN K$
: RETURN
0510 REM % Input volume label
0520 PRINTUSING 680;M$;
0530 J$=ALL(20)
: I=0
: A$()=ALL(00)
0540 LINPUT J$
0550 PRINT
: PRINT
: IF STR(A$,1,2)="HD"THEN Y=30
: IF STR(A$,1,3)="360"THEN Y=10
: IF Y=0THEN Y=10
0560 IF LEN(J$)=0THEN 590
0570 IF LEN(J$)<>0THEN DO
: STR(A$(1),1,11)=J$
: STR(A$(1),12,1)=HEX(28)
: DATA SAVE BMT#N,(Y,L)A$()
: END DO
0580 I4$=ALL(20)
0590 RETURN
0600 REM % IMAGES!!
0610 % Insert source diskette in drive #
0620 % and strike ENTER when ready\
0630 % General Failure error reading drive #
0640 % Abort, Retry, Fail?
0650 % Format Failure
0660 % Format another (Y/N)
0670 % Format complete
0680 % Insert output diskette in drive #
0690 % Do you wish to make more copies (Y/N)?
8000 REM % GET DISK STATUS FOR SOURCE DRIVE
8010 A$=ALL(20)
8030 I=1
: STR(G1$,1,1)=STR(P$,I,1)OR HEX(20)
: IF I<>17THEN 8050
8040 STR(B$,2,1)=OR HEX(04)
: ERRORSTOP "SOMETHING'S GROSSLY WRONG HERE!"
8050 STR(G1$,2,7)=ALL(00)
: $GIOSTATUSREQUEST#4(0E140F0012E20600070070A0400288D070406A106816400087051
A00C340,G1$)G1$;STR(E1$,,VAL(STR(G1$,5,1)))
: IF STR(E1$,2,1)=HEX(00)THEN STR(E1$,18,1)=HEX(00)
8060 G2$=STR(G1$,8,1)AND HEX(10)
: IF G2$=HEX(00)THEN 8070
: GOTO 8080
8070 IF STR(G1$,8,1)<>HEX(00)THEN 8080
: IF STR(E1$,1,1)=HEX(33)THEN 8080
8080 IF G2$=HEX(00)THEN A$=ALL(20)
: IF VAL(STR(E1$,6,3),3)=4160THEN A$="HD"
: IF VAL(STR(E1$,6,3),3)=1280THEN A$="DD"
: IF A$="DD"THEN B=0
: ELSE B=1213952
8090 RETURN
9000 REM % VERIFY IF A DOS DISKETTE
: DATA LOAD BA T#N0,(C)D$()
: ERRORE=ERR
9010 IF E=0THEN RETURN
: IF E=98THEN 9040
9020 REM % VERIFY IF OUTPUT = SOURCE DISKETTE
: DATA LOAD BA T#N0,(A-1)D$()
: ERRORE=ERR
9030 IF E=0THEN RETURN
: IF E=98THEN 9070
9040 PRINT
: PRINT HEX(070E);" Warning !!! The diskette is not a 'DOS' Disk "
: PRINT HEX(0E);" Disk may be a valid 2200 disk Do you wish to continue (Y/
N)?";
9050 GOSUB 500
: K$=K$OR HEX(20)
: IF K$="y"OR K$="n"THEN RETURN
: GOTO 9050
9060 RETURN
9070 PRINT
: PRINT HEX(070E);"Source Disk and Output Disk not of same size"
: RETURN CLEAR
: GOTO 490