8-Bit Software Online Conversion
Advanced Disc Backup - Listing
10REM DISC BACKUPER
20REM (c) 1990 Ben Dooks
30REM This is a simple backuping
40REM utility. You could use it to
50REM backup some protected software
60REM Software piracy is the
70REM occupation of childish minds.
80MODE 7
90VDU 23;8202;0;0;0;
100OH%=HIMEM
110RE%=0:RT%=0
120LS%=0:LR%=0
130WE%=0:WT%=0
140HIMEM=TOP+&400
150STR%=HIMEM
160MAX%=(OH%-HIMEM)/&A00
170PROCget
180PROCdisplay
190PROCcopy
200END
210DEFPROCget
220INPUT " Input Drive : "ID%
230INPUT " Out Drive : "OD%
240INPUT " Start Track : "ST%
250INPUT " Finish Trk. : "FT%
260DS%=0:SL%=1+(2*((FT%-ST%)/MAX%))
270ENDPROC
280DEFPROCdisplay
290CLS
300PRINT CHR$(141)" Universal Disc C
opier V.1.14a"
310PRINT CHR$(141)" Universal Disc C
opier V.1.14a"
320PRINT " (c) 1990 BARKSOFT "
330PRINT " Copying ";ID%;"]";OD%;" C
opying ";(FT%-ST%);" Tracks "
340VDU 28,0,23,38,4
350ENDPROC
360DEFPROCcopy
370T%=ST%
380PROCins`src
390FOR O%=0 TO MAX%
400PROCltrack
410PROCstatus
420NEXT
430PROCins`dest
440SL%=SL%-1:DS%=DS%+1
450FOR O%=0 TO MAX%
460PROCstrack
470PROCstatus
480NEXT
490SL%=SL%-1:DS%=DS%+1
500IF (T%+8)>FT% THEN PROCend`cop:ENDP
ROC
510T%=T%+1+MAX%:GOTO 380
520DEFPROCltrack
530IF (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
610A%=&7F:Y%=9:CALL &FFF1
620PRINTTAB(1,3)" Reading Track ";(T%+
O%)
630LR%=(T%+O%)
640IF ?&90A<>0 THEN PROCread`err
650ENDPROC
660DEFPROCstrack
670LS%=(T%+O%)
680IF (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
760A%=&7F:Y%=9:CALL &FFF1
770PRINTTAB(1,5)" Writen Track ";(T%+O
%)
780IF ?&90A<>0 THEN PROCwrite`err
790ENDPROC
800DEFPROCread`err
810PRINTTAB(1,11)" Read error ";?&90A;
" at ";(T%+O%)
820RE%=?&90A:RT%=(T%+O%)
830ENDPROC
840DEFPROCwrite`err
850PRINTTAB(1,11)" Write error ";?&90A
;" at ";(T%+O%)
860WE%=?&90A:WT%=(T%+O%)
870ENDPROC
880DEFPROCins`src
890CLS
900PRINTTAB(0,6)" INSERT Source disk i
nto drive ";ID%
910PRINTTAB(0,10)" ``````` THEN PRESS
'SPACE' ``````` "
920REPEAT:A=GET:UNTIL A=32
930PRINTTAB(0,6)"
"
940PRINTTAB(0,10)"
"
950ENDPROC
960DEFPROCins`dest
970CLS
980PRINTTAB(0,6)" INSERT Destination d
isk into drive ";OD%
990PRINTTAB(0,10)" ``````` THEN PRESS
'SPACE' ``````` "
1000REPEAT:A=GET:UNTIL A=32
1010PRINTTAB(0,6)"
"
1020PRINTTAB(0,10)"
"
1030ENDPROC
1040DEFPROCstatus
1050VDU 26
1060PRINTTAB(0,17)" PROGRESS
REPORT
1070PRINTTAB(0,19)" Errors : READ ";RE%
;" at ";RT%;" WRITE ";WE%;" at ";WT%
1080PRINTTAB(0,20)" Disk swaps : DONE "
;DS%;" LEFT ";SL%;:IF SL%=9 PRINT" "
1090PRINT
1100PRINTTAB(8,23)" S---------M--------
-F"
1110PRINTTAB(0,21)" Write : ";
1120IF (T%+O%)>FT% THEN 1240
1130D%=((LS%-ST%)/(FT%-ST%))*100
1140P%=D%/5
1150FOR I=0 TO P%
1160VDU 255
1170NEXT
1180PRINTTAB(0,22)" Read : ";
1190D%=((LR%-ST%)/(FT%-ST%))*100
1200P%=D%/5
1210FOR I=0 TO P%
1220VDU 255
1230NEXT
1240VDU 28,0,16,38,4
1250ENDPROC
1260DEFPROCend`cop
1270CLS
1280PRINT ''CHR$(141)" ****** Copied di
sk ******"
1290PRINT CHR$(141)" ****** Copied disk
******"
1300PRINT '''" Another (Y/N) ";
1310REPEAT:A=GET AND &DF:UNTIL A=89 OR
A=78
1320VDU A
1330I=INKEY(200)
1340IF A=78 THEN VDU 26:CLS:PRINT '" Th
e END"':END
1350RUN