Listing of file='@SCTAPEB' on disk='vmedia/731-8015D.wvd.zip'
# Sector 705, program filename = '@SCTAPEB'
0010 REM % @SCTAPEB Program - KKB 03/12/91
0011 REM % Modified for Internal/External Backup Must have OS 1.16x or higher
05/07/91
0012 REM % REL 0.4 05/19/92 ADDED TICKS AND 3BYTE SUPPORT
0013 REM % REL 0.5 05/28/92 CORRECTED MORE THAN A SCREEN
0014 REM % REL 0.5.1 06/04/92 Added select 3 on and validate sectors
0015 REM % REL 0.5.2 REMOVED THE FIRST SCREEN AND DUPLICATE PLATTER PROBLEM.
0016 REM % REL 0.5.3 06/10/92 FIXED ILLEGAL DISK ADDRESS PROBLEM
0017 REM % REL 0.6.0 Tape error traps added 07/08/92
0050 REM % (C) Copyright, Wang Laboratories, Inc., 1992. All rights reserved.
0060 DIM A$(16384)1,B$(32)70,C$(16),D$3,D0$3,D1$3,D2$3,D9$9,E$1,E1$1,F$1,G$8,H
$8,J$1,K$1,M$50,M1$50,M2$50,N$49,M(32),S(32),E(32),T1$80,T$1,U$(8)48,T2$6
,T3$8,T4$4
0070 T$=" "
: P=1
: D$=SELECT DISK
: STR(D$,1,1)="D"
: STR(D$,3,1)="F"
: CONVERT STR(D$,2,1)TO C
: C=C+4
: CONVERT CTO STR(D$,2,1),(#)
: PRINT HEX(0306);
: O=1
: D0$=D$
0071 REM % CHANGE J$="O" FOR OPEN TYPE BACKUP
: J$="W"
0080 G1$=DATE
: D9$=STR(G1$,3,2)&"/"&STR(G1$,5,2)&"/"&STR(G1$,,2)
: SELECT 3OFF
0090 REM % B$() = 70*32 byte directory
: REM 01,49 = name/description
: REM 50,3 = disk address
: REM 53,3 = start address
: REM 56,3 = end address
: REM 59,3 = # blocks
: REM 62,3 = end bytes left
: REM 65,1 = Platter count
: REM 66,1 = backup type
: REM (1),67,1 = Total Platters
0100 REM (1),68,3 = directory ID 'DiR'
: STR(B$(1),68,3)="DiR"
0110 T1$="B a c k u p D i s k P l a t t e r s T o S C S I T a p e"
: PRINT AT(0,40-LEN(T1$)/2);HEX(0E);T1$;HEX(0F);
0120 GOSUB '50("(c) Copyright Wang Laboratories, Inc., 1992"," All rights r
eserved.")
0130 PRINT AT(23,61);"FN/TAB - Exit";AT(22,61);"RETURN - Proceed";
0140 REM % Get The tape and disk addresses
0150 D$=D0$
: PRINT AT(2,12);"Address of SCSI Tape drive (D5F, D6F, or D7F): ";
: LINPUT HEX(0E),-D$
: IF D$="RUN"THEN 150
: $TRAN(D$,"DdBbFf")R
: GOSUB '50(" "," ")
: IF POS("DB"=STR(D$,1,1))<>0AND POS("123567"=STR(D$,2,1))<>0AND STR(D$,3,1
)="F"THEN 160
: GOSUB '50(HEX(0E),"Invalid Address")
: GOTO 130
0160 SELECT #2<D$>
: REM % CHECK IF SCSI CONTROLLER
: GOSUB '50(" "," ")
: GOSUB '60("Getting SCSI Controller status")
: Z=0
: $SCSICONFIGT#2,U$()
: ERRORZ=ERR
0170 FOR X=1TO 8
: IF STR(U$(X),1,1)=HEX(81)AND POS("567"=STR(D$,2,1))<>0THEN DO
: T1$=ALL(20)
: T1$=STR(U$(X),20,28)
: PRINT AT(1,40-LEN(T1$)/2);STR(T1$,1,LEN(T1$));
: X1=1
: END DO
: NEXT X
0180 GOSUB '50(" "," ")
: IF Z<>0THEN GOSUB '60("Not A SCSI Controller")
: IF Z<>0THEN GOTO 130
0185 IF X1<>1THEN GOSUB '60("No Tape Drive")
: IF X1<>1THEN GOTO 130
0190 GOSUB '50(" "," ")
: IF J$="W"THEN 220
0200 REM
: IF J$="O"THEN GOSUB 1640
: GOTO 230
0220 REM % Erase Y/N
: E1$="Y"
: PRINT AT(3,15);"Append to tape (A/a) / Erase tape (Y or N): ";HEX(0E);
: LINPUT -E1$
: IF POS("Aa"=E1$)<>0AND J$="W"THEN GOSUB '50(HEX(06070E),"Append not suppo
rted in WANG Mode")
: T$=E1$
: PRINT HEX(06);
: $TRAN(E1$,"YyNn")R
: IF POS("YN"=E1$)=0THEN 220
: GOSUB '50(" "," ")
0230 IF J$="O"THEN 240
: ELSE GOTO 250
0240 IF POS("Aa"=E1$)<>0THEN GOSUB 1070
0250 REM % PLATTER DATA
: PRINT AT(7,1);"\A0\A0\A0\A0\A0\CE\E1\ED\E5\A0\F4\EF\A0\E2\E5\A0\F0\F5\F4\
A0\E9\EE\A0\D4\E1\F0\E5\A0\C4\E9\F2\E5\E3\F4\EF\F2\F9\A0\A0\A0\A0\A0\A0 \
D0\EC\E1\F4\F4\E5\F2 \A0\D3\F4\E1\F2\F4\A0\A0 \A0\A0\C5\EE\E4\A0\A0\A0 \
A0\A0\A0\CD\E2\A0\A0"
: R=7
: N$=" "
: K=1
: REM IF POS("Ee"=E1$)<>0THEN DO K=1 B$()=" " ENDDO
0260 REM % Directory Data input
0270 A,B,C,D,E,A0=0
: D0$=D1$
0280 D1$=D0$
: Z=0
: PRINT AT(5,4,75);"Address of Disk platter to Backup (blank, if no more):
";
: LINPUT HEX(0E),-D1$
: IF D1$=" "THEN 619
: IF D1$="RUN"THEN 280
0290 GOSUB '50(" "," ")
0300 GOSUB '300(D1$)
: D1$=D2$
: IF D1$="340"THEN 330
0310 IF POS("DB3"=STR(D1$,1,1))<>0AND POS("123567"=STR(D1$,2,1))<>0AND VER(STR
(D1$,3,1),"H")<>0AND D1$<>"D5F"AND D1$<>"D6F"AND D1$<>"D7F"THEN 320
: GOSUB '50(HEX(0E),"Illegal disk platter address")
: GOTO 280
0320 IF POS("3B"=STR(D1$,1,1))=0OR POS("123"=STR(D1$,2,1))=0OR STR(D1$,3,1)<>"
0"THEN 330
: IF STR(D1$,1,1)="3"AND STR(D1$,2,1)<>"4"THEN STR(D1$,3,1)="1"
: STR(D1$,1,1)="D"
0330 SELECT #1<D1$>
: ERRORGOSUB '50(HEX(0E),"Invalid address")
: GOTO 280
0340 REM % Go and verify if a valid disk
: DATA LOAD BMT#1,(0)K$
: ERRORDO
: Z=ERR
: GOSUB 1490
: IF Z>89THEN GOSUB '60(M$)
: END DO
: IF Z<>0THEN GOTO 280
0350 IF K<32THEN 360
: GOSUB '50("Exceeded number of platters allowed","Complete backup, then a
ppend additional platters")
: D1$=" "
: GOTO 280
0360 MAT SEARCHSTR(B$(),50),=D1$TO S1$STEP 70
: IF STR(S1$,1,2)=HEX(0000)THEN 380
0370 PRINT AT(5,4,80);"Platter /";D1$;" already in list. Do you wish it again?
";
: K$="N"
: LINPUT -K$
: IF POS("Yy"=K$)<>0THEN 380
: IF POS("Nn"=K$)<>0THEN 270
0380 REM % Update display
: R=R+1
: IF R<=19THEN 410
0390 PRINT AT(R,72);BOX(0,-6)
: R=7
: PRINT AT(R+1,0,1120);
: R=R+1
0400 PRINT AT(R+1,72);BOX(0,6);
: R=R+1
0410 PRINT AT(R,45);"/";D1$
: N$=D9$
0420 REM
0430 REM % Get Start and end addresses
0440 GOSUB '301
: GOSUB '302
: IF F=1THEN GOSUB '303
0450 G$=BIN(A)
: STR(G$,,1)=STR(G$,,1)ADDHEX(30)
: IF MOD(B,512)<>0THEN B=B+1
: CONVERT BTO H$,(########)
: GOSUB '603(H$)
: H$=L$
: IF B=0THEN DO
: H$="1"
: B=1
: END DO
0460 PRINT AT(5,4,80);"Platter name: ";
: LINPUT HEX(0E),-N$
: PRINT HEX(06);AT(R,1,43);STR(N$,,43);
0470 PRINT AT(5,0,79);AT(5,10);"Starting Sector (default = begining of platter
): ";
: LINPUT HEX(0E),-G$
: CONVERT G$TO A
: ERRORGOTO 470
0480 IF F=1THEN GOSUB 1360
0490 REM VALIDATE SECTOR
: GOSUB '304
: IF A0=0THEN 500
: IF A0<>0THEN GOSUB '50(HEX(07060E),"Invalid Sector")
: GOTO 470
0500 S(K)=A
: IF A>65023THEN SELECT 3ON
0510 PRINT AT(R,53);
: PRINTUSING "########",A;
0520 PRINT AT(5,0,79);AT(5,1);"Ending Sector (default = current end of catalog
ued data): ";
: LINPUT HEX(0E),-H$
: CONVERT H$TO B
: ERRORGOTO 520
0530 IF F=1THEN GOSUB 1370
0540 REM VALIDATE SECTOR
: GOSUB '305
: IF A0=0THEN 550
: IF A0<>0THEN GOSUB '50(HEX(07060E),"Invalid Sector")
: GOTO 520
0550 E(K)=B
: IF B>65023THEN SELECT 3ON
0560 PRINT AT(R,62);
: PRINTUSING "########",B;
: PRINT AT(R,72);BOX(0,-6);AT(R+1,72);BOX(0,6);AT(R,72);
: G=ROUND(((1+B-A)/4096,1)
: PRINTUSING "####.#",G;
: M(K)=G
: M=M+G
0570 PRINT AT(5,0,80);AT(5,4);"Accept this entry Y/N ? ";
: K$="Y"
: LINPUT HEX(0E),-K$
: IF POS("Yy"=K$)<>0THEN 590
: IF POS("Nn"=K$)<>0THEN 580
: ELSE GOTO 570
0580 IF K$="N"OR K$="n"THEN R=R-1
: GOTO 270
0590 C=(B-A)+1
: D=INT((C*256)/16384)
: E=MOD((C*256),16384)
: STR(B$(K),53,3)=BIN(A,3)
: STR(B$(K),56,3)=BIN(B,3)
: STR(B$(K),59,3)=BIN(D,3)
: STR(B$(K),62,3)=BIN(E,3)
0600 STR(B$(K),50,3)=D1$
: STR(B$(K),65,1)=BIN(K)
: STR(B$(K),67,1)=BIN(P)
: STR(B$(K),50,3)=D1$
: STR(B$(K),1,49)=N$
0610 K=K+1
: GOTO 260
0619 IF K<2THEN DO
: GOSUB '50(HEX(06070E),"A minimum of 1 platter is needed for backup")
: END DO
: IF K<2THEN 270
0620 PRINT AT(R+1,72);
: PRINTUSING "####.#",M;
0630 GOSUB '50(" "," ")
: PRINT AT(23,61);"FN/TAB - Exit";AT(22,61);"RETURN - Proceed";HEX(06);
0640 KEYIN K$
: IF POS(HEX(7E7F)=K$)<>0THEN GOSUB '127
: IF POS("Tt"=K$)<>0THEN 3000
: IF K$<>HEX(0D)THEN 640
0645 REM % REMOVE THE REM IN THE NEXT LINE TO ALLOW TIMED BACKUP
0646 REM GOTO 3000
0650 REM % STORE PLATTER COUNT
: P=K-1
: STR(B$(1),67,1)=BIN(P)
0660 GOSUB '50(HEX(0E06),"Rewind Tape")
: $SCSITAPE REWIND T#2,
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Please insert tape")
: GOSUB 8110
: Z=0
: GOTO 660
0670 GOSUB '50(HEX(0E06),"Retension Tape")
: $SCSITAPE RETENSIONT#2
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: Z=0
: GOTO 70
0680 GOSUB '50(HEX(0E06),"Rewind Tape")
: $SCSITAPE REWIND T#2,
: ERRORZ=ERR
: GOSUB 8000
: Z=0
: GOTO 680
0690 IF POS("Yy"=E1$)<>0THEN DO
: GOSUB '50(HEX(0E06),"Erase Tape")
: $SCSITAPE ERASET#2,
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB 8110
: Z=0
: GOTO 70
0691 END DO
0700 GOSUB '50(HEX(0E06),"Rewind Tape")
: $SCSITAPE REWIND T#2,
: ERRORZ=ERR
: GOSUB 8000
: Z=0
: GOTO 700
0710 REM % Write Directory Info to Tape IF 'O' SELECTED
: IF J$="W"THEN DO
: GOSUB '50(HEX(0E06),"Writing Directory...")
: $SCSITAPE WRITET#2,B$()
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB 8110
: Z=0
: GOTO 70
0720 REM % Write tape MARK
: $SCSITAPE WMARKT#2,
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB 8110
: Z=0
: GOTO 70
0721 END DO
0730 $TRAN(T$,"Aa")R
: IF J$="O"AND T$="A"THEN DO
: GOSUB 1280
: END DO
0740 $TRAN(T$,"Aa")R
: IF J$="O"AND T$<>"A"THEN DO
: GOSUB '50(HEX(060E),"Rewind Tape")
: $SCSITAPE REWIND T#2
: END DO
0750 REM % REDISPLAY SELECTION
: R0=7
: K0=1
: PRINT HEX(06);AT(R0+1,0,1120);
: R0=R0+1
: GOSUB 1310
0760 R=8
: FOR Y=OTO P
: A,B,C,D,E=0
0770 A=VAL(STR(B$(Y),53,3),3)
: B=VAL(STR(B$(Y),56,3),3)
: D=VAL(STR(B$(Y),59,3),3)
: E=VAL(STR(B$(Y),62,3),3)
: D1$=STR(B$(Y),50,3)
: SELECT #1<D1$>
: L=A
: F=VAL(STR(B$(Y),66,1))
0780 IF F=1THEN GOSUB 980
: ELSE IF F=0THEN GOSUB 880
0790 PRINT AT(R,0);HEX(0202020E0E960202000E);
: R=R+1
: IF R>19THEN DO
: R=8
: END DO
0800 IF R=8AND R0=8THEN GOSUB 1310
0810 NEXT Y
0820 GOSUB '50(HEX(0E06),"Rewind Tape")
: $SCSITAPE REWIND T#2,
: ERRORZ=ERR
: GOSUB 8000
: Z=0
: GOTO 820
0830 REM this is a spare line
0840 GOSUB '50(HEX(07060E),"Backup Complete")
0850 PRINT AT(23,61);"FN/TAB - Exit";AT(22,61);"RETURN - RE-RUN"
0860 KEYIN K$
: IF POS(HEX(7E7F)=K$)<>0THEN GOSUB '126
: IF K$<>HEX(0D)THEN 860
0870 IF K$=HEX(0D)THEN 60
0880 REM %
0890 REM $SCSITAPEREWINDT#2, $SCSITAPERMARKT#2,(1)
0900 REM % External backup starts here!
0910 GOSUB '70("External Backup in Progress...")
: FOR X=1TO D
: GOSUB '60("Backing up ")
: PRINT HEX(060E20);STR(B$(Y),50,3);" to tape : Block No. ";X;" of";D;HEX(0
F);
0920 DATA LOAD BMT#1,(L,L)A$()
: ERRORZ=ERR
: GOTO 1600
0930 $SCSITAPE WRITET#2,A$()
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB 8110
: Z=0
: GOTO 70
0931 NEXT X
0940 IF E<>0THEN DO
: GOSUB '50(HEX(0E06),"Backing up Last Block ")
: DATA LOAD BMT#1,(L,L)STR(A$(),1,E)
: ERRORZ=ERR
: GOTO 1600
0950 $SCSITAPE WRITET#2,STR(A$(),1,E)
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB 8110
: Z=0
: GOTO 70
0951 END DO
0960 REM % Write next MARK
: $SCSITAPE WMARKT#2,
: ERRORZ=ERR
: GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
: GOSUB '8110
: Z=0
: GOTO 70
0970 RETURN
0980 REM % Internal backup starts here!
0990 GOSUB '70("Internal Backup in Progress...")
1000 GOSUB '60("Backup Platter : ")
: PRINT HEX(060E);D1$;
1010 $SCSITAPE BACKUPT#1,(A,B)
: ERRORZ=ERR
: GOSUB 8000
: Z=0
: GOTO 70
1011 RETURN
1040 DEFFN'302
: REM DECIDE INTERNAL OR EXTERNAL BACKUP
1050 E$=STR(D$,2,1)
: IF E$=STR(D1$,2,1)THEN 1080
: ELSE DO
: E$=E$XOR HEX(04)
: END DO
1060 REM % IF F=0 THEN EXTERNAL BACKUP
1070 REM % IF F=1 THEN INTERNAL BACKUP
1080 F=POS(STR(D1$,2,1)=E$)
1090 STR(B$(K),66,1)=BIN(F)
: RETURN
1100 REM % Even/Odd Check for internal backup
1110 DEFFN'303
1120 IF MOD(A,2)<>0THEN A=A-1
: IF MOD(B,2)<>1THEN B=B+1
: RETURN
1130 IF MOD(B,2)<>1THEN B=B+1
: RETURN
1140 REM %Display NOT SCSI controller
1150 REM % Display Messages at Lower left Corner.
1160 DEFFN'50(M1$,M2$)
: PRINT AT(22,0,79);STR(M1$,,LEN(M1$));AT(23,0,79);STR(M2$,,LEN(M2$));HEX(0
F);
: RETURN
1170 REM % display message at 23,0
1180 DEFFN'60(M$)
: PRINT AT(23,0,79);HEX(060E);STR(M$,,LEN(M$));HEX(0F);
: RETURN
1190 DEFFN'126
1200 DEFFN'127
: SELECT 3OFF
: $CLOSE
: LOAD RUN "@MENU"
1210 DEFFN'70(M$)
: PRINT AT(22,0,79);HEX(060E);STR(M$,,LEN(M$));HEX(0F);
: RETURN
1220 REM % Append starts here!
1230 GOSUB '50(HEX(0E06),"Retension Tape")
: $SCSITAPE RETENSIONT#2
1240 GOSUB '50(HEX(0E06),"Rewind Tape")
: $SCSITAPE REWIND T#2,
: ERRORZ=ERR
: GOSUB '8000
: Z=0
: GOTO 70
1250 GOSUB '50(HEX(060E),"Reading Tape Directory")
: $SCSITAPE READ T#2,B$()
1260 P=VAL(STR(B$(1),67,1))+1
: K=P
: GOSUB '50(" "," ")
: O=P
1270 RETURN
1280 GOSUB '50(HEX(060E),"Rewind Tape")
: $SCSITAPE REWIND T#2
: ERRORZ=ERR
: GOSUB 8000
: Z=0
: GOTO 70
1290 GOSUB '50(HEX(060E),"Positioning the tape to end of data")
: $SCSITAPE EDATAT#2,
1300 RETURN
1310 REM % Redisplay section
: PRINT HEX(06);AT(R,0,1120);
1320 PRINT HEX(06);AT(R0,1,43);STR(B$(K0),1,43);AT(R0,45);STR(B$(K0),50,3);AT(
R0,53);
: PRINTUSING "########",S(K0);
: PRINT AT(R0,62);
: PRINTUSING "########",E(K0);
: PRINT AT(R0,72);BOX(0,-6);AT(R0+1,72);BOX(0,6);AT(R0,72);
: PRINTUSING "####.#",M(K0);
: M1=M1+M(K0)
1330 R0=R0+1
: K0=K0+1
: IF R0>19THEN DO
: R0=7
: R0=R0+1
: END DO
1340 IF R0=8THEN RETURN
1350 PRINT AT(R0,72);
: PRINTUSING "####.#",M1;
: IF K0=KTHEN RETURN
: GOTO 1320
1360 IF MOD(A,2)<>0THEN A=A-1
: RETURN
1370 IF MOD(B,2)<>1THEN B=B+1
: RETURN
1380 REM % VERIFY IF VALID START SECTOR ON THE SOURCE DISK
1390 DEFFN'304
: A0=0
: VERIFY T#1,(A,A)A0
: RETURN
1400 REM % VERIFY IF VALID END SECTOR ON THE SOURCE DISK
1410 DEFFN'305
: VERIFY T#1,(B,B)A0
: RETURN
1420 DEFFN'300(D2$)
1430 $TRAN(D2$,"AaBbCcDdEeFf")R
: RETURN
1440 REM % Deffn'301 get start and end sector numbers
1450 DEFFN'301
: DATA LOAD BA T#1,(0)C$()
: ERRORZ=ERR
: GOSUB 1490
: GOSUB '60(M$)
: Z=0
: RETURN
1460 IF STR(C$(),1,1)<HEX(02)THEN DO
: A=0
: B=(VAL(STR(C$(),3,2),2))-1
: END DO
1470 IF STR(C$(),1,1)=HEX(02)THEN DO
: A=0
: B=(VAL(STR(C$(),4,3),3))-1
: END DO
1475 IF A=0AND B=-1THEN GOSUB '50(HEX(060E),"Index not found on the platter")
1480 RETURN
1490 REM % Error Subroutine
1500 CONVERT ZTO K$,(##)
1510 ON POS(HEX(9195939698)=K$)GOTO 1520,1530,1540,1550,1560
1520 M$="ERROR I91: Disk Drive Not Ready"
: GOTO 1570
1530 M$="ERROR I95: Device Error"
: GOTO 1570
1540 M$="ERROR I93: Format Error"
: GOTO 1570
1550 M$="ERROR I96: Data Error"
: GOTO 1570
1560 M$="ERROR I98: Illegal Sector Address or No Platter"
: GOTO 1570
1570 RETURN
1580 REM % Left Justify Subroutine
1590 DEFFN'603(L$)
: L$=STR(L$,(POS(L$<>"0")-0))
: RETURN
1600 GOSUB '50(HEX(07060E),"Disk Error - Tape Backup Aborted")
: PRINT AT(23,61);"FN/TAB - Exit";AT(22,61);"RETURN - Proceed"
1610 KEYIN K$
: IF POS(HEX(7E7F0D)=K$)<>0THEN 1620
: GOTO 1610
1620 IF K$=HEX(0D)THEN 110
1630 IF POS(HEX(7E7F)=K$)<>0THEN 1200
1640 REM % 'O' TYPE BACKUP FOR RAW TYPE BACKUP
1650 PRINT AT(3,28);"Backup Type Wang/Open (W/O) : ";HEX(0E);
: LINPUT -J$
: $TRAN(J$,"WwOo")R
: IF POS("WO"=J$)=0THEN 1650
1660 REM % APEND OR Erase A/E
: E1$="Y"
: PRINT AT(3,15,60);"Append to tape (A/a) / Erase tape (Y or N): ";HEX(0E);
: LINPUT -E1$
: IF POS("Aa"=E1$)<>0AND J$="W"THEN GOSUB '50(HEX(06070E),"Append not suppo
rted in WANG Mode")
: T$=E1$
: PRINT HEX(06);
: $TRAN(E1$,"NANaYyNn")R
: IF POS("YN"=E1$)=0THEN 1660
1670 IF E1$="A"THEN E1$="N"
: RETURN
3000 REM % THE TIMED BACKUP ROUTINE
3010 T2$=TIME
: T3$=STR(T2$,1,2)&":"&STR(T2$,3,2)&":"&STR(T2$,5,2)
3020 PRINT AT(5,4,75);"Time Now is : ";T3$;" Please Enter time for backup to S
TART : ";HEX(0E);
: LINPUT -STR(T3$,1,5)
3030 T4$=STR(T3$,1,2)&STR(T3$,4,2)
: GOSUB '50(HEX(02050F),"Timed Backup - Waiting for set time ")
3040 T2$=TIME
: IF STR(T2$,1,4)>=STR(T4$,1,4)THEN 3050
: $BREAK255
: GOTO 3040
3050 GOTO 650
8000 GOSUB '50(HEX(06070E),"Tape error - Backup aborted")
8110 PRINT AT(23,61);"FN/TAB - Exit";AT(22,61);"RETURN - Proceed"
8120 KEYIN K$
: IF POS(HEX(0D)=K$)<>0THEN 8130
: GOTO 8120
8130 RETURN
9000 STOP #
9010 DEFFN'14HEX(0E)
9020 DEFFN'15HEX(0F)
9999 DEFFN'31
: RESAVE T"@SCTAPEB"