image of READY prompt

Wang2200.org

Listing of file='@DOSCOPY' on disk='vmedia/mvp-cs386-1.30-disk2.wvd.zip'

# Sector 515, program filename = '@DOSCOPY'
0010 REM %^ @DOSCOPY  UTILITY BY KIRIT BAXI EAME R&D
0020 REM % Version 1.0 20 JUN 1991
0030 REM ***********************************************
0040 REM *                                             *
0050 REM *              COPY   Program                 *
0060 REM *                                             *
0070 REM ***********************************************
0100 REM % DEFINE VARIABLES
0110 DIM A$(16)32,B$(16)32,D$(16),B$4,C$16,D$3,E$4,F$11,G$2,H$8,K$1,J$12,J1$12
     ,L$2,M$4,N$1,O$1,P$1,Q$1,V$11,X$1
   : PRINT HEX(02050F)
   : IF N=2THEN Q$="A"
   : IF N=3THEN Q$="B"
0120 IF STR(I2$,1,12)="            "THEN I2$=I1$
0130 REM % File name to copy from J$
   : C$=ALL(00)
   : MAT SEARCHI1$,=":"TO C$
   : C=VAL(C$,2)
   : IF C=0THEN DO
   : J$=I1$
   : END DO
0140 IF C<>0THEN DO
   : IF LEN(I1$)>2THEN J$=STR(I1$,C+1)
   : IF LEN(I1$)<3THEN J$=I1$
   : IF STR(I1$,1,1)="A"THEN N=N1
   : IF STR(I1$,1,1)="B"THEN N=N2
   : IF N=2THEN X$="A"
   : IF N0=3THEN X$="B"
   : END DO
0150 REM % File name to copy to J1$
   : C$=ALL(00)
   : MAT SEARCHI2$,=":"TO C$
   : C=VAL(C$,2)
   : IF C=0THEN DO
   : J1$=I2$
   : END DO
0160 IF C<>0THEN DO
   : IF LEN(I2$)>2THEN J1$=STR(I2$,C+1)
   : IF LEN(I2$)=2THEN J1$=J$
   : IF STR(I2$,1,1)="A"THEN N0=N1
   : IF STR(I2$,1,1)="B"THEN N0=N2
   : IF N0=2THEN X$="A"
   : IF N0=3THEN X$="B"
   : END DO
0170 IF STR(J1$,2,1)=":"THEN DO
   : J1$=STR(I2$,3)
   : END DO
0180 REM % Find limits of workfile
   : 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
0190 PRINT " Insert Source diskette in drive '";Q$;"'";HEX(02050F)
0200 PRINT " Press ENTER to continue . . . ";
0210 KEYIN K$
   : IF POS(HEX(7E7FF0)=K$)<>0THEN 480
   : IF K$<>HEX(0D)THEN 210
   : PRINT K$;
0220 REM % CHECK FOR DRIVE READY
   : DATA LOAD BA T#N,(0)D$()
   : ERRORE=ERR
   : IF E=98THEN DO
   : PRINT HEX(070E);"Please insert Diskette in Drive"
   : END DO
   : IF E=98THEN 480
0230 REM % FIND DISK TYPE AND SET OFFSET SECTOR
0240 DATA LOAD BMT#N,(1440,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=10
   : V=13
   : GOTO 260
0250 DATA LOAD BMT#N,(4800,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=30
   : V=27
   : GOTO 260
0260 A,B,C,D,D2=0
   : IF Y=0THEN DO
   : Y=10
   : V=13
   : END DO
0270 REM % Check if file exists
   : E=0
   : DATA LOAD ACOPEN T#N,J$
   : ERRORE=ERR
0280 IF E<>0THEN PRINT HEX(070E);"Bad command or filename"
   : IF E<>0THEN 480
0290 REM % Find the start sector
   : LIMITS T#N,A2,B2,C2
0300 REM % SET START POINTER TO COPY TO
   : L=A1
   : REM % FIND NUMBER OF BYTES IN FILE
   : GOSUB 620
   : REM % NO OF BYTES
   : A8=A9
0310 PRINT "   Copying ";STR(J$,1,LEN(J$));"  to  ";STR(J1$,1,LEN(J1$))
0320 A$()=ALL(00)
   : DATA LOAD AC#N,A$()
   : IF END THEN 360
0330 DATA SAVE BMT#0,(L,L)A$()
0340 GOTO 320
0350 REM % COPY STARTS HERE!
0360 DATA SAVE BMT#0,(L,L)A$()
   : DATA SAVE ACCLOSE#N
0370 REM % end pointer
   : K=L
   : IF N0=0THEN X$=Q$
   : IF STR(I2$,2,1)=":"THEN 510
   : PRINT " Insert output diskette in drive '";X$;"'";HEX(02050F)
0380 PRINT " Press ENTER to continue . . . ";
0390 KEYIN K$
   : IF POS(HEX(7E7FF0)=K$)<>0THEN 480
   : IF K$<>HEX(0D)THEN 390
   : PRINT K$;
0400 REM % set start pointer for workfile
   : L=A1
   : REM % CALCULATE NO OF SECTORS
   : J=B2
   : IF J=1THEN J=2
0410 E=0
   : DATA SAVE ACOPEN T#N,(J*2)J1$
   : ERRORE=ERR
0420 IF E<>0THEN PRINT HEX(070E);"Can not open file."
   : IF E<>0THEN 480
0430 DATA LOAD BMT#0,(L,L)A$()
0440 DATA SAVE AC#N,A$()
0450 IF K=LTHEN 460
   : ELSE GOTO 430
0460 DATA SAVE AC#N,END
   : DATA SAVE ACCLOSE#N
