{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MOPPM84)}}
====== MOPPM84 ======
(George Source)
**Macros used:** [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:COORDINATE|COORDINATE]], [[george:macro:DCA|DCA]], [[george:macro:DLCA|DLCA]], [[george:macro:FINDLCA|FINDLCA]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:GLPERI|GLPERI]], [[george:macro:JLUNBUSY|JLUNBUSY]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LNLI|LNLI]], [[george:macro:OUTMOP|OUTMOP]], [[george:macro:PMCORES|PMCORES]], [[george:macro:READB|READB]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SUICIDE|SUICIDE]]
22FL ... SEG MOPPM,,PHIL. TURNER
23YG #LIS K0MOPPM>K0POST>K0ALLGEO
248# ... SEGENTRY K1MOPPM,Z1MOPPM
24D6 #
24XQ #
25CB #DEF PMERRCNT=5
25X2 #
26BL #
2*P2 XCACT +GENERAL/8:0
2B8L XHALFTOP #77770000
2BN= XMIN1 -1
2C7W SIGN #40000000
2CMG WORKWORD 0
2D76 XFX2 0 [POINTER TO CURRENT ACTIVITY.
2DLQ YFX2 0 [POINTER TO LAST ACTIVE ACTIVITY.
2F6B PCTTWMASK #40404040 [DEFAULT FOR TW OUTPUT IS INTERFACE 4
2FL2 PCTADDRESS #7420,#7430,#7400,#7410,#7440,#7450
2G5L #7460,#7470,#7540,#7550,#7560,#7570
2GK= #
2H4W PINFORM
2HJG #HAL A7020+INFORM,0
2J46 MLIN
2JHQ #HAL AMXOR+ALINES,0
2K3B TENSECONDS 10*K9/1000 [TEN SECONDS.
2KH2 ONEDAY 3600*24/K9*1000
2KSB ... FIXTRA K50MOPPM
2L5Q ...X50MP +1*60*1000/K9 [CRUNCHTIME FOR EACH TRANSFER.
2LC6 ... FIXTRA K51MOPPM
2LNG ...X51MP +2*60*1000/K9 [CRUNCHTIME FOR WHOLE PM. ROUTINE.
2L^W MODEX #40004
2MFG TOTALTIME 0
2M^6 XALPHA #74
2NDQ XDELMAX #40
2NR7 ...#DEF TABLELIMIT=ENDFIX
2P5J ...YAMOP +ADMULTACT-ADMP
2PD2 #
2PXL OUTMOP 54H^3^*^-^*^ THE SYSTEM HAS TEMPORARILY CLOSED DOWN^*^-^8
2QC= OUTPCT 52H^"^*^*^ THE SYSTEM HAS TEMPORARILY CLOSED DOWN^,^4^#
2QWW OUTCAN 16H^" CANCEL^*^4^# [STX CANCEL N/L DC4 ETX
2RBG OUTENQ #76247000,#76250000 [EOT (ADDRESS) ENQ
2RW6 OUTLP #76227634 [STX.FORMFEED )MUST BE
2S*Q OUTEND #76047623 [DC4 ETX )IN THIS
2STB OUTTP #76227673,#76737673 [STX DEL DEL DEL)ORDER.
2T*2 #
2TSL #DEF OUTTPX=OUTTP+31 [TP OUTPUT BUFFER = 32 WORDS (128CH.)
2W#= #DEF PCTDUSTBIN=OUTTPX+1 [OVERWRITE K1MOPPM WHEN FINISHED WITH
2WRW #
2X?G #
2XR6 Z1MOPPM
2Y7L ... LDX 3 FXPM1
2YJ6 ... LDX 2 3
2YYL ...PM1 LDX 1 YAMOP(2)
2^*6 ...PM1A LDX 1 ADMP(1) [GET NEXT MOP ACTIVITY.
2^PL ... BZE 1 START [J. IF END OF LIST.
3266 ... PMCORES 1,START
32GL ... LDX 6 CPPTR(1)
32X6 ... PMCORES 6,PM1A
33?L ... STO 1 YAMOP(2)
33N6 LGEOG 6,7
347Q FINDPEREC 1,APGEOG,7
34MB BXU 1 6,PM1 [J. UNLESS CPPTR POINTS TO DEV. LIST
3572 ... LDX 1 YAMOP(2)
35LL PM3 LDX 1 FPTR(1)
366= PMCORES 1,PM1
36KW LDX 0 ATYPE(1)
375G BXGE 0 CACT,PM1 [J. IF NO ALINES BLOCK
37K6 ... SBX 0 MLIN(2)
384Q BNZ 0 PM3
38JB LNLI 6,7
3942 SLL 7 2
39HL ... STO 1 TOTALTIME(2) [USE AS TEMPORARY DUMP.
3=3= PM4 ADX 1 7
3=GW LDEX 0 A1+FOURTHWD(1)
3?2G LDCH 5 A1+FOURTHWD(1)
3?G6 LDX 1 A1+BPTR(1)
3?^Q ERN 0 CONSMACH [J. IF NOT MOP CONSOLE.
3#FB BNZ 0 PM11
3#^2 ANDN 5 #20 [J. IF NOT RINGED & NOT ATTACHED.
3*DL ORX 5 1
3*Y= BZE 5 PM10
3BCW ... LDN 4 MOPLEN-1(3) [J. OUT IF NOT ENOUGH CORE LEFT.
3BXG BXGE 4 TABLELIMIT,START
3CC6 ... LDN 0 MOP(2) [LINK FOR MOP CONSOLE.
3CWQ PM5 SRC 7 11 [LINE NO.: 0
3DBB ... SBN 4 TABLE-1 [RELATIVE PTR. TO NEXT TABLE ENTRY.
3DW2 STO 7 XLINE(3)
3F*L STO 6 XDEV(3) [DEVICE LIST POINTER.
3FT= STO 4 XFPTR(3)
3G#W ... STO 3 YFX2(2) [REMEMBER CURRENT ENTRY ADDRESS.
3GSG STO 0 XLINK(3)
3H#6 SLC 7 9 [LINE NUMBER.
3HRQ FINDLCA 6,7
3J?B STO 1 X3(3) [SAVE LCA ADDRESS.
3JR2 LDX 3 4
3K=L SLL 7 2
3KQ= PM10 BZE 7 PM1 [J. IF UNIPLEXER
3L9W SBN 7 4
3LPG BZE 7 PM1 [J. IF ALL LINES DEALT WITH
3M96 ... LDX 1 TOTALTIME(2)
3MNQ BRN PM4
3N8B PM11 ERN 0 APCTMACH$CONSMACH [J. IF NOT 7020.
3NN2 BNZ 0 PM10
3P7L ... LDN 4 PCTLEN-1(3) [J. IF NOT ENOUGH ROOM FOR 7020 ENT
3PM= BXGE 4 TABLELIMIT,PM10
3Q6W ... LDX 0 PCTTWMASK(2) [DEFAULT FOR TW IS INTERFACE 4
3QLG STO 0 XOPMASK(3) [ON ALL DROPS.
3R66 STO 0 XOPMASK+1(3)
3RKQ STO 0 XOPMASK+2(3)
3S5B ... LDX 0 OUTENQ(2) [SET UP ENQ BUFFER FOR POLL & SELE
3SK2 STO 0 XENQ(3)
3T4L ... LDX 0 OUTENQ+1(2)
3TJ= STO 0 XENQ+1(3)
3W3W STOZ XDROPPTR(3) [START POLLING AT ADDRESS 0.
3WHG LDX 0 JTIME [REMEMBER CURRENT TIME.
3X36 STO 0 XTIME(3)
3XGQ ... LDN 0 NEXTDROP(2) [LINK FOR PCT WHEN NO INTERFACE SE
3Y2B BZE 1 PM5 [J. IF NOT RINGED.
3Y=8 ... SRC 5 6
3YG2 BNG 5 PM5 [J. IF RINGED BUT ATTACHED (ONLINE).
3Y^L SBN 1 A1 [PTR. TO LCB.
3^F= PMCORES 1,PM5 [J. IF NOT
3^YW LDEX 0 GENQ1(1) [GET LAST ENQ ADDRESS SENT.
42DG ... ORX 0 OUTENQ(2)
42Y6 BXU 0 GENQ1(1),PM12 [J. IF DOESN'T LOOK VALID
43CQ DEX 0 XENQ(3) [OTHERWISE SAVE IT.
43XB LDX 0 GTIM(1) [SAVE TIME PERI WAS INITIATED.
44C2 BNG 0 PM12 [IF STILL (POSSIBLY) ACTIVE.
44WL STO 0 XTIME(3)
45B= PM12 LDX 1 BPTR(1)
45TW PMCORES 1,PM18 [J. IF CAN'T FIND INFORM BLOCK.
46*G LDX 0 ATYPE(1)
46T6 ... BXGE 0 XCACT(2),PM18
47#Q ... SBX 0 PINFORM(2)
47SB BNZ 0 PM12
48#2 LDN 4 APCTRLEN [CHECK INFORM BLOCK LOOKS OK.
48RL LDN 5 APCTSTAT-A1+1 [I.E. ALOGL CORRESPONDS TO NO. OF
49?= MPA 4 APCTNUM(1) [DROPS RECORDED IN APCTNUM, & LAST
49QW BXU 5 ALOGLEN(1),PM17 [ENTRY = -1.
4==G PMCORES 5,PM17
4=Q6 SMO 5
4?9Q NGX 0 A1-1(1)
4?PB BCT 0 PM17
4#92 LDX 5 APCTNUM(1) [LOOK THROUGH EACH DEFINED DROP.
4#NL ... STO 3 WORKWORD(2)
4*8= PM13 LDCH 4 APCTX(1) [J. UNLESS CONSOLE OUTPUT INTERFACE
4*MW ERN 4 #10 [IS NO. 2.
4B7G BNZ 4 PM16
4BM6 LDX 0 APCTHADD(1) [IS SO FIND TERMINAL ADDRESS NO.
4C6Q LDN 3 12
4CLB PM14 BXE 0 PCTADDRESS-1(3),PM15
4D62 BCT 3 PM14
4DKL BRN PM16 [IF POSSIBLE
4F5= PM15 SBN 3 1 [AND OVERWRITE DEFAULT SETTING.
4FJW LDN 4 #10
4G4G SRC 3 2
4GJ6 ... SMO WORKWORD(2)
4H3Q DCH 0 XOPMASK(3)
4HHB PM16 ADN 1 APCTRLEN
4J32 BCT 5 PM13 [J. FOR NEXT DROP.
4JGL ... LDX 3 WORKWORD(2)
4K2= ...PM17 LDN 4 PCTLEN-1(3) [RESET POINTER
4KFW ...PM18 LDN 0 PCTACTIVE(2) [AND LINK FOR STORING.
4K^G BRN PM5
4LF6 #
4LQG ...START TXU 3 FXPM1
4M3W ... BCC PMDIS
4M*= ... LDX 1 FXPM1
4MLL ... LDX 0 OUTEND(1) [SET UP TP OUTPUT BUFFER.
4N36 ... LDX 2 FXPM1
4NCL LDX 4 JTIME [SET START TIME.
4NX= ... LDN 6 OUTTP+1(1)
4PBW ... LDN 7 OUTTP+2(1)
4PWG ... STO 0 OUTTPX(1)
4QB6 MOVE 6 29
4QTQ ... SMO YFX2(1) [COMPLETE ACTIVITY LIST.
4R*B ... STO 2 XFPTR
4RT2 ... STO 4 TOTALTIME(1)
4S#L BRN XC3 [ENTER THE TIME SHARER.
4SS= #
4T?W ...#SKI 0?-PCTDUSTBIN-32[PCTDUSTBIN - OVERWRITES K1MOPPM
4TRG ...#GAP PCTDUSTBIN+32-0? [IF WE HAVE TO READ IN ANY GASH BLOCK
4W?6 #
4WQQ PMDIS LDN 1 2
4X=B PMDS1 LDN 7 9(1)
4XQ2 FINDPEREC 2,APFOTY,7,PMDS2
4Y9L BNG 2 PMDS3
4YP= JWRONG 2,PMDS2 [J. IF WRONGED.
4^8W DISENGPE 2 [DIS EXTRACODE: CLEARS EVERYTHING UP.
4^NG BRN PMDS2
5286 PMDS3 BCT 1 PMDS1
52MQ ... BRN (JPMSEG)
537B #
53M2 #
546L MODE40004
54BD ... SMO FXPM1
54L= LDX 1 MODEX
555W BRN MD1 [CANCEL
55KG MODE4 LDN 1 4 [SUPER CANCEL
5656 MD1 ADX 1 XLINE(2)
574B DCA XDEV(2),STO,1,MODE
57#8 ... LDX 1 0
57J2 GLPERI XDEV(2) [ISSUE CANCEL PERI.
583L ... BRN (1) [EXIT.
58H= #
592W OUTPUT [SET UP & ISSUE WRITE PERI.
59GG DLCA 3,DLA,0,COUNT [X0=COUNT, X5=BUFFER START ADDRESS,
5=26 DLCA 3,STO,1,CTSA [X7=LINK.
5=FQ LDN 0 #11
5=^B DLCA 3,DLA,0,MODE
5?F2 BRN PERI
5?YL #
5#D= OUTIN DLCA 3,DLA,0,MODE [SET UP & ISSUE WRITE/READ PERI.
5#XW DLCA 3,DLA,1,COUNT [X0=WRITE MODE, X1=COUNT, X5=OUTPUT
5*CG DLCA 3,STO,5,CTSA [BUFFER START ADDRESS, X7=LINK.
5*X6 LDN 0 XSTATUS(2)
5BBQ LDN 1 2
5BWB LDN 5 80
5CB2 #
5CTL READB DLCA 3,STO,0,CTSA2 [FINISH SETTING UP & ISSUE DOUBLE PER
5D*= DLCA 3,DLA,1,MODE2 [X0=START ADDRESS FOR 2ND. TRANSFER,
5DSW DLCA 3,DLA,5,COUNT2 [X1=MODE FOR 2ND. TRANSFER, X5=COUNT,
5F#G LDN 0 XREP2(2) [X7=LINK.
5FS6 DLCA 3,STO,0,CREP2
5G?Q #
5GRB PERI LDN 0 XREP1(2)
5H?2 DLCA 3,STO,0,CREP
5HQL LDX 0 XLINE(2)
5J== DCA XDEV(2),STO,0,MODE
5JPW GLPERI XDEV(2)
5K9G #
5KP6 LDX 0 JTIME [REMEMBER WHEN TRANSFER(S) INITIATED.
5L8Q STO 0 XTIME(2)
5LNB WAIT COORDINATE [LET OTHER ACTIVITIES HAVE A GO.
5M82 #
5MML LDXC 1 XREP1(2) [J. UNLESS (1ST.) TRANSFER FINISHED.
5N7= BCS WAITCHECK
5NLW ADXC 1 1 [J. IF TIMED-OUT,
5P6G BCS SCRUB
5PL6 SLC 1 4 [OR INOPERABLE
5Q5Q BPZ 1 SCRUB
5QKB ANDN 1 3
5R52 EXIT 6 0
5RJL #
5S4= WAITCHECK
5SHW CALL 1 TIMECHECK [CHECK WHETHER TRANSFER HAS LASTED
5T3G BRN WAIT [FOR TOO LONG - J. IF NOT.
5TH6 #
5W2Q SCRUB JLUNBUSY 3,(7) [OTHERWISE EXIT IF LINE IDLE,
5WGB CALL 0 MODE4 [OTHERWISE CRUNCH ANY TRANSFERS STILL
5X22 EXIT 7 0 [OUTSTANDING THEN EXIT.
5XFL #
5X^= READWAIT
5YDW LDXC 0 XREP2(2) [J. IF READ STILL BUSY.
5YYG BCS WAITCHECK
5^D6 ADXC 0 0 [J. IF TIMED-OUT,
5^XQ BCS (7)
62CB SLC 0 4 [OR INOPERABLE.
62X2 BPZ 0 (7)
63BL ANDN 0 3
63W= SRC 0 1 [J. IF READ IMPLEMENTED.
64*W BPZ 0 (5)
64TG EXIT 5 1 [2ND. TRANSFER NOT IMPLEMENTED.
65*6 #
65SQ TIMECHECK [CHECK WHETHER LINE HAS BEEN BUSY
66#B LDX 0 JTIME [FOR TOO LONG. X1=LINK.
66S2 SBX 0 XTIME(2)
67?L BPZ 0 TODAY [J. UNLESS WRAPPED ROUND THROUGH
67HD ... SMO FXPM1
67R= ADX 0 ONEDAY [MIDNIGHT.
685M ...TODAY SMO FXPM1
68D4 ... SBXC 0 K50MOPPM [J. IF STILL O.K.
68QG BCS (1)
69=6 EXIT 1 1 [HAVE TO CRUNCH TRANSFER(S).
69PQ #
6=9B SENDENQ [POLL, SELECT OR SEND DATA. X7=LINK,
6=P2 CALL 6 OUTIN [X0=WRITE MODE, X1=COUNT, X5=OUTPUT
6?8L BZE 1 NERR1 [BUFFER START ADDRESS.
6?N= CALL 0 MODE40004 [EXIT 0 IF TIMED-OUT OR INOPERABLE,
6#7W NERR1 CALL 5 READWAIT [EXIT 1 IF WRITE FAILED &/OR READ WAS
6#MG BRN NERR2 [NOT IMPLEMENTED, OR NO CHARS. READ I
6*76 XIT71 EXIT 7 1 [OTHERWISE EXIT 2, WITH ERROR BIT
6*LQ NERR2 LDEX 5 XREP2(2) [IN B23 OF X0.
6B6B SBNC 5 80
6BL2 BCC XIT71
6C5L EXIT 7 2
6CK= #
6D4W READGASH [READ BLOCKS FROM SOURCE INTERFACE.
6DJG LDN 4 PMERRCNT [X7=LINK, EXIT WHEN TIMED-OUT, INOPER
6F46 READ1 LDN 0 XSTATUS(2) [(INCL. MULTIPLE ERRORS), OR EOT SEEN
6FHQ LDN 1 #42
6G3B LDN 5 80
6GH2 DLCA 3,STO,0,CTSA [SET UP 1ST. PART OF DOUBLE READ.
6H2L DLCA 3,DLA,1,MODE [READ WITH "WARNING".
6HG= DLCA 3,DLA,5,COUNT
6HQ4 ... SMO FXPM1
6H^W LDN 0 PCTDUSTBIN
6JFG LDN 1 #22
6J^6 LDN 5 128
6KDQ CALL 6 READB
6KYB CALL 5 READWAIT [WAIT FOR 2ND. PART TO FINISH.
6LD2 BRN READ2 [LONG BLOCK - J. TO CHECK FOR ERROR.
6LXL BNZ 1 READ3 [SHORT BLOCK - J. IF ERROR OR NOT IMP
6MC= LDX 0 XSTATUS(2) [GET 1ST. 2 CHARS. READ IN.
6MWW SRL 0 12
6NBG SBN 0 #7624 [READ AGAIN UNLESS EOT RECEIVED.
6NW6 BNZ 0 READGASH
6P*Q EXIT 7 0
6PTB #
6Q*2 READ2 ANDN 0 1 [J. TO READ ANOTHER BLOCK
6QSL BZE 0 READGASH [UNLESS ERROR SEEN.
6R#= READ3 BCT 4 READ1 [DO WE HAVE ANOTHER GO?
6RRW EXIT 7 0 [NO - GIVE UP.
6S?G #
6SR6 TERMSTATUS [DECODE STATUS REPLY TO POLL OR SELEC
6T=Q LDX 1 2
6TQB LDCH 5 XSTATUS(2)
6W28 ... SMO FXPM1
6W=2 BXL 5 XALPHA,STAT1 [J. IF ALPHA TO SET UP ALPHA PAIR
6WPL SLL 5 6 [OTHERWISE USE 1ST. 2 CHARS IN BUFFER
6X9= BCHX 1 STAT2
6XNW STAT1 LDN 5 #7400
6Y8G STAT2 LDCH 6 XSTATUS(1)
6YN6 ORX 5 6
6^7Q LDX 6 XENQ(2) [CHECK AGAINST ADDRESS SENT IN ENQ.
6^MB ANDN 6 -1
7272 BXU 5 6,(7) [EXIT 7 0 IF WRONG ADDRESS.
72LL BCHX 1 £
736= SRL 6 6 [SAVE SHIFT.
73KW LDCH 5 XSTATUS(1) [GET 1ST. STATUS CHARACTER.
745G ADN 7 1 [STEP LINK ON BY 1.
74*# ... SMO FXPM1
74K6 BXL 5 XALPHA,STAT5 [J. IF NO CHANGE IN SHIFT.
754Q LDX 6 5 [SAVE NEW SHIFT.
75JB BCHX 1 STAT5 [J. TO GET 2ND. STATUS CHARACTER.
7642 #
76HL PRIPHSTATUS [DECODE STATUS REPLY IN DATA PHASE.
773= LDEX 1 XREP2(2) [GET STATUS READ REPLY COUNT.
77GW SBN 1 79 [GET POINTER TO LAST 2 CHARS. READ IN
782G BNG 1 STAT4 [J. UNLESS ONLY 1.
78G6 LDCH 5 XSTATUS(2) [MUST BE ALPHA.
78^Q STAT3 SBN 5 #40 [CONVERT ALPHA SHIFT STATUS CHAR.
79FB EXIT 7 0
79RR ...STAT4 SMO FXPM1
7=68 ... ERX 1 XMIN1
7=DL SRC 1 2
7=Y= ADX 1 2
7?CW LDCH 6 XSTATUS(1) [GET PENULTIMATE CHAR. - MAY BE SHIFT
7?XG BCHX 1 STAT5 [IF NOT THEN DEFAULT GIVES ALPHA ANYH
7#C6 #
7#WQ STAT5 LDCH 5 XSTATUS(1) [GET LAST CHAR - GIVES ACTUAL STATUS.
7*BB SBNC 6 #75 [J. IF ALPHA SHIFT.
7*W2 BCS STAT3
7B*L BZE 6 (7) [J. IF BETA SHIFT - DO NO CONVERSION.
7BT= SBN 5 #30 [MUST BE DELTA SHIFT : CONVERSION
7C54 ... SMO FXPM1
7C#W BXL 5 XDELMAX,(7) [RULE SAY SUBTRACT #30 IF < #70
7CSG ADN 5 #34 [ADD 4 OTHERWISE.
7D#6 EXIT 7 0
7DRQ #
7F?B #
7FR2 MOP JLUNBUSY 3,MOP1
7G=L CALL 0 MODE4 [BASH IT IF BUSY
7GQ= MOP1 LDN 4 PMERRCNT
7H9W MOP2 LDN 0 55 [SEND VALEDICTION.
7HFN ... SMO FXPM1
7HPG LDN 1 OUTMOP
7H^# ... SMO FXPM1
7J96 LDN 7 SUICIDE [LINK TO SUICIDE IF INOPERABLE.
7JNQ CALL 6 OUTPUT
7K8B BZE 1 SUICIDE [J. IF IMPLEMENTED & NOT ERRORED: END
7KN2 BCT 4 MOP2 [J. TO REPEAT TRANSFER
7L7L SUICIDE [ACTIVITY FINISHED
7LJL ... LDX 1 FXPM1
7L^L ... SMO XFX2(1) [J. TO END IF THIS WAS THE
7MBL ... LDX 2 XFPTR [LAST ACTIVITY,
7MRL ... BXE 2 XFX2(1),PMDIS
7N8L ... SMO YFX2(1) [OTHERWISE JUST EXCLUDE THIS
7NKQ STO 2 XFPTR [ACTIVITY FROM THE ACTIVITY LIST.
7P5B BRN XC1 [RE-ENTER THE TIME SHARER.
7PK2 XCOOR [CO-ORDINATOR
7PXC ... LDX 1 FXPM1
7Q9S ... LDX 2 XFX2(1)
7QJ= STO 0 XLINK(2) [DUMP LINK.
7R3W ... STO 2 YFX2(1) [REMEMBER THIS AS LAST ACTIVE ACTI
7RHG LDN 0 3 [AND X3-X7
7S36 LDN 1 X3(2)
7SGQ MOVE 0 5
7T2B LDX 2 XFPTR(2) [MOVE ON TO THE NEXT ACTIVITY ON LIST
7T=8 ... LDX 1 FXPM1
7TG2 XC1 LDX 0 JTIME
7T^L ... SBX 0 TOTALTIME(1)
7WF= BPZ 0 XC2
7WYW ... ADX 0 ONEDAY(1)
7XDG ...XC2 SBX 0 K51MOPPM(1)
7XY6 BPZ 0 PMDIS [J. IF 2 MINUTES HAVE ELAPSED
7YCQ ...XC3 STO 2 XFX2(1)
7YXB LDN 0 X3(2)
7^C2 LDN 1 3
7^WL MOVE 0 5 [RESTORE X3-X7
82B= LDX 0 XLINK(2)
82TW EXIT 0 0 [JUMP TO LINK
83*G #
83T6 #
84#Q PCT0 COORDINATE
84SB PCTACTIVE [ENTRY IF TERMINAL IS ACTIVE
85#2 JLUNBUSY 3,PCT1 [J. IF NO BUSY TRANSFERS.
85RL CALL 1 TIMECHECK [WAIT FOR TRANSFER(S) TO FINISH.
86?= BRN PCT0
86QW CALL 0 MODE4 [UNTERMINATED - SCRUB IT.
87=G BRN NEXTDROP [J. TO POLL.
87Q6 PCT1 LDX 6 XENQ(2) [GET LAST ADDRESS SENT OUT.
889Q ANDN 6 7
88PB BZE 6 NEXTDROP [IF ZERO MUST HAVE BEEN POLL - QUIESC
8992 ANDN 6 1
89NL BZE 6 SENDING [IF EVEN MUST HAVE BEEN DOING OUTPUT,
8=8= # [OTHERWISE INPUT IS SELECTED.
8=D4 ... LDX 1 FXPM1
8=MW LDX 4 JTIME [SET XTIME SO THAT WE WAIT FOR
8?7G ... ADX 4 K50MOPPM(1) [AT MOST 10 SECS. TO SEE WHETHER
8?M6 ... SBX 4 TENSECONDS(1) [TERMINAL IS SHOWING SIGNS OF
8#6Q ... BXL 4 ONEDAY(1),SAMEDAY [ACTIVITY.
8#LB ... SBX 4 ONEDAY(1)
8*62 SAMEDAY
8*KL STO 4 XTIME(2)
8B5= TESTACTIVE [THESE CHECKS WILL ONLY CURRENTLY
8BJW LDCT 0 #200 [WORK ON WEST GORTON EXECUTIVES.
8C4G DLCA 3,ANDX,0,FLAG [J. IF TIMED-OUT MARKER SET.
8CJ6 BNZ 0 TWINCHECK
8D3Q LDN 6 #140 [J. IF LOST INPUT, OR READ REQUEST SE
8DHB DLCA 3,ANDX,6,FLAG
8F32 BNZ 6 READING
8FGL CALL 1 TIMECHECK [CHECK WHETHER TO GIVE UP.
8G2= BRN STILLINACT [J. TO WAIT A LITTLE LONGER.
8GFW BRN TWINCHECK [GIVE UP AND POLL: EOT ALREADY RECEIV
8G^G STILLINACT
8H?X ... LDX 1 FXPM1
8HL# ... COORDINATE TESTACTIVE(1) [WAIT & J.
8HYQ READING [SOURCE INTERFACE SELECTED & SENDING.
8JDB CALL 7 READGASH [READ DATA UNTILL EOT IS SEEN.
8JY2 TWINCHECK
8KCL LDX 4 XENQ(2) [J. IF INTERFACE 5 (*TR) WAS SELECTED
8KX= ANDN 4 4
8LBW BNZ 4 NEXTDROP
8LWG LDX 7 XENQ(2) [CONVERT TERMINAL ADDRESS (IN RANGE
8MB6 LDX 1 XENQ(2) [#7400 TO #7570) TO TERMINAL NUMBER
8MTQ ANDN 7 #140 [(IN RANGE 1 TO 12) MINUS 1.
8N*B ANDN 1 #170
8NT2 BNZ 7 NLE4
8P#L ERN 1 #20
8PS= NLE4 ANDN 7 #100
8Q?W SRC 1 5
8QRG BZE 7 NGE9
8R?6 ERN 1 1
8RQQ NGE9 SMO 2 [GET TW OUTPUT MASK FOR THIS TERMINAL
8S=B LDCH 0 XOPMASK(1)
8SQ2 LDX 4 XENQ(2) [SET UP INTERFACE BIT MASK FOR "PAIR"
8T9L LDN 5 #40 [OF SOURCE WHICH IS SELECTED.
8TP= ANDN 4 2 [TW INPUT INTERFACE IS 1 OR 3
8W8W BNZ 4 TWIS4 [J. IF INTERFACE 3 SELECTED.
8WNG LDN 5 #10 [INTERFACE 1 SELECTED.
8X86 TWIS4 ANDX 5 0 [IF NON ZERO THEN TW INPUT MUST HAVE
8XMQ BZE 5 NEXTDROP [BEEN SELECTED
8Y7B SRL 5 1 [SO SET MARKER SO WE OUTPUT "CANCEL".
8YM2 ORX 0 5
8^6L BRN SETOPMASK2
8^L= #
925W SENDING [ACCEPTOR INTERFACE SELECTED.
92*N ... LDX 1 FXPM1
92KG LDX 0 XENQ(3) [CHECK WHETHER LP, TW OR TP.
9356 ORN 0 6
93JQ ... LDN 5 OUTLP(1) [IF TW OR LP SEND FORM FEED TO CLE
944B BXU 0 XENQ(2),NOTTP [UP SO WE CAN SEND EOT.
94J2 ... LDN 5 OUTTP(1) [IF TP SEND DELETES.
953L NOTTP LDN 0 1
95H= LDN 1 128
962W CALL 7 SENDENQ [OUTPUT CLEAN UP MESSAGE.
96GG BRN NEXTDROP [LINE INOPERABLE - POLL.
9726 BRN SENDING [NOT IMP. - REPEAT.
97FQ CALL 7 PRIPHSTATUS [GET STATUS REPLIED.
97^B ANDN 5 1
98F2 BZE 5 NEXTDROP [J. IF DEVICE INOPERABLE.
98YL BZE 0 NEXTDROP [J. IF O.K.
99D= BRN SENDING [ERROR - REPEAT.
99XW #
9=CG POLLERR
9=X6 BCT 4 POLL [POLL AGAIN IF NOT COUNTED OUT.
9?BQ PCTINOP
9?WB LDN 0 0 [SET INOPERABLE MARKER FOR THIS DROP.
9#B2 SETOPMASK1
9#TL LDX 1 XDROPPTR(2)
9**= SETOPMASK2
9*SW SMO 2
9B#G DCH 0 XOPMASK(1) [SET STATUS FOR THIS DROP.
9BS6 BCHX 1 NDRP3
9C?Q NDRP1 BXU 1 XDROPPTR(2),NDRP2 [GET NEXT DROP, J. UNLESS BEEN RIGHT
9CRB LDN 6 #7620 [ROUND & NOTHING LEFT TO DO.
9D?2 LDN 0 #11 [SEND EOT & FINISH.
9DQL LDN 1 7
9F== LDN 5 XENQ(2)
9FPW DSA 6 XENQ(2)
9G9G CALL 7 SENDENQ
9GP6 BRN SUICIDE
9H8Q BRN SUICIDE
9HNB BRN SUICIDE
9J82 #
9JML SOPERR
9K7= BCT 4 SOP2 [ERROR ON SENDING DATA - POLL IF TOO
9KLW NEXTDROP [STEP ON TO THE NEXT DROP.
9L6G #
9LL6 LDX 1 XDROPPTR(2)
9M5Q NDRP2 BCHX 1 £
9MKB NDRP3 SBN 1 3
9N52 BZE 1 NDRP4
9NJL ADN 1 3
9P4= NDRP4 SMO 2 [PICK UP THE "ACTIVE" SWITCH.
9PHW LDCH 0 XOPMASK(1)
9Q3G BZE 0 NDRP1 [J. IF MARKED AS INOPERABLE.
9QH6 STO 1 XDROPPTR(2) [REMEMBER THIS DROP.
9R2Q SLC 1 2
9R=J ... SMO 2
9RGB LDX 0 PCTADDRESS(1) [SET UP TERMINAL ADDRESS FOR THIS DRO
9S22 DSA 0 XENQ(2)
9SFL LDN 4 PMERRCNT
9S^= POLL LDN 0 #11 [SEND POLL MESSAGE FOR THIS DROP.
9TDW LDN 1 7
9TYG LDN 5 XENQ(2)
9WD6 CALL 7 SENDENQ
9WXQ BRN PCTINOP [INOP.
9XCB BRN POLLERR [NOT IMP. ) TRY
9XX2 BNZ 0 POLLERR [ERROR ) AGAIN?
9YBL CALL 7 TERMSTATUS [GET TERMINAL STATUS.
9YW= BRN POLLERR [ERROR IN STATUS BUFFER CONTENTS.
9^*W BZE 5 NEXTDROP [J. FOR NEXT DROP IF WAITING FOR TW I
9^TG LDX 1 XDROPPTR(2)
=2*6 SMO 2
=2SQ LDCH 6 XOPMASK(1) [GET TW INPUT/OUTPUT INTERFACE MASK.
=3#B LDX 0 6
=3S2 ANDN 0 #50 [TW OUTPUT INTERFACE BIT.
=4?L ANDX 0 5
=4R= BNZ 0 SELECTOUTPT [J. IF TW OUTPUT OPERABLE.
=5=W ANDN 6 #50 [TW OUTPUT.
=5QG LDX 0 6
=6=6 SRL 6 1 [TW INPUT.
=6PQ ANDX 6 5
=79B BNZ 6 SELECTINPUT [J. IF TW INPUT OPERABLE
=7P2 ERN 0 #50 [LP INTERFACE BIT.
=88L ANDX 0 5
=8N= BZE 0 SETOPMASK2 [J. IF LP INOPERABLE - MARK DROP INOP
=97W SELECTOUTPT [SELECT INTERFACE & SENT GOODBYE.
=9MG ANDN 6 #24 [REMEMBER TW INPUT SWITCH SETTING.
==76 DEX 6 XENQ+1(2)
==LQ ANDN 0 #40 [GET INTERFACE NUMBER.
=?6B LDN 5 4
=?L2 BNZ 0 SOP1
=#5L LDN 5 2
=#K= SOP1 ORS 5 XENQ(2) [SET UP BUFFER FOR SELECTING OUTPUT.
=*4W LDN 4 PMERRCNT
=*JG SOP2 LDN 0 1
=B46 LDN 1 7
=BHQ LDN 5 XENQ(2)
=C3B CALL 7 SENDENQ [SELECT OUTPUT INTERFACE.
=CH2 BRN NEXTDROP [INOP.
=D2L BRN SOPERR [NOT IMP.
=DG= CALL 7 TERMSTATUS [GET PERIPHERAL STATUS.
=D^W BRN SOPERR [RUBBISH REPLY.
=FFG ANDN 5 1 [J. IF DEVICE NOW INOPERABLE.
=F^6 BZE 5 NEXTDROP
=GDQ BNZ 0 SOPERR
=GYB LDEX 6 XENQ+1(2) [J. IF TW INPUT MARK NOT SET.
=HD2 BZE 6 SENDGOODBYE
=HXL SENDCANCEL [SEND "CANCEL" TO TYPEWRITER IF JUST
=JC= LDN 0 1 [RECEIVED AN INPUT MESSAGE.
=JWW LDN 1 17
=K6N ... SMO FXPM1
=KBG LDN 5 OUTCAN
=KW6 CALL 7 SENDENQ
=L*Q BRN NEXTDROP [LINE INOP.
=LTB BRN SENDCANCEL [NOT IMP.
=M*2 CALL 7 PRIPHSTATUS [GET PERIPHERAL STATUS
=MSL SRC 5 1 [J. IF INOP.
=N#= BPZ 5 NEXTDROP
=NRW BNZ 0 SENDCANCEL [J. IF LINE ERROR.
=P?G ANDN 5 2 [J. IF DEVICE ERROR.
=PR6 BZE 5 SENDCANCEL
=Q=Q LDX 0 XENQ+1(2) [CLEAR TW INPUT MARKER IF OUTPUT O.K.
=QQB ADXC 0 0 [NOT PARTICULARLY INTERESTED IN V OR
=R=2 BRN SETOPMASK1
=RPL # [SEND "THE SYSTEM HAS CLOSED DOWN" TO
=S9= SENDGOODBYE [TW OR LP.
=SNW LDN 0 1
=T8G LDN 1 53
=TD# ... SMO FXPM1
=TN6 LDN 5 OUTPCT
=W7Q CALL 7 SENDENQ
=WMB BRN NEXTDROP [INOP
=X72 BRN SENDGOODBYE [NOT IMP.
=XLL CALL 7 PRIPHSTATUS [GET STATUS.
=Y6= SRC 5 1
=YKW BPZ 5 NEXTDROP [INOP.
=^5G BNZ 0 SENDGOODBYE [ERROR.
=^K6 ANDN 5 2 [ERROR
?24Q BZE 5 SENDGOODBYE
?2JB BRN PCTINOP [FINISHED - MARK INOP. TO SAVE REPEAT
?342 #
?3HL SELECTINPUT [SELECT TW INPUT - HAVE TO READ FROM
?43= ANDN 6 #20 [TW BEFORE OUTPUT INTERFACES WILL
?4GW LDN 5 3 [RESPOND.
?52G BNZ 6 SINP1
?5G6 LDN 5 1 [SET TW INPUT ADDRESS IN ENQ BUFFER.
?5^Q SINP1 LDN 4 PMERRCNT
?6FB ORS 5 XENQ(2)
?6^2 SINP2 LDN 0 7
?7DL LDN 1 XENQ(2)
?7ND ... SMO FXPM1
?7Y= LDN 7 NEXTDROP [REPOLL IF IT GOES INOP.
?8CW CALL 6 OUTPUT [SEND SELECTION MESSAGE.
?8XG BZE 1 READING [J. IF WENT OUT O.K.
?9C6 BCT 4 SINP2 [J. TO TRY AGAIN
?9WQ BRN NEXTDROP [OR NOT, AS THE CASE MAY BE.
?=BB #
?=W2 #
??*L #SKI ADEVELOP
??T= #GAP 20
?##W #
?#SG # [ACTIVITY FORMAT.
?*#6 TABLE
?*RQ XFPTR +0
?B?B XLINK +0
?BR2 X3 +0
?C=L X4 +0
?CQ= X5 +0
?D9W X6 +0
?DPG X7 +0
?F96 XREP1 +0
?FNQ XREP2 +0
?G8B XDEV +0
?GN2 XLINE +0
?H7L XTIME +0
?HM= #DEF MOPLEN=XTIME+1
?J6W XDROPPTR +0
?JLG XOPMASK +0,+0,+0
?K66 XENQ +0,+0
?KKQ XSTATUS +0
?L5B #DEF PCTLEN=XSTATUS+21
?LK2 #END
^^^^ ...23456667001900000000