{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: HLSREAD867)}}
====== HLSREAD867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BACKREAD|BACKREAD]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHECKB|CHECKB]], [[george:macro:CLEAR|CLEAR]], [[george:macro:COOR1|COOR1]], [[george:macro:DFLOAD|DFLOAD]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FCAJO|FCAJO]], [[george:macro:FINDJOBQ|FINDJOBQ]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FINMOVE|FINMOVE]], [[george:macro:FOUTMOVE|FOUTMOVE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHACCWK|FSHACCWK]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:HLSAV|HLSAV]], [[george:macro:HUNTW|HUNTW]], [[george:macro:ILLEGAL|ILLEGAL]], [[george:macro:JALLOC|JALLOC]], [[george:macro:JBACK|JBACK]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:JMT|JMT]], [[george:macro:JOBLOCK|JOBLOCK]], [[george:macro:JONL|JONL]], [[george:macro:JSWIN|JSWIN]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LADDP|LADDP]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINK|LINK]], [[george:macro:LJOBNO|LJOBNO]], [[george:macro:LPROP|LPROP]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OLPFIN|OLPFIN]], [[george:macro:OUTRVCT|OUTRVCT]], [[george:macro:PAIR|PAIR]], [[george:macro:RELOFP|RELOFP]], [[george:macro:REPEAT|REPEAT]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SFUB|SFUB]], [[george:macro:SHLSQ|SHLSQ]], [[george:macro:TOPCA|TOPCA]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSBEG|TRANSBEG]], [[george:macro:UNPLUG|UNPLUG]], [[george:macro:VFREEW|VFREEW]], [[george:macro:WRONG|WRONG]], [[george:macro:XCLEAR|XCLEAR]]
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