{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: TWINSETB866)}}
====== TWINSETB866 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COOR3|COOR3]], [[george:macro:COOR4|COOR4]], [[george:macro:DEMANDX|DEMANDX]], [[george:macro:DERING|DERING]], [[george:macro:DERINGD|DERINGD]], [[george:macro:DESUSPEND|DESUSPEND]], [[george:macro:DOWN|DOWN]], [[george:macro:ENRING|ENRING]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:FINDEXOF|FINDEXOF]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETCORE|GETCORE]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:IPCLOSE|IPCLOSE]], [[george:macro:IPCREP|IPCREP]], [[george:macro:LADDP|LADDP]], [[george:macro:LONGCLEAR|LONGCLEAR]], [[george:macro:LONGOFF|LONGOFF]], [[george:macro:LONGSET|LONGSET]], [[george:macro:LONGSTOP|LONGSTOP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MOVLONG|MOVLONG]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:RINGTWO|RINGTWO]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:SUSPEND|SUSPEND]], [[george:macro:TCLOSE|TCLOSE]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TRACE|TRACE]], [[george:macro:TWINCT|TWINCT]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
22FL ...#SEG TWINSETB70 [FRANK BLUNDELL
22^= #LIS K0TWINSET>K0TWINSETB
23DW 8HTWINSETB
23YG #
24D6 #
24XQ # THIS SEGMENT MAINLY DEALS WITH THE MACROS PLOCKSU,TPLOCKSU,CHAREA,
25CB # CHFILE,ANYUSERS,FIPPER,AUTWIN,PHOLD AND BOTTONOLE
25X2 #
26BL # ALSO DEALS WITH CLOSING IPC LINKS WHEN TWIN INITIALISE IS REISSUE
26W= #
27*W # ALSO OUTPUTS MESSAGES DEMANDING INITIALISATION OR STATE
27HN ... SEGENTRY K1TWINSETB
27KL ... +0
28*6 SEGENTRY K2TWINSETB,QK2
28SQ SEGENTRY K3TWINSETB,QK3
29#B SEGENTRY K4TWINSETB,QK4
29S2 SEGENTRY K5TWINSETB,QK5
2=?L SEGENTRY K7TWINSETB,QK7
2=R= SEGENTRY K8TWINSETB,QK8
2?=W SEGENTRY K9TWINSETB,QK9
2?QG SEGENTRY K10TWINSETB,QK10
2#=6 SEGENTRY K11TWINSETB,QK11
2#JG ... SEGENTRY K12TWINSETB,QK12 [TCLOSE
2#PQ #
2*9B #
2*P2 RQ +ENTIN24 [PLEASE ISSUE TWIN COMMAND GIVING
2B8L [..STATE OF OTHER PROCESSOR
2CMG #
2D76 #
2DLQ # SET UP ESEND AND ENLINK
2F6B XBLKS
2FL2 SBX 6 FX1
2G5L SETNCORE ENLINKLEN,1,EWDAS,ENLINK,,1 [LINK BLOCK
2GK= SETNCORE ESENDLEN,1,EWDAS,ESEND,,1 [DATA BLOCK
2H4W MHUNTW 3,EWDAS,ENLINK
2HJG STO 7 ENRQ(3) [STORE REQUEST TYPE
2J46 STO 7 ENMARK(1)
2JHQ STOZ ENRP(3) [CLEAR REPLY
2K3B ADX 6 FX1
2KH2 EXIT 6 0
2L2L #
2LG= # TO WAIT
2L^W #
2MFG XHALT
2M^6 SBX 6 FX1
2NDQ ...TENT COOR4 HOLDWT
2PXL MHUNTW 3,EWDAS,ENLINK
2QC= LDX 0 ENRP(3)
2QWW BZE 0 TENT [WAIT AGAIN IF NO REPLY
2RBG ADX 6 FX1
2RW6 EXIT 6 0
2S*Q #
2STB XHERR GEOERR 1,BROKENIN
2T*2 #
2TSL #
2W#= #
2WRW ...# THIS PART DEMANDS STATE
2X?G #
2XDN ...QK2 [******
2^PL XCAT LDN 4 0 [FIRST TIME
329= XCANT LONGSET EPWT,XSET
338G LDCT 5 #20
33N6 ANDX 5 ETWINMK
347Q BZE 5 XFIN [J IF DONE
34MB LDX 6 RQ(1)
3572 TV1 BNZ 4 XRENT [J IF ALREADY O/P MESS
35LL LDN 4 1
366= LDN 5 1
36KW DEMANDX 5,6,XCAT,XHERR,XRENT,2 [PUMP OUT REQUEST
375G BRN XCANT [J AND SEE IF ANYTHING HAPPENED
3?2G XFIN LONGOFF
3?G6 SUICIDE
3?^Q #
3#FB #
3#^2 #
3*DL #
3*Y= #
3BCW #
3BXG #
3CC6 # THIS PART IMPLEMENTS THE FOLLOWING MACROS:-
3CWQ # CHAREA,CHFILE,FIPPER,ANYUSERS
3DBB #
3DW2 # ON ENTRY ACOMMUNE7 : B0=1 B1-B23 REQUEST TYPE (EXCEPT CHFILE)
3F*L # B0-B23 MODE OF OPENING (CHFILE ONLY)
3FT= # ACOMMUNE8 : WORD ADDRESS OF AREA (CHAREA) OR WORD
3G#W # ADDRESS OF FIC
3GSG # ACOMMUNE9 = SUSN
3H#6 #
3HRQ QK3 [******
3J?B LDN 6 ACOMMUNE7(2)
3JR2 LDN 7 AWORK1(2)
3K=L MOVE 6 3 [MOVE PARAMETERS TO AWORK WORDS
3KQ= MFINDSU 1,AWORK3(2) [FIND ASTUC
3L9W LADDP HUNIT(1),1 [AND APIA
3LPG LDCT 0 #10
3M96 ANDX 0 BSUNIT(1) [AND CHECK IF WE HAVE THE LOCK-OUT
3MNQ BNZ 0 Y8088
3MTD ... LDXC 0 ETWINMK
3MX2 ... BCS XIPB [J IF NOT INITIALISED
3MYJ ... ANDN 0 IPBDOWN+GEODOWN
3P7L BZE 0 Y1 [J IF NOTHING WRONG
3PM= ANDN 0 IPBDOWN
3Q6W BNZ 0 XIPB [J IF IPBDOWN
3QLG BRN XOK
3R66 Y8088 GEOERR 1,NOLOCKOT
3RKQ Y1 SETNCORE ESENDLEN,1,EWDAS,ESEND,,1 [SET UP DATA BLOCK
3S5B LDN 6 AWORK2(2)
3SK2 LDN 7 ENHOME(1)
3T4L MOVE 6 2 [MOVE IN HOME AND SUSN
3TJ= LDXC 7 AWORK1(2)
3W3W BCS Y2 [J IF NOT FILE INTEG CHECK
3WHG SBN 7 #200
3X36 BZE 7 Y2A [J IF READ
3XGQ LDCT 0 #400 [ELSE SET MKR
3Y2B ORS 0 ENSUSN(1) [ELSE INDICATE WRITE BY SETTING B0
3YG2 Y2A LDN 7 GCHF [SET REQUEST TYPE FOR CHFILE
3Y^L Y2 STO 7 ENMARK(1)
3^F= SETNCORE ENLINKLEN,3,EWDAS,ENLINK,,1 [SET UP LINK BLOCK
3^YW MHUNTW 1,EWDAS,ESEND
42DG TWINCT [GET TRANSFER IDENTIFIER
42Y6 STO 0 ENSTART(1) [AND STORE
43CQ LDX 6 ENHOME(1)
43XB STO 6 BACK1(3) [STORE HOME IN ENLINK
44C2 LDX 6 ENSUSN(1)
44WL STO 6 BACK2(3) [AND SUSN (FOR USE WHEN IPB GOES INOP
45B= #SKI K6TWINSETB>99-99
45TW TRACE ENSTART(1),K3TB
46*G #SKI K6TWINSETB>99-99
46T6 TRACE ENMARK(1),REQ
47#Q STO 0 ENBR(3) [
47SB STO 7 ENRQ(3) [STORE REQEST TYPE
48#2 STOZ ENRP(3) [CLEAR REPLY WORD
48RL LDN 0 HOLDWT
49?= STO 0 ENWTS(3) [WA9TING STYLE
49QW CALL 7 SETOFF [SET OFF TWINNING ACTIVITY
4==G CALL 6 XHALT
4=Q6 LDX 7 ENRP(3) [GET REPLY B0=1 OK; ELSE B23=1 IF INT
4?9Q FREECORE 3 [B22=1 IF IPB FAIL
4?PB BNG 7 XOK
4#92 SBN 7 1
4#NL BZE 7 XINTEG [J IF INTEGRITY FAIL
4*8= SBN 7 1
4*MW BZE 7 XIPB [J IF IPB WRONG
4B7G SBN 7 2
4BM6 BZE 7 XOK [J IF GEORGE DOWN
4BWX ... SBN 7 3
4B^G ... BZE 7 XIPB [J IF NOT INITIALISED
4C6Q BRN N4
4CLB XIPB UPPLUS 2
4D62 #
4DKL # INTEGRITY FAIL
4F5= #
4FJW XINTEG
4G4G UPPLUS 1
4GJ6 #
4H3Q # BREAKIN
4HHB #
4J32 XBREAKIN
4J7N ... MFINDSU 1,AWORK1(2)
4J9= ... LADDP HUNIT(1),1
4J=S ... LDX 0 BSUNIT4(1)
4J#B ... SBN 0 1
4J*Y ... BNG 0 ND4
4JCG ... STO 0 BSUNIT4(1) [SUBTRACT 1 FROM COUNT OF USERS
4JGL MHUNTW 3,EWDAS,ENLINK
4JMS ... LDX 0 ENLA+1(3)
4JT2 ... BZE 0 XB1 [^IF ALREADY DECHAINED OTHERWISE
4K2= DERINGD ENLA(3) [DECHAIN FROM DATA BLOCK
4KFW ...XB1 FREECORE 3
4K^G UP
4LF6 #
4LYQ #
4MDB # REPLY OK
4MY2 #
4NCL XOK UPPLUS 3
4NX= #
4PBW XSET GEOERR 1,LONGSET [LONGWAIT FIELD ALREADY SET
4PWG #
4QB6 # THIS PART IMPLEMENTS PLOCKSU
4QTQ #
4R*B # ON ENTRY ACOMMUNE9 CONTAINS SUSN
4RT2 #
4S#L XMESS4 +ENTIN8 [STORAGE UNIT %A NOT SEARCHED DUE TO
4SS= [PROCESSOR LINK FAILURE
4T?W #
4TRG #
4W?6 QK11 [******
4WQQ NGNC 0 1
4X=B QK4 [******
4XQ2 LDN 0 0
4Y9L STO 0 AWORK2(2) [REMEMBER WHICH VERSION
4YP= LDN 5 0 [MKR FIRST TIME ROUND
4^8W LDX 0 ACOMMUNE9(2)
4^NG STO 0 AWORK1(2) [SAVE SERIAL NUMBER
4^R9 ...ND2 MFINDSU 1,AWORK1(2)
4^S6 ... LDX 4 GEOGU(1)
4^T3 ... LADDP HUNIT(1),1
4^TY ... LDX 0 BSUNIT3(1)
4^WT ... ANDN 0 #10
4^XQ ... BZE 0 ND1 [J IF STATUS CHANGE NOT IN PROGRESS
4^YM ... COOR3 KTSCTF [ELSE WAIT
4^^J ... BRN ND2
522F ...ND1 LDN 0 1
523B ... ADS 0 BSUNIT4(1) [UPDATE COUNT OF USERS
53M2 LDCT 0 #10
546L ANDX 0 BSUNIT(1)
54L= BZE 0 N1 [J IF WE HAVE LOCK-OUT
54W3 ... LDXC 0 ETWINMK
54YL ... BCS NOTIN [J IF NOT INITIALISED
555W LONGSET ENDWT,XSET [ANNOUNCE INTENTION TO WAIT
55KG LDN 7 GLK [REQUEST TYPE
5656 CALL 6 XBLKS [SET UP DATA BLOCKS
56JQ STO 4 ENBR(3) [GEOG. NO.
574B STO 4 ENSTART(1)
57J2 #SKI K6TWINSETB>99-99
583L TRACE ENSTART(1),PLOCKSU
58H= LDN 0 ENDWT
592W STO 0 ENWTS(3) [WAITING STYLE
59GG CALL 7 SETOFF [WAKE UP TWINNING ACTIVITY
5=26 LDX 7 AWORK2(2)
5=FQ BNZ 7 N1A [J IF TPLOCKSU
5=^B LDN 2 2
5?F2 LONGSTOP XBREAKIN,XSP,,XENT,2 [WAIT FOR SOMETHING
5?YL BRN N8
5#4H ...N1A
5#8D ... MFINDSU 1,AWORK1(2)
5##* ... LADDP HUNIT(1),1
5#D= ... LDCT 0 #10
5#J7 ... ANDX 0 BSUNIT(1)
5#N4 ... BZE 0 N2 [J IF WE HAVE LOCKOUT
5#R^ ... COOR3 ENDWT [WAIT FOR LOCKOUT
5#XW N8 MFINDSU 1,AWORK1(2) [REFIND ASTUC
5*CG LADDP HUNIT(1),1 [AND APIA
5*X6 MHUNTW 3,EWDAS,ENLINK [FIND REPLY BLOCK
5BBQ LDCT 0 #10
5BWB ANDX 0 BSUNIT(1)
5CB2 BZE 0 N2 [J IF WE HAVE LOCK OUT
5CTL LDX 0 ENRP(3)
5D*= BZE 0 N3A [J IF LOCK-OUT STILL BEING GOT
5DSW LDXC 0 ENRP(3)
5F#G BCS N4 [GEOERR IF OK REPLY BUT NO LOCK-OUT
5FH7 ... SBN 0 7
5FKB ... BZE 0 N8B [J IF NOT INITIALISED
5FMK ... ADN 0 7
5FS6 ANDN 0 2
5G?Q BZE 0 N4 [OR NOT IPB FAIL
5GG2 ...N8B
5GN= ... LDX 7 1 [SAVE APIA PTR
5GRB LDX 0 ENLA+1(3)
5H?2 BZE 0 N7 [J IF RING NULL
5HQL DERINGD ENLA(3) [MAKE NULL
5HTX ...N7 FREECORE 3
5HX2 ... LDX 1 7 [RELOAD APIA PTR
5HY5 ...NOTIN LDX 0 BSUNIT4(1)
5H^8 ... SBN 0 1
5J2? ... BPZ 0 ND3
5J3B ...ND4 GEOERR 1,PLOCKSU [COUNT OF USERS -VE
5J4F ...ND3 STO 0 BSUNIT4(1) [TAKE ONE FROM COUNT OF USERS
5K9G UPPLUS 1 [IPB FAIL
5KP6 #
5L8Q # SPURIOUS INTERRUPT PROBABLY FOR TIME
5LNB #
5M82 XSP MFINDSU 1,AWORK1(2)
5MML LADDP HUNIT(1),1
5N7= MHUNTW 3,EWDAS,ENLINK
5NLW LDCT 0 #10
5P6G ANDX 0 BSUNIT(1)
5PL6 BNZ 0 N3 [J IF HAVENT GOT LOCK-OUT
5Q5Q LONGOFF
5QKB N2 LDX 0 ENLA+1(3)
5R52 BZE 0 N6 [J IF NULL
5RJL DERINGD ENLA(3)
5S4= N6 FREECORE 3
5SHW N1 LDX 0 AWORK1(2) [WE HAVE THE LOCK OUT
5T3G STO 0 ACOMMUNE9(2) [RESTORE FOR PLOCKSU MACRO
5TH6 UPPLUS 2 [OK
5W2Q #
5WGB # TIME HAS COME TO TELL JOB WHY HE'S WAITING
5X22 #
5XFL ...N3A
5XPD ... LONGSET ENDWT,XSET
5X^= BNZ 7 N1A [J IF TPLOCKSU
5YDW N3 BNZ 5 XENT1 [J IF MESSAGE ALREADY O/P
5YYG LDN 5 1
5^D6 OUTPACK AWORK1(2),1,CSN [OUTPUT SERIAL NUMBER
5^XQ LONGSTOP XBREAKIN,XSP,ENTIN9,XENT1
62CB BRN N8 [GO TO SEE IF OK
62X2 N4 GEOERR 1,WRONGREP
63BL #
63W= # SUBROUTINE TO CHAIN DATA BLOCK ON END OF TWINNING ACTIVITY
64*W #
64TG # LINK X7 NO-COORDINATION X3-X7 UNCHANGED
65*6 # ON ENTRY X1 SHOULD PT TO ESEND ; X3 SHOULD PT TO ENLINK
65SQ #
66#B SETOFF
66S2 RINGTWO ENTRGA(1),ENLA(3) [RING THEM TOGETHER
67?L SETOFFA
67R= LDX 2 ENTWINPTR [PTR TO TWINNING ACTIVITY
68=W LDX 2 ACTRING(2)
68QG SBN 2 ACTRING
69=6 LDX 2 BPTR(2)
69PQ CHAIN 1,2 [CHAIN ON END
6=9B LDX 2 ENTWINPTR
6=P2 DESUSPEND [WAKE IT UP
6?8L EXIT 7 0
6?N= #
6#7W #
6#MG #
6*76 QK5 [******
6*LQ ... FINDPEREC 1,APGEOG,ACOMMUNE9(2),,,XCME
6B6B LADDP 1,1
6BL2 LDX 0 BSUNIT3(1)
6C5L ANDN 0 4
6CK= BNZ 0 P1 [J IF WE CAN DISENGAGE
6D4W STO 1 AWORK1(2)
6DJG LDX 4 ACOMMUNE9(2)
6F46 STO 4 AWORK2(2)
6FHQ LDN 7 GHOLD [REQUEST TYPE
6G3B CALL 6 XBLKS [SET UP DATA BLOCKS
6GH2 STO 4 ENBR(3)
6H2L STO 4 ENSTART(1)
6HG= LDN 0 HOLDWT
6H^W STO 0 ENWTS(3)
6JFG CALL 7 SETOFF [START UP TWINNING ACTIVITY
6J^6 CALL 6 XHALT [WAIT
6KDQ LDX 4 ENRP(3)
6KYB FREECORE 3 [FREE ENLINK
6LD2 BZE 4 XHERR
6LXL LDXC 0 4
6MC= BCS P2 [J IF TRANSFERRED OK
6MWW ANDN 0 6
6NBG SBN 0 2
6NW6 BZE 0 P3 [J IF IPB GONE WRONG
6P*Q P1 UPPLUS 1 [IF GEORGE DOWN
6PTB P3 UP [IPB
6Q*2 P2 UPPLUS 2 [TRANSFERRED OK
6QSL #
6R#= #
6RRW # THIS PART AUTONOMOUSLY SENDS A REQUEST (AUTWIN MACRO)
6S?G #
6SR6 Z13 NGNC 4 1
6T=Q QK7 [******
6TQB LDN 4 0
6W=2 SETNCORE ESENDLEN,1,EWDAS,ESEND,,1
6WPL LDN 0 ENTRGA(1) [MAKE RINGS EMPTY
6X9= STO 0 ENTRGA(1)
6XNW STO 0 ENTRGA+1(1)
6Y8G BNZ 4 Z14
6YN6 LDX 0 ACOMMUNE8(2)
6^7Q STO 0 ENMARK(1) [STORE REQUEST TYPE
6^MB SBN 0 GLKT
7272 LDX 6 ACOMMUNE9(2)
72LL BNZ 0 V1A [J IF NOT LOCK
736= MFINDSU 3,6
73KW LADDP HUNIT(3),2
745G LDX 0 BSUNIT4(2)
74K6 BNZ 0 V2 [J IF ANOTHER USER HAS APPEARED
754Q LDCT 0 2
75JB ANDX 0 BSUNIT(2)
7642 BZE 0 V2 [OR IF LOCK-OUT IS NOT REQUIRED
76HL ERS 0 BSUNIT(2) [CLEAR REQUIRED BIT
773= LDCT 0 #10
77GW ORS 0 BSUNIT(2) [SET NOT GOT LOCK-OUT BIT
782G LDX 6 GEOGU(3)
78G6 V1A STO 6 ENSTART(1)
78^Q V1 CALL 7 SETOFFA [CHAIN IN QUEUE
79FB V3 UP
79^2 V2 FREECORE 1
7=DL BRN V3
7=Y= Z14 LDN 0 GRDFIPR
7?CW STO 0 ENMARK(1)
7?XG LDX 0 AWORK3(2)
7#C6 STO 0 ENSTART(1) [NUMBER
7#WQ LDX 0 AWORK1(2)
7*BB STO 0 ENSUSN(1) [SUSN
7*W2 LDX 0 AWORK2(2)
7B*L STO 0 ENHOME(1)
7BT= LDX 0 AWORK4(2)
7C#W STO 0 ESREP(1)
7CSG CALL 7 SETOFFA
7D#6 SUICIDE
7DRQ #
7F?B #
7FR2 #
7G=L #
7GQ= # THIS BIT RE-READS THE FIP AS THE OTHER PROCESSOR HAS ALTERED THEM
7H9W #
7HPG # THE OTHER PROCESSOR HAS THE LOCK-OUT
7J96 #
7JNQ # ON ENTRY AWORK1 SUSN
7K8B # AWORK2 HOME
7KN2 # AWORK3 MESSAGE NUMBER
7L7L #
7LM= QK8 [******
7M6W LDX 5 AWORK2(2) [HOME
7MLG LDX 4 AWORK1(2) [SUSN
7N66 #
7NKQ # CHECK EXOF STILL THERE
7P5B #
7PK2 LDN 1 BCCB
7Q4L Z8 LDX 1 BPTR(1)
7QJ= TXU 1 CXCC
7R3W BCC Z7 [J IF END OF CHAIN
7RHG LDX 0 BACK2(1)
7S36 BZE 0 Z7 [OR NO MORE EXOFS
7SGQ TXU 4 ASUSN(1)
7T2B TXU 5 HOME(1)
7TG2 BCS Z8 [J NOT THIS EXOF
7T^L LDX 6 0 [REMEMBER EXOF NO.
7WF= SETNCORE GEXDLEN,3,EWDAS,GEXD[SET UP GEXD
7WYW STOZ A1(3) [AND ZEROISE
7XDG LDN 7 A1(3)
7XY6 LDN 0 A1+1(3)
7YCQ MOVE 7 GEXDLEN-1
7YXB STO 4 ESERL(3) [STORE SUSN
7^C2 FINDEXOF 1,6,Z12 [FIND EXOF IN CCB CHAIN
7^WL LDX 7 ALOGLEN(1)
82B= GETCORE 7,1 [GET CORE FOR DUMMY EXOF
82TW MHUNT 3,EWDAS,GEXD
83*G FINDCORE 2 [PTR TO NEW ONE
83T6 LDN 2 ATYPE(2)
84#Q FINDEXOF 1,6,Z9 [
84SB LDN 1 ATYPE(1)
85#2 ... ADN 7 A1-ATYPE
85RL ... MOVLONG 1,2,7 [ALLOWS FOR > 512 WORD MOVE
86?= LDN 0 BOPEN+BSPEC+BSERL+BLOCK
86QW STO 0 EXMARK-ATYPE(2) [PARAMS FOR EXOPEN
87=G DOWN EXOPEN,1
87Q6 MHUNTW 3,EWDAS,GEXD
889Q LDX 7 EMARK(3)
88PB TESTREP OK,Z10
8992 TESTREP EXFAIL,Z15 [J IF UNSUCCESSFUL
89NL Z16 GEOERR 1,EXOPENRP
8=8= Z10 FREECORE 3
8=MW MHUNTW 3,EWDAS,EXOF
8?7G FINDEXOF 1,6,Z12
8?M6 LDX 0 BACK2(1)
8#6Q STO 0 BACK2(3) [TRANSFER EXOF NUMBER
8#LB LDX 7 1
8*62 CHAIN 3,7 [CHAIN NEW EXOF
8*KL LDX 3 7
8B5= BRN Z12
8BJW Z9 SBN 2 ATYPE
8C4G FREECORE 2
8CJ6 Z12 FREECORE 3
8D3Q Z7 LDCT 0 #400
8DHB Z17 STO 0 AWORK4(2)
8F32 BRN Z13
8FGL #
8G2= # TRANSFER FAIL
8GFW #
8G^G Z15 ANDN 7 ARITE+AFAIL+ANFOUND
8HF6 BZE 7 Z16
8HYQ MFREE EWDAS,EXOF
8JDB MFREE EWDAS,GEXD
8JY2 LDN 0 2
8KCL BRN Z17
8KX= # THIS PART CLOSES THE IPB LINKS
8LBW #
8LWG # AT THE STAGE THERE SHOULD BE NO WRITE OUTSTANDING
8MB6 #
8MTQ QK9 [******
8N*B LDCT 0 #400
8NT2 ORN 0 JICLSE
8P#L ORS 0 ETWINMK [SET NOT INITIALISED AND CLOSE MKRS
8SQ2 #
8T9L # SEARCH FOR ESEND WITH CLOSE REQUEST
8TP= #
8W8W ZA LDX 3 FX2
8WNG Z2 HUNT2J 3,EWDAS,ESEND,,Z1
8X86 LDXC 0 ENMARK(3)
8XMQ BCS Z2
8Y7B SBN 0 CLIP
8YM2 BNZ 0 Z2 [J NOT CLOSE REQUEST
8^6L LDN 0 ENTRGA(3)
8^L= TXU 0 ENTRGA+1(3)
925W BCC Z1 [ERROR IF LINK EMPTY
92KG LDX 0 ENTRGA+1(3)
9356 BZE 0 Z1 [OR NULL
93JQ LDX 4 ENTRGA(3)
944B DERING ENTRGA(3) [DERING ENLINK
94J2 FREECORE 3 [FREE ESEND
953L LDX 1 4
95H= ENRING 1,ETBRING(2) [CHAIN ON END OF JOB RING
962W ACROSS TWINSETA,4 [WAIT FOR READ TO FINISH
96GG #
9726 # COMES BACK HERE WHEN IT HAS
97FQ #
97^B QK10 [******
986J ... TCLOSE
98YL #
99D= # LOOK FOR ENLINK
99XW #
9=CG ZB LDX 3 ETFRING(2) [START OF QUEUE
9=X6 Z4 LDN 0 ETFRING(2)
9?BQ TXU 0 3
9?WB BCC Z1 [ERROR IF NOT THERE
9#B2 SBN 3 ENLA
9#TL LDX 0 ENRQ(3)
9**= SBN 0 CLIP
9*SW BZE 0 Z3 [J IF CLOSE
9B#G LDX 3 ENLA(3)
9BS6 BRN Z4 [GET NEXT
9C?Q Z3 LDCT 0 #400
9CRB STO 0 ENRP(3)
9D?2 LDX 2 3
9DQL LDX 1 ENWTS(3) [GET WAITING STYLE
9F== Z5 LDX 2 BPTR(2) [LOOK BACK FOR ACTIVITY
9FPW LDX 0 ATYPE(2)
9G9G TXL 0 CACT
9GP6 BCS Z5 [J IF NOT
9H8Q LONGCLEAR 2,0(1),Z6
9HNB Z6 DERINGD ENLA(3) [DECHAIN ENLINK
9S22 ACROSS TWINSETA,1
9S2B ...[
9S3G ...QK12
9S3W ...[
9S4= ...[ CLOSE LINKS - TCLOSE MACRO
9S4L ...[
9S52 ... LDX 0 ETWINMK
9S5B ... ANDN 0 JOFR
9S5Q ... BNZ 0 NRL [J IF READ LINK NOT OPEN
9S66 ... LDX 5 ETWINMK
9S6G ... ANDN 5 JROUTS
9S6W ... BZE 5 RLC [J IF NO READ OUTSTANDING
9S7= ...RCR IPCREP R,3
9S7L ... BPZ 3 RLCF [J IF READ FINISHED
9S82 ... SUSPEND [ELSE WAIT
9S8B ... BRN RCR
9S8Q ...RLCF ERS 5 ETWINMK [CLEAR READ OUTSTANDING MARKER
9S96 ...RLC IPCLOSE R,ZCAN [CLOSE READ LINK
9S9G ...NRL LDX 0 ETWINMK
9S9W ... ANDN 0 JNOCHAT
9S== ... BNZ 0 NWL [J IF WRITE LINK NOT OPEN
9S=L ... LDX 5 ETWINMK
9S?2 ... ANDN 5 JIOUTS
9S?B ... BZE 5 WLC [J IF NO WRITE OUTSTANDING
9S?Q ...WCW IPCREP W,3
9S#6 ... BPZ 3 WLCF [J IF FINISHED
9S#G ... SUSPEND [ELSE WAIT
9S#W ... BRN WCW
9S*= ...WLCF ERS 5 ETWINMK [CLEAR WRITE OUTSTANDING MKR
9S*L ...WLC IPCLOSE W,ZCAN
9SB2 ...NWL LDCT 0 #400
9SBB ... ORN 0 JNOCHAT+JOFR [SET NOT OPEN MKRS
9SBQ ... ORS 0 ETWINMK
9SC6 ... LDN 0 JICLSE
9SCG ... ANDX 0 ETWINMK
9SCW ... ERS 0 ETWINMK [CLEAR CLOSING MKR
9SD2 ... LDN 0 7 [NOT INITIALISED REPLY
9SD6 ... STO 0 ACOMMUNE2(2)
9SD= ... DOWN TWINSETD,5 [PUT NOT INITIALISED REPLY IN ESENDS
9SDL ... UP
9SFL #
9S^= ZCAN GEOERR 1,NO CLOSE
9TDW Z1 GEOERR 1,OUTSTAND
9TNN ...XCME GEOERR 1,NOTCME
9TYG #
9WD6 MENDAREA 50,K99TWINSETB
9WXQ #
9XCB #END
^^^^ ...01241350000100000000