1000 ! DTBACK -- WILL COPY A LARGE MASTER FILE ONTO SEVERAL ! DECTAPES. ANY PORTION OF THE FILE (IN 530 BLOCK ! SEGMENTS) MAY BE COPIED. 1010 ! IT IS ASSUMED THAT TAPES ARE TO BE USED ONLY FOR ! THE BACKUP; EACH TAPE WILL BE ZEROED BY THE PROGRAM ! BEFORE COPY TAKES PLACE. 1020 ! IF THE USER ATTEMPTS TO COPY A SHORT FILE (LESS THAN ! 260 BLOCKS), HE IS CHAINED TO $PIP. 1030 ! 10-AUG-74 J. WARDEN WABASH COLLEGE 1040 PRINT"MULTI-TAPE FILE BACKUP PROGRAM" 1050 DIM M%(30%) 1060 L$(I%)=CHR$(48%+I%) FOR I%=0% TO 9% 1070 PRINT : PRINT"FILE TO BE BACKED UP"; : INPUT LINE F1$ 1080 F1%=ASCII(RIGHT(F1$,LEN(F1$))) : IF F1%=13% OR F1%=10% THEN F1$=LEFT(F1$,LEN(F1$)-1%) : GO TO 1080 1090 F%=INSTR(1%,F1$,":") : IF F% THEN F2$=RIGHT(F1$,F%+1%) ELSE F2$=F1$ 1100 F%=INSTR(1%,F2$,".") : IF F% THEN F2$=LEFT(F2$,F%-1%) 1110 F%=INSTR(1%,F2$,"[") : IF F% THEN F2$=LEFT(F2$,F%-1%) 1120 IF LEN(F1$) > 20% THEN &"** RETYPE **" : GO TO 1070 1130 OPEN F1$ FOR INPUT AS FILE 1% 1140 FIELD #1%,510% AS A$ 1150 CHANGE SYS(CHR$(6%)+CHR$(-8%)+CHR$(1%)) TO M% : L%=M%(7%)+SWAP%(M%(8%)) 1160 T%=(L%-1%)/530% + 1% 1170 IF L%<260% THEN PRINT : PRINT "THIS FILE WILL OCCUPY LESS THAN HALF A TAPE;" : PRINT "BETTER TO USE PIP:" : PRINT "(* DTN:";F2$;" < ";F1$;" /BL )" : PRINT : CHAIN"$PIP" 1180 IF T%=1% THEN PRINT : PRINT "1 TAPE IS REQUIRED FOR BACKUP" : GO TO 1200 1190 PRINT : PRINT L$(T%);" TAPES ARE REQUIRED FOR BACKUP" 1200 PRINT : INPUT"START WITH TAPE NUMBER (=1)";T1% 1210 T1%=1% IF T1%<=0% : GO TO 1200 IF T1%>T% 1220 PRINT 1230 FOR I%=T1% TO T% 1240 PRINT"TAPE";I%;"IS READY ON DRIVE (0 OR 1)"; : INPUT T$ 1250 IF T$="0" THEN T$="DT0:" ELSE IF T$="1" THEN T$="DT1:" ELSE PRINT"ANSWER '0' OR '1' PLEASE" : GO TO 1240 1260 ON ERROR GO TO 1370 1270 GOSUB 1440 1280 OPEN T$+F2$+"."+L$(I%) FOR OUTPUT AS FILE 2% 1290 FIELD #2%, 510% AS B$ 1300 J%=530%*(I%-1%)+1% : K%=J%+529% 1310 IF T%=I% THEN K%=L% 1320 FOR B%=J% TO K% : GET #1%, RECORD B% : LSET B$=A$ : PUT #2% : NEXT B% 1330 CLOSE 2% 1340 OPEN T$+F2$+"."+L$(I%) FOR INPUT AS FILE 2% : CLOSE 2% ! REWIND THE TAPE 1350 PRINT T$+F2$+"."+L$(I%);" COMPLETED" : PRINT 1360 GO TO 1410 1370 RESUME 1380 1380 PRINT : PRINT" ** OPERATION ABORTED **" : PRINT CHR$(9%);SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)) : PRINT 1390 E%=E%+1% : IF E%>20% THEN 1480 1400 CLOSE 2% : GO TO 1240 1410 NEXT I% 1420 PRINT"BACKUP COMPLETE" : CLOSE 1% : GO TO 1500 1430 STOP 1440 ! DECTAPE ZERO ROUTINE 1450 CHANGE SYS(CHR$(6%)+CHR$(-10%)+T$) TO M% 1460 M%(1%)=6% : M%(2%)=13% : CHANGE M% TO M$ : M$=SYS(M$) 1470 RETURN 1480 PRINT : PRINT"** TOO MANY ERRORS **" : PRINT"PROGRAM ABORTED" 1490 ON ERROR GO TO 0 : CLOSE 1% 1500 END