Compucolor.org – Virtual Media

Listing of file='DUP.BAS;01' on disk='vmedia/modified_utilities-sector.ccvf'

100 REM  ** DUPLICATE PROGRAM - JAN 80 **
120 CLEAR 100:T= PEEK (32940)+ 256* PEEK (32941)
130 P= PEEK (32984)+ 256* PEEK (32985)+ 200
140 A= INT ((P+ 200)/ 256):B= (P+ 200)- A* 256
150 C= INT (T/ 256):D= T- 256* C
160 A= A+ 0:B= 0:C= C- 2:D= 255:T= C* 256+ D+ 1:P= A* 256+ 23
170 X= A:GOSUB 570:A$= H$:X= B:GOSUB 570:A$= A$+ H$+ " "
180 M= T- A* 256:X= M/ 256:GOSUB 570:M$= H$
190 X= 0:GOSUB 570:M$= M$+ H$:E$= M$:I= 0
200 PLOT  6,2,12,3,13,0,14,6,34
210 PRINT " D U P L I C A T I O N   P R O G R A M "
220 PLOT  6,3,3,0,4,15
230 PRINT TAB( 13)"SELECT ONE OF THE FOLLOWING OPTIONS:":PRINT
240 PRINT TAB( 15);"1. DUP FROM DRIVE 0: TO DRIVE 1:"
250 PRINT TAB( 15);"2. DUP FROM DRIVE 1: TO DRIVE 0:"
260 PRINT TAB( 15);"3. DUP DISK ON SINGLE DRIVE 0:"
270 PRINT TAB( 15);"4. DUP DISK ON SINGLE DRIVE 1:"
275 PRINT TAB( 15);"5. EXIT PROGRAM":PRINT
280 PRINT TAB( 18):INPUT "ENTER YOUR CHOICE: ";J:PRINT :REM 
290 IF J< 1OR J> 5THEN 280
300 IF J= 1THEN S$= "0:":D$= "1:"
310 IF J= 2THEN S$= "1:":D$= "0:"
320 IF J= 3THEN S$= "0:":D$= "0:"
330 IF J= 4THEN S$= "1:":D$= "1:"
335 PA= 0:IF J= 5THEN LOAD "MENU":RUN
340 INPUT "      ARE ANY FILES TO BE COPIED NOT IN THE DIRECTORY? ";Q$:REM 
350 IF PA> 0AND J< 3THEN 390
360 PRINT :PRINT "        INSERT SOURCE DISK INTO DRIVE ";S$;"";
370 INPUT " - HIT RETURN ";ZZ$
380 IF I= 0THEN GOSUB 500
390 IF  I+ INT ((T- P)/ 128)< QTHEN 420
400 D= (Q- I)* 128:A1= INT (D/ 256):B1= D- A1* 256
405 IF D< = MTHEN PRINT TAB( 8)"COPY COMPLETES ON THIS PASS"
410 X= A1:GOSUB 570:E$= H$:X= B1:GOSUB 570:E$= E$+ H$
420 X= I:GOSUB 570
430 PLOT 27,4:PRINT "READ ";S$;H$;" ";A$;E$:PLOT 27,27
440 IF PA> 0AND J< 3THEN 470
450 PRINT "        INSERT DEST.  DISK INTO DRIVE ";D$;"";
460 INPUT " - HIT RETURN ";ZZ$
470 PLOT 27,4:PRINT "WRITE ";D$;H$;" ";A$;E$:PLOT 27,27
480 PA= PA+ 1:I= I+ INT ((T- P)/ 128):IF I> = QTHEN 660
490 GOTO 350
500 REM  ** FIND END OF DIRECTORY **
510 IF LEFT$ (Q$,1)= "Y"THEN Q= 400:P= A* 256:RETURN
520 PLOT 27,4:PRINT "READ ";S$;H$;" ";A$;"1000":PLOT 27,27
530 Q= PEEK (P+ 11)+ 256* PEEK (P+ 12)
540 IF PEEK (P)= 1THEN P= A* 256:RETURN
550 P= P+ 21:IF INT (P/ 128)= P/ 128THEN P= P+ 2
560 GOTO 530
570 REM  ** X=VALUE TO BE HEXXED **
580 H$= "":X1= INT (X/ 16):X2= X- 16* X1
590 IF X2< 10THEN X2= X2+ 48:GOTO 610
600 X2= X2+ 55
610 IF X1< 10THEN X1= X1+ 48:GOTO 630
620 X1= X1+ 55
630 H$= H$+ CHR$ (X1)+ CHR$ (X2)
640 IF X1< 71THEN RETURN
650 X1= X1- 71:H$= "1":GOTO 610
660 REM  ** DUP IS FINISHED **
670 PRINT :IF PA> 1THEN 710
680 PRINT TAB( 10)"DUPLICATION WAS ACCOMPLISHED IN ONE PASS."
690 PRINT TAB( 10):INPUT "DO YOU DESIRE ANOTHER COPY? ";ZZ$:REM 
700 IF LEFT$ (ZZ$,1)= "Y"THEN PA= 0:I= 0:PRINT :GOTO 440
710 GOTO 120