OPER864

(George Source)

Macros used: AND, ANDR, BC, BS, CHAIN, COOR1, COOR3, COOR4, DATECON, DCA, DECF, DO, DOWN, ELSE, ELSF, ELSFR, FC, FI, FIXTRA, FON, FREECORE, GPERI, IF, IFR, LF, LOCKC, MFREE, MHUNTW, MONOUT, NAME, OR, ORR, OUTBLOCK, OUTNULL, OUTPACK, OUTPACKX, REPEAT, SEGENTRY, SETNCORE, STF, THEN, TIMECON, UNLOCK, UP, WHILE, WRITED

OPER864.txt
22FL    #OPT           K0OPER=0 
22^=    #LIS           K0OPER > K0ALLGEO > K0GREATGEO   
23DW    #SEG           OPER                [COMM - STIG TOWNSEND
23YG    [   
24D6    [   
24XQ                8HOPER  
25CB       SEGENTRY K1OPER,OPERK1          [MAIN ENTRY POINT - CONSOLE ACTIVITY 
25X2       SEGENTRY K2OPER,OPERK2          [WRITE "PLSE RPT" AFTER INPUT FAILED 
26BL       SEGENTRY K3OPER,OPERK3          [PUT HEADER IN A SHOW BUFFER BLOCK   
26W=    [   
27*W    [   
27TG    [ AWORK1 : 0 => DON'T PAGEWAIT (SET BY CONSET)  
28*6    [          1 => PAGEWAIT (SET BY EMSENG AND THIS CHAPTER)   
28SQ    [ AWORK3 : 0 => NO FAILED APPENDS TO ACTIVE PAGE
29#B    [          ELSE (RESULT FROM SAPPENDMSG) => APPEND FAILED   
29S2    [          USED IN APPEND AND RACKDOWN ROUTINES, AND SLOGAGAIN  
2=?L    [ AWORK4 : B0-5   SCREEN NUMBER 
2=R=    [          B15-23 FLAG FIELD (0 => NO SHOWS DONE ON THIS PASS)  
2?=W    [          USED IN SHOW SECTION AND 'SHOWBLOCK', WHICH IS CALLED FROM IT
2?QG    [ AWORKS 2, 3, 4 ALSO USED IN 'SLOGAGAIN' DURING THE SETUP  
2#=6    [          OF A NEW PAGE. THIS DOES NOT AFFECT THE USES GIVEN ABOVE 
2#PQ    [          AS THE WORDS ARE RESET BEFORE BEING USED IN THEIR
2*9B    [          SEPARATE SECTIONS
2*P2    [   
2B8L    [   
2BN=    [ THE ASSUMPTION IS MADE THAT EACH PAGE IS HELD IN TWO  
2C7W    [ BACKING STORE BLOCKLETS. THE IDENTIFIER 'PAGESIZE' IS 
2CMG    [ USED ONLY FOR READABILITY, NOT GENERALITY 
2D76    #PAGE   
2DLQ    [   
2F6B    [   
2FL2    [ DEFINITIONS   
2G5L    [   
2GK=    #DEF  WIDTH = 40                   [WIDTH OF OPER SCREEN (CHARS)
2H4W                                       [
2HJG    #DEF  PAGESIZE = 2                 [SIZE OF PAGE IN B/S BLOCKS  
2J46                                       [
2JHQ    #DEF  SIZEDATE = 7                 [LENGTH OF DATE STRING (CHARS)   
2K3B                                       [
2KH2    #DEF  SIZETIME = 5                 [LENGTH OF HH.MM (CHARS) 
2L2L                                       [
2LG=    #DEF  WRITEMODE = 3                [EXTENDED WRITE MODE 
2L^W                                       [
2MFG    #DEF  UNLOCK = #200                [ADDITIONAL WRITE MODE - UNLOCK KEYS 
2M^6                                       [
2NDQ    #DEF  TFIELD = #400                [ADDITIONAL WRITE MODE - FIELD TYPE  
2NYB                                       [
2PD2    #DEF  MSGOUTLEN = 16               [LENGTH (CHARS) OF MSGOUTWAITS   
2PXL                                       [
2QC=    #DEF  WAITPOSN = 23 @L 18 + (WIDTH-MSGOUTLEN)   
2QWW                                       [START POSITION OF MSGOUTWAITS   
2RBG                                       [ON THE OPER SCREEN (SEE SYSWRITE)   
2RW6                                       [
2S*Q    #DEF  MSGRPTLEN = 20               [LENGTH (CHARS) OF "PLSE RPT" MSG
2STB                                       [
2T*2    #DEF  RPTPOSN = 23 @L 18           [START POSITION ON SCREEN
2TSL                                       [
2W#=    #DEF  SHOWLEN = 16                 [16 BLANKS TO COVER *** SHOWING ***  
2WRW                                       [
2X?G    #DEF  SHOWPOSN = 0                 [IN TOP LEFT HAND CORNER 
2XR6                                       [
2Y=Q    [   
2YQB    [   
2^=2    [ PRESET DATA   
2^PL    [   
329=    TYPECINP       +CONBUFF+CINP @L 12 [CONBUFF/CINP BLOCKTYPE  
32NW                                       [
338G    TYPECOUT       +CONBUFF+COUT @L 12 [CONBUFF/COUT BLOCKTYPE  
33N6                                       [
347Q    TYPESHOW       +CONBUFF+CSHOW@L 12 [CONBUFF/CSHOW BLOCKTYPE 
34MB                                       [
3572    TYPEREMTW      +CONBUFF+IREMTW@L12 [CONBUFF/IREMTW BLOCKTYPE
35LL                                       [
366=    TYPEFORCE      +CONBUFF+FORCE@L12  [CONBUFF/FORCE BLOCKTYPE 
36KW                                       [
375G                                       [
37K6    PAGEMSG                            [AUTO "PAGE STARTED" MSG 
384Q                   40HLOADED: FIRST PAGE STARTED        (AUTO)  
38JB                                       [
39HL                                       [
3=3=    MSGNOWAIT      +MSGOUTLEN          [MESSAGE LENGTH (CHARS)  
3=GW                   +WAITPOSN           [START POSITION ON SCREEN
3?2G                   16H                 [TEXT
3?G6                                       [
3?^Q    MSGOUTWAIT     +MSGOUTLEN          [MESSAGE LENGTH (CHARS)  
3#FB                   +WAITPOSN           [START POSITION ON SCREEN
3#^2                   16HOUTPUT WAITING   [TEXT
3*DL                                       [
3*Y=    MSGRPT         +MSGRPTLEN          [MESSAGE LENGTH (CHARS)  
3BCW                   +RPTPOSN            [START POSITION ON SCREEN
3BXG                   20HPLEASE REPEAT    [TEXT
3CC6                                       [
3CWQ    MSGNOSHOW      +SHOWLEN            [
3DBB                   +SHOWPOSN           [
3DW2                   16H                 [
3F*L                                       [
3FT=                                       [
3G#W    TICKSPERSEC    1000/K9             [CLEANCOUNTS/SECOND  
3GSG                                       [
3H#6    TICKSPERDAY    (1000/K9)*24*3600   [CLEANCOUNTS/DAY 
3HRQ                                       [
3J?B                                       [
3JR2                                       [
3K=L    VARCHAR        +JPDVARCHAR         [MESSAGE PDC 
3KQ=                                       [
3L9W                                       [
3LPG                                       [
3M96       FIXTRA      K90OPER             [FOR RESTORE-TIME-MACRO 'KEEPPAGES'  
3MNQ                                       [
3N8B    MAXBLKLET      +20 * PAGESIZE      [HIGHEST BLOCKLET NO IN RECALL FILE  
3ND8 ...XFINISH        #04000000           [MASK FOR FINISH 
3NN2    #PAGE   
3P7L    [   
3PM=    [   
3Q6W    [   
3QLG    [*********************************************************************  
3R66    [   
3RKQ    SFILEFULL   
3S5B    [   
3SK2    [*********************************************************************  
3T4L    [   
3TJ=    [ CHECKS WHETHER MAX NUMBER OF OPER PAGES HAVE BEEN RETAINED
3W3W    [   
3WHG    [ LINK X6   
3X36    [ ON EXIT,  X0= 0(FILE FULL) OR NONZERO (ROOM LEFT) 
3XGQ    [           X1,2 = FX'S 
3Y2B    [           X3 = CONSCNTRL  
3YG2       LDX   2  FX2 
3Y^L       LDX   1  FX1 
3^F=       LDX   0  MAXBLKLET(1)
3^YW       SRL   0  PAGESIZE/2          [X0 = MAX PAGES ALLOWED 
42DG       LDX   3  CONSCNTRL   
42Y6       SBX   0  CORET(3)            [X0 = PAGES AS YET UNUSED   
43CQ       EXIT  6  0   
43XB    [   
44C2    [   
44WL    [   
45B=    [*********************************************************************  
45TW    [   
46*G    SHUNTACTIVE 
46T6    [   
47#Q    [*********************************************************************  
47SB    [   
48#2    [ SUBSIDIARY HUNT ROUTINE FOR 'LOCKC'   
48RL    [   
49?=       MHUNTW   2,CONBUFF,ACTIVE
49QW       EXIT  1  0   
4==G    #PAGE   
4=Q6    [   
4?9Q    [   
4?PB    [*********************************************************************  
4#92    [   
4#NL    SGETOPER
4*8=    [   
4*MW    [*********************************************************************  
4B7G    [   
4BM6    [ ENSURES THAT BSTS HAS NOT LEFT A MESSAGE IN FCOUTBUF  
4C6Q    [ THAT HAS YET TO BE EXTRACTED. IT ENSURES THAT WE CAN OVERWRITE
4CLB    [ THE CONTROL AREA OF THE OPER DEVICE LIST  
4D62    [   
4DKL    [ LINK X3   
4F5=    [   
4FJW    [ ON EXIT,  OK TO USE DEVICE LIST   
4G4G    [           ALL DETECTED BSTS MESSAGES HAVE BEEN EXTRACTED  
4GJ6    [           X1,2 = FX'S 
4H3Q    [   
4HHB       SBX   3  FX1 
4J32       LDX   1  FX1 
4JGL       LDX   2  FX2 
4K2=       WHILE    TRUE                [START LOOP 
4KFW          WHILE    BUSY,CPPTR(2)       [WAIT TILL UNBUSY
4K^G          DO
4LF6             COOR3    #50   
4LYQ          REPEAT
4MDB          SMO      CONSCNTRL
4MY2          LDX   0  COBS 
4NCL          IF       0,NZ                [EXTRACT MSG IF IS ONE   
4NX=          THEN  
4PBW             DOWN     OPERA,3   
4PWG          FI
4QB6       ANDR     BUSY,CPPTR(2)     [REPEAT IF BSTS WRITING NOW   
4QTQ          SMO      CONSCNTRL
4R*B          LDX   0  COBS 
4RT2       OR       0,NZ                [OR ANOTHER MSG TO BE EXTRACTED 
4S#L       DO   
4SS=       REPEAT   
4T?W       ADX   3  FX1 
4TRG       EXIT  3  0   
4W?6    #PAGE   
4WQQ    [   
4X=B    [   
4XQ2    [   
4Y9L    [*********************************************************************  
4YP=    [   
4^8W    SELAPSED
4^NG    [   
5286    [*********************************************************************  
52MQ    [   
537B    [ CHECKS WHETHER A GIVEN NUMBER OF CLEANCOUNTS HAVE PASSED SINCE
53M2    [ THE TIME STORED IN A GIVEN TWO-WORD LOCATION IN THE FORMAT:   
546L    [ WORD 0 EDATE, WORD 1 CLEANCT  
54L=    [   
555W    [ LINK X5   
55KG    [ ON ENTRY, X3 -> LOCATION  
5656    [           X4 = ELAPSED TIME (CLEANCTS) TO BE CHECKED FOR  
56JQ    [   
574B    [ ON EXIT,  X0= 0(TIME HAS ELAPSED) OR 1(NOT YET ELAPSED)   
57J2    [           X1 CORRUPT  
583L    [           X2, 3, 4 UNCHANGED  
58H=    [   
592W       IF       EITHER,+0(3),ZE     [IF LOCATION HAS NOT BEEN WRITTEN   
59GG          LDX   0  EDATE
5=26          SBX   0  0(3)                [X0 = DAYS SINCE WRITTEN 
5=FQ          SMO      FX1  
5=^B          MPY   0  TICKSPERDAY         [X01 = DAYS IN CLEANCTS  
5?F2       OR       EITHER,0,NZ         [OR LARGE DIFFERENCES IN DATES  
5?YL          ADX   1  CLEANCT  
5#D=          SBX   1  1(3) 
5#XW       OR       1,GE,4              [OR ELAPSED CLEANCTS >= REQUIRED THEN   
5*CG       THEN 
5*X6          LDN   0  0                   [ZERO RESULT 
5BBQ       ELSE                         [ELSE (TIME NOT ELAPSED)
5BWB          LDN   0  1                   [NONZERO 
5CB2       FI                           [FI 
5CTL       EXIT  5  0   
5D*=    #PAGE   
5DSW    [   
5F#G    [   
5FS6    [   
5G?Q    [*********************************************************************  
5GRB    [   
5H?2    SYSWRITE
5HQL    [   
5J==    [*********************************************************************  
5JPW    [   
5K9G    [ WRITES A FIELD TO THE RESPONSE LINE   
5KP6    [   
5L8Q    [ LINK X4   
5LNB    [ ON ENTRY, X3 -> MESSAGE (RELATIVE TO FX1), OF WHICH   
5M82    [                 WORD 0 = LENGTH OF TEXT (CHARACTERS)  
5MML    [                 WORD 1 = LINE (B0-5) AND CHARACTER (B15-23) OF
5N7=    [                          START OF FIELD   
5NLW    [                 WORD 2.. TEXT 
5P6G    [   
5PL6    [ ON EXIT,  X0 CORRUPT  
5Q5Q    [           X1,2 = FX'S 
5QKB    [           X3 UNCHANGED
5R52    [   
5RJL       SBX   4  FX1 
5S4=       ANDN  4  #7777               [FORGET V SETTING - LINK < 4096 
5SHW       LDX   2  FX2 
5T3G       DO   
5TH6          SLL   3  12   
5W2Q          ORS   3  4                   [PRESERVE X3 AT TOP OF X4
5WGB          CALL  3  SGETOPER 
5X22          LDX   3  4
5XFL          SRL   3  12                  [RESTORE X3  
5X^=          ANDN  4  #7777               [RESTORE X4  
5YDW          ADX   3  FX1                 [X3 -> MESSAGE   
5YYG          LDX   1  CPPTR(2) 
5^D6          LDN   0  WRITEMODE+UNLOCK+TFIELD  
5^XQ          DCA      1,DLA,0,MODE 
62CB          LDEX  0  0(3) 
62X2          DCA      1,DLA,0,COUNT
63BL          LDX   0  1(3) 
63W=          DCA      1,STO,0,EXTRA
64*W          LDN   0  FCOUTBUF            [DATA WRITTEN FROM FCOUTBUF  
64TG          DCA      1,STO,0,CTSA 
65*6          LDN   0  2(3) 
65SQ          LDN   1  FCOUTBUF 
66#B          SMO      0(3) 
66S2          MVCH  0  0                   [MOVE MESSAGE TEXT THERE 
67?L          SBX   3  FX1                 [RESET X3
67R=          GPERI    CPPTR(2),2   
68=W          COOR1 
68QG          LDN   1  CPRW1(2) 
69=6       REPEAT   UNTIL,MBAC,1,CONSINOP,CONSFAIL  
69PQ       LDX   1  FX1 
6=9B       ADX   4  FX1 
6=P2       EXIT  4  0   
6?8L    #PAGE   
6?N=    [   
6#7W    [   
6#MG    [   
6*76    [*********************************************************************  
6*LQ    [   
6B6B    SRESET  
6BL2    [   
6C5L    [*********************************************************************  
6CK=    [   
6D4W    [ RESETS LOG AREA, COMPLETELY REWRITING ACTIVE PAGE 
6DJG    [   
6F46    [ LINK X6   
6FHQ    [   
6G3B    [ ON EXIT,  X1,2 = FX'S 
6GH2    [           X3 CORRUPT  
6H2L    [           /ACTIVE UPDATED SO NOTHING LEFT TO LOG  
6HG=    [           BIT COVERWRITE IN /CNTRL IS CLEAR   
6H^W    [   
6JFG       SBX   6  FX1 
6J^6       CALL  1  SHUNTACTIVE 
6KDQ       LOCKC    2,SHUNTACTIVE   
6KYB       DO                           [UNTIL A SUCCESSFUL RESET DO
6LD2          CALL  3  SGETOPER 
6LXL          CALL  1  SHUNTACTIVE      [X2 -> /ACTIVE  
6MC=          LDX   3  ACLFT(2) 
6MWW          IF       3,NZ             [FILL PAGE WITH NEWLINES
6NBG          THEN  
6NW6             LDX   0  FCANCEL+2 
6P*Q             LDX   1  ACLEN(2)  
6PTB             SRL   1  2 
6Q*2             ADN   1  FPTR(2)   
6QSL             ADX   1  ACOUT(2)  
6R#=             DO 
6RRW                STO   0  0(1)   
6S?G                ADN   1  1  
6SR6             REPEAT   CT 3  
6T=Q          FI                        [PAGE FILLED WITH NEWLINES  
6TQB          SMO      FX2  
6W=2          LDX   3  CPPTR
6WPL          LDN   0  WRITEMODE + UNLOCK  [WRITE MODE  
6X9=          DCA      3,DLA,0,MODE 
6XNW          LDX   0  ACLOG(2)            [BUFFER STARTS AT [ACLOG]+START ADDR 
6Y8G          ADN   0  FPTR(2)  
6YN6          DCA      3,STO,0,CTSA 
6^7Q          LDX   0  ACOUT(2)            [NO. CHARS = ( LINES ALREADY ... 
6^MB          SBX   0  ACLOG(2)            [              ... WRITTEN   
7272          ADX   0  ACLFT(2)            [              + NO. OF NEWLINES 
72LL          SLL   0  2                   [            ) * 4   
736=          ADX   0  ACLEN(2)            [            + CHARS NOT YET WRITTEN 
73KW          SBN   0  4                   [            - FINAL NEWLINE 
745G          DCA      3,DLA,0,COUNT
74K6          LDCT  0  #010                [STARTS LINE 1 ON SCREEN 
754Q          DCA      3,STO,0,EXTRA
75JB          LDX   2  FX2  
7642          GPERI    3,2                 [DO PERI AND UNLOCK BLOCK
76HL          COOR1 
773=          CALL  1  SHUNTACTIVE  
77GW          UNLOCK   2
782G          LDN   3  CPRW1(2) 
78G6       REPEAT   UNTIL,MBAC,3,CONSINOP,CONSFAIL  
78^Q       LDX   3  CONSCNTRL   
79FB       BC       3,COVERWRITE
79^2       MHUNTW   3,CONBUFF,ACTIVE    [UPDATE BLOCK POINTERS AND COUNTS   
7=DL       LDX   0  ACLEN(3)
7=Y=       SRL   0  2   
7?CW       ADS   0  ACOUT(3)
7?XG       STOZ     ACLEN(3)
7#C6       STOZ     ACLNS(3)
7#WQ       ADX   6  FX1 
7*BB       EXIT  6  0   
7*W2    #PAGE   
7B*L    [   
7BT=    [   
7C#W    [   
7CSG    [*********************************************************************  
7D#6    [   
7DRQ    SAUTOHEAD   
7F?B    [   
7FR2    [*********************************************************************  
7G=L    [   
7GQ=    [ INSERTS THE HEADING LINE FOR A MONITOR SHOW INTO A
7H9W    [ CONBUFF/ACTIVE.   
7HPG    [   
7J96    [ LINK X5   
7JNQ    [   
7K8B    [ ON ENTRY, X3 -> BLOCK 
7KN2    [           X2=FX2  
7L7L    [           AWORK2 CONTAINS DATE PAGE CREATED   
7LM=    [           AWORK3 CONTAINS TIME PAGE CREATED   
7M6W    [   
7MLG    [ ON EXIT,  X1,2 = FX'S 
7N66    [           X3,4 CORRUPT
7NKQ    [   
7P5B       SBX   5  FX1 
7PK2       LDX   1  FX1 
7Q4L       LDN   4  ACHCT+1(3)  
7QJ=       LDN   3  PAGEMSG(1)  
7R3W       MOVE  3  WIDTH/4             [PUT IN BASIC HEADER
7RHG       IF       +AWORK2(2),NZ   
7S36       THEN 
7SGQ          TIMECON  AWORK3(2)
7T2B          MHUNTW   3,CONBUFF,ACTIVE 
7TG2          LDX   1  3
7T^L          LDN   4  ACHCT+1(3)   
7WF=          LDN   3  ACOMMUNE1(2) 
7WYW          MVCH  3  SIZETIME 
7XDG          LDN   3  ACES 
7XY6          MVCH  3  1
7YCQ          SBX   4  1                   [X4 -> DATE START (W.R.T. FPTR)  
7YXB          DATECON  AWORK2(2)
7^C2          MHUNTW   3,CONBUFF,ACTIVE 
7^WL          ADX   4  3
82B=          LDN   3  ACOMMUNE1(2) 
82TW          MVCH  3  SIZEDATE            [INSERT DATE 
83*G       FI   
83T6       ADX   5  FX1 
84#Q       EXIT  5  0   
84SB    #PAGE   
85#2    [   
85RL    [   
86?=    [   
86QW    [*********************************************************************  
87=G    [   
87Q6    SLOGAGAIN   
889Q    [   
88PB    [*********************************************************************  
8992    [   
89NL    [ RESTARTS INTERACTIVE LOGGING. IF SCREEN IS SHOWING, IT IS 
8=8=    [ COMPLETELY RESET. IF PAGEWAITING, THE LOG IS UNFROZEN, A NEW  
8=MW    [ ACTIVE PAGE SET UP AND THE "OUTPUT WAITING" FIELD CLEARED.
8?7G    [   
8?M6    [ LINK X7   
8#6Q    [   
8#LB    [ ON EXIT,  ALL ACCUMULATORS CORRUPT
8*62    [   
8*KL       SBX   7  FX1 
8B5=       LDX   1  FX1 
8BJW       LDX   2  FX2 
8C4G       LDX   3  CONSCNTRL   
8CJ6       ADN   3  COVID+0 
8D3Q       IF       BS,3,COSHOWING      [IF INTERACTIVE SHOWING THEN
8DHB       THEN 
8F32          CALL  6  SRESET              [PUT BACK ACTIVE PAGE
8FGL          LDN   3  MSGNOSHOW
8G2=          CALL  4  SYSWRITE            [CLEAR "*** SHOWING ***" ... 
8GFW          LDN   3  MSGNOWAIT
8G^G          CALL  4  SYSWRITE            [AND "OUTPUT WAITING"
8HF6          LDX   3  CONSCNTRL
8HYQ          BC       3,COUTWAITS         [CLEAR 'O/P WAITING' FLAG ...
8JDB          STOZ     CODAT(3)            [AND TIME SHOW STARTED ...   
8JY2          ADN   3  COVID + 0
8KCL          BC       3,COSHOWING         [AND 'SHOWING' FLAG ...  
8KX=          FC       3,COCURRENT         [AND CURRENT PAGE NUMBER ... 
8LBW       ELSE                         [ELSE (MAY BE PAGEWAITING)  
8LWG          LDX   3  CONSCNTRL
8MB6          IF       BSC,3,COUTWAITS     [IF "O/P WAITING" THEN   
8MTQ          THEN  
8N*B             LDN   3  MSGNOWAIT 
8NT2             CALL  4  SYSWRITE            [CLEAR IT 
8P#L          FI                           [FI  
8PS=          LDX   3  CONSCNTRL
8Q?W          IF       BSC,3,COPAGEWAIT    [IF PAGEWAITING THEN 
8QRG          THEN  
8R?6             STOZ     CODAT(3)            [CLEAR TIME & BIT 
8RQQ             MHUNTW   3,CONBUFF,ACTIVE  
8S=B             LDX   0  ACOUT(3)            [WORDS FROM FPTR TO END OF PAGE   
8SQ2             SBN   0  ACLOG + 1           [WORDS INCLUDING FUNCTION LINE
8T9L                                          [BUT EXCLUDING FINAL NEWLINE  
8TP=             ADX   0  ACLFT(3)            [   AND NEWLINE FOR EACH UNUSED   
8W8W             SLL   0  2 
8WNG             STO   0  ACHCT(3)            [INSERT CHARACTER LNGTH OF PAGE   
8X86             LDX   4  ACLFT(3)  
8XMQ             IF       4,NZ                [IF LINES TO BE BLANKED ON... 
8Y7B             THEN                         [SUBSEQUENT SHOW THEN 
8YM2                LDX   0  FCANCEL+2  
8^6L                LDN   1  FPTR(3)
8^L=                ADX   1  ACOUT(3)            [PUT THAT NUMBER OF NEWLINES   
925W                DO                           [AT END OF PAGE
92KG                   STO   0  0(1)
9356                   ADN   1  1   
93JQ                REPEAT   CT 4   
944B             FI                           [FI   
94J2          [ 
953L          [ WRITE PAGE TO ALL SCREENS ON AUTO   
95H=          [ 
962W             LDX   2  FX2   
96GG             LDN   6  CLUSTOPER           [FOR ALL MONITORS DO  
9726             DO                              [AT LOOP START:
97FQ                LDN   1  COVID               [   X3 -> ACTIVE   
97^B                ADX   1  CONSCNTRL           [   X2 = FX2   
98F2                ADX   1  6                   [   X1 -> SCREEN CELL  
98YL                IF       BS,1,COAUTO         [IF SCREEN ON AUTO THEN
99D=                THEN
99XW                   LDX   0  ACDAT(3)
9=CG                   STO   0  AWORK2(2)   
9=X6                   LDX   0  ACTIM(3)            [PRESERVE DATE CREATED ...  
9?BQ                   STO   0  AWORK3(2)           [... TIME CREATED ...   
9?WB                   LDX   0  ACLOG(3)            [... AND ACLOG FOR WHEN ... 
9#B2                   STO   0  AWORK4(2)           [... WE WRITE PAGE TO RECALL
9#TL                   CALL  5  SAUTOHEAD           [PUT IN HEADER  
9**=                   CALL  1  SHUNTACTIVE 
9*SW                   LOCKC    2,SHUNTACTIVE       [LOCK BLOCK 
9B#G                   CALL  3  SGETOPER
9BS6                   LDX   3  CPPTR(2)
9C?Q                   CALL  1  SHUNTACTIVE         [SET UP CONTROL AREA
9CRB                   LDN   0  WRITEMODE+UNLOCK
9D?2                   DCA      3,DLA,0,MODE        [   -MODE   
9DQL                   LDX   0  ACHCT(2)
9F==                   DCA      3,DLA,0,COUNT       [   -COUNT  
9FPW                   LDN   0  ACHCT+1(2)  
9G9G                   DCA      3,STO,0,CTSA        [   -BUFFER ADDRESS 
9GP6                   LDX   0  6   
9H8Q                   SLL   0  9   
9HNB                   DCA      3,STO,0,EXTRA       [   -SCREEN NUMBER  
9J82                   LDX   2  FX2 
9JML                   GPERI    3,2                 [ISSUE PERI 
9K7=                   COOR1
9KLW                   CALL  1  SHUNTACTIVE 
9L6G                   UNLOCK   2                   [UNLOCK BLOCK AGAIN 
9LL6                   LDX   1  CONSCNTRL   
9M5Q                   ADN   1  COVID   
9MKB                   ADX   1  6   
9N52                   LDN   3  CPRW1(2)
9NJL                   IF       MBS,3,CONSINOP,CONSFAIL [IF WRITE FAILED THEN   
9P4=                   THEN 
9PHW                      BC       1,COAUTO            [SWITCH OFF AUTO 
9Q3G                   ELSE                         [ELSE (WRITE OK)
9QH6                      LDN   5  1
9R2Q                      STF      1,COCURRENT,5       [SET "CURRENT" TO 1  
9RGB                   FI                           [FI WRITE FAILED
9S22                   MHUNTW   3,CONBUFF,ACTIVE    [REFIND BLOCK   
9SFL                   LDX   0  AWORK2(2)   
9S^=                   STO   0  ACDAT(3)
9TDW                   LDX   0  AWORK3(2)           [RESET DATE AND TIME
9TYG                   STO   0  ACTIM(3)
9WD6                   LDX   0  AWORK4(2)   
9WXQ                   STO   0  ACLOG(3)
9XCB                FI                           [FI AUTO   
9XX2             REPEAT   CT 6                [REPEAT OVER MONITORS 
9YBL          [ 
9YW=          [ WRITE PAGE AWAY AND SET UP NEW ONE  
9^*W          [ 
9^TG             LDX   2  CONSCNTRL 
=2*6             IF       BS,2,CONSNOFILE   
=2SQ             THEN   
=3#B                LDX   2  FX2
=3S2             ELSE   
=4?L                NAME     3,FILE,FRWB
=4R=                IF       BC,2,CONSFILE          [IF NO FILE THEN
=5=W                THEN
=5QG                   SMO      FX2 
=6=6                   LDX   2  ACTRING 
=6PQ                   SBN   2  ACTRING-FPTR        [X2 -> NEXT ACTY
=79B                   CHAIN    3,BPTR(2)           [CHAIN LATEST PAGE FURTHEST 
=7P2                   CALL  6  SFILEFULL   
=88L                   IF       0,ZE                [IF "FILE" FULL THEN
=8N=                   THEN 
=97W                      MFREE    FILE,FRWB           [FREE OLDEST PAGE
=9MG                   ELSE                         [ELSE (ROOM IN "FILE")  
==76                      LDN   0  1
==LQ                      ADS   0  CORET(3)            [UPDATE 'RETAINED' COUNT 
=?6B                   FI                           [FI EMS "FILE" FULL 
=?L2                ELSE                         [ELSE (FILE SET UP)
=#5L                   CALL  6  SFILEFULL   
=#K=                   IF       0,NZ                [IF FILE NOT FULL THEN  
=*4W                   THEN 
=*JG                      LDN   0  1
=B46                      ADS   0  CORET(3)            [RAISE 'RETAINED' COUNT  
=BHQ                   FI                           [FI 
=C3B                   LDX   4  COBLK(3)
=CH2                   WRITED   4,1                 [WRITE OLD PAGE TO FILE 
=D2L                   ADN   4  PAGESIZE
=DG=                   IF       4,GE,MAXBLKLET(1)   [IF USED LAST BLOCKLET THEN 
=D^W                   THEN 
=FFG                      LDN   4  1                   [RESART AT FRONT OF FILE 
=F^6                   FI                           [FI 
=GDQ                   STO   4  COBLK(3)            [RESERVE NEXT PAGE HOME 
=GYB                FI                           [FI NOFILE / FILE  
=HD2                LDX   3  CONSCNTRL  
=HXL                ADN   3  COVID  
=JC=                LDN   6  CLUSTOPER  
=JWW                DO                           [FOR ALL SCREENS DO
=KBG                   IF       BS,3,COSHOWING      [IF SHOWING 
=KW6                                                [AND NON-AUTO   
=L*Q                   AND      BC,3,COAUTO         [(AUTO WILL HAVE SET FIELD) 
=LTB                      LF       3,COCURRENT,5
=M*2                      ADN   5  1
=MSL                      LDX   4  MAXBLKLET(1) 
=N#=                      SRL   4  PAGESIZE/2   
=NRW                   AND      4,GE,5              [AND NOT AT OLDEST PAGE THEN
=P?G                   THEN 
=PR6                      STF      3,COCURRENT,5       [RAISE CURRENT PAGE NUM  
=Q=Q                   FI                           [FI 
=QQB                   ADN   3  1   
=R=2                REPEAT   CT 6                [REPEAT
=RPL ...#DEF  WILLBELOCKD=0 
=S9=                SETNCORE ACTIVEINIT,3,CONBUFF,ACTIVE,+WILLBELOCKD   
=SNW             FI                           [FI PAGE SETUP FAILED / DIDN'T
=T8G          [ 
=TN6          [ INITIALISE NEW ONE  
=W7Q          [ 
=WMB             LDN   0  1 
=X72             STO   0  AWORK1(2)           [PAGEWAIT ON FUTURE PAGES 
=XLL             STOZ     AWORK3(2)           [NO APPEND HAS FAILED ON THIS PAGE
=Y6=             LDX   2  CONSCNTRL 
=YKW             BC       2,COVERWRITE        [THIS PAGE DOESN'T NEED RESET 
=^5G             STOZ     ACHCT(3)            [INITIALISE NEW PAGE  
=^K6             STOZ     ACLEN(3)  
?24Q             STOZ     ACLNS(3)  
?2JB             LDN   0  HEIGHTPAGE
?342             STO   0  ACLFT(3)  
?3HL             LDN   0  WIDTH/4 + ACLOG   
?43=             STO   0  ACLOG(3)            [POINTS TO START OF NEW PAGE  
?4GW             STO   0  ACOUT(3)            [POINTS AT "PAGE STARTED" 
?52G             LDX   0  EDATE 
?5G6             STO   0  ACDAT(3)  
?5^Q             LDX   0  CLEANCT   
?6FB             STO   0  ACTIM(3)  
?6^2          FI                           [FI PAGEWAITING  
?7DL       FI                           [FI SHOW/NOT
?7Y=       ADX   7  FX1 
?8CW       EXIT  7  0   
?8XG    #PAGE   
?9C6    [   
?9WQ    [   
?=BB    [   
?=W2    [*********************************************************************  
??*L    [   
??T=    SLOGBLOCK   
?##W    [   
?#SG    [*********************************************************************  
?*#6    [   
?*RQ    [ POINTS X3 AT FIRST CONBUFF/COUT, CONBUFF/IREMTW OR CONBUFF/FORCE  
?B?B    [ ON THE CONSOLE CHAIN  
?BR2    [   
?C=L    [ LINK X5   
?CQ=    [   
?D9W    [ ON EXIT,  X0= 0(NO BLOCK FOUND), NONZERO(BLOCK FOUND) 
?DPG    [           X1 = FX1
?F96    [           X2 UNCHANGED
?FNQ    [           X3 -> BLOCK IF X0 NONZERO   
?G8B    [           X4 CORRUPT  
?GN2    [   
?H7L       LDX   1  FX1 
?HM=       LDN   3  BCONSOUT
?J6W       LDX   4  3   
?JLG       WHILE    TRUE
?K66          LDN   0  0                [X0=0 IF HIT END OF CHAIN   
?KKQ          LDX   3  FPTR(3)  
?L5B       AND      3,U,4               [WHILE (NOT END OF CHAIN)   
?LK2          LDX   0  ATYPE(3)            [X0 NONZERO IF TESTING BLOCKS
?M4L          ANDX  0  HALFTOP  
?MJ=       AND      0,U,TYPECOUT(1)     [AND (NOT A /COUT)  
?N3W       AND      0,U,TYPEREMTW(1)    [AND (NOT A /IREMTW)
?NHG       AND      0,U,TYPEFORCE(1)
?P36       DO                           [DO REPEAT  
?PGQ       REPEAT   
?Q2B       EXIT  5  0   
?QG2    [   
?Q^L    [   
?RF=    [   
?RYW    [*********************************************************************  
?SDG    [   
?SY6    SCINPBLOCK  
?TCQ    [   
?TXB    [*********************************************************************  
?WC2    [   
?WWL    [ POINTS X3 AT FIRST CONBUFF-CINP ON CONSOLE CHAIN  
?XB=    [   
?XTW    [ LINK X4   
?Y*G    [   
?YT6    [ ON EXIT,  X1=FX1  
?^#Q    [           X3 -> BLOCK 
?^SB    [   
#2#2       LDX   1  FX1 
#2RL       LDN   3  BCONSOUT
#3?=       DO   
#3QW          LDX   3  FPTR(3)  
#4=G       REPEAT   UNTIL,+ATYPE(3),E,TYPECINP(1)   
#4Q6       EXIT  4  0   
#59Q    #PAGE   
#5PB    [   
#692    [   
#6NL    [   
#78=    [*********************************************************************  
#7MW    [   
#87G    SHOWBLOCK   
#8M6    [   
#96Q    [*********************************************************************  
#9LB    [   
#=62    [ POINTS X3 AT THE FIRST CONBUFF/CSHOW ON THE CONSOLE OUTPUT
#=KL    [ CHAIN WHOSE DISPLAY NUMBER IS THE SAME AS THAT HELD IN
#?5=    [ CHARACTER ZERO OF AWORK4  
#?JW    [   
##4G    [ X4 LINK   
##J6    [   
#*3Q    [ ON EXIT,  X0 CORRUPT  
#*HB    [           X1,2 = FX'S 
#B32    [           X3 -> BLOCK 
#BGL    [   
#C2=       LDX   1  FX1 
#CFW       LDX   2  FX2 
#C^G       LDN   3  BCONSOUT
#DF6       WHILE    TRUE                [LOOP TILL FIND /CSHOW FOR SCREEN   
#DYQ          LDX   3  FPTR(3)  
#FDB       AND      EITHER,+ATYPE(3),U,TYPESHOW(1)  
#FY2          LDCH  0  AWORK4(2)
#GCL       OR       0,U,CSVID(3)
#GX=       DO   
#HBW       REPEAT                       [X3 -> SHOW BLOCK   
#HWG       EXIT  4  0   
#JB6    #PAGE   
#JTQ    [   
#K*B    [   
#KT2    [*********************************************************************  
#L#L    [   
#LS=    SAPPENDMSG  
#M?W    [   
#MRG    [*********************************************************************  
#N?6    [   
#NQQ    [ APPENDS A MESSAGE FROM A MESSAGE BLOCK TO THE ACTIVE PAGE. WHOLE- 
#P=B    [ WORD OUTPUT LINES ARE USED, THE MESSAGE BEING FILLED WITH #74'S   
#PQ2    [ AT THE END IF NEEDED. 
#Q9L    [   
#QP=    [ APPEND ALWAYS FAILS IF WE ARE PAGEWAITING, TO AVOID THE CASE WHERE
#R8W    [ WE PAGEWAIT DUE TO A TWO-LINE OUTPUT BUT SUBSEQUENTLY APPEND A
#RNG    [ ONE-LINE INPUT ENTERED DURING THE WAIT. THIS MESSAGE WOULD NEVER  
#S86    [ BE WRITTEN TO THE SCREEN AND SINCE 'SLOGAGAIN' ASSUMES THAT ACLEN 
#SMQ    [ IS ZERO, THE MESSAGE WOULD BE OVERWRITTEN WITH NEWLINES BEFORE
#T7B    [ BEING WRITTEN TO RECALL FILE (AND THUS WOULD NEVER BE SHOWN EITHER).  
#TM2    [   
#W6L    [ LINK X7   
#WL=    [   
#X5W    [ ON ENTRY, X3 -> MESSAGE BLOCK 
#XKG    [   
#Y56    [ ON EXIT,  X0 =  0 - APPENDED OK   
#YJQ    [               +VE - PAGE FULL AND CANNOT BE EXTENDED  
#^4B    [                     (OR TRIED TO APPEND TOO MANY LINES)   
#^J2    [           X1, 2 = FX'S
*23L    [           X3-X6 UNCHANGED 
*2H=    [   
*32W       LDX   2  FX2 
*3GG       LDX   1  CONSCNTRL   
*426       IF       BS,1,COPAGEWAIT     [IF PAGEWAITING THEN
*4FQ       THEN 
*4^B          LDX   1  FX1                 [EXIT WITH FAIL RESULT   
*5F2          LDN   0  1
*5YL       ELSE                         [ELSE (NOT PAGEWAITING) 
*6D=          SBX   7  FX1  
*6XW          LDX   0  ATYPE(3) 
*7CG          STO   0  ACOMMUNE8(2)        [REMEMBER BLOCK TYPE 
*7X6          NAME     3,CONBUFF,CONAPP    [RESET TO BE FOUND BY OPERAPP
*8BQ          DOWN     OPERAPP,1
*8WB          LDX   0  ACOMMUNE9(2) 
*9B2          ADX   7  FX1  
*9TL       FI                           [FI PAGEWAITING 
*=*=       EXIT  7  0   
*=SW    #PAGE   
*?#G    [   
*?S6    [   
*#?Q    [*********************************************************************  
*#RB    [   
**?2    SNOWAIT 
**QL    [   
*B==    [*********************************************************************  
*BPW    [   
*C9G    [ CHECKS TO SEE IF WE CAN DO ANYTHING AT ONCE (I.E. EXTRACT BSTS MSG,   
*CP6    [ SHOW, RESET INTERACTIVE SCREEN, INPUT OR REFRESH TIME)
*D8Q    [   
*DNB    [ LINK X4   
*F82    [   
*FML    [ ON EXIT,  X6= 0(WE CAN) OR UNCHANGED(WE CAN'T)
*G7=    [           XO CORRUPT  
*GLW    [           X1,2 = FX'S 
*H6G    [           X3 CORRUPT  
*HL6    [   
*J5Q       LDX   3  CONSCNTRL   
*JKB       IF       BS,3,COVERWRITE     [IF (SCREEN NEEDS RESETTING ..  
*K52          LDN   2  COVID(3) 
*KJL       ANDR     BC,2,COSHOWING      [.. AND NOT SHOWING)
*L4=       OR       +COBS(3),NZ         [OR BSTS MESSAGE TO EXTRACT THEN
*LHW       THEN 
*M3G          LDN   6  0                   [SET 'CAN'   
*MH6       FI                           [FI 
*N2Q       ADN   3  COVID+CLUSTOPER     [X3 -> LAST SCREEN CELL 
*NGB       LDN   2  CLUSTOPER+1 
*P22       WHILE    6,NZ                [FOR ALL SCREENS TILL SHOW FOUND DO 
*PFL       DO   
*P^=          IF       FNZ,3,COSHOWS
*QDW          THEN  
*QYG             LDN   6  0                [SET 'CAN' IF SHOW FOUND 
*RD6          FI
*RXQ          SBN   3  1
*SCB       REPEAT  CT 2                 [REPEAT 
*SX2       IF       MBS,,GNUTIME,CONSW  [IF TIME TO REFRESH OR I/P TO READ  
*TBL       THEN                         [THEN   
*TW=          LDN   6  0                   [SET 'CAN'   
*W*W       FI                           [FI 
*WTG       LDX   1  FX1 
*X*6       LDX   2  FX2 
*XSQ       EXIT  4  0   
*Y#B    #PAGE   
*YS2    [   
*^?L    [   
*^R=    [                    WW   WW   W
B2=W    [                    WW  WW   WW
B2QG    [                    WW WW   WWW
B3=6    [                    WWWW     WW
B3PQ    [                    WWWW     WW
B49B    [                    WW WW    WW
B4P2    [                    WW  WW   WW
B58L    [                    WW   WW  WW
B5N=    [   
B67W    [   
B6MG    OPERK1  
B776    [   
B7LQ    [ THIS SEGMENT IS A GIANT LOOP WHICH ON BEING WOKEN CHECKS TO SEE   
B86B    [ IF THE OPER NEEDS SERVICING IN ANY WAY (E.G. READ AN INPUT LINE,  
B8L2    [ REFRESH CURRENT DATE AND TIME, ETC). IT GOES BACK TO SLEEP
B95L    [ IF NOT. ANYTHING THAT NEEDS DOING IS DONE AS SOON AS POSSIBLE, AND
B9K=    [ WE START AGAIN FROM THE INITIAL CHECK 
B=4W    [   
B=JG       DO   
B?46    [   
B?HQ    [ SEE IF WE'VE GOT ANYTHING TO DO. IF NOT, GO BACK TO SLEEP AFTER   
B#3B    [ WAKING ANY EMS ACTIVITIES THAT MAY BE WAITING FOR THE OPER.   
B#H2    [   
B*2L          WHILE    TRUE 
B*G=             NGN   6  1                [X6 IS A FLAG:   
B*^W                                       [   -1 => NOTHING TO DO  
BBFG                                       [    0 => SOMETHING CAN BE DONE AT   
BB^6                                       [         ONCE   
BCDQ                                       [    1 => SOMETHING CAN BE DONE IF   
BCYB                                       [         LAST LOG-FREEZING HAPPENED 
BDD2                                       [         > PAGEWAIT SECS AGO
BDXL             LDX   3  CONSCNTRL 
BFC=             IFR      +COECH(3),NZ        [IF I/P TO ECHO   
BFWW             ORR      BS,3,COVERWRITE     [MUST WAIT IF SCREEN SHOWING  
BGBG                 CALL  5  SLOGBLOCK 
BGW6             ORR      0,NZ                [OR O/P TO APPEND 
BH*Q                MHUNTW   3,CONBUFF,ACTIVE   
BHTB             OR       +ACLEN(3),NZ        [OR LOG DATA TO WRITE THEN
BJ*2             THEN   
BJSL                LDN   6  1                   [PAGEWAIT RESTRAINT
BK#=             FI                           [FI   
BKRW             CALL  4  SNOWAIT             [SEE IF CAN ACT AT ONCE   
BL?G          AND      6,NG                [WHILE NOTHING TO DO 
BLR6          DO
BLY# ...         SMO      FX1   
BM5G ...         LDX   4  XFINISH   
BM=N ...         ANDX  4  FINISH
BMCW ...         IFR      4,NZ               [OR FINISH 
BMK4 ...         OR       BS,,EMSBIT
BMQB             THEN   
BN=2                FON      #53
BNPL             FI 
BP9=             COOR3    #50                 [WE MUST WAIT 
BPNW          REPEAT
BQ8G    [   
BQN6    [ WE NOW KNOW THERE IS SOMETHING TO DO, BUT CIRCUMSTANCES MAY PREVENT   
BR7Q    [ US FROM DOING ANY OF THEM RIGHT NOW. IN THAT CASE WE WAIT 
BRMB    [ UNTIL WE ARE WOKEN FOR SOMETHING ELSE TO DO OR A TIME OF FONINTP  
BS72    [ SECONDS HAS PASSED. WE THEN MAKE THE CHECK AGAIN, AND AGAIN ...   
BSLL    [ UNTIL WE ARE ABLE TO DO ONE OF THE ACTIONS.   
BT6=    [   
BTKW          IF       6,NZ                [IF MUST WAIT THEN   
BW5G          THEN  
BWK6             WHILE    TRUE                [WHILE ...
BX4Q                CALL  4  SNOWAIT
BXJB             AND      6,NZ                [... NO IMMEDIATE ACTION ARRIVED  
BY42             AND      +AWORK1(2),NZ       [AND CAN'T IGNORE PAGEWAIT
BYHL                LDX   3  IPAGEWAIT  
B^3=                MPY   3  TICKSPERSEC(1)      [X4 = PAGEWAIT IN CLEANCTS 
B^GW                LDX   3  CONSCNTRL  
C22G                ADN   3  CODAT  
C2G6                CALL  5  SELAPSED   
C2^Q             AND      0,NZ                [AND NOT TIME YET DO  
C3FB             DO 
C3^2                COOR4    #50                 [WAIT FOR TIME OR INTERRUPT
C4DL             REPEAT                       [REPEAT   
C4Y=          FI                           [FI MUST WAIT
C5CW    [   
C5XG    [ EXTRACT ANY BSTS MESSAGES 
C6C6    [   
C6WQ          CALL  3  SGETOPER 
C7BB    [   
C7W2    [ IF INPUT HAS BEEN CHAINED (THE 'ENTER' KEY), WE READ IT NOW   
C8*L    [   
C8T=          IF       BS,,CONSW
C9#W          THEN  
C9SG             DOWN     OPERIN,1  
C=#6          FI
C=RQ    [   
C??B    [ FOR EVERY SCREEN WE KNOW OF (0 TO CLUSTOPER INCL), WE DO SHOW 
C?R2    [ TO IT IF ONE HAS BEEN REQUESTED. ALL MONITOR SCREENS ARE TREATED  
C#=L    [ BEFORE THE INTERACTIVE SO AS TO AVOID CHANGING THE PAGE   
C#Q=    [ REFERENCE POINT (THE ACTIVE PAGE) BETWEEN A SHOW COMMAND BEING
C*9W    [ ISSUED AND ACTIONED.  
C*PG    [   
CB96          DO                           [UNTIL ALL SHOWS CLEARED DO  
CBNQ             LDN   1  CLUSTOPER 
CC8B             STOZ     AWORK4(2)           [MARK 'NONE DONE' 
CCN2             WHILE    1,PZ                [FOR EACH SCREEN  
CD7L                LDEX  0  AWORK4(2)  
CDM=             AND      0,ZE                [UNTIL A SHOW IS DONE 
CF6W             DO 
CFLG                DCH   1  AWORK4(2)           [REMEMBER NUMBER   
CG66                LDX   3  CONSCNTRL  
CGKQ                ADN   3  COVID(1)   
CH5B                LF       3,COSHOWS,0
CHK2                IF       0,NZ                [IF SHOWS FOR THIS SCREEN THEN 
CJ4L                THEN
CJJ=                   CALL  4  SHOWBLOCK           [POINT X3 AT PARAM BLOCK
CK3W                   LDCH  0  AWORK4(2)   
CKHG                   IF       0,NZ                [IF NOT INTERACTIVE SCREEN  
CL36                   THEN                         [THEN   
CLGQ                      STO   0  ACOMMUNE4(2) 
CM2B                      DOWN     OPERA,1  
CMG2                   ELSFR    +CSPAG(3),ZE        [ELSF (INTERACTIVE AND) ACTI
CM^L                   OR       0,NG
CNF=                   THEN 
CNYW                      CALL  7  SLOGAGAIN           [RESART LOGGING  
CPDG                   ELSE                         [ELSE (INTERACTIVE SHOW)
CPY6                      DOWN     OPERA,2  
CQCQ                   FI                           [FI TYPE OF SHOW
CQXB                   CALL  4  SHOWBLOCK   
CRC2                   FREECORE 3                   [FREE SHOW PARAM BLOCK  
CRWL                   LDN   0  1   
CSB=                   DEX   0  AWORK4(2)           [MARK 'SHOW DONE'   
CSTW                   LDCH  3  AWORK4(2)   
CT*G                   ADX   3  CONSCNTRL   
CTT6                   ADN   3  COVID   
CW#Q                   DECF     3,COSHOWS           [DECREMENT THE RELEVANT COUN
CWSB                FI                           [FI SHOW TO DO 
CX#2                LDCH  1  AWORK4(2)  
CXRL                SBN   1  1  
CY?=             REPEAT                       [REPEAT OVER SCREENS  
CYQW             LDEX  0  AWORK4(2) 
C^=G          REPEAT   UNTIL,0,ZE          [REPEAT TILL ALL SHOWS CLEARED   
C^Q6    [   
D29Q    [ IF THE CURRENT TIME/DATE NEEDS UPDATING THEN WE DO THAT NOW   
D2PB    [   
D392          WHILE    BS,,GNUTIME  
D3NL          DO
D48=             DO 
D4MW                CALL  3  SGETOPER   
D57G                LDX   3  CPPTR(2)   
D5M6                BC       ,GNUTIME   
D66Q                LDN   4  FTIME  
D6LB                LDN   5  FCOUTBUF   
D762                MVCH  4  SIZETIME            [PUT TIME IN MESSAGE   
D7KL                LDN   4  ACES   
D85=                MVCH  4  4                   [THEN 4 SPACES 
D8JW                LDN   4  FDATE  
D94G                MVCH  4  SIZEDATE            [THEN DATE 
D9J6                LDN   0  WRITEMODE+UNLOCK+TFIELD
D=3Q                DCA      3,DLA,0,MODE   
D=HB                LDN   0  FCOUTBUF   
D?32                DCA      3,STO,0,CTSA   
D?GL                LDN   0  SIZETIME+SIZEDATE+4
D#2=                DCA      3,DLA,0,COUNT  
D#FW                LDN   0  WIDTH-(SIZEDATE+SIZETIME+4) [START CHARACTER   
D#^G                DCA      3,STO,0,EXTRA  
D*F6                GPERI    3,2
D*YQ                COOR1   
DBDB                LDN   3  CPRW1(2)   
DBY2             REPEAT   UNTIL,MBAC,3,CONSFAIL,CONSINOP
DCCL          REPEAT
DCX=    [   
DDBW    [ WE NOW CHECK WHETHER THERE IS ANY OUTPUT TO GO TO THE OPER LOG. IF
DDWG    [ THERE IS, IT IS APPENDED TO THE ACTIVE PAGE IF POSSIBLE.  
DFB6    [ THIS MAY CAUSE AN "OUTPUT WAITING" MESSAGE OR THE OLD ACTIVE  
DFTQ    [ PAGE TO BE WRITTEN AWAY AND A NEW ONE SET UP  
DG*B    [   
DGT2    [   
DH#L          CALL  3  SGETOPER 
DHS=    [   
DJ?W    [   
DJRG          STOZ     AWORK3(2)           [AWORK3 SET NZERO IF AN APPEND FAILS 
DK?6          WHILE    TRUE                [WHILE INPUT TO ECHO 
DKQQ             LDX   3  CONSCNTRL 
DL=B          AND      +COECH(3),NZ 
DLQ2             CALL  4  SCINPBLOCK
DM9L             CALL  7  SAPPENDMSG
DMP=             LDX   2  FX2   
DN8W             STO   0  AWORK3(2) 
DNNG          AND      0,ZE                [AND APPENDED TO ACTIVE OK DO
DP86          DO
DPMQ             CALL  4  SCINPBLOCK
DQ7B             FREECORE 3                   [FREE MSG BLOCK   
DQM2             LDX   3  CONSCNTRL 
DR6L             LDN   0  1 
DRL=             SBS   0  COECH(3)            [DECREMENT ECHO COUNT 
DS5W          REPEAT                       [REPEAT  
DSKG    [   
DT56    [   
DTJQ          LDX   3  CONSCNTRL
DW4B          IF       +COECH(3),ZE        [IF ALL INPUT APPENDED OK
DWJ2             LDN   3  BCONSOUT  
DX3L          AND      3,U,0(3)            [AND BLOCKS ON CHAIN THEN
DXH=          THEN  
DY2W             WHILE    TRUE  
DYGG                CALL  5  SLOGBLOCK  
D^26             AND      0,NZ                [WHILE FIND A LOG BLOCK   
D^FQ                CALL  7  SAPPENDMSG 
D^^B                LDX   2  FX2
F2F2                STO   0  AWORK3(2)  
F2YL             AND      0,ZE                [AND APPENDED OK DO   
F3D=             DO 
F3XW                CALL  5  SLOGBLOCK           [IF NOT /FORCE THEN
F4CG                IF       +ATYPE(3),U,TYPEFORCE(1)   
F4X6                THEN
F5BQ                   LDX   4  ALOGLEN(3)  
F5WB                   ADN   4  7                   [FOR HEADERS, TIME, ETC 
F6B2                   OUTBLOCK 4   
F6TL                                                [NOT USING OUTPAR TIMENOW ..
F7*=                                                [(THIS MAY NOT WORK IN EMS) 
F7SW                   OUTPACK  CLEANCT,1,TIMETHEN  [PUT TIME IN PARAMS 
F8#G                   CALL  5  SLOGBLOCK           [REFIND BLOCK   
F8S6                   LDX   0  ATYPE(3)
F9?Q                   ANDX  0  HALFTOP 
F9RB                   IF       0,E,TYPECOUT(1)     [IF /COUT THEN  
F=?2                   THEN 
F=QL                      LDN   4  ATEXT(3)            [GET START AND LENGTH
F?==                      LDX   5  AREC(3)  
F?PW                      SBN   5  1
F#9G                   ELSE                         [ELSE (/IREMTW) 
F#P6                      LDN   4  ICBUFF(3)           [GET START AND LENGTH
F*8Q                      LDX   5  A1(3)
F*NB                      ANDN  5  #7777
FB82                   FI                           [FI BLOCK TYPE  
FBML                                             [  
FC7=                                             [X4 -> START OF MESSAGE TEXT   
FCLW                                             [X5 = LENGTH IN WORDS  
FD6G                                             [  
FDL6                   IFR      5,ZE                [IF ZERO-LENGTH MSG 
FF5Q                      LDX   3  5
FFKB                      LDX   2  4
FG52                      WHILE    +0(2),E,ACES        [SEE IF ALL SPACES   
FGJL                      DO
FH4=                         ADN   2  1 
FHHW                      REPEAT   CT 3 
FJ3G                   OR       3,ZE                [OR MSG IS ALL SPACES THEN  
FJH6                   THEN 
FK2Q                      OUTNULL                      [%B IS NULL  
FKGB                   ELSE                         [ELSE   
FL22                      LDX   6  VARCHAR(1)   
FLFL                      OUTPACKX 4,5,6               [PUT MESSAGE IN PARAMS   
FL^=                   FI                           [FI NULL MESSAGE
FMDW ...               MONOUT   JLCONSOUT,,,IGOPTRACE  [SEND MSG TO JOURNAL 
FMYG                   CALL  5  SLOGBLOCK           [FIND THE BLOCK AGAIN   
FND6                FI                           [FI REAL MESSAGE (NOT FORCE)   
FNXQ                FREECORE 3                   [FREE IT   
FPCB             REPEAT                       [REPEAT OVER LENGTH OF CHAIN  
FPX2          FI                           [FI APPENDING OUTPUT MSGS
FQBL    [   
FQW=    [ FINALLY AN ATTEMPT IS MADE TO WRITE ANY UNWRITTEN AREAS OF
FR*W    [ THE ACTIVE PAGE TO THE LOG AREA OF THE INTERACTIVE SCREEN.
FRTG    [   
FS*6          LDX   1  FX1  
FSSQ          LDX   2  FX2  
FT#B          LDX   3  IPAGEWAIT
FTS2          MPY   3  TICKSPERSEC(1)      [X4 = IP PAGEWAIT IN CLEANCTS
FW?L          LDX   3  CONSCNTRL
FWR=          ADN   3  CODAT               [X3 -> TIME WAIT STARTED 
FX=W          CALL  5  SELAPSED 
FXQG          LDX   6  0                   [X6 = LOGGING ALLOWED(0) OR NOT(NZ)  
FY=6          IF       6,NZ                [IF NOT ALLOWED TO LOG (IP PAGEWAIT) 
FYPQ          AND      +AWORK1(2),NZ
F^9B             CALL  1  SHUNTACTIVE   
F^P2          AND      +ACLEN(2),NZ        [BUT WANT TO THEN
G28L          THEN  
G2N=             LDX   3  CONSCNTRL 
G37W             IF       BCS,3,COUTWAITS   
G3MG             THEN   
G476                LDN   3  MSGOUTWAIT 
G4LQ                CALL  4  SYSWRITE            [ENSURE RESPONSE SAYS SO   
G56B             FI 
G5L2          ELSE                         [ELSE (LOGGING PERMITTED)
G65L             IFR      6,ZE                [IF ALLOWED TO LOG
G6K=                LDX   2  FX2
G74W             OR       +AWORK1(2),ZE       [THEN 
G7JG             THEN   
G846                CALL  7  SLOGAGAIN           [ENSURE SCREEN LOGGING 
G8HQ                                             [ALL LOGGING WILL HAVE 
G93B                                             [BEEN DONE IF A SHOW WAS RESET 
G9H2             FI                           [FI   
G=2L             CALL  1  SHUNTACTIVE   
G=G=             LDX   0  ACLEN(2)  
G=^W             IF       0,NZ                [IF DATA TO LOG THEN  
G?FG             THEN   
G?^6                IFR      +ACOUT(2),E,ACLOG(2) [IF FIRST WRITE OF PAGE   
G#DQ                   LDX   3  CONSCNTRL   
G#YB                OR       BS,3,COVERWRITE     [OR SCREEN NEEDS RESETTING THEN
G*D2                THEN
G*XL                   CALL  6  SRESET              [RESET WHOLE LOG AREA   
GBC=                   LDN   0  1   
GBWW                   STO   0  AWORK1(2)           [PAGEWAIT ON FURTHER PAGES  
GCBG                ELSE                         [ELSE (APPEND) 
GCW6                   LOCKC    2,SHUNTACTIVE   
GD*Q                   DO   
GDTB                      CALL  3  SGETOPER 
GF*2                      LDX   3  CPPTR(2) 
GFSL                      MHUNTW   1,CONBUFF,ACTIVE 
GG#=                      LDN   0  WRITEMODE+UNLOCK 
GGRW                      DCA      3,DLA,0,MODE 
GH?G                      LDX   0  ACLEN(1) 
GHR6                      SBN   0  4                   [DON'T SEND FINAL NEWLINE
GJ=Q                      DCA      3,DLA,0,COUNT
GJQB                      LDX   0  ACOUT(1) 
GK=2                      ADN   0  FPTR(1)  
GKPL                      DCA      3,STO,0,CTSA 
GL9=                                                   [SCREEN START LINE = 
GLNW                      LDN   0  1 + HEIGHTPAGE      [NO OF 1ST LINE+LINES/PAG
GM8G                      SBX   0  ACLFT(1)            [- LINES ALREADY ... 
GMN6                      SBX   0  ACLNS(1)            [ ... ON SCREEN) 
GN7Q                      SRC   0  6
GNMB                      DCA      3,STO,0,EXTRA
GP72                      GPERI    3,2                 [APPEND THE LOG LINES
GPLL                      COOR1 
GQ6=                      LDN   3  CPRW1(2) 
GQKW                   REPEAT   UNTIL,MBAC,3,CONSINOP,CONSFAIL  
GR5G                   CALL  1  SHUNTACTIVE 
GRK6                   LDX   0  ACLEN(2)
GS4Q                   SRL   0  2   
GSJB                   ADS   0  ACOUT(2)            [UPDATE 'UNWRITTEN LINES' PO
GT42                   STOZ     ACLEN(2)            [AND LENGTH 
GTHL                   STOZ     ACLNS(2)            [AND LINES TO WRITE 
GW3=                   UNLOCK   2                   [FINALLY UNLOCK IT  
GWGW                FI                           [FI FIRST / SUBSEQUENT WRITE   
GX2G             FI                           [FI DATA TO LOG   
GXG6             LDX   2  FX2   
GXJP ...         IF       +AWORK3(2),NZ          [IF PAGE FULL  
GXM# ...            LDX   3  CONSCNTRL  
GXPX ...         AND      BS,3,COVERWRITE   
GXSG ...         THEN   
GXX5 ...            IF       BC,3,COPAGEWAIT
GX^N ...               ADN   3  COVID+0 
GY4? ...            AND      BC,3,COSHOWING 
GY6W ...            THEN
GY9F ...               CALL  6  SRESET  
GY#4 ...            FI  
GYBM ...         ELSF     +AWORK3(2),NZ 
GYFB             THEN   
GY^2                LDX   3  CONSCNTRL           [ENSURE PAGEWAIT FLAGGED   
G^DL                IF       BCS,3,COPAGEWAIT    [IF NOT PAGEWAITING THEN   
G^Y=                THEN
H2CW                   LDX   0  EDATE   
H2XG                   STO   0  CODAT(3)
H3C6                   LDX   0  CLEANCT             [REMEMBER DATE AND TIME ... 
H3WQ                   STO   0  CODAT+1(3)          [THAT PAGEWAIT STARTED  
H4BB                FI                           [FI NOT PAGEWAITING
H4W2                IF       BC,3,COUTWAITS      [IF NO MSG ON SCREEN THEN  
H5*L                AND      +IPAGEWAIT,NZ  
H5T=                AND      +AWORK1(2),NZ  
H6#W                THEN
H6SG                   BS       3,COUTWAITS 
H7#6                   LDN   3  MSGOUTWAIT          [WRITE "O/P WAITING"
H7RQ                   CALL  4  SYSWRITE
H8?B                FI  
H8R2             FI                           [FI FULL PAGE 
H9=L          FI                           [FI ALLOWED TO LOG   
H9Q=       REPEAT   
H=9W    #PAGE   
H=PG    [   
H?96    [   
H?NQ    [   
H#8B    [                    WW   WW   WWWWW
H#N2    [                    WW  WW   WW   WW   
H*7L    [                    WW WW         WW   
H*M=    [                    WWWW          WW   
HB6W    [                    WWWW        WW 
HBLG    [                    WW WW     WW   
HC66    [                    WW  WW   WW
HCKQ    [                    WW   WW  WWWWWWW   
HD5B    [   
HDK2    [   
HF4L    OPERK2  
HFJ=    [   
HG3W    [   
HGHG       LDN   3  MSGRPT  
HH36       CALL  4  SYSWRITE
HHGQ       UP   
HJ2B    #PAGE   
HJG2    [   
HJ^L    [   
HKF=    [   
HKYW    [                    WW   WW   WWWWW
HLDG    [                    WW  WW   WW   WW   
HLY6    [                    WW WW         WW   
HMCQ    [                    WWWW       WWWW
HMXB    [                    WWWW          WW   
HNC2    [                    WW WW         WW   
HNWL    [                    WW  WW   WW   WW   
HPB=    [                    WW   WW   WWWWW
HPTW    [   
HQ*G    [   
HQT6    OPERK3  
HR#Q    [   
HRSB    [   
HS#2       MHUNTW   3,FILE,FRRB 
HSRL       NAME     3,CONBUFF,ACTIVE
HT?=       LDX   0  ACDAT(3)
HTQW       STO   0  AWORK2(2)   
HW=G       LDX   0  ACTIM(3)
HWQ6       STO   0  AWORK3(2)   
HX9Q       CALL  5  SAUTOHEAD   
HXPB       MHUNTW   3,CONBUFF,ACTIVE
HY92       NAME     3,FILE,FRRB 
HYNL       UP   
H^8=    #END
^^^^ ...474625020005
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1