10 22FL ...#LIS K0EDITORA>K0ALLGEO>0 16 22_= ...#SEG EDITORA865 [DICK RUSBRIDGE 4 23DW # 13 23YG # GEORGE 3 AND 4 INTEGRAL EDITOR. 13 24D6 # ------------------------------- 4 24XQ # 7 25CB ... 8HEDITORA 20 25X2 # THIS IS THE FAMED INTEGRAL EDITOR; BEGAT SO ELOQUENTLY BY THE 21 26BL # REDOUBTABLE GEOFF NEWELL WITH A LITTLE HELP FROM HIS FRIENDS IN 20 26W= # UKSO; TEMPERED SO SWEETLY BY THE SEXY SALLY REES; SUBJECTED TO 20 27*W # AN INORDINATE DESIGN GESTATION AND FINALLY CODED SO FEARFULLY 21 27TG # BY YOURS TRULY IN THE FLEETING MOMENTS OF QUIET AMIDST THE TURMOIL 19 28*6 # OF COSMOPOLITAN GEORGE THREE DEVELOPMENT BRANCH OF B.P.D. 4 28F3 ...# 21 28JY ...# EDITORA IS A NEW SEGMENT RESULTING FROM THE SPLITTING OF SEGMENT 9 28NT ...# EDITOR FOR 8.65. 4 28SQ # 4 29#B # 13 2?=W # ENTRY POINT BRANCH TABLE 4 2?QG # 9 2#=6 ... SEGENTRY K1EDITORA,OH 19 2#PQ ... SEGENTRY K2EDITORA,N2EDITORA [SHUTDOWN WITH CLOSEABANDON 16 2*9B ... SEGENTRY K3EDITORA,N3EDITORA [O INSTRUCTION 16 2*P2 ... SEGENTRY K4EDITORA,N4EDITORA [H INSTRUCTION 21 2B8L ... SEGENTRY K5EDITORA,N5EDITORA [L & N INSTRUCTIONS-OPTIONAL PARAMETE 16 2BN= ... SEGENTRY K6EDITORA,N6EDITORA [I INSTRUCTION 17 2C7W ... SEGENTRY K8EDITORA,N8EDITORA [DEALS WITH BREAKIN 19 2CMG ... SEGENTRY K9EDITORA,N9EDITORA [CLOSES FILES AND ENDS EDIT 18 2D76 ... SEGENTRY K14EDITORA,N14EDITORA [CHECK IF MOP AFTER ERROR 4 2GK= # 4 2H4W # 9 2HJG # USEFUL CONSTANTS. 4 2J46 # 14 2JHQ O20 #20 [SPACE 16 2K3B O30 #30 [LEFT PARENTHESIS 17 2KH2 O31 #31 [RIGHT PARENTHESIS 14 2L2L O32 #32 [ASTERISK 14 2LG= O34 #34 [COMMA 14 2L_W O23 #23 [OCTAL 14 2MFG O8 #10 [EIGHT 16 2M_6 MNUM #32657713 [A MAGIC NUMBER 6 2NDQ THOU +1000 4 2NYB # 4 2PD2 # 20 2PXL ...N8EDITORA [ENTRY POINT FOR BREAK-IN DURING 18 2QC= # [AN EDITING INSTRUCTION 16 2QWW CALL 6 XBKOF [CLEAR BREAKIN 18 2RBG EDCOM ITER ['IMSTRUCTION TERMINATED' 16 2RW6 CALL 6 UMOP [PUSH DOWN STACK 16 2S*Q STOZ IEIP(2) [FORCE RE READ 8 2STB STOZ IESY(2) 14 2T*2 ... ACROSS EDITOR,1 [CARRY ON 4 2TSL # 21 2W#= # XCLSE CLOSES THE FILE ON THE TOP OF THIS ACTIVITIES FILE STACK. 4 2WRW # 7 2X?G XCLSE SBX 6 1 6 2XR6 CLOSE 7 2Y=Q ADS 1 6 7 2YQB EXIT 6 0 4 2_=2 # 20 2_PL # XBKOF CLEARS BREAK-IN. IF IT WASN'T BREAK-IN BUT SOMETHING 20 329= # MORE SERIOUS IT CAUSES AN AUTOMATIC 'E' WITH APPROPRIATE MESSAGES. 4 32NW # 7 338G XBKOF SBX 6 1 18 33N6 DOWN EDITET,4 [SAVES EDITOR'S SPACE 16 347Q BRN XITER [J NOT BREAK-IN 3 34?M ... 7 34CJ ...#UNS EDPOINTER 9 34HF ... MONOUT ISEDBRK 7 34MB ADS 1 6 7 3572 EXIT 6 0 4 35LL # 15 366= # THE ACTION FOR JT EXCEEDED OR JOB ABANDONNED 4 36KW # 17 375G XITER ACROSS EDWRITE,11 [SAVES EDITOR'S SPACE 4 37K6 # 6 384Q ...N2EDITORA 17 3=GW CLOSEABANDON [AS YOU WERE FOR N/F 16 3?2G LDX 7 IEON(2) [NO. OF OLD FILES 15 3?G6 BRN SHTD0 [CLOSE THEM 4 3?_Q # 21 3#FB # SHUTDOWN CLOSES ALL FILES AND RETURNS TO THE COMMAND PROCESSOR. 4 3#_2 # 6 3*DL ...N9EDITORA 5 3*Y= SHUTDOWN 17 3BCW LDX 7 IEON(2) [NUMBER OF OLD FILES 16 3BXG ADN 7 1 [ADD 1 FOR N/F 8 3CC6 SHTD0 CALL 6 XCLSE 8 3CWQ BCT 7 SHTD0 17 3DBB LDX 5 IEFT(2) [PICK UP FILE TYPES 18 3DW2 LDX 7 IEFS(2) [NUMBER OF EDITING FILES 17 3F*L SHTD1 BNG 5 SHTD2 [J IF MOP OR J/S ELSE 16 3FT= CALL 6 XCLSE [CLOSE THE FILE 17 3G#W SHTD2 SBN 7 1 [COUNT DOWN ON FILES 17 3GSG SLL 5 1 [SHIFT FOR NEXT FILE 16 3H#6 BNZ 7 SHTD1 [LOOP UNTIL END 21 3H*3 ... FIXTRA ESP10 [****EDITOR SPECIAL FOR PLESSEY**** 8 3H*Y ... BRN SP10 7 3HBB ... LOSEPARS 9 3HBT ... OUTPAR TIMENOW 9 3HGF ... CALL 4 XJOBTIME 10 3HL5 ... OUTPACK 6,2,JOBMILL 9 3HM2 ... LDX 7 IEOS(2) 9 3HMX ... ADX 7 IENS(2) 9 3HNS ... OUTPACK 7,1,NUMA 8 3HPP ... MONOUT EDEND 4 3HQL ...SP10 19 3HRQ ALTLEND 2,CPATLEN [SHRINK ACTIVITY BLOCK BACK 17 3J?B LDCT 0 #2 [WAS THIS BREAK-IN 18 3JR2 ANDX 0 IESW(2) [DURING READ FROM EDIT? 14 3K=L BNZ 0 SHTD3 [J IF SO. 14 3KQ= ENDCOM [GOODBYE 17 3L9W SHTD3 COMBRKIN ['BREAK-IN BEFORE ED' 4 3L?4 ...# 17 3L#= ...# XJOBTIME UPDATES JOB TIME IN JOB BLOCK,AND LEAVES 11 3L*D ...# X3 : POINTER TO JOB BLOCK 9 3LBL ...# X6 & X7 : JOB TIME 4 3LCS ...# 5 3LF2 ...XJOBTIME 8 3LG8 ... FJOCA 3,2 8 3LHB ... UPDATEJT ,3 9 3LJJ ... LDX 6 HTIMEJ(3) 10 3LKQ ... LDX 7 HTIMEJ+1(3) 7 3LLY ... EXIT 4 0 4 3LN6 ...# 4 3LPG # 19 3M96 # POPUP PULLS UP THE EDITING FILE STACK. IF THIS EXHAUSTS 18 3MNQ # THE STACK AN ERROR IS REPORTED, OTHERWISE THE ROUTINE 10 3N8B # EXITS IN GOOD ORDER. 4 3NN2 # 16 3P7L POPUP SBS 1 6 [RELATIVE LINK 18 3PM= DOWN EDITET,5 [SAVES EDITOR'S SPACE 18 3Q6W ... BRN XEND [EXHAUSTED J/S OR FILE 17 3QLG BRN NER [NO FILE TO CLOSE 16 3R66 ADS 1 6 [ELSE EXIT IN 15 3RKQ EXIT 6 0 [GOOD ORDER 4 3S5B # 4 3SK2 # 20 3T4L # PULLUP PULLS UP THE FILE STACK FOR END OF OLD FILE. ERROR IF 11 3TJ= # THERE IS NO FILE TO CLOSE. 4 3W3W # 5 3WHG PULLUP 4 3X36 # 16 3XGQ SBX 6 1 [RELATIVE LINK 18 3Y2B DOWN EDITET,6 [SAVES EDITOR'S SPACE 17 3YG2 BRN NER [NO FILE TO CLOSE 14 3Y_L ADX 6 1 [OK SO 15 3_F= EXIT 6 0 [CARRY ON 4 3_YW # 21 42DG # UMOP PUSHES DOWN THE FILE STACK TO ENTER THE MOP CONSOLE ON THE 21 42Y6 # TOP OF THE STACK. IF THE STACK IS ALREADY FULL AN ERROR OCCURS. 4 43CQ # 7 43XB UMOP SBX 6 1 18 44C2 DOWN EDITET,7 [SAVES EDITOR'S SPACE 15 44WL ... BRN XEND [STACK FULL 14 45B= ADX 6 1 [OK SO 15 45TW EXIT 6 0 [CARRY ON 4 46*G #PAG 4 46T6 # 21 47#Q # SREBMUN CONVERTS BINARY TO UP TO SEVEN DECIMAL DIGITS. THE NUMBER 21 47SB # TO BE CONVERTED IS IN X6 AND X1 CONTAINS THE ADDRESS OF THE FIRST 21 48#2 # CHARACTER OF THE OUTPUT STRING. ON EXIT X1 CONTAINS THE ADDRESS OF 10 48RL # THE NEXT CHARACTER. 4 49?= # 5 49QW SREBMUN 4 4==G # 15 4=Q6 LDN 4 0 [CLEAR RESULT 16 4?9Q LDN 7 7 [MAX COUNT IS 7 7 4?PB LDX 5 6 15 4#92 SMO FX1 [MULTIPLY BY 16 4#NL MPY 5 MNUM [THE MAGIC MUNBER 16 4*8= MODE 0 [99.9% REDUNDANT 16 4*MW SRE1 SBN 7 1 [DECREMENT COUNT 17 4B7G CBD 5 4 [CONVERT TO CHARACTER 19 4BM6 BNZ 4 SRE4 [J TO IGNORE IF LEADING ZERO 17 4C6Q BNZ 7 SRE1 [J TO START OUTPUT 18 4CLB BRN SRE4 [DEPOSIT ONE ZERO ANYWAY 16 4D62 SRE3 SBN 7 1 [DECREMENT COUNT 17 4DKL CBD 5 4 [CONVERT TO CHARACTER 16 4F5= SRE4 DCH 4 0(1) [STORE CHARACTER 17 4FJW BCHX 1 / [INCREMENT POINTER 17 4G4G BNZ 7 SRE3 [LOOP UNTIL FINISHED 7 4GJ6 EXIT 0 0 4 4H3Q # 21 4HHB # MOPTEXT DETERMINES THE SOURCE OF THE EDITING INSTRUCTIONS. EXITS 20 4J32 # TO CALL+1 FOR OFFLINE FILE; CALL+2 FOR ONLINE JOB SOURCE AND 21 4JGL # CALL+3 FOR ONLINE MOP TERMINAL.(WILL EVENTUALLY NEED TO BE ALTER- 17 4K2= # ED TO DIFFERENTIATE MOP TELETYPE FROM MOP AVDU). 4 4KFW # 5 4K_G MOPTEXT 4 4LF6 # 16 4LYQ LDXC 0 IEFT(2) [SET FILE STACK 18 4MDB BCC MTX [J IF REAL FILE ON TOP 16 4MY2 LDX 0 CONTEXT(2) [GET CONTEXT WORD 16 4NCL SRC 0 4 [SHIFT TO BIT 20 16 4NX= LDXC 0 0 [SEE IF IT IS SET 18 4PBW ADNC 6 1 [CLEAR CARRY AND OVERFLOW 17 4PWG MTX EXIT 6 0 [EXIT AS APPROPRIATE 4 4QB6 #PAG 4 4QTQ # 21 4R*B # THIS CODE EXECUTES THE I INSTRUCTION. THE 'DONT-OUTPUT-- 21 4RT2 # SWITCH' IS SET THEN CHARACTERS ARE READ FROM THE EDITING FILE, AND 21 4S#L # VISIBLE SPACE SUBSTITUTION IS DONE. S IN THE EDITING FILE 21 4SS= # CAUSE THE BLOCK TO BE WRITTEN AWAY. ROUTINE ENDS WHEN IT FINDS THE 16 4T?W # CHARACTER WHICH WAS IN X7 ON ENTRY. READ ON. 4 4TRG # 6 4W3# ...N6EDITORA 18 4W97 ...XI CALL 6 RLIF [FIND INSTRUCTION BLOCK 16 4WC2 ... CALL 0 OH [ERROR IF LOST 8 4WJT ... LDCT 5 #100 18 4WQQ ORS 5 IESW(2) [SET NO POINTER SWITCH 16 4X=B STO 7 IEL3(2) [STORE DELIMITER 18 4XQ2 CALL 6 RLNF [FIND THE OUTPUT BLOCK 6 4Y9L #SKI JDIAG1 4 4YP= ( 9 4_8W LDX 4 IENC(2) 9 4_NG STO 4 AWORK4(2) 4 5286 ) 15 52MQ XI1 CALL 6 NCH [READ A CHAR 19 537B BRN XI6 [J IF END TO WRITE BLOCK AWAY 19 53M2 XI2 BXE 7 IEL3(2),XI7 [J IF FINISH OF INSTRUCTION 9 546L LDX 5 IENC(2) 16 54L= BXL 5 IENH(2),XI3 [J IF LENGTH OK 17 555W EDCOM YRTL [CHOPPTY CHOPPTY CHOP 8 55KG LDCT 5 #100 17 5656 ORS 5 IESW(2) [CLEAR I MODE SWITCH 9 56JQ ERS 5 IESW(2) 9 574B ... ACROSS EDITOR,12 18 57J2 XI3 ADN 5 20 [GET NO OF WORDS REQUIRED 14 583L SRL 5 2 [IN FAPB 9 58H= LDX 3 IENA(2) 17 592W LDX 0 ALOGLEN(3) [GET LENGTH OF FAPB 16 59GG BXGE 0 5,XI4 [J IF LENGTH OK 7 5=26 ADN 5 9 17 5=FQ ALTLEN 3,5 [ELSE ADJUST LENGTH 10 5=_B MHUNTW 3,FILE,FAPB 9 5?F2 STO 3 IENA(2) 7 5?YL PHOTO 5 9 5#D= STO 5 IENM(2) 8 5#XW CALL 6 RLIF 8 5*CG CALL 0 OH 18 5*X6 XI4 BXU 7 IEVS(2),XI5 [J IF NOT VISIBLE SPACE 17 5BBQ LDN 7 #20 [ELSE LOAD A SPACE 9 5BWB XI5 LDX 3 IENC(2) 7 5CB2 SRC 3 2 6 5CTL #SKI JDIAG1 9 5D*= ADX 3 IENG(2) 9 5DSW SMO IENA(2) 6 5F#G #SKI JDIAG1 15 5FS6 DCH 7 0(3) [UNSERT CHAR 7 5G?Q #SKI JDIAG1<1$1 15 5GRB DCH 7 A1+2(3) [INSERT CHAR 7 5H?2 LDN 0 1 15 5HQL ADS 0 IENC(2) [UPDATE IENC 8 5J== BRN XI1 4 5JPW XI6 6 5K9G #SKI JDIAG1 4 5KP6 ( 9 5L8Q LDX 5 AWORK4(2) 18 5LNB BNZ 5 XI8 [J IF NOT WHOLE RECORD 8 5M82 LDN 5 #4 9 5MML ANDX 5 IESW(2) 16 5N7= BZE 5 XI8 [J IF NOT GEDIT 8 5NLW LDX 5 ACES 8 5P6G LDN 4 #20 9 5PL6 ANDX 4 IESW(2) 15 5Q5Q BZE 4 XI9 [J IF NOT 'D' 8 5QKB LDCT 6 #400 7 5R52 ADX 5 6 9 5RJL XI9 SMO IENA(2) 18 5S4= STO 5 A1+3 [STORE SECOND KEY WORD 4 5SHW XI8 4 5T3G ) 16 5TH6 DOWN EDWRITE,1 [WRITE BLOCK AWAY 16 5W2Q BRN SHUTDOWN [J IF FILE FULL 16 5WGB ... BRN N8EDITORA [J IF BREAK-IN 6 5X22 #SKI JDIAG1 4 5XFL ( 9 5X_= LDX 4 IENC(2) 9 5YDW STO 4 AWORK4(2) 4 5YYG ) 20 5_5N ... CALL 6 RLIF [IN CASE NEWLINE CAUSED BY VNS 8 5_=W ... CALL 0 OH 16 5_D6 CALL 6 NCH [GET NEXT CHAR 19 5_XQ BRN XI6 [WRITE AWAY IF NULL RECORD 17 62CB CALL 6 RLNF [ELSE FIND N/F BLOCK 6 62H? ...#UNS JPVNS 4 62M8 ...#SKI 4 62R5 ...( 15 62X2 STOZ IESP(2) [JUST IN CASE 17 63BL STOZ IESTACK(2) [USER DIDNT FOLLOW 15 63W= STOZ IESTACK+1(2) [THE RULES 4 6464 ...) 8 64*W BRN XI2 6 64C7 ...#UNS JPVNS 4 64DD ...( 15 64FP ...XI7 CALL 6 NCH [LOOK AT NEXT 15 64H2 ... BRN NVNS [CHARACTER 16 64J? ... TXU 7 IEL3(2) [IN CASE IT IS 17 64KJ ... BCC XI6 [VISIBLE NEWLINE SYMBOL 18 64LT ...NVNS STO 0 IEIP(2) [STEP BACK IF IT ISN'T 16 64N6 ... LDCT 5 #100 [CLEAR NO-POINTER 4 64PC ...) 6 64QN ...#UNS JPVNS 4 64R_ ...#SKI 16 64TG XI7 LDCT 5 #100 [CLEAR NO-POINTER 14 65*6 ORS 5 IESW(2) [SWITCH 9 65SQ ERS 5 IESW(2) 3 65W# ... 9 65XW ... LDX 5 IENC(2) 21 65_D ... BZE 5 XI10 [J IF NOTHING INSERTED ON THIS LINE 9 6632 ... LDX 5 AWORK4(2) 21 664J ... BNZ 5 XI10 [J IF I NOT STARTED AT BEGIN OF LINE 8 664Y ... LDCT 6 #4 9 665# ... ANDX 6 IESW(2) 17 665N ... BNZ 6 XI10 [J IF END OF OLD FILE 8 6666 ... CALL 6 RLOF 16 667N ... LDX 7 A1+1(3) [OLD FILE PFCC 8 669= ... CALL 6 RLNF 15 66=S ... STO 7 A1+1(3) [TO NEW FILE 4 66DH ...XI10 9 66L= ... ACROSS EDITOR,3 4 66S2 # 4 67?L #PAG 4 67R= # 21 68=W # NCH IS THE NEXT CHARACTER FROM EDITING FILE ROUTINE. THE REQUIRED 21 68QG # CHARACTER IS PUT INTO X7 AND EXIT IS TO CALL+2. AN ATTEMPT TO READ 21 69=6 # OFF THE BLOCK CAUSES EXIT TO CALL+1. A SUBSEQUENT CALL WILL CAUSE 21 69PQ # THE NEXT BLOCK TO BE READ. ADDRESS OF LAST CHARACTER IS LEFT IN X0 4 6=9B # 19 6=P2 NCH LDX 3 IEIP(2) [ADDRESS OF NEXT CHARACTER 18 6?8L BZE 3 NCH3 [J IF OFF END LAST TIME 20 6?N= STO 3 0 [GET CHARACTER ADDRESS OF END OF 19 6#7W SLC 0 2 [BLOCK AND PERFORM ARITHMETIC 21 6#MG SBX 0 IEIH(2) [TO DETERMINE IF WE ARE ABOUT TO RUN 18 6*76 BPZ 0 NCH2 [OFF THE END OF THE BLOCK 19 6*LQ NCH1 SMO IEIA(2) [MODIFY BY ADDRESS OF BLOCK 18 6B6B LDCH 7 0(3) [LOAD CHARACTER INTO X7 17 6BL2 LDX 0 3 [LEAVE ADDRESS IN X0 17 6C5L BCHX 3 / [INCREMENT ADDRESS 20 6CK= STO 3 IEIP(2) [STORE ADDRESS OF NEXT CHARACTER 17 6D4W EXIT 6 1 [AND RETURN TO CALL+2 19 6DJG NCH2 STOZ IEIP(2) [CLEAR POINTER FOR NEXT TIME 18 6F46 STO 3 0 [OLD CHARACTER ADDRESS 17 6FHQ EXIT 6 0 [AND RETURN TO CALL+1 16 6G3B NCH3 SBX 6 1 [RELATIVISE LINK 15 6GH2 STO 6 IEL1(2) [AND STORE 16 6H2L STOZ IESP(2) [CLEAR STACK AND 17 6HG= STOZ IEPC(2) [PARENTHESIS COUNT 10 6H_W HUNTW 3,FILE,FRB 17 6JFG BNG 3 NCH4 [FREE ANY OLD BLOCK 7 6J_6 FREECORE 3 3 6K3* ... 7 6K5J ...#UNS EDPOINTER 4 6K7R ...NCH4 7 6K=2 ...#UNS EDPOINTER 4 6K#9 ...#SKI 4 6KBD ...( 17 6KDQ NCH4 CALL 6 MOPTEXT [FANOUT ON CONTEXT 15 6KYB BRN NCH24 [OFFLINE FILE 15 6LD2 BRN NCH26 [JOB SOURCE 3 6LK8 ... 4 6LQB ...) 16 6LXL LDX 1 IESW(2) [ELSE MOP CONSOLE 7 6MC= SLL 1 2 17 6MWW BNG 1 NCH7 [J IF IN INSERT MODE 18 6NBG LDN 1 IEBF(2) [BUFFER ADDRESS IN CPAT 17 6NW6 LDX 6 IEOR(2) [GET RECORD NUMBER 18 6P*Q SBX 6 IENO(2) [ADJUST FOR NEW ORIGIN 18 6PTB BPZ 6 NCH5 [J IF RESULT IS POSITIVE 14 6Q*2 LDN 7 #35 [LOAD - 14 6QSL NGX 6 6 [NEGATE 16 6R#= DCH 7 0(1) [DUMP - IN BUFFER 17 6RRW BCHX 1 / [AND UPDATE POINTER 18 6S?G NCH5 CALL 0 SREBMUN [CONVERT RECORD NUMBER 15 6SR6 LDN 7 #36 [FULL STOP 17 6T=Q LDX 6 IEOC(2) [CHARACTER POINTER 16 6TQB DCH 7 0(1) [INSERT FULL STOP 15 6W=2 BCHX 1 / [IN BUFFER 18 6WPL CALL 0 SREBMUN [CONVERT CHARACTER NUMBER 20 6X9= SBN 1 IEBF(2) [WORK OUT NUMBER OF CHARACTERS 18 6XNW SLC 1 2 [THAT HAVE BEEN CONVERTED 3 6XPT ... 7 6XQS ...#UNS EDPOINTER 4 6XRR ...( 5 6XSQ ...NCH5A 16 6XTP ... STO 1 AWORK3(2) [MESSAGE LENGTH 4 6XWN ...NCH6 19 6XXM ... OUTPARAM AWORK3(2),IEBF [ OR 5 6XYL ...NCH6A 17 6X_K ... CALL 6 MOPTEXT [FAN OUT ON CONTEXT 15 6Y2J ... BRN NCH24 [OFFLINE FILE 15 6Y3H ... BRN NCH26 [JOB SOURCE 16 6Y4G ... [ELSE MOP CONSOLE 4 6Y5F ...) 7 6Y6D ...#UNS EDPOINTER 4 6Y7C ...#SKI 20 6Y8G NCH6 OUTPARAM 1,IEBF [OUTPUT OR 8 6YN6 BRN NCH8 19 6_7Q NCH7 LDX 1 IEL3(2) [GET I CHARACTER 16 6_MB DCH 1 IEBF(2) [INSERT IN BUFFER 15 7272 LDN 1 1 [COUNT OF 1 3 727G ... 18 7282 ... STOZ IESP(2) [STOPS USER ATTEMPTING TO 16 728G ... STOZ IESTACK(2) [DO 'I/ONE LINE 19 7292 ... STOZ IESTACK+1(2) [ANOTHER LINE/*THING' ,ET AL 3 729K ... 7 72#8 ...#UNS EDPOINTER 8 72BR ... BRN NCH5A 7 72FB ...#UNS EDPOINTER 4 72H_ ...#SKI 16 72LL BRN NCH6 [J TO SET IT UP 20 736= NCH8 READY NCH28 [WAIT FOR INPUT / J IF BROKEN IN 19 73KW TESTBRKIN NCH28 [TESTS FOR ABANDON ACTUALLY 3 73PR ... 7 73TN ...#UNS EDPOINTER 11 73_K ... OUTPARAM AWORK3(2),IEBF 19 745G MHUNTW 3,FILE,FRB [FIND NEW INSTRUCTION RECORD 14 74K6 LDEX 4 A1(3) [LENGTH 4 754Q # 17 75JB NCH10 LDX 5 A1+1(3) [2ND RED TAPE WORD 16 7642 ANDX 5 CACT [&LEAR BITS 2-23 18 76HL SBN 4 2 [ADJUST LENGTH FOR HEADER 19 773= BZE 5 NCH12 [J IF INTEGRAL NO. OF WORDS 19 77GW SBN 4 1 [ELSE ADJUST FOR LAST WORD 20 782G NCH12 ORS 5 4 [CONJUGATE INTO CHARACTER ADDRESS 19 78G6 SLC 4 2 [CONVERT TO CHARACTER COUNT 6 78_Q #SKI JDIAG1 16 79FB LDX 6 IEIG(2) [START ADDRESS 7 79_2 #SKI JDIAG1<1$1 16 7=DL LDN 6 A1+2 [START ADDRESS 19 7=Y= STO 6 IEIP(2) [STORE IN INSTRUCTION POINTER 17 7?CW STO 3 IEIA(2) [STORE BLOCK ADDRESS 20 7?XG BNZ 4 NCH14 [J IF NOT ZERO LENGTH TRANSFER 16 7#C6 SLC 6 2 [CONVERT TO COUNT 17 7#WQ STOZ IEIP(2) [RE-READ NEXT TIME 20 7*BB STO 6 IEIH(2) [END AND START ADDRESSES THE SAME 8 7*W2 BRN NCH20 17 7B*L NCH14 ADX 3 6 [ADD IN START ADDRESS 18 7BT= LDX 1 3 [AT THIS POINT WE HAVE TO 18 7C#W LDX 0 1 [LOP OFF ALL THE TRAILING 19 7CSG NCH16 LDCH 7 0(1) [SPACES SO GET EACH CHARACTER 19 7D#6 SBN 7 #20 [AND IF NOT A SPACE REMEMBER 19 7DRQ BCHX 1 / [THE ADDRESS. NOTE WE HAVE 19 7F?B BZE 7 NCH18 [PRESET X0 SO THAT AN ENTIRE 20 7FR2 STO 1 0 [RECORD OF SPACES TURNS OUT TO 19 7G=L NCH18 BCT 4 NCH16 [BE NULL. AT END OF RECORD WE 21 7GQ= SBX 0 IEIA(2) [HAVE A CHARACTER MODIFIER FOR THE 20 7H9W LDX 1 FX1 [NEXT CHARACTER AFTER THE END. 3 7H*2 ... 17 7HD6 ... BXU 0 IEIG(2),NCH19 [J IF NOT ALL SPACES 17 7HH= ... STOZ IEIP(2) [SET ZERO CHAR COUNT 5 7HLB ...NCH19 16 7HPG SLC 0 2 [CONVERT TO COUNT 18 7J96 STO 0 IEIH(2) [STORE THE END ADDRESS 4 7JNQ # 15 7K8B NCH20 PHOTO 5 [GET PHOTO OF 16 7KN2 LDN 0 IENZ(2) [BLOCK AND STORE 16 7L7L STO 5 IEIM(2) [AT THIS POINT WE 17 7LM= LDX 6 IESW(2) [CHECK SWITCH WORD 19 7M6W SLL 6 2 [TO SEE IF IN I INSTRUCTION 14 7MLG BNG 6 NCH22 [J IF SO 17 7N66 LDN 7 IENY(2) [OTHERWISE WE UPDATE 18 7NKQ LDN 6 IENR(2) [THE FINGERS IN FILES: 18 7P5B MOVE 7 4 [THE MEMORIES NECESSARY 19 7PK2 MOVE 6 4 [FOR THE FORGET INSTRUCTION 17 7Q4L LDN 6 3 [FOR THE SAME REASON 15 7QJ= ANDX 6 IESW(2) [WE HAVE TO 15 7R3W ERS 6 IESW(2) [SHIFT LEFT 15 7RHG ANDN 6 1 [THE F BITS, 16 7S36 SLL 6 1 [BITS 22 AND 23, 17 7SGQ ORS 6 IESW(2) [IN THE SWITCH WORD 4 7T2B # 9 7TG2 NCH22 LDX 3 IEIP(2) 3 7TJK ... 7 7TM8 ...#UNS EDPOINTER 8 7TPR ... BZE 3 NCH23 7 7TSB ...#UNS EDPOINTER 4 7TW_ ...#SKI 16 7T_L BZE 3 NCHEX [J IF NULL BLOCK 17 7WF= LDN 5 #1000 [COMMANDS CATEGORY 14 7WYW LDX 4 IEIP(2) [SET UP 14 7XDG SLC 4 2 [CURRENT 14 7XY6 NGX 4 4 [EDITING 14 7YCQ ADX 4 IEIH(2) [RECORD 3 7YF7 ... 7 7YGJ ...#UNS EDPOINTER 4 7YH_ ...( 12 7YKB ... OUTPARAX 4,IEIP(2),FILE,FRB 5 7YLR ...NCH23 17 7YN8 ... MONOUT ISEDRDY [N.M_ COMMAND ETC 16 7YPK ... BZE 3 NCHEX [J IF NULL BLOCK 4 7YR2 ...) 7 7YSC ...#UNS EDPOINTER 4 7YTS ...#SKI 12 7YXB OUTMONX 4,IEIP(2),5,FILE,FRB 18 7_C2 CALL 6 RLIF [GET INSTRUCTION BLOCK 8 7_WL CALL 0 OH 14 82B= LDX 3 IEIP(2) [RESET X3 14 82TW LDX 6 IEL1(2) [GET LINK 7 83*G ADX 6 1 16 83T6 BRN NCH1 [J TO LOAD CHAR 4 84#Q # 14 84SB NCHEX LDX 6 IEL1(2) [GET LINK 15 85#2 ADX 6 1 [AND DATUMISE 19 85RL LDN 0 0 [SET CHAR POSITION NEGATIVE 17 86?= EXIT 6 0 [EXIT END OF RECORD 4 86QW # 20 87=G NCH24 LDX 3 IEON(2) [IEON GIVES APPROPRIATE OLD FILE 16 87Q6 NCH25 READ 1(3) [READ A RECORD 16 889Q MHUNTW 3,FILE,FRB [GET THE BLOCK 8 88PB LDEX 4 A1(3) 17 8992 BNZ 4 NCH10 [J NOT END OF FILE 16 89NL FREECORE 3 [FREE NULL BLOCK 15 8=8= CALL 6 POPUP [POP UP STACK 3 8==T ... 7 8=*D ...#UNS EDPOINTER 16 8=D3 ... BRN NCH6A [DO IT ALL AGAIN 7 8=GL ...#UNS EDPOINTER 4 8=K9 ...#SKI 16 8=MW BRN NCH4 [DO IT ALL AGAIN 4 8?7G # 8 8?M6 NCH26 ALASHUNT 3,6 19 8#6Q ADDREC 3,6 [KEEP COMMAND PROCESSOR HAPPY 17 8#LB NGN 3 3 [ONLINE FILE IS -2 8 8*62 BRN NCH25 4 8*KL # 3 8*M3 ... 7 8*ND ...#UNS EDPOINTER 4 8*PT ...( 5 8*R= ...NCH28 11 8*SM ... OUTPARAM AWORK3(2),IEBF 17 8*W4 ... MONOUT ISEDRDY [N.M_ COMMAND ETC 8 8*XF ... CALL 6 XBKOF 4 8*YW ...) 7 8B2? ...#UNS EDPOINTER 4 8B3N ...#SKI 17 8B5= NCH28 CALL 6 XBKOF [CLEAR THE BREAK-IN 16 8BJW CALL 6 UMOP [PUSH DOWN STACK 3 8BMF ... 7 8BQ4 ...#UNS EDPOINTER 16 8BSM ... BRN NCH6 [DO IT ALL AGAIN 7 8BX= ...#UNS EDPOINTER 4 8B_T ...#SKI 16 8C4G BRN NCH4 [DO IT ALL AGAIN 4 8CJ6 # 4 8D3Q # 4 8DHB # 19 8F32 NCHX [NEXT CHARACTER WITH A SYNTAX 4 8FGL # 8 8G2= CALL 6 NCH 16 8GFW BRN SE4 [ERROR IF OFF END 7 8G_G EXIT 5 0 4 8HF6 # 14 8HYQ # RLIF RELOCATES THE INSTRUCTION BLOCK. 4 8JDB # 16 8JY2 RLIF LDX 5 IEIM(2) [GET PHOTO COUNT 9 8K7S LDX 3 IEIA(2) 19 8KCL TESTMOVE 5,RL1 [J IF BLOCK IS STILL THERE 17 8KX= HUNTW 3,FILE,FRB [OTHERWISE FIND IT 15 8LBW BNG 3 RL2 [J IF LOST 17 8LWG PHOTO 5 [GET NEW PHOTO COUNT 17 8MB6 STO 3 IEIA(2) [STORE NEW POINTER 18 8MTQ STO 5 IEIM(2) [STORE NEW PHOTO COUNT 16 8N*B RL1 EXIT 6 1 [EXIT TO CALL+2 16 8NT2 RL2 STOZ IEIP(2) [FORCE A RE-READ 16 8P#L EXIT 6 0 [EXIT TO CALL+1 4 8PS= # 13 8Q?W # RLNF RELOCATES THE NEW FILE BLOCK 4 8QRG # 16 8R?6 RLNF LDX 5 IENM(2) [GET BLOCK PHOTO 9 8RGY LDX 3 IENA(2) 16 8RQQ TESTMOVE 5,RN1 [J IF STILL THERE 16 8S=B MHUNTW 3,FILE,FAPB [ELSE FIND IT 16 8SQ2 STO 3 IENA(2) [STORE ADDRESS 16 8T9L PHOTO 5 [GET NEW PHOTO 15 8TP= STO 5 IENM(2) [AND STORE 7 8W8W RN1 EXIT 6 0 3 8W9X ... 4 8W=Y ...# 12 8W?_ ...# RLOF RELOCATES OLD FILE BLOCK 4 8W*2 ...# 4 8WB3 ...RLOF 15 8WC4 ... LDX 5 IEOM(2) [BLOCK PHOTO 9 8WD5 ... LDX 3 IEOA(2) 16 8WF6 ... TESTMOVE 5,RO1 [J IF STILL THERE 15 8WG7 ... MHUNTW 3,EDIT,FRB [ELSE FIND IT 16 8WH8 ... PHOTO 5 [GET NEW PHOTO 15 8WJ9 ... STO 5 IEOM(2) [AND STORE 17 8WK= ... STO 3 IEOA(2) [STORE BLOCK ADDRESS 4 8WL? ...RO1 7 8WM# ... EXIT 6 0 4 8WNG # 4 8X86 # 15 8XMQ # NEXT CHECKS THE NEXT NON-SPACE CHARACTER 14 8Y7B # IF NOT COMMA OR RT PARENTHESIS --->SE1 4 8YM2 # 9 8_6L NEXT LDX 5 IEIP(2) 16 8_L= NX1 CALL 6 NCH [GET NEXT CHAR 16 925W BRN NX2 [J IF OFF END 15 92KG BXE 7 O20(1),NX1 [J IF SPACE 10 9356 BXE 7 O34(1),NX2 10 93JQ BXE 7 O31(1),NX2 8 944B BRN SE1 15 94J2 NX2 STO 5 IEIP(2) [BACKSPACE 7 953L EXIT 4 0 4 95H= # 4 962W # 14 96GG # CODE FOR DEALING WITH SYNTAX ERRORS. 8 9726 # ENTRIES ARE - 14 97FQ # SE1 SCAN, STARTING AT NEXT CHARACTER 14 97_B # SE2 SCAN, STARTING AT THIS CHARACTER 14 98F2 # SE3 SCAN ENDED AT CURRENT CHARACTER 13 98YL # SE4 SCAN ENDED AT LAST CHARACTER 4 99D= # 4 99XW # 18 9=CG SE1 CALL 5 NCHX [GET ANOTHER CHARACTER 14 9=X6 SE2 BXE 7 O31(1),SE3 [J IF *34 15 9?BQ BXU 7 O34(1),SE1 [LOOP NOT *31 9 9?WB SE4 STO 0 IEIP(2) 4 9#B2 SE3 17 9#TL DOWN EDITER,3 ['SYNTAX ERROR : OH!' 4 9**= # 4 9*SW # 6 9B#G ...N14EDITORA 16 9BS6 NER CALL 6 MOPTEXT [CHECK CONTEXT 18 9C?Q ... BRN XEND [ABORT IF EITHER OFFLINE 17 9CRB ... BRN XEND [OR NOT MOP ONLINE 18 9D?2 STOZ IEIP(2) [IF MOP FORCE A RE-READ 9 9DQL ... ACROSS EDITOR,1 18 9F== XERR DOWN EDITER,4 ['EXECUTION ERROR: OH' 8 9FPW ... BRN XEND 6 9G9G ...N3EDITORA 18 9GP6 ...OOOO CALL 6 RLIF [FIND INSTRUCTION BLOCK 16 9H8Q ... CALL 0 OH [ERROR IF LOST 16 9HNB ... CALL 6 NCH [GET NEXT CHAR 15 ?J6W BRN O1 [J IF OFF END 15 ?JLG BXE 7 O20(1),OOOO [IHNORE SPACE 15 ?K66 BXE 7 O34(1),O1 [END IF COMMA 14 ?KKQ BXE 7 O31(1),O1 [OR IF RP 14 ?L5B BXE 7 O23(1),O2 [J IF # 15 ?LK2 STO 0 IEIP(2) [BACKSPACE 17 ?M4L DOWN EDITET,3 [WORK OUT DECIMAL NO 17 ?MJ= BRN NER [J IF SYNTAX ERROR 18 ?N3W CALL 4 NEXT [CHECK FOLLOWING STRING 15 ?NHG LDX 7 ACOM1(2) [OK SO SET 15 ?P36 STO 7 IENO(2) [NEW ORIGIN 9 ?PGQ ... ACROSS EDITOR,3 9 ?Q2B O1 LDX 7 IEOR(2) 14 ?QG2 STO 7 IENO(2) [SET IENO 15 ?Q_L STO 0 IEIP(2) [BACKSPACE 9 ?RF= ... ACROSS EDITOR,3 15 ?RYW O2 STOZ IENO(2) [CLEAR IENO 9 ?SDG ... ACROSS EDITOR,3 4 ?SY6 # 6 ?T7Y ...N4EDITORA 18 ?T*R ...XHHH CALL 6 RLIF [FIND INSTRUCTION BLOCK 16 ?THL ... CALL 0 OH [ERROR IF LOST 8 ?TPF ... LDCT 7 #400 18 ?TXB STO 7 IEL3(2) [INITIALISE STORAGE WORD 16 ?WC2 XH1 CALL 6 NCH [GET NEXT CHAR 15 ?WWL BRN XH3 [J IF OFF END 15 ?XB= BXE 7 O20(1),XH1 [IGNORE SPACE 15 ?XTW BXE 7 O23(1),XH4 [J IF OCTAL 16 ?Y*G XH2 BXE 7 O34(1),XH3 [FINISH IF COMMA 16 ?YT6 BXU 7 O31(1),SE1 [ERROR IF NOT RP 15 ?_#Q XH3 STO 0 IEIP(2) [BACKSPACE 18 ?_SB XH3A CALL 4 NEXT [CHECK FOLLOWING STRING 15 #2#2 LDX 6 IEL3(2) [OK SO SET 14 #2RL STO 6 IEPF(2) [NEW PFCC 14 #3?= BVCR / [CLEAR V 9 #3QW ... ACROSS EDITOR,3 4 #4=G ...XH4 16 #4Q6 XH5 CALL 6 NCH [GET NEXT CHAR 16 #54H ... BRN XH6 [J IF OFF END 17 #5BY ... BXGE 7 O8(1),XH6 [J IF NOT OCTAL DIGIT 9 #5PB LDX 6 IEL3(2) 17 #692 SLL 6 3 [UPDATE STORAGE WORD 7 #6NL ORX 6 7 9 #78= STO 6 IEL3(2) 15 #7MW BVCI XH5 [AND AGAIN 8 #87G BRN XH3A 9 #8M6 OH GEOERR 1,EDIT 4 #8PP ...XH6 9 #8S# ... LDX 6 IEL3(2) 17 #8WX ... BPZ 6 XH3 [J IF VALUE AFTER H# 18 #8_G ... STO 0 IEIP(2) [OTHERWISE SYNTAX ERROR 8 #945 ... BRN SE2 4 #96Q # 4 C5XG # 18 C6C6 # AT HENRY'S INSISTENCE THIS CODE EVELUATES THE OPTIONAL 15 C6WQ # PARAMETER FOR THE L AND N INSTRUCTIONS. 4 C7BB # 6 C7L8 ...N5EDITORA 18 C7S3 ...NLSW CALL 6 RLIF [FIND INSTRUCTION BLOCK 16 C7_W ... CALL 0 OH [ERROR IF LOST 16 C87P ... CALL 6 NCH [GET ANOTHER CHAR 15 C8*L BRN NLS2 [J IF NO MORE 15 C8T= BXE 7 O20(1),NLSW [IGNORE SPACE 14 C9#W BXE 7 O31(1),NLS2 [) IS END 15 C9SG BXE 7 O34(1),NLS2 [, FINISHES 15 C=#6 BXE 7 O32(1),NLS2 [* FINISHES 21 C=RQ SBN 7 #57 [ELSE THE FIRST CHARACTER MUST BE O 16 C??B BNZ 7 SE2 [ERROR IF NOT O 18 C?R2 CALL 6 NCH [GET ANOTHER CHARACTER 18 C#=L BRN SE3 [ERROR IF NO MORE LEFT 8 C#Q= SBN 7 #46 7 C*9W ... LDN 5 0 18 C*PG BZE 7 NLS1 [J IF SECOND CHARACTER F 8 CB96 SBN 7 #10 19 CBNQ BNZ 7 SE2 [J IF SECOND CHARACTER NOT N 15 CC8B ... ORS 4 IESW(2) [SET SWITCH 18 CCN2 LDCT 7 #440 [TEST IF WE HAVE JUST SET 15 CD7L ... ANDX 4 7 [L OR W ON 14 CDM= ... BZE 4 NLS3 [J IF NOT 17 CF6W ...NLS4 LDN 4 #4 [TEST IF TRACING WILL 16 CFLG ... TESTRACE 4,NLS5 [INHIBIT OUTPUT 16 CG66 BRN NLS3 [OK SO CARRY ON 15 CGKQ ...NLS1 ORS 4 IESW(2) [UNSET SWITCH 9 CH5B ... ERS 4 IESW(2) 18 CHK2 CALL 6 NCH [GET ANOTHER CHARACTER 15 CJ4L BRN SE3 [ERROR IF END 17 CJJ= SBN 7 #46 [CHECK FOR ANOTHER F 13 CK3W BZE 7 NLS3 [YES 16 CKHG STO 0 IEIP(2) [ELSE BACKSPACE 7 CL36 BRN NLS3 20 CLGQ ...NLS2 ERS 4 IESW(2) [NO PARAMETE SO INVERT SWITCH, 16 CM2B STO 0 IEIP(2) [BACKSPACE AND 17 CMG2 ... LDX 6 4 [TEST IF WE HAVE JUST 16 CM_L ... ERX 4 IESW(2) [SET L OR W ON 7 CNF= ... ANDX 4 6 14 CNYW ... BZE 4 NLS4 [J IF SO 8 CPDG NLS3 LDCT 5 #40 16 CPY6 ANDX 5 IESW(2) [CHECK IF WINDOW 15 CQCQ ... BZE 5 NLS6 [NO SO FINISH 18 CQXB LDCT 5 #20 [CHECK IF ALREADY LISTED 9 CRC2 ANDX 5 IESW(2) 13 CRWL ... BNZ 5 NLS6 [YES 15 CSB= DOWN EDWRITE,10 [ELSE LIST 15 CSTW ... ACROSS EDITOR,3 [AND FINISH 16 CT*G NLS5 EDCOM LWIN [SORRY CANT LIST 4 CTT6 ...NLS6 9 CW#Q ... ACROSS EDITOR,3 14 CWJJ ...XEND ACROSS EDITOR,11 [FINISH 12 CWSB ... MENDAREA 1023-0?<100,K100EDITORA 4 F3XW #END 6 ____ ...046356330006