TWINSET866

(George Source)

Macros used: ACROSS, BUTTONUP, CHAIN, COMERR, COMERRX, DESUSPEND, ENDCOM, FINDPEREC, FON, FREECORE, GEOERR, HUNT2J, HUNTW, INFORMX, JDED, JENVNOT, JSHARED, JTWIN, JUNDE, LADDP, LGEOG, LINT, LONGHALT, LONGOFF, LONGON, LONGSET, MENDAREA, MHUNT, MHUNTW, OUTPACK, PARANUMB, PARAPASS, PARSORTX, RG, RINGTWO, RV, SEGENTRY, SETNCORE, SETUPCORE, TAB, TRACE

TWINSET866.txt
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