0001 ! Written by Tom Cadwallader HPX <46> ! Version 10/22/87 0002 ! Requires disc with volume label ".BACKUP". 0003 ! File #1 on .BACKUP must be RECOVER (by TBC HPX <46>). 0004 ! File #2 on .BACKUP must be ROMCOPY (HP LEX File: NOMAS). 0005 ! After "Memory Lost", COPY RECOVER.BACKUP @ RUN RECOVER. 0006 ! RECOVER will auto-create IRAM and auto-copy files 0007 ! named PORTxDxx.BACKUP to the appropiate port and 0008 ! also will copy all other files on .BACKUP to :MAIN. 0009 ! 0010 ! Includes provisions for setting DATE, TIME, AF, & DELAY. 0011 ! Other custom settings may be added to Line 1240. 0012 ! 0013 ! Since FREE:PORT is not programable and ROMCOPY (incoming) 0014 ! should not be, the DEF KEYs (Lines 1100, 1110, 1120) 0015 ! and PUTs (Line 1190) are used to execute them and 0016 ! then restart the program. If there is a DEF KEY for 0017 ! key "/", it will be lost (see Line 1250). 0018 ! 0019 ! This program and its companion program BACKUP were written 0020 ! using VER$ HP71:1BBBB RCPY:A HPIL:1A. The testing of 0021 ! other combinations is left to the user. 0022 ! 0023 ! Companion program BACKUP will auto-copy IRAM to files on 0024 ! .BACKUP named PORTxDxx and also will copy all :MAIN 0025 ! files to .BACKUP. 0050 ! 0100 ! The only LEX File required is ROMCOPY.BACKUP (HP NOMAS). 0500 ! 1000 DESTROY ALL @ CALL RECOVER(C,D$,P,P$,R,R$,S) 1010 SUB RECOVER(C,D$,P,P$,R,R$,S) @ ON ERROR GOSUB 1500 1020 F$="TEMPFILE" @ IF R THEN 1160 1030 D$=".BACKUP" @ D=DEVADDR(D$) @ IF D=-1 THEN 1540 1040 IF CAT$(1,D$)[1,7]#"RECOVER" THEN 1550 1050 IF CAT$(2,D$)[1,7]#"ROMCOPY" THEN 1550 1060 INPUT "SETDATE: ","87/10/22";S$ @ SETDATE S$ 1070 INPUT "SETTIME: ","12:34:56";T$ @ SETTIME T$ 1080 INPUT "AF: ","-0000000";T @ DISP AF(T) 1090 INPUT "DELAY: ","0,0";J,K @ DELAY J,K 1100 DEF KEY ‘+’,’FREE:PORT(P)’: @ USER ON 1110 DEF KEY ‘-’,’ROMCOPY R$&D$ TO P$; ROMSIZE=S’: 1120 DEF KEY ‘*’,’CALL RECOVER(C,D$,P,P$,R,R$,S)’: 1130 COPY "ROMCOPY"&D$ @ CREATE TEXT F$ @ ASSIGN #1 TO F$ 1140 FOR C=3 TO INF @ C$=CAT$(C,D$)[1,24] @ IF C$="" THEN 1160 1150 PRINT #1;C$ @ NEXT C 1160 ASSIGN #1 TO F$ @ READ #1,R;R$ @ IF R$[1,4]#"PORT" THEN 1200 1170 R$[6,6]="." @ P=VAL(R$[5,8]) @ P$=":PORT("&R$[5,8]&")" 1180 R=R+1 @ S=VAL(R$[20,24]) @ R$=R$[1,8] @ R$[6,6]="D" 1190 PUT ‘+’ @ PUT ‘-’ @ PUT ‘*’ @ END 1200 NAME DUMMY @ PURGE DUMMY @ PURGE KEYS @ PURGE ROMCOPY 1210 FOR R=R TO C-4 @ READ #1,R;R$ @ R$=R$[1,10] 1220 IF R$[LEN(R$)]=" " THEN R$=R$[1,LEN(R$)-1] @ GOTO 1220 1230 COPY R$&D$ @ NEXT R @ PURGE F$ @ K$="KEYS" @ RENAME K$ TO KEYS 1240 ! 1250 DEF KEY ‘/’,’DESTROY ALL @ DEF KEY "/"’: @ PUT ‘/’ @ END ALL 1500 IF ERRN=57 OR ERRN=59 OR ERRN=64 THEN RETURN ELSE BEEP 1510 IF ERRN=255021 THEN DISP MSG$(255065)&" "&MSG$(22) @ END 1520 IF ERRN=255029 THEN DISP MSG$(255066)&" "&MSG$(66) @ END 1530 DISP ERRM$ @ END 1540 DISP D$&MSG$(232) @ BEEP @ END 1550 DISP MSG$(236)&D$ @ BEEP @ END SUB