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