PCTCON8
(George Source)
Macros used: ACROSS, BXE, BXL, BXU, COOR1, DCA, DLCA, DOWN, ENRINGD, FINDLCA, FPUT, FSHCODE, FSHKILL, GEOERR, GEOPACK, GLPERI, HUNTW, INFORMX, LGEOG, LINKSET, LOCKC, LONGOFF, LONGSET, LONGSTOP, MENDAREA, MHUNTW, NUDGE, OUTNUM, OUTPACK, PAIR, PCT7020, PCTFACT, PCTFIND, RERING, SEGENTRY, SUICIDE, UNLOCK, WAITSTOP
- PCTCON8.txt
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