Listing of file='@DOSDCPY' on disk='vmedia/mvp-cs386-1.30-disk2.wvd.zip'
# Sector 367, 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