0470 GOSUB 730
0480 REM % RET > CMD PROC
   : PRINT
   : I4$="R"
   : LOAD T"@DOS"
0490 END
0500 REM % COPY STARTS HERE IS COPY A > B
0510 PRINT " Insert output diskette in drive '";X$;"'";HEX(02050F)
0520 PRINT " Press ENTER to continue . . . ";
0530 KEYIN K$
   : IF POS(HEX(7E7FF0)=K$)<>0THEN 480
   : IF K$<>HEX(0D)THEN 530
   : PRINT K$;
0540 REM %  set start pointer for workfile
   : L=A1
   : % REM CALCULATE NO OF SECTORS: J=B2: IF J=1THEN J=2
0550 E=0
   : DATA SAVE ACOPEN T#N0,(J*2)J1$
   : ERRORE=ERR
   : IF E<>0THEN PRINT HEX(070E);"Can not open file."
   : IF E<>0THEN 480
0560 DATA LOAD BMT#0,(L,L)A$()
0570 DATA SAVE AC#N0,A$()
0580 IF K=LTHEN 590
   : ELSE GOTO 560
0590 DATA SAVE AC#N0,END
   : DATA SAVE ACCLOSE#N0
0600 IF LEN(I2$)<3THEN J1$=J$
   : GOSUB 860
0610 GOTO 480
0620 REM % CALCULATE BYTES FOR THE FILE TO COPY
0630 C$=ALL(00)
   : F$=ALL(20)
   : MAT SEARCHJ$,="."TO C$
   : C=VAL(C$,2)
   : IF C=0THEN 640
   : STR(F$,1,8)=STR(J$,1,C-1)
   : STR(F$,9,3)=STR(J$,C+1,3)
   : GOTO 650
0640 F$=J$
0650 REM % GET THE DIRECTORY INFORMATION AND CALCUTATE AND DISPLAY THE DATA
0660 FOR Z=YTO Y+VSTEP 2
0670 DATA LOAD BMT#N,(Z,M)B$()
0680 FOR X=1TO 16
   : IF STR(B$(X),1,11)=STR(F$,1,11)THEN 690
   : ELSE GOTO 700
0690 REM % CALCULATE BYTES USED
   : E$=ALL(00)
   : STR(E$,3,1)=STR(B$(X),30,1)
   : STR(E$,4,1)=STR(B$(X),29,1)
   : STR(E$,1,1)=STR(B$(X),32,1)
   : STR(E$,2,1)=STR(B$(X),31,1)
   : A9=VAL(E$,4)
   : GOTO 720
0700 NEXT X
0710 NEXT Z
0720 RETURN
0730 REM % UPDATE  BYTES USED IN FILE JUST COPIED.
0740 C$=ALL(00)
   : F$=ALL(20)
   : MAT SEARCHI2$,="."TO C$
   : C=VAL(C$,2)
   : IF C=0THEN 750
   : STR(F$,1,8)=STR(I2$,1,C-1)
   : STR(F$,9,3)=STR(I2$,C+1,3)
   : GOTO 760
0750 F$=I2$
0760 REM % GET THE DIRECTORY INFORMATION
0770 DATA LOAD BMT#N,(1440,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=10
   : V=13
   : GOTO 790
0780 DATA LOAD BMT#N,(4800,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=30
   : V=27
   : IF Y=0THEN DO
   : Y=10
   : V=13
   : END DO
0790 FOR Z=YTO Y+VSTEP 2
0800 DATA LOAD BMT#N,(Z,M)B$()
0810 FOR X=1TO 16
   : IF STR(B$(X),1,11)=STR(F$,1,11)THEN 820
   : ELSE GOTO 830
0820 REM % CALCULATE BYTES USED
   : E$=BIN(A8,4)
   : STR(B$(X),30,1)=STR(E$,3,1)
   : STR(B$(X),29,1)=STR(E$,4,1)
   : STR(B$(X),32,1)=STR(E$,1,1)
   : STR(B$(X),31,1)=STR(E$,2,1)
   : GOTO 850
0830 NEXT X
0840 NEXT Z
0850 DATA SAVE BMT#N,(Z,M)B$()
   : RETURN
0860 REM % UPDATE  BYTES USED IN FILE JUST COPIED. IF COPY A > B
0870 C$=ALL(00)
   : F$=ALL(20)
   : MAT SEARCHJ1$,="."TO C$
   : C=VAL(C$,2)
   : IF C=0THEN 880
   : STR(F$,1,8)=STR(J1$,1,C-1)
   : STR(F$,9,3)=STR(J1$,C+1,3)
   : GOTO 890
0880 F$=J1$
0890 REM % GET THE DIRECTORY INFORMATION
0900 DATA LOAD BMT#N0,(1440,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=10
   : V=13
   : GOTO 790
0910 DATA LOAD BMT#N0,(4800,M)A$()
   : ERRORE=ERR
   : IF E=98THEN Y=30
   : V=27
   : IF Y=0THEN DO
   : Y=10
   : V=13
   : END DO
0920 FOR Z=YTO Y+VSTEP 2
0930 DATA LOAD BMT#N0,(Z,M)B$()
0940 FOR X=1TO 16
   : IF STR(B$(X),1,11)=STR(F$,1,11)THEN 950
   : ELSE GOTO 960
0950 REM % CALCULATE BYTES USED
   : E$=BIN(A8,4)
   : STR(B$(X),30,1)=STR(E$,3,1)
   : STR(B$(X),29,1)=STR(E$,4,1)
   : STR(B$(X),32,1)=STR(E$,1,1)
   : STR(B$(X),31,1)=STR(E$,2,1)
   : GOTO 980
0960 NEXT X
0970 NEXT Z
0980 DATA SAVE BMT#N0,(Z,M)B$()
   : RETURN