10 22FL #OPT K0OPERIN=0 15 22_= #LIS K0OPERIN > K0ALLGEO > K0GREATGEO 17 23DW #SEG OPERIN [COMM - STIG TOWNSEND 16 23NN ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982. 4 23YG [ 4 24D6 [ 8 24XQ 8HOPERIN 20 25CB SEGENTRY K1OPERIN,OPERINK1 [READ A LINE OF UNSOLICITED INPUT 18 25X2 SEGENTRY K2OPERIN,OPERINK2 [READ A LINE OF EMS REPLY 4 26BL [ 4 26W= [ 13 27*W [ AWORK1 USED BY SUBROUTINE SCANCEL 10 27TG [ AWORK2 USED BY K2ENTRY 17 28*6 [ AWORK3 USED TO STORE REPLY WORD TO THE READ WHILE 17 28SQ [ WE ARE WRITING A RESPONSE OF THE PREVIOUS 17 29#B [ LINES OF A MULTI-LINE INPUT(DURING SREAD) 16 29S2 [ OR A BLANK I-P AREA (DURING SRESPOND) 15 2=?L [ AWORK4 USED TO SAY WHAT KIND OF READ IT IS: 12 2=R= [ 0 => K1 - UNSOLICITED 11 2?=W [ 1 => K2 - SOLICITED 5 2?QG #PAGE 4 2#=6 [ 4 2#PQ [ 7 2*9B [ DEFINITIONS 4 2*P2 [ 18 2B8L #DEF STARTINAREA = 20 [1ST LINE OF INPUT AREA 12 2BN= [ 19 2C7W #DEF WIDTH = 40 [WIDTH OF OPER SCREEN (CHARS) 12 2CMG [ 17 2D76 #DEF READMODE = 2 [EXTENDED MODE READ 12 2DLQ [ 17 2F6B #DEF READLENGTH = 80 [LENGTH OF READ PERI 12 2FL2 [ 17 2G5L #DEF WRITEMODE = 3 [EXTENDED WRITE MODE 12 2GK= [ 21 2H4W #DEF UNLOCK = #200 [ADDITIONAL WRITE MODE - UNLOCK KEYS 12 2HJG [ 19 2J46 #DEF MSGCANCLEN = 44 [LENGTH (CHARS) OF MSGCANCEL 12 2JHQ [ 19 2K3B #DEF MSGCONTLEN = 44 [LENGTH (CHARS) OF MSGCONTN 12 2KH2 [ 20 2L2L #DEF MSGOUTLEN = 16 [LENGTH (CHARS) OF MSGOUTWAITS 12 2LG= [ 15 2L_W #DEF WAITPOSN = 23 @L 18 + (WIDTH-MSGOUTLEN) 20 2MFG [START POSITION OF MSGOUTWAITS 21 2M_6 [ON THE OPER SCREEN (SEE SYSWRITE) 12 2NDQ [ 14 2NYB #DEF TRANSCHARS = READLENGTH/4 + FCINBUF 20 2PD2 [SPARE WORD IN INPUT BUFFER USED 20 2PXL [TO STORE LENGTH OF AN INPUT LINE 12 2QC= [ 19 2QWW #DEF TOTSIZE = TRANSCHARS + 1 [FOLLOWING WORD HOLDS SIZE OF 20 2RBG [CORRESPONDING RECORD IN CURRENT 16 2RW6 [MESSAGE BLOCK 12 2S*Q [ 4 2STB [ 4 2T*2 [ 7 2TSL [ PRESET DATA 4 2W#= [ 12 2X?G [ 5 2XR6 NEWLINES 10 2Y=Q MSGCANCEL 44H_*_*CANCEL 12 2YQB [ 13 2_=2 MSGCONTINUE 44H_*_*PLEASE CONTINUE 12 2_PL [ 18 329= MSGOUTWAIT +MSGOUTLEN [MESSAGE LENGTH (CHARS) 18 32NW +WAITPOSN [START POSITION ON SCREEN 13 338G 16HOUTPUT WAITING [TEXT 12 33N6 [ 12 347Q [ 12 34MB [ 20 35*R ...PLINK LINK COMPROA,1 [LINK TO COMMAND PROCESSOR FOR 20 35LL [CPATS SET UP TO PROCESS OUR I/P 12 366= [ 12 36KW [ 12 375G [ 15 37K6 VARCHAR +JPDVARCHAR [MESSAGE PDC 12 384Q [ 12 38JB [ 12 3942 [ 17 39HL MINUS 4H- [FOR CONTINUED INPUT 5 3=3= #PAGE 4 3=GW [ 4 3?2G [ 21 3?G6 [********************************************************************* 4 3?_Q [ 5 3#FB SGETOPER 4 3#_2 [ 21 3*DL [********************************************************************* 4 3*Y= [ 17 3BCW [ ENSURES THAT BSTS HAS NOT LEFT A MESSAGE IN FCOUTBUF 19 3BXG [ THAT HAS YET TO BE EXTRACTED. IT ENSURES THAT WE CAN OVERWRITE 14 3CC6 [ THE CONTROL AREA OF THE OPER DEVICE LIST 4 3CWQ [ 6 3DBB [ LINK X4 4 3DW2 [ 12 3F*L [ ON EXIT, OK TO USE DEVICE LIST 18 3FT= [ ALL DETECTED BSTS MESSAGES HAVE BEEN EXTRACTED 9 3G#W [ X1,2 = FX'S 4 3GSG [ 7 3H#6 SBX 4 FX1 7 3HRQ LDX 1 FX1 7 3J?B LDX 2 FX2 14 3JR2 WHILE TRUE [START LOOP 16 3K=L WHILE BUSY,CPPTR(2) [WAIT TILL UNBUSY 5 3KQ= DO 9 3L9W COOR3 #50 6 3LPG REPEAT 9 3M96 SMO CONSCNTRL 8 3MNQ LDX 0 COBS 18 3N8B IF 0,NZ [EXTRACT MSG IF IS ONE 6 3NN2 THEN 10 3P7L DOWN OPERA,3 5 3PM= FI 18 3Q6W ANDR BUSY,CPPTR(2) [REPEAT IF BSTS WRITING NOW 9 3QLG SMO CONSCNTRL 8 3R66 LDX 0 COBS 19 3RKQ OR 0,NZ [OR ANOTHER MSG TO BE EXTRACTED 5 3S5B DO 6 3SK2 REPEAT 7 3T4L ADX 4 FX1 7 3TJ= EXIT 4 0 5 3W3W #PAGE 4 3WHG [ 4 3X36 [ 4 3XGQ [ 21 3Y2B [********************************************************************* 4 3YG2 [ 5 3Y_L SPERIA 4 3_F= [ 21 3_YW [********************************************************************* 4 42DG [ 15 42Y6 [ DO A PERI TO THE INPUT AREA AND RESPONSE LINE 4 43CQ [ 6 43XB [ LINK X4 14 44C2 [ ON ENTRY, X0 CONTAINS START ADDR OF BUFFER 14 44WL [ X1 CONTAINS COUNT IN CHARACTERS 9 45B= [ ON EXIT, X0 DESTROYED 8 45TW [ X1=FX1 8 46*G [ X2=FX2 9 46T6 [ X3->CPRW1(2) 4 47#Q [ 7 47SB SBX 4 FX1 7 48#2 LDX 2 FX2 8 48RL LDX 3 CPPTR(2) 16 49?= DCA 3,STO,0,CTSA [GIVEN START ADDRESS 18 49QW DCA 3,DLA,1,COUNT [GIVEN NUMBER OF CHARACTERS 10 4==G LDN 0 WRITEMODE+UNLOCK 16 4=Q6 DCA 3,DLA,0,MODE [EXTENDED WRITE MODE 10 4?9Q LDCT 0 STARTINAREA@L3 20 4?PB DCA 3,STO,0,EXTRA [STARTING AT BEGINNING OF INPUT AREA 7 4#92 GPERI 3,2 5 4#NL COOR1 8 4*8= LDN 3 CPRW1(2) 7 4*MW ADX 4 FX1 7 4B7G EXIT 4 0 5 4BM6 #PAGE 4 4C6Q [ 4 4CLB [ 4 4D62 [ 21 4DKL [********************************************************************* 4 4F5= [ 5 4FJW SRESPOND 4 4G4G [ 21 4GJ6 [********************************************************************* 4 4H3Q [ 15 4HHB [ BLANK THE INPUT AREA, PRESERVING INPUT REPLY 4 4J32 [ 6 4JGL [ LINK X6 4 4K2= [ 9 4KFW [ ON EXIT, X1,2 = FX'S 4 4K_G [ 7 4LF6 SBX 6 FX1 7 4LYQ LDX 2 FX2 18 4MDB LDX 0 CPRW1(2) [PRESERVE INPUT REPLY WORD 9 4MY2 STO 0 AWORK3(2) 5 4NCL DO 9 4NX= CALL 4 SGETOPER 19 4PBW LDX 0 NEWLINES(1) [PREPARE TO BLANK INPUT AREA 19 4PWG STO 0 FCOUTBUF [3 NEWLINES FROM FCOUTBUF-1 8 4QB6 LDX 0 ACES 9 4QTQ LDN 3 WIDTH/4 18 4R*B DO [BLANK THE RESPONSE LINE 11 4RT2 STO 0 FCOUTBUF(3) 8 4S#L REPEAT CT 3 9 4SS= LDX 3 CONSCNTRL 19 4T?W IF BS,3,COUTWAITS [IF ^OUTPUT WAITING^ TO KEEP 13 4TRG THEN [THEN 16 4W?6 LDN 5 (WIDTH-MSGOUTLEN)/4 + FCOUTBUF + 1 11 4WQQ LDN 4 MSGOUTWAIT+2(1) 16 4X=B MOVE 4 MSGOUTLEN/4 [ADD IT ON RIGHT 17 4XQ2 FI [FI ^OUTPUT WAITING^ 9 4Y9L LDN 1 WIDTH+8 10 4YP= LDN 0 FCOUTBUF-1 15 4_8W CALL 4 SPERIA [DO THE PERI 14 4_NG REPEAT UNTIL,MBAC,3,CONSINOP,CONSFAIL 9 5286 LDX 0 AWORK3(2) 16 52MQ STO 0 CPRW1(2) [RESTORE INPUT REPLY 7 537B ADX 6 FX1 7 53M2 EXIT 6 0 5 546L #PAGE 4 54L= [ 4 555W [ 4 55KG [ 21 5656 [********************************************************************* 4 56JQ [ 5 574B SCANCEL 4 57J2 [ 21 583L [********************************************************************* 4 58H= [ 20 592W [ BLANK THE INPUT AREA, OUTPUT ^CANCEL^, SET UP A CANCEL REPLY WORD 15 59GG [ AND STOZ THE 'PREVIOUS LINES IN MESSAGE' COUNT 4 5=26 [ 9 5=FQ [ LINK X5 - USES AWORK4 13 5=_B [ X3,4 CORRUPTED, X1 AND X2 SET TO FX'S 4 5?F2 [ 7 5?YL SBX 5 FX1 7 5#D= LDX 1 FX1 7 5#XW LDX 2 FX2 8 5*CG LDX 4 CPRW1(2) 11 5*X6 MBSXD 0,CONSFWD,CONSREV 21 5BBQ ANDX 4 0 [X4 HOLDS PAGE KEY BITS FROM LAST READ 9 5BWB STO 4 AWORK1(2) 5 5CB2 DO 9 5CTL CALL 4 SGETOPER 10 5D*= LDN 2 MSGCANCEL(1) 9 5DSW LDN 3 FCOUTBUF 19 5F#G MOVE 2 MSGCANCLEN/4 [HAVE 3 NEWLINES AND CANCEL 19 5FS6 LDX 3 CONSCNTRL [1ST NEWLINE IN FCOUTBUF-1 17 5G?Q IF BS,3,COUTWAITS [POSSIBLY FOLLOWED BY 16 5GRB THEN [^OUTPUT WAITING^ 12 5H?2 LDN 2 MSGOUTWAIT+2(1) 17 5HQL LDN 3 FCOUTBUF + (WIDTH-MSGOUTLEN / 4) + 1 11 5J== MOVE 2 MSGOUTLEN/4 13 5JPW FI [FI 16 5K9G LDN 0 FCOUTBUF-1 [FROM FCOUTBUF-1 9 5KP6 LDN 1 WIDTH+8 9 5L8Q CALL 4 SPERIA 14 5LNB REPEAT UNTIL,MBAC,3,CONSINOP,CONSFAIL 7 5M82 STOZ 0(3) 16 5MML BS 3,CONSCANCEL [SET UP CANCEL REPLY 9 5N7= LDX 4 AWORK1(2) 18 5NLW ORS 4 0(3) [INCLUDING CORRECT PAGE KEYS 9 5P6G SMO CONSCNTRL 18 5PL6 STOZ COIN [STOZ 'PREVIOUS LINES' COUNT 8 5Q5Q VFREEW FILE,FRB 7 5QKB ADX 5 FX1 7 5R52 EXIT 5 0 5 5RJL #PAGE 4 5S4= [ 4 5SHW [ 4 5T3G [ 21 5TH6 [********************************************************************* 4 5W2Q [ 6 5WGB SHUNTCREADL 4 5X22 [ 21 5XFL [********************************************************************* 4 5X_= [ 13 5YDW [ SUBSIDIARY HUNT ROUTINE FOR 'LOCKC' 4 5YYG [ 10 5_D6 MHUNTW 2,ADATA,CREADL 7 5_XQ EXIT 1 0 4 62CB [ 4 62X2 [ 4 63BL [ 21 63W= [********************************************************************* 4 64*W [ 5 64TG SHUNTFRB 4 65*6 [ 21 65SQ [********************************************************************* 4 66#B [ 9 66S2 [ POINT X3 AT FILE FRB 4 67?L [ 6 67R= [ LINK X6 4 68=W [ 9 68QG MHUNTW 3,FILE,FRB 7 69=6 EXIT 6 0 5 69PQ #PAGE 4 6=9B [ 4 6=P2 [ 4 6?8L [ 21 6?N= [********************************************************************* 4 6#7W [ 5 6#MG SREAD 4 6*76 [ 21 6*LQ [********************************************************************* 4 6B6B [ 18 6BL2 [ ISSUES A READ. DEALS WITH FAILED TRANSFERS AND PAGE KEYS. 12 6C5L [ CONTINUATION IS ALSO DEALT WITH. 18 6CK= [ WE ASSUME THAT WORD COIN OF THE CONBUFF/CNTRL BLOCK HOLDS 18 6D4W [ A NUMBER IN THE RANGE 0-2 INCLUSIVE (PRIOR INPUT LINES OF 7 6DJG [ THIS MESSAGE). 4 6F46 [ 6 6FHQ [ LINK X7 8 6G3B [ ON ENTRY X2=FX2 4 6GH2 [ 11 6H2L [ ON EXIT KEYBOARD IS UNLOCKED 17 6HG= [ REPLY WORD IS FOR THE READ, NOT ITS RESPONSE 4 6H_W [ 7 6JFG SBX 7 FX1 18 6J_6 IF +AWORK4(2),ZE [IF UNSOLICITED INPUT THEN 5 6KDQ THEN 18 6KYB OVER CONSW [ALLOW FURTHER INTERRUPTS 12 6LD2 FI [FI 8 6LXL CALL 4 SGETOPER 8 6MC= LDX 3 CPPTR(2) 8 6MWW LDN 0 READMODE 15 6NBG DCA 3,DLA,0,MODE [SET READ MODE 9 6NW6 LDN 0 READLENGTH 18 6P*Q DCA 3,DLA,0,COUNT [SET MAX PERMISSIBLE LENGTH 8 6PTB LDN 4 FCINBUF 16 6Q*2 DCA 3,STO,4,CTSA [SET START ADDRESS 15 6QSL GPERI 3,2 [ISSUE READ PERI 5 6R#= COOR1 16 6RRW LDN 3 CPRW1(2) [X3 -> REPLY WORD 20 6S?G IF MBS,3,CONSFAIL,CONSINOP [IF TRANSFER FAIL OR INOPERABLE 13 6SR6 THEN [THEN 9 6T=Q LDX 4 CPRW1(2) 17 6TQB DOWN OPER,2 [ASK FOR REPEAT INPUT 9 6W=2 STO 4 CPRW1(2) 18 6WPL ELSF +AWORK4(2),ZE [ELSF UNSOLICITED READ OK 15 6X9= AND BS,,EMSBIT [DURING EMS THEN 5 6XNW THEN 18 6Y8G IF MBAC,3,CONSFWD,CONSREV,CONSCONTN [IF NO KEYS 11 6YN6 LF 3,CONSREMCT,0 10 6_7Q SBN 0 READLENGTH 17 6_MB AND 0,ZE [AND NO CHARS THEN 6 7272 THEN 10 72LL CALL 6 SRESPOND 15 736= DOWN SHOWCOMM,3 [FREE LOG 13 73KW ELSE [ELSE 21 745G CALL 5 SCANCEL [CANCEL - WE MUST UNLOCK KEYBOARD 5 74K6 FI 18 754Q ELSE [ELSE (COMMAND OR REPLY OK) 10 75JB LDN 1 READLENGTH 10 7642 LF 3,CONSREMCT,0 7 76HL SBX 1 0 18 773= STO 1 TRANSCHARS [REMEMBER TRANSFER COUNT 17 77GW IF 1,NZ [IF DATA CHARS THEN 6 782G THEN 10 78G6 LDN 4 2*4 + 3(1) 21 78_Q SRL 4 2 [LENGTH OF 2 HEADER WORDS + DATA 10 79FB STO 4 TOTSIZE 10 79_2 SMO CONSCNTRL 9 7=DL LDX 0 COIN 20 7=Y= IF 0,ZE [IF 1ST LINE OF INPUT MSG THEN 7 7?CW THEN 21 7?XG ADN 4 1 [ALLOW FOR EXTRA WORD AT END 18 7#C6 SETUPCOR 4,3,FILE,FRB [SET UP MSG BLOCK 7 7#WQ [ 14 7*BB [ THE FORMAT OF THE BLOCK IS: 16 7*W2 [ A1 - INCLUSIVE WORDCOUNT OF CELL 15 7B*L [ A1+1 - CHARACTER COUNT OF LINE 10 7BT= [ A1+2.. DATA 7 7C#W [ 18 7CSG [ FROM 0 TO THREE INCLUSIVE OF THESE CELLS MAY 18 7D#6 [ BE CONTAINED IN THE BLOCK. THE LAST CELL IS 13 7DRQ [ FOLLOWED BY A ZERO WORD 7 7F?B [ 17 7FR2 STOZ A1(3) [MARK IT EMPTY 19 7G=L ELSE [ELSE (CONTINUATION LINE) 11 7GQ= CALL 6 SHUNTFRB 20 7H9W ADX 4 ALOGLEN(3) [EXTEND BLOCK FOR NEW LINE 12 7HPG ALTLEN 3,4,FILE,FRB 11 7J96 CALL 6 SHUNTFRB 17 7JNQ FI [FI 1ST/CONTN LINE 17 7K8B ADN 3 A1 [X3 -> 1ST RECORD 19 7KN2 WHILE +0(3),NZ [FIND CURRENT END OF BLOCK 6 7L7L DO 10 7LM= ADX 3 0(3) 19 7M6W REPEAT [X3 -> 1ST EMPTY RECORD 10 7MLG LDX 0 TOTSIZE 18 7N66 STO 0 0(3) [SET UP RECORD HEADER 10 7NKQ LDX 1 TRANSCHARS 17 7P5B STO 1 1(3) [LENGTH OF DATA 9 7PK2 IF 1,NZ 7 7Q4L THEN 10 7QJ= LDN 4 FCINBUF 10 7R3W LDN 5 2(3) 17 7RHG MVCH 4 0(1) [DATA ITSELF 6 7S36 FI 19 7SGQ ADX 3 TOTSIZE [POINT AT NEXT FREE RECORD 15 7T2B STOZ 0(3) [STOZ IT 10 7TG2 LDN 3 CPRW1(2) 16 7T_L FI [FI DATA CHARS 18 7WF= IF BS,3,CONSCONTN [IF MSG IS CONTINUED THEN 6 7WYW THEN 10 7XDG SMO CONSCNTRL 9 7XY6 LDX 0 COIN 8 7YCQ SBN 0 2 18 7YXB IF EITHER,0,ZE [IF THIS IS THIRD LINE 19 7_C2 OR +TRANSCHARS,ZE [OR CONTAINS NO DATA THEN 7 7_WL THEN 10 82B= CALL 5 SCANCEL 19 82TW ELSE [ELSE (WANT MORE INPUT) 20 83*G LDX 0 CPRW1(2) [PRESERVE REPLY TO INPUT 11 83T6 STO 0 AWORK3(2) 11 84#Q CALL 6 SHUNTFRB 11 84SB LDX 4 ALOGLEN(3) 18 85#2 ADN 4 WIDTH/4 [FOR RESPONSE LINE 21 85RL SETUPCOR 4,2,ADATA,CREADL [X2 -> START OF BUFFER BLOCK 17 86?= CALL 6 SHUNTFRB [X3 -> RAW DATA 19 86QW LDN 5 A1(2) [X5 -> START OF BUFFER 11 87=G SMO CONSCNTRL 20 87Q6 LDX 0 COIN [0 OR 1 - 2 TRAPPED ABOVE 20 889Q IF 0,NZ [IF THIS IS 2ND LINE THEN 7 88PB THEN 21 8992 LDN 4 A1+2(3) [X4 -> 1ST RECORD IN INPUT 20 89NL SMO A1+1(3) [1ST LINE GOES TO ... 20 8=8= MVCH 4 0 [1ST OF INPUT AREA ... 11 8=MW LDN 4 MINUS(1) 10 8?7G MVCH 4 1 19 8?M6 ADX 3 A1(3) [(ELSE IT IS BLANK) 17 8#6Q FI [FI 2ND LINE 18 8#LB LDN 4 NEWLINES(1) [PUT NEWLINE AT ... 20 8*62 MVCH 4 2 [END OF 1ST INPUT AREA LINE 19 8*KL LDN 4 A1+2(3) [X4 -> NEXT INPUT LINE 10 8B5= SMO A1+1(3) 21 8BJW MVCH 4 0 [PUT IT ON 2ND INPUT AREA LINE 11 8C4G LDN 4 MINUS(1) 9 8CJ6 MVCH 4 1 12 8D3Q LDN 4 MSGCONTINUE(1) 19 8DHB MVCH 4 MSGCONTLEN [AND ^PLEASE CONTINUE^ 11 8F32 LDX 3 CONSCNTRL 21 8FGL IF BS,3,COUTWAITS [IF ^OUTPUT WAITING^ TO PRESERV 7 8G2= THEN 21 8GFW SBN 5 MSGOUTLEN/4 [OVERWRITE END OF LINE WITH 13 8G_G LDN 4 MSGOUTWAIT+2(1) 19 8HF6 MVCH 4 MSGOUTLEN [^OUTPUT WAITING^ 14 8HYQ FI [FI 10 8JDB SBN 5 A1(2) 21 8JY2 SLC 5 2 [X5 = BUFFER LENGTH IN CHARS 18 8KCL LOCKC 2,SHUNTCREADL [LOCK BUFFER BLOCK 7 8KX= DO 11 8LBW CALL 4 SGETOPER 16 8LWG CALL 1 SHUNTCREADL [FIND IT 11 8MB6 LDN 0 A1(2) 10 8MTQ LDX 1 5 20 8N*B CALL 4 SPERIA [WRITE NEW INPUT AREA 16 8NT2 REPEAT UNTIL,MBAC,3,CONSINOP,CONSFAIL 11 8P#L CALL 1 SHUNTCREADL 9 8PS= FREECORE 2 11 8Q?W LDX 0 AWORK3(2) 20 8QRG STO 0 CPRW1(2) [RESTORE INPUT REPLY WORD 9 8R?6 LDN 0 1 11 8RQQ SMO CONSCNTRL 21 8S=B ADS 0 COIN [RAISE COUNT OF LINES IN MSG 14 8SQ2 FI [FI 18 8T9L ELSE [ELSE (LAST LINE OF MSG) 17 8TP= IF +TRANSCHARS,ZE [IF NO DATA CHARS 7 8W8W THEN 7 8WNG [ 20 8X86 [ TO GET HERE, WE MUST HAVE RECEIVED A ZERO LENGTH INPUT 20 8XMQ [ AS A COMMAND DURING NORMAL RUNNING OR IN RESPONSE TO A 20 8Y7B [ QUESTION DURING EMS. IT WAS THE LAST (OR ONLY) LINE OF 19 8YM2 [ THE INPUT MESSAGE (I.E. 'CONTINUED' NOT SET IN REPLY 16 8_6L [ WORD). PAGE KEY BITS MAY BE SET THOUGH. 6 8_L= [ 18 925W [ N.B. WE ASSUME THAT IF PAGE KEY BITS ARE SET THEN 19 92KG [ PAGE KEY(S) ONLY WERE USED, I.E. 'ENTER' WASN'T, 19 9356 [ AND THEREFORE THAT THE KEYBOARD IS NOT LOCKED. 6 93JQ [ 17 944B [ WE MUST COPE WITH ONE OF THREE CASES THEN: 6 94J2 [ 19 953L [ 1. PAGE KEY BIT(S) SET - IN NORMAL RUNNING THERE IS 18 95H= [ NOTHING TO DO WITH RESPECT TO THE MESSAGE AS A 18 962W [ WHOLE - PAGE KEYS ARE DEALT WITH AT THE END OF 19 96GG [ THIS SEGMENT. FOR AN EMS REPLY WE SET 'CONTINUED' 19 9726 [ IN THE INPUT REPLY WORD TO ENSURE THAT THE READ 17 97FQ [ JUST SATISFIED BY A PAGE KEY IS REISSUED 6 97_B [ 19 98F2 [ 2. THE 2ND OR 3RD LINE OF A MESSAGE - NO PAGE KEYS 16 98YL [ HAVE BEEN USED, SO THIS MEANS CANCEL 6 99D= [ 19 99XW [ 3. THE ONLY LINE OF A MESSAGE, I.E. 'ENTER' ON ITS 18 9=CG [ OWN - THIS IS CONTINUE LOGGING (SH @0,0). WE 18 9=X6 [ MUST UNLOCK THE KEYBOARD AND CHAIN THE CORRECT 19 9?BQ [ SHOW BLOCK. IF THIS CAME AS THE ANSWER TO AN EMS 18 9?WB [ QUESTION THEN WE SET 'CONTINUED' IN THE INPUT 19 9#B2 [ REPLY WORD TO ENSURE THAT THE READ JUST SATISFIED 14 9#TL [ BY THE NULL INPUT IS REISSUED 6 9**= [ 11 9*SW LDN 3 CPRW1(2) 18 9B#G IF MBS,3,CONSREV,CONSFWD [IF PAGE KEY THEN 7 9BS6 THEN 17 9C?Q IF BS,,EMSBIT [IF EMS THEN 8 9CRB THEN 19 9D?2 BS 3,CONSCONTN [SET 'CONTINUED' 16 9DQL FI [FI EMS 10 9F== ELSF TRUE 12 9FPW LDX 3 CONSCNTRL 19 9G9G AND +COIN(3),NZ [ELSF 2ND OR 3RD LINE 15 9GP6 THEN [THEN 19 9H8Q CALL 5 SCANCEL [CANCEL THE INPUT 17 9HNB ELSE [ELSE (SH @0,0) 11 9J82 CALL 6 SRESPOND 19 9JML DOWN SHOWCOMM,3 [RESPOND AND CHAIN 19 9K7= IF BS,,EMSBIT [IF EMS REPLY THEN 8 9KLW THEN 12 9L6G LDN 3 CPRW1(2) 19 9LL6 BS 3,CONSCONTN [SET 'CONTINUED' 16 9M5Q FI [FI EMS 19 9MKB FI [FI TYPE OF NULL INPUT 17 9N52 ELSE [ELSE (DATA CHARS) 11 9NJL CALL 6 SRESPOND 4 9P4= [ 11 9PHW [ CONDENSE MESSAGE IN FILE/FRB 4 9Q3G [ 20 9QH6 CALL 6 SHUNTFRB [X3 -> MESSAGE BLOCK FPTR 20 9R2Q LDX 1 3 [X1 -> A1 BEFORE NEXT CELL 7 9RGB [ 19 9S22 [WE ASSUME CPDATA <= A1+2 - IF NOT, WILL TRY TO MVCH 21 9SFL [MESSAGE TEXT OVER THE TOP OF ITSELF - HENCE THE TEST BELOW 7 9S_= [ 10 9TDW #SKI A1+2 < CPDATA - CPDATA 12 9TYG !! TRYING TO DO A FORWARD MVCH !! 7 9WD6 [ 18 9WXQ LDN 5 CPDATA(3) [X5 -> OUTPUT AREA 19 9XCB LDN 6 0 [X6 = CHARACTER COUNT 20 9XX2 WHILE +A1(1),NZ [CONDENSE THE MESSAGE LINES 7 9YBL DO 11 9YW= LDX 0 A1(1) 11 9_*W ADX 6 A1+1(1) 11 9_TG LDN 4 A1+2(1) 11 =2*6 SMO A1+1(1) 10 =2SQ MVCH 4 0 10 =3#B ADX 1 0 8 =3S2 REPEAT 10 =4?L LDN 4 ACES 21 =4R= MVCH 4 4 [ENSURE MESSAGE ENDS WITH SPACE 19 =5=W STO 6 A1(3) [INSERT CHARACTER COUNT 20 =5QG CHANGALL [MAKE IT A GRAPHIC MESSAGE 18 =6=6 [A1 NOW WORD COUNT 4 =6PQ [ 11 =79B SMO CONSCNTRL 21 =7P2 STOZ COIN [ZEROISE LINECOUNT OF CURRENT M 4 =88L [ 19 =8N= CALL 6 SHUNTFRB [X3 -> MESSAGE BLOCK 11 =97W LDX 4 ALOGLEN(3) 9 =9MG ADN 4 5 21 ==76 OUTBLOCK 4 [SET UP JOURNAL PARAM BLOCK ... 21 ==LQ SBN 4 5 [WITH SPACE FOR TIME AND HEADER 18 =?6B SETUPCOR 4,1,CONBUFF,CINP [SET UP ECHO BLOCK 19 =?L2 CALL 6 SHUNTFRB [X3 -> MESSAGE BLOCK 10 =#5L LDN 4 A1(3) 10 =#K= LDN 5 A1(1) 11 =*4W SMO ALOGLEN(3) 20 =*JG MOVE 4 0 [COPY MESSAGE TO ECHO BLOCK 18 =B46 CONSOUT 1 [AND CHAIN FOR ECHO 9 =BHQ LDN 0 1 11 =C3B SMO CONSCNTRL 20 =CH2 ADS 0 COECH [UPDATING THE ECHO COUNT 4 =D2L [ 11 =DG= [ CAN'T USE OUTPAR TIMENOW SINCE 11 =D_W [ IT MAY NOT BE ACCURATE IN EMS 4 =FFG [ 18 =F_6 OUTPACK CLEANCT,1,TIMETHEN [PUT TIME AND ... 11 =GDQ CALL 6 SHUNTFRB 10 =GYB LDX 4 A1(3) 11 =HD2 SBN 4 CPDATA-A1 9 =HXL STO 3 6 18 =JC= IFR 4,ZE [IF NO TEXT INPUT 12 =JWW LDN 2 CPDATA(3) 19 =KBG LDX 3 4 [SEE IF ALL SPACES 12 =KW6 WHILE +0(2),E,ACES 8 =L*Q DO 10 =LTB ADN 2 1 10 =M*2 REPEAT CT 3 20 =MSL OR 3,ZE [OR INPUT ALL SPACES THEN 7 =N#= THEN 17 =NRW OUTNULL [%B IS NULL 15 =P?G ELSE [ELSE 10 =PR6 LDX 3 6 12 =Q=Q LDN 3 CPDATA(3) 20 =QQB OUTPACKX 3,4,VARCHAR(1) [DATA IN JOURNAL MESSAGE 18 =R=2 FI [FI NULL INPUT TEXT 18 =RPL ... MONOUT JLCONSIN,,,IGOPTRACE [WRITE TO JOURNAL 4 =S9= [ 17 =SNW IF BS,,EMSBIT [IF EMS THEN 7 =T8G THEN 11 =TN6 CALL 6 SHUNTFRB 20 =W7Q NAME 3,CONBUFF,EMSIN [TURN INTO CONBUFF/EMSIN 12 =WMB LDN 4 CPDATA(3) 11 =X72 LDN 5 A1+1(3) 11 =XLL LDX 1 A1(3) 21 =Y6= SBN 1 CPDATA-A1 [MAKE WORDCOUNT EXCLUSIVE 10 =YKW SLL 1 2 18 =_5G MVCH 4 0(1) [AND REFORMAT 21 =_K6 LDX 2 5 [LASTLY LOSE TRAILING SPACES 10 ?24Q WHILE TRUE 10 ?2JB SLC 2 2 10 ?342 SBN 2 1 10 ?3HL SRC 2 2 11 ?43= LDCH 0 0(2) 11 ?4GW SBN 0 #20 10 ?52G AND 0,ZE 8 ?5G6 DO 10 ?5_Q SBN 1 1 9 ?6FB REPEAT 21 ?6_2 STO 1 A1(3) [AND RESET CHARACTER COUNT 17 ?7DL ELSE [ELSE (NOT EMS) 21 ?7Y= GETACT CPAT [GET A CPAT FOR THE COMMAND 17 ?8CW LDX 2 BPTR(2) [X2 -> CPAT 21 ?8XG LDCT 0 #770 [OP'S CONSOLE SOURCE BITS 12 ?9C6 STO 0 JSOURCE1(2) 12 ?9WQ STOZ AWORK1(2) 12 ?=BB STOZ AWORK2(2) 21 ?=W2 LINKSET 2,PLINK(1) [SET LINK TO COMM. PROCESSOR 11 ??*L CALL 6 SHUNTFRB 20 ??T= CHAIN 3,2 [CHAIN BLOCK AFTER CPAT 17 ?##W LDX 2 BPTR(3) [X2 -> CPAT 18 ?#SG FPUT [FPUT THE CPAT 21 ?*#6 FI [FI ACTION ON END OF MESSAGE 17 ?*RQ FI [FI NO DATA / DATA 18 ?B?B FI [FI CONTINUED / LAST LINE 8 ?BR2 LDX 2 FX2 18 ?C=L IF BC,,EMSBIT [IF NORMAL RUNNING THEN 6 ?CQ= THEN 10 ?D9W LDN 3 CPRW1(2) 18 ?DPG IF BS,3,CONSREV [IF PAGE REV USED THEN 7 ?F96 THEN 19 ?FNQ DOWN SHOWCOMM,2 [SIMULATE A SHOW -1,1 14 ?G8B FI [FI 10 ?GN2 LDN 3 CPRW1(2) 18 ?H7L IF BS,3,CONSFWD [IF PAGE FWD USED THEN 7 ?HM= THEN 19 ?J6W DOWN SHOWCOMM,4 [SIMULATE A SHOW +1,1 14 ?JLG FI [FI 17 ?K66 FI [FI NORMAL RUNNING 17 ?KKQ FI [FI TRANSFER OK/FAILED 7 ?L5B ADX 7 FX1 7 ?LK2 EXIT 7 0 5 ?M4L #PAGE 4 ?MJ= [ 4 ?N3W [ 4 ?NHG [ 11 ?P36 [ WW WW W 11 ?PGQ [ WW WW WW 11 ?Q2B [ WW WW WWW 11 ?QG2 [ WWWW WW 11 ?Q_L [ WWWW WW 11 ?RF= [ WW WW WW 11 ?RYW [ WW WW WW 11 ?SDG [ WW WW WW 4 ?SY6 [ 4 ?TCQ [ 5 ?TXB OPERINK1 17 ?WC2 STOZ AWORK4(2) [UNSOLICITED INPUT 8 ?WWL CALL 7 SREAD 5 ?XB= UP 5 ?XTW #PAGE 4 ?Y*G [ 4 ?YT6 [ 4 ?_#Q [ 12 ?_SB [ WW WW WWWWW 13 #2#2 [ WW WW WW WW 13 #2RL [ WW WW WW 13 #3?= [ WWWW WW 12 #3QW [ WWWW WW 12 #4=G [ WW WW WW 11 #4Q6 [ WW WW WW 13 #59Q [ WW WW WWWWWWW 4 #5PB [ 4 #692 [ 5 #6NL OPERINK2 7 #78= LDN 0 1 16 #7MW STO 0 AWORK4(2) [SOLICITED INPUT 9 #87G LDX 0 CPPTR(2) 19 #8M6 STO 0 AWORK2(2) [PRESERVE CPPTR OF ACTIVITY 19 #96Q LDX 0 ACC3(2) [NEED ACC3 -> OPER DEV. LIST 18 #9LB STO 0 CPPTR(2) [SET UP PTR FOR 'SREAD' 4 #=62 [ 11 #=KL [ WAIT TILL ALL OUTPUT DONE 4 #?5= [ 17 #?JW WHILE EITHER,INUSE,CPPTR(2) [WHILE OPER BUSY 10 ##4G LDN 3 BCONSOUT 19 ##J6 OR EITHER,3,U,0(3) [OR CONSOLE CHAIN NOT EMPTY 9 #*3Q WHILE TRUE 6 #*HB DO 11 #B32 HUNTACT CONBUFF,2 11 #BGL LDX 0 ATYPE(2) 9 #C2= SRL 0 12 12 #CFW SBN 0 CONBUFF+ACTIVE 10 #C_G REPEAT UNTIL,0,ZE 10 #DF6 LDX 0 ACLEN(2) 20 #DYQ OR 0,NZ [OR UNWRITTEN ACTIVE PAGE DATA 5 #FDB DO 18 #FY2 COOR3 #53 [WAIT FOR ALL OUTPUT 14 #GCL REPEAT [REPEAT 8 #GX= LDX 2 FX2 8 #HBW CALL 7 SREAD 8 #HWG LDX 2 FX2 19 #JB6 LDX 0 AWORK2(2) [RESTORE CPPTR OF ACTIVITY 9 #JTQ STO 0 CPPTR(2) 5 #K*B UP 4 #KT2 #END 6 ____ ...735240060002