PCTCOUT8

(George Source)

Macros used: ACROSS, BXE, BXGE, BXL, BXU, CHAIN, COOR1, DCA, DLCA, DOWN, FINDLCA, FREECORE, GEOERR, GLPERI, HUNT2J, LOCKC, MENDAREA, MHUNTW, PCTHUNT, SEGENTRY, SETNCORE, UNLOCK, UP

PCTCOUT8.txt
22FL    #LIS  K0PCTCOUT>K0PCT>K0ALLGEO>K0GREATGEO   
22^=    #SEG  PCTCOUT8                     [G CONSTANTINIDES
23DW                   8HPCTCOUT8   
23YG    # ENTRY POINTS  
24D6          SEGENTRY K1PCTCOUT,Z1PCTCOUT  
24XQ          SEGENTRY K2PCTCOUT,Z2PCTCOUT  
25CB          MENDAREA APCTGAP,K100PCTCOUT  
25X2    [   
26BL    [ THIS SEGMENT CONTROLS THE OUTPUTING OF MESSAGES TO THE ACCEPTOR   
26W=    [ INTERFACE OF A REMOTE TELETYPE - A 7023.  
27*W    [   
27TG    #   
28*6    SMESTYPE
28SQ    #HAL           +A7020+CONSOUT,0    [MESSAGE BLOCK TYPE  
29#B    XCONBUFF
29S2    #HAL  +CONBUFF+IREMTW,0            [ROUTING BLOCK TYPE  
2=?L    #   
2=R=    XALPHA         #74                 [ALPHA AND DELTA-SPLIT + 4.  
2?=W    XBETA          #75                 [BETA
2?QG    #   
2#=6    #   
2#PQ    SMESS          #76227632,#76277627,#76277627
2*9B                   36HTHIS TERMINAL HAS BEEN MOPPED OFF^'^  
2*P2                   #27762776,#27763476,#32762076,#04762300  
2B8L    #   
2BN=    TMESS          16HEN ATTACHED^'^'^  
2C7W    #   
2CMG    MODE40004      #40004   
2D76    #   
2DLQ    #   
2F6B    [   
2FL2    [ THIS SUBROUTINE FINDS THE MESSAGE BLOCK FOR THE PCT WITH IDENTITY 
2G5L    [ GIVEN IN X5. THE LINK IS X7.  
2GK=    [ THE SUBROUTINE SEARCHES FORWARD FROM THE BLOCK POINTED AT BY X3.  
2H4W    [ ON EXIT X3 POINTS TO THE LAST BLOCK EXAMINED.  EXITS ARE: 
2HJG    [ +0 IF SEARCH COMPLETELY UNSUCCESSFUL. 
2J46    [ +1 IF SEARCH UNSUCCESSFUL BUT X3 PTS. TO A ROUTING BLOCK FOR THIS PCT.
2JHQ    [ +2 IF SEARCH SUCCESSFUL.  
2K3B    [   
2KH2    PCTHUNT 
2L2L          LDX   3  FPTR(3)             [STEP ON TO THE NEXT BLOCK   
2LG=    PCTH0 LDX   0  ATYPE(3) 
2L^W          BXE   0  SMESTYPE(1),PCTH2   [J. IF MESSAGE BLOCK 
2MFG          BXE   0  XCONBUFF(1),PCTH1   [OR ROUTING BLOCK.   
2M^6          BXL   0  CACT,PCTHUNT        [J. IF NOT END OF ACTIVITY.  
2NDQ          EXIT  7  0                   [FINISHED SEARCH.
2NYB    PCTH1 LDX   0  5                   [COMPARE IDENTIFIER STRINGS. 
2PD2          SLC   0  12   
2PXL          ERX   0  A1+2(3)  
2QC=          ANDN  0  -1   
2QWW          BNZ   0  PCTHUNT             [J. IF NPT THIS PCT. 
2RBG          EXIT  7  1
2RW6    PCTH2 BXU   5  CIDENTM(3),PCTHUNT  [J. IF NOT THIS PCT. 
2S*Q          EXIT  7  2
2STB                                       [TO IT   
2T*2    #   
2TSL    #   
2W#=    [   
2WRW    [ THIS SUBROUTINE SETS UP THE MODE *3 CONTROL AREA IN THE MOP ACTIVITY  
2X?G    [ REPERI DECIDES WHETHER TO REPEAT THE PERI OR RE-POLL IN THE ERROR CASE
2XR6    [   
2Y=Q    REPERI  
2YQB          LDN   0  1                   [J. TO RE-POLL (I.E. TREAT TERMINAL  
2^=2          LDX   2  FX2                 [AS INOPERABLE) IF THE MAXIMUM   
2^PL          SBSC  0  ACOMMUNE1(2)        [ERROR REPEAT COUNT HAS BEEN EXCEDED.
329=          BCS      POLL 
32NW    [   
338G    PREPERI 
33N6          SLC   4  9                   [LINE NUMBER.
347Q    PREPERI1
34MB          FINDLCA  ,4   
3572          SRC   4  9                   [LINE TO TOP 9 BITS. 
35LL          DCA      ,STO,4,MODE  
366=          LDN   0  1
36KW          DLCA     1,DLA,0,MODE 
375G          LDN   0  2
37K6          DLCA     1,DLA,0,MODE2
384Q          EXIT  7  0
38JB    #   
3942    [   
39HL    [ THIS SUBROUTINE SETS UP THE DCA FOR CANCELLING READS. 
3=3=    [   
3=GW    ZCNCL ORX   4  MODE40004(1)        [ADD IN CANCEL MODE, 
3?2G          DCA      ,STO,4,MODE         [& INSERT IN DCA.
3?G6          ERX   4  MODE40004(1)        [CLEAR OUT MODE AGAIN.   
3?^Q          EXIT  7  0
3#FB    [   
3#^2    [THIS S/R CONVERTS THE STATUS CHARACTER RECEIVED IN SHIFT FORM  
3*DL    [IN X0 TO BIT SIGNIFICANT FORM IN X5
3*Y=    STATENQ 
3BCW          LDCH  0  0(2) 
3BXG          BXL   0  XBETA(1),STAT4      [J. IF ALPHA 
3CC6          LDX   5  GENQ3(3)            [GET THE 1ST. 2 CHARS. (INTERFACE
3CWQ          SRL   5  12                  [ADDRESS) INTO X5.   
3DBB          BCHX  2  STAT5
3DW2    STAT4 LDN   5  #7400               [SET UP INTERFACE ADDRESS IF ALPHA.  
3F*L          ORX   5  0
3FT=    STAT5 ERX   5  GENQ1(3)            [COMPARE INTERFACE ADDRESS REPLIED   
3G#W          ANDN  5  -1                  [WITH ADDRESS ORIGINALLY SENT.   
3GSG          BNZ   5  POLL                [RE-POLL IF NOT SAME.
3H#6          BCHX  2  STAT3
3HRQ    #   
3J?B    ONLY1 LDCH  5  CENQOUT(3)          [IF ONLY 1 CHAR. MUST BE ALPHA.  
3JR2          LDN   7  STATOUT(1)          [SET LINK.   
3K=L          SBN   5  #40                 [ALPHA CONVERSION.   
3KQ=          BRN      STAT2
3L9W    #   
3LPG    STAT3 LDCH  5  0(2) 
3M96          BXL   5  XALPHA(1),STAT1     [J. IF NOT SHIFT 
3MNQ    STATCON 
3N8B          LDCH  0  0(2)                [GET 1ST CHARACTER OF PAIR   
3NN2          BCHX  2  £
3P7L          LDCH  5  0(2)                [GET 2ND 
3PM=    STAT1 BXE   0  XBETA(1),STAT2      [J IF BETA SHIFT 
3Q6W          SBN   5  #40                 [CONVERSION FOR ALPHA STATUS (-#40)  
3QLG          BXL   0  XBETA(1),STAT2      [J IF WAS ALPHA  
3R66          ADN   5  #44                 [CONVERSION FOR DELTA 2  STATUS (+4) 
3RKQ          BXGE  5  XALPHA(1),STAT2     [J IF DELTA 2
3S5B          SBN   5  #34                 [CONVERSION FOR DELTA 1 STATUS (-#30)
3SK2    STAT2   
3T4L          SRC   5  1
3TJ=          ANDN  6  1                   [MASK OUT ERROR BIT FROM READ REPLY. 
3W3W          BPZ   5  POLL                [J. IF DEVICE INOPERABLE.
3WHG          BNZ   6  (7)                 [J. IF TRANSFER ERROR
3X36          SRC   5  1                   [BRANCH  
3Y2B          EXIT  7  1
3YG2    REFINDA 
3YPS ...      HUNT2J   2,A7020,CONSOUT,,REFINDA 
3Y^L ...      TXU   5  CIDENTM(2)   
3^9D ...      BCS      REFINDA             [J IF NOT FOR RIGHT TERMINAL 
3^F=          EXIT  1  0
3^YW    REFIND                             [LOCKC   
42DG          MHUNTW   2,A7020,ALCB 
42Y6          EXIT  1  0
43CQ    #   
43XB    #   
44C2    Z1PCTCOUT                          [THE ENTRY TO SELECT THE ACCEPTOR
44WL                                       [INTERFACE OF THE 7023, TO OUTPUT
45B=                                       [ANY ASSEMBLED MESSAGES IN A7020/AOUT
45TW                                       [BLOCKS AND TO REPEAT (IF NECESSARY) 
46*G                                       [FIX MESSAGES HELD IN A7020/ALIST OR 
46T6                                       [A7020/INPUT BLOCKS. 
47#Q    #   
47SB          MHUNTW   3,A7020,ALCB        [FIND THE LCB
48#2          DSA   5  GENQ1(3)            [ENQ MESSAGE 
48RL          LDN   0  APCTERRNUM          [SET THE *3 SELECT   
49?=          STO   0  ACOMMUNE1(2) 
49QW          LOCKC    3,REFIND 
4==G          CALL  1  REFIND   
4=Q6          LDX   3  2
4?9Q          LDX   1  FX1  
4?PB          LDX   2  FX2  
4#92          LDEX  4  GUNITNO(3)          [LINE NUMBER.
4#NL          CALL  7  PREPERI1            [FINDLCA & SET UP MODES. 
4*8=          LDN   0  16                  [SET UP REST OF SPOUT.   
4*MW          DLCA     1,DLA,0,COUNT2   
4B7G          LDN   0  GENQ3(3) 
4BM6          DLCA     1,STO,0,CTSA2
4C6Q    REALERR                            [REPEAT PERI COMES IN HERE.  
4CLB          LDN   0  7
4D62          DLCA     1,DLA,0,COUNT
4DKL          LDN   0  GENQ1(3) 
4F5=          DLCA     1,STO,0,CTSA 
4FJW          LDN   0  GREP1(3)            [SET RWA WORDS LAST, SO EXEC. DOESN'T
4G4G          DLCA     1,STO,0,CREP        [TRY TO IMPLEMENT PERI TOO SOON. 
4GJ6          LDN   0  GREP2(3) 
4H3Q          DLCA     1,STO,0,CREP2
4HHB    PERI1 GLPERI                       [(SHOULDN'T HAPPEN THO' FOR MODE 3). 
4J32    WAIT1 LDXC  0  GTIM(3)             [GTIM WILL BE -VE. ON 1ST. PASS. 
4JGL          BCC      WAIT2
4K2=          LDX   0  JTIME
4KFW          STO   0  GTIM(3)  
4K^G    WAIT2 LDX   0  GSIGN               [MARK IT 
4LF6          ORS   0  GWAIT(3)            [TO BE WOKEN UP BY THE AMOP  
4LYQ          COOR1                        [GO TO SLEEP DURING THE TRANSFER 
4MDB          LDXC  0  GREP1(3) 
4MY2          BCS      WAIT2
4NCL          LDX   6  GREP2(3)            [2ND. REPLY WORD.
4NX=          SLC   0  5                   [J. TO RE-POLL IF INOP., 
4PBW          BPZ   0  ZINOP1   
4PWG          ANDN  0  #13                 [OR TIMED-OUT, ERROR OR NOT-IMP. 
4QB6          BNZ   0  ZINOP1   
4QTQ          BNG   6  WAIT1               [J. BACK TO WAIT FOR READ TERMINATION
4R*B    #   
4RT2          ADXC  6  6                   [J. IF TIMED-OUT 
4S#L          BCS      POLL 
4SS=          SLC   6  4
4T?W          BPZ   6  POLL                [OR INOP. TO REPOLL. 
4TRG          ANDN  6  3                   [J. TO TRY AGAIN IF ERROR OR NOT-IMP.
4W?6          BNZ   6  RERR1
4WQQ          LDN   2  GENQ3(3)            [X2 POINTS TO THE STATUS CHAR.   
4X=B          SRC   6  1
4XQ2          BNG   6  RERR1
4Y9L          CALL  7  STATENQ  
4YP=          BRN      RERR1
4Y^4 ...      BPZ   5  POLL                 [J IF WARNING STATUS
4^8W          ANDN  5  1
4^NG          UNLOCK   3                   [UNLOCK THE LCB. 
5286          BZE   5  POLE                [RE-POLL IF ATTENTION IS SET.
52MQ          MHUNTW   3,A7020,INFORM      [FIND THE INFORMATION BLOCK  
537B          SMO      APCTP(3)            [STEP ON TO CURRENT PCT RECORD   
53M2          LDX   5  IDUNIQUE(3)         [GET THE IDENTIFIER WORD 
546L          STO   5  AWORK1(2)           [& SAVE IT.  
54L=          LDN   0  APCTERRNUM   
555W          STO   0  ACOMMUNE1(2) 
55KG          CALL  7  PCTHUNT             [FIND THE FIRST RELEVANT MESSAGE BLK.
5656          BRN      SHALT               [IF NONE - THEN THERE'S BEEN A BOOBOO
56JQ          BRN      SHALT
574B    #   
57J2    ZREP  LOCKC    3,REFINDA           [LOCK IT 
583L          CALL  1  REFINDA  
58H=          LDX   3  2
592W          LDX   1  FX1  
59GG          LDX   2  FX2  
5=26          CALL  7  PREPERI  
5=FQ          LDN   0  80   
5=^B          DLCA     1,DLA,0,COUNT2      [SET UP SPOUT.   
5?F2          LDN   0  CENQOUT(3)   
5?YL          DLCA     1,STO,0,CTSA2
5#D=    ZREP1                              [REPEAT PERIS ENTER HERE.
5#XW          LDN   0  128  
5*CG          DLCA     1,DLA,0,COUNT
5*X6          LDN   0  COUTBUFF(3)  
5BBQ          DLCA     1,STO,0,CTSA 
5BWB          LDN   0  COUTREP(3)          [LOAD RWA.S. 
5CB2          DLCA     1,STO,0,CREP 
5CTL          LDN   0  CINREP(3)
5D*=          DLCA     1,STO,0,CREP2
5DSW    PERI2 GLPERI                       [MODE 4 REJOINS HERE.
5F#G    WAIT3 MHUNTW   1,A7020,ALCB 
5FS6          LDXC  0  GTIM(1)             [-VE. ON 1ST. PASS.  
5G?Q          BCC      WAIT4
5GRB          LDX   0  JTIME
5H?2          STO   0  GTIM(1)  
5HQL    WAIT4 LDX   0  GSIGN               [SET THE 
5J==          ORS   0  GWAIT(1)            [PCT WAITING FOR THE AMOP TO 
5JPW          COOR1                        [PUT IT BACK ON THE LIST 
5K9G          LDXC  0  COUTREP(3)          [J. IF WRITE NOT YET FINISHED.   
5KP6          BCS      WAIT3
5L8Q          LDX   6  CINREP(3)           [READ REPLY WORD.
5LNB          ADXC  0  0
5M82          BCS      ZINOP2   
5MML          SLC   0  4
5N7=          BPZ   0  ZINOP2   
5NLW          ANDN  0  3
5P6G          BNZ   0  ZREP2               [J. IF WRITE WAS ERRORED.
5PL6          BNG   6  WAIT3               [J. IF READ STILL ACTIVE.
5Q5Q          ADXC  6  6
5QKB          BCS      POLL                [J. IF READ TIMED-OUT.   
5R52          SLC   6  4
5RJL          BPZ   6  POLL                [OR IF INOP. 
5S4=          SRC   6  1
5SHW          BNG   6  ZREP4               [OR IF NOT IMPLEMENTED.  
5T3G          LDEX  2  CINREP(3)           [READ REPLY COUNT.   
5TH6          NGX   2  2                   [CALCULATE   
5W2Q          ADN   2  78                  [THE CHARACTER   
5WGB          BNG   2  ONLY1               [J IF ONLY 1 CHAR. READ IN   
5X22          SRC   2  2                   [POSITION OF THE 
5XFL          ADN   2  CENQOUT(3)          [STATUS CHARACTER
5X^=          CALL  7  STATCON             [CONVERT STATUS TO INTERNAL FORM 
5YDW    STATOUT 
5YYG          BRN      ZREP4               [J. IF TRANS. ERROR BUT DEVICE OK.   
5^D6          LDX   2  FX2                 [RESET X2
5^XQ          LDX   5  AWORK1(2)           [RESTORE THE PCT IDENTIFIER. 
62CB    NXBK  STO   3  AWORK2(2)           [SAVE ADDR OF NEXT BLK TO BE FREED   
62X2          CALL  7  PCTHUNT             [IS THERE ANOTHER MESSAGE BLOCK  
63BL          ORX   7  GSIGN               [SET MARK FOR UNSUCCESSFUL SEARCH.   
63W=          BRN      REMFL               [X7 +VE (AS V CLEAR) IF IREMTW FOUND.
64*W          FREECORE AWORK2(2)           [YES - FREE PREVIOUS MESSAGE BLOCK   
64TG          BRN      POLE                [AND REPOLE  
65*6    #   
65SQ    REMFL FREECORE AWORK2(2)           [FREE THE LAST BLOCK.
66#B          BPZ   7  NXBK                [J. TO LOOK AGAIN IF NOT END OF CHAIN
66S2          MHUNTW   3,A7020,INFORM      [FIND
67?L          LDX   6  ALINESTAT(3)        [THE INFORM BLOCK AND STEP TO
67R=          ADX   3  APCTP(3)            [THE 
68=W          BPZ   6  NOTMO               [RELEVANT RECORD, J. IF NOT MOPPING O
68QG          LDCT  0  #100                [OTHERWISE HAS MOP OFF MESSAGE ALREAD
69=6          ANDX  0  APCTSTAT(3)         [BEEN OUTPUT? J. TO LEAVE OUTPUT FLIP
69PQ          BZE   0  POLE                [IF NOT, OTHERWISE GET THE   
6=9B    NOTMO LDCH  4  APCTX(3)            [CONSOLE INTERFACE BIT AND UNSET 
6=P2          ERS   4  APCTD(3)            [THE FLIPED BIT  
6?8L    POLE  ACROSS   PCTCON,1            [NOW REPOLE  
6?N=    #   
6#7W    #   
6#MG    SHALT MHUNTW   3,A7020,INFORM      [ERROR IF FLIPPED BUT NOT MOPPING OFF
6*76          LDXC  7  ALINESTAT(3) 
6*LQ          BCC      NOTMOPOFF
6B6B          LDN   2  FPTPCT(3)           [ARE ANY ACTIVITIES STILL RUNNING
6BL2    NOTHS LDX   2  FPCT(2)             [FOR THIS TERMINAL?  
6C5L          LDXC  0  APCTID-FPTPCT(2) 
6CK=          BCS      NOACT               [J. IF NOT,  
6D4W          ANDN  0  -1                  [OTHERWISE UNSET THE 
6DJG          BXU   0  APCTP(3),NOTHS      [FLIP BIT AND SET THE
6F46          ADX   3  0                   [SECONDARY FLIP BIT TO   
6FHQ          LDCH  0  APCTX(3)            [GIVE THEM A CHANCE TO   
6G3B          ERS   0  APCTD(3)            [FINISH. 
6GH2          ORS   0  APCTX(3) 
6H2L          ACROSS   PCTCON,3            [GO TO REPOLL.   
6HG=    #   
6H^W    NOACT LDCT  0  #100                [SET THE "CONSOLE OUTPUT FINISHED"   
6JFG          ADX   3  APCTP(3)            [BIT, SO THAT ANY FURTHER MESSAGES   
6J^6          ORS   0  APCTSTAT(3)         [FOR THIS TERMINAL GET REROUTED. 
6KDQ          ADXC  7  7                   [J. IF CLOSING DOWN BECAUSE "FINISH  
6KYB          BCS      NOTMO               [NOW" HAS BEEN ORDERED.  
6LD2          SETNCORE COUTBUFF+17-A1,3,A7020,CONSOUT,1 
6LXL          STO   5  CIDENTM(3)          [SET UP A FAREWELL MESSAGE.  
6M7D ...      LDX   0  5                   [SAVE IDENT WORD 
6MC=          LDN   5  SMESS(1) 
6MWW          LDN   6  COUTBUFF(3)  
6NBG          MOVE  5  16   
6NW6          ADXC  7  7                   [J. UNLESS ATTACHED  
6P*Q ...      BCC      ZREPA               [INSTEAD OF MOPPED OFF.  
6PTB          LDN   5  TMESS(1)            [OVERWRITE THE "MOPPED OFF" CHARACTER
6Q*2          LDN   6  COUTBUFF+8(3)
6QSL          MOVE  5  4
6R73 ...ZREPA LDX   5  0                   [SET X5=CIDENTM READY FOR REFINDA
6RFD ...      BRN      ZREP 
6RRW    #   
6S?G    NOTMOPOFF   
6SR6          GEOERR   1,NOPCTMES          [FLIPPED FOR NO REASON.  
6T=Q    #   
6TQB    RERR1 CALL  7  REPERI              [TEST ERROR COUNT & SET UP LCA AGAIN.
6W=2          BRN      REALERR             [J. TO REPEAT PERI.  
6WPL    #   
6X9=    ZREP2 BPZ   6  ZREP4               [J. IF READ ALREADY TERMINATED,  
6XNW    ZREP3 CALL  7  ZCNCL               [OTHERWISE TRY TO CANCEL IT. 
6Y8G          BRN      PERI2
6YN6    #   
6^7Q    ZREP4 CALL  7  REPERI              [TEST ERROR COUNT & SET UP LCA AGAIN.
6^MB          BRN      ZREP1               [J. TO REPEAT PERI.  
7272    #   
72LL    ZINOP1  
736=          BPZ   6  POLL                [J. IF READ ALREADY TERMINATED,  
73KW          CALL  7  ZCNCL               [OTHERWISE TRY TO CANCEL IT. 
745G          BRN      PERI1
74K6    #   
754Q    ZINOP2  
75JB          BNG   6  ZREP3               [J. TO CANCEL READ IF STILL BUSY.
7642    POLL  UNLOCK   3                   [UNLOCK THE BUFFER BLOCK & RE-POLL.  
76HL          BRN      POLE 
773=    #   
77GW    #   
782G    #   
78G6    Z2PCTCOUT                          [ENTRY FOR CLEARING UP MESSAGES. 
78^Q    #   
79FB    #     NOW FREE MESSAGE BLOCKS FOR THIS TERMINAL AND USE ROUTING BLOCKS  
79^2    #     TO RE-ROUTE THE MESSAGES TO A BACK-UP CONSOLE.
7=DL    NXTM  MHUNTW  3,A7020,INFORM
7=Y=          CALL  7  PCTHUNT             [LOOK FOR MESSAGE BLOCKS FOR THIS PCT
7?CW          BRN      NUP                 [NO MORE - END.  
7?XG          BRN   REROUTE                [ROUTING BLOCK - REROUTE THE MESSAGE.
7#C6          LDX   3  FPTR(3)  
7#WQ          FREECORE BPTR(3)  
7*BB          BRN      PCTH0               [J. BACK IN FOR NEXT.
7*W2    #   
7B*L    REROUTE 
7BT=          CHAIN    3,2                 [RECHAIN THE ROUTING BLOCK NEXT TO   
7C#W          DOWN     CONSROOT,2          [THE ACTIVITY AND RE-ROUTE IT.   
7CSG          BRN      NXTM                [START AGAIN.
7D#6    #   
7DRQ    NUP   MHUNTW   3,A7020,INFORM      [GET TERMINAL RECORD AGAIN.  
7F?B          ADX   3  APCTP(3) 
7FR2          LDCH  0  APCTX(3)            [CONS O/P FLIP BIT   
7G=L          ORS   0  APCTD(3) 
7GQ=          ERS   0  APCTD(3)            [ENSURE CONS O/P IS UNFLIPPED
7H9W          UP
7HPG    #   
7J96    #   
7JNQ    #   
7K8B    #END
^^^^ ...16312340000500000000