{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: RESTOREA866)}}
====== RESTOREA866 ======
(George Source)
**Macros used:** [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BUTTON|BUTTON]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXU|BXU]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DEMMESS|DEMMESS]], [[george:macro:DOWN|DOWN]], [[george:macro:ENGMESS|ENGMESS]], [[george:macro:FILECOUNT|FILECOUNT]], [[george:macro:FPUT|FPUT]], [[george:macro:GETACT|GETACT]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:OUTNULL|OUTNULL]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPARN|OUTPARN]], [[george:macro:OUTTSNS|OUTTSNS]], [[george:macro:PAIR|PAIR]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP|SETREP]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:UNLOAD|UNLOAD]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UP|UP]]
22FL ... SEG RESTOREA,864,PETER CAMPBELL,RESTORE
22^= #
23DW SEGENTRY K1RESTOREA,X1RESTOREA
23YG SEGENTRY K2RESTOREA,X2RESTOREA
24D6 SEGENTRY K3RESTOREA,X3RESTOREA
24XQ SEGENTRY K4RESTOREA,X4RESTOREA
257J ... SEGENTRY K5RESTOREA,X5RESTOREA
25CB #
25X2 # THIS SUBROUTINE IS USED IN THE RELEASE VERSION OF GEORGE 3
26BL # IT ASKS FOR THE LATEST INCREMENT NUMBER FROM WHICH TO RESTORE
26W= # THE ONLINE FILESTORE
27*W # IT WSES THE EMS BLANKET ACTIVITY WHICE WILL WAKE UP ACTIVITIES
27TG # WAITING FOR INPUT EITHER FROM THE CONSOLE OR FROM A MAGNETIC TAPE
28*6 # ENGAGE BUTTON
28SQ #
294J ...REST5 PAIR RESTOREA,5
29#B MCANTDO 8HCANTDO
29S2 MCD 4HCD
2=?L ONEOF 8HONE OF
2BN= #
2C7W ...# ******************************************************************
2CMG #
2D76 # THE FOLLOWING SUBROUTINE EXAMINES THE REPLY IN A CONBUFF EMSIN
2DLQ # IT EXITS +0 IF THE REPLY IS NEITHER CD NOR CAMTDO
2F6B # IT EXITS +1 IF THE REPLY IS CD OR CANTDO
2FL2 # IT USES X4 AS THE LINK ACCUMULATOR
2G5L REPLYCD [
2GK= SBX 4 FX1
2H4W MHUNTW 3,CONBUFF,EMSIN
2J46 LDX 6 A1(3) [X6= NO. OF CHARS. IN REPLY
2JHQ QSPACE
2K3B SBN 6 1
2KH2 BNG 6 XNCD [J IF NO NON-SPACE CHARS. IN REPLY
2L2L LDCH 0 A1+1(3)
2LG= SBN 0 #20
2L^W BCHX 3 £
2MFG BZE 0 QSPACE [J IF LEADING SPACE CHAR.
2M^6 ADN 0 #20
2NDQ LDN 2 ACOMMUNE1(2)
2NYB LDN 5 6 [MOVE 6 CHARS. FROM REPLY
2PD2 QDCH
2PXL DCH 0 0(2) [INSERT CHARS. IN ACOMMUNE1 & 2
2QC= LDCH 0 A1+1(3)
2QWW SBN 6 1 [REDUCE COUNT OF CHARS. REMAINING
2RBG BCHX 2 £
2RW6 BCHX 3 £
2S*Q BCT 5 QDCH [J IF MORE TO MOVE
2STB ADN 6 1
2T*2 LDX 2 FX2
2TSL LDX 0 ACES
2W#= LDX 3 ACOMMUNE1(2) [X3= SIGNIFICANT 1ST WORD OF ENTRY
2WRW BNG 6 QTESTCD [J IF <6 SIGNIFICANT CHARS.
2X?G LDX 5 ACOMMUNE2(2) [X5= SIGNIFICANT 2ND WORD OF REPLY
2XR6 DSA 0 5
2Y=Q BXU 5 MCANTDO+1(1),QTESTCD [J IF NO MATCH
2YQB BXE 3 MCANTDO(1),QCD [J IF CANTDO COMMAND
2^=2 QTESTCD
2^PL ADN 6 4
329= BNG 6 XNCD [ERROR IF <2 SIGNIFICANT CHARS. IN RE
32NW DSA 0 3
338G BXE 3 MCD(1),QCD [J IF CD COMMAND
33N6 XNCD
347Q MONOUT GRCOMWR ["WRONG COMMAND" MESSAGE
34MB ... SBN 4 1 [ ADJUST LINK TO EXIT 4 0
3572 QCD
35LL MFREE CONBUFF,EMSIN [
366= ADX 4 FX1
36KW EXIT 4 1 [ REPLY CANTDO
375G #
37K6 ...# ******************************************************************
384Q #
38JB # THE FOLLOWING SUBROUTINE EXAMINES THE CONBUFF EMSIN
3942 # IT EXITS +2 IF THE REPLY IS "Y"
39HL # IT EXITS +1 IF THE REPLY IS "N"
3=3= # IT EXITS +0 IF THE REPLY IS NEITHER
3=GW # IT USES X4 AS A LINK ACCUMULATOT
3?2G REPLYYES [
3?G6 SBX 4 FX1
3?^Q MHUNTW 3,CONBUFF,EMSIN
3#^2 YSPACE
3*?C ... LDCH 0 A1+1(3) [ PICK UP NEXT CHAR.
3*KS ... BCHX 3 £ [ MOVE POINTER
3*Y= SBN 0 #20 [
3BCW BZE 0 YSPACE [ IGNORE LEADING SPACES
3BXG SBN 0 #56-#20 [
3CC6 BZE 0 XITN [ JUMP IF "N"
3CWQ SBN 0 #71-#56 [
3DBB BZE 0 XITY [ JUMP IF "Y"
3DW2 MONOUT GRCOMWR [ COMMAND NOT RECOGNISED
3F*L ... SBN 4 1 [ ADJUST LINK TO EXIT 4 0
3FT= XITN
3G#W ... SBN 4 1 [ ADJUST LINK TO EXIT 4 1
3GSG XITY
3H#6 MFREEW CONBUFF,EMSIN
3HRQ ADX 4 FX1
3J?B EXIT 4 2 [ "Y"
3JH8 ...# ******************************************************************
3JR2 X1RESTOREA
3K=L
3L9W DEMMESS GRINC [ASK INCREMENT? AND WAIT FOR REPLY
3P7L # THE SEGMENT MAY HAVE BEEN WAKENED BY AN ENGAGE BUTTON ON
3PM= # THE DECK BEING PRESSED BEFORE THE CONSOLE "ACCEPT" KEY
3Q6W #
3QLG X2RESTOREA
3R66 MHUNTW 3,CONBUFF,EMSIN
3RKQ ... BNG 3 X1RESTOREA [ JUMP IF NO CONBUFF EMSIN #
3S5B ...# HAPPENS IF BACKMAP GOES DOWN TO THE WRONG ENTR
3S7^ ...#UNS AMTGR
3S=J ...(
3S*7 ... BS ,BGENRES
3SCQ ... BS ,BFREEBS
3SG* ...)
3SK2 LDN 7 0 [CLEAR INCREMENT NO.
3T4L LDN 5 10
3TJ= LDX 4 A1(3) [X4= NO. OF CHARS. IN REPLY
3W3W BZE 4 XERR [ERROR IF NONE
3WHG ...PNEXTCH [ CONSTRUCT INC NO
3X36 LDCH 0 A1+1(3) [X0= NEXT CHAR.
3XGQ BXGE 0 5,PNNUM [J IF NOT NUMERIC
3Y2B MPA 7 5 [NO. X 10 + CHAR
3YG2 BNZ 7 XERR [J IF NUMBER TOO LARGE
3Y^L LDX 7 0 [X7= ACCUMULATED NO.
3^F= PUPCH
3^YW BCHX 3 £
42DG BCT 4 PNEXTCH [J IF MORE CHARS.
42Y6 BZE 7 XERR [ERROR IF ZERO
43XB STO 7 JINCLAST [REMEMBER INCREMENT NO.
44C2 MFREEW CONBUFF,EMSIN
44LS ...NEWTAPE
44WL LDN 4 5 [TYPE = 5 (MT)
45B= BUTTON 3,4 [SEE IF ANY DECK ENGAGED
46*G BPZ 3 RENG [J IF THERE IS ONE
46T6 QMESS
474Y ... LDN 4 5
47#Q OUTPACK 7,1,INCNUM [INCR. NO. AS PARAMETER
48#2 ENGMESS GRENGINC,3,4 [ASK FOR TAPE TO BE ENGAGED
4?PB BPZ 3 RENG [J IF MT ENGAGED
4#92 CALL 4 REPLYCD [ TEST REPLY
4#NL BRN QMESS [ NOT RECOGNISED - ASK FOR TAPE AGAIN
4*8= BRN X1RESTOREA [ CANTDO - ASK INCREMENT ?
4*MW PNNUM
4B7G SBN 0 #20
4BM6 BNZ 0 XERR [ERROR IF NOT SPACE
4C6Q BZE 7 PUPCH [J IF LEADING SPACE
4CLB XERR
4D62 MONOUT GRNUMFORM [ERROR MESSAGE IF :
4DKL [1. NO CHARS. IN MESSAGE
4F5= [2. CHAR. NOT NUMBER OR SPACE
4FJW [3. SPACE CHAR. NOT A LEADING SPACE
4G4G [4. NUMBER TOO LARGE (I.E. OVERFLOW)
4GJ6 [5. NUMBER IS ZERO
4H3Q MFREEW CONBUFF,EMSIN
4HHB BRN X1RESTOREA [ BACK TO ASK INREMENT
4J32 RENG
4JGL STO 3 CPPTR(2) [LINK THIS ACT. WITH DECK ENGAGED
4K2= DOWN RESTOREG,1
4KFW UP
4K^G BRN XCLEANUP [ERROR SO CLEANUP
4LF6 #
4LYQ # ENTRY IS MADE TO VARIOUS POINTS IN BACKMAP IN ORDER TO CLEAN UP
4MDB # THE FILESTORE. AFTER THIS IS COMPLETED A BRANCH IS MADE BACK
4MY2 # TO THE START OF RESTOREA
4NCL #
4NX= XCLEANUP
4PBW #
4PWG CALL 4 UNLOAD [ UNLOAD TAPE
4QB6 ... BRN NEWTAPE [J TO START OF RESTOREA
4S#L #
4SS= # SUBROUTINE TO UNLOAD TAPE
4T?W #
4TRG UNLOAD
4W?6 LDX 2 FX2
4WQQ SBX 4 FX1
4WRT ...#
4WSY ...# SET UP ACTIVITY TO UNLOAD TAPE
4WW3 ...#
4WX6 ... GETACT ACTDOC,,1
4WY9 ... LDX 3 CPPTR(2)
4W^# ... LDX 2 BPTR(2) [ POINTS TO ACTDOC
4X2C ... STO 3 CPPTR(2)
4X3G ... LINKSET 2,REST5(1) [ GIVE IT LINK TO RESTOREA,5
4X4K ... FPUT 2 [ AND SET IT GOING
4X5N ... ADX 4 FX1
4X6R ... EXIT 4 0 [ AND BACK TO CALLING SEGMENT
4X7W ...#
4X8^ ...X5RESTOREA
4X=B LDN 0 9
4XQ2 DCA ,STO,0,MODE [SET "REWIND & DE-ALLOCATE" MODE
4Y7B ... LOCKC 2,£ [ LOCK THE ACTIVITY
4YJQ ... GPERI ,2
4^26 ... COOR1
4^CG ... UNLOCK 2
4^SW ... SUICIDE [ TAPE SAFELY UNLOADED SO SUICIDE
52== ...#
52MQ #
537B #
53M2 # ENTRY POINT FTO UNLOAD TAPE
546L X4RESTOREA
54L= CALL 4 UNLOAD
555W UP
55KG ...# ******************************************************************
5656 # SFRESTUSER3
56JQ ...# ***********
574B # (LINK = X1 )
57J2 # SUBROUTINE TO SEARCH FOR FRESTUSER
583L #
58H= SFRESTUSER3
592W HUNTMISB 3,FI,FRESTUSER [
59GG BNG 3 (GEOERR) [BREAK IF NOT THERE
5=26 EXIT 1 0 [ OTHERWISE EXIT
5=FQ #
5=^B #
5?F2 ...# ********************************************************************
5?YL #
5#D= # HERE FOLLOWS THE CODE FOR PARTIAL RESTORE
5#XW #
5*CG X3RESTOREA
5*GL ...#UNS AMTGR
5*KQ ...(
5*NW ... BC ,BGENRES
5*S2 ...)
5*X6 FILECOUNT 3 [ COUNT OF NUMBER OF FILES OPEN
5BBQ ... STO 3 AWORK2(2) [ STORE -VE COUNT IN AWORK2
5BWB #
5CB2 # IS A TAPE ALREADY LOADED ?
5CTL #
5D*= CALL 1 SFRESTUSER3 [ FIND FRESTUSER
5DSW LDX 5 FRTSN(3) [ TSN OF TAPE IF ANY
5F#G BZE 5 NOTAPE [ JUMP IF NO TAPE
5FS6 #
5G?Q # IS THE TAPE SUITABLE
5GRB #
5H?2 MHUNTW 2,FILE,APROC
5HQL LDX 0 AMTS(2) [ CONT OF NUMBER OF TAPES SUITACLE
5J== NEXTTSN
5JPW ... BXE 5 AMAG(2),RESTOREG2B [ JUMP IF A TAPE LOADED WILL DO
5K9G ADN 2 INCMAGLEN [ OTHERWISE TRY NEXT TAPE
5KP6 BCT 0 NEXTTSN
5L8Q #
5LNB # UNSUITABLE TAPE SO UNLOAD IT
5M82 #
5M*8 ... STOZ FRLST(3)
5MGB ... STOZ FRTSN(3) [ MARK AS UNLOADED
5MML CALL 4 UNLOAD [ REWIND AND UNLOAD
5N7= #
5NLW # ASK FOR TAPE TO BE LOADED
5P6G #
5PL6 NOTAPE [
5PP= ...# SEE IF TAPE IS LOADED BEFORE ASKING FOR IT
5PSB ... LDN 4 5 [ MT - TYPE 5
5PXG ... BUTTON 3,4 [
5Q2L ... BPZ 3 RESTOREG2 [ JUMP IF ENGAGED
5Q5Q MHUNTW 2,FILE,APROC
5QKB LDX 0 AMTS(2) [ NO OF MTS
5R52 SBN 0 1
5RJL BNZ 0 TAPE1 [ JUMP IF MORE THAN ONE TAPE
5S4= OUTNULL [ NULL PARAMETER IF ONE TAPE
5SHW BRN TAPE2
5T3G TAPE1
5T?# ... LDX 1 FX1
5TH6 LDN 0 ONEOF(1) [ "ONE OF " OUTPUT IF SEVERAL TAPES
5TTH ... LDX 2 FX2
5W7Y ... LDN 1 ACOMMUNE2(2) [
5WGB MOVE 0 2
5X22 OUTPARN 7,ACOMMUNE2 [
5XFL TAPE2
5X^= OUTTSNS [ GIVE LIST OF TSNS
5Y94 ... LDN 4 5 [ DEVICE TYPE 5 (*MT)
63BL ENGMESS GRPRTAPEREQ,3,4
63W= #
64*W #
64TG BPZ 3 RESTOREG2 [ IF A TAPE HAS BEEN LOADED
65*6 # GO DOWN TO RESTOREG2
65SQ CALL 4 REPLYCD [ OTHERWISE CHECK REPLY
66#B BRN NOTAPE [ NOT RECOGNISED - REPEAT REQUEST
66S2 #
67?L # REPLY CANTDO TO REQUEST TO LOAD MT
67R= #
68=W # ASK DO YOU WISH TO ERASE %A?
68QG #
69=6 REFUSED
69PQ ... DOWN BMQUESTB,8
6=9B ...# GO DOWM TO CHECK IF WE CAN ERASE THIS USER
6FHQ SETREP NOTUP [
6G3B UP
6GH2 RESTOREG2
6GLX ... LDX 2 FX2
6GQS ... STO 3 CPPTR(2) [ STORE POINTER TO DEVICE LIST
6GWP ...RESTOREG2B
6H2L DOWN RESTOREG,2 [ TAPE LOADED - TRY RESTORE
6H48 ... BRN RESTORED [
6H5Q ... CALL 1 SFRESTUSER3
6H7# ... STOZ FRLST(3)
6H8W ... STOZ FRTSN(3)
6H=D ...# SHOW NO USEABLE TAPE LOADED
6H#2 ... BRN X3RESTOREA [ TRY AGAIN
6H*J ...RESTORED
6HC6 ... SETREP OK [ SET REPLY FOR BACKMAP
6HDN ... UP [ AND UP
6HG= MENDAREA 20,K99RESTOREA
6H^W #
6JFG #END
^^^^ ...714217430001