16 22FL ... SEG RESTLIMB,864,BRIAN MATTHEWS,RESTORE 4 22_= # 12 23DW SEGENTRY K1RESTLIMB,X1RESTLIMB 12 23NN ... SEGENTRY K2RESTLIMB,X2RESTLIMB 4 23YG # 21 24D6 # THE PURPOSE OF THIS SEGMENT IS TO RESTORE TO ONLINE FILESTORE,FROM 18 24XQ # AN INCREMENT DUMP TAPE,A BRANCH OF THE FILESTORE TREE. 21 25CB # ENTRIES K1RESTLIMB -ENTRY FROM RESTOREG - TO RESTORE THE WHOLE OF 18 25X2 # THE FILESTORE TREE UNDER MASTER. 8 26BL # STATE ON ENTRY 10 26W= # K1RESTLIMB 20 27*W # A MAGNETIC TAPE HAS BEEN ENGAGED AND IS POSITIONED 20 27TG # IMMEDIATELY AFTER THE SFS IMMEDIATELY AFTER MASTER 15 28*6 # THE BS BLOCKS HAVE BEEN MAPPED 18 28SQ # THE BS BLOCKS ARE AVAILABLE IN A BSTB/FULLB 14 29#B # METHOD DEPENDENT ON FORMAT OF TAPE 16 29S2 # WHEN SFS IS READ A FILE IS ^OPENED^ 19 2=?L # WHEN DATA BLOCKS ARE READ THEY ARE WRITTEN TO BS 16 2=R= # WHEN EFS IS READ TOP FILE IS ^CLOSED^ 19 2?=W # WHEN 2ND EFS IS READ RESTMERG IS ENTERED TO MERGE 19 2?QG # DIRECTORY WITH 'ENTRIES' APPENDED TO TOP FILE 20 2#=6 # WHEN A TERMINAL DIRECTORY IS READ EACH ENTRY IN IT IS 15 2#PQ # ALTERED TO SHOW NO COPY ONLINE 10 2*9B # K1RESTLIMB 19 2*P2 # WHEN ROUTINE DETERMINES FROM FORMAT OF TAPE THAT 16 2B8L # BRANCH HAS BEEN RESTORED IT EXITS 12 2BN= # EXIT UP NORMAL RETURN 17 2C7W # ANY ANOMALY CAUSES ENTRY INTO RESTERR SEGMENT 4 2CMG # 17 2D76 # X4 IS USED AS A FLAG FOR INDEX RECORDS AND 13 2DLQ # ]UST NOT BE CORRUPTED 20 2F6B # X4 = +VE INDICATES RE-ENTRY FROM RESTMERG 14 2FL2 # X4 = 0 OTHERWISE 9 2G5L MASK1 #2000000 18 2GK= MASK2 #220000 [TO SET B7 & B10 OF COMM 9 2H4W MASK3 #77777 6 2H=4P...#SKI IFS<1$1 4 2HC=P...( 4 2HJG STYP 7 2J46 #HAL FILE+FCB,0 4 2J?YP...) 8 2JHQ WORD +0 8 2K3B XIT +0 8 2KH2 MC1 4HC1 9 2KQS ...TAPEFAIL 4HTAFA 11 2L2L # ENTRY FROM SINGLE RESTORE 8 2LG= XBMFRDE +9 11 2L_W # ENTRY FROM GENERAL RESTORE 6 2MFG X1RESTLIMB 15 2M_6 LDN 4 0 [ SET FLAG 6 2N38 ...#UNS AMTGR 9 2N5= ... JBC SFS2,,BGENRES 6 2N7# ...#UNS AMTGR 4 2N9B ...#SKI 18 2N?G ... BWZ GINCTSN,SFS2 [ JUMP IF PARTIAL RESTORE 9 2NDQ STOZ AWORK1(2) 9 2NYB STOZ AWORK2(2) 20 2PD2 # THIS SECTION ^OPENS^ THE FILE ON WHICH THE TAPE IS POSITIONED. 4 2PXL SFS2 10 2QC= HUNT 1,FILE,FWB 11 2QWW HUNT 2,FILE,FINTER6 8 2RBG ADN 1 A1 8 2RW6 ADN 2 A1 8 2S*Q MOVE 1 20 15 2STB CALL 5 SUFCB [SET FOR FCB 6 2SXD ...#UNS AMTGR 9 2S_G ... JBC RG,,BGENRES 6 2T3J ...#UNS AMTGR 4 2T5L ...#SKI 18 2T7Q ... BWZ GINCTSN,RG [JUMP IF PARTIAL RESTORE 16 2T*2 STO 7 AWORK4(2) [ PRESERVING X7 19 2TSL LDX 5 MASK3(1) [ BOTTOM 15 BITS CONTAIN SIZE 7 2W#= ANDX 7 5 9 2WRW LDX 5 AWORK2(2) 7 2X?G ADX 5 7 9 2XR6 STO 5 AWORK2(2) 9 2Y=Q LDX 5 AWORK1(2) 7 2YQB ADN 5 1 9 2_=2 STO 5 AWORK1(2) 16 2_PL LDX 7 AWORK4(2) [ RESTORING X7 5 2_R*P...#SKI IFS 4 2_T4P...( 19 2_WRP... SETUPFSTACK GENERAL [SET UP FSTACK,RING IN NEW 20 2_YGP...[ ELEMENT,RING FCB IN FCB RING , DECHAIN FCBFROM ACTIVITYCHAIN 18 3229P...[ AND CHAIN FCB AND FSTACK TOGETHER TO FORM FILES CHAIN 4 323YP...) 6 325MP...#SKI IFS<1$1 4 327B ...RG 19 329= RESTOREN GENERAL [SET UP & RING FSTACK BLOCK 21 32NW # THIS SECTION READS NEXT BLOCK ON TAPE.IF IT IS NOT A TM IT ENTERS 21 338G # SECTION WHICH WRITES DATA TO BS.IF A TM IS FOLLOWED BY SFS PROGRAM 21 33N6 # ENTERS SECTION WHICH ^OPENS^ TAPE.OTHERWISE END OF FILE IS ASSUMED 15 347Q # AFTER TM AND APPROPRIATE ACTION IS TAKEN. 15 34MB CALL 5 READG [READ BLOCK 9 3572 LDX 0 CPRW1(2) 9 35LL ANDX 0 MASK1(1) 17 366= BZE 0 WA [J IF NOT A TAPE MARK 8 36KW CALL 5 READS 8 375G LDX 0 A1(3) 7 37K6 SBN 0 6 8 384Q BZE 0 SFS2 15 38JB CALL 5 PFCB [ ESF ASSUMED 9 3942 LDN 0 FBLKS-A1 9 39HL STO 0 FBLMOD(1) 8 3=3= BRN WC 20 3=GW # THIS SECTION WRITES MAST BLOCK READ TO BS OF TOP FILE OPEN. 21 3?2G # REQUISITIONS ANOTHER FILE/FWB AND READS NEXT BLOCK ON TAPE.IF IT 21 3?G6 # IS A DATA BLOCK THIS ACTION IS REPEATED OTHERWISE IT SHOULD BE A 18 3?_Q # TM FOLLOWED BY AN EFS AND APPROPRIATE ACTION IS TAKEN. 20 3#FB # X7 HOLDS WD 19 OF SFS OF FILE.IF IT IS NEGATIVE THE FILE IS A 14 3#_2 # TERMINAL DIRECTORY AND IS DEALT WITH. 18 3*DL WA BNG 7 WZ [ J IF TERMINAL DIRECTORY 18 3*Y= SMO FX1 [PICK UP BOTTOM 15 BITS 8 3BCW ANDX 7 MASK3 21 3BXG WB WRITEB [WRITE NEXT BLOCK TO TERMINAL FILE 19 3CC6 SBN 7 1 [SUBTRACT 1 FROMBLOCK COUNT 17 3CWQ GETCORE BSBS,1 [ &GET ANOTHER FWB 7 3DBB FINDCORE 3 10 3DW2 NAME 3,FILE,FWB 8 3F*L CALL 5 READA 9 3FT= LDX 0 CPRW1(2) 9 3G#W ANDX 0 MASK1(1) 15 3GSG BZE 0 WB [J IF NOT TM 8 3H#6 BZE 7 WS 9 3HRQ ACROSS RESTERR,3 4 3J?B WS 8 3JR2 CALL 5 READS 8 3K=L LDCT 0 #400 8 3KQ= ANDX 0 A1(3) 16 3L9W BNZ 0 WC [ EXPECTING ESF 9 3LPG ACROSS RESTERR,4 14 3M96 # THIS SECTION DEALS WITH END OF FILE 15 3MNQ # X6 HOLDS THE INDICATION OF ENTRY POINT. 20 3N8B # IF FROM RESTOREF A BSTB/FULLB IS CREATED TO HOLD BS BLOCK NOS. 17 3NN2 # MOVED FROM FCB,FILE IS ^CLOSED^ AND ROUTINE EXITS. 21 3P7L WC CALL 5 PFCB [X1 -> FCB OF TOP FILE TO FREE EXTRA 9 3PM= XZ LDX 1 FPTR(1) 6 3PX4P...#SKI IFS<1$1 18 3Q6W BXE 1 CXFI,XY [ J IF END OF FILE CHAIN 9 3QLG LDX 0 ATYPE(1) 19 3R66 BXE 0 FFSFCB,XY [ J IF AT FILE CONTROL BLOCK 17 3RKQ BXU 0 FFSFUWB,XZ [ J IF NOT FILE FUWB 7 3S5B CHAIN 1,2 18 3SK2 WRITEAUTO FREE+FAIL,BSBS [ WRITE F/FUWB TO B/STORE 8 3T4L BRN WC 7 3TJ= XY BACKWAIT 7 3W3W TOPFCB 1 6 3W4X ...#UNS AMTGR 10 3W5Y ... JBS XYNOTPR,,BGENRES 6 3W6_ ...#UNS AMTGR 4 3W82 ...#SKI 20 3W93 ... BWNZ GINCTSN,XYNOTPR [ JUMP IF NOT PARTIAL RESTORE 19 3W=Q ... FILECOUNT 0 [ COUNT NUMBER OF FILES OPEN 19 3W#F ... SBN 0 1 [ MINUS 1 FOR LIMB RESTORED 16 3WB8 ... BXE 0 AWORK2(2),UP [ JUMP IF END 5 3WCX ...XYNOTPR 20 3WHG # THIS SECTION DEALS WITH END OF FILE ACTION FOR GENERAL RESTORE 14 3X36 # A SKELETON DIRECTORY ENTRY IS SET UP 15 3XGQ # THE DIRECTORY ENTRY IS ZERO EXCEPT FOR: 8 3Y2B # HDREC =FRDE 11 3YG2 # EINC =-VE - SKELETON 12 3Y_L # ECOPS =NO. BLOCKS/COPIES 13 3_F= # ELOC1 =LOCAL NAME ETC. FROM FCB 6 3_YW # ETC 15 42DG # THIS IS APPENDED TO THE FILE AT LEVEL 1 20 42Y6 # A BLOCKS RECORD CONTAINING BS BLOCKS OM FCB IS ALSO APPENDED 21 43CQ # FILE IS ^CLOSED^ USING CLOSESHORT MACRO BECAUSE DIRECTORY IS OPEN 13 43XB # IF ONLY MASTER OPEN ROUTINE EXITS 15 44C2 # OTHERWISE IT RETURNS TO READ NEXT SENTINEL 10 44WL HUNT 2,FILE,FAPB 8 45B= LDN 5 FRDE 18 45TW STO 5 A1(2) [ SET THE RECORD HEADER 9 46*G STOZ ERES(2) 8 46T6 ADN 2 ERES 19 47#Q LDX 3 2 [ ZEROISE SKELETON NAME ENTRY 7 47SB ADN 3 1 9 48#2 MOVE 2 FRDE-1 16 48RL SBN 2 ERES [ X2 -> F/FAPB 7 49?= NGN 0 1 21 49QW STO 0 EINC(2) [ SET INC. NO. NEGATIVE TO INDICATE 19 4==G [ SKELETON ENTRY 8 4=Q6 CALL 5 PFCB 9 4?9Q ... LDX 3 FBLMOD(1) 9 4?PB SBN 3 FBLKS-A1 8 4#92 LDCT 0 0(3) 7 4#NL ADN 0 1 16 4*8= STO 0 ECOPS(2) [ UPDATE ECOPS 9 4*MW LDX 0 FLAN(1) 9 4B7G STO 0 ECAT(2) 17 4BM6 ADN 1 FLOC1 [ MOVE IN LOCAL NAME 8 4C6Q ADN 2 ELOC1 7 4CLB MOVE 1 5 8 4D62 SBN 1 FLOC1 17 4DKL JBC WTERM,1,BFDIR [J IF TERMINAL FILE 7 4F5= LDN 0 1 11 4FJW STO 0 EREEL-ELOC1(2) 10 4G4G STO 0 EGEN-ELOC1(2) 8 4GJ6 SMO FX1 8 4H3Q LDX 0 MC1 21 4HHB STO 0 ELAN-ELOC1(2) [SET REEL/GEN/LANG AS 1/1/C1 FOR A DI 8 4J32 ADN 1 FME1 10 4JGL ADN 2 EUSE1-ELOC1 20 4K2= MOVE 1 3 [INSERT USER NAME IN DUMMY ENTRY 5 4KFW WTERM 18 4K_G APPEND 1 [WRITE SKELETON DIRENT 7 4LF6 BACKWAIT 10 4LYQ HUNT 2,FILE,FAPB 18 4MDB ADN 3 2 [X3=NO OF BLOCKS IN FILE 8 4MY2 STO 3 A1(2) 19 4NCL CALL 5 PFCB [X1 -> FCB OF TOP FILE OPEN 19 4NX= ADN 1 BSPRE [MAKE UP THE BLOCKS RECORD 8 4PBW ADN 2 A1+1 7 4PWG SBN 3 1 8 4QB6 MOVE 1 0(3) 18 4QTQ APPEND 1 [WRITE THE BLOCKS RECORD 20 4R*B BZE 4 NINDEX [ SKELETON ENT. NOT FOR A DIR. 20 4RT2 WIND 1 [ POSITION READ POINTERS AFTER 17 4S#L BACKSPACE 1 [ NAME RECORD 20 4SS= GRINDEX [ SETS UP INDEX RECORD ETC ETC 20 4T?W [ INDEX RECORD HAS BEEN READ 5 4TRG NINDEX 7 4W?6 CLOSEFRBS 8 4WQQ FILECOUNT 0 20 4X=B LDN 4 0 [ RESET FLAG FOR NOT A DIRECTORY 7 4XQ2 SBN 0 1 18 4Y9L BZE 0 ZEND [J & EXIT IF 1 FILE OPEN 4 4YP= # 21 4_8W # NOW READ NEXT SENTINEL - ERROR IF NOT START OR END SENTINEL - OTHERWI 10 4_NG # TAKE APPROPRIATE ACTION. 4 5286 # 17 52MQ CALL 5 TM [READ NEXT SENTINEL 8 537B CALL 5 READP 7 53M2 LDN 0 6 17 546L BXE 0 ESENTYP(3),SFS2 [J IF START SENTINEL 8 54L= LDCT 0 #400 18 555W BXU 0 ESENTYP(3),XER1 [J IF NOT END SENTINEL 4 55KG # 19 5656 # IF A 2ND DSF HAS BEEN READ FROM THE TAPE INDICATING THAT A 19 56JQ # DIRECTORY IS NEXT ON TAPE THIS SECTION IS ENTERED 21 574B # THE NEXT SENTINEL IS READ AND CHECKED THAT IT IS A SFS,OTHERWISE 20 57J2 # FORMAT ERROR.BIT 13 IS SET IN FCA5 TO INDICATE A DIRECTORY. 20 583L # THE LOCAL NAME IN THE SFS IS CHECKED AGAINST THAT IN THE FCB. 20 58H= # THE ROUTINE ENTERS RESTMERG TO MERGE THE DIRECTORY ABOUT TO BE 20 592W # RESTORED FROM MAG. TAPE WITH THE DIRECTORY OPEN AT TOP LEVEL. 20 59GG # NORMAL EXIT IS TO SECTION WHICH DEALS WITH END OF FILE ACTION. 9 5=26 # UPPLUS1 TAPE FAIL 10 5=FQ # UPPLUS2 FORMAT ERROR 15 5=_B SKEL CALL 5 TM [SKIP TO TM 8 5?F2 CALL 5 READP 7 5?YL TOPFCA2 2 17 5#D= LDN 0 #2000 [SET B13 OF FGENERAL1 16 5#XW ORS 0 FGENERAL1(2) [[=> DIRECTORY] 8 5*CG LDCT 0 #400 17 5*X6 BXE 0 ESENTYP(3),RENDSENT [J IF END SENTINEL 7 5BBQ LDN 0 6 19 5BWB BXU 0 ESENTYP(3),XER1 [ERROR IF NOT START SENTINEL 11 5CB2 MHUNTW 1,FILE,FINTER6 8 5CTL LDN 0 A1(3) 8 5D*= ADN 1 A1 21 5DSW MOVE 0 20 [REMEMBER LAST START SENTINEL READ (I 18 5F#G [ OF ERROR) 19 5FS6 CALL 5 PFCB [X1-> FCB OF TOP FILE OPEN 21 5G?Q LDX 0 ESENB(3) [IF START SENTINEL IS FOR A TERMINAL 21 5GRB BPZ 0 RDIRERASED [ IF DIR. NAMES IN TOP DIR. OPEN & S 21 5H?2 [ BEEN ERASED & START SENTINEL FOR A 21 5HQL TESTNAMX 3,FME1(1),ESENUSE1(3),RDIRERASED,5 [ SENTINEL DIFFER, D 21 5J== [ DIR. OR FILE HAS BEEN FOUND INSTEA 21 5JPW DOWN RESTMERG,1 [MERGE DIR. ON TAPE WITH ONE CONTAIN 21 5K9G [ DUMMY ENTRIES OF FILES OR DIRS. RE 8 5LNB BRN WC1 21 5M82 UPPLUS 1 [ ERROR IN R/MERG RETURN TO RESTOREA 11 5MML # EXIT FOR GENERAL RESTORE 4 5N7= # 14 5NLW # FLAG THE RE-EMERGENCE FROM RESTMERG 7 5P6G WC1 LDN 4 1 8 5PL6 BRN WC 2 5PN4 5 5PQ2 RENDSENT 16 5PRY CLOSEFRBS [CLOSE DIRECTORY 6 5PSJ ...#UNS AMTGR 8 5PT8 ... BS ,BFREEBS 8 5PTW BRN SKEL 6 5PXS RDIRERASED 18 5P_Q CLOSEFRBS [CLOSE ERASED DIRECTORY 6 5Q2B ...#UNS AMTGR 8 5Q32 ... BS ,BFREEBS 8 5Q3N BRN SFS2 4 5Q5Q # 15 5QKB # FLAG THE OCCURENCE OF A TERMINAL DIRECTORY 7 5R52 WS1 LDN 4 1 8 5RJL BRN WS 4 5S4= ZEND 8 5SHW LDX 2 FX2 9 5T3G LDX 5 AWORK1(2) 10 5TH6 STO 5 ACOMMUNE2(2) 9 5W2Q LDX 5 AWORK2(2) 10 5WGB STO 5 ACOMMUNE3(2) 4 5WQ8 ...UP 5 5X22 UP 21 5XFL # THIS SECTION ^OPENS^ A FILE WHOSE LOCAL NAME HAS JUST BEEN READ 21 5X_= # IN A SENTINEL FROM MAG. TAPE.IT SETS UP AN FCB FOR THE FILE WHICH 8 5YDW # IS ZERO EXCEPT 10 5YYG # CTOPEN =#40000000 8 5_D6 # FWAITCOUNT =0 9 5_XQ # CMOD =-VE 11 62CB # COMM =B7 & B10 SET. 10 62X2 # FSIZE =FILESIZE 14 63BL # FLOC1 =LOCAL NAME FROM SENTINEL 6 63W= # ETC 13 64*W # BSPRE =BLOCK NOS. FOR FILE 6 64TG # ETC 18 65*6 # BACK1 =BS HOME - LAST BLOCK NO. REQUISITIONED 6 65SQ # BACK2 14 66#B # THE FCB IS CHAINED IN THE FILE CHAIN 13 66S2 # THE BS BLOCKS ARE REQUISITIONED 21 67?L # 1. IN THE RESTOREG CASE THE NO. OF BLOCKS IS PICKED UP FROM THE 6 67R= # SFS 21 68=W # 2. IN THE RESTOREF CASE THE BLOCKS HAVE ALREADY BEEN REQUISITIONED 13 68QG # AND ARE HELD IN A BSTB/FULLB 21 69=6 SUFCB SBX 5 FX1 [ROUTINE TO SET UP FCB & THUS ^OPEN^ 4 69PQ WHAT 10 6=9B HUNT 1,FILE,FWB 17 6=P2 LDX 3 A1+18(1) [NO OF BLOCKS IN FILE 20 6?8L BNZ 3 WF [PROBABLY ON SFS FOR A DIRECTORY 7 6?N= LDN 3 1 9 6#7W LDX 0 A1+19(1) 8 6#MG BPZ 0 WF 20 6*76 LDN 4 1 [SETTING FLAG FOR EMPTY DIRECTORY 4 6*LQ WF 19 6B6B # WORD ESENAL CONTAINS VALUE OF SPECIAL FILE RESIDENC NUMBER. IF 21 6BL2 # ZERO THEN FILE WAS NEVER ALLOCATED( OR HAS BEEN CANCELLED ALLOCATED) 19 6C5L # IF EQUAL TO ONE THE FILE HAS BEEN ALLOCATED AS A PUBLIC FILE 16 6CK= LDX 7 ESENAL(1) [X7= SPECIAL FRN 8 6D4W ANDN 7 #77 17 6DJG BZE 7 WBACK [ J IF NO SPECIAL FRN 7 6F46 SBN 7 1 17 6FHQ BZE 7 WBACK [ J IF FILE IS PUBLIC 7 6G3B ADN 7 1 21 6GH2 RESQUERY 7,WBACK [ J IF FILE RESIDENCE IS NOT ONLINE 7 6H2L ADN 3 2 20 6HG= STO 3 7 [X7 = NO. OF WORDS IN B/EMPTYB 11 6H_W SETUPCORE 7,3,BSTB,EMPTYB 18 6JFG STO 7 A1(3) [SETTING UP RECORD HEADER 10 6J_6 MHUNTW 1,FILE,FWB 17 6KDQ LDX 2 ESENAL(1) [ X2 = SPECIAL FRN 8 6KYB ANDN 2 #77 9 6LD2 STO 2 A1+1(3) 7 6LXL SBN 7 2 7 6MC= STO 7 3 6 6MWW GETBAX 9 6NBG BRN NOBACK 5 6NW6 WBACK 14 6NYP ...# DO NOT ALLOCATE ENHANCEMENT,DS8416. 7 6P3# ...#UNS ANOTALLOC 9 6P5X ... WHATBACK 3,3,,,VSF 7 6P8G ...#UNS ANOTALLOC 4 6P?5 ...#SKI 21 6P*Q WHATBACK 3,3 [3 IS ESTIMATE OF FREQUENCY OF USE 5 6PTB NOBACK 17 6Q*2 ... SETNCORE FBLKS-A1(3),2,FILE,FCB,,1 [SET UP FCB 9 6QSL ... STOZ FBLMOD(2) 9 6R#= ... LDN 0 FBLMOD(2) 10 6RRW ... LDN 1 FBLMOD+1(2) 21 6S?G ... MOVE 0 FBLKS-FBLMOD-1 [ZEROISE ALL BUT LIST OF BLOCKS 9 6SR6 LDN 0 FBLKS-A1 9 6T=Q STO 0 FBLMOD(2) 10 6TQB LDX 0 ALOGLEN(2) 9 6W=2 STO 0 FUSEBL(2) 8 6WPL LDCT 0 #400 17 6X9= STO 0 CTOPEN(2) [OPEN IN GENERAL MODE 7 6XNW NGN 0 1 15 6Y8G STO 0 CMOD(2) [CMOD SET -VE 9 6YN6 LDN 0 FILESIZE 9 6_7Q STO 0 FSIZE(2) 10 6_MB MHUNTW 1,FILE,FWB 8 7272 LDCT 7 #777 18 72LL ANDX 7 ESENB(1) [PICK UP B0-8 OF ESENB 16 736= ADX 7 ESENCT(1) [ADD IN FILE SIZE 3 73=7 ... 17 73B4 ... GETFCBN 2,7 [X7 INDICATES DIR OR TERM FILE 3 73F_ ... 20 73KW LDN 0 5 [X0= LENGTH OF LOCAL NAME TO MOVE 18 745G BPZ 7 TERM [JI IF NOT A DIRECTORY 17 74K6 BS 2,BFDIR [SET ^DIRECTORY BIT^ 9 754Q ADN 1 ESENUSE1 8 75JB ADN 2 FME1 19 7642 MOVE 1 3 [INSERT USER NAME INTO FCB 9 76HL SBN 1 ESENUSE1 8 773= SBN 2 FME1 12 77GW LDN 0 3 [ 4 782G TERM 9 78G6 ADN 1 ESENLOC1 8 78_Q ADN 2 FLOC1 7 79FB SMO 0 18 79_2 MOVE 1 0 [MOVE LOCAL NAME INTO FCB 16 7=DL BNG 7 TDIR [J IF A DIRECTORY 7 7=KS ...#UNS AMTGRTEST 4 7=R2 ...#SKI 12 7=Y= LDX 0 ESENLAN-ESENLOC1(1) 7 7=__ ...#UNS AMTGRTEST 4 7?3N ...( 9 7?5C ... SBN 1 ESENLOC1 10 7?76 ... LDX 0 ESENLAN(1) 8 7?8T ... SMO FX1 11 7?=J ... BXE 0 TAPEFAIL,XTFAIL 5 7?#? ...XNTFAIL 4 7?B2 ...) 16 7?CW STO 0 FLAN-FLOC1(2) [INSERT LANGUAGE 4 7?XG TDIR 10 7#C6 ADN 2 BSPRE-FLOC1 10 7#WQ MHUNTW 1,BSTB,FULLB 8 7*BB ADN 1 A1+1 18 7*W2 MOVE 1 1(3) [MOVE BLOCK NOS. INTO FCB 8 7B*L SBN 2 BSPRE 18 7BT= ... TRANSFCB 2,ACT,FILE [TRANSFER FCB TO FILE CHAIN 10 7C#W MFREEW BSTB,FULLB 8 7CSG ADX 5 FX1 7 7D#6 EXIT 5 0 21 7DRQ # THIS SUBROUTINE SEARCHES THE FILE CHAIN FOR THE FCB OF THE FILE 10 7F?B # OPEN AT TOP LEVEL. 13 7FR2 # IT USES X1,X0 AND X5 AS CALL LINK 10 7G=L # IT DOES NOT COORDINATE 12 7GQ= # THE POINTER IS RETURNED IN X1. 4 7H9W PFCB 15 7HPG TFCBCHECK 1 [X1 -> FCB 7 7J96 EXIT 5 0 19 7JNQ # THE FOLLOWING SUBROUTINE(S) DEAL WITH MAG. TAPE READING 20 7K8B # THIS SUBROUTINE READS A BLOCK 20 OR GSBS WORDS LONG FROM THE 17 7KN2 # TAPE INTO A FILE/FWB BLOCK AND CHECKS THE REPLY. 7 7L7L # ON ENTRY: 10 7LM= # BLOCK HAS BEEN LOCKED 10 7M6W # THE UNIT NO. IS IN X4 11 7MLG # X3 HOLDS POINTER TO BLOCK 11 7N66 # X5 IS CALLING ACCUMULATOR 8 7NKQ # COORDINATES 13 7P5B # IF FAIL RETURN IS TO ERROR ROUTINE 21 7PK2 READP HUNT 3,FILE,FWB [S/R ENTRY TO READ 20 WORDS TO FWB 20 7Q4L READS LDN 0 20 [ENTRY HERE ASSUMES X3 -> FAPB 8 7QJ= BRN READB 21 7R3W READG HUNT 3,FILE,FWB [S/R ENTRY TO READ GSBS WORDS TO FWB 8 7RHG READA LDN 0 GSBS 17 7S36 READB SBX 5 FX1 [FOR CO-ORDINATION 16 7SGQ DCA ,STO,0,COUNT [ TRANSFER LENGTH 17 7T2B DCA ,STOZ,,MODE [SET 'READ' TYPE/MODE 8 7TG2 ADN 3 A1 15 7T_L DCA ,STO,3,CTSA [ DESTINATION 8 7WF= SBN 3 A1 7 7WYW LOCK 2 7 7XDG LOCK 3 16 7XY6 GPERI ,2 [ INITIATE A READ 6 7YCQ COOR1 7 7YXB UNLOCK 2 7 7_C2 UNLOCK 3 8 7_WL LDCT 0 #640 9 82B= ANDX 0 CPRW1(2) 21 82TW BNZ 0 XER19 [ERROR IF B0,B1 OR B3 SET IN REPLY WO 8 83*G ADX 5 FX1 7 83T6 EXIT 5 0 4 84#Q # 17 84SB # THIS SUBROUTINE MOVES THE TAPE PAST THE NEXT TM 9 85#2 # UNIT NO. IS IN X4 11 85RL # X5 IS CALLING ACCUMULATOR 11 86?= # NO FAIL CHECKING IS DONE 17 86QW TM SBX 5 FX1 [FOR CO-ORDINATION 8 87=G LDX 2 FX2 7 87Q6 LDN 0 4 9 889Q DCA ,STO,0,MODE 7 88PB LOCK 2 17 8992 GPERI ,2 [ SKIP TO TAPE MARK 6 89NL COOR1 7 8=8= UNLOCK 2 8 8=MW ADX 5 FX1 7 8?7G EXIT 5 0 20 8?M6 # THIS ROUTINE IS ENTERED IF A TERMINAL DIRECTORY HAS BEEN READ. 19 8#6Q # I.E. A DIRECTORY WHICH HAS HAD NO FILES DUMPED BENEATH IT. 21 8#LB # ITS PURPOSE IS TO READ THROUGH EACH BLOCK,ZEROISING THE BOTTOM 15 20 8*62 # BITS IN ECOPS IN EACH DIRECTORY ENTRY AND REMOVING THE BLOCKS 7 8*KL # RECORD. 18 8B5= # B0 IN WD. A1+19 IN THE SENTINEL INDICATES A DIRECTORY 12 8BJW # X2 HOLDS POINTER TO FILE/FAPB 12 8C4G # X1 HOLDS POINTER TO FILE/FWB 13 8CJ6 # X3 HOLDS POINTER TO CURRENT RECORD 10 8D3Q # X5 LINK ACCUMULATOR 8 8DHB # IT COORDINATES 10 8F32 WZ HUNT 2,FILE,FAPB 10 8FGL HUNT 1,FILE,FWB 16 8G2= LDN 3 A1(1) [SET UP POINTER. 8 8GFW WE LDEX 0 0(3) 8 8G_G BNZ 0 WU 4 8HF6 WRD3 16 8HYQ CALL 5 READSENT [READ NEXT BLOCK 8 8JDB LDEX 0 0(3) 4 8JY2 WU 8 8KCL SBN 0 FRDE 21 8KX= BNZ 0 XER7 [ERROR IF NOT A DIR. ENTRY NAME RECOR 6 8KXP ...#UNS AMTGR 4 8KY8 ...( 9 8KYM ... JBC PARTRES,,BGENRES 15 8K_6 ... LDEX 0 ECOPSN(3) [ IF FILE OFFLINE 15 8K_K ... BZE 0 PARTRES [ GO TO NOTPRLLINC 14 8L24 ...# FIND FILE/FINTER7 BLOCK OVERWRITTING X1 11 8L2H ... MHUNTW 1,FILE,FINTER7 14 8L32 ...# FIND INCREMENT THAT FILE WAS DUMPED ON 17 8L3F ...# IF EQUAL TO CURRENT INCREMENT GO TO ^NOTPRLLINC^ 20 8L3Y ...# IF LESS THAN CURRENT INCREMENT AND EQUAL TO PREVIOUS INCREMENT 8 8L4C ...# GO TO ^PRLLINC^ 21 8L4W ...# IF LESS THAN PREVIOUS INCREMENT (AND LESS THAN CURRENT INCREMENT) 20 8L5* ...# RESET NO OF PREVIOUS INC AND NO OF FILES IN INC &SIZE OF INC 9 8L5S ... LDX 0 EINCN(3) 13 8L6? ... BXL 0 GRPINCNUM(1),NOTPRLLINC 12 8L6Q ... BXE 0 GRPINCNUM(1),PRLLINC 10 8L79 ... STO 0 GRPINCNUM(1) 11 8L7N ... STOZ GRPINCFILES(1) 10 8L87 ... STOZ GRPINCSIZE(1) 5 8L8L ...PRLLINC 13 8L95 ...# INCREASE NO OF FILES IN INC BY 1 15 8L9J ...# INCREASE SIZE OF INC BY SIZE OF THIS FILE 7 8L=3 ... LDN 0 1 11 8L=G ... ADS 0 GRPINCFILES(1) 9 8L=_ ... LDX 0 ECOPSN(3) 8 8L?D ... SRL 0 15 10 8L?X ... ADS 0 GRPINCSIZE(1) 6 8L#B ...NOTPRLLINC 17 8L#T ...# FIND FILE/FWB BLOCK TO RETURN X1 TO ORIGINAL STATE 10 8L*# ... HUNT 1,FILE,FWB 5 8L*R ...PARTRES 4 8LB= ...) 9 8LBW LDEX 6 ECOPSN(3) 19 8LWG JBCC WNINDEX,3,BNINDEX [DEAL WITH & CLEAR INDEX BIT 21 8MB6 ADN 6 1 [X6= NO. OF BLOCKS & INDEX RECORDS 5 8MTQ WNINDEX 9 8N*B LDX 7 ENUSEN(3) 7 8NT2 LDN 0 0 21 8P#L DLA 0 ECOPSN(3) [CLEAR ^NO. OF COPIES (BLOCKS) RECORD 17 8PS= CALL 5 XAPPEND [APPEND NAME RECORD 4 8Q?W WQ 9 8QRG LDEX 0 FRH(3) 21 8R?6 ADX 3 0 [UPDATE X3 TO POINT TO NEXT RECORD 9 8RQQ LDEX 0 FRH(3) 18 8S=B BNZ 0 WY [J IF NOT END OF BLOCK 18 8SQ2 CALL 5 READSENT [READ NEXT BLOCK FROM MT 4 8T9L WY 7 8TP= SBN 6 1 21 8W8W BPZ 6 WQ [J IF MORE BLOCKS & INDEX RECORDS TO 21 8WNG BZE 7 WE [J IF NO (MORE) TRAPS RECORDS TO COPY 17 8X86 CALL 5 XAPPEND [APPEND TRAPS RECORD 19 8XMQ SBN 7 1 [REDUCE NO. OF TRAPS RECORDS 8 8Y7B BRN WQ 4 8YM2 # 19 8_6L # THIS SUBROUTINE APPENDS A RECORD WHOSE POINTER IS IN X3. 13 8_L= # IT KEEPS THE RECORD POINTER IN X3 13 925W # IT RESTORES POINTERS IN X1 AND X2 10 92KG # X5 IS LINK ACCUMULATOR 9 9356 # IT COORDINATES. 5 93JQ XAPPEND 8 944B SBX 5 FX1 8 94J2 LDN 0 0(3) 8 953L LDN 1 A1(2) 8 95H= LDX 2 0(3) 19 962W MOVE 0 0(2) [MOVE RECORD TO APPEND BLOCK. 10 96GG HUNT 1,FILE,FWB 17 9726 SBX 3 1 [KEEP POINTER IN X3 6 97FQ APPEND 10 97_B HUNT 1,FILE,FWB 10 98F2 HUNT 2,FILE,FAPB 16 98YL ADX 3 1 [RESTORE POINTER 8 99D= ADX 5 FX1 7 99XW EXIT 5 0 20 9=CG # THIS SUBROUTINE IS ENTERED WHEN A ZERO RECORD HEADER IS FOUND. 20 9=X6 # IT READS THE NEXT BLOCK INTO A FILE/FWB AND TESTS REPLY.A TAPE 14 9?BQ # FAIL WILL RETURN TO TAPE FAIL EXIT. 19 9?WB # A TAPE MARK WILL CAUSE EXIT FROM THIS SECTION OF PROGRAM 13 9#B2 # POINTERS IN X1 AND X2 ARE RESET 17 9#TL # X3 IS SET TO POINT AT FIRST RECORD OF NEW BLOCK. 10 9**= # X5 IS LINK ACCUMULATOR 21 9*SW # THIS ROUTINE USES,BECAUSE OF NECESSITY A WORD IN THE CHAPTER TO 21 9B#G # STORE A LINK. THIS ROUTINE IS ENTERED ONLY IN EMS SO THIS CHAPTER 21 9BS6 # SHOULD NOT BE BROUGHT IN AGAIN.HOWEVER IF ENHANCING THIS SEGMENT 16 9C?Q # THIS WAY OF STORING THE LINK SHOULD BE ALTERE 5 9CRB READSENT 8 9D?2 LDX 2 FX2 8 9DQL SBX 5 FX1 7 9F== SMO FX2 9 9FPW STO 5 AWORK4 8 9G9G CALL 5 READG 9 9GP6 LDX 0 CPRW1(2) 9 9H8Q ANDX 0 MASK1(1) 8 9HNB BNZ 0 WS1 10 9J82 HUNT 2,FILE,FAPB 10 9JML HUNT 1,FILE,FWB 8 9K7= LDN 3 A1(1) 7 9KLW SMO FX2 9 9L6G LDX 5 AWORK4 8 9LL6 ADX 5 FX1 7 9M5Q EXIT 5 0 7 9M77 ...#UNS AMTGRTEST 4 9M8J ...( 5 9M9_ ...XTFAIL 16 9M?B ... LDX 0 ESENFN(1) [ GET FILE NUMBER 20 9M#R ... BXE 0 AFILENUMB,XNTFAIL [ IF GREATER THAN PREVIOUS VALUE 16 9MB8 ... BXL 0 AFILENUMB,XNTFAIL [ CAUSE READ FAIL 5 9MCK ...XRFAIL 9 9MF2 ... STO 0 AFILENUMB 8 9MGC ... BRN XER19 4 9MHS ...) 4 9MKB # 15 9N52 TAER UPPLUS 2 [FORMAT ERROR 15 9NJL TAIL2 UPPLUS 1 [TAPE FAIL 4 9P4= # 4 9PHW XER1 20 9Q3G ACROSS RESTERR,1 [START OR END SENTINEL EXPECTED 4 9QH6 XER7 21 9R2Q ACROSS RESTERR,7 [NAME RECORD OF DIR. ENTRY INCORRECT 5 9RGB XER19 21 9S22 ACROSS RESTERR,19 [B0,B1 OR B3 SET IN REPLY WORD TO REA 4 9SFL # 21 9SGX ...# ***************************************************************** 15 9SJ8 ...# X2RESTLIMB 15 9SKF ...# ********** 18 9SLQ ...# THIS ENTRY POINT IS USED BY RESTOREG TO SET UP A FCB 16 9SN3 ...# FOR THE DIRECTORY BEING PARTIALLED RESTORED 4 9SP# ...# 6 9SQK ...X2RESTLIMB 15 9SRW ... CALL 5 SUFCB [ SET UP FCB 5 9ST7 ... UP 4 9SWD ...# 21 9SXP ...# ****************************************************************** 11 9S_= MENDAREA 30,K99RESTLIMB 4 9TDW # 4 9TYG #END 8 ____ ...26634210000200000000