22FL ...#SEG FAILTWIN80 22^= ...#LIS K0TWINSET>K0FAILTWIN 23DW ... 8HFAILTWIN 23YG ...[ 24D6 ... SEGENTRY K1FAILTWIN,QK1FA [OTHER PROCESSOR INITIALISES 24XQ ... SEGENTRY K2FAILTWIN,QK2FA [OTHER PROCESSOR SAYS HELLO 25CB ... SEGENTRY K3FAILTWIN,QK3FA [REPLY TO HELLO MESSAGE 25X2 ... SEGENTRY K4FAILTWIN,QK4FA [IPB FAILURE 26BL ...[ 2CMG # 2D76 # IPCWRITE SUBROUTINE 2DLQ # 2F6B XIPCWRITE 2FL2 SBX 7 FX1 2G5L DOWN TWINSETD,2 2GK= XIT ADX 7 FX1 2H4W EXIT 7 0 2HJG # 2J46 # 2JHQ # 2K3B # 2KH2 XIPCSTATE [GET STATE IN ACOMMUNE1 2L2L SBX 7 FX1 2LG= DOWN RELIEF,4 [TO DO IPCSTATE 2L^W LDX 3 ACOMMUNE1(2) [LOAD RESULT 2MFG ADX 7 FX1 2M^6 TRACE 3,CSTATE 2NDQ EXIT 7 0 2NYB # 2PD2 XIDENT 2PXL ADN 0 2 2QC= STO 0 EX4 2QWW ... FINDPEREC 3,APGEOG,IPBTWIN,,,XCME 2RBG LRIDENT 3,5,ZND,ZNG 2RW6 STO 5 AWORK3(2) [STORE FIRST WD OF IDENTITY 2S*Q STO 6 AWORK4(2) [STORE SECOND WD OF IDENTITY 2STB # GET UNIQUE NUMBER FROM IDENTIES 2T*2 LDN 1 IDENTITY [PTR TO 1ST WORD OF OUR IDENTITY 2TSL LDN 2 AWORK3(2) [PTR TO 1ST WORD OF THEIRS 2W#= LDN 5 8 [8 CHARACTERS TO CHECK 2WRW NAE LDCH 0 0(1) [FIRST/NEXT WD OF IDENTITY... 2X?G LDCH 3 0(2) [AND OF OTHER PROCESSORS 2XR6 TXU 3 0 2Y=Q BCS NADD [J IF DIFFER 2YQB BCHX 1 £ [UPDATE MODS 2^=2 ... BCHX 2 £ [ 2^PL BCT 5 NAE 329= NADD SBX 0 3 32NW STO 0 AFTERU [STORE UNIQUE NUMBER 32YN ... LDX 2 FX2 338G LDX 5 AWORK3(2) [RELOAD 1ST WORD OF THEIR IDENTITY 33N6 BRN (EX4) [J IF OK 347Q ZND NGNC 0 1 34MB ZNG LDN 0 1 [NOT GEORGE ON OTHER END 3572 SBS 0 EX4 35LL BRN (EX4) [AND EXIT AS APPROPRIATE 366= # 36KW OPENWRITE 375G LDX 2 FX2 37K6 SBX 0 FX1 384Q STO 0 ACOMMUNE9(2) 38JB LDN 3 3 3942 IPCOPEN W,3,5,IPBTWIN [OPEN WRITE LINK 39HL LDX 0 ACOMMUNE9(2) 3=3= ADX 0 FX1 3=GW EXIT 0 0 3=K^ ...# SUBROUTINE TO WAKE ACTIVITIES WAITING FOR IPB (TWAIT MACRO) 3=M2 ...# AND FREE ANY EWDAS/ITCH BLOCKS. X6 LINK 3=N3 ...# 3=P4 ...XIPBD HUNTW 1,EWDAS,ITCH 3=Q5 ... BNG 1 NOIT 3=R6 ... FREECORE 1 3=S7 ... BRN XIPBD 3=T8 ...NOIT LONGON IPBDE 3=W9 ... EXIT 6 0 3=X= ...# 3=Y? ...# 3?2G # 3?G6 # CONSTANTS 3?^Q # 3#^2 XM2 #41773757 3*Y= XM4 #76167777 [CLEARS BITS 5,6,7,11 3CC6 XM10 #77773517 3CWQ # 3DBB # 3DW2 # 3F*L X ANDS 0 ETWINMK [WAKE UP ACTIVITY DEMANDING STATE 3FT= LONGON EPWT [OF OTHER PROCESSOR 3G#W EXIT 6 0 3GSG # 3H#6 # 3HRQ # CLEAR BIT11 OF ETWINMK 3J?B # 3JR2 XB11CL 3K=L LDX 0 ETWINMK 3KQ= ANDX 0 BIT11 3L9W ERS 0 ETWINMK 3LPG EXIT 7 0 3M96 # 3MNQ R23 LDX 2 ACTRING(2) 3N8B SBN 2 ACTRING 3NN2 LDX 2 BPTR(2) 3P7L CHAIN 1,2 [CHAIN ON END 3PM= EXIT 7 0 3Q6W # 3QLG # SUBROUTINE TO DO THE FOLLOWING 3R66 # 3RKQ # X6=0 CHAIN ENLINK ON TO JOBRING 3S5B # 3SK2 # X6 NON ZERO DECHAIN ENLINK FROM ESEND,LONGCLEAR ACTIVITY (IF ANY) 3T4L # AND PUT REPLY IN 3TJ= # 3W3W R1A MHUNTW 3,EWDAS,ESEND 3WHG R1 LDN 0 ENTRGA(3) 3X36 TXU 0 ENTRGA+1(3) 3XGQ BCC R2 [J IF NOTHING CHAINED 3Y2B LDX 4 ENTRGA(3) 3YG2 DERING ENTRGA(3) [ELSE DECHAIN 3Y^L SBN 4 ENLA [PTR TO START OF ENLINK 3^F= LDX 1 4 3^YW STO 6 ENRP(1) [STORE REPLY 42DG BZE 6 R3 [J IF ACTIVITY NOT TO BE WOKEN 42Y6 R4 LDX 1 BPTR(1) [LOOK BACK FOR ACTIVITY 43CQ LDX 0 ATYPE(1) 43XB TXL 0 CACT 44C2 BCS R4 [J NOT ACTIVITY 44WL SMO 4 45B= LDX 3 ENWTS [GET WAITING STYLE 45TW LONGCLEAR 1,0(3),R3A [AND WAKE UP IF WAITING 46*G R3A EXIT 7 0 46T6 R3 ENRING 1,ETBRING(2) [PUT ON END OF JOBRING 47#Q R2 EXIT 7 0 47SB # 48#2 # SUBROUTINE TO GO ROUND JOBRING WAKING UP WAITING ACTIVITIES 48RL # WHOSE NUMBER (X5) AND REQUEST TYPE (X6) AGREE : REPLY IN X4 49?= # 49QW R7 LDX 2 FX2 4==G LDX 3 ETFRING(2) 4=Q6 R7A LDN 0 ETFRING(2) 4?9Q TXU 0 3 4?PB BCC (7) [J IF NO MORE 4#92 SBN 3 ENLA [PTR TO NEXT ENLINK 4#NL #SKI K6TWINSET>99-99 4*8= ( 4*MW LDX 0 ATYPE(3) [CHECK IF ENLINK 4B7G SRL 0 12 4BM6 SBN 0 EWDAS+ENLINK 4C6Q BZE 0 R8 4CLB GEOERR 1,NOT ENLK 4D62 R8 4DKL ) 4F5= BNG 5 R9 [J IF NOT TO CHECK DETAILS 4FJW TXU 6 ENRQ(3) 4G4G TXU 5 ENBR(3) [COMPARE NUMBERS 4GJ6 BCC R9 [J IF MATCH 4H3Q R8F LDX 3 ENLA(3) [GET NEXT 4HHB LDX 2 FX2 4J32 BRN R7A 4JGL R9 LDX 0 ENRQ(3) [REQUEST TYPE 4K2= SBN 0 CLIP 4KFW BZE 0 R8F [IGNORE IF CLOSE 4K^G LDX 0 ENRQ(3) 4LF6 SBN 0 INIT 4LYQ BZE 0 R8F [OR IF INITIALISE 4MDB STO 4 ENRP(3) [STORE REPLY 4MY2 LDX 2 3 4NCL LDX 1 ENWTS(3) [WAITING STYLE 4NX= R10 LDX 2 BPTR(2) [SEARCH FOR WAITING ACTIVITY 4PBW LDX 0 ATYPE(2) 4PWG TXL 0 CACT 4QB6 BCS R10 [J IF NOT ACTIVITY 4QTQ LONGCLEAR 2,0(1),R11 [WAKE UP IF POSSIBLE 4R*B R11 LDX 2 3 4RT2 LDX 3 ENLA(3) [NEXT ON RING 4S#L DERINGD ENLA(2) [DECHAIN 4SS= BRN R7A 4T?W # 4TRG # 4W?6 # SUBROUTINE TO CLEAR LOCK OUT AND SET DISENGAGABLE BY US BIT 4WQQ # FOR ALL SHARED UNITS 4X=B # 4XQ2 R3D CALL 7 X6 [GET DL PTR 4Y9L BRN NOTWINS 4YP= U4 LADDP 3,2 [GET PTR TO APIA 4^8W JSHARED 2,U3 [TO U3 IF SHARED 4^NG UX CALL 7 X3 [GET NEXT 5286 BRN NOMORE 52MQ BRN U4 [GO TO CHECK 537B U3 SMO FX1 53M2 LDX 0 XM4 546L ANDS 0 BSUNIT(2) [CLEAR LOCK-OUT 54L= LDN 0 4 555W ORS 0 BSUNIT3(2) [SET DISENGAGEABLE BY US BIT 55KG BRN UX 5656 NOMORE 56JQ EXIT 6 0 574B # 57J2 NOTWINS 583L GEOERR 1,NOTWINS 58H= # 592W # TO CLEAR WAITING FOR FILE IN OTHER PROCESSOR BIT 59GG # 5=26 WAITCLEAR 5=FQ LDN 1 BCCB 5=^B WT1 LDX 1 BPTR(1) 5?F2 TXU 1 CXCC 5?YL BCC (7) [J IF END 5#D= LDX 0 BACK2(1) 5#XW BZE 0 (7) [OR NO MORE EXOFS 5*CG LDCT 0 #2 5*X6 ANDX 0 EXMARK(1) 5BBQ BZE 0 WT1 [J IF NO ONE WAITING 5BWB ERS 0 EXMARK(1) 5CB2 BRN WT1 5CTL # 5D*= # TO OUTPUT MESSAGES X4= NUMBER X5= IDENTIFIER 5DSW # 5F#G OUTPUT 5FS6 SBX 7 FX1 5G?Q OUTPACK 4,1,VARDEC 5GL6 ...OUTPUT1 5GRB LDN 1 1 5H?2 INFORMX 1,5,1 5HQL ADX 7 FX1 5J== EXIT 7 0 5JPW # 5K9G # 5KP6 TWDA 4HTWDA 5KYX ...XMESS2 +EWRST [TWINNED UNITS %A ARE IN WRONG STATE 5L3G ... [:TWINNING IPC LINKS CLOSED 5L8Q XMESS1 +ENTIN22 [PROCESSORS CONNECTED BY UNIT %A HAVE 5LNB [THE SAME IDENTITY 5M82 # 5MCS ...P1 LDX 0 BIT11 [SET BIT 11 TO INDICATE CRIPPLE 5MML ... ORS 0 ETWINMK [MODE AND GO BACK TO TWINSETA 5MXD ... ACROSS TWINSETA,1 [TO DO WRITE 5N7= T2 ACROSS TWINSETA,2 5NLW # 5P6G # 9N52 # 9NJL # 9P4= # OTHERSIDE HAS COME TO LIFE AND HAS EXECUTED TWIN INITIALISE 9PHW # 9Q3G ...QK1FA [***** HERE IF RECEIVED GHL 9QH6 CALL 6 R3D 9R2Q CALL 7 WAITCLEAR [AND WAITING BITS IF ANY IN EXOF 9RGB LONGON EDFDCLS [WAKE UP PEOPLE WAITING FOR FILES 9S22 LONGON ENDWT [AND LOCK-OUT 9S36 ... CALL 6 XIPBD 9S3P [ 9S5D [ WHILE OTHER PROCESSOR WAS DOWN TN DOWN MAY NOT HAVE BEEN 9S77 [ ISSUED THUS LEAVING (PERHAPS) ON THE QUEUE,WAITING ACTIVITIES. 9S8W [ THIS BIT GIVES THESE STRAGGLERS A KICK. 9S=K [ 9S## NGN 5 1 [WAKE UP ANY ONE 9SB3 LDN 4 4 [GEORGE DOWN REPLY 9SCQ CALL 7 R7 9SNG ...QK2FA [***** HERE IF RECEIVED GHIN 9S^= NGNC 4 1 9TDW V1 LDN 4 0 9TYG CALL 0 XIDENT 9WD6 BRN £ [ERROR IF NOT GEORGE 9WXQ BRN U5 [OR NO DIALOGUE 9X7J ... LDX 1 FX1 9XCB LDX 7 TWDA(1) 9XGG #SKI JSKI11 9XKL BRN U5A [DON'T CHECK IDENTITIES 9XNQ #SKI JSKI11<1$1 9XRW ( 9XX2 TXU 5 IDENTITY 9YBL TXU 6 IDENTITY+1 9YW= BCS U5A [J IF IDENTITIES DIFFER 9^64 ) 9^77 ... BNZ 4 U5 [ERROR IF ENTY FROM K3 OR K4 9^8= ... LDX 0 BIT10 [AS LINKS CAN'T BE ESTABLISHEDIF IDEN 9^9* ... ANDX 0 ETWINMK [ARE EQUAL 9^=D ... BNZ 0 SIA [J ID MESS ALREADY OUTPUT 9^?H ... LDX 0 BIT10 9^#L ... ORS 0 ETWINMK 9^*W LDX 4 IPBTWIN [ELSE OUTPUT ERROR MESSAGE 9^TG LDX 5 XMESS1(1) =2*6 CALL 7 OUTPUT =2G# ...SIA LDX 2 FX2 =2MG ... LDX 4 AWORK1(2) =2SN ... BRN SI =2^W ...U5A LDX 0 BIT10 =374 ... ANDX 0 ETWINMK =3#= ... ERS 0 ETWINMK [CLEAR BIT10 =3FD ...# SHOULD REALLY CHECK IF OTHER PROCESSORS IDENTITY HAS CHANGED =3LL ... LDX 0 ETWINMK =3S2 ANDN 0 JNOCHAT =4?L BZE 0 U6 [J IF WE HAVE DIALOGUE =4R= CALL 0 OPENWRITE =5=W U6 BZE 4 V7770 =5B2 ...[ =5F6 ...[ IF THE WRITE LINK HAS JUST BEEN OPENED PUT UP GHIN =5FL ...[ =5G6 ...[ AND IF BIT11 CLEAR.IPB MAY HAVE GONE ON AND OFFLINE QUICKLY =5GL ...[ IN WHICH CASE THIS PROCESSOR MAY NOT HAVE DETECTED INOPERABLE =5H6 ...[ (I.E. THE TIME OUT PERIOD MAY NOT HAVE EXPIRED BEFORE IPB GETS =5HL ...[ ONLINE. =5J= ...[ =5JT ... LDX 0 ETWINMK =5KD ... ANDN 0 JNOCHAT =5L3 ... BZE 0 WRX [^ IF WRITE LINK ALREADY OPEN =5LL ... ERS 0 ETWINMK [OTHERWISE UNSET JNOCHAT AND ^ TO SEND =5M9 ... BRN WRXK =5MS ...WRX LDX 0 BIT11 =5NC ... ANDX 0 ETWINMK [IF BIT 11 SET GHIN MESSAGE =5P2 ... BNZ 0 WRNK [ALREADY SENT =5PK ... LDX 0 ETWINMK =5Q8 ... ANDN 0 JIOUTS [IF NO WRITE O/S =5QR ... BZE 0 WRXK [GO TO SEND GHIN =5RB ... MHUNTW 1,EWDAS,ESENDT =5R^ ... LDX 0 ENMARK(1) =5SJ ... LDX 1 FX1 =5T7 ... SBN 0 GHIN [CHECK THAT MESSAGE IN TRANSIT =5TQ ... BZE 0 WRNK [IS GHIN =5WF ... GEOERR 1,NOTGHIN =5X8 ...WRXK LDX 0 BIT11 =5X^ ... ORS 0 ETWINMK =5YQ ... CALL 7 XF25 [SET UP GHIN =63W ... CALL 7 XIPCWRITE [SEND WRITE =672 ...WRNK LDX 0 XM10(1) =6=6 ANDS 0 ETWINMK =6?T ... HUNTW 1,EWDAS,ESENDT [DONT SET UP ANOTHER =6*J ... BNG 1 WREP [GHLR/GHINR IF ONE ALREADY =6C? ... LDX 5 ENMARK(1) [IN TRANSIT =6F2 ... SBN 5 GHLR =6GP ... BZE 5 T2 =6JD ... SBN 5 GHINR-GHLR =6L7 ... BZE 5 T2 =6MW ...WREP LDX 1 FX1 =6PQ CALL 7 R20 [COMPILE REPLY =79B LDX 0 ETBUFS(2) [GET REQUEST TYPE =7P2 LDN 5 GHLR =88L SBN 0 GHL =8N= BZE 0 U7 [J IF HELLO =97W LDN 5 GHINR =9MG U7 STO 5 ENMARK(1) =9SN ... TRACE ASIZE(1),ESENDS =9^W ... TRACE ALOGLEN(1),ESENDA ==76 CALL 7 R23 ==LQ BRN T2 =?6B # =?L2 # =#5L # IPB OPERABLE AND DIALOGUE OK.CHECK IF LINK ESTABLISHED AND IF SO =#K= # CLEAR ETMFAIL,GEODOWN,IPBDOWN AND INOCHAT MARKERS. =*4W # ENTRY HERE ONLY IF X4=0 I.E. NO MESSAGE FROM OTHER PROCESSOR =*JG # BUT WE (THIS PROCESSOR) HAVE DETECTED CHANGE OF STATE OF IPB =B46 # =BHQ V7770 LDX 2 FX2 =C3B LDX 4 AWORK1(2) =CH2 BPZ 4 R7770 [J IF READ TRANSFER LAST FINISHED =D2L IPCREP W,3 [ELSE GET LAST WRITE REPLY =DG= BRN RW =D^W R7770 IPCREP R,3 [GET READ REPLY =FFG RW LDCT 0 4 [LINK ESTABLISHED BIT =F^6 ANDX 0 3 =GDQ BNZ 0 X7770 [J IF LINK NOT ESTABLISHED =GYB LDX 0 XM10(1) =HD2 ANDS 0 ETWINMK [CLEAR MARKERS =HXL Y7770 LDX 0 ETWINMK =JC= ANDN 0 IPBDOWN+GEODOWN =JWW BNZ 0 XF10 [IF OTHER LINKS NOT OPEN SET UP GHIN =KBG BRN XF11 =KW6 X7770 =L*Q # =LTB # LINKS NOT ESTABLISHED =M*2 # =MSL LDN 0 JNOCHAT =N#= ANDX 0 ETWINMK =NRW ERS 0 ETWINMK [JUST CLEAR JNOCHAT =P?G BRN Y7770 =PR6 # =Q=Q U5 GEOERR 1,IDENTERR =QQB # =R=2 # A REPLY FROM INOP =RPL # =RT5 ...QK3FA [***** =S7G ... DOWN TWINSETD,4 [CHECK REPLY =S=^ ... BRN XCLOSED [STATE WRONG =T8G CALL 7 XB11CL [CLEAR BIT11 OF ETWINMK =T#C ... LONGON EDFDCLS [WAKE UP ACTS WAITING FOR FILESS =TD# ...# AS TWIN UP MAY HAVE BEEN TYPED IN THE OTHER PROCESSOR BUT =TJ9 ...# NOT IN THIS PROCESSOR =TN6 BRN T2 =TQT ...[ =TRQ ...[ STATES WRONG-OUTPUT MESSAGE =TSM ...[ =TTJ ...XCLOSED =TWF ... CALL 7 XB11CL [CLEAR BIT11 =TXB ...XSW MHUNTW 3,EWDAS,EGOT [DETAILS OF WRONG UNITS =TY? ... OUTPACK ENTRGA(3),V,VARDEC,XSW =T^8 ... LDX 5 XMESS2(1) =W25 ... MHUNTW 1,EWDAS,EGOT =W32 ... FREECORE 1 =W3X ... LDN 7 XLK [FIDDLE LINK =W4S ... BRN OUTPUT1 [DO INFORM =W5P ...XLK ACROSS TWINSETA,1 =W7Q # =WMB # SUBROUTINE TO ASSEMBLE HELLO MESSAGE =X72 # =XLL # FORMAT OF WORD IS =Y6= # =YKW # B0-B2 NOT USED =^5G # B3 =1 IF WE HAVE RIGHT TO DISENGAGE =^K6 # B5 IS THE LOCK-OUT BIT (=0 IF WE HAVE IT) ?24Q # B9-B10 IS THE STATUS AS FOR BSUNIT ?2JB # B15-23 GEOG. NO. ?342 # ?3HL R20 SBX 7 FX1 ?52G DOWN TWINSETD,3 ?5^Q ADX 7 FX1 ?639 ...R20A HUNT2J 2,EWDAS,ESEND,,R20B [IF THERE IS ALREADY A GHINR ?64N ... LDX 1 ENMARK(2) [IT MUST BE FREED SINCE IT ?667 ... SBN 1 GHINR [HAS BEEN SUPERCEDED BY THIS NEW ?67L ... BZE 1 R20C ?695 ... SBN 1 GSHARER-GHINR [ALSO ANY STATUS CHANGE ?6=J ... BZE 1 R20C [REPLIES SINCE THEY ARE ?6#3 ... SBN 1 GDEDR-GSHARER [NOW OBSOLETE ?6*G ... BZE 1 R20C ?6B^ ... SBN 1 GUNDEDR-GDEDR ?6DD ... BNZ 1 R20A ?6FX ...R20C FREECORE 2 ?6HB ... BRN R20A ?6JT ...R20B MHUNTW 1,EWDAS,ENLINK ?6LJ ... NAME 1,EWDAS,ESEND ?6RR ... LDX 2 FX2 ?6^2 EXIT 7 0 ?7DL # ?7Y= # SUBROUTINE TO GO THOUGH ALL UDAS DEVICES LOOKING FOR TWINNED ONES ?8CW # ?8XG X6 LDX 1 FX1 ?9C6 X4 ADN 1 1 ?9WQ LDX 0 TB-1(1) [NEXT DEVICE ?=BB BNG 0 (7) ?=W2 ... FINDPEREC 3,APFOTY,TB-1(1),X3,,XCME,XCME [GET PTR ??*L BNG 3 X4 [J IF NO MORE OF THIS TYPE ??T= JTWIN 3,X5 [J IF TWINNED ?##W BRN X3 [LOOK FOR NEXT ?#SG X5 EXIT 7 1 ?*#6 # ?*RQ # ?B?B TB +6 ?BR2 +13 ?C=L +26 ?CQ= -1 ?D9W # ?DPG # ?F96 XBIT5910 #01060000 ?FNQ # ?L5B # ?LK2 # ?M4L # ?MJ= # ?N3W # INVESTIGATE FURTHER INTO FAIL VIA ACROSS FROM TWINSETA ?NHG # X4 CONTAINS MODE ?P36 # ?PGQ # ?Q2B ...QK4FA [**** HERE IF LINK NOT EST OR FAILURE REPLY ?QG2 STO 4 ACOMMUNE1(2) [STORE MODE FOR ?Q^L CALL 7 XIPCSTATE [...IPCSTATE ?RF= LDCT 0 #10 [X3 CONTAINS RESULT ?RYW ERS 0 3 [REVERSE OPERABLE BIT ?SDG LDCT 0 #110 ?SY6 ANDX 0 3 ?TCQ BZE 0 V1 [J IF OPERABLE AND HAVE DIALOGUE ?TXB ...SI LDX 0 ETWINMK ?WC2 ANDN 0 IPBDOWN+GEODOWN ?WWL BNZ 0 XF10 [J IF IPB DOWN OR GEORGE DOWN ?XB= LDCT 0 #100 ?XTW ANDX 0 3 ?Y*G BZE 0 XF11 [J IF DIALOGUE NOT SUSPENDED ?YT6 LDCT 0 #40 ?^#Q ANDX 0 3 ?^SB BZE 0 XF11 [J IF GEORGE OK-AS FAR AS WE KNOW #2#2 BRN XF12 [J IF GEORGE DOWN #2RL XF11 CALL 7 XF13 [GET STATE #3?= BRN XF18 [NO REPLY #3QW BRN XF19 [GEORGE DOWN #4=G NGN 5 1 [IPB GONE WRONG #4Q6 LDN 4 2 #59Q CALL 7 R7 [PUT FAIL REPLY IN ANY ENLINKS #5PB CALL 7 X6 [PUT LOCK-OUTS BACK IN RESONABLE STAT #692 BRN NOTWINS [ERROR IF NONE #6NL XF22 LADDP 3,2 #78= JSHARED 2,XF20 [J IF SHARED #7MW XF23 CALL 7 X3 #87G BRN X8011 [J IF NO MORE #8M6 BRN XF22 #96Q XF20 SMO FX1 #9LB LDX 0 XM7 #=62 ANDS 0 BSUNIT(2) [CLEAR WAITING FOR LOCK OUT BITS #=KL BRN XF23 #?5= X8011 LONGON EDFDCLS [WAKE UP ACTIVITIES WAITING #?JW XF21 LDX 2 FX2 ##4G LDX 4 AWORK1(2) ##J6 ... BRN XF10 #*HB # #B32 # GEORGE IN OTHER SIDE DOWN #BGL # #C2= XF12 LDX 1 FX1 #CFW LDX 0 XM2(1) #C^G CALL 6 X #DF6 LDN 0 GEODOWN #DYQ ORS 0 ETWINMK #FDB XF19 CALL 6 R3D [CLEAR LOCK-OUTS #FY2 LONGON ENDWT [WAKE UP ANYBODY WAITING FOR LOCK-OUT #GCL CALL 7 WAITCLEAR [CLEAR ANY WAITING BITS IN EXOF #GX= LONGON EDFDCLS [WAKE UP ANYBODY WAITING FOR FILES #HBW NGN 5 1 #HWG LDN 4 4 #JB6 CALL 7 R7 [WAKE UP ANY BODY ON JOBRING #JJB ... CALL 6 XIPBD [FREE ITCH AND WAKE TWAIT #K*B LDX 4 AWORK1(2) #KT2 BPZ 4 T2 [J IF READ #L#L CALL 7 XF25 #LS= BRN P1 #M?W # #MRG # SUBROUTINE TO GET STATE OF OTHER PROCESSOR #N?6 XF13 SBX 7 FX1 #NQQ LDCT 0 #200 #P=B ANDX 0 ETWINMK #PQ2 BNZ 0 XF14 [J IF STATE ALREADY REQUESTED #Q9L LDCT 0 #220 #QP= ORS 0 ETWINMK [SET REQUESTED AND ACKNOWLEDGED BITS #R8W GETACT ACTDOC [SET UP ACTIVITY #RNG LDX 2 BPTR(2) [GET PTR #S86 LINKSET 2,XLINK3(1) [LINK TO K2TWINSETB #SMQ FPUT #SXJ ...XF15 LDX 0 BIT11 #T7B ... ORS 0 ETWINMK [ONLY SYSTEM WRITES ALLOWED NOW #TC8 ... ADX 7 FX1 #TM2 EXIT 7 0 #W6L XF14 LDCT 0 #140 #WL= ANDX 0 ETWINMK #X5W BZE 0 XF15 #XKG LDCT 0 #100 #Y56 ANDX 0 ETWINMK #YJQ BZE 0 XF16 [J IF GEORGE OK #^4B SMO FX1 #^J2 LDX 0 XM2 *23L ANDS 0 ETWINMK *2H= LDN 0 GEODOWN *32W ORS 0 ETWINMK *3*= ... CALL 6 NOIT [WAKE TWAIT *3GG BRN XF17 *426 XF16 SMO FX1 *4FQ LDX 0 XM9 *4^B ANDS 0 ETWINMK *5F2 LDN 0 IPBDOWN *5YL ORS 0 ETWINMK *6D= ... ADN 7 1 *7CG XF17 ADN 7 1 *8WB BRN XF15 *9B2 # *9TL # NO REPLY FROM STATE *=*= # *=SW # *?#G # *?S6 # *#?Q XF18 LDN 0 ETMFAIL *#RB ORS 0 ETWINMK **?2 V2 LDX 2 FX2 **QL LDX 4 AWORK1(2) **TD ...[ **Y= ...[ CHECK FOR CLOSE *B34 ...[ *B5W ... LDX 3 FX2 *B8N ...Y7771 HUNT2J 3,EWDAS,ESEND,,XNC *B?G ... LDX 0 ENMARK(3) *BB# ... SBN 0 CLIP *BF6 ... BNZ 0 Y7771 [J IF NOT CLOSE *BHY ...TBOB ACROSS TWINSETB,9 [ELSE CLOSE LINKS *BLQ ...XNC CALL 6 N [SET UP ESEND *C9G ... BRN P1 [PUT UP ANOTHER WRITE *G7= # *GLW # SUBROUTINE TO SETUP ESEND WITH GHIN REQUEST *H6G XF25 SBX 7 FX1 *HL6 ... LDX 1 FX2 *J5Q ...XF29 HUNT2J 1,EWDAS,ESEND,,XF26 *JKB LDX 0 ENMARK(1) *JRW ... SBN 0 GHINR [IF SENDING GHIN THEN *K2B ... BNZ 0 XF30 [ANY GHINR ON QUEUE WILL *K8W ... FREECORE 1 [BE REDUNDANT *KCB ...XF30 ADN 0 GHINR-GHIN *KKW ... BZE 0 XF24 [J IF GHIN ALREADY EXISTS *KSD ... BRN XF29 *L4= XF26 SETNCORE ESENDLEN,1,EWDAS,ESEND,,1 *LHW LDN 0 GHIN *M3G STO 0 ENMARK(1) [STORE REQUEST TYPE *MH6 LDN 0 ENTRGA(1) [MAKE RINGS EMPTY *N2Q STO 0 ENTRGA(1) *NGB STO 0 ENTRGA+1(1) *P22 XF24 ADX 7 FX1 *PFL EXIT 7 0 *P^= # *QDW # IPB DOWN *QYG # *RD6 XF10 CALL 6 N [SET UP ESEND *RXQ XF28 LDX 3 FX2 *SCB LDN 6 2 [IPBDOWN REPLY *SX2 LDX 0 ETWINMK *TBL ANDN 0 IPBDOWN+ETMFAIL *TW= BNZ 0 XF27 [J IF IPBDOWN *W*W ... LDN 6 #4 [ELSE OK (GEORGE DOWN) REPLY *WTG XF27 HUNT2J 3,EWDAS,ESEND,,NY1 *X*6 LDX 0 ENMARK(3) *XSQ SBN 0 GHIN *Y#B BZE 0 XF27 [DON'T LOOK FOR GHIN *YS2 ... SBN 0 CLIP-GHIN *^?L BZE 0 TBOB [TO TWINSETB IF CLOSE *^R= LDX 5 3 B2=W CALL 7 R1 [DEAL WITH THIS ONE B2QG FREECORE 5 [FREE ESEND B3=6 LDX 3 FX2 B3PQ BRN XF27 [GO FOR NEXT B49B NY1 CALL 7 XF25 B4P2 BRN P1 B58L # B5N= # SUBROUTINE TO SET UP ESEND WITH GHIN REQUEST IF WRITE FAIL B67W # B6MG N SBX 6 FX1 B776 ... LDN 0 JNOCHAT B7LQ ANDX 0 ETWINMK B86B BNZ 0 T [DON'T SET UP ESEND IF NO DIALOGUE.. B8?J ... LDN 0 JIOUTS B8DQ ... ANDX 0 ETWINMK B8KY ... BZE 0 T1 [^ IF NO WRITE O/S B8R6 ... MHUNTW 1,EWDAS,ESENDT B8Y# ... LDX 0 ENMARK(1) [DON'T SET UP ANOTHER B95G ... SBN 0 GHIN [GHIN IF ONE B9=N ... BZE 0 T [ALREADY IN PROGRESS B9CW ...T1 CALL 7 XF25 [SET UP ESEND B9K= T BPZ 4 T2 [J IF READ B=4W ADX 6 FX1 B=JG EXIT 6 0 B?46 # B?HQ XLINK3 B#3B PAIR TWINSETB,2 B#?8 ...XM7 #77177777 B#H2 XM9 #41773737 B*G= # B*MD ...XCME GEOERR 1,NOTCME B*SL ...# B*^W ... MENDAREA 50,K99FAILTWIN BBFG # BB^6 #END ^^^^ ...01113767000100000000