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 ! CALL BACKUP(1) purges .BACKUP files #3 to N and auto- 0006 ! copies IRAM to files named PORTxDxx where xDxx is 0007 ! the source PORT and also copies :MAIN to files 0008 ! #(PORTnDnn +1) to N. 0009 ! CALL BACKUP(2) purges .BACKUP files #(PORTnDnn +1) to N 0010 ! and also copies :MAIN to files #(PORTnDnn +1) to N. 0011 ! CALL BACKUP(3) or RUN BACKUP purges no .BACKUP files 0012 ! and copies :MAIN to files #(PORTnDnn +1) to N; 0013 ! that is, overwrites or replaces :MAIN files that 0014 ! are on .BACKUP and adds new :MAIN files. 0015 ! 0016 ! Companion program RECOVER will auto-create IRAM and auto- 0017 ! copy files named PORTxDxx to the appropiate port and 0018 ! also will copy all other files on .BACKUP to :MAIN. 0019 ! 0020 ! If individual PORTxDxx files are ROMCOPYed back to IRAM 0021 ! manually, the syntax must be ........................ 0022 ! ROMCOPY PORTxDxx.BACKUP TO :PORT(x.xx); ROMSIZE=SSSSS 0023 ! where SSSSS=filesize (eg, 32768), else "Verify Fail". 0024 ! 0025 ! Requires REV$ and RTRIM$ in STRINGLX and MSG$ in CUSTUTIL. 0050 ! ROMCOPY (HP NOMAS) must also be copied from .BACKUP. 0100 ! 0500 ! 1000 CALL BACKUP(3) @ SUB BACKUP(B) @ ON ERROR GOSUB 1500 1010 D$=".BACKUP" @ D=DEVADDR(D$) @ IF D=-1 THEN 1540 1020 IF CAT$(1,D$)[1,7]#"RECOVER" THEN 1550 1030 IF CAT$(2,D$)[1,7]#"ROMCOPY" THEN 1550 1040 IF CAT$(1)="" THEN CREATE TEXT RAMEMPTY @ R=1 1050 K$="KEYS" @ RENAME KEYS TO K$ @ NAME WORKFILE 1060 ON B GOTO 1100,1200,1300 1100 F=3 @ GOSUB 1400 1110 L=HTD(ADDR$(CAT$(1)))-HTD("2F9E6") @ IF R THEN PURGE RAMEMPTY 1120 DIM T$[L] @ T$=PEEK$("2F9E6",L) 1130 T$=T$[HTD(REV$(T$[3,5]))+6] @ T$=T$[6,HTD(REV$(T$[3,5]))+5] 1140 FOR T=1 TO LEN(T$)/10 @ FIX 2 @ IF T$[8,8]#"0" THEN 1190 1150 P$=":PORT("&STR$(HTD(T$[3,3])+HTD(T$[2,2])*.01)&")" 1160 R$="PORT"&T$[3,3]&"D"&STR$(HTD(T$[2,2])*.01)[3] 1170 STD @ S=2^(15-HTD(T$[4,4]))*(HTD(T$[9,9])+1)*1024/2 1180 DISP P$&" = "&R$ @ ROMCOPY P$ TO R$&D$; ROMSIZE=S 1190 T$=T$[11] @ NEXT T @ GOTO 1300 1200 FOR F=3 TO INF @ F$=CAT$(F,D$)[1,4] 1210 IF F$#"PORT" THEN GOSUB 1400 @ GOTO 1300 1220 NEXT F 1300 FOR C=1 TO INF @ C$=CAT$(C)[1,22] @ IF C$="" THEN 1320 1310 DISP C$ @ COPY C$[1,8] TO D$ @ NEXT C 1320 RENAME K$ TO KEYS @ DISP @ END 1400 FOR E=1 TO INF @ E$=RTRIM$(CAT$(F,D$)[1,10]) 1410 IF E$="" THEN PACK D$ @ RETURN 1420 PURGE E$&D$ @ NEXT E @ END 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