CONSOLE867
(George Source)
Macros used: ACROSS, BSOFF, BSON, CHANG, CONSOUT, COOR1, COOR3, DCA, DISENGPER, FON, FPUT, FREECORE, FSHENTRY, GETACTOP, GPERI, JBUSY, LINKSET, MENDAREA, MHUNTW, OVER, PAIR, SEGENTRY, SLEEP, UP
- CONSOLE867.txt
22FL #SEG CONSOLE8 [A DAVID 22PD # (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982. 22^= #OPT K0CONSOLE=0 23DW #LIS K0CONSOLE>K0GREATGEO>K0ALLGEO 23YG #OPT K6CONSOLE=0 24D6 # 24XQ 8HCONSOLE 25CB # 25X2 # ENTRY POINTS 26BL # 26W= SEGENTRY K1CONSOLE,X1CONSOLE 27*W SEGENTRY K2CONSOLE,X2CONSOLE 27TG SEGENTRY K3CONSOLE,X3CONSOLE 285# FSHENTRY K4CONSOLE,X4CONSOLE,,X4CONSOLE 28*6 # 28SQ # THIS SEGMENT HANDLES INPUT AND OUTPUT FOR THE OPERATOR'S CONSOLE. 29#B # OUTPUT IS ALLOWED TO OVERRIDE INPUT AFTER WAITING FOR 6*FONINTP SECS 29S2 # (ABOUT 25 SECS), THE OUTPUT BEING PRECEDED BY "CANCEL NL". A NEWLINE 2=?L # IS OUTPUT FOLLOWING A SUCCESSFUL INPUT. WHEN FINISHED, THE ACTIVITY 2=R= # GOES TO SLEEP IN STYLE #50 2?=W # 2?QG # THE SWITCH CONSW IS SET BY CHARGESC TO INDICATE INPUT REQUIRED 2#=6 # 2#PQ # AWORK1 : MAX NO OF CHARS THAT MAY BE OUTPUT 2*9B # BEFORE NEXT NEWLINE 2*P2 # AWORK2 : NO OF CHARS OF MESSAGE STILL TO BE OUTPUT 2B8L # (B0 SET - NO OUTPUT BLOCK TO BE FREED) 2BN= # AWORK3 : BOTTOM 9 BITS - INPUT CHARACTER COUNT. B0 SET 2C7W # - UNPROCESSED DATA IN INPUT BUFFER (INPUT SUPPRESSED) 2CMG # AWORK4 : CHAR 1 IS MARKER FOR OUTPUT MESSAGE PREFIX 2D76 # B0 SET - NO CPAT FOR INPUT SET UP YET 2DLQ # 2F6B WAITCOUNT +60000/K9 [INPUT WAIT TIME ( = 1 MIN) 2F7R PREFIXC #20203535 [CONTINUATION PREFIX 2F98 SEGENTRY K50CONSOLE 2F=K WIDTH +72 [CONSOLE WIDTH ALTERED BY MACRO 2F?4 SEGENTRY K91CONSOLE 2F?H TIMECHAIN +1 [TIME CHAINED (SEE K2) 2F#2 X1CONSOLE 2F*C 2FBS LDX 0 WIDTH(1) 2FD9 STO 0 AWORK1(2) 2FFL BRN START 2FH3 [CONSWIDTH . DEFAULT = 72 . ELSE 40.. 2FJD TABLE [COMPARISON TABLE USED FOR SPLITTING LONG MESSAGES 2FKT BRN XCOLNFOUND 2FM= #12 [#12 = : 2FMP BRN XGOT 2FN8 #31 2FNM BRN XEDIT 2FQ4 #30 [#30 = ( 2FRF BRN XGOT 2FSW #34 [#34 =, 2FW? BRN XEDIT 2FXN #20 [#20 = SPACE 2F^5 TEND 2G2G X26 +26 2G3X X122 +122 2G5L X125 +125 2GK= X127 +127 2H4W X128 +128 2HJG XDELTA #74 [DELTA SHIFT LIMIT 2HS# XFINISH #04000000 [MASK FOR FINISH 2J46 PLINK 2JHQ PAIR CONSOLE,3 2K3B THING 2K*R SMO FX1 2KN8 LDX 0 WIDTH 2L2L STO 0 AWORK1(2) 2LG= SLEEP 2L^W COOR3 #50 [WAIT FOR SOMETHING TO DO 2MFG TWITTER 2M^6 JBUSY ,SLEEP [IGNORE WAKE-UP IF CONSOLE JUSY 2NDQ # AS BACKING STORE ROUTINES MAY GET THEIR OAR IN 2NYB # AT ANY TIME 2PD2 START 2PXL BSON CONSW,O2 [BR IF INPUT REQUESTED 2QC= O1 2QWW LDN 4 BCONSOUT 2RBG TXU 4 BCONSOUT 2RW6 BCS ZOOM [BR IF OUTPUT TO DO 2S23 LDX 0 XFINISH(1) 2S5Y ANDX 0 FINISH [TEST IF "FINISHED" BIT SET 2S9T BNZ 0 XFN 2S*Q BSOFF EMSBIT,SLEEP [BR IF NOT EMS 2STB XFN FON #53 [ELSE WAKE UP ACTIVITIES AWAITING 2T*2 BRN SLEEP [END OF OUTPUT 2TSL ZOOM 2W#= LDN 7 0 2WRW BRN ZZ [BR TO DO OUTPUT 2X?G O2 2XR6 LDX 0 AWORK3(2) 2Y=Q BNG 0 XOUTP [BR IF INPUT SUPPRESSED 2YQB OVER CONSW [SWITCH OFF 'INPUT REQUEST' MARKER 2^=2 LDX 3 CPPTR(2) [LOAD CONSOLE D/L PO9NTER 2^PL LDN 7 0 [MODE 0 FOR INPUT PERI 329= DCA 3,DLA,7,MODE [INSERT MODE 32NW LDN 6 128 [CHARACTER COUNT = 128 338G DCA 3,DLA,6,COUNT [INSERT COUNT 33N6 LDN 5 FCINBUF [CORE ADDRESS OF INPUT BUFFER 347Q DCA 3,STO,5,CTSA [STORE TRANSFER START ADDRESS 34MB GPERI 3,2,NC [ISSUE READ PERI, NO CHAINING 34P^ #UNS ENHOPER 34SJ ( 34X7 BSON EMSBIT,OUT [CANCEL READ AT ONCE IF EMS - 34^Q [ONLY DO THIS TO UNLOCK KEYBOARD 354* ) 3572 WAIT 35LL COOR3 #41 [WAIT K9 MILLISECONDS 366= LDXC 0 CPRW1(2) 36KW BCC XOVER [BR IF TRANSFER FINISHED 375G ADN 7 1 37K6 TXL 7 WAITCOUNT(1) 384Q BCS WAIT [BR IF TIME NOT UP YET 38JB LDN 4 BCONSOUT 3942 TXU 4 BCONSOUT 39HL BCC WAIT [BR IF NO OUTPUT 3=3= LDX 1 BCONSOUT [LOAD POINTER TO 1ST BLOCK 3=GW TXU 1 BCONSOUT+1 [BRANCH IF MORE THAN ONE BLOCK IN 3?2G BCS OUT [THE CONSOLE OUTPUT CHAIN 3?G6 LDX 0 ATYPE(1) [IF ONLY ONE MESSAGE WAITING TO GF 3?^Q SRL 0 12 [OUT, WE DO NOT CANCEL INPUT JUST 3#FB SBN 0 IREMTW+CONBUFF [TO OUTPUT THE TIME 3#^2 BNZ 0 OUT [BR IF NOT TIME MESSAGE 3*DL LDCT 0 #200 3*Y= ORX 1 0 3BCW LDCH 0 A1(1) 3BXG BZE 0 WAIT [BR IF TIME MESSAGE 3CC6 # ELSE OVERRIDE INPUT, PREFIXING MESSAGE WITH CANCEL NL 3CWQ OUT 3DBB DISENGPER [ TO CANCEL INPUT 3DW2 OUTND 3F*L LDN 7 3 [3 EXTRA WORDS FOR CANCEL NL 3FN3 SMO FX1 3G2D LDX 5 WIDTH [IN CASE NO OUTPUT MESSAGES 3G#W ZZ 3GSG JBUSY ,THING [CONSOLE MAY BE USED ANY TIME BY 3H#6 # BACKING STORE FAIL ROUTINES 3HRQ LDCT 1 #200 3J?B SMO FX2 3JR2 DCH 7 AWORK4(1) [MARKER FOR ANY MESSAGE PREFIXES 3K=L LDX 7 GSIGN [SET X7 -VE IN CASE WE GO TO P1 3KQ= LDN 4 0 [INITIALISE CURRENT CHARACTER COUNT 3L9W LDN 3 BCONSOUT 3LPG TXU 3 BCONSOUT 3M96 BCC P1 [BR IF NO MESSAGES TO OUTPUT 3MNQ LDX 3 BCONSOUT [LOAD POINTER TO FIRST OUTPUT BLOCK 3N8B LDEX 5 AREC(3) [LOAD MESSAGE LENGTH (+1?) 3NN2 LDN 6 ATEXT [X6 = INTERNAL MESSAGE POINTER 3P7L LDX 0 ATYPE(3) 3PM= SRL 0 12 3Q6W SBN 0 CONBUFF+COUT 3QLG BZE 0 XCOUT [BR IF CONBUFF/COUT 3R66 ADN 5 1 [RECONCILE IREMTW AND COUT BLOCK 3RKQ #SKI ICBUFF-ATEXT+10>10$10 3S5B ADN 6 ICBUFF-ATEXT [FORMATS 3SK2 #SKI ATEXT-ICBUFF+10>10$10 3T4L SBN 6 ATEXT-ICBUFF [FORMATS 3TJ= XCOUT 3W3W SBN 5 1 [X5 = NO OF WORDS IN MESSAGE 3WHG # X6 = POINTER TO START OF MESSAGE, RELATIVE TO BLOCK 3X36 LDX 3 6 [ROUTINE TO "REMOVE" TRAILING SPACES 3XGQ ADX 3 BCONSOUT 3Y2B ADX 3 5 3YG2 BNZ 5 V1 [J IF MESSAGE NOT NULL 3Y^L LDN 7 0 [NO MORE CHARS TO DEAL WITH 3^F= LDCT 1 #200 3^YW SMO FX2 42DG LDCH 0 AWORK4(1) 42Y6 BZE 0 V2 [J IF NO MESSAGE PREFIX 43CQ NGN 5 1 [ELSE NEWLINE REQD NEXT TIME 43XB BRN P2 44C2 V2 44WL LDN 0 1 45B= SMO FX2 45TW DCH 0 AWORK4(1) [SET MESSAGE PREFIX 46*G BRN ZZZA1 [J FOR OUTPUT 46T6 V1 47#Q SBN 3 1 [X3 POINTS TO LAST WORD IN MESSAGE 47SB SLL 5 2 [CONVERT WORDS TO CHARS 48#2 ORX 3 CACT [X3 -> CHAR 3 OF LAST WORD 48RL T1 49?= LDCH 0 0(3) [LOAD NEXT CHARACTER 49QW SBN 0 #20 4==G BNZ 0 T2 [BR IF NOT SPACE 4=Q6 SLC 3 2 4?9Q SBN 3 1 [REVERSE BCHX ON X3 4?PB SRC 3 2 4#92 BCT 5 T1 [BACK FOR NEXT CHARACTER 4#NL LDN 5 1 4*8= T2 4*MW STO 5 AWORK2(2) 4B7G YY 4BM6 JBUSY ,THING [BR IF CONSOLE IN USE BY EG TRANFAIL 4C6Q LDN 1 FCOUTBUF [START ADDRESS OF BUFFER 4CLB LDX 3 6 4D62 ADX 3 BCONSOUT [SET X3 AS MESSAGE POINTER 4DKL LDN 4 0 [INITIALISE CURRENT COUNT 4F5= PLOOP 4F*4 STO 1 ACOMMUNE1(2) [SAVE CONTS OF X1 4FJW LDX 5 AWORK2(2) [LOAD CHARACTER COUNT 4G4G LDXC 0 GSIGN [ SET C 4GJ6 TXL 5 AWORK1(2) [BR IF LENGTH OF MESSAGE < NO OF 4H3Q BCS SHORT [CHARS POSSIBLE WITHOUT NEWLINE 4H4K LDN 0 3 4H5D SBS 0 AWORK1(2) [LEAVE ROOM FOR CONTINUATION SEQ 4H6* SMO FX1 [ELSE SPLIT MESSAGE 4H8Y LDN 1 TABLE [X1 -> BRN INSTRUCTIONS IN TABLE 4H?H LDN 6 TEND-TABLE/2 [X6= NO OF CHARS UNDER TABLE 4HB6 SETCT 4HDP LDX 2 FX2 4HHB LDX 0 AWORK1(2) [NO OF CHARACTERS LEFT ON LINE 4HRH LDX 2 3 4J3N SLC 2 2 4J?T ADX 2 0 4JJ2 SBN 2 1 4JS7 SRC 2 2 4K4# LDN 0 26 4K#F Y1 4KJL LDCH 7 0(2) [LOAD NEXT CHAR 4KSR TXU 7 1(1) 4L4Y BCC (1) [J IF SUITABLE CHAR FOUND 4L*5 RECOVER 4LK= SLC 2 2 [STEP BACK POINTER ONE CHAR 4LTC SBN 2 1 4M5J SRC 2 2 4M*P BCT 0 Y1 4MKW ADN 1 2 4MW3 BCT 6 SETCT [DECREMENT TABLE COUNT 4N68 SMO FX2 [NO SUITABLE CHARACTER FOUND 4NB* LDX 5 AWORK1 4NLG BRN XPT 4NWM XCOLNFOUND 4P6S BCHX 2 £ [X2-> CHAR FOLLOWING : 4PB^ LDCH 7 0(2) [LOAD CHAR FOLLOWING : 4PM6 SLC 2 2 4PX? SBN 2 1 4Q7D SRC 2 2 [X2-> : 4QCK SBN 7 #20 [ IF CHAR FOLLOWING : IS SPACE 4QMQ BZE 7 RECOVER [J BACK TO SEARCH FOR SUITABLE CHAR 4QXX XEDIT [SP OR ) FOUND, REMOVE ANY PRECEEDING 4R84 LDX 5 2 [X2-.>-S ASUITABLE SPLIT CHAR 4RD9 SLC 5 2 4RNB SLC 3 2 4RYH SBX 5 3 [X5 = NO OF CHARS PRECEEDING S 4S8N SRC 3 2 4SDT 4SP2 4S^7 ZELOOP 4T9# SLC 2 2 4TFF SBN 2 1 4TPL SRC 2 2 4T^R LDCH 7 0(2) [LOAD NEXT CHAR 4W9Y SBN 7 #20 4WG5 BNZ 7 XPT [J IF NOT A SPACE CHAR 4WQ= BCT 5 ZELOOP 4X2C LDN 5 1 [ONLY SPACES IN MESSAGE 4X=J BRN XPT 4XGP XGOT [X2-> SPLITTING CHAR 4XQW SLC 2 2 4Y33 SLC 3 2 4Y?8 SBX 2 3 [X2 = NO OF CHAR B4 NL REQUIRED 4YH* SRC 3 2 [RESET CURRENT MESSAGE POINTER 4YRG LDX 5 2 4^3M ADN 5 1 4^?S XPT 4^H^ LDX 2 FX2 4^S6 SHORT 524? LDX 1 ACOMMUNE1(2) 52#D PSHORT 52JK STO 5 AWORK1(2) [STORE NO OF CHAR B4 NL REQUIRED 52SQ LDX 7 AWORK2(2) [MESSAGE REMAINDED COUNT 534X LDN 6 #76 53*4 LDX 2 FX1 53M2 ZLOOP 546L # EDITING ROUTINE 54L= TXL 4 X128(2) 555W BCC XPERI [BR IF END OF BUFFER REACHED 55KG LDCH 0 0(3) [LOAD NEXT CHARACTER 5656 TXL 0 XDELTA(2) 56JQ BCS NOTDELTA [BR IF CHARACTER NOT DELTA SHIFT 574B TXL 4 X127(2) 57J2 BCC XPERI [BR IF NO ROOM IN BUFFER 583L DCH 6 0(1) [STORE #76 FOR NEXT CHARACTER 58H= BCHX 1 £ 592W SBN 0 #10 [CONVERT CHARACTER TO ALPHA SHIFT 59GG ADN 4 1 [UPDATE CURRENT CHARACTER COUNT 5=26 NOTDELTA 5=FQ SBN 7 1 [DECREMENT REMAINDER COUNT 5=^B DCH 0 0(1) [INSERT NEXT CHARACTER 5?F2 BCHX 1 £ 5?YL BCHX 3 £ [UPDATE POINTERS 5#D= ADN 4 1 [AND CHARACTER COUNT 5#XW BCT 5 ZLOOP 5*CG TXL 4 X125(2) [END OF (PRINT) LINE REACHED 5*KF BCC NLSIGN [J TO INDICATE NL PREFIX REQUED 5*RD BNZ 7 NOTEOM [J IF MESSAGE CONTINUES 5*^C # [ELSE INSERT NL CHARS 5B7B LDX 2 FX2 5B** LDN 0 FCANCEL+2 [ADDRESS OF NL BUFFER 5BH# MVCH 0 4 [MOVE IN NL 5BP? ADN 4 4 [INCREMENT CURRENT COUNT 5BX= SMO FX1 5C59 LDX 0 WIDTH 5C?8 STO 0 AWORK1(2) [NO OF CHARS BEFORE NEXT NL 5CF7 BRN ZZZA2 5CM6 NOTEOM [NOT EOM INSERT NL & CONTINUATION PREFIX- IF SPACE 5CT5 LDX 2 FX2 5D34 SMO FX1 5D93 TXL 4 X122 [TEST FOR SPACE 5DC2 BCC NLSIGN [J-AS NL & CONTINUATION PREFIX REQD 5DJ^ # [INSERT NL & CONTINUATION CHARS 5F#T RETURN 5FGS SMO FX1 5FNR LDN 0 PREFIXC [ADDRESS OF CONTINUATION PREFIX 5FWQ MVCH 0 3 [MOVE IN CONT PREFIX 5F^P LDN 0 FCANCEL+2 [ADDRESS OF NL BUFFER 5G4N MVCH 0 4 [MOVE IN NL 5G7M ADN 4 7 [INCREMENT CURRENT COUNT 5G=N SMO FX1 5GDM LDX 0 WIDTH 5GSK STO 0 AWORK1(2) 5H2J BRN YA [J TO REMOVE PRECEEDING SPACES 5H8H NLSIGN 5HBG NGN 5 1 [NL PREFIX REQUIRED FOR NEXT 5HJF BRN XPERI [PRINT LINE. J TO OUTPUT 5HQL YA 5J== STO 7 AWORK2(2) [STORE CURRENT REMAINDER COUNT 5JPW LDCH 0 0(3) [ELSE LOAD NEXT CHARACTER 5K9G SBN 0 #20 5KP6 BNZ 0 PLOOP [BR IF NOT SPACH 5L8Q BCT 7 YA1 [COUNT DOWN REMAINDER COUNT 5LNB BRN ZZZA2 [BR IF EXHAUSTED 5M82 YA1 5MML BCHX 3 YA 5N7= XPERI 5NLW # TO OUTPUT A LINE 5P6G P1 5PL6 LDX 2 FX2 5Q5Q P2 5QKB STO 5 AWORK1(2) [STORE LINE REMAINDER COUNT 5R52 ZZZA1 5RJL LDX 6 3 [PRESERVE MESSAGE POINTER 5S4= SBX 6 BCONSOUT [AND RELATIVISE IT 5SHW ZZZA2 5T3G STO 7 AWORK2(2) [STORE REMAINDER COUNT 5TH6 LDCT 1 #200 5W2Q SMO FX2 5WGB LDCH 0 AWORK4(1) [LOAD CANCEL/NL MARKER 5X22 LDN 1 FCOUTBUF 5XFL SBX 1 0 [FIX START ADDRESS 5X^= LDX 3 CPPTR(2) 5YDW DCA 3,STO,1,CTSA [STORE TRANSFER START ADDRESS 5YYG SLL 0 2 [CONVERT NO OF EXTRA WORDS TO NO CHAR 5^D6 ADX 4 0 [AND ADD TO CURRENT COUNT 5^XQ BZE 4 X1CONSOLE [BR IF NO ACTUAL OUTPUT TO DO 62CB DCA 3,DLA,4,COUNT [STORE CHARACTER COUNT 62X2 LDN 7 1 63BL DCA 3,DLA,7,MODE [INSERT MODE 63W= TF 64?8 GPERI 3,2 [AND ISSUE PERI 64N6 COOR1 [WAIT FOR END OF TRANSFER 6554 CALL 5 XGETCORE [CHECK IF CORE REQUIRED 65G2 SMO FX1 65WY LDX 5 WIDTH [SET X5 IN CASE J TO THING OR ZZ 66?W LDCH 0 CPRW1(2) [TEST REPLY WORD 66NS ANDN 0 5 675Q BZE 0 OK [BRANCH IF TRANSFER OK 67GN NM 67XL LDN 7 1 [TRAN FAIL - SET NL INDICATOR 68#J STO 5 AWORK1(2) [AND FULL CONSOL WIDTH FOR NEXT MESS 68PG BRN ZZ 696D OK [TRAN OK 69HB LDX 0 AWORK2(2) 69Y# BNG 0 NOBLOCK [J IF NO MESSAGE BLOCK 6=*= 6=Q8 BNZ 0 NFIN [J IF MESSAGE NOT FINISHED 6?76 FREECORE BCONSOUT [ELSE FREE MESSAGE BLOCK 6?J4 NOBLOCK 6?^2 LDX 0 AWORK1(2) 6#*Y BNG 0 NM [J IF NL PREFIX REQUIRED FOR START 6#QW # [OF NEXT MESSAGE , ELSE 6*7S BRN TWITTER [J TO TEST FOR INPUT 6*JQ NFIN 6*^N JBUSY ,THING [J CONSOLE USED AT ANY TIME BY BSTS 6BBL LDN 4 0 [INITIALISE CURRENT COUNT 6BRJ LDX 3 6 6C8G ADX 3 BCONSOUT [SET X3 AS MESSAGE POINTER 6CKD LDX 0 AWORK1(2) 6D2B BNG 0 NF [J IF NL REQ 6DC# LDX 5 AWORK1(2) [STORE LINE REMENDER COUNT 6DS= LDN 7 0 [NO MESSAGE PREFIX FOR NEXT MESSAGE 6F98 LDCT 1 #200 6FL6 SMO FX2 6G34 DCH 7 AWORK4(1) 6GD2 LDN 1 FCOUTBUF 6GSY BRN PSHORT 6H9W NF [MESS CONTINUES SO CLEAR NL MARKER IN AW4 6HLS LDX 7 AWORK2(2) 6J3Q LDN 0 0 6JDN LDCT 1 #200 6JTL SMO FX2 6K=J DCH 0 AWORK4(1) [NO NL MARKER FOR START OF NEXT MESSA 6KMG LDN 1 FCOUTBUF 6L4D BRN RETURN [J TO PREFIX NEXT LINE WITH 6LFB # [CONTINUATION SEQUENCE 6LXL XOVER 6MC= # INPUT TERMINATED BY EITHER ACCEPT, CANCEL, OR COUNTED OUT 6MWW # 6NBG LDCH 0 CPRW1(2) 6NW6 ANDN 0 2 [MASK ERROR BIT 6P*Q BNZ 0 OUTND [BR TO OUTPUT CANCEL NL 6PTB LDEX 4 CPRW1(2) [LOAD REMAINDER COUNT 6Q*2 SBX 6 4 6QSL BZE 6 OUTND [CANCEL IF NO INPUT 6R#= LDX 0 GSIGN [SET AWORK3 -VE TO INDICATE NO CORE 6RRW ORS 0 AWORK3(2) [FOR ADATA/CREADL GOT YET 6S?G ORS 0 AWORK4(2) [NO CPAT GOT YET 6SR6 DSA 6 AWORK3(2) [REMEMBER MESS CHAR COUNT 6T=Q CALL 5 XGETCORE [TRY FOR SOME CORE 6TK7 SMO FX1 6TXJ LDX 5 WIDTH 6W=2 LDN 7 1 [SET NEWLINE MARKER 6WPL BRN ZZ [BR TO DO OUTPUT 6X9= XOUTP 6XNW CALL 5 XGETCORE [TRY FOR SOME CORE 6Y8G BRN O1 6YN6 XOUT 6^7Q LDN 7 0 [NO NL TO OUTPUT 6^MB BRN OUT [BR TO DO OUTPUT 7272 XGETCORE 72LL # 736= # THIS SUBROUTINE OPTIONALLY GETS CORE TO HANDLE ANY OUTSTANDING INPUT+ 73KW # IF CORE RS AVAILABLE A CPA IS SET UP WITH ALINK TO K3CONSOLE & FPUT. 745G # EXIT WITH AWORK4 +VE MEANS THE CPA WAS SUCCESSFULLY SET UP. 74K6 # 754Q LDXC 0 AWORK4(2) [EXIT IF CPAT NOT REQUIRED 75JB BCC (5) 7642 SBX 5 FX1 76HL GETACTOP XEXIT,CPAT [GETA CPAT 773= LDX 0 BITS22LS 77GW ANDS 0 AWORK4(2) [CLEAR CPA REQUIRED MARKER 782G LDEX 0 AWORK3(2) [CHARACTER COUNT FOR MESSAGE 78G6 LDX 2 BPTR(2) [POINTER TO NEO CPA 78^Q STO 0 AWORK1(2) [STORE MESS CHAR COUNT 79FB LDX 0 FX2 79^2 STO 0 AWORK2(2) [STORE ADDRESS OF CONSA/CNTRAL 7=DL LINKSET 2,PLINK(1) [SET LINKS FOR NEW ACTRVITY 7=Y= FPUT [START THE ACTIVITY 7?CW XEXIT 7?XG ADX 5 FX1 7#C6 EXIT 5 0 7#WQ X2CONSOLE 7*BB # THIS ENTRY POINT IS USED BY THE MACRO CONSTIME TO CONTROL THE OUTPUT 7*W2 # OF THE TIME ON THE OPERATOR'S CONSOLE. ANY TIME MESSAGE WAITING IN THE 7B*L # CHAIN WHEN THE MACRO IS ISSUED IS FREED. THE TIME MESSAGE IS FOUND IN 7BT= # A GMON/AOUT BLOCK CHAINED TO THE CURRENT ACTIVITY. IT IS THEN RENAMED 7C#W # A CONBUFF/IREMTW AND CHAINED INTO THE CONSOLE OUTPUT CHAIN, AND THE 7CSG # CONSOLE ACTIVITY IS WOKEN UP 7D#6 # 7DF# LDX 0 TIMECHAIN(1) 7DLG BZE 0 X2UP [J IF TIME SUPPRESSED 7DRQ LDN 4 BCONSOUT [START ADDRESS OF CONSOLE OUTPUT 7F?B TXU 4 BCONSOUT [CHAIN 7FR2 BCC REMPTY [BR IF EMPTY 7G=L LDX 3 BCONSOUT [LOAD POINTER TO FIRST BLOCK 7GGD LDX 3 FPTR(3) 7GK3 TXU 3 4 7GML BCC REMPTY [J IF NO MORE BLOCKS ON CHAIN 7GQ= R101 7H9W LDX 0 ATYPE(3) 7HPG SRL 0 12 7J96 SBN 0 CONBUFF+IREMTW 7JNQ SEGENTRY K8CONSOLE [FOR ALLTIME MACRO 7K8B BZE 0 RFND [BR IF IREMTW FOUND 7KN2 R102 7L7L LDX 3 FPTR(3) 7LM= TXU 3 4 7M6W BCC REMPTY [BR IF END OF CHAIN REACHED 7MLG BRN R101 7N66 RFND 7NKQ LDCT 1 #200 7P5B SMO 3 7PK2 LDCH 0 A1(1) [LOAD SOURCE CHARACTER 7Q4L BNZ 0 R102 [BR IF NOT TIME MESSAGE 7QJ= FREECORE 3 [ELSE FREE THE MESSAGE BLOCK 7R3W REMPTY 7RHG MHUNTW 1,GMON,AOUT [FIND THE MESSAGE BLOCK 7S36 LDEX 6 A1(1) [LOAD MESSAGE COUNT 7SGQ ADN 6 ICBUFF-A1-2 [IREMTW BLOCK LENGTH 7T2B SETUPCOR 6,3,CONBUFF,IREMTW [SET UP IREMTW BLOCK 7TG2 MHUNTW 2,GMON,AOUT 7T^L LDEX 6 A1(2) [LOAD RECORD H5ADER 7WF= SBN 6 2 [CONVERT TO MESSAGE LENGTH 7WYW STO 6 A1(3) [AND STORE IN CONBUFF IREMTW 7XDG ADN 2 A1+2 [MESSAGE START - GMON AOUT 7XY6 ADN 3 ICBUFF [MESSAGE START - IREMTW 7YCQ SMO 6 7YXB MOVE 2 0 [MOVE MESSAGE IN 7^C2 SBN 3 ICBUFF [POINT TO START OF BLOCK 7^WL CONSOUT 3 [OUTPUT TO CENTRAL CONSOLE 826D X2UP 82B= UP [RETURN 82TW X3CONSOLE 83*G # 83T6 # THIS ENTRY IS USED BY THE MAIN ROUTINE TO HANDLE INPUT. IT IS 84#Q # DRIVEN FROM THE NEW CPA, AND SETS UP AN ADATA/CREADL BLOCK TO HOLD 84SB # THE INPUT IN THE CONSOLE INPUT BUFFER. WHEN THE DATA IS THUS STORED 85#2 # AWAY, B0 OF AWORK3 OF THE CONSA ACTIVITY IS UNSET TO ALLOW MORE INPUT. 85RL # THE MESSAGE IS THEN EDITED TO REMOVE DELTA SHIFTS. THE CPA THEN GOES 86?= # ACROSS TO COMPRO,1. 86QW # 87=G LDCT 0 #770 87Q6 STO 0 JSOURCE1(2) [JSOURCE1 FOR CENTRAL CONSOLE 889Q LDEX 6 AWORK1(2) [MESSAGE CHARACTER COUNT 88PB ADN 6 3 8992 SRL 6 2 [MESSAGE LENGTH IN WORDS 89NL ADN 6 CPDATA-A1+1 [LOGICAL LENGTH REQUIRED 8=8= SETUPCOR 6,1,FILE,FRB [SET UP FRB 8=MW LDEX 6 AWORK1(2) [CHARACTER COUNT 8?7G STO 6 A1(1) [STORE MESSAGE LENGTH 8?M6 LDN 0 FCINBUF 8#6Q ADN 1 CPDATA 8#LB SMO 6 8*62 MVCH 0 0 [MOVE MESSAGE IN 8*KL # FIND THE CONSA/CNTRAL ACTIVITY 8B5= SMO AWORK2(2) [ADDRESS OF CONSA/CNTRAL 8BJW STOZ AWORK3 [CLEAR SUPPRESS INPUT MARKER 8C4G CHANG [EDIT MESSAGE 8CJ6 STOZ AWORK2(2) 8D3Q STOZ AWORK1(2) 8DQL ACROSS COMPROA,1 8F32 #PAGE 8FGL MENDAREA 20,K100CONSOLE 8G2= #END ^^^^ ...42576073000200000000