100 ; PROGRAM NAME IS 'BACKUP' 24 JUN 87
110 ;
120 CLS:X=FRE(0):POKE $001090,HEX(0001900000019000)
130 DIM A$1,B$1,L$79:POKE $00D81E,HEX(00019000)
140 VTAB 4:MSG%=12:GOSUB MESSAGE
150 IF X<394000 THEN VTAB 12:MSG%=11:GOSUB MESSAGE
160 VTAB 2:HTAB 25:MSG%=1:GOSUB MESSAGE
170 VTAB 19:MSG%=2:GOSUB MESSAGE:VTAB 19:HTAB 35:INPUT "",SOURCE_DRIVE%
180 MSG%=3:GOSUB MESSAGE:VTAB 20:HTAB 40:INPUT "",DEST_DRIVE%
190 VTAB 21:MSG%=4:GOSUB MESSAGE:VTAB 21:HTAB 52:EDIT A$
200 IF A$<>"Y" THEN IF A$<>"y" THEN IF A$<>"N" THEN IF A$<>"n" GOTO 190
210 DR SOURCE_DRIVE%:CALL $00D80C:PEEKW $014000,SECT%:POKEW $00D822,SECT%
220 IF X+27000<FLT(SECT%-9)*1024+4608 THEN MSG%=10:GOSUB MESSAGE:END
230 CLRLINE 22:VTAB 22:MSG%=5:GOSUB MESSAGE:CALL $00D7FC
240 IF SOURCE_DRIVE%<>DEST_DRIVE% GOTO 260
250 CLRLINE 22:VTAB 22:MSG%=6:GOSUB MESSAGE:VTAB 23:HTAB 32:EDIT B$
260 CLRLINE 22:CLRLINE 23:VTAB 22:DR DEST_DRIVE%
270 IF A$<>"Y" THEN IF A$<>"y" GOTO 290
280 CLRLINE 22:MSG%=7:GOSUB MESSAGE:CALL $00D7F8
290 VTAB 22:CLRLINE 22:MSG%=8:GOSUB MESSAGE:CALL $00D800
300 VTAB 24:PRINT:PRINT " THE BACKUP PROGRAM IS COMPLETED.":DR 1:END
310 ;
320  "MESSAGE"
330 RESTORE 1:READ MSG_NUM%:IF MSG%>=MSG_NUM% THEN PRINT "MESSAGE ERROR":STOP
340 START%=MSG_NUM%:IF MSG%=1 THEN READ LEN%:GOTO 360
350 FOR I%=1 TO MSG%-1:READ LEN%:START%=START%+LEN%:NEXT I%:READ LEN%
360 RESTORE START%:FOR I%=1 TO LEN%:READ L$:PRINT L$:NEXT I%
370 RETURN
380 DATA 14,1,1,1,1,1,2,1,1,1,2,2,6
390 ; MSG1
400 DATA "BACKUP UTILITY PROGRAM"
410 ; MSG2
420 DATA " INPUT THE SOURCE DRIVE # (1 OR 2) "
430 ; MSG3
440 DATA " INPUT THE DESTINATION DRIVE # (1 OR 2) "
450 ; MSG4
460 DATA " DO YOU WANT TO FORMAT THE DESTINATION DISK ? (Y/N) "
470 ; MSG5
480 DATA " READING IN SOURCE DISK (SS=20 SECONDS, DS=40 SECONDS) ... "
490 ; MSG6
500 DATA " REMOVE THE SOURCE DISK AND INSERT THE DESTINATION DISK"
510 DATA " PRESS RETURN WHEN YOU ARE READY"
520 ; MSG7
530 DATA " FORMATTING DESTINATION DISK (SS=32 SECONDS, DS=64 SECONDS) ... "
540 ; MSG8
550 DATA " WRITING DATA TO DESTINATION DISK (SS=20 SECONDS, DS=40 SECONDS) ..."
560 ; MSG9
570 DATA " AVAILABLE (NOT USED)"
580 ; MSG10
590 DATA " SORRY, YOU DO NOT HAVE ENOUGH MEMORY TO BACKUP THIS DISK."
600 DATA " YOU NEED AT LEAST A MEGABYTE OF MEMORY TO BACKUP THIS DISK!"
610 ; MSG11
620 DATA " WE WILL NEED TO USE SOME OF YOUR SCREEN FOR STORAGE!!"
630 DATA " THIS MESSAGE WILL BE WRITTEN OVER WITH DATA FROM THE DISK!"
640 ; MSG12
650 DATA " THIS UTILITY CREATES AN exact BIT FOR BIT COPY OF THE DBASIC SOURCE DISK."
660 DATA " "
670 DATA " EVERY FILE IS COPIED AND THE SECTORS ARE not REORDERED."
680 DATA " "
690 DATA " 'BACKUP' WILL RUN ON A ONE-DRIVE SYSTEM, BUT YOU CANNOT BACKUP A DOUBLE-SIDED"
700 DATA " DISK UNLESS YOU HAVE A DOUBLE-SIDED DRIVE AND A MEGABYTE OF RAM."
710 END
