10 REM LINEDISC BACKUPER 20 REM (c) 1990 Ben Dooks 30 REM This is a simple backuping 40 REM utility. You could use it to 50 REM backup some protected software 60 REM DIVSoftware piracy is the 70 REM DIVoccupation of childish minds. 80 MODE 7 90 VDU 23;8202;0;0;0; 100 OH%=HIMEM 110 RE%=0:RT%=0 120 LS%=0:LR%=0 130 WE%=0:WT%=0 140 HIMEM=TOP+&400 150 STR%=HIMEM 160 MAX%=(OH%-HIMEM)/&A00 170 PROCget 180 PROCdisplay 190 PROCcopy 200 END 210 DEFPROCget 220 INPUT "Input Drive :"ID% 230 INPUT "Out Drive :"OD% 240 INPUT "Start Track :"ST% 250 INPUT "Finish Trk. :"FT% 260 DS%=0:SL%=1+(2*((FT%-ST%)/MAX%)) 270 ENDPROC 280 DEFPROCdisplay 290 CLS 300 PRINT CHR$(141)" Universal Disc CopierV.1.14a" 310 PRINT CHR$(141)" Universal Disc CopierV.1.14a" 320 PRINT " (c) 1990BARKSOFT " 330 PRINT "Copying ";ID%;"]";OD%;"Copying";(FT%-ST%);"Tracks " 340 VDU 28,0,23,38,4 350 ENDPROC 360 DEFPROCcopy 370 T%=ST% 380 PROCins_src 390 FOR O%=0 TO MAX% 400 PROCltrack 410 PROCstatus 420 NEXT 430 PROCins_dest 440 SL%=SL%-1:DS%=DS%+1 450 FOR O%=0 TO MAX% 460 PROCstrack 470 PROCstatus 480 NEXT 490 SL%=SL%-1:DS%=DS%+1 500 IF (T%+8)>FT% THEN PROCend_cop:ENDPROC 510 T%=T%+1+MAX%:GOTO 380 520 DEFPROCltrack 530 IF (T%+O%)>FT% THEN ENDPROC 540 ?&900=ID% 550 !&901=STR%+(O%*&A00) 560 ?&905=3 570 ?&906=&53 580 ?&907=(T%+O%) 590 ?&908=0 600 ?&909=&2A 610 A%=&7F:Y%=9:CALL &FFF1 620 PRINTTAB(1,3)"Reading Track";(T%+O%) 630 LR%=(T%+O%) 640 IF ?&90A<>0 THEN PROCread_err 650 ENDPROC 660 DEFPROCstrack 670 LS%=(T%+O%) 680 IF (T%+O%)>FT% THEN ENDPROC 690 ?&900=OD% 700 !&901=STR%+(O%*&A00) 710 ?&905=3 720 ?&906=&4B 730 ?&907=(T%+O%) 740 ?&908=0 750 ?&909=&2A 760 A%=&7F:Y%=9:CALL &FFF1 770 PRINTTAB(1,5)"Writen Track";(T%+O%) 780 IF ?&90A<>0 THEN PROCwrite_err 790 ENDPROC 800 DEFPROCread_err 810 PRINTTAB(1,11)"Read error";?&90A;"at";(T%+O%) 820 RE%=?&90A:RT%=(T%+O%) 830 ENDPROC 840 DEFPROCwrite_err 850 PRINTTAB(1,11)"Write error";?&90A;"at";(T%+O%) 860 WE%=?&90A:WT%=(T%+O%) 870 ENDPROC 880 DEFPROCins_src 890 CLS 900 PRINTTAB(0,6)"INSERT Source disk into drive";ID% 910 PRINTTAB(0,10)"_______ THEN PRESS 'SPACE' _______ " 920 REPEAT:A=GET:UNTIL A=32 930 PRINTTAB(0,6)" " 940 PRINTTAB(0,10)" " 950 ENDPROC 960 DEFPROCins_dest 970 CLS 980 PRINTTAB(0,6)"INSERT Destination disk into drive";OD% 990 PRINTTAB(0,10)"_______ THEN PRESS 'SPACE' _______ " 1000 REPEAT:A=GET:UNTIL A=32 1010 PRINTTAB(0,6)" " 1020 PRINTTAB(0,10)" " 1030 ENDPROC 1040 DEFPROCstatus 1050 VDU 26 1060 PRINTTAB(0,17)"wssssssss{PROGRESS REPORTwssssssss{" 1070 PRINTTAB(0,19)"Errors : READ";RE%;"at";RT%;"WRITE";WE%;"at";WT% 1080 PRINTTAB(0,20)"Disk swaps : DONE";DS%;" LEFT";SL%;:IF SL%=9 PRINT" " 1090 PRINT 1100 PRINTTAB(8,23)"S---------M---------F" 1110 PRINTTAB(0,21)"Write :"; 1120 IF (T%+O%)>FT% THEN 1240 1130 D%=((LS%-ST%)/(FT%-ST%))*100 1140 P%=D%/5 1150 FOR I=0 TO P% 1160 VDU 255 1170 NEXT 1180 PRINTTAB(0,22)"Read :"; 1190 D%=((LR%-ST%)/(FT%-ST%))*100 1200 P%=D%/5 1210 FOR I=0 TO P% 1220 VDU 255 1230 NEXT 1240 VDU 28,0,16,38,4 1250 ENDPROC 1260 DEFPROCend_cop 1270 CLS 1280 PRINT ''CHR$(141)"****** Copied disk ******" 1290 PRINT CHR$(141)"****** Copied disk ******" 1300 PRINT '''"Another (Y/N) "; 1310 REPEAT:A=GET AND &DF:UNTIL A=89 OR A=78 1320 VDU A 1330 I=INKEY(200) 1340 IF A=78 THEN VDU 26:CLS:PRINT '" The END"':END 1350 RUN