{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PCTCOUT8)}}
====== PCTCOUT8 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DLCA|DLCA]], [[george:macro:DOWN|DOWN]], [[george:macro:FINDLCA|FINDLCA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GLPERI|GLPERI]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:PCTHUNT|PCTHUNT]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UP|UP]]
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