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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1