(George Source)
Macros used: BC, BS, BUTTON, BXE, BXGE, BXU, COOR1, DCA, DEMMESS, DOWN, ENGMESS, FILECOUNT, FPUT, GETACT, GPERI, HUNTMISB, LINKSET, LOCKC, MENDAREA, MFREE, MFREEW, MHUNTW, MONOUT, OUTNULL, OUTPACK, OUTPARN, OUTTSNS, PAIR, SEG, SEGENTRY, SETREP, SUICIDE, UNLOAD, UNLOCK, 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