12 22FL #LIS K0SAVEJOB>K0GREATGEO>K0ALLGEO 16 22_= #SEG SAVEJOB65 [RICHARD GRIMWADE 7 23DW 8HSAVEJOB 10 23YG SEGENTRY K1SAVEJOB,XK1 10 24D6 SEGENTRY K2SAVEJOB,XK2 12 24MY ... FSHENTRY K3SAVEJOB,,XK3,XK3 13 24RT ... FSHENTRY K4SAVEJOB,XBGONE,,XBGONE 10 24XQ SEGENTRY K100SAVEJOB 5 25CB #GAP 25 21 25X2 # THIS SEGMENT IMPLEMENTS THE SAVEJOB MACRO. FIRSTLY IT CHECKS THE 21 26BL # JOB CAN BE SAVED AND IF NOT,IT SETS AN APPROPRIATE REPLY AND GOES 20 26W= # UP.(IF IT HAS A CORE IMAGE IT GEOERRS INITIALLY). IT THEN SETS 19 27*W # UP A FILE TO CONTAIN THE SAVED RECORDS,AND APPENDS EACH 21 27TG # RELEVANT BLOCK.WHEN ALL SUCH BLOCKS HAVE BEEN SAVED,THE JOB BLOCK 21 28*6 # IS FREED AND A MARKER SET IN THE HLS QUEUE BLOCK TO SHOW THE JOB 8 28SQ # HAS BEEN SAVED 14 29#B REEL +0 [REEL NO 14 29S2 +1 [GEN NO 6 2=?L 4H#### 6 2=R= TBSTBBQBLK 8 2?=W #HAL BSTB+BQBLK,0 21 2?QG # THIS S/R FINDS THE HLSQ BLOCK WHOSE JOB NO IS IN X7. PTR IN X3 5 2#=6 SEARCH 9 2#PQ SHLSQ 7,3,NOBL 7 2*9B EXIT 6 0 5 2*P2 SJOBQ 8 2B8L JOBLOCK 7,1 7 2BN= EXIT 6 0 4 2C7W XK1 9 2CMG #SKI K6SAVEJOB>99-99 12 2D76 TRACE ACOMMUNE4(2),SAVEJNUM 15 2DLQ LDX 7 ACOMMUNE4(2) [JOB NUMBER 9 2F6B CALL 6 SEARCH 11 2FL2 HLSAV 3,SET,SAVED,HLSQ,UP 8 2G5L CALL 6 SJOBQ 16 2GK= JBC XCANT,1,JBOFFL [J IF MOP 15 2HJG SPRIVJUMP JSISSUE,1,XCANT [J IF SYSTEM 17 2J46 SPRIVJUMP JSSTART,1,XCANT [ISSUED OR STARTED 8 2JHQ ANDN 6 #777 17 2K3B BZE 6 RETRY [J IF NO CORE IMAGE 10 2KH2 GEOERR 1,COREIMAG 16 2L2L XK2 [EXTRACODE ENTRY 10 2LG= LDX 7 ACOMMUNE4(2) 9 2L_W #SKI K6SAVEJOB>99-99 10 2MFG TRACE 7,SAVEJNUM 5 2M_6 RETRY 8 2NDQ CALL 6 SJOBQ 18 2NNJ ... JBS WKSF,1,JBTEMP [J IF TEMP. DIR. EXISTS 8 2NYB FCAJO 3,1 7 2PD2 STO 1 5 20 2PXL WKSFILE 3,WKSF [J IF WELL KNOWN SYS FILES OPEN 8 2QC= WORKNUMB 0,3,3 17 2QWW BNZ 0 WKSF [J IF WORKFILES OPNE 21 2R2R ... SMO 5 [J TO WAIT IF MESSAGES STILL BEING 14 2R6N ... LDX 6 JMESS [OUTPUT 8 2R=K ... BNZ 6 WKSF 9 2RBG TOUR LDX 3 FPTR(3) 9 2RW6 LDX 0 ATYPE(3) 8 2S*Q TXL 0 CACT 8 2STB BCC PHIN 10 2T*2 SBX 0 TBSTBBQBLK(1) 8 2TSL BNZ 0 TOUR 8 2W#= ... COOR3 #41 8 2WRW ... BRN RETRY 4 2X?G PHIN 9 2XR6 CALL 6 SEARCH 10 2Y=Q NAME 3,ADATA,JSWAP 11 2YQB SETNCORE 10,3,FILE,FABSNB 8 2_=2 CALL 6 SJOBQ 8 2_PL LDN 0 10 8 329= STO 0 A1(3) 9 32NW LDN 5 JUSER(1) 9 338G LDN 6 A1+1(3) 7 33N6 MOVE 5 3 9 347Q LDN 5 JNAME(1) 7 34MB ADN 6 3 7 3572 MOVE 5 3 8 35LL SMO FX1 8 366= LDN 5 REEL 16 36KW ADN 6 3 [REEL NO,FGN & 14 375G MOVE 5 3 [LANGUAGE 7 37K6 CREATEB 10 384Q HUNTW 2,FILE,CREATE 8 38JB LDCT 0 #200 17 3942 STO 0 CEINF2(2) [SET TEMP FILE BIT 13 39HL OPEN XBRK,APPEND,CREATE,QUERY 18 3=3= TESTREP ALREADY,READY [J IF ALREADY SUCH A FILE 9 3=GW #SKI K6SAVEJOB>99-99 10 3?2G TRACE 2,OPENSFIL 8 3?2M ... FSHCODE AORB 4 3?2S ...( 20 3?2_ ...# SHARED FILESTORE: THIS CODE IS ONLY OBEYED ON 'A' AND IT IS 20 3?36 ...# USED TO 'FETCH' A 'B' MACHINE JOB INTO 'A' SO THAT THE SAVING 11 3?3? ...# PROCESS CAN BE CARRIED OUT 4 3?3D ...# 21 3?3K ... CALL 5 UNQUEUE [REMOVE THE TARGET CPAT FROM FLOWQ 4 3?3Q ...# 20 3?3X ... LDCT 0 #100 [CHECK IF BREAKIN IS REGISTERED 18 3?44 ... ANDX 0 JOBEVENTS(3) [IN THE TARGET ACTIVITY 21 3?49 ... BNZ 0 REV [REVERSE THE SAVING ACTION IF BREAKIN 4 3?4B ...# 20 3?4H ... NOTALIEN XHOME,3 [JIF TARGET IS RUNNING IN 'A' M/C 4 3?4N ...# 21 3?4T ... LDCT 0 #40 [STOP BREAKIN WHILE WE FIDDLE ABOUT!! 10 3?52 ... ORS 0 JOBEVENTS(3) 4 3?57 ...# 21 3?5# ...# WE ARE NOW GOING TO CHANGE TO THE TARGET ACTIVITY, BUT BEFORE WE 20 3?5F ...# DO, WE PROTECT CERTAIN WORDS IN THE ACTIVITY BLOCK (NOTABLY: 17 3?5L ...# THE 'ACC', 'AWORK','ALINK' AND 'ACOMMUNE' WORDS) 4 3?5R ...# 12 3?5Y ...# GET A BLOCK TO STORE THE DATA 4 3?65 ...# 15 3?6= ... SETNCORE ACOMMUNE9-ACC3+1,3,ADATA,CSTORE 4 3?6C ...# 21 3?6J ... CALL 6 SJOBQ [RELOCATE THE JOB BLOCK AND FROM IT 18 3?6P ... FCAJO 1,,N [FIND THE TARGET ACTIITY 4 3?6W ...# 19 3?73 ... LDN 4 ACC3(1) [ADDRESS OF DATA TO BE STORED 20 3?78 ... LDN 5 A1(3) [ADDRESS OF BLOCK TO STORE DATA 17 3?7* ... MOVE 4 ACOMMUNE9-ACC3+1 [MOVE DATA INTO BLOCK 4 3?7G ...# 21 3?7M ... LDX 6 ACTNUM(2) [REMEMBER 'SAVING' ACTIVITY'S NUMBER 21 3?7S ... CHANGEAC 1 [AND TRANSFER TO THE TARGET ACTIVITY 4 3?7_ ...# 20 3?86 ...# ============================================================== 20 3?8? ...# WE ARE NOW RUNNING IN THE ACTIVITY THAT WILL BE SAVED (TARGET) 20 3?8D ...# ============================================================== 4 3?8K ...# 4 3?8Q ...# 21 3?8X ... TRANSFREE [REMOVE ANY TRANSFER SYSTEM BLOCKS 4 3?94 ...# 20 3?99 ...# NOW WE CAN GO TO 'B' AND FETCH THE REST OF THE DATA BLOCKS FOR 7 3?9B ...# OUR JOB 4 3?9H ...# 16 3?9J ...# WE WILL FIRST CREATE AN ERROR RECOVERY BLOCK 4 3?9K ...# 20 3?9L ... SETNCORE 1,3,FSH,FSHAMBLES [SET UP ERROR RECOVERY BLOCK AND 19 3?9M ... LDX 0 X4SAVEJOB(1) [LINK IT TO THE ERROR ROUTINE 10 3?9N ... STO 0 FSHCDLINK(3) 4 3?9P ...# 16 3?9Q ... TRANSBEG FSHNOID,SAVEJOB,3,,,ACOMMUNE8,XBGONE 4 3?9R ...# 20 3?9S ... MFREEW FSH,FSHAMBLES [GET RID OF ERROR RECOVERY BLOCK 4 3?9T ...# 19 3?=2 ...# ON RETURN FROM 'B', OUR 'PAIR' WILL HAVE GONE AND WE MUST 16 3?=7 ...# REMOVE OUR TABLE ENTRY IN THE /FSHMARKER BLOCK 4 3?=# ...# 21 3?=F ... DOWN FSHTRANC,4 [USE STANDARD CODE TO REMOVE ENTRY 4 3?=L ...# 21 3?=R ... FSHMOVE END [DEAL WITH FILES THAT HAVE COME BACK 4 3?=Y ...# 21 3??5 ...# THE COPY JOB BLOCK FROM 'B' IS ALSO RETURNED AND WE MERELY EXTRACT 11 3??= ...# THE JOB TIME USED SO FAR 4 3??C ...# 19 3??J ... FJOCA 2,,N [FIND OUR 'A' M/C JOB BLOCK 19 3??P ... MHUNTW 1,JOBQE [AND THE JOB BLOCK FROM 'B' 20 3??W ... LDX 4 HTIMEJ(1) [PICK UP THE 'JOBTIME USED' FIELD 10 3?#3 ... LDX 5 HTIMEJ+1(1) 21 3?#8 ... STO 4 HTIMEJ(2) [AND STORE IT INTO THE 'A' JOB BLOCK 10 3?#* ... STO 5 HTIMEJ+1(2) 20 3?#G ... BC 2,JBFSHALIEN [CLEAR ALIEN MARKER IN JOB BLOCK 20 3?#M ... FREECORE 1 [RELEASE COPY JOB BLOCK FROM 'B' 20 3?#S ... BC 2,FSHALIEN [CLEAR ALIEN MARKER IN ACTIVITY 4 3?#_ ...# 6 3?*6 ...XCHANGEACT 20 3?*? ... FINDACTN 2,6 [FIND THE 'SAVING' ACTIVITY AGAIN 21 3?*D ... LDX 3 FX2 [REMEMBER THE ADDRESS OF TARGET CPAT 20 3?*K ... CHANGEAC 2 [GO BACK TO THE SAVING ACTIVITY 4 3?*Q ...# 14 3?*X ...# ====================================== 14 3?B4 ...# WE ARE NOW BACK IN THE SAVING ACTIVITY 14 3?B9 ...# ====================================== 4 3?BB ...# 21 3?BH ... MHUNTW 1,ADATA,CSTORE [NOW WE CAN RESTORE THE DATA IN THE 16 3?BN ... LDN 4 A1(1) [TARGET ACTIVITY 9 3?BT ... LDN 5 ACC3(3) 21 3?C2 ... MOVE 4 ACOMMUNE9-ACC3+1 [RESTORE DATA TO ACC,AWORK,ACOM ETC 17 3?C7 ... FREECORE 1 [RELEASE STORE BLOCK 4 3?C# ...# 21 3?CF ... LDCT 0 #40 [FINALLY WE CLEAR 'INHIBIT BREAK-IN' 17 3?CL ... ORS 0 JOBEVENTS(3) [IN THE TARGET CPAT 10 3?CR ... ERS 0 JOBEVENTS(3) 4 3?CY ...# 20 3?D5 ... LDXC 7 7 [CHECK IF REVERSE SAVE REQUIRED 20 3?D= ... BCS REV [JIF REVERSE SAVE IS REQUESTED 4 3?DC ...# 5 3?DJ ...XHOME 17 3?DP ... SAVEBLOK 0,1,7 [SAVE THE JOB BLOCK 21 3?DW ... CALL 6 SJOBQ [AND THEN RELOCATE THE TARGET CPAT 17 3?F3 ... FCAJO 3,1,N [FROM ITS JOB BLOCK 4 3?F8 ...) 7 3?F* ... FSHSKIP 4 3?FG ...( 8 3?G6 SAVEBLOK 0,1,7 7 3?J* ...#SKI JWPHASE4 4 3?LJ ...( 8 3?NR ... BRN XJOBQ 8 3?R2 ...WAIT COOR3 #41 5 3?T9 ...XJOBQ 4 3?XD ...) 8 3?_Q CALL 6 SJOBQ 8 3#FB FCAJO 3,1 9 3#_2 #SKI K6SAVEJOB>99-99 10 3*DL TRACE 3,SAVECPAT 9 3*Y= LDEX 0 ATYPE(3) 7 3*__ ...#SKI JWPHASE4 4 3B3N ...( 8 3B5C ... SBN 0 #31 8 3B76 ... BZE 0 UNQ 8 3B8T ... BCT 0 WAIT 4 3B=J ...UNQ 4 3B#? ...) 8 3BB2 ...#SKI JWPHASE4<1$1 18 3BCW BZE 0 OFFQ [J IF NO WAITING STYLE 7 3BXG LDX 2 3 18 3CC6 UNQUEUE [REMOVE ACT FROM QUEUE 4 3CWQ OFFQ 7 3D3Y ...#SKI JWPHASE4 17 3D96 ... LONGOFF 3 [CLEAR LONG EVENT FIELD 4 3D?Q ...) 10 3DBB LDX 4 CONTEXT(3) 17 3DW2 ANDN 4 #4000 [ISOLATE F.ST. BIT 8 3F*L SAVEBLOK 0,2,7 7 3FGS ... FSHSKIP 4 3FN2 ...( 9 3FT= CALL 6 SEARCH 8 3G#W LDCT 5 #20 10 3GSG ANDX 5 HLSYONQ(3) 8 3H#6 CALL 6 SJOBQ 8 3HRQ FCAJO 3,1 8 3J?B BNZ 5 REV 8 3JR2 LDCT 0 #100 10 3K=L ANDX 0 JOBEVENTS(3) 21 3KQ= BNZ 0 REV [J IF BREAK IN (I.E JOB TO BE STOPPED 4 3L24 ...) 4 3L9W # 20 3LPG # FOR NOW STORE THE JOB NUMBER IN ACOMMUNE4 FOR SAVEACTF-IT WILL 18 3M96 # IGNORE THE PARAMETER-LATER THE MACRO SHOULD BE ALTERED 7 3MNQ SMO FX2 8 3N8B STO 7 ACOM4 7 3NN2 SAVEACTF 7 7 3P7L SAVECHN 7 15 3PM= LDX 0 EXEC3(2) [TEST REPLY 8 3Q6W BZE 0 POK1 10 3QLG GEOERR 1,AOLPTSAV 4 3R66 POK1 18 3RKQ ... FREEZESA [CLOSE AND FREEZE FILE 7 3S5B #SKI JNLSTART 4 3SK2 ( 9 3T4L OUTPAR TIMENOW 18 3TJ= MONOUT ASAVE,7,NONAUT [OUTPUT JOB SAVED TO SJ 4 3W3W ) 8 3WHG CALL 6 SJOBQ 7 3X36 LDX 2 1 9 3XGQ CALL 6 SEARCH 9 3Y2B LDX 0 JMISC(2) 17 3YG2 STO 0 HLSSTAT(3) [SAVE COPY OF JMISC 16 3Y_L BZE 4 TENT [J IF T.ST. JOB 7 3_F= LDCT 4 1 16 3_YW ORS 4 HLSSTAT(3) [SET F.ST. BIT 4 42DG TENT 16 42Y6 FJOBLOCK 2 [FREE JOB BLOCK 4 43CQ # 20 43XB # FREEING THE JOB BLOCK AND SETTING AND CLEARING ALL THE BITS IN 19 44C2 # THE HLSQ BLOCK SHOULD ALL OCCUR WITHIN ONE COORDINATION 4 44WL # 11 45B= HLSAV 3,CLEAR,SAVING,HLSQ 10 45TW HLSAV 3,SET,SAVED,HLSQ 10 46*G UP1 MFREE FILE,FABSNB 4 46T6 UP 9 47#Q #SKI K6SAVEJOB>199-199 10 47SB TRACE 7,SAVEDONE 8 48#2 WAKE LDCT 0 #20 10 48RL ANDX 0 HLSYONQ(3) 19 49?= BZE 0 UP2 [J IF REV SAVE BIT NOT SET 15 49QW ERS 0 HLSYONQ(3) [CLEAR BIT 20 4==G FON #34 [WAKE UP ACT WAITING TO UNSAVE 4 4=Q6 UP2 16 4?9Q ACROSS SUICIDE,1 [COMMIT SUICIDE 20 4?PB # THIS SECTION REVERESE THE PROCESS IF AN UNSAVE IS REQUESTED 13 4#92 # BEFORE THE MAIN LOOP IS ENTERED 18 4#NL XCANT CANTSAVE 3 [SET CANT BE SAVED BIT 8 4*8= BRN UNS1 4 4*MW REV 6 4B7G ERASE 15 4BM6 CLOSE [ERASE FILE 8 4C6Q CALL 6 SJOBQ 12 4CLB HLSAV 1,CLEAR,SAVING,JOBQ 4 4D62 # 21 4DKL # FRIG TO PUT THE CPA BACK ON THE QUEUE SO IT WILL GET WOKEN UP BY 20 4F5= # PROCONTX AND FPUT IN THE BREAKIN CASE - THIS MEANS THAT SAVING 20 4FJW # JOBS CAN ONLY OCCUR WHEN WAITING TO BE FULLY STARTED AT LEAST 9 4G4G # UNTIL FLONGWAITX 8 4GJ6 FCAJO 2,1 8 4GP# ... LDN 0 #32 9 4GWG ... DEX 0 CLONG1(2) 9 4H3N ... LDX 0 JOBNO(2) 9 4H8W ... STO 0 CLONG2(2) 8 4HB4 ... FLONGWAIT #32 9 4HHB CALL 6 SEARCH 15 4J32 NAME 3,ADATA,JUNSWAP [RENAME BLOCK 11 4JGL HLSAV 3,CLEAR,SAVING,HLSQ 17 4K2= BRN WAKE [J TO WAKE UP ACT. 9 4KFW WKSF CALL 6 SEARCH 8 4K_G BRN UNS 9 4LF6 READY CALL 6 SEARCH 21 4LYQ HLSAV 3,SET,SAFE,HLSQ,UP1 [-> UP1 IF ALREADY SAVED OR BEING SAV 15 4MDB NAME 3,ADATA,JUNSWAP [RENAME BLOCK 4 4MY2 UNS 18 4NCL CANTNOW 3 [IF NOT,CANT BE SAVED NOW 15 4NX= UNS1 CALL 6 SJOBQ [X1 -> JOBQ 19 4PBW HLSAV 1,CLEAR,SAVING,JOBQ [CLEAR MARKER SET BY SCHEDJOB 9 4PWG CALL 6 SEARCH 11 4QB6 HLSAV 3,CLEAR,SAVING,HLSQ 8 4QTQ BRN UP 8 4QW3 ... FSHCODE AORB 4 4QW# ...( 21 4QWK ...# SHARED FILESTORE: SOME ROUTINES THAT ARE CALLED FROM OTHER CODE 7 4QWW ...# ABOVE!! 4 4QX7 ...# 13 4QXD ...XBGONE ['B' MACHINE HAS FAILED 4 4QXH ...# 20 4QXL ...# TEMPORARY SOLUTION TO THE PROBLEM OF 'B' MACHINE FAILURE!!! 4 4QXP ...# 10 4QXS ... GEOERR 1,SAVEINB! 4 4QXX ...# 6 4QY2 ...X4SAVEJOB 9 4QY5 ... LINK SAVEJOB,4 4 4QY? ...# 4 4QYJ ...# 21 4QYT ...# THE FOLLOWING ROUTINE WILL 'UNQUEUE' THE TARGET CPAT FROM FLOWQ 4 4Q_6 ...# 14 4Q_C ...# IT IS NORMALLY ENTERED AT 'UNQUEUE' 4 4Q_N ...# 20 4Q__ ...WAIT SBX 5 FX1 [PROCESS THE LINK WHILE WE WAIT 16 4R2= ... COOR3 #41 [LET OTHERS RUN!! 8 4R2H ... ADX 5 FX1 4 4R2S ...# 5 4R35 ...UNQUEUE 21 4R3B ... CALL 6 SJOBQ [FIND THE JOB BLOCK FOR TARGET JOB 21 4R3M ... FCAJO 3,1 [AND FROM THE JOB BLOCK FIND THE CPAT 20 4R3Y ... LDEX 0 ATYPE(3) [PICK UP THE WAITING STYLE OF THE 21 4R49 ... SBN 0 #31 [ACTIVITY & JIF WAITING IN OUR STYLE 8 4R4G ... BZE 0 UNQU 21 4R4R ... BCT 0 WAIT [JIF NOT WAITING IN STYLE #32 EITHER 4 4R54 ...# 7 4R5* ...UNQU LDX 2 3 21 4R5L ... UNQUEUE [REMOVE THE ACTIVITY FROM THE QUEUE 21 4R5X ... LONGOFF 3 [AND CLEAR ANY LONGWAIT INFORMATION 17 4R68 ... EXIT 5 0 [MISSION ACCOMPLISHED 4 4R6F ...# 4 4R6Q ...# 4 4R73 ...XK3 4 4R7# ...# 20 4R7K ...# THIS ENTRY POINT IS USED ON 'B' TO COLLECT ALL THE JOB'S DATA 17 4R7W ...# BLOCKS AND FILES SO THAT THEY CAN BE SAVED ON 'A' 4 4R87 ...# 21 4R8D ... MFREE FSH,FSHTERM [FREE /FSHTERM BLOCK TO ENSURE ALL 16 4R8P ...# [DATA IS RETURNED 4 4R92 ...# 19 4R9? ... FJOCA 3,2,N [GET THE JOB BLOCK ADDRESS 20 4R9J ... DERINGD AJBRING(3) [DERING THE JOB BLOCK AND RECHAIN 18 4R9T ... CHAIN 3,2 [IT IN THE ACTIVITY CHAIN 4 4R=6 ...# 21 4R=C ... FILENUMB 4 [COUNT ALL THE OPEN FILES AND PREPARE 18 4R=N ... FSHMOVE START,4 [THEM FOR RETURN TO 'A' 4 4R=_ ...# 21 4R?= ... STOZ JOBNO(2) [ACTIVITY DOESN'T OWN A JOB BLOCK NOW 21 4R?H ... TRANSFIN ,AUT [AUTONOMOUS TRANSFIN TO RETURN DATA 16 4R?S ...# [AND FILES TO 'A' 4 4R#5 ...# 20 4R#B ... SUICIDE [NOTHING ELSE LEFT TO DO NOW!!! 4 4R#M ...) 9 4R*B NOBL GEOERR 1,NO HLSQ 9 4RT2 XBRK GEOERR 1,SAVEBKIN 5 4S#L NOCPAT 10 4SS= GEOERR 1,NOACTBLK 4 4T?W #END 8 ____ ...26760176000100000000