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