EDITORA865

(George Source)

Macros used: ACROSS, ADDREC, ALASHUNT, ALTLEN, ALTLEND, APCHANGE, BXE, BXGE, BXL, BXU, CLOSE, CLOSEABANDON, COMBRKIN, DOWN, EDCOM, ENDCOM, FIXTRA, FJOCA, FREECORE, GEOERR, HUNTW, LOSEPARS, MENDAREA, MHUNTW, MONOUT, OUTMONX, OUTPACK, OUTPAR, OUTPARAM, OUTPARAX, PHOTO, READ, READY, SEGENTRY, TESTBRKIN, TESTMOVE, TESTRACE, UP, UPDATEJT

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