{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PCTCON8)}}
====== PCTCON8 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DLCA|DLCA]], [[george:macro:DOWN|DOWN]], [[george:macro:ENRINGD|ENRINGD]], [[george:macro:FINDLCA|FINDLCA]], [[george:macro:FPUT|FPUT]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHKILL|FSHKILL]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOPACK|GEOPACK]], [[george:macro:GLPERI|GLPERI]], [[george:macro:HUNTW|HUNTW]], [[george:macro:INFORMX|INFORMX]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCKC|LOCKC]], [[george:macro:LONGOFF|LONGOFF]], [[george:macro:LONGSET|LONGSET]], [[george:macro:LONGSTOP|LONGSTOP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NUDGE|NUDGE]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:PAIR|PAIR]], [[george:macro:PCT7020|PCT7020]], [[george:macro:PCTFACT|PCTFACT]], [[george:macro:PCTFIND|PCTFIND]], [[george:macro:RERING|RERING]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:WAITSTOP|WAITSTOP]]
22FL #LIS K0PCTCON>K0PCT>K0ALLGEO>K0GREATGEO
22^= #SEG PCTCON8 [G CONSTANTINIDES
23DW 8HPCTCON8
23YG # ENTRY POINTS
24D6 SEGENTRY K1PCTCON,Z1PCTCON
24MY ... SEGENTRY K2PCTCON,Z2PCTCON
24XQ SEGENTRY K3PCTCON,Z3PCTCON
25CB MENDAREA APCTGAP,K100PCTCON
25X2 [
26BL [ THIS SEGMENT IS THE CENTRAL CONTROL SEGMENT FOR THE PCT ROUTINES
26W= [
27*W #
27TG XALPHA #74 [ALPHA
28*6 XBETA #75 [BETA
28SQ XDELTA #76 [DELTA
29#B XDELMAX #40
29S2 #
2=?L TABTYPE
2=R= [OUTPUT ROUTINE
2?=W BRN ZLP [LINE PRINTER 7021
2?QG BRN ZCR [CARD READER 7022
2#=6 BRN ZTW [TELE-TYPEWRITER 7023
2#PQ BRN ZTR [TAPE READER 7024
2*9B BRN ZTP [TAPE PUNCH 7025
2*P2 #
2B8L ZLP
2BN= ACROSS PCTLPTP,1 [LINE PRINTER ROUTINE
2C7W ZCR
2CMG ACROSS PCTCRTR,1 [CARD READER ROUTINE
2D76 ZTW
2DLQ ACROSS PCTCIN,1 [TELE-TYPE INPUT ROUTINE
2F6B ZTR
2FL2 ACROSS PCTCRTR,1 [TAPE READER ROUTINE
2G5L ZTP
2GK= ACROSS PCTLPTP,1 [TAPE PUNCH ROUTINE
2H4W #
2HJG XLINK PAIR PCTSTART,1
2J46 #
2JHQ PHUINOP +HUINOP
2K3B PJINOP +JINOP
2KH2 ONEDAY 24*3600/K9*1000
2L2L YEMODE40004 #40004
2LG= #
2L^W [ THIS SUBROUTINE CHECKS WHETHER IT IS NECESSARY TO ABANDON
2MFG [ SYSTEM USE OF THE LINE, AND ATTEMPTS TO DO SO IF IT IS.
2M^6 [
2NDQ [ IT EXITS AT LINK+1 IF NO CLOSE DOWN REQUIRED, AND AT LINK+0 IF NOT YET
2NYB [ ABLE TO CLEAR UP BECAUSE ACTIVITIES &/OR CONSOLE OUTPUT STILL EXIST
2PD2 [ (IF ENTRY IS FROM THE INOP. PATH IT DOESN'T BOTHER ABOUT CONSOLE O/P).
2PXL [ IF EVERYTHING IS CLEARED UP IT DOES NOT EXIT, BUT SUICIDES INSTEAD.
2QC= #
2QWW QOFF1 ORX 5 GSIGN [SET MARKER FOR QOFF1 ENTRY.
2RBG LDX 2 FX2
2RW6 QOFF2 MHUNTW 3,A7020,INFORM
2S*Q LDXC 0 ALINESTAT(3) [J. IF NOT MOPPING OFF.
2STB BCS YMPOF
2T*2 LDCT 0 #100 [OR FINISHING ("FINISH NOW" BIT SET")
2TSL ANDX 0 FINISH
2W#= BZE 0 QOFF5 [TO EXIT +1.
2WRW LDCT 0 #600 [SET THE FINISH MARKER.
2X?G ORS 0 ALINESTAT(3)
2XR6 YMPOF LDX 0 JOBRING+BPTR(2) [J. IF ACTIVITIES STILL BEING CREATED
2Y=Q SBN 0 JOBRING(2)
2YQB BNZ 0 (5)
2^=2 LDN 2 FPTPCT(3) [J. UNLESS SOME ACTIVITIES ARE STILL
2^PL BXE 2 BPTPCT(3),ZMPOF [RUNNING, IN WHICH CASE ENSURE THAT
329= LDCT 4 1 [THE MOP OFF MARKER IS SET IN EACH
32NW STOP LDX 2 FPCT(2) [BUFFER BLOCK, AND THAT THE ACTIVITY
338G LDXC 0 APCTID-FPTPCT(2) [IS KICKED INTO LIFE.
33N6 BCS (5)
347Q ORS 4 EWAIT-FPTPCT(2)
34MB LDX 7 2
3572 SBN 2 FPTPCT
35LL LDX 1 2
366= PCTFACT 2
36KW LDX 0 EWAIT(1)
375G STOC 0 EWAIT(1)
37K6 BCC QOFF3 [J. UNLESS WAITING ON COOR1.
384Q FPUT
38JB BRN QOFF4
3942 QOFF3 WAITSTOP QOFF4 [WAKE UP IF IN LONG WAIT OR DEMAND.
39HL QOFF4 LDX 2 7
3=3= BRN STOP [J. BACK FOR NEXT.
3=GW #
3?2G QOFF5 ADN 5 1
3?G6 BRN (5) [EXIT +1 (X5 MAY BE -VE : DON'T SET V
3?^Q #
3#FB ZMPOF BNG 5 QOFF6 [J. IF ENTRY FROM INOP. LINE PATH.
3#^2 HUNTW 2,A7020,CONSOUT [J. IF TW O/P STILL TO BE DEALT WITH.
3*DL BPZ 2 (5)
3*Y= LDX 2 3 [ARE ANY INTERFACES STILL FLIPPED?
3BCW LDN 0 0
3BXG NXFLP LDXC 4 APCTSTAT(2)
3CC6 BCS NOTOP
3CWQ ORX 0 APCTD(2)
3DBB ORX 0 APCTX(2)
3DW2 NOTOP ADNC 4 1
3F*L ADN 2 APCTRLEN
3FT= BNZ 4 NXFLP
3G#W ANDN 0 #77
3GSG BNZ 0 (5)
3H#6 QOFF6 MHUNTW 3,A7020,ALCB [CLEAR UP THE RING & DIE GRACEFULLY.
3HRQ STOZ A1+BPTR(3)
3J?B LDX 2 A1+FPTR(3)
3JR2 LDX 4 GSIGN
3K=L STOZ BPTR(2)
3KQ= ORS 4 FOURTHWD(2)
3KST ... FSHCODE B,NOKILLA
3KXD ...(
3L23 ... FSHKILL
3L4L ...NOKILLA
3L79 ...)
3L9W SUICIDE
3LPG #
3M96 #
3MNQ [ THIS SUBROUTINE SETS UP CPA ACTIVITIES FOR C/R, T/R OR CONSOLE INPUT
3N8B [ ENGAGES AND ACTLF'S WHEN THE L/P OR T/P ARE ENGAGED
3NN2 [ THE ROUTINE IS CALLED FROM X7
3P7L [ ON ENTRY X4 CONTAINS IN CH.3. THE INTERFACE BIT POSITIONS FOR THE
3PM= [ ACTIVITIES WHICH NEED TO BE SET UP
3Q6W [
3QLG SETACT
3R66 SLL 4 6 [REMOVE THE 'NO
3RKQ ERS 4 APCTD(2) [ACTIVITY' BITS
3S5B LDX 2 FX2 [REMEMBER THE
3SK2 STO 6 ACOMMUNE1(2) [STATUS REPLY
3T4L SMO APCTP(3) [REMEMBER THIS PCT'S IDENTIFIER WORD.
3TJ= LDX 0 IDUNIQUE(3)
3W3W SBX 7 FX1 [RELITAVISE THE CALL ADDRESS
3WHG STO 7 ACOMMUNE2(2) [AND REMEMBER IT
3X36 STO 0 ACOMMUNE3(2)
3XGQ LDX 2 3 [X2 TO POINT TO THE INFORMATION BLOCK
3Y2B LDN 6 12 [DEVICE DESCRIPTION LENGTH
3YG2 BRN NWACT
3Y^L NEWAC MHUNTW 2,A7020,INFORM [FIND THE INFORMATION BLOCK
3^F= NWACT LDX 3 APCTP(2) [SET X3 TO CURRENT PCT RECORD
3^YW ADX 2 APCTP(2) [GET RECORD ADDRESS
42DG NXACT SMO 6 [GET
42Y6 LDX 7 APCTDEV-2(2) [THE DEVISE BIT
43CQ SRL 7 6 [CHARACTER
43XB ANDX 7 4 [IS AN ACTIVITY REQUIRED?
44C2 BNZ 7 OKGET [YES - THEN GET IT
44WL SBN 6 2 [NO - THEN TRY THE
45B= BNZ 6 NXACT [NEXT DEVISE
45TW SBX 2 3 [X3 TO POINT TO THE
46*G LDX 3 2 [INFORMATION BLOCK
46T6 LDX 2 FX2 [RESET X2
47#Q LDX 6 ACOMMUNE1(2) [RESET X6
47SB LDX 7 ACOMMUNE2(2) [DATUMISE
48#2 ADX 7 FX1 [THE LINK
48RL LDX 2 APCTP(3) [X2 TO RECORD
49?= ADX 2 3 [POINTER
49QW EXIT 7 0 [FINISH
4==G #
4=Q6 NOCOR MHUNTW 2,A7020,INFORM [FIND THE INFORMATION BLOCK
4?9Q LDX 3 APCTP(2) [RELATIVE PCT RECORD POINTER
4?PB ADX 2 APCTP(2) [STOP TO CURRENT PCT RECORD
4#92 SMO 6 [ACCESS THE FIRST
4#NL LDX 0 APCTDEV-2(2) [DEVISE WORD
4*8= SRL 0 6 [ISOLATE
4*MW ANDN 0 #7700 [INTERFACE BIT POSITION
4B7G ORS 0 APCTD(2) [RESET THE 'NO ACTIVITY' MARKER
4BM6 ERS 0 4 [REMOVE THE 'SET UP' ACTIVITY BIT
4BWY ... LDX 2 FX2
4C6Q BRN MORAC [BACK FOR THE NEXT ACTIVITY
4CLB OKGET
4D62 ADX 2 6 [POINT TO THE RECORD
4DKL LDX 7 APCTDEV-2(2) [ACCESS THE BIT SIGNIFICANT CHARACTER
4F5= DSA 3 7 [FORM THE IDENTIFIER WORD
4FJW LDX 0 APCTDEV-1(2) [JUMP IF WE ARE SETTING
4G4G SMO FX2 [REMEMBER THE 2ND DEVISE RECORD
4GJ6 STO 0 ACOMMUNE4 [THROUGH THE NEXT CO-ORDINATION
4H3Q BPZ 0 SETLF [SOURCE INTERFACE?
4HHB LDN 5 CPAT [ACCESS THE ACTIVITY TYPE
4J32 LDN 3 CPATLEN [LENGTH OF A CPAT
4JGL XGET SLL 5 12 [SET BLOCK TYPE WORD.
4K2= GETACTXO NOCOR,5,3 [OPTIONAL GETCORE.
4KFW LDX 1 BPTR(2) [POINTER TO THE NEW ACTIVITY
4K^G ENRINGD JOBRING(1),JOBRING(2)[RING ACTIVITY INTO TEMPORARY RING.
4LF6 LDX 0 ACOMMUNE3(2)
4LYQ LDX 3 ACOMMUNE4(2) [DEVISE RECORD WORD
4MDB LDX 2 BPTR(2) [POINTER TO THE NEW ACTIVITY
4MY2 STO 0 JSOURCE1(2) [STORE THE PCT IDENTIFIER.
4NCL STO 3 ACC4(2) [STORE THE SECOND DEVISE RECORD WORD
4NX= STO 7 ACC5(2) [STORE THE IDENTIFIER WORD
4PBW LINKSET 2,XLINK(1) [LINK TO K1PCTSTART
4PWG FPUT [PUT THE ACTIVITY ON THE LIST
4QB6 MORAC SBN 6 2 [HAVE ALL THE
4QTQ BNZ 6 NEWAC [BITS BEEN LOOKED AT?
4R*B LDX 6 ACOMMUNE1(2) [RESET X6
4RT2 LDX 7 ACOMMUNE2(2) [DATUMISE
4S#L ADX 7 FX1 [THE LINK
4SS= MHUNTW 3,A7020,INFORM [REFIND THE INFORMATION BLOCK
4T?W LDX 2 APCTP(3) [RESET
4TRG ADX 2 3 [THE POINTERS
4W?6 EXIT 7 0 [AND EXIT
4WQQ SETLF LDN 5 ACTLF+GREMOTE [ACCESS LISTFILE ACTIVITY TYPE
4X=B LDN 3 ACTLFLEN+GREMOTELEN [LENGTH OF A REM ACTLF
4XQ2 BRN XGET [NON GET THE ACTIVITY
4Y9L #
4YP= #
4^8W [
4^NG [ THIS SUBROUTINE CAUSES THE PCT ACTIVITY TO WAIT. IT EXITS 1 UPON AN
5286 [ EVENT AND EXITS 0 ON A TIME INTERUPT
52MQ [
537B PAUSE
53M2 SBX 5 FX1 [RELITAVISE THE CALL ADDRESS
546L LONGSET #62,XFAIL [SET WAIT FIELD
54L= LONGSTOP XEVENT,XWAIT [WAIT FOR EVENT OR TIME INTERUPT
555W XEVENT
55KG ADX 5 FX1 [DATUMISE THE CALL ADDRESS
5656 EXIT 5 1 [EXIT UPON EVENT
56JQ XWAIT LONGOFF [IF TIME WAKEUP - CLEAR WAIT FIELD
574B MHUNTW 3,A7020,INFORM [J. IF MOP OFF HAS OCCURRED.
57J2 LDXC 0 ALINESTAT(3)
583L BCS XEVENT
58H= ADX 5 FX1 [DATUMISE THE CALL ADDRESS
592W EXIT 5 0 [EXIT FOR TIME INTERUPT
59GG XFAIL GEOERR 1,WAIT SET
5=26 #
5=FQ #
5=^B #
5?F2 [
5?YL [ THIS IS THE SUBROUTINE TO RELOCATE THE LCB, AS REQUIRED BY LOCKC MACRO
5#D= [
5#XW ZFINDLCB
5*CG MHUNTW 2,A7020,ALCB
5*X6 EXIT 1 0
5BBQ #
5BWB #
5CB2 #
5CTL [
5D*= [ THIS IS THE 7020 POLING ROUTINE. IT SELECTS THE NEXT INTERFACE TO
5DSW [ BE POLED
5F#G [
5FS6 Z1PCTCON
5G?Q POLE
5GRB MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK
5H?2 SMO APCTP(3) [GET THE SECONDARY FLIP MASK.
5HQL LDX 0 APCTX(3)
5J== LDX 7 HALFTOP
5JPW ANDN 0 #77
5K9G BZE 0 TIMETEST [J. IF NOTHING TO DO
5KP6 SMO APCTP(3) [OTHERWISE RESET PRIMARY
5L8Q ORS 0 APCTD(3) [AND CLEAR SECONDARY.
5LNB BRN TIMETEST
5M82 [
5MML Z3PCTCON
5N7= MHUNTW 3,A7020,INFORM
5NLW NGN 7 #7701 [#77770077
5P6G TIMETEST
5PL6 SMO APCTP(3) [CLEAR "INTERFACE ACTIVE" MARKER, IF
5Q5Q ANDS 7 APCTX(3) [SET (ALSO SECONDARY FLIP IF K3 ENTRY
5QKB LDX 0 ATSLICE(3)
5R52 BZE 0 ONEPCT [J. IF NOT MULTIDROP
5RJL LDX 0 JTIME
5S4= SBX 0 APCTCLNCT(3)
5SHW BPZ 0 NODAY
5T3G ADX 0 ONEDAY(1) [ADD IN 24 HRS. IF PAST MIDNIGHT.
5TH6 NODAY TXL 0 ATSLICE(3)
5W2Q BCS ONEPCT [J. IF TIME SLICE UP
5WGB NXT SMO APCTP(3) [HAS THE
5X22 LDX 0 APCTSTAT+APCTRLEN(3) [LAST MULTIDROP
5XFL ADN 0 1
5X^= BZE 0 NEND [PCT BEEN REACHED?
5YDW LDN 0 APCTRLEN [NO - THEN
5YYG ADS 0 APCTP(3) [STEP RELATIVE POINTER
5^D6 BRN NOTED
5^XQ NEND STOZ APCTP(3) [BACK TO FIRST PCT
62CB NOTED LDX 0 JTIME
62X2 STO 0 APCTCLNCT(3) [TIME COUNT
63BL ONEPCT
63W= LDX 1 3
64*W ADX 1 APCTP(3)
64TG LDX 7 APCTHADD(1) [HARDWARE ADDRESS
65*6 CALL 1 ZFINDLCB [FIND THE LINE CONTROL BLOCK,
65SQ LOCKC 2,ZFINDLCB [LOCK IT, & AGAIN
66#B MHUNTW 3,A7020,ALCB [FIND THE LINE CONTROL BLOCK
66S2 DSA 7 GENQ1(3) [SET HARDWARE ADDRESS IN ENQ SEQUENCE
67?L LDN 7 APCTERRNUM
67R= REP
68=W LDX 4 GUNITNO(3)
68QG FINDLCA ,4
69=6 SLL 4 15
69PQ DCA ,STO,4,MODE
6=9B LDN 0 #11
6=P2 DLCA 1,DLA,0,MODE
6?8L LDN 0 GREP1(3)
6?N= DLCA 1,STO,0,CREP
6#7W LDN 0 7
6#MG DLCA 1,DLA,0,COUNT
6*76 LDN 0 GENQ1(3)
6*LQ DLCA 1,STO,0,CTSA
6B6B LDN 0 2
6BL2 DLCA 1,DLA,0,MODE2
6C5L LDN 0 GREP2(3)
6CK= DLCA 1,STO,0,CREP2
6D4W LDN 0 16
6DJG DLCA 1,DLA,0,COUNT2
6F46 LDN 0 GENQ3(3)
6FHQ DLCA 1,STO,0,CTSA2
6G3B PERI GLPERI
6GH2 WAIT1 LDX 0 JTIME
6H2L STO 0 GTIM(3)
6HG= WAIT LDX 0 GSIGN [SET MARKER IN PCT'S LCB
6H^W ORS 0 GWAIT(3) [WAITING FOR AMOP TO FPUT THE PCT
6JFG COOR1 [GO TO SLEEP
6J^6 LDX 0 GREP1(3) [ACCESS WRITE PART REPLY WORD
6KDQ BNG 0 WAIT [HAS THE PERI FINISHED?
6KYB ADXC 0 0
6LD2 BCS XINOP1
6LXL SLC 0 4
6MC= BPZ 0 XINOP1
6MWW ANDN 0 3
6NBG LDX 4 GREP2(3)
6NW6 BNZ 0 XERRX
6P*Q BPZ 4 WAIT2
6PTB LDX 0 GTIM(3)
6Q*2 BNG 0 WAIT1
6QSL BRN WAIT
6R#= WAIT2 ADXC 4 4
6RRW BCS XINOP2
6S?G SLC 4 4
6SR6 BPZ 4 XINOP2
6T=Q ANDN 4 7
6TQB BNZ 4 XERROR
6W=2 LDCH 6 GENQ3(3)
6WPL BXL 6 XALPHA(1),XSHAD
6X9= SLL 6 6
6XNW BCHX 3 SHADD
6Y8G XSHAD LDN 6 #7400
6YN6 SHADD LDCH 0 GENQ3(3)
6^7Q ORX 6 0
6^MB LDX 0 GENQ1(3)
7272 ANDN 0 -1
72LL BXU 6 0,XERROR
736= BCHX 3 £
73KW SRL 0 6
745G LDCH 6 GENQ3(3)
74K6 BXL 6 XALPHA(1),XSHST
754Q LDX 0 6
75JB BCHX 3 £
7642 LDCH 6 GENQ3(3)
76HL XSHST SBNC 0 #75
773= BCS YALPH
77GW BZE 0 YOUT
782G SBN 6 #30
78G6 BXL 6 XDELMAX(1),YOUT
78^Q ADN 6 #74
79FB YALPH SBN 6 #40
79^2 YOUT ANDX 3 BITS22LS
7=DL UNLOCK 3
7=Y= CALL 5 QOFF2 [TEST FOR MOP OFF, ATTACH OR FINISH.
7?CW NULL [DON'T WORRY IF CAN'T YET BE STOPPED.
7?XG LDX 2 APCTP(3)
7#C6 ADX 2 3 [STEP TO THE CURRENT PCT RECORD
7#WQ LDXC 0 APCTSTAT(2) [WAS THE PCT
7*BB BCC NOTOUT [INOPERABLE?
7*W2 LDX 0 BITS22LS [UNSET THE
7B*L ANDS 0 APCTINOP(3) ['ALL OUT' MARKER
7BT= ANDS 0 APCTSTAT(2) [AND THE INOP. & INACTIVE BITS, AND
7C#W LDN 0 1 [ADD 1 TO THE COUNT OF ACTIVE PCTS.
7CSG ADS 0 APCTACT(3)
7D#6 NOTOUT
7DRQ BZE 6 WAITAWYL [J. TO WAIT IF CONSOLE INPUT PRESSED.
7F?B LDCH 0 APCTX(2) [GET THIS TERMINAL'S CONSOLE OUTPUT
7FR2 BZE 0 STOCON [INTERFACE : J. OUT IF NO CONSOLE.
7G=L SRL 0 1 [CONSOLE INPUT INTERFACE IS PAIRED WI
7GQ= ANDX 0 6 [IS THE CONSOLE INPUT INTERFACE ACTIV
7H9W BZE 0 STOCON [J. IF NOT.
7HPG LDX 4 APCTD(2) [IS THERE
7J96 SRL 4 6 [ALREADY A
7JNQ ANDX 4 0 [CPA FOR IT ?
7K8B BZE 4 TESTFLIP [J TO SEE IF FLIPPED BEFORE WAITING
7KN2 CALL 7 SETACT [NO - SET IT UP
7L7L BZE 4 WAITAWYL [OK? - NO, THEN REPOLL IN A WHILE.
7LM= BRN NEWDEV [NOW AWAIT FLIP
7M6W #
7MLG STOCON
7N66 BCHX 2 £ [NO
7NKQ LDCH 5 APCTD(2) [GET THE OPERABILITY FROM LAST TIME
7P5B LDCH 0 APCTX(2) [& MASK FOR "LISTFILE TYPE INTERFACES
7PK2 DCH 6 APCTD(2) [REMEMBER THE OPERABILITY
7Q4L ANDX 5 0 [PREVIOUSLY OPERABLE LPS & TPS.
7QJ= LDN 4 0
7R3W ... LDXC 0 ALINESTAT(3) [DON'T SET UP ANY ACTIVITIES IF
7RHG BCS OFFED [MOPPING OFF.
7S36 BCHX 2 £
7SGQ LDCH 4 APCTD(2) [NO-ACTIVITY MASK
7T2B OFFED ANDX 2 BITS22LS
7TG2 LDCH 0 APCTD(2) [RIGHT MASK.
7T^L ANDX 4 0 [WITH THE RIGHT MASK
7WF= ANDX 4 6 [NOW WITH THE STATUS
7WYW ANDX 5 4 [KNOCK DOWN BITS FOR LPS & TPS EXCEPT
7XDG ERX 4 5 [ANY WHICH HAVE ONLY JUST BECOME OPER
7XY6 BZE 4 NCO [ARE THERE ANY
7YCQ CALL 7 SETACT [ACTIVITIES TO BE SET UP?
7YXB NCO LDCH 7 APCTD(2) [PUT THE RIGHT MASK
7^C2 ANDX 7 APCTD(2) [WITH THE FLIP CHARACTER
7^WL BNZ 7 YDEVISE [ANYTHING TO SERVISE
82B= BNZ 4 NEWDEV [NO - THEN DID WE SET UP NEW ACTS?
82TW LDCT 0 #200 [WAS THIS
83*G ANDX 0 APCTSTAT(2) [PCT INACTIVE BEFORE?
83T6 BZE 0 SINAZ [J. IF NOT
84#Q LDX 4 APCTACT(3) [ARE ANY PCTS STILL ACTIVE?
84SB BNZ 4 POLENX
85#2 SINAK LDX 5 APCTP(3) [NO - POLL NEXT UNLESS ON FIRST DROP
85RL BNZ 5 POLENX [IN WHICH CASE ALLOW TIME
86?= BRN WAITAWYL [FOR SOMETHING TO HAPPEN.
86QW SINACT
87=G LDCT 0 #200 [SET THE
87Q6 ORS 0 APCTSTAT(2) [MARKER TO SAY 'INACTIVE'
889Q LDX 0 APCTACT(3) [REDUCE
88PB SBN 0 1 [THE
8992 STO 0 APCTACT(3) ['ACTIVE' COUNT
89NL BNZ 0 POLENX [NO - GO ON
8=8= ... SEGENTRY K50PCTCON [USED BY MACRO POLLTIM
8=MW WAITAWYL
8?7G LDN 6 1
8?M6 BRN TIMEWAIT
8#6Q TESTFLIP [FOR CONSOLE INPUT ONLY
8#LB ANDX 0 APCTD(2) [MASK OUT FLIP BIT
8*62 BNZ 0 SELECTCI [J IF FLIPPED WHEN APCT WAS ON LIST
8*KL NEWDEV
8B5= CALL 5 PAUSE [WAIT A TIME
8BJW BRN NEWDEV [CONTINUE WAITING
8C4G SELECTCI
8CJ6 MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK
8D3Q LDX 2 3 [STOP TO THE
8DHB ADX 2 APCTP(3) [CURRENT PCT RECORD
8F32 LDCT 4 #200 [WAS THE TERMINAL
8FGL ANDX 4 APCTSTAT(2) [INACTIVE LAST TIME
8G2= BZE 4 NOINACT [IT WAS POLLED?
8GFW ERS 4 APCTSTAT(2) [UNSET THE INACTIVE MARKER
8G^G LDN 4 1 [AND UPDATE
8HF6 ADS 4 APCTACT(3) [ACTIVE PCT COUNT.
8HYQ NOINACT
8JDB LDCH 7 APCTD(2) [FLIPED AND RIGHTED
8JY2 ANDX 7 APCTD(2) [CHARACTER
8KCL ANDX 7 6 [WITH THE OPERABILITY CHARACTER
8KX= BRN SELECT [NOW SELECT
8LBW YDEVISE
8LWG LDCT 4 #200 [WAS THIS PCT
8MB6 ANDX 4 APCTSTAT(2) [INACTIVE THE LAST TIME
8MTQ BZE 4 NOTINAC [IT WAS POLED?
8N*B ERS 4 APCTSTAT(2) [UNSET THE INACTIVE MARKER
8NT2 LDN 4 1 [AND
8P#L ADS 4 APCTACT(3) [INCREMENT THE ACTIVE PCT COUNT.
8PS= NOTINAC
8Q?W ORX 7 6 [FLIPPED AND
8QRG ERX 7 6 [INOPERABLE INTERFACES
8R?6 BZE 7 NOWOP [NO - JUMP TO MASK OP.INTERFACES
8RQQ LDN 4 12
8S=B SNXT SMO 4 [ACCESS THE FIRST
8SQ2 LDXC 5 APCTDEV-2(2) [DEVISE RECORD WORD
8T9L BCS SONXCON [JUMP IF CONSOLE OUTPUT
8TP= SRL 5 12 [ISOLATE THE INTERFACE BIT POSITION
8W8W ANDX 5 7 [JUMP IF AN ENGAGE
8WNG BNZ 5 SMARK [IS REQUIRED ON THAT DEVISE
8X86 SONX SBN 4 2 [ON TO
8XMQ BNZ 4 SNXT [THE NEXT DEVISE
8Y7B BRN NOWOP [OR MARK THOSE DEVISES WHICH ARE
8YM2 [ENGAGED
8^6L SONXCON
8^L= [X7 HAS FLIPPED AND INOP INTERFACES
925W SRL 5 12
92KG ANDX 5 7
9356 BZE 5 SONX [J IF CONSOLE OUTPUT NOT FLIPPED
93JQ LDX 5 IDUNIQUE(2) [THE TERMINAL IDENTIFIER
944B DOWN PCTCOUT,2 [REROUTE ANY OUTPUT FOR INOP CONSOLE.
94J2 MHUNTW 3,A7020,INFORM [RESET
953L LDX 2 3 [X2
95H= ADX 2 APCTP(3) [AND X3
962W BRN SONX [POINTERS
96GG SMARK LDN 0 #0100 [SET THE
9726 SMO 4 [WAS THE 'PLEASE ENGAGE'
97FQ ANDX 0 APCTDEV-1(2) [BIT SET?
97^B BNZ 0 SONX [JUMP IF IT WAS
98F2 LDN 0 #0100 [IF NOT SET
98YL SMO 4 [SET THIS
99D= ORS 0 APCTDEV-1(2) ['PLEASE ENGAGE' MARKER
99XW SLL 5 12 [FORM THE DEVISE
9=CG ORX 5 APCTP(3) [IDENTIFIER
9=X6 LDX 2 3 [FIND THE
9?BQ PCT7020 2,5 [7020 BUFFER BLOCK
9?WB LDCT 0 #040 [SET THE DISENGAGED
9#B2 ORS 0 EWAIT(2) [DEVISE MARKER
9#TL LDX 0 GSIGN [IS THE ACTIVITY
9**= ANDX 0 EWAIT(2) [WAITING FOR DATA?
9*SW BZE 0 RFIND [NO - PASS ON
9B#G ERS 0 EWAIT(2) [REMOVE THE WAIT
9BS6 PCTFACT 2 [FIND THE ACTIVITY
9C?Q FPUT [AND SET IT GOING
9CRB RFIND LDX 2 3 [RESET BLOCK AND RECORD
9D?2 ADX 2 APCTP(3) [POINTERS
9DQL BRN SONX [AND ON TO THE NEXT INTERFACE
9F== NOWOP LDCH 7 APCTD(2) [INTERFACES
9FPW ANDX 7 APCTD(2) [RIGHTED AND FLIPPED
9G9G ANDX 7 6 [OPERABLE TOO
9GP6 BZE 7 SINACT [NONE TO SERVISE?
9H8Q LDN 4 12
9HNB RNXT SMO 4 [ACCESS THE FIRST
9J82 LDXC 5 APCTDEV-2(2) [DEVISE RECORD WORD
9JML BCS RONX [JUMP IF CONSOLE OUTPUT
9K7= SRL 5 12 [JUMP IF ACTIVE
9KLW ANDX 5 7 [DEVISE IS ACTIVE
9L6G BNZ 5 REMOV [AND OPERABLE
9LL6 RONX SBN 4 2 [ON TO
9M5Q BNZ 4 RNXT [THE NEXT DEVISE
9MKB BRN SELECT [NOW SELECT
9N52 REMOV LDN 0 #0100 [WAS THE
9NJL SMO 4 ["PLEASE ENGAGE"
9P4= ANDX 0 APCTDEV-1(2) [MARKER SET?
9PHW BZE 0 RONX [IF NOT - RETURN TO TEST NEXT INTER.
9Q3G SMO 4 [IF SO - REMOVE
9QH6 ERS 0 APCTDEV-1(2) [THE MARKER
9R2Q SLL 5 12 [FIND
9RGB ORX 5 APCTP(3) [THE
9S22 LDN 2 FPTPCT(3) [RELEVANT ACTIVITY
9SFL PCTFIND 2,5 [AND UNSET THE "PLEASE ENGAGE" MARKER
9S^= SBN 2 FPTPCT
9TDW LDCT 0 #40
9TYG ERS 0 EWAIT(2)
9WD6 NUDGE [WAKE UP THE ACTIVITY.
9WXQ LDX 2 3 [RESET BLOCK AND RECORD
9XCB ADX 2 APCTP(3) [POINTERS
9XX2 BRN RONX [AND ON TO THE NEXT INTERFACE
9YBL SELECT
9YW= LDN 4 12 [FIND
9^*W NXTES SMO 4 [THE
9^TG LDX 0 APCTDEV-2(2) [HIGHEST
=2*6 SRL 0 12 [PRIORITY
=2SQ ANDX 0 7 [INTERFACE
=3#B BNZ 0 XFND [REQUIRING
=3S2 SBN 4 2 [SEVICE
=4?L BNZ 4 NXTES
=4R= SINAZ LDEX 0 APCTX(2) [J. IF NONE. (N.B. ACTIVE INT. MARK=0
=5=W BZE 0 SINACT
=5QG BRN SINAK
=6=6 #
=6PQ XFND SLL 7 6 [SET THE "INTERFACE ACTIVE" MARKER.
=79B ORS 7 APCTX(2)
=7P2 ADX 2 4 [POINTER TO DEVICE WORD PAIR.
=88L LDX 5 APCTDEV-2(2) [GET THE DEVISE DESCRIPTION
=8N= BNG 5 TOUT [JUMP IF TELE-TYPE OUT
=97W LDX 0 APCTP(3) [FORM
=9MG DSA 0 5 [THE IDENTIFER WORD
==76 ADN 3 FPTPCT [STEP TO THE RING ELEMENT
==LQ LDX 1 3 [SET X1 READY FOR PCT RING SEARCH
=?6B PCTFIND 1,5 [FIND THE RELEVANT 7020 BUFFER
=?L2 LDX 4 2 [REMEMBER POINTER TO PCT RECORD
=#5L RERING 1,3 [RE-RING
=#K= [AT THE HEAD OF THE PCT RING
=*4W LDX 2 4 [RESTORE PCT RECORD POINTER
=*JG LDX 6 APCTDEV-1(2) [GET DEVISE RECORD
=B46 ANDN 6 #77 [ISOLATE THE DEVISE TYPE
=BHQ LDX 7 APCTDEV-2(2) [REMEMBER FIRST WORD OF DEVISE RECORD
=C3B SBN 6 3
=CH2 BZE 6 XFND1
=D2L LDXC 1 ALINESTAT-FPTPCT(3)
=DG= BCC XFND1
=D^W SRL 5 12
=FFG SMO APCTP-FPTPCT(3)
=F^6 ERS 5 APCTD-FPTPCT(3)
=GDQ BRN WAITAWYL [DON'T SELECT BULK DEVICES IF CLOSING
=GYB XFND1 ADN 6 3
=HD2 SMO 6
=HXL BRN TABTYPE-1
=JC= #
=JWW TOUT
=KBG ACROSS PCTCOUT,1 [FOR CONSOLE OUTPUT
=KW6 #
=L*Q #
=LTB XINOP1
=M*2 LDX 0 GREP2(3) [HAS THE READ
=MSL BPZ 0 XINOP2 [TERMINATED?
=N#= XINPX LDEX 4 GUNITNO(3) [SET UP, AND ISSUE, "SOFT" CANCEL.
=NRW SRC 4 9
=P?G SMO FX1
=PR6 ORX 4 YEMODE40004
=Q=Q DCA ,STO,4,MODE
=QQB BRN PERI
=R=2 #
=RPL XERRX BNG 4 XINPX [J. IF READ STILL IN PROGRESS.
=S9= XERROR
=SNW LDX 1 FX1
=SYN ... ANDX 3 BITS22LS
=T8G BCT 7 REP [REPEAT IF NOT YET >APCTERRNUM ERRORS
=TN6 #
=W7Q XINOP2
=WMB ANDX 3 BITS22LS
=X72 UNLOCK 3 [UNLOCK LCB
=XLL [
=Y6= [ THIS IS THE ENTRY POINT IF THE LINK GOES INOPERABLE WHEN A DEVISE
=YKW [ HAS ALREADY BEEN SELECTED
=^5G [
=^*# ...Z2PCTCON
=^K6 #
?24Q #
?2JB MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK
?342 LDX 2 APCTP(3) [GET PCT RECORD POINTER
?3HL ADX 2 3 [ADD IN ABSOLUTE ADDRESS
?43= LDX 0 APCTSTAT(2) [WAS THE
?48D ... BPZ 0 NWINO [J IF NOT ALREADY INOP
?4*L ... LDXC 0 APCTINOP(3)
?4GS ... BCC POLENX [DO NOT COUNT AGAIN UNLESS ALL INOP
?4N2 ... BRN XLKINOP
?4T8 ...NWINO
?52G LDCT 0 #200 [WAS THIS PCT
?5G6 ANDX 0 APCTSTAT(2) [PREVIOUSLY INACTIVE?
?5^Q ERS 0 APCTSTAT(2) [UNSET INACTIVE MARKER
?6FB BNZ 0 SINAC [NO-THEN GO ON
?6^2 LDN 0 1 [AND
?7DL SBS 0 APCTACT(3) [REDUCE THE ACTIVE PCT COUNT.
?7Y= SINAC
?8CW LDX 0 GSIGN [SET INOPERABLE
?8XG ORS 0 APCTSTAT(2) [MARKER
?9C6 DOWN PCTINOP,1 [OUTPUT INOP MESSAGE AND CLEAR UP
?9WQ MHUNTW 3,A7020,INFORM [REFIND THE INFORMATION BLOCK
?=BB XLKINOP
?=W2 LDX 0 APCTINOP(3) [GET THE NUMBER OF 'INOP' PCT'S
??*L ADN 0 1 [STEP IT
??T= STO 0 APCTINOP(3) [UP BY ONE
?##W ANDX 0 BITS22LS [ARE
?#SG SBX 0 APCTNUM(3) [THEY
?*#6 BNZ 0 POLENX [ALL OUT?
?*RQ LDXC 0 APCTINOP(3) [NO - THEN HAS THE 'ALL OUT' MESSAGE
?B?B BCS OUTMESGN [BEEN GIVEN?
?BR2 MHUNTW 3,A7020,ALCB [POINTER TO THE
?C=L LDX 2 FX2
?CQ= LGEOG ,5
?D9W LDX 6 GUNITNO(3) [AND THE
?DPG #SKI JNL
?F96 (
?FNQ GEOPACK 5,5,5
?G8B OUTPACK 5,1,GEOPER
?GN2 )
?H7L #SKI JNL<1$1
?HM= OUTNUM 5,0 [UNIT NUMBER INTO MF PARAMETER FORM
?J6W LDN 5 1
?JLG LDX 3 PHUINOP(1) [UNIT M HAS BECOME INOPERABLE.
?K66 BZE 6 OUTMX
?KKQ LDX 3 PJINOP(1) [UNIT N LINE X HAS BECOME INOPERABLE.
?L5B OUTNUM 6,0 [LINE NUMBER INTO MF PARAMETER FORM
?LK2 OUTMX INFORMX 5,3,1
?M4L MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK
?MJ= OUTMESGN
?N3W LDX 0 GSIGN
?NHG STO 0 APCTINOP(3) [RESET INOP COUNT
?P36 CALL 5 QOFF1 [TEST FOR MOP OFF, ATTACH OR FINISH.
?PGQ BRN WAITAWYL
?Q2B #
?QG2 TIMELOOP
?Q^L LDN 6 APOLETIME/FONINTP [POLE INTERVAL WHILE LINE INOP.
?RF= [
?RYW [ THIS INSTRUCTION SHOULD BE A LDX OF AN INSTALLATION PARAMETER
?SDG [
?SY6 TIMEWAIT
?TCQ LDX 2 FX2 [RESET X2
?TXB STILL CALL 5 PAUSE [WAIT A BIT
?WC2 BCT 6 STILL [HAS THE POLETIME BEEN EXCEEDED?
?WWL NOW MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK
?XB= POLENX
?XFK ... LDX 0 ATSLICE(3)
?XJY ... BZE 0 ZAONE [J IF ONLY ONE 7020
?XN? ... SMO APCTP(3)
?XRL ... LDX 0 APCTSTAT+APCTRLEN(3)
?XW^ ... ADN 0 1
?Y2# ... BZE 0 ZANEN [J IF LAST 7020
?Y5M ... LDN 0 APCTRLEN
?Y92 ... ADS 0 APCTP(3) [POINT AT NEXT
?Y#* ... BRN ZATIU
?YCN ...ZANEN STOZ APCTP(3) [POINT AT FIRST 7020
?YH3 ...ZATIU LDX 0 JTIME
?YLB ... STO 0 APCTCLNCT(3) [UPDATE TIME ON THIS 7020
?YPP ...ZAONE
?YT6 SMO APCTP(3) [YES - RESET THE PRIMARY FLIP MASK
?^#Q LDEX 0 APCTX(3) [FROM THE SECONDARY.
?^JJ ... ANDN 0 #77
?^SB BZE 0 ONEPCT
#2#2 SMO APCTP(3)
#2RL ORS 0 APCTD(3)
#3?= SMO APCTP(3)
#3QW ERS 0 APCTX(3)
#4=G BRN ONEPCT
#4Q6 #
#59Q #
#5PB #END
^^^^ ...63424777001200000000