16 22FL #SEG TWINSET70 [BOB NICHOLSON 7 22_= #LIS K0TWINSET 7 23DW 8HTWINSET 4 23YG # 14 24D6 # THIS SEGMENT HANDLES THE TWIN COMMAND 11 24XQ # THE MAIN ENTRY POINT IS K3 4 25CB # 19 25X2 # ENTRY POINTS K1 AND K2 SHOULD EVENTUALLY BE DELETED AND 14 26BL # SETUP CHANGED TO GO DOWN CDUM,1 AND 2. 4 26W= # 11 27*W SEGENTRY K1TWINSET,QK1TW 11 27TG SEGENTRY K2TWINSET,QK2TW 11 28*6 SEGENTRY K3TWINSET,QK3TW 18 28SQ SEGENTRY K4TWINSET [=0 IF DECOM OFF;1 IF ON 5 29#B +0 4 29S2 # 4 2=?L # 4 2=R= # 9 2?=W XM1 #77777777 9 2?QG XBITS510 #01020000 9 2#=6 XBIT5910 #01060000 4 2#PQ # 4 2*9B # 4 2*P2 # 21 2B8L # SUBROUTINE TO GO THOUGH ALL UDAS DEVICES LOOKING FOR TWINNED ONES. 4 2BN= # 19 2C7W # EXITS 0 IF NO MORE; EXITS+1 WITH DEVICE LIST PTR IN X3 4 2CMG # 21 2D76 # CAN BE RE-ENTERED BY CALL 7 X3 TO GET NEXT DEVICE THAT IS TWINNED 4 2DLQ # 8 2F6B X6 LDX 1 FX1 7 2FL2 X4 ADN 1 1 16 2G5L LDX 0 TAB-1(1) [NEXT DEVICE TYPE 15 2GK= BNG 0 (7) [J IF NO MORE 21 2H4W FINDPEREC 3,APFOTY,TAB-1(1),X3,,XCME,XCME [GET PTR TO DEVICE LIST 19 2HJG BNG 3 X4 [J IF NO MORE OF THIS TYPE 15 2J46 JTWIN 3,X5 [J IF TWINNED 17 2JHQ BRN X3 [ELSE LOOK FOR NEXT 7 2K3B X5 EXIT 7 1 4 2KH2 # 4 2L2L # 8 2LG= TAB +6 8 2L_W +13 8 2MFG +26 8 2M_6 -1 4 2NDQ # 4 2NYB # 10 2PD2 XMUCK GEOERR 1,MUCK UP! 4 2PXL # 4 2QC= # 4 2QWW # 21 2RBG QK1TW ACROSS CDUM,1 [SETUP SHOULD REALLY GO DOWN CDUM,1 21 2RW6 QK2TW ACROSS CDUM,2 [..AND DOWN CDUM,2 BUT THE NEW DEVEOL 18 2S*Q [..SYSTEM REQUIRES THIS 4 2STB # 4 2T*2 # 4 2TSL # 4 2W#= # 4 2WRW # 4 2X?G # 16 2XR6 # TABLE OF MONITORING FILE MESSAGE IDENTIFIERS 4 2Y=Q # 18 2YQB RA +APFERR [PARAMETER FORMAT ERROR 21 2_=2 RB +ENTIN4 [ERROR %C %B UNIT %A IS NOT AN IPB DE 21 2_PL RC +ENTIN5 [ERROR %C %B UNIT %A IS NOT A TWINNED 15 329= # [UDAS DEVICE 21 32NW RD +ENTIN11 [ERROR %A THERE ARE NO TWINNED DEVICE 21 338G RE +ENTIN13 [ERROR %A TWIN COMMAND IN PROGRESS 21 33N6 RF +ENTIN6 [ERROR %C %B UNIT %A IS NOT ATTACHED 21 347Q [..TO A PROCESSOR RUNNING UNDER GEORG 21 34MB RG +ENTIN7 [ERROR %C %B THE PROCESSORS CONNECTED 21 3572 [BY UNIT %A HAVE THE SAME IDENTITY 21 35LL RH +ENTIN40 [TWINNING SYSTEM NOT INITIALISED - 18 366= # [PROCESSOR LINK FAILURE 19 36KW # THE FOLLOWING UP TO AND INCLUDING RN FORM PART OF A TABLE 4 375G # 18 37K6 RI +ENTIN21 [UNITS %A ARE UNDEDICATED 18 384Q RJ +ENTIN20 [UNIT %A IS UNDEDICATED 18 38JB RK +ENTIN19 [UNITS %A ARE DEDICATED 17 3942 RL +ENTIN18 [UNIT %A IS DEDICATED 17 39HL RM +ENTIN17 [UNITS %A ARE SHARED 17 3=3= RN +ENTIN16 [UNIT %A IS SHARED 21 3=GW RO +ENTIN15 [EXOFILE TWINNING SYSTEM USING IPB 14 3?2G [UNIT %A 21 3?G6 RP +ENTIN23 [ERROR %A GEORGE HAS NOT REQUESTED 20 3?_Q [..THIS DIRECTIVE TO BE ISSUED 19 3#FB RQ +ENTIN36 [ERROR %B UNIT %A IS IN USE 21 3#_2 RR +ENTIN37 [ERROR %A THIS COMMAND IS ONLY ALLOWE 21 3*DL [IF THE IPB OR THE OTHER PROCESSOR 14 3*Y= [IS DOWN 21 3BCW RS +ENTIN38 [ERROR %B UNIT %A CANNOT BE SHARED 20 3BXG [DUE TO PROCESSOR LINK FAILURE 21 3CC6 RT +ETTIN [TWINNING LINKS CLOSED AND REOPENED 21 3CWQ RU +ENTIN42 [NOW SHARED BUT NO CHECKS IN OTHER 21 3DBB RV +ENTIN43 [NOW DEDICATED BUT NO CHECKS IN OTH 21 3DW2 RW +ENTIN44 [NOW UNDEDICATED BUT NO CHECKS IN O 17 3F*L RX +ENTIN45 [NOT ALLOWED IN CME 4 3FT= # 15 3G#W Q24 +24 [FOR BUTTONUP 4 3GSG # 21 3H#6 # SUBROUTINE TO OUTPUT MESSAGES WITH UNIT NO. IN AWORK2 X5=MESS IDEN 4 3HRQ # 4 3J?B # 5 3JR2 OUTPUT 8 3K=L SBX 7 FX1 9 3KQ= LDX 4 AWORK2(2) 10 3L9W OUTPACK 4,1,VARDEC 7 3LPG LDN 1 1 8 3M96 INFORMX 1,5,1 8 3MNQ ADX 7 FX1 7 3N8B EXIT 7 0 4 3NN2 # 11 3P7L # SET UP ESEND AND ENLINK 5 3PM= XBLKS 8 3Q6W SBX 6 FX1 17 3QLG SETNCORE ENLINKLEN,1,EWDAS,ENLINK,,1 [LINK BLOCK 17 3R66 SETNCORE ESENDLEN,1,EWDAS,ESEND,,1 [DATA BLOCK 11 3RKQ MHUNTW 3,EWDAS,ENLINK 17 3S5B STO 7 ENRQ(3) [STORE REQUEST TYPE 9 3SK2 STO 7 ENMARK(1) 15 3T4L STOZ ENRP(3) [CLEAR REPLY 8 3TJ= ADX 6 FX1 7 3W3W EXIT 6 0 4 3WHG # 7 3X36 # TO WAIT 4 3XGQ # 5 3Y2B XHALT 8 3YG2 SBX 6 FX1 21 3Y_L TENT LONGSET HOLDWT,XHERR [HAVE TO DO LONGSET ELSE LONGCLEAR 19 3_F= LONGHALT XHERR,HOLDWT [DOESNT WAKE US UP...AND WAIT 7 3_YW LONGOFF 11 42DG MHUNTW 3,EWDAS,ENLINK 9 42Y6 LDX 0 ENRP(3) 19 43CQ BZE 0 TENT [BACK TO SLEEP IF NO REPLY 8 43XB ADX 6 FX1 7 44C2 EXIT 6 0 4 44WL # 10 45B= XHERR GEOERR 1,BROKENIN 4 45TW # 4 46*G # 17 46T6 TX2 LDX 1 FX1 [NO TWINNED DEVICES 8 47#Q LDX 0 RD(1) 9 47SB TX3 STO 0 AWORK1(2) 9 48#2 BRN TWRONG 9 48RL T14 LDX 4 AWORK2(2) 16 49?= OUTPACK 4,1,VARDEC [OUTPUT PARAMETER 5 49QW TWRONG 9 4==G COMERRX AWORK1(2) 4 4=Q6 # 16 4?9Q # TABLE OF DIRECTIVES ALLOWED FOR TWIN COMMAND 4 4?PB XDIR 9 4#92 XIN 4H00IN 9 4#NL XDE 4H00DE 9 4*8= XUN 4H00UN 9 4*MW XSH 4H00SH 9 4B7G XUP 4H00UP 9 4BM6 XDO 4H00DO 8 4C6Q -1 4 4CLB # 13 4D62 # ENTRY HERE FOR THE TWIN COMMAND 4 4DKL # 8 4F5= QK3TW [***** 9 4FJW JENVNOT T1A,CME 8 4G4G LDX 1 FX1 18 4GJ6 LDX 0 RX(1) [ERROR IF CME ENVT 8 4H3Q BRN TX3 17 4HHB T1A PARAPASS [GET FIRST PARAMETER 19 4J32 MHUNT 3,CPB,CUNI [SEARCH FOR PARAMETER BLOCK 9 4JGL LDX 0 ANUM(3) 8 4K2= BZE 0 T1 18 4KFW BPZ 0 T2 [J IF PARAMETER EXISTS 17 4K_G T1 LDX 0 RA(1) [ELSE FORMAT ERROR 9 4LF6 STO 0 AWORK1(2) 15 4LYQ BRN TWRONG [DO COMERRX 9 4MDB T2 LDX 4 APARA(3) 18 4MY2 SRL 4 12 [GET FIRST TWO PARAMETERS 17 4NCL LDN 1 XDIR(1) [AN CHECK IF VALID 8 4NX= T4 LDX 0 0(1) 16 4PBW BNG 0 T3 [J IF NOT FOUND 7 4PWG TXU 4 0 15 4QB6 BCC T5 [J IF MATCH 15 4QTQ ADN 1 1 [UPDATE MOD 8 4R*B BRN T4 8 4RT2 T3 LDX 1 FX1 15 4S#L BRN T1 [REPORT ERROR 7 4SS= T5 LDN 6 0 18 4T?W PARANUMB 7,6 [GET NUMBER OF PARAMETERS 7 4TRG SBN 7 1 9 4W?6 TXU 4 XUP(1) 20 4WQQ BCC TXSTATE [ONE PARAMETER OK FOR UP OR DOWN 9 4X=B TXU 4 XDO(1) 15 4XQ2 BCC TXSTATE [J IF DOWN 7 4Y9L T6 SBN 7 1 21 4YP= BNZ 7 T1 [ERROR IF MORE THAN TWO PARAMETERS 7 4_8W LDN 6 2 17 4_NG PARSORTX XHERR,6 [CONVERT UNIT NUMBER 18 5286 HUNTW 3,CPAR,JSCE [SEE IF WE HAVE A RESULT 21 52MQ BNG 3 XENDCOM [END IF NOT - PARSORT HAS ALREADY ERR 9 537B LDEX 0 JSCEA(3) 17 53M2 STO 0 AWORK2(2) [SAVE GEOG. NUMBER 9 546L #SKI K6TWINSET>99-99 10 54L= TRACE AWORK2(2),TWIN 15 555W LDCH 0 JSCEA(3) [DEVICE TYPE 9 55KG TXU 4 XIN(1) 16 5656 BCC T10 [J IF INITIALISE 18 56JQ SBN 0 6 [ELSE CHECK DEVICE TYPE 15 574B BZE 0 T11 [J IF EDS8 7 57J2 SBN 0 7 14 583L BZE 0 T11 [OR FDS 8 58H= SBN 0 13 17 592W BNZ 0 T13 [ERROR IF NOT EMDS 15 59GG T11 JTWIN JSCEP(3),T12 [JIF TWINNED 17 5=26 T13 LDX 0 RC(1) [NOT TWINNED DEVICE 9 5=FQ T7 STO 0 AWORK1(2) 8 5=_B BRN T14 10 5?F2 T12 LADDP JSCEP(3),3 9 5?YL TXU 4 XDE(1) 16 5#D= BCC TXDE [J IF DEDICATE 9 5#XW TXU 4 XUN(1) 16 5*CG BCC TXUN [J IF UNDEDICATE 9 5*X6 TXU 4 XSH(1) 8 5BBQ BCS XMUCK 8 5BWB BRN TXSH 4 5CB2 # 4 5CTL # 14 5D*= XM3 #76007777 [DEDICATE 15 5DSW XM4 #77067777 [UNDEDICATE 9 5F#G XM5 #76027777 9 5FS6 XMASK #77077777 4 5G?Q # 4 5GRB # 8 5H?2 # STATUS CHANGE 11 5HQL # 1. SYSTEM NOT INITIALISED 14 5J== # MAKE CHANGE IN THIS PROCESSOR ONLY 9 5JPW # 2. CRIPPLE MODE 14 5K9G # SHARE WITH IPBDOWN PRODUCES ERROR 16 5KP6 # OTHERWISE MAKE CHANGE IN THIS PROCESSOR ONLY 10 5L8Q # 3. SYSTEM INITIALISED 19 5LNB # IF ALL CHECKS OKAY IN BOTH PROCESSORS THEN APPROPRIATE 18 5M82 # CHANGES MADE IN EACH PROCESSOR I.E. SHARED IN BOTH 17 5MML # OR DEDICATED IN ONE AND UNDEDICATED IN OTHER. 19 5N7= # IF ANY CHECK FAILS NO CHANGES MADE AND MESSAGE OUTPUT. 4 5NLW # 8 5P6G TXSH LDX 5 RN(1) 18 5PL6 JSHARED 3,XNOT5 [_ IF ALREADY SHARED 18 5Q5Q LDN 0 1 [MKR = 1 FOR SHARED 8 5QKB BRN P3 10 5R52 TXDE LDX 0 K4TWINSET(1) 18 5RJL BNZ 0 T1 [_ IF DECOM IN FORCE 8 5S4= LDX 5 RL(1) 19 5SHW JDED 3,XNOT5 [_ IF ALREADY DEDICATED 19 5T3G LDCT 0 #400 [MKR = -VE FOR DEDICATE 8 5TH6 BRN P3 8 5W2Q TXUN LDX 5 RJ(1) 19 5WGB JUNDE 3,XNOT5 [_ IF ALREADY UNDEDICATED 19 5X22 LDN 0 0 [MKR = 0 FOR UNDEDICATED 4 5XFL # 4 5X_= # 15 5YDW # ALL STATUS CHANGES COME THROUGH THIS BIT. 20 5YYG # CHECKS IF SHARE OR INITIALISE IN PROGRESS AND IF UNIT IN USE. 12 5_D6 # ON ENTRY X0=0 IF UNDEDICATE 11 5_XQ # =1 IF SHARE 11 62CB # -VE IF DEDICATE 4 62X2 # 21 63BL P3 STO 0 AWORK3(2) [SAVE MKR =0 FOR UNDE;-VE FOR DEDICAT 10 63W= LDX 6 BSUNIT3(3) 8 64*W ANDN 6 #10 8 64TG P7 LDX 0 RE(1) 20 65*6 BNZ 6 TX3 [J IF STATUS CHANGE IN PROGRESS 6 65SQ #UNS ATBDG 10 66#B LDX 6 BSUNIT2(3) 6 66S2 #UNS ATBDG 4 67?L #SKI 10 67R= LDXC 6 BSUNIT2(3) 19 68=W BCS P6 [ERROR IF IN USE BY SYSTEM 6 68QG #UNS ATBDG 10 69=6 ADX 6 BSUNIT4(3) 9 69PQ ANDX 6 BITS22LS 9 6=9B STOZ AWORK4(2) 16 6=P2 BNZ 6 P6 [ERROR IF IN USE 9 6?8L LDXC 0 BSUNIT(3) 18 6?N= BCS P6 [OR IF CARTCONT RUNNING 10 6#7W LDX 0 BSUNIT3(3) 9 6#MG ANDN 0 BCGCOM 18 6*76 BNZ 0 P6 [_ IF CG IN PROGRESS 16 6*LQ LDX 0 AWORK2(2) [SEARCH FOR ASTUC 18 6B6B # IF SPINDLE NOT IN IMMEDIATE USE CHECK IF FILES OPEN 8 6BL2 LDN 1 BCCB 9 6C5L P5 LDX 1 FPTR(1) 8 6CK= TXU 1 CXCC 16 6D4W BCC P4 [J IF END OF CCB 9 6DJG TXU 0 GEOGU(1) 19 6F46 BCS P5 [J IF GEOG. NOS DON'T AGREE 18 6FHQ STO 1 AWORK4(2) [REMEMBER ASTUC ADDRESS 9 6G3B LDX 0 AWORK3(2) 16 6GH2 BNG 0 P4 [J IF DEDICATE 6 6H2L #UNS ATBDG 18 6HG= BRN P4 [DONT CHECK IF BODGE ON 4 6H_W [ 20 6JFG [ IF UNDEDICATING,SCRATCH FILES OR SU (MODE #1600) MUST NOT BE 17 6J_6 [ OPEN AS NO PERMENENT RECORD IS KEPT ON THE DISC 4 6KDQ [ 16 6KYB LDX 0 BACK1(1) [SUSN FROM ASTUC 16 6LD2 LDN 1 BCCB [SEARCH FOR EXOF 9 6LXL NEXF LDX 1 BPTR(1) 8 6MC= TXU 1 CXCC 16 6MWW BCC P4 [J IF END OF CCB 9 6NBG LDX 7 BACK2(1) 16 6NW6 BZE 7 P4 [J IF NOT AN EXOF 16 6P*Q LDEX 7 FIP+5(1) [COUNT OF AREAS 17 6PTB LDN 5 0 [PTR TO FIRST AREA 17 6Q*2 NEXS BZE 7 NEXF [J IF NO MORE AREAS 15 6QSL SBN 7 1 [REDUCE COUNT 16 6R#= ADN 5 6 [AND UPDATE PTR 7 6RRW SMO 5 10 6S?G TXU 0 FDCELLS-6(1) 18 6SR6 BCS NEXS [J IF AREA UNIT DIFFERS 19 6T=Q LDCT 6 #204 [S-TRUSTED AND SCRATCH MKRS 9 6TQB ANDX 6 EXMARK(1) 17 6W=2 BZE 6 NEXS [SEE IF MORE AREAS 8 6WPL P6 LDX 1 FX1 15 6X9= LDX 0 RQ(1) [UNIT IN USE 8 6XNW BRN T7 9 6Y8G # NO USERS OF UNIT 4 6YN6 # 4 6_7Q # 15 6_MB # SUBROUTINE TO SET ENGAGE BUTTON INTERRUPT 4 7272 # 12 72LL P10A MHUNTW 2,CPAR,JSCE [ 17 736= LINT JSCEP(2),0 [GET INTERNAL NUMBER 9 73KW DVS 7 Q24(1) 8 745G LDCT 5 #400 7 74K6 SMO 7 7 754Q SRL 5 0 7 75JB LDX 7 0 8 7642 BUTTONUP 5,7 8 76HL LDX 2 FX2 7 773= EXIT 4 0 4 77GW # 9 782G P4 LDX 6 ETWINMK 9 78G6 ANDN 6 INITCOM 8 78_Q LDX 1 FX1 19 79FB BNZ 6 P7 [_ IF TN INIT IN PROGRESS 9 79_2 LDX 0 AWORK3(2) 9 7=DL LDXC 6 ETWINMK 17 7=Y= BCC XINT [_ IF INITIALISED 4 7?CW # 17 7?XG # HERE IF NOT INITIALISED OR IN CRIPPLE MODE TO MAKE 12 7#C6 # CHANGES IN THIS PROCESSOR ONLY. 10 7#WQ # X0=0 IF UNDEDICATE 9 7*BB # =1 IF SHARE 10 7*W2 # -VE IF DEDICATE 4 7B*L # 6 7BT= XHEREONLY 17 7C#W BZE 0 XNOT3 [_ IF UNDEDICATE 9 7CSG LDX 6 XM3(1) 17 7D#6 ANDS 6 BSUNIT(3) [CLAIM LOCK-OUT 16 7DRQ BNG 0 XNOT1 [_ IF DEDICATE 10 7F?B LDX 0 XBITS510(1) 16 7FR2 ORS 0 BSUNIT(3) [MARK SHARED 7 7G=L NGN 0 5 19 7GQ= ANDS 0 BSUNIT3(3) [CLEAR DISENGAGE RIGHTS BIT 8 7H9W BRN XNOT2 7 7HPG XNOT1 LDN 0 4 19 7J96 ORS 0 BSUNIT3(3) [SET DISENGAGE RIGHTS BIT 21 7JNQ LONGON IPBDE [WAKE UP ACTS WAITING SU TO BE DED 5 7K8B XNOT2 19 7KN2 CALL 4 P10A [SET ENGAGE BUTTON EVENT 21 7L7L LDX 5 RU(1) [SET APPROPRIATE MESSAGE IDENTIFIE 9 7LM= LDX 0 AWORK3(2) 15 7M6W BPZ 0 XNOT5 [_ IF SHARE 8 7MLG LDX 5 RV(1) 8 7N66 BRN XNOT5 9 7NKQ XNOT3 LDX 0 AWORK4(2) 16 7P5B BZE 0 XNOT4 [_ IF NO ASTUC 19 7PK2 LDCH 0 BSUNIT1(3) [DECREMENT CT OF SUS 7 7Q4L SBN 0 1 10 7QJ= DCH 0 BSUNIT1(3) 17 7R3W FREECORE AWORK4(2) [AND FREE ASTUC 8 7RHG XNOT4 LDX 5 RW(1) 9 7S36 LDX 6 XM4(1) 18 7SGQ ANDS 6 BSUNIT(3) [MARK UNDEDICATED 10 7T2B LDX 0 XBIT5910(1) 9 7TG2 ORS 0 BSUNIT(3) 9 7T_L XNOT5 CALL 7 OUTPUT 9 7WF= BRN XENDCOM 4 7WYW # 17 7XDG # HERE IF INITIALISED. CHECK FIRST IF IN CRIPPLE MODE 4 7XY6 # 9 7YCQ XINT LDX 6 ETWINMK 11 7YXB ANDN 6 IPBDOWN+GEODOWN 8 7_C2 BZE 6 XOKAY 9 7_WL ANDN 6 GEODOWN 17 82B= BNZ 6 XHEREONLY [_ IF GEORGE DOWN 7 82TW LDN 6 1 7 83*G TXU 6 0 17 83T6 BCS XHEREONLY [_ IF NOT SHARE 8 84#Q LDX 0 RS(1) 20 84SB BRN T7 [ERROR IF SHARE AND IPBDOWN 4 85#2 # 12 85RL # SEND MESSAGE TO OTHER PROCESSOR 4 86?= # 17 86QW XOKAY STO 3 AWORK4(2) [STORE APIA PTR 8 87=G LDN 6 #10 21 87Q6 ORS 6 BSUNIT3(3) [SET STATUS CHANGE IN PROGRESS 8 889Q LDN 7 GDED 17 88PB BNG 0 XOK1 [_ IF DEDICATE 9 8992 LDN 7 GUNDED 18 89NL BZE 0 XOK1 [_ IF UNDEDICATE 17 8=8= LDN 7 GSHARE [MUST BE SHARE 17 8=MW XOK1 CALL 6 XBLKS [SET UP BLOCKS 9 8?7G LDN 5 HOLDWT 17 8?M6 STO 5 ENWTS(3) [WAITING STYLE 9 8#6Q LDX 0 AWORK2(2) 16 8#LB STO 0 ENSTART(1) [UNIT NO 9 8*62 STO 0 ENBR(3) 20 8*KL CALL 7 SETOFF [START TWINNING ACTIVITY 17 8B5= CALL 6 XHALT [WAIT FOR REPLY 15 8BJW LDX 4 ENRP(3) [REPLY 13 8C4G LDX 6 ENBR(3) [UNIT NO 16 8CJ6 FREECORE 3 [FREE ENLINK 8 8D3Q LDN 0 #10 9 8DHB LDX 3 AWORK4(2) 21 8F32 ERS 0 BSUNIT3(3) [UNSET STATUS CHANGE IN PROGRES 18 8FGL FON KTSCTF [WAKE UP ACTIVITIES 16 8G2= BNG 4 XENDCOM [_ IF OKAY 8 8GFW LDX 0 RE(1) 7 8G_G SBN 4 1 21 8HF6 BZE 4 TX3 [_ IF STATUS CHANGE IN PROG IN 7 8HYQ SBN 4 1 18 8JDB BNZ 4 XCONT [_ IF NOT IPB FAIL 8 8JY2 LDX 0 RS(1) 9 8KCL LDX 5 AWORK3(2) 7 8KX= SBN 5 1 21 8LBW BZE 5 T7 [ERROR IF SHARE AND IPB FAIL 20 8LWG BRN XCRIP [OTHERWISE CHANGE HERE ONLY 7 8MB6 XCONT SBN 4 2 19 8MTQ BZE 4 XCRIP [_ IF OTHER GEORGE DOWN 8 8N*B LDX 0 RQ(1) 7 8NT2 SBN 4 1 21 8P#L BZE 4 T7 [ERROR IF USERS IN OTHER SIDE 7 8PS= SBN 4 1 20 8Q?W BZE 4 XNOCH [_ IF NO CHANGE REQUIRED 7 8QRG SBN 4 1 19 8R?6 BZE 4 XCRIP [_ IF NOT INITIALISED 17 8RQQ BRN N4 [INVALID REPLY 5 8S=B XNOCH 9 8SQ2 LDX 0 AWORK3(2) 8 8T9L LDX 5 RL(1) 19 8TP= BNG 0 XNOT5 [_ IF ALREADY DEDICATED 8 8W8W LDX 5 RJ(1) 19 8WNG BZE 0 XNOT5 [_ IF ALREADY UNDEDICATED 8 8X86 LDX 5 RN(1) 17 8XMQ BRN XNOT5 [ALREADY SHARED 9 8Y7B XCRIP LDX 0 AWORK3(2) 21 8YM2 STOZ AWORK4(2) [RESET AWORK4 TO POINT TO ASTUC 8 8_6L LDN 1 BCCB 9 8_L= XC1 LDX 1 FPTR(1) 8 925W TXU 1 CXCC 8 92KG BCC XC2 9 9356 TXU 6 GEOGU(1) 8 93JQ BCS XC1 9 944B STO 1 AWORK4(2) 8 94J2 XC2 LDX 1 FX1 9 953L BRN XHEREONLY 4 95H= # 4 962W # 7 96GG # INITIALISE 17 9726 # IF NOT ALREADY INITIALISED THE LINKS ARE OPENED 14 97FQ # OTHERWISE THEY ARE CLOSED AND REOPENED 4 97_B # 8 98F2 T10 SBN 0 28 20 98YL BZE 0 TXIN [J IF IPB SPECIFIED AS 2ND PARAM 8 99D= LDX 0 RB(1) 15 99XW BRN T7 [ELSE ERROR 4 9=CG TXIN 19 9=X6 CALL 7 X6 [CHECK IF ANY TWINNED DEVICES 16 9?BQ BRN TX2 [J IF NOT-ERROR 8 9?WB LDX 1 FX1 8 9#B2 LDX 0 RE(1) 9 9#TL LDX 6 ETWINMK 9 9**= ANDN 6 INITCOM 19 9*SW BNZ 6 TX3 [J IF INITIALISE IN PROGRESS 16 9B#G LDN 5 HOLDWT [WAITING STYLE 4 9BS6 [ 13 9C?Q [ CHECK IF STATUS CHANGE IN PROGRESS 4 9CRB [ 21 9D?2 CALL 7 X6 [GET PTR TO DL FOR DUAL ACCESS UNIT 16 9DQL BRN XNS [J IF NONE LEFT 16 9F== LADDP 3,2 [APIA PTR IN X2 10 9FPW LDX 0 BSUNIT3(2) 21 9G9G ANDN 0 #10 [TEST IF STATUS CHANGE IN PROGRESS 20 9GP6 BZE 0 X3 [J IF THIS ONE OK,TO GET NEXT DL 20 9H8Q LDX 1 FX1 [ELSE TWIN COMMAND IN PROGRESS 8 9HNB LDX 2 FX2 18 9J82 LDX 0 RE(1) [IDENTIFIER FOR MESSAGE 20 9JML BRN TX3 [GO TO OUTPUT ERROR AND FINISH 8 9K7= XNS LDX 1 FX1 16 9KLW LDX 2 FX2 [CHECK PASSED OK 4 9L6G [ 9 9LL6 LDN 0 INITCOM 20 9M5Q ORS 0 ETWINMK [SET INITIALISE IN PROGRESS BIT 9 9MKB LDX 0 ETWINMK 9 9N52 ANDN 0 INITRQ 21 9NJL ERS 0 ETWINMK [STOPS ^PLEASE INITIALISE^ BEING OUTP 8 9P4= LONGON IPBDE 20 9PHW LONGON EPWT [WAKE UP ANYBODY WAITING FOR INIT 9 9Q3G LDXC 0 ETWINMK 19 9QH6 BCS TX4 [J IF NOT ALREADY INITIALISED 4 9R2Q # 19 9RGB # ALREADY INITIALISED SO GET BSA ENTWIN TO CLOSE THE LINKS 4 9S22 # 18 9SFL LDN 7 CLIP [CLOSE REQUEST MARKER 17 9S_= CALL 6 XBLKS [SET UP DATA BLOCKS 17 9TDW STO 5 ENWTS(3) [SET WAITING STYLE 19 9TYG CALL 7 SETOFF [START UP TWINNING ACTIVITY 17 9WD6 CALL 6 XHALT [AND WAIT FOR ANSWER 9 9WXQ LDX 0 ENRP(3) 14 9XCB BNG 0 TX5 [J IF OK 16 9XX2 BRN N4 [CAN ONLY BE OK 15 9YBL TX5 FREECORE 3 [FREE ENLINK 7 9YW= NGNC 0 1 4 9_*W # 18 9_TG # IF ITS THE 1ST INITIALISE AWORK3=0;ELSE=1 AND THIS MKR 21 =2*6 # IS STORED IN THE ESEND AND PICKED UP BY THE BSA ENTWIN ACTIVITY 12 =2SQ # AS DIFFERENT ACTION IS TAKEN. 4 =3#B # 19 =3S2 TX4 LDN 0 0 [X0=0 IF FIRST TIME;ELSE X0=1 15 =4?L STO 0 AWORK3(2) [REMEMBER MKR 9 =4R= LDX 0 AWORK2(2) 15 =5=W STO 0 IPBTWIN [STO IPB NO 18 =5QG LDN 7 INIT [INITIALISE REQUEST TYPE 17 =6=6 CALL 6 XBLKS [SET UP DATA BLOCKS 17 =6PQ STO 5 ENWTS(3) [STORE WAITING STYLE 16 =79B LDX 0 AWORK3(2) [PICK UP MARKER 18 =7P2 STO 0 ENSTART(1) [AND STORE FOR TWINSETC 19 =88L CALL 7 SETOFF [START UP TWINNING ACTIVITY 14 =8N= CALL 6 XHALT [AND WAIT 14 =97W LDX 4 ENRP(3) [REPLY 9 =9MG #SKI K6TWINSET>99-99 11 ==76 TRACE ENRP(3),INITREP 15 ==LQ FREECORE 3 [FREE ENLINK 8 =?6B LDX 0 RO(1) 14 =?L2 BNG 4 TX6 [J IF OK 8 =#5L SBN 4 32 16 =#K= BZE 4 XSW [J IF STATE WRONG 8 =*4W ADN 4 32 8 =*JG ANDN 4 #36 8 =B46 BZE 4 XMUCK 9 =BHQ LDX 0 RH(1) 14 =C3B SBN 4 2 [REPLY =2 15 =CH2 BZE 4 TX6 [J IPB FAIL 7 =D2L SBN 4 6 9 =DG= LDN 0 INITCOM 18 =D_W ERS 0 ETWINMK [CLEAR INITIALISATION BIT 8 =FFG LDX 0 RG(1) 19 =F_6 BZE 4 T7 [J IF SAME IDENTITY REPLY=8 8 =GDQ LDX 0 RF(1) 7 =GYB SBN 4 8 18 =HD2 BZE 4 T7 [J IF NOT GEORGE REPLY=16 8 =HXL BRN N4 4 =JC= [ 8 =JWW [ STATE WRONG 4 =KBG [ 16 =KW6 XSW MHUNTW 3,EWDAS,EGOT [WRONG NUMBERS 13 =L*Q OUTPACK ENTRGA(3),V,VARDEC,XSW 9 =LTB LDN 0 INITCOM 18 =M*2 ERS 0 ETWINMK [NO LONGER IN PROGRESS 10 =MSL MHUNTW 1,EWDAS,EGOT 7 =N#= FREECORE 1 17 =NRW COMERR EWRSTC [REPORT COMMAND ERROR 4 =P?G [ 9 =PR6 TX6 STO 0 AWORK4(2) 9 =Q=Q LDX 0 AWORK3(2) 16 =QQB BZE 0 X8170 [J IF FIRST TIME 21 =R=2 LDX 0 RT(1) [ELSE STORE CLOSED AND RE-OPEN MESSAG 9 =RPL STO 0 AWORK4(2) 4 =S9= # 12 =SNW # NOW TO OUTPUT STATE OF DEVICES 4 =T8G # 15 =TN6 X8170 LDN 6 3 [THREE STATES 19 =W7Q OUT LDN 4 0 [INITIALISE PARAMETER COUNT 16 =WMB CALL 7 X6 [GET PTR TO DL 16 =X72 BRN XMUCK [SHOULD BE SOME 16 =XLL OUT2 LADDP 3,2 [POINTER TO APIA 9 =Y6= LDX 5 BSUNIT(2) 19 =YKW ANDX 5 BITS910 [ISOLATE B9 AND B10 OF APIA 8 =_5G LDX 2 FX1 7 =_K6 SMO 6 18 ?24Q ERX 5 XMTAB(2) [APPLY ASSOCIATED MASK 17 ?2JB BNZ 5 OUT1 [NOT OF THIS STATUS 15 ?342 ADN 4 1 [UPDATE COUNT 14 ?3HL OUT1 CALL 7 X3 [GET NEXT 15 ?43= BRN NOMORE [J IF NO MORE 16 ?4GW BRN OUT2 [GO TO ANYALISE 5 ?52G NOMORE 17 ?5G6 BZE 4 OUT3 [NONE OF THIS STATUS 19 ?5_Q ADN 4 1 [ADD 1 FOR HEADER FOR OUTPACK 18 ?6FB SETUPCORE 4,3,EWDAS,EGOT [SET UP PARAMETER BLOCK 15 ?6_2 STO 4 ENTRGA(3) [STORE HEADER 15 ?7DL LDN 4 1 [MOD TO EGOT 16 ?7Y= CALL 7 X4 [GET FIRST DEVICE 8 ?8CW BRN XMUCK 15 ?8XG OUT6 LADDP 3,2 [PTR TO APIA 9 ?9C6 LDX 5 BSUNIT(2) 9 ?9WQ ANDX 5 BITS910 8 ?=BB LDX 2 FX1 14 ?=W2 SMO 6 [GET MASK 9 ??*L ERX 5 XMTAB(2) 18 ??T= BNZ 5 OUT4 [J IF NOT RIGHT STATUS 10 ?##W MHUNTW 2,EWDAS,EGOT 16 ?#SG LGEOG 3,0 [GET GEOG. NO. 7 ?*#6 SMO 4 18 ?*RQ STO 0 ENTRGA(2) [STORE IN PARAMETER BLOCK 15 ?B?B ADN 4 1 [UPDATE MOD 7 ?BR2 LDX 0 6 7 ?C=L SBN 0 1 16 ?CQ= BZE 0 OUT4 [J IF UNDEDICATE 18 ?D9W LINT 3,0 [ELSE SET ENGAGE BUTTON 8 ?DPG SMO FX1 8 ?F96 DVS 7 Q24 8 ?FNQ LDCT 5 #400 7 ?G8B SMO 7 7 ?GN2 SRL 5 0 7 ?H7L LDX 7 0 8 ?HM= BUTTONUP 5,7 14 ?J6W OUT4 CALL 7 X3 [GET NEXT 15 ?JLG BRN OUT5 [J IF NO MORE 16 ?K66 BRN OUT6 [GO TO DEAL WITH 10 ?KKQ OUT5 MHUNTW 3,EWDAS,EGOT 18 ?L5B OUTPACK ENTRGA(3),V,VARDEC,OUT5 [ASSEMBLE PARAMETER 14 ?LK2 LDX 0 6 [GET MOD 18 ?M4L ADX 0 0 [MOD TO SINGULAR MESSAGE 7 ?MJ= SBN 4 2 8 ?N3W BNG 4 XMUCK 16 ?NHG BZE 4 OUT7 [J IF SINGLE NO. 7 ?P36 SBN 0 1 7 ?PGQ OUT7 SMO 0 18 ?Q2B LDX 5 RH(1) [GET MESSAGE IDENTIFIER 16 ?QG2 LDN 1 1 [CENTRAL CONSOLE 15 ?Q_L INFORMX 1,5,1 [AND OUTPUT 10 ?RF= MHUNTW 3,EWDAS,EGOT 15 ?RYW FREECORE 3 [FREE EGOT 16 ?SDG OUT3 BCT 6 OUT [BACK FOR NEXT 8 ?SY6 LDX 2 FX2 9 ?TCQ LDX 5 AWORK4(2) 9 ?TXB OUT8 CALL 7 OUTPUT 9 ?WC2 LDXC 0 ETWINMK 17 ?WWL ANDS 0 ETWINMK [CLEAR INITILISE BIT 20 ?XB= LDN 0 INITCOM [CLEAR INITIALISE IN PROGRESS BIT 9 ?XTW ERS 0 ETWINMK 21 ?Y*G LDX 2 ENTWINPTR [SEARCH FOR ANY ESENDS WAITING AND 16 ?YT6 N2 HUNT2J 2,EWDAS,ESEND,,N1 [CLEAR WAIT MKR 9 ?_#Q LDXC 0 ENMARK(2) 9 ?_SB ANDS 0 ENMARK(2) 8 #2#2 BRN N2 9 #2RL N1 LDX 2 ENTWINPTR 19 #3?= DESUSPEND [WAKE UP TWINNING ACTIVITY 8 #3QW LONGON IPBDE 5 #4=G XENDCOM 6 #4Q6 ENDCOM 4 #59Q # 8 #5PB # TABLE OF MASKS 4 #692 # 8 #6NL XMTAB +0 15 #78= #00060000 [UNDEDICATED 15 #7MW +0 [DEDICATED 14 #87G #00020000 [SHARED 4 #8M6 # 4 #96Q # 8 #9LB # UP AND DOWN 4 #=62 # 5 #=KL TXSTATE 19 #?5= BNZ 7 T1 [J IF MORE THAN ONE PARAMETER 8 #?JW LDCT 5 #020 9 ##4G ANDX 5 ETWINMK 8 ##J6 LDX 0 RP(1) 17 #*3Q BZE 5 TX3 [J IF NOT REQUIRED 15 #*HB ERS 5 ETWINMK [CLEAR BIT 17 #B32 LDCT 5 #40 [REPLY B3=1 FOR UP 9 #BGL TXU 4 XUP(1) 14 #C2= BCC TXT1 [J IF UP 18 #CFW LDCT 5 #140 [REPLY B2=B3=1 FOR DOWN 9 #C_G TXT1 ORS 5 ETWINMK 18 #DF6 LONGON EPWT [WAKE UP ACTIVITY WAITING 9 #DYQ BRN XENDCOM 4 #FDB # 10 #FY2 N4 GEOERR 1,WRONGREP 4 #GCL # 20 #GX= # SUBROUTINE TO CHAIN DATA BLOCK ON END OF TWINNING ACTIVITY 4 #HBW # 15 #HWG # LINK X7 NO-COORDINATION X3-X7 UNCHANGED 19 #JB6 # ON ENTRY X1 SHOULD PT TO ESEND ; X3 SHOULD PT TO ENLINK 4 #JTQ # 5 #K*B SETOFF 17 #KT2 RINGTWO ENTRGA(1),ENLA(3) [RING THEM TOGETHER 18 #L#L LDX 2 ENTWINPTR [PTR TO TWINNING ACTIVITY 10 #LS= LDX 2 ACTRING(2) 9 #M?W SBN 2 ACTRING 9 #MRG LDX 2 BPTR(2) 9 #N?6 #SKI K6TWINSET>99-99 8 #NQQ TRACE 1,SETOFF 15 #P=B CHAIN 1,2 [CHAIN ON END 9 #PQ2 LDX 2 ENTWINPTR 15 #Q9L DESUSPEND [WAKE IT UP 7 #QP= EXIT 7 0 4 #R8W # 4 #RNG # 9 #S86 XCME GEOERR 1,NOTCME 4 #SMQ # 12 #T7B MENDAREA 1023-0?,K99TWINSET 4 #TM2 # 4 #W6L #END 6 ____ ...415552320001