Home » Personal collection » Commodore disks » disk46a_green.d64 » backup
backup
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Personal collection » Commodore disks » disk46a_green.d64 |
| Filename: | backup |
| Read OK: | ✔ |
| File size: | 0B63 bytes |
| Load address: | 0801 |
| Exec address: | 0000 |
File contents
100 POKE52,24:POKE56,24:CLR
110 PRINT"<clr>BACKUP UTILITY":PRINT"<cursor down>FROM (T/D)";:GOSUB650:F$=Y$
120 PRINT"<cursor down> TO (T/D)";:GOSUB650:T$=Y$
130 PRINT"<cursor down>DIRECTORY (T/D/?)":GOSUB630:IF Y$="D"THENGOSUB800:GOTO130
140 IF Y$="T" THEN GOSUB690:GOTO130
150 PRINT"<cursor down>TYPE P/S";:GOSUB630:IF Y$<>"P" AND Y$<>"S" THEN 150
160 FT$=Y$:PRINT " ";FT$
170 IF F$="D" AND T$="T" AND FT$="S" THEN GOSUB250:RUN
180 IF F$="T" AND T$="D" AND FT$="S" THEN GOSUB290:RUN
190 IF F$="D" AND T$="D" AND FT$="S" THEN GOSUB510:RUN
195 IF F$="T" AND T$="T" AND FT$="S" THEN GOSUB370:RUN
200 IF F$="D" AND T$="D" AND FT$="P" THEN GOSUB940:RUN
210 IF F$="D" AND T$="T" AND FT$="P" THEN GOSUB1010:RUN
220 IF F$="T" AND T$="T" AND FT$="P" THEN GOSUB1060:RUN
230 IF F$="T" AND T$="D" AND FT$="P" THEN GOSUB1100:RUN
240 RUN
250 GOSUB750:OPEN2,8,2,N$+",S,R":OPEN1,1,1,N$
260 GET#2,R$:IF ST THEN 280
270 PRINT#1,Y$;:GOTO260
280 CLOSE 2:CLOSE 1:RETURN
290 OPEN1,1,0:GOSUB700:IF E=1 THEN GOSUB 750:GOTO 310
300 GOSUB760
310 PRINT"<cursor down>FILENAME ";CHR$(34);N$;CHR$(34);" OK (Y/N)":GOSUB630
320 IF Y$="N" THEN GOSUB 750
330 OPEN 3,8,3,"@0:"+N$+",S,W"
340 GET#1,Y$:IF ST THEN 360
350 PRINT#3,Y$;:GOTO 340
360 CLOSE 1:CLOSE 3:RETURN
370 Y=6144:OPEN 1,1,0:GOSUB700:IF E=1 THEN GOSUB750:GOTO390
380 GOSUB760
390 PRINT"<cursor down>FILENAME ";CHR$(34);N$;CHR$(34);" OK (Y/N)":GOSUB630
400 IF Y$="N" THEN GOSUB 750
410 GET#1,Y$:IF ST THEN 460
420 IF Y$="" THEN Y$=CHR$(0)
430 POKEY,ASC(Y$)
440 IF Y<40959 THEN Y=Y+1:GOTO410
450 PRINT"<cursor down>FILE TOO BIG. ONLY 34K COPIED."
460 CLOSE 1
470 GOSUB 490
480 OPEN 1,1,1,N$:FORI=6144 TO Y:PRINT#1,CHR$(PEEK(I));:NEXTI:CLOSE1:RETURN
490 PRINT"<cursor down>DESTINATION TAPE Y":GOSUB630:IFY$<>"Y"THEN490
500 RETURN
510 GOSUB750:OPEN2,8,2,N$+",S,R":Y=6144
520 GET#2,Y$:IF ST THEN 570
530 IF Y$="" THEN Y$=CHR$(0)
540 POKEY,ASC(Y$)
550 IF Y<40959 THEN Y=Y+1:GOTO520
560 PRINT"<cursor down>FILE TOO BIG. ONLY 34K COPIED"
570 CLOSE 2
580 GOSUB 610
590 OPEN 3,8,3,"@0:"+N$+",S,W":FORI=6144 TO Y:PRINT#3,CHR$(PEEK(I));:NEXTI
600 CLOSE3:RETURN
610 PRINT"<cursor down>DESTINATION DISC Y":GOSUB630:IFY$<>"Y" THEN 610
620 RETURN
630 GETY$:IF Y$="" THEN 630
640 RETURN
650 GOSUB630:IF Y$="T" THEN PRINT" TAPE":GOTO 680
660 IF Y$="D" THEN PRINT" DISC":GOTO680
670 GOTO 650
680 RETURN
690 PRINT"<cursor down>":OPEN1:CLOSE1:GOSUB700:PRINT"<cursor down><reverse on>REWIND TAPE<rev off>":RETURN
700 PRINT"TYPE FILENAME";SPC(10);"BUFFER START":I=PEEK(828):E=0
710 Y$=" PRG ":IF Y=4 THEN Y$=" SEQ "
720 PRINTY$;"<reverse on>";:FORI=833TO1019:X=PEEK(I):IF X<32 OR X>95 THEN X=63:E=1
730 PRINTCHR$(X);:IF I=849 THEN PRINT"<rev off><";
740 NEXTI:PRINT"><reverse on>END<rev off>":RETURN
750 INPUT"<cursor down>FILENAME";N$:N$=LEFT$(N$,16):RETURN
760 N$="":FORI=848TO833STEP-1:X=PEEK(I)
770 IF X=32 AND N$="" THEN 790
780 N$=CHR$(X)+N$
790 NEXTI:RETURN
800 PRINT"<clr>";:OPEN1,8,0,"$0":GET#1,Y$,Y$
810 I=0:GET#1,Y$,Y$,Y$,X$:IF Y$<>"" THEN I=ASC(Y$)
820 IF X$<>"" THEN I=I+ASC(X$)*256
830 PRINTRIGHT$(" "+STR$(I),3;" ";:I=0
840 GET#1,Y$:IF ST THEN 930
850 IF Y$=CHR$(34) THEN I=I+1:PRINT CHR$(34);:GOTO840
860 IF I=0 THEN 840
870 IF I=1 THEN PRINTY$;:GOTO840
880 IF I=2 THEN PRINTTAB(22);:I=I+1
890 IF I=3 AND Y$=" " THEN 840
900 IF Y$<>"" THEN PRINT Y$;:GOTO 840
910 PRINT:GET Y$:IF Y$<>"" THEN GOSUB 630
920 IF ST=0 THEN 810
930 PRINT "BLOCKS FREE":CLOSE 1:GOSUB630:RETURN
940 GOSUB 750:FORI=1 TO LEN(N$):POKE832+I,ASC(MID$(N$,I,1)):NEXTI
950 FORI=833+LEN(N$)TO1019:POKEI,32:NEXTI
960 POKE183,LEN(N$):SYS49244
970 PRINT"<cursor down><reverse on>FILE WILL BE DELETED<rev off>":GOSUB610
980 OPEN15,8,15,"S0:"+N$:CLOSE15
990 POKE183,LEN(N$):SYS49343
1000 RETURN
1010 GOSUB750:FORI=1 TO LEN(N$):POKE832+I,ASC(MID$(N$,I,1)):NEXTI
1020 FORI=833+LEN(N$) TO 1019:POKEI,32:NEXTI
1030 POKE183,LEN(N$):SYS 49244
1040 SYS 49203
1050 RETURN
1060 SYS 49152
1070 GOSUB 490
1080 SYS 49203
1090 RETURN
1100 SYS 49152
1110 GOSUB 700:IF E=1 THEN GOSUB750:GOTO1130
1120 GOSUB760
1130 PRINT"<cursor down>FILENAME ";CHR$(34);N$;CHR$(34);" OK (Y/N)":GOSUB630
1140 IF Y$="N" THEN GOSUB 750
1150 PRINT"<cursor down><reverse on>FILE WILL BE DELETED<rev off>":GOSUB610
1160 OPEN 15,8,15,"S0:"+N$
1170 POKE 183,LEN(N$):SYS 49343
1180 RETURN
d �52,24:�56,24:� Gn �"�BACKUP UTILITY":�"FROM (T/D)";:�650:F$�Y$ fx �" TO (T/D)";:�650:T$�Y$ �� �"DIRECTORY (T/D/?)":�630:� Y$�"D"��800:�130 �� � Y$�"T" � �690:�130 �� �"TYPE P/S";:�630:� Y$��"P" � Y$��"S" � 150 �� FT$�Y$:� " ";FT$ � � F$�"D" � T$�"T" � FT$�"S" � �250:� I � � F$�"T" � T$�"D" � FT$�"S" � �290:� r � � F$�"D" � T$�"D" � FT$�"S" � �510:� � � � F$�"T" � T$�"T" � FT$�"S" � �370:� � � � F$�"D" � T$�"D" � FT$�"P" � �940:� � � � F$�"D" � T$�"T" � FT$�"P" � �1010:� � � F$�"T" � T$�"T" � FT$�"P" � �1060:� B � � F$�"T" � T$�"D" � FT$�"P" � �1100:� H � � l � �750:�2,8,2,N$�",S,R":�1,1,1,N$ � �#2,R$:� ST � 280 � �1,Y$;:�260 � � 2:� 1:� � "�1,1,0:�700:� E�1 � � 750:� 310 � ,�760 � 6�"FILENAME ";�(34);N$;�(34);" OK (Y/N)":�630 @� Y$�"N" � � 750 0J� 3,8,3,"@0:"�N$�",S,W"