22FL #LIS K0HLSREAD>K0HLS>K0OBJPROG>K0ALLGEO>K0GREATGEO 22R2 ... SEG HLSREAD,867,SECTION CENT,,G402 234B ...[ 23*Q ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 23M6 ...[ 23YG # THIS SEGMENT DEALS WITH SPECIAL PERI EXTRACODES ISSUED BY HIGH LEVEL 24D6 # SCHEDULER AND RELATED SYSTEM SUBJECT PROGRAM. THE PERIS ARE READING 24XQ # INFORMATION SUCH AS JOB BLOCKS INTO THE SUBJECT PROGRAM AREA. THE 25CB # ACTIVITIES MAKING USE OF THESE ROUTINES ARE SET UP BY THE ACCESS 25X2 # COMMAND 26BL # ENTRY POINTS 26W= # 27*W SEGENTRY K1HLSREAD,ZK1 [HLSACTIVE CHANNEL 27TG SEGENTRY K2HLSREAD,ZK2 [HLSPASSIVE CHANNEL 28*6 SEGENTRY K3HLSREAD,REPEAT [RETURN FROM SCHEDJOB 28SQ SEGENTRY K4HLSREAD,ZK4 [RESVIOL ILLEGAL 29#B SEGENTRY K5HLSREAD,ZK5 [ILLINS ILLEGAL 29S2 SEGENTRY K7HLSREAD,ZK7 [READ JOBQ 2=?L SEGENTRY K8HLSREAD,ZK8 [NEXT HLSQ 2=R= SEGENTRY K9HLSREAD,ZK9 [NEXT JOBQ 2?=W SEGENTRY K10HLSREAD,ZK10 [INSTPARA 2?QG SEGENTRY K11HLSREAD,ZK11 [TEMPQ 2#=6 SEGENTRY K12HLSREAD,ZK12 [PERIPHERAL LIST 2#PQ SEGENTRY K13HLSREAD,ZK13 [GEORGE CORE 2*9B SEGENTRY K14HLSREAD,ZK14 [SCHEDJOB XCODE 2*P2 SEGENTRY K15HLSREAD,ZK15 [READ HLSQ 2B8L SEGENTRY K30HLSREAD,ZK30 [RETURN FROM WS XCODE 2BDD ... FSHENTRY K31HLSREAD,ZK31,,ZK31 2BN= #DEF RVMODE = #114 2C7W XMODE [ MODE 2CMG #HAL 5,P1-XMODE [READ HLSQ #100 2D76 #HAL 5,P11-XMODE [READ JOBQ #101 2DLQ #HAL 5,P60-XMODE [READ PERIPHERAL LIST #102 2F6B #HAL 4,P30R-XMODE [READ NEXT HLSQ #103 2FL2 #HAL 4,P40R-XMODE [READ NEXT JOBQ #104 2G5L #HAL 4,P50R-XMODE [READ IPS #105 2GK= #HAL #4004,S6-XMODE [READ TEMPQ #106 2H4W #HAL 4,ZM107-XMODE [READ TEMPQ (PASSIVE) #107 2HJG #HAL 5,X25K-XMODE [READ GEORGECORE #110 2J46 #HAL 2,ZM111-XMODE [REWIND HLSQ #111 2JHQ #HAL 2,ZM112-XMODE [REWIND JOBQ #112 2K3B #HAL #4004,ZM113-XMODE [SCHEDJOB XCODE #113 2KH2 #HAL 3,ZM114-XMODE [RETRIEVE XCODE #114 2L2L #HAL 5,ZM115-XMODE [WHATSTATE XCODE #115 2LG= XMODEND 2LJ8 ...#UNS G402 2LL6 ...( 2LN4 ...#HAL 5,XMNB-XMODE [MONITOR BLOCK #170 2LQ2 ...#HAL 5,XPRG-XMODE [CORE IMAGE #171 2LRY ...XDSKMODEND 2LTW ...TDSKMODEND #170+XDSKMODEND-XMODEND 2LXS ...) 2L^W TMODEND #100+XMODEND-XMODE [UPPER LIMIT OF MODES 2MFG SA1 +1 2M^6 SA3 +3 2NDQ MODMASK #77777 2NYB XGEOG #40000077 2PD2 X100 #100 2PXL X101 #101 2QC= #UNS ECS 2QWW #SKI 2RBG RECL +10 [MAX LENGTH OF SCHED CONTROL RECORD 2RW6 #UNS ECS 2S*Q RECL +12 [MAX LENGTH OF SCHED CONTROL RECORD 2STB SCHMAX +8 [LOWER LIMIT OF ILLEG. INDEX NO. 2T*2 SAPERLEN +6 [LENGTH OF PERIPHERAL ENTRY TRANS- 2TSL [FERRED TO PROGRAM 2W#= XCLOSE #1000 2WRW PLINK1 2X?G PAIR HLSREAD,4 2XR6 PLINK2 2Y=Q PAIR HLSREAD,5 2YQB BITDEFS ATYPE,23,PRMARK [PASSIVE READ INDICATOR 2^=2 [ TABLE OF MAXIMUM LENGTHS OF CONTROL RECORDS 32NW SCHLEN +12 [0 STARTJOB 338G +12 [1 RESET 375G +1 [2 WAIT 37K6 +2 [3 STOPJOB 384Q +2 [4 SAVEJOB 38JB +512 [5 JOBWAIT 39HL +12 [6 DEWELL 3?G6 +4 [7 SWITCH 3?^Q RCHECKA 3#FB LDX 1 FX1 3#^2 SBX 3 FX1 3*DL CHECKB 4,5,RILLEGAL,APETADDR(2),W,WORDA,,,REPEAT 3*Y= WORDA 3BCW ADX 3 FX1 3BXG EXIT 3 0 3CC6 3CWQ [ THE ROUTINE BELOW MOVES OUT THE WORDS2,3,4 OF THE CONTROL AREA 3DBB [ INTO ACOMMUNE1-3 3DW2 XFOUTMOVE 3F*L LDN 3 ACOMMUNE1(2) [X3->DESTINATION FOR FOUTMOVE 3FT= LDX 1 APETADDR(2) 3G#W LDX 2 EVENT2(2) 3GSG LDN 4 3 3H#6 ADN 2 2 3HRQ FOUTMOVE 1,2,3,4,HLOCK1,,X 3J?B LDX 1 FX1 3JR2 LDX 2 FX2 3K=L EXIT 6 0 3KQ= [ ROUTINE TO COPY DATA FROM SUBJECT PROGRAM 3L9W [ ON ENTRY X2-> ADDR. OF PROGRAM DATA 3LPG [ X3-> ADDR. OF OUTPUT BUFFER 3M96 [ X4 = LENGTH OF DATA 3MNQ [ X6 - LINK ADDRESS 3N8B [ X1=FX1,X2=FX2,X3 DESTROYED ON EXIT 3NN2 XFOUTMOVE2 3P7L SMO FX2 3PM= LDX 1 APETADDR 3Q6W FOUTMOVE 1,2,3,4,HLOCK2 3QLG LDX 1 FX1 3R66 LDX 2 FX2 3RKQ EXIT 6 0 3S5B [ 3SK2 XCLEAR 3T4L SBX 7 FX1 3TJ= CLEAR APETADDR(2),0,HLOCK2 3W3W ADX 7 FX1 3WHG EXIT 7 0 3X36 # 3XGQ # 3Y2B # NOTE:- X5 WILL HOLD LENGTH OF BUFFER 3YG2 # X7 WILL HOLD ADDITIONAL INFORMATION 3Y^L # X4 WILL HOLD ADDRESS OF BUFFER : THROUGH SEG AFTER CHECKB 3^F= # 3^YW 42DG [ THE ROUTINE BELOW DEALS WITH THE HLSACTIVE AND HLSPASSIVE 42Y6 [ CHANNELS. IT HAS THE FOLLOWING CONTROL AREA: 43CQ [ WORD0 52/MODE 43XB [ WORD1 0 -THE REPLY WORD 44C2 [* WORD2 NO. OF WORDS IN PROGRAMS BUFFER 44WL [ WORD3 START ADDR. OF PROGRAMS BUFFER 45B= [ WORD4 ADDITIONAL INFORMATION 45TW [* THE RV XCODE HOLD JOB NO. IN WORD2 46*G ZK1 LDN 6 0 [HLSACTIVE CHANNEL INDICATOR 46T6 BRN ZK2A 47#Q ZK2 LDN 6 1 [HLSPASSIVE CHANNEL INDICATOR 47SB ZK2A STOZ AWORK1(2) [HLSQ MARKER 48#2 STOZ AWORK2(2) [JOBQ MARKER 48RL STO 6 AWORK4(2) [SAVE CHANNEL INDICATOR 49?= ZK3 [RETURN FROM SCHEDJOB 49QW LDX 0 EVENT4(2) 4==G ANDN 0 #7777 [GET MODE 4=Q6 BXE 0 XCLOSE(1),XCL [J IF CLOSE CHANNEL 4=X# ...#UNS G402 4?4G ...#SKI 4?9Q BXGE 0 TMODEND(1),SILLEGAL [J IF ILLEGAL MODE 4??7 ...#UNS G402 4?#J ...( 4?*^ ... BXL 0 TMODEND(1),ZDSK1 [NORMAL MODE 4?CB ... BXGE 0 TDSKMODEND(1),SILLEGAL 4?DR ... SBN 0 #170 4?G8 ... BNG 0 SILLEGAL [NOT SPECIAL MODE EITHER 4?HK ... ADN 0 XMODEND-XMODE [CREATE POINTER 4?K2 ... BRN ZDSK2 [JOIN NORMAL CODE 4?LC ...ZDSK1 4?MS ...) 4?PB SBN 0 #100 4#92 BNG 0 SILLEGAL [J IF ILLEGAL MODE 4#B8 ...#UNS G402 4#HB ...ZDSK2 4#NL SMO 0 4*8= LDXC 5 XMODE(1) 4*MW BCC ZK1C [J IF PASSIVE XCODE 4B7G LDX 6 AWORK4(2) 4BM6 BNZ 6 SILLEGAL [J IF HLSPASSIVE CHANNEL 4C6Q ZK1C SRL 5 12 [LENGTH OF PERI CONTROL AREA 4CLB BRN RD2 4D62 ZK1D LDEX 0 EVENT4(2) [GET MODE 4D89 ...#UNS G402 4D=D ...( 4D#M ... BXL 0 TMODEND(1),ZDSK3 [NORMAL MODE 4DBW ... SBN 0 #70+XMODE-XMODEND [MODIFY POINTER 4DF5 ...ZDSK3 4DH# ...) 4DKL SBN 0 #100 4F5= SMO 0 4FJW LDX 0 XMODE(1) [MODE'S ENTRY IN TABLE 4G4G ANDN 0 #7777 4GJ6 SMO 0 [J TO APPROPRIATE... 4H3Q BRN XMODE [ ... MODE ROUTINE 4H3X ...#UNS G402 4H44 ...( 4H49 ...XG402LANG 4HB1B0 4H4B ...# 4H4H ...XPRG 4H4N ... JOBLOCK 7,3 4H4T ... BNG 3 R1 4H52 ... FSHCODE A,XPRGA 4H57 ...( 4H5# ... JBC XPRGA,3,JBFSHALIEN [JIF RUNNING ON MASTER 4H5F ... LDN 0 9 [SET OPTION "9" 4H5L ... CALL 1 XSWOPMC [GET DATA FROM OTHER MC. 4H5R ... BRN P15 4H5Y ...XPRGA 4H65 ...) 4H6= ... LDN 1 AJBRING(3) 4H6C ... BXE 1 AJBRING(3),R1 4H6J ... LDX 1 AJBRING(3) [PTR TO APET/CPAT 4H6P ... SBN 1 JOBRING [TO BEGINING OF BLOCK 4H6W ... LDCH 0 ATYPE(1) 4H73 ... SBN 0 APET/64 4H78 ... BNZ 0 R1 [J NOT APET 4H7* ... LDX 3 1 4H7G ...XPRG2 4H7M ... LDX 3 FPTR(3) 4H7S ... LDCH 0 ATYPE(3) 4H7^ ... SBN 0 AOBJPROG/64 4H86 ... BZE 0 XPRG1 [J IF PROG BLOCK 4H8? ... SBN 0 #6000-AOBJPROG/64 4H8D ... BNG 0 XPRG2 [J UNLESS ACTY BLOCK 4H8K ... BRN R1 4H8Q ...XPRG1 4H8X ... ADN 3 A1D-A1 [PROG START ADDR 4H94 ... LDX 0 ALIMIT(1) 4H99 ... BRN P16 4H9B ...# 4H9H ...XMNB 4H9N ... JOBLOCK 7,3 4H9T ... BNG 3 R1 [JOB NOT FOUND 4H=2 ... FSHCODE A,XMNBA 4H=7 ...( 4H=# ... JBC XMNBA,3,JBFSHALIEN [JIF RUNNING ON MASTER 4H=F ... LDN 0 10 [SET OPTION "10" 4H=L ... CALL 1 XSWOPMC [GET DATA FROM OTHER MC. 4H=R ... BRN P15 [DATA TRANSFERED 4H=Y ...# BLOCK SWAPPED OUT - READ DIRECTLY 4H?5 ... LDX 2 A1(3) [RESIDENCE NO. 4H?= ... LDX 6 A1+1(3) [BLOCK NUMBER 4H?C ... LDX 7 A1+2(3) ["CMOD" 4H?J ... BRN XDSKH [REJOIN NORMAL CODE 4H?P ...XMNBA 4H?W ...) 4H#3 ... LDN 1 AJBRING(3) 4H#8 ... BXE 1 AJBRING(3),R1 4H#* ... LDX 1 AJBRING+1(3) [CPAT 4H#G ... LDX 2 FILERING-JOBRING(1) 4H#M ... SBN 2 FILERING-JOBRING(1) 4H#S ... BZE 2 XNOTF [FILERING EMPTY 4H#^ ... LDX 1 FILERING+1-JOBRING(1) 4H*6 ... ADX 1 2(1) [STACK 4H*? ... LDX 2 BPTR(1) [FCB 4H*D ... LDX 7 FLAN(2) 4H*K ... SMO FX1 4H*Q ... BXU 7 XG402LANG,XNOTF [NOT MONITORING FILE 4H*X ... LDX 7 CMOD(2) 4HB4 ... BNG 7 XNOTF [NOT IN USE 4HB9 ... LDX 3 FBLMOD(2) 4HBB ... LDN 6 BSPRE-A1+1 4HBH ... BXE 3 6,XNOTF [NOT IN USE 4HBN ... SMO 3 4HBT ... LDX 6 A1-1(2) [CURRENT BLOCK NUMBER 4HC2 ... SFUB 1,6,3,XDSKF [FIND BLOCK 4HC7 ... BRN XDSKG 4HC# ...# READ BLOCK INTO STORE 4HCF ...XDSKF LDX 2 BSPRE(2) [RESIDENCE NO. 4HCL ...XDSKH LDN 1 512 [TRANSFER LENGTH 4HCR ... BACKREAD ,1,XNOTF,2,EX6 [READ BLOCK INTO STORE 4HCY ... SMO FX2 4HD5 ... LDX 3 FPTR [ADDR.OF READ BLOCK 4HD= ...XDSKG LDX 0 7 [GET "CMOD" 4HDC ... SMO 0 4HDJ ... ADX 0 0(3) [ADD IN LAST RECORD 4HDP ... SBN 0 A1 [LENGTH TO TRANSFER 4HDW ... LDX 2 FX2 4HF3 ... BRN P16 4HF8 ...XNOTF LDX 2 FX2 4HF* ... BRN R1 [BLOCK NOT FOUND 4HFG ...) 4HHB # THE ROUTINE BELOW DEALS WITH THE READ HLSO ENTRY EXTRACODE 4J32 # IT HAS THE FOLLOWING CONTROL AREA: 4JGL # WORD0 6/0 4K2= # WORD1 0-THE REPLY WORD 4KFW # WORD2 NO. OF WORDS TO BE READ 4K^G # WORD3 START ADDRESS OF PROGRAM INPUT AREA 4LF6 # WORD4 JOB ENTRY OF HLSQ JOBENTRY TO BE READ 4LYQ # 4MDB ZK15 4MY2 # ON ENTRY,EXEC1 POINTS TO PERI CONTROL AREA IN SUBJECT PROGRAM 4NCL 4NX= LDN 6 2 [HLS READ EXTRACODE ROUTINE N0.0 4PBW BRN READOUT [READ OUT WORD2-WORD4 OF PERI CONTROL ARE 4PWG [ CA1-CA3 OF CURRENT ACTIVITY BLOCK (OLPA 4QB6 # RETURN (VIA SWITCH TABLE) & CONTINUE 4QTQ # LOOK DOWN HLSQ FOR BLOCK WITH SPECIFIED JOBNO. 4R*B # 4RT2 P1 4S#L # 4SS= FSHCODE B,XB1 4T?W ( 4TRG # FOR SHARED FILESTORE, WE CAN ONLY SEARCH THE HLSQ ON 'A' 4W?6 # 4WQQ LDN 0 0 [SET OPTION '0' 4X=B CALL 1 XSWOPMC [& SWOP MACHINES 4XQ2 # 4Y9L XB1 4YP= ) 4^8W FSHSKIP B,XB2 4^NG ( 5286 SHLSQ 7,3,R1 [X3 -> HLSQ BLOCK 52MQ # 537B XB2 53M2 ) 546L LDN 0 AHLS [ONLY READ AHLS WORDS OF LONG HLSQ BL 54L= BRN P16 555W # THE ROUTINE BELOW DEALS WITH THE READ JOB BLOCK EXTRACODE. 55KG # IT HAS THE FOLLOWING CONTROL AREA: 5656 # WORD0 6/0 56JQ # WORD1 0 -THE REPLY WORD 574B # WORD2 NO. OF WORDS TO BE READ 57J2 # WORD3 START ADDRESS OF PROGRAM INPUT AREA 583L # WORD4 JOB NUMBER OF JOB BLOCK TO BE READ 58H= ZK7 592W # ON ENTRY,EXEC1 CONTAINS PTR TO PERI CONTROL AREA 59GG LDN 6 3 [HLSREAD EXTRACODE ROUTINE NO.1 5=26 BRN READOUT [READ OUT WORD2-WORD4 OF PERI CONTROL ARE 5=FQ [ CA1-CA3 OF CURRENT ACTIVITY BLOCK (OLPA 5=^B P11 5?F2 JOBLOCK 7,3 [X3 -> JOB BLOCK 5?YL FSHCODE AORB 5#D= ( 5#XW # FOR SHARED FILESTORE WE HAVE EXTRA CHECKS TO MAKE HERE 5*CG # 5*X6 FSHCODE A,XA1 5BBQ ( 5BWB BNG 3 R1 [ERROR IF JOB BLOCK NOT FOUND ON 'A' 5CB2 JBC Y1,3,JBFSHALIEN [JIF JOB NOT ALIEN IN 'A' 5CTL # 5D*= XA1 5DSW ) 5F#G FSHCODE B,XB3 5FS6 ( 5G?Q BNG 3 XB3 [JIF THE JOB DOES NOT EXIST ON 'B' 5GRB # 5H?2 # WE COPY JOB BLOCKS ON 'B' SO THAT WE CAN SET A BIT IN THEM 5HQL # INDICATING THAT THE JOB IS 'AT HOME' IN 'B' 5J== # 5JPW CALL 6 SCOPYBLOCK [COPY THE BLOCK AND SET 'IN-B' BIT 5K9G BRN P11 [JIF COPY HAS FAILED 5KP6 BRN Y1 [JIF COPY WAS OK!!! 5L8Q # 5LNB XB3 5M82 ) 5MML # 5N7= # JOB BLOCK MUST BE FETCHED/LOOKED FOR ON THE OTHER MACHINE 5NLW # 5P6G LDN 0 1 [SET OPTION '1' 5PL6 CALL 1 XSWOPMC [GO TO OTHER MACHINE 5Q5Q # 5QKB Y1 5R52 ) 5RJL FSHSKIP 5S4= BNG 3 R1 [J. IF JOBLOCK CANNOT BE FOUND 5SHW LDX 0 ALOGLEN(3) 5T3G SBN 0 JOBNUM-A1 5TH6 ADN 3 JOBNUM-A1 5W2Q BRN P16 5WGB P15 LDX 0 ALOGLEN(3) 5X22 P16 LDN 7 0 5XFL LDX 6 5 [SAVE BUFFER SIZE 5X^= LDX 5 0 5YDW BXGE 6 5,P17 [J IF BUFFER>DATA REQD. 5YYG LDX 5 6 5^D6 P16A LDCT 7 #200 5^XQ P17 ADN 3 A1 62CB P17A [LABEL FOR INSTPARA EXTRACODE WHICH IS NOT MOVING THE CONTENTS OF 62X2 BZE 5 P17C [J IF NO DATA TO BE MOVED 63BL LDX 1 APETADDR(2) [X1 -> APET 63W= LDX 6 4 [SAVE ADDR. OF TRANSFER 64*W FINMOVE 1,4,3,5,HLOCK2 [MOVE -> PROGRAM 64TG P17C LDXC 4 AWORK4(2) 65*6 BCC P17B [J IF NOT SPECIAL ACTIVE TEMPQ 65SQ STO 4 AWORK4(2) 66#B P17D 66S2 LDX 1 BHTEMP [X1 -> BLOCK TO BE FREED 67?L FREECORE 1 [FREE TEMPQ BLOCK 67R= P17B 68=W ADX 5 AWORK3(2) [END OF TRANS ADDRESS AS REPLY 68QG ORX 5 7 [SET OVERFLOW BIT 69=6 P17R LDX 3 EVENT2(2) 69PQ ADN 3 1 [X3 -> REPLY WORD 6=9B LDX 1 APETADDR(2) [X1 -> PCA 6=P2 FADDRESS 1,3,HLOCK1 [PTR -> REPLY WORD IN X3 6?8L STO 5 0(3) [SET REPLY 6?N= VFREEW ADATA,APLIST 6#7W VFREEW CQPRINT,CQ11 6#*4 ...#UNS G402 6#G= ... VFREEW BSTB,BREAD 6#MG FSHCODE AORB 6*76 VFREEW FSH,HLSTRANSFER 6*LQ [ -TRANSFERRED-INTO-INPUT AREA INTO R 6B6B #SKIP K6HLSREAD>199-199 6BL2 TRACE 6,OLPFINX6 6C5L OLPFIN APETADDR(2) [END. RETURN TO SUBJ-PROG 6CK= P17T SMO AWORK4(2) 6D4W BRN REENTRYPT 6DJG 6F46 6FHQ # THE ROUTINE BELOW DEALS WITH THE'READ NEXT HLSQ ENTRY'EXTRACODE 6G3B [ IT HAS THE FOLLOWING CONTROL AREA: 6GH2 [ WORD0 6H2L [ WORD1 0-THE REPLY WORD 6HG= [ WORD2 NO.OF WORDS TO BE READ 6H^W [ WORD3 START ADDRESS IF PROGRAM INPUT AREA 6JFG [ ON ENTRY:EXEC1 POINTS TO PERI CONTROL AREA IN SUBJECT PROGRAM 6J^6 # 6KDQ # THE'NEXT'HLSQ OR JOBQ BLOCK IS THAT BLOCK WHICH IMMEDIATELY FOLLOW 6KYB # BLOCK LAST ACCESSED BY THIS ROUTINE. 6LD2 # THE NUMBER OF LAST ONE READ IS KEPT IN AWORK1 (HLSQ) OR 6LXL # AWORK2 (JOBQ). IF NO MORE FOUND SET ZERO AND NEXT 6MC= # TIME WILL READ 1ST AGAIN 6MWW # IF EITHER Q IS FOUND TO BE EMPTY THE REPLY WORD IN THE PERI CONTRO 6NBG # IS SET NEGATIVE 6NW6 ZK8 6P*Q STOZ AWORK1(2) 6PTB P30 [RE-ENTRY PT. FOR SUBSEQUENT PERIS 6Q*2 LDN 6 4 [THIS HLSREAD XCODE NO.2 6QSL LDN 5 4 [SET X5=LENGTH OF *FR PERI CONTROL AR 6R#= BRN RD1 [J.TO S/R TO CHECK THAT THE PERI CONT 6RRW [ AREA AND THE INPUT AREA TO WHICH IT 6S?G [ ARE BOTH WITHIN THE SUBJ.PROG.S RE 6SR6 P30R 6T=Q # RETURN (VIA SWITCH TABLE) & CONTINUE 6TQB FSHCODE B,XB4 6W=2 ( 6WPL # FOR SHARED FILESTORE,WE MUST GO TO 'A' TO SEARCH THE HLSQ 6X9= # 6XNW LDN 0 2 [SET OPTION '2' 6Y8G CALL 1 XSWOPMC [& CHANGE TO THE 'A' MACHINE 6YN6 # 6^7Q XB4 6^MB ) 7272 FSHSKIP B,XB4A 72LL ( 736= LDX 0 AWORK1(2) [GET LAST NUMBER (CAN BE ZERO) 73KW STOZ AWORK1(2) [CLEAR, JUST IN CASE END REACHED 745G SOME LDN 3 BHLSQ 74K6 TOUR LDX 3 FPTR(3) 754Q TXU 3 CXHL 75JB BCC R1 [SET -VE REPLY IF END 7642 MIDQ TXL 0 HLSJONO(3) 76HL BCC TOUR 773= LDX 0 HLSJONO(3) 77GW STO 0 AWORK1(2) [ONE READ AND STORE NEW NUMBER 782G # 78G6 XB4A 78^Q ) 79FB LDN 0 AHLS [ONLY READ AHLS WORDS OF LONG BLOCK 79^2 BRN P16 7=DL 7=Y= 7?CW 7?XG # THE ROUTINE BELOW DEALS WITH THE'READ NEXT JOBQ ENTRY'EXTRACODE 7#C6 7#WQ [ IT HAS THE FOLLOWING CONTROL AREA: 7*BB [ WORD0 7*W2 [ WORD1 0-THE REPLY WORD 7B*L [ WORD2 NO.OF WORDS TO BE READ 7BT= [ WORD3 START ADDRESS IF PROGRAM INPUT AREA 7C#W 7CSG [ ON ENTRY:EXEC1 POINTS TO PERI CONTROL AREA IN SUBJECT PROGRAM 7D#6 # 7DRQ ZK9 7F?B STOZ AWORK2(2) 7FR2 P40 [RE-ENTRY PT. FOR SUBSEQUENT PERIS 7G=L LDN 6 5 [THIS IS HLSREAD XCODE NO.3 7GQ= LDN 5 4 [SET X5=LENGTH OF PERI CONTROL AREA 7H9W BRN RD1 [J.TO S/R TO CHECK THAT THE PERI CONT 7HPG [ AREA AND THE INPUT AREA TO WHICH IT 7J96 [ ARE BOTH WITHIN THE SUBJ.PROG.S RE 7JNQ P40R 7K8B # RETURN (VIA SWITCH TABLE) & CONTINUE 7KN2 LDX 7 AWORK2(2) [PICK UP LAST 7L7L FSHSKIP 7LM= STOZ AWORK2(2) [CLEAR,JUST IN CASE END REACHED 7M6W PHEW LDN 3 BJOBQ 7MLG ROUND LDX 3 FPTR(3) 7N66 TXU 3 CXJO 7NKQ FSHCODE AORB 7P5B BCC XENDQ [JIF END OF QUEUE IS REACHED 7PK2 FSHSKIP 7Q4L BCC R1 7QJ= MIDJ TXL 7 JOBNUM(3) 7R3W BCC ROUND [J IF NOT THERE YET 7RHG FSHCODE B,XB12 7S36 ( 7SGQ # FOR SHARED FILESTORE IN THE 'B' MACHINE, WE CAN ACCEPT THE NEXT 7T2B # JOB QUEUE BLOCK IF IT'S JOB NUMBER IS 'LAST'+1. OTHERWISE, WE 7TG2 # MUST GO TO 'A' AND SEARCH THERE. 7T^L # 7WF= ADN 7 1 7WYW BXU 7 JOBNUM(3),Y6 [JIF JOB NUMBER IS NOT 'LAST'+1 7XDG # 7XY6 # WE MUST NOW COPY THE BLOCK AND SET A BIT TO INDICATE THAT THE 7YCQ # JOB IS ACTUALLY IN 'B' 7YXB # 7^C2 CALL 6 SCOPYBLOCK [COPY BLOCK AND SET 'IN-B' MARKER 7^WL BRN P40R [ERROR IN COPY - START AGAIN!! 82B= # 82TW XB12 83*G ) 83T6 FSHCODE A,XA5 84#Q ( 84SB # FOR SHARED FILESTORE IN THE 'A' MACHINE, WE MUST CHECK IF THE 85#2 # BLOCK WE HAVE FOUND IS FOR AN ALIEN JOB. IF IT IS, WE GO TO 'B' 85RL # TO GET UP-TO-DATE INFORMATION ABOUT THE JOB. 86?= # 86QW JBC OK,3,JBFSHALIEN [JIF NOT AN 'ALIEN' JOB 87=G # 87Q6 LDX 0 JOBNUM(3) [UPDATE 'LAST' JOB NUMBER TO REMEMBER 889Q STO 0 AWORK2(2) [WHERE WE HAVE GO TO 88PB # 8992 LDN 0 8 [SET OPTION '8' 89NL CALL 1 XSWOPMC [AND TRANSFER TO 'B' MACHINE 8=8= BRN P40R [JOB NOT FOUND, SO REPEAT SEARCH HERE 8=MW # 8?7G XA5 8?M6 ) 8#6Q OK LDX 0 JOBNUM(3) 8#LB STO 0 AWORK2(2) [KEEP LAST NUMBER 8*62 LDX 0 ALOGLEN(3) 8*KL ADN 3 JOBNUM-A1 8B5= SBN 0 JOBNUM-A1 [ADJUST PAST JOBRING ELEMENTS 8BJW BRN P16 8C4G FSHCODE AORB 8CJ6 ( 8D3Q XENDQ 8DHB # 8F32 # END OF QUEUE PROCESSING IS DIFFERENT FOR SHARED FILESTORE 8FGL # 8G2= FSHCODE A,XA4 8GFW ( 8G^G # CLEAR LAST JOB NUMBER MARKER 8HF6 # 8HYQ STOZ AWORK2(2) 8JDB BRN R1 8JY2 # 8KCL XA4 8KX= ) 8LBW FSHCODE B,XB5 8LWG ( 8MB6 # AT END OF QUEUE IN 'B' WE HAVE TO GO TO 'A' IN CASE THERE ARE 8MTQ # OTHER JOBS THERE 8N*B # 8NT2 Y6 8P#L LDN 0 3 [SET OPTION '3' 8PS= CALL 1 XSWOPMC [AND SWOP TO THE 'A' MACHINE 8Q?W BRN P40R ['B' M/C JOB FOUND, SO START AGAIN!! 8QRG BRN OK [BLOCK SENT WITH DATA 8R?6 # 8RQQ # WHEN THERE ARE NO MORE JOBS, THE RETURN TO THE LABEL 'R1' DIRECT 8S=B # 8SQ2 XB5 8T9L ) 8TP= ) 8W8W 8WNG 8X86 # THE ROUTINE BELOW DEALS WITH THE INSTPARA EXTRACODE. 8XMQ # IF HAS THE FOLLOWING CONTROL AREA: 8Y7B # WORD0 50/0 8YM2 # WORD1 0-THE REPLY WORD 8^6L # WORD2 NO.OF WORDS TO BE READ 8^L= # WORD3 PROGRAM ADDRESS OF INPUT AREA 925W # 92KG ZK10 9356 LDN 6 6 [THIS IS HLSREAD EXTRACODE NO.4 93JQ P50 LDN 5 4 [SET X5= LENGTH OF *FR PERI CONTROL A 944B BRN RD1 [J.TO S/R TO CHECK THAT THE PERI CONT 94J2 [ AND THE INPUT AREA TO WHICH IT REFE 953L [ BOTH WITHIN THE SUBJ.PROGRAM'S RESE 95H= P50R [RETURN VIA SWITCH TABLE 962W #UNS IPEXTENSION+1*IPEXTENSION 96GG LDX 6 5 [REMEMBER NUMBER OF IPS REQUESTED 9726 LDN 0 INSTPARL [ = LENGTH OF INSTALLATION PARAMETER 97FQ TXL 0 5 97^B BCC P51 [J IF MORE IPS THAN REQUESTED 98F2 LDX 5 0 [STORE NO OF IPS=LENGTH OF TRANS 98YL P51 LDN 3 INSTPARAM [INSTPARAM = START OF INPUT AREA 99D= LDN 7 0 [NO OVERFLOW 99XW #UNS IPEXTENSION+1*IPEXTENSION 9=CG ( 9=X6 SBX 6 5 [NUMBER OF IPS STILL REQD AFTER MOVE 9?BQ BZE 6 P17A [J IF GOT NUMBER REQUIRED 9?WB LDX 1 APETADDR(2) [ADDRESS OF AREA IN APET 9#B2 FINMOVE 1,4,3,5,HLOCK2 [MOVE IPS INTO SUBJECT PROGRAM AREA 9#TL ADS 5 AWORK3(2) [UPDATE PTR TO NEXT SPARE LOCATION IN 9**= LDX 4 AWORK3(2) [ AREA MOVING INTO AND SET IN X4 9*SW LDX 0 IPEXTCOUNT [COUNT OF WORDS IN EXTENSION TABLE 9B#G LDX 5 6 [RESET X5 TO NO. OF IPS STILL REQD 9BS6 TXL 0 5 9C?Q BCC P52 [J IF NOT REQUIRE ALL EXTENSION TABLE 9CRB LDX 5 0 [SET X5 TO SIZE OF EXTENSION TABLE 9D?2 P52 LDX 3 IPEXTTAB [PTR TO START OF EXTENSION TABLE 9DQL ) 9F== BRN P17A 9FPW 9G9G # THE ROUTINE BELOW IS THE EXTRACODE TO READ THE NEXT ENTRY 9GP6 # FROM HLSTEMP AND INSERT IT ON THE HLSQ IN THE ORDER OF 9H8Q # ITS JOBNUMBER 9HNB # WORD0 50/0 9J82 # WORD1 0- REPLY WORD 9JML # WORD2 NO. OF WORDS TO BE READ 9K7= # WORD3 START ADDRESS OF PROGRAM INPUT AREA 9KLW ZK11 9L6G LDN 6 8 [SET SWITCH FOR EXTRACODE 9LL6 S5 LDN 5 4 [SET X5=LENGTH OF CONTROL AREA 9M5Q BRN RD1 [J TO S/R TO CHECK THAT CA AND INPUT 9MKB [BUFFER ARE WITHIN PROG RESERVATIONS 9N52 S6 LDX 3 BHTEMP 9NJL TXU 3 CXHT 9P4= BCC R1 9PHW LDX 0 ATYPE(3) 9Q3G SRL 0 12 9QH6 SBN 0 ADATA+ASUP 9R2Q BNZ 0 NOTASUP [J IF NOT SUP. BLOCK 9RGB LDX 0 AWORK3(2) 9S22 STOC 0 AWORK3(2) 9SFL BCS S7 [TRANSFER BLOCK IF SUP WANTED 9S^= FREECORE 3 [ELSE THROW IT AWAY 9TDW BRN S6 9TYG NOTASUP 9WD6 LDXC 0 AWORK3(2) 9WXQ BCS R1 [ERROR IF SUP WANTED 9XCB LDX 7 HLSJONO(3) [X7 HOLDS JOB NO 9XX2 LDX 0 HLSYONQA(3) 9YBL ANDN 0 #7777 9YW= SBN 0 EVWAITIN 9^*W BZE 0 S8 [RECHAIN IF WAITIN EVENT 9^TG LDCT 0 #001 =2*6 ANDX 0 HLSYONQ(3) =2SQ BNZ 0 S8 [J IF REQUEST =3#B LDN 0 #10 =3S2 ANDX 0 HLSYONQ(3) =4?L BZE 0 S7 [J IF NOT B-IN BLOCK =4R= SHLSQ 7,1,S7 [X1 -> HLSQ BLOCK =5=W FREECORE 1 [FREE HLS ENTRY =5QG BRN S7 =6=6 S8 =6PQ LDX 2 BHLSQ =79B TXU 2 CXHL =7P2 BCC S4 [J. IF HLSQ IS EMPTY =88L BRN S2 =8N= S1 LDX 2 FPTR(2) [GET POINTER TO NEXT BLOCK =97W TXU 2 CXHL [IN HLSQ =9MG BCC S3 [J. IF END OF HLSQ REACHED ==76 S2 LDX 6 HLSJONO(2) [GET JOBNUMBER OF BLK IN HLSQ ==LQ TXL 7 6 =?6B BCC S1 [J. IF BLOCK FROM HLSTEMP HAS =?L2 [THE LOWER JOBNUMBER =#5L S3 LDX 2 BPTR(2) [GET PTR TO PRECEDING BLOCK =#K= S4 CHAIN 3,2 [CHAIN NEW BLOCK IN HLSQ =*4W BRN P15 =*JG S7 LDX 6 GSIGN [SET X6 -VE TO INDICATE THAT HLS BLK =B46 LDX 2 FX2 =BHQ ORS 6 AWORK4(2) [TEMPQ TO BE REMOVED INDICATOR =C3B BRN P15 =CH2 [BEEN COPIED INTO SUBJ.PROGS. AREA =D2L =DG= [ THE ROUTINE BELOW DEALS WITH THE PASSIVE READ OF HLSTEMPQ =D^W [ IT HAS THE FOLLOWING CONTROL AREA =FFG [ WORD0 52/#107 =F^6 [ WORD1 0 -REPLY WORD =GDQ [ WORD2 NO.OF WORDS TO BE READ =GYB [ WORD3 START ADDRESS OF PROGRAM INPUT AREA =HD2 ZM107 =HXL FSHCODE B,XB6 =JC= ( =JWW # WE CANNOT SEARCH THE TEMPQ IN THE 'B' MACHINE AND SO WE TRANSFER =KBG # TO 'A' AND LOOK FOR DATA THERE =KW6 # =L*Q LDN 0 4 [SET OPTION '4' =LTB CALL 1 XSWOPMC [AND SWOP MACHINES =M*2 # =MSL XB6 =N#= ) =NRW FSHSKIP B,XB7 =P?G ( =PR6 LDX 3 BHTEMP =Q=Q BRN T7L2 =QQB T7L1 LDX 3 FPTR(3) [NEXT ENTRY OF TEMPQ =R=2 T7L2 BXE 3 CXHT,R1 [J IF END OF TEMPQ =RPL JBS T7L1,3,PRMARK [J IF UNREAD BLOCK =S9= LDX 0 ATYPE(3) =SNW SRL 0 12 =T8G SBN 0 ADATA+ASUP =TN6 BNZ 0 PNOTASUP [J IF NOT SUP. BLOCK =W7Q BS 3,PRMARK [SET READ IND. =WMB LDX 0 AWORK3(2) =X72 STOC 0 AWORK3(2) =XLL BCS P15 [TRANSFER BLOCK IF SUP WANTED =Y6= BRN T7L1 =YKW PNOTASUP =^5G LDXC 0 AWORK3(2) =^K6 BCS R1 [ERROR IF SUP WANTED ?24Q BS 3,PRMARK [SET READ IND ?2JB # ?342 XB7 ?3HL ) ?43= BRN P15 [J IF UNREAD ENTRY ?4GW ?52G ?5G6 # THE ROUTINE BELOW DEALS WITH THE PERILIST EXTRACODE ?5^Q # IT HAS THE FOLLOWING CONTROL AREA: ?6FB # WORD0 6/0 OR 52/#102 ?6^2 # WORD1 0-THE REPLY WORD ?7DL # WORD2 THE NO. OF WORDS TO BE READ ?7Y= # WORD3 START ADDRESS OF THE PROGRAM INPUT AREA ?8CW # WORD4 #100 IF ALL PERIPHERAL LIST TO BE READ ?8XG # OR A PERIPHERAL TYPE,IF ONLY RECORDS OF THAT TYPE TO BE READ. ?9C6 ZK12 ?9WQ LDN 6 7 [SET SWITCH FOR RETURN ?=BB BRN READOUT [FROM READOUT ROUTINE ?=W2 P60 ??*L STO 4 ACOMMUNE1(2) ??T= FSHCODE AORB ?##W ( ?#SG # FOR SHARED FILESTORE, THERE MAY BE BITS SET AT THE TOP OF THE ?*#6 # COUNT WORD. THESE ARE CLEARED BEFORE THE COUNT VALUE IS STORED ?*RQ # ?B?B LDX 3 5 [KEEP FULL COUNT WORD CONTENTS ?BR2 ANDX 5 BITS22LS [AND MASK THE COUNT FIELD ?C=L ) ?CQ= STO 5 ACOMMUNE2(2) ?D9W BNG 7 R1 ?DPG BXGE 7 X101(1),R1 [J IF T# OUT OF RANGE FOR -VE REPLY ?F96 FSHCODE AORB ?FNQ ( ?G8B # WE MUST NOW ANALYSE THE ADDITIONAL INFORMATION SUPPLIED IN THE ?GN2 # COUNT WORD. ?H7L # ?HM= SLC 3 2 [GET BITS DOWN TO BOTTOM OF X3 ?J6W ANDN 3 3 [AND MASK OUT OUR BITS ?JLG FSHCODE A,XA2 ?K66 ( ?KKQ SMO 3 [USE JUMP TABLE TO INTERPRET ?L5B BRN £ [REQUIRED ACTION ?LK2 BRN Y3 [STAY HERE ?M4L BRN Y2 [GO TO OTHER MACHINE ?MJ= BRN Y3 [STAY HERE ?N3W BRN Y2 [GO TO OTHER MACHINE ?NHG # ?P36 XA2 ?PGQ ) ?Q2B FSHCODE B,XB8 ?QG2 ( ?Q^L SMO 3 [USE JUMP TABLE TO INTERPRET ?RF= BRN £ [REQUIRED ACTION ?RYW BRN Y3 [STAY HERE ?SDG BRN Y2 [GO TO OTHER MACHINE ?SY6 BRN Y2 [GO TO OTHER MACHINE ?TCQ BRN Y3 [STAY HERE ?TXB # ?WC2 XB8 ?WWL ) ?XB= # ?XTW Y2 LDN 0 5 [SET OPTION '5' ?Y*G CALL 1 XSWOPMC [AND GO TO OTHER MACHINE ?YT6 BRN P17R [JIF NO DATA TO PROCESS ?^#Q BRN P15 [GO TO SET DATA INTO PROGRAM ?^SB # #2#2 Y3 #2RL ) #3?= LDX 3 7 #3QW LDX 4 JPTI(3) #4=G SBX 4 JPTI [X4 WILL CONTAIN NO OF PERIPHERALS #4Q6 TXU 7 X100(1) #59Q BCC WHOLE [IF =#100, ALL LIST REQD #5PB LDX 4 JPTI+1(3) #692 SBX 4 JPTI(3) [X4 WILL CONTAIN NO OF PERS OF REQD #6NL [TYPE #78= BNZ 4 WHOLE [J IF SOME ENTRIES #7MW LDX 5 AWORK3(2) [SET REPLY EQUAL TO TRANSFER ADDRESS #87G BRN P17R [J TO SET REPLY AND RESTART THE PROGR #8M6 WHOLE LDN 0 6 #96Q MPY 4 0 [CORE REQD IN X5 #9LB SETUPCOR 5,1,ADATA,APLIST [GET BLOCK TO HOLD GEN #=62 STOZ A1(1) #=KL LDN 3 A1(1) #?5= LDN 4 A1+1(1) #?JW SBN 5 1 ##4G SMO 5 ##J6 MOVE 3 0 [ZEROISE BLOCK #*3Q LDX 3 1 [KEEP X3 -> START OF BLOCK #*HB LDN 5 #100 #B32 LDX 4 7 #BGL ADN 1 A1 [X1 -> 1ST WORD FOR STORING GEN #C2= SBN 4 #100 #CFW BZE 4 THELOT [J IF ALL REQD #C^G LDN 5 1 #DF6 ADN 4 #100 #DYQ THELOT [HERE X4 HAS PER TYPE,X5 COUNT OF PERS TO #FDB [BE INSPECTED #FKJ ...[ SET X2 = DEVICE LIST ENTRY ADDRESS #FQQ ...[ IN CME, MACRO BRNS TO XCME IF #FXY ...[ DEVICE IS SWITCHED OUT WITH UNIT NO. KNOWN OR IF #G56 ...[ DEVICE IS ANONYMOUS #G=# ... FINDPEREC 2,APFOTY,4,RETRY,,XCME,XCME #GCL BNG 2 MISS [J IF NO MORE TO FIND #GMD ...XCME #GX= STO 4 0(1) [STORE PER TYPE #HBW LGEOG 2,4 [GET GEOG NO #HDS ...[ IF CME, TEST FOR SWITCHED OUT DEVICE AND #HGQ ...[ SET BIT IN PERIPHERAL LIST ENTRY #HJN ... JENVNOT XNOSW,CME #HLL ... JSWIN 2,XNOSW #HNJ ... LDCT 0 #100 #HQG ... ORX 4 0 #HSD ...XNOSW #HWG ORX 4 GSIGN [SET WRONGED BIT #JB6 JWRONG 2,WRONG [J IF WRONGED #JTQ ERX 4 GSIGN [UNSET IT #K*B WRONG STO 4 1(1) [STORE THIS LOT #KT2 JONL 2,ONL [J IF ONLINE #L#L JMT 2,SAMMT [J IF MAG TAPE #LS= BRN NOOL #M?W SAMMT JALLOC 2,SAMMS [J IF IN USE BY GEORGE #MRG BRN NOOL #N?6 SAMMS LDCT 0 #200 [SET ALLOCATED REPLY FOR USER #NQQ ORS 0 1(1) #P=B BRN NOOL #PQ2 ONL LJOBNO 2,4 [GET JOB NUM #Q9L ORX 4 GSIGN [SET ONLINE BIT #QP= STO 4 2(1) [STORE THIS LOT #R8W NOOL LPROP 2,4 #RNG ORS 4 3(1) [STORE PROPS (PHYSICAL) #S86 JMT 2,TSN [J FOR MAG TAPE #SMQ JBACK 2,XCSN [J IF SUSN/CSN TO PICK UP #T7B BRN NOSN #TM2 XCSN #W6L LDX 4 3 [KEEP -> ADATA/APLIST #WL= LADDP 2,3 #X5W LDXC 0 BSUNIT2(3) #XKG BCC NINUSE [J IF NOS IN USE BY GEORGE #Y56 LDCT 0 #200 #YJQ ORS 0 1(1) #^4B NINUSE #^J2 LDCT 0 #20 *23L ANDX 0 BSUNIT(3) *2H= BZE 0 UNENG [J IF CSN NOT THERE *32W LDX 0 BSUNIT5(3) *3GG UNENG LDX 3 4 [RESTORE PTR *426 BRN STOSN *4FQ TSN DFLOAD 2,TSN,0 *4^B STOSN *5F2 STO 0 4(1) *5YL NOSN *6D= LDX 4 0(1) [RESTORE PER TYPE *6XW ADN 1 6 [UPDATE PTR *7CG BRN RETRY *7X6 MISS ADN 4 1 [SET NEXT PER TYPE *8BQ BCT 5 THELOT [IF ALL RETURN FOR NEXT *8WB LDX 2 FX2 *9B2 LDX 4 ACOMMUNE1(2) *9TL LDX 5 ACOMMUNE2(2) [RESTORD *=*= BRN P15 [GO TO MOVE IT ALL IN *=SW # *?#G # THE ROUTINE BELOWS DEALS WITH THE GEORGECORE EXTRACODE *?S6 # IT HAS THE FOLLOWING CONTROL AREA *#?Q # WORD 0 6/0 *#RB # WORD 1 0-THE REPLY WORD **?2 # WORD 2 THE NO. OF WORDS TO BE READ **QL # WORD 3 START ADDRESS OF THE PROGRAM *B== # WORD 4 ADDRESS IN GEORGE'S CORE OF FIRST WORD TO BE READ *BPW # *C9G ZK13 LDN 6 9 *CP6 BRN READOUT *D8Q # X4=BUFFER X5=COUNT X7=GEORGE ADDRESS *DNB X25K *F82 FSHCODE AORB *FML ( *G7= # FOR 'GEOCORE' IN SHARED FILESTORE, THE COUNT WORD OF THE PERI *GLW # INDICATES WHERE THE EXTRACODE IS TO BE CARRIED OUT *H6G # *HL6 LDX 3 5 [COPY THE COUNT WORD AND THEN *J5Q ANDX 5 BITS22LS [CLEAR THE BIT MARKERS (B0,B1) *JKB SLC 3 2 *K52 ANDN 3 3 [FORM MODIFIER FROM BITS 0 & 1 *KJL # *L4= FSHCODE A,XA3 *LHW ( *M3G SMO 3 [USE JUMP TABLE TO GET REQUIRED *MH6 BRN £ [ACTION *N2Q BRN Y5 [STAY HERE (HOME) *NGB BRN Y4 [OTHER MACHINE (AWAY) *P22 BRN Y5 [STAY HERE ('A') *PFL BRN Y4 [OTHER MACHINE ('B') *P^= # *QDW XA3 *QYG ) *RD6 FSHCODE B,XB9 *RXQ ( *SCB SMO 3 [USE JUMP TABLE TO GET REQUIRED *SX2 BRN £ [ACTION *TBL BRN Y5 [STAY HERE (HOME) *TW= BRN Y4 [OTHER MACHINE (AWAY) *W*W BRN Y4 [OTHER MACHINE ('A') *WTG BRN Y5 [STAY HERE ('B') *X*6 # *XSQ XB9 *Y#B ) *YS2 # *^?L Y4 LDN 0 6 [SET OPTION '6' *^R= CALL 1 XSWOPMC [AND GO TO OTHER MACHINE B2=W ADN 3 A1 [SET ABSOLUTE ADDRESS IN CORE B2QG BRN P17A [GO TO PUT DATA INTO PROGRAM B3=6 # B3PQ Y5 B49B ) B4P2 TXL 5 B513 B58L BCS X5OK B5N= LDN 5 512 [ALLOW MAX TRANSFER OF 512 WORDS B67W X5OK TXL 7 CORES B6MG BCC R1 [-VE REPLY IF ILLEGAL GEORGE ADDRESS B776 LDX 3 7 B7LQ LDX 0 7 B86B LDN 7 0 [NO OVERFLOW B8L2 ADX 0 5 B95L SBX 0 CORES B9K= BNG 0 P17A [J IF REQUESTED AREA ALL BELOW LIMIT B=4W SBX 5 0 [...ELSE ADJUST COUNT. B=JG BRN P17A B?46 # B?HQ [ THE ROUTINE BELOW DEALS WITH THE REWIND HLSQ B#3B [ IT HAS THE FOLLOWING CONTROL AREA: B#H2 [ WORD0 52/#111 B*2L [ WORD1 0 -REPLY WORD B*G= ZM111 STOZ AWORK1(2) [RESET MARKER B*^W BRN REWI5 BBFG [ THE ROUTINE BELOW DEALS WITH THE REWIND JOBQ BB^6 [ IT HAS THE FOLLOWING CONTROL AREA BCDQ [ WORD0 52/#112 BCYB [ WORD1 0 -REPLY WORD BDD2 ZM112 STOZ AWORK2(2) [RESET MARKER BDXL BRN REWI5 BFC= [ THE ROUTINE BELOW DEALS WITH THE SCHEDJOB XCODE BFWW [ WORD0 52/#113 BGBG [ WORD1 0 -REPLY WORD BGW6 [ WORD2 NO. OF WORDS IN CONTROL RECORD BH*Q [ WORD3 ADDRESS OF PROGRAMS CONTROL AREA BHTB ZK14 LDN 6 10 [CHANNEL INDICATOR BJ*2 STO 6 AWORK4(2) BJSL LDN 5 4 [LENGTH OF PERI CONTROL AREA BK#= BRN RD2 BKRW ZM113 BZE 5 SILLEGAL [CONTROL RECORD ZERO LENGTH BL?G LDX 7 5 [SAVE REC. LENGTH BLR6 BXL 5 RECL(1),T13L2 [J IF REC.< AOLPT AREA BM=Q LDX 5 RECL(1) BMQB T13L2 LDN 3 HLSCONREC(2) BN=2 LDX 0 GSIGN BNPL STO 0 0(3) BP9= LDN 4 1(3) BPNW SMO RECL(1) BQ8G MOVE 3 511 [SET DEFAULTS BQN6 #UNS ECS BR7Q STOZ 11(3) BRMB LDX 2 AWORK3(2) BS72 LDX 4 5 BSLL CALL 6 XFOUTMOVE2 [CONTROL REC -> AOLPT BT6= LDX 3 HLSCONREC(2) [GET INDX NO. OF CON.REC. BTKW BXGE 3 SCHMAX(1),SILLEGAL [ILLEGAL INDX NO. BW5G SMO FX1 BWK6 LDX 0 SCHLEN(3) BX4Q BXL 0 7,SILLEGAL [CONTROL REC. OVERSIZE BXJB SBN 3 2 BY42 BNG 3 NEEDS [J IF STARTJOB OR RESET BYHL SBN 3 4 B^3= BZE 3 NEEDS [J IF DEWELL B^GW ADN 3 1 C22G BZE 3 WAITMESS [J IF JOBWAIT C2G6 BRN XECUTE C2^Q [ GET ONLINE PERIPHERAL REQUIREMENTS C3FB NEEDS LDXC 4 HLSCONREC+7(2) [PTR. TO NEEDS DATA C3^2 BCS XECUTE [J IF NO NEEDS C4DL CALL 7 XCLEAR [CLEAR HLOCK2 C4Y= LDN 5 1 C5CW CALL 3 RCHECKA [1ST WORD OF NEEDS CHECK C5XG LDN 3 5 C6C6 LDX 2 4 C6WQ LDN 4 1 C7BB CALL 6 XFOUTMOVE2 [X5 = 1ST WORD OF NEEDS C7W2 ANDN 5 #777 C8*L BZE 5 SILLEGAL [J IF NO NEEDS DATA C8T= CALL 7 XCLEAR [CLEAR HLOCK2 C9#W LDX 4 HLSCONREC+7(2) C9SG CALL 3 RCHECKA [CHECK IF NEEDS IN SBJ.PROG. C=#6 SETUPCORE 5,3,ADATA,CSTORE C=RQ LDN 3 A1(3) C??B LDX 2 HLSCONREC+7(2) C?R2 LDX 4 5 C#=L CALL 6 XFOUTMOVE2 [MOVE NEEDS->AOLPT C#Q= MHUNTW 3,ADATA,CSTORE C*9W LDN 0 #777 C*PG ANDS 0 A1(3) CB96 BRN XECUTE CBNQ [ SET UP GMON/HLSOUT FOR JOBWAIT CC8B WAITMESS CCN2 LDX 0 HLSCONREC+2(2) CD7L SBN 0 4 CDM= BNG 0 SETUPBLK CF6W SBN 7 4 CFLG BNG 7 SILLEGAL [J IF NO MESSAGE CG66 ... ADN 7 3 CGKQ [WE ALWAYS SET UP BLOCK TO KEEP MESS NO CH5B SETUPBLK CHK2 SETUPCORE 7,3,GMON,HLSOUT CJ4L ... SBN 7 2 CJJ= STO 7 A1(3) CK3W LDX 2 AWORK3(2) CKHG ADN 2 3 CL36 LDN 3 A1+2(3) CLGQ LDX 4 7 CM2B CALL 6 XFOUTMOVE2 [MOVE CON.REC.->GMON/HLSOUT CMG2 XECUTE CNYW # CODE FOR WAIT,DEWELL AND SWITCH (CONTROL NOS 2,6 AND 7) IS IN CPDG # THE OVERFLOW SEGMENT SCHDJOBA CPY6 LDX 0 HLSCONREC(2) CQCQ SBN 0 2 CQXB BZE 0 XECUTA CRC2 SBN 0 4 CRWL BPZ 0 XECUTA CSTW ACROSS SCHEDJOB,1 CW#Q XECUTA CWSB ACROSS SCHDJOBA,1 CXRL [ THE ROUTINE BELOW DEALS WITH THE RETRIEVE XCODE CY?= [ IT HAS THE FOLLOWING CONTROL AREA CYQW [ WORD0 52/#114 C^=G [ WORD1 0 -REPLY WORD (COUNT OF OUTSTANDING RVS ON EXIT) C^Q6 [ WORD2 JOB NUMBER D29Q ZM114 BZE 5 R1 D2PB FSHCODE B,XB10 D392 ( D3NL # WE CANNOT DEAL WITH COUNTS OF OUTSTANDING RETRIEVES ON 'B' D48= # SO WE MUST GO TO 'A' D4MW # D57G LDN 0 7 [SET OPTION '7' D5M6 CALL 1 XSWOPMC [AND TRANSFER TO 'A' D66Q # D6LB XB10 D762 ) D7KL FSHSKIP B,XB11 D85= ( D8JW LDN 6 0 [SET ZERO COUNT D94G JOBLOCK 5,3 [FIND JOBLOCK D9J6 BNG 3 SAMNW [J NONE PRESENT D=3Q HLSAV 3,SET,SAVING,JOBQ,SAMNW [CHECK AND J IF JOB BEING SAVED D=HB FCAJO 2,3 [FIND CPAT D?32 LDEX 3 CLONG1(2) [CHECK IF JOB IS WAITING FOR A RE D?GL LDN 2 #24 D#2= TXU 2 3 D#FW BCS SAMNW [J IF NOT D#^G LDN 6 1 [SET COUNT IF IT IS D*F6 SAMNW D*YQ OUTRVCT 5,5 [PUT COUNT OF OUTSTANDING... DBDB ADX 5 6 [ADD NO. OF NON-AUTONOMOUS RETRIE DBY2 # DCCL XB11 DCX= ) DDBW BRN P17R [RVS IN X5 (X5=JOBNO ON ENTRY) DDWG [ THE ROUTINE BELOW DEALS WITH THE WHATSTATE XCODE(STARTED JOBS) DFB6 [ IT HAS THE FOLLOWING CONTROL AREA: DFTQ [ WORD0 52/#115 DG*B [ WORD1 0 -REPLY WORD DGT2 [ WORD2 NO. OF WORDS TO BE READ DH#L [ WORD3 ADDRESS OF PROGRAM'S BUFFER DHS= [ WORD4 JOB NUMBER DJ?W ZM115 BNG 7 R1 [ERROR... DJRG BZE 7 R1 [...NO SUCH JOB NUMBER DK?6 STO 7 ACOMMUNE1(2) DKQQ ACROSS WSJOBS,1 [GET WS INFORMATION DL=B ZK30 HUNTW 3,CQPRINT,CQ11 DLQ2 BNG 3 R1 [J IF NO SUCH JOB DM9L LDX 0 GSIGN DMP= ERS 0 A1(3) [REMOVE XCODE IND. FROM JOB N0. DN8W STO 3 ACOMMUNE7(2) DNNG CALL 6 XFOUTMOVE [REREAD CONTROL AREA DP86 LDX 3 ACOMMUNE7(2) [X3-> CQPRINT/CQ11 DPMQ LDX 4 ACOMMUNE2(2) [X4-> BUFFER DQ7B LDX 5 ACOMMUNE1(2) [X5 = LENGTH DQM2 BRN P15 [ OUTPUT RESULTS DR6L DRL= SILLEGAL DS5W LDX 1 FX1 DSKG TOPCA PLINK2(1) [SET LINK FOR ILLEGAL ILLINS MESSAGE DT56 COOR1 DTJQ BRN REPEAT DW4B RILLEGAL DWJ2 # THE PERI IS ILLEGAL,TRANSFER TO PROCESS CONTROL ACTIVITY DX3L TOPCA PLINK1(1) DXH= COOR1 DY2W DYGG D^26 REPEAT D^FQ SMO AWORK4(2) [SINCE THIS IS LEFT SET AS THE ENTRY D^^B BRN REENTRYPT [ ALINK2 OF AOLPT),A SWITCH TABLE IS F2F2 REENTRYPT [ J.TO THE APPROPIATE ENTRY POINT F2YL [ (X6) = EXTRACODE NO. F3D= BRN ZK3 F3XW BRN ZK3 F4CG BRN ZK15 F4X6 BRN ZK7 F5BQ BRN P30 F5WB BRN P40 F6B2 BRN ZK10 F6TL BRN ZK12 F7*= BRN ZK11 F7SW BRN ZK13 F8#G BRN ZK14 F8S6 F9?Q F9RB READOUT [FIRST CHECK MODE FOR ED PERIS F=?2 STO 6 AWORK4(2) [EXTRACODE NO. F=QL LDN 5 5 F?== LDX 0 EVENT4(2) F?PW ANDN 0 #7777 F#9G BZE 0 RD2 [J IF NORMAL CASE FOR ED F#P6 TXU 0 XCLOSE(1) F*8Q BCC XCL F*NB BRN SILLEGAL [OTHERWISE ILLEGAL MODE FB82 RD1 STO 6 AWORK4(2) [EXTRACODE NO. FBML LDEX 0 EVENT4(2) FC7= SBN 0 2 FCLW BZE 0 RD2 [J IF MODE 2 FD6G SBN 0 5 FDL6 BNZ 0 SILLEGAL [J UNLESS MODE 7 FF5Q LDX 7 6 [NOW IF EXTRACODE NO 2 OR 3 FFKB SBN 7 4 [MODE 7 IS ALLOWED & IS REWIND FG52 TXU 7 SA1(1) FGJL BCC REWI FH4= BNZ 7 SILLEGAL FHHW REWI LDX 4 EVENT2(2) FJ3G CALL 3 RCHECKA FJH6 SMO 7 [X7=1 FOR JOBQ, 0 FOR HLSQ FK2Q STOZ AWORK1(2) FKGB REWI5 LDN 5 0 FL22 BRN P17R [SET REPLY AND FINISH FLFL RD2 FL^= LDX 4 EVENT2(2) [ADDR OF PCA FMDW CALL 3 RCHECKA [CHECK CONTROL AREA IS WITHIN SUBJEC FMYG [RESERVATIONS AND SET X4=SUBJ PROG'S FND6 CALL 6 XFOUTMOVE [MOVE OUT CONTROL AREA FNXQ LDX 4 ACOMMUNE2(2) [X4->BUFFER FPCB LDX 5 ACOMMUNE1(2) [X5=LENGTH FPX2 LDX 7 ACOMMUNE3(2) [X7=ADDITIONAL INFORMATION FQBL STO 4 AWORK3(2) [SAVE ADDR. OF BUFFER FQW= LDEX 0 EVENT4(2) FR*W SBN 0 RVMODE FRTG BZE 0 ZM114 [J IF RETRIEVE XCIODE FS*6 LDEX 0 EVENT4(2) FSSQ SBN 0 #111 FT#B BZE 0 ZM111 [J IF REWIND HLSQ EXTRACODE FTS2 SBN 0 1 FW?L BZE 0 ZM112 [J IF REWIND JOBQ EXTRACODE FWR= BZE 5 P16A [J IF ZERO WORDS TO BE READ FX=W FSHCODE AORB FXQG ANDX 5 BITS22LS [MAKE SURE M/C BITS ARE UNSET FY=6 CALL 3 RCHECKA FYPQ FSHCODE AORB F^9B LDX 5 ACOMMUNE1(2) [RECOVER COUNT WORD (WITH M/C BITS) F^P2 SMO AWORK4(2) [CONTROL SWITCHES TO THE INSTRUCTION G28L BRN SWITCH [ THE APPROPRIATE BRN READOUT USING T G2N= SWITCH [ IN X6(SET ON ENTRY,=0 FOR K1,=1 FOR G37W BRN ZK1D [ OPERATE ON THE SWITCH TABLE G3MG BRN ZK1D G476 BRN P1 G4LQ BRN P11 G56B BRN P30R G5L2 BRN P40R G65L BRN P50R [RETURN TO INSTPARA EXTRACODE G6K= BRN P60 [RETURN TO PERILIST EXTRACODE G74W BRN S6 [RETURN TO HLSTEMP EXTRACODE G7JG BRN X25K [RETURN TO GEORGECORE XCODE G846 BRN ZM113 G8HQ # TO CLOSE DOWN THE 'FILE' G93B XCL RELOFP HLSPTYPE(2) G9H2 G=2L ZK4 G=G= UNPLUG G=^W ILLEGAL RESVIOL G?FG R1 LDX 5 GSIGN G?^6 BRN P17R [GO TO STORE -VE REPLY G#DQ ZK5 G#YB UNPLUG G*D2 ILLEGAL ILLINS G*XL FSHCODE AORB GBC= ( GBWW XSWOPMC GCBG # GCW6 # THE FOLLOWING S/R IS USED TO SWOP FROM ONE MACHINE TO THE OTHER GD*Q # USING A 'SUPERVISORY' TRANSBEG. IT STORES THE OPTION INDICATOR GDTB # INTO ACOMMUNE4 AND A RELATIVISED LINK INTO ACOMMUNE5 GF*2 # GFSL SBX 1 FX1 GG#= STO 0 ACOMMUNE4(2) [STORE OPTION INDICATOR GGRW STO 1 ACOMMUNE5(2) [STORE RETURN LINK GH?G # GH*9 ...# GHBY ...# ERROR RECOVERY DEMANDS A /FSHAMBLES BLOCK WITH A LINK TO THE ERROR GHDM ...# ROUTINE GHGB ...# GHJ5 ... SETNCORE 1,3,FSH,FSHAMBLES [SET UP THE /FSHAMBLES BLOCK AND GIVE GHKS ... LDX 0 X31HLSREAD(1) [IT A LINK GHMH ... STO 0 FSHCDLINK(3) GHP= ...# GHR6 TRANSBEG FSHHLSEXID,FSHHLSRD,1,NOBLOCKS,,ACOMMUNE8,XCANTSWOP,SUP GHY# ...# GJ5G ... MFREEW FSH,FSHAMBLES [ERROR BLOCK WAS NOT NEEDED!!!! GJ=Q # GJCY ... SMO 3 [NOW APPLY THE OFFSET SUPPLIED BY THE GJK6 ... BRN £ [OTHER MACHINE GJQB BRN R1 [ERROR REPLY EXIT GK=2 BRN XSWOPMCX [OK REPLY - NO DATA BLOCK GKPL MHUNTW 3,FSH,HLSTRANSFER [OK REPLY - FIND DATA BLOCK SENT GL9= # GLNW XSWOPMCX GM8G LDX 0 ACOMMUNE5(2) [PICK UP LINK AND EXIT GMN6 SMO FX1 GN7Q EXIT 0 0 GN?M ...# GNCJ ...X31HLSREAD GNHF ... LINK HLSREAD,31 GNMB # GP72 # GP=6 ...ZK31 [ERROR RECOVERY ENTRY POINT: TIDY UP AND GIVE ERROR REPLY GP*= ...# GPDB ... FSHACCWK [RESTORE LINK, ACCS AND AWORKS GPHG ...# GPLL XCANTSWOP GQ6= # GQKW # STANDARD ERROR REPLY IF THE LINK IS NOT RUNNING GR5G # GR*# ... MFREEW FSH,FSHAMBLES [GET RID OF ERROR RECOVERY BLOCK GRK6 LDN 5 #101 GS4Q ORX 5 GSIGN [SET REPLY = #40000101 GSJB BRN P17R [AND GO TO RUN SUBJECT PROGRAM GT42 ) GTHL FSHCODE B,XB13 GW3= ( GWGW # GX2G SCOPYBLOCK GXG6 # GX^Q # SHARED FILESTORE: THIS SUBROUTINE IS USED TO MAKE A COPY GYFB # OF A JOB BLOCK AND TO SET A BIT IN THE COPY TO INDICATE THAT GY^2 # THE JOB IS ACTUALLY IN 'B' G^DL # G^Y= # THE BIT THAT IS USED IS 'JBFSHALIEN' WHICH CANNOT BE SET IN THE H2CW # HOME COPY OF ANY JOB BLOCK!! H2XG # H3C6 # ON ENTRY: X3 POINTS TO THE JOB BLOCK TO COPY H3WQ # X7 HOLDS THE JOB NUMBER H4BB # H4W2 # ON EXIT: X3 POINTS TO THE COPY OF THE JOB BLOCK H5*L # H5T= SBX 6 FX1 [PROCESS LINK AND GET BLOCK FOR COPY H6#W SETUPCOR ALOGLEN(3),3,FSH,HLSTRANSFER H6SG ADX 6 FX1 [RE-INSTATE THE LINK H7#6 # H7RQ # H8?B FINDJOBQ 2,7,SGONE [FIND THE ORIGINAL JOB BLOCK H8R2 LDX 0 ALOGLEN(2) H9=L BXU 0 ALOGLEN(3),SGONE [JIF THE BLOCK LENGTH HAS CHANGED H9Q= # H=9W LDN 0 A1(2) [GET SOURCE ADDRESS FOR MOVE H=PG LDN 1 A1(3) [GET TARGET ADDRESS FOR MOVE H?96 SMO ALOGLEN(3) [COPY THE WHOLE BLOCK OVER H?NQ MOVE 0 0 H#8B # H#N2 BS 3,JBFSHALIEN [SET THE BIT INDICATING 'B' M/C JOB H*7L LDX 2 FX2 H*M= EXIT 6 1 [RETURN TO CALLING ROUTINE - COPY OK HB6W # HBLG SGONE FREECORE 3 [COPY HAS FAILED - SO FREE COPY BLOCK HC66 EXIT 6 0 [ERROR RETURN TO CALLING ROUTINE HCKQ # HD5B XB13 HDK2 ) HF4L #END ^^^^ ...672666170002