EDITOR867

(George Source)

Macros used: ACROSS, ACROSSVAR, ADDREC, ALASHUNT, APCHANGE, BXE, BXL, BXU, COOR2, DOWN, EDCOMERR, EDERR, FJOCA, FREECORE, GEOERR, HUNTW, ICT, IET, IETS, LETOPRUN, MENDAREA, MHUNTW, MONOUT, OUTMONX, OUTPARAM, OUTPARAX, PAIR, PHOTO, PREP, READ, READY, SEGENTRY, TESTBRKIN, TESTHKN, TESTMOVE, TRACE, UP, UPDATEJT

EDITOR867.txt
22FL    #LIS  K0EDITOR>K0ALLGEO>0   
22^= ...#SEG  EDITOR865                    [DICK RUSBRIDGE  
2394 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982.   
23DW    #   
23YG    #     GEORGE 3 AND 4 INTEGRAL EDITOR.   
24D6    #     -------------------------------   
24XQ    #   
254Y ...#UNS G400   
25=6 ...#     THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2
25CB          8HEDITOR  
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. 
28SQ    #   
29#B    #   
29S2    #     THE EDITOR'S CODE STARTS HERE.
2=?L    #     ------------------------------
2=R=    #   
2?=W    #              ENTRY POINT BRANCH TABLE 
2?QG    #   
2#=6     SEGENTRY K1EDITOR,N1EDITOR        [DEALT WITH BY EDITAR
2#PQ     SEGENTRY K2EDITOR,N2EDITOR        [SHUTDOWN WITH CLOSEABANDON  
2*9B     SEGENTRY K3EDITOR,N3EDITOR        [END OF INSTRUCTION  
2*P2     SEGENTRY K4EDITOR,OH   
2B8L     SEGENTRY K5EDITOR,N5EDITOR        [PULLUP OF O/F STACK 
2BN=     SEGENTRY K7EDITOR,N7EDITOR        [ABANDON EDIT
2C7W     SEGENTRY K8EDITOR,N8EDITOR        [DEALS WITH BREAK-IN 
2CMG     SEGENTRY K9EDITOR,N9EDITOR        [CLOSES FILES AND ENDS EDIT  
2D76     SEGENTRY K10EDITOR,N10EDITOR      [EXECUTES INSTRUCTION
2DLQ     SEGENTRY K11EDITOR,N11EDITOR      [E INSTRUCTION   
2F6B     SEGENTRY K12EDITOR,N12EDITOR      ['EXECUTION ERROR..... ' 
2FL2     SEGENTRY K13EDITOR,OH  
2G5L     SEGENTRY K14EDITOR,N14EDITOR      [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    N8EDITOR                           [ENTRY POINT FOR BREAK-IN DURING 
2PYS ...#UNS G400   
2Q22 ...(   
2Q38 ...      TESTHKN  XDSK1               [J IF NOT IN HOOK
2Q4B ...      CALL  6  MOPTEXT  
2Q5J ...      BRN      XDSK2                    [FILE   
2Q6Q ...      BRN      XDSK1                     [JOB SOURCE
2Q7Y ...      BRN      XDSK1                     [MOP   
2Q96 ...XDSK2 LDCT  0  #2   
2Q=# ...      ORS   0  IESW(2)                   [NOTE BKIN 
2Q?G ...      BRN      N2EDITOR                  [CLOSEABANDON  
2Q#N ...XDSK1   
2Q*W ...)   
2QC=    #                                  [AN EDITING INSTRUCTION  
2QWW ...      ACROSS   EDITORA,8
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    #              ABANDON ENTRY POINT  
38JB    #   
3942    N7EDITOR
39HL ...XBK1  EDCOMERR EDAB                ['EDIT ABANDONED'
3=3=    N2EDITOR
3=GW ...      ACROSS   EDITORA,2
3?^Q    #   
3#FB    #     SHUTDOWN CLOSES ALL FILES AND RETURNS TO THE COMMAND PROCESSOR.   
3#^2    #   
3*DL    N9EDITOR
3*Y= ...      ACROSS   EDITORA,9
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 
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  
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    N14EDITOR   
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          BRN   PREPARSE
9F==    XERR  DOWN  EDITER,4               ['EXECUTION ERROR: OH'   
9FPW          BRN   XEND
9G9G    N12EDITOR   
9GP6          CALL  6  MOPTEXT  
9H8Q          BRN   XERR
9HNB          BRN   XERR
9J82          STOZ  IEIP(2) 
9JML          BRN   PREPARSE
9K7=    #   
9KLW    TLU   STO   7  3                   [TABLE LOOK-UP   
9L6G          SRC   3  2                   [CONVERT TO CHARACTER ADDRESSS   
9LL6 ...      SMO      6
9M5Q ...      OBEY     0
9MKB          LDCH  3  0(3)                [ACCESS TABLE
9N52          ADS   1  3                   [DATUMISE RESULT 
9NJL          EXIT  6  1                   [AND FINISH  
9P4=    #   
9PHW    VDXEQ SBX   6  1                   [DOES V,D INSTRNS
9Q3G          STO   6  AWRK1(2)            [STORE LINK  
9QH6    VD0   CALL  6  NCH  
9R2Q          BRN   NOV                    [NO PARAMETER
9RGB          BXE   7  O20(1),VD0   
9S22          BXE   7  O34(1),NOV   
9SFL          BXE   7  O31(1),NOV   
9S^=    VDX   LDX   6  AWRK1(2) 
9TDW          ADX   6  1                   [RECLAIM LINK AND DATUMISE   
9TYG          EXIT  6  0
9WD6    NOV   LDCT  7  #777                [SET TOP BITS OF DS OR VS
9WXQ          STO   0  IEIP(2)  
9XCB          BRN   VDX                    [J TO EXIT   
9XX2    #   
9YBL    VI    CALL  6  VDXEQ               [DO V
9YW=          STO   7  IEVS(2)             [SET V.S 
9^*W          BRN   WINDT   
9^TG    #   
=2*6    XDI   CALL  6  VDXEQ               [DO D
=2SQ          STO   7  IEDS(2)             [SET D.S 
=3#B          BRN   WINDT   
=3S2    #   
=4?L    PARL  LDX   4  IESP(2)             [LEFT PARENTHESIS
=4#M ...#UNS  ICT   
=4*N ...(   
=4BP ...      LDXC  6  IESP(2)             [J IF NOT CONDIT. REPETITION 
=4CQ ...      BCC      PARL1
=4DR ...      LDCT  6  1                   [J IF ACTIVITY PRIORITY REDUCED  
=4FS ...      ANDX  6  IESW(2)             [ALREADY 
=4GT ...      BNZ   6  PARL1
=4HW ...      LDCT  6  1                   [CHANGE PRIORITY TO LOWEST VALUE 
=4JX ...      ORS   6  IESW(2)             [& SET SWITCH
=4KY ...      APCHANGE DOWN 
=4L^ ...      CALL  6  RLIF                [FIND INSTRUCTION BLOCK  
=4N2 ...      CALL  0  OH                  [ERROR IF LOST   
=4P3 ...PARL1   
=4Q4 ...)   
=4R=          SLC   4  1                   [RECURESE BY PUSHING 
=4WB ...#UNS  EDLOOP
=4^G ...      ADN   4  18                  [ADD 9 TO STACK POINTER BUT LEAVE B0 
=54L ...#UNS  EDLOOP
=57Q ...#SKI
=5=W          ADN   4  14   
=5QG          SRC   4  1                   [B0 OF POINTER   
=6=6          STO   4  IESP(2)             [THEN CARRY ON   
=6PQ          BRN   PREPARSE
=79B    #SKI  JDIAG1
=7P2    (   
=88L    #   
=8N=    #     ROUTINE TO DO THE FINAL SYNTAX ANALYSIS ON
=97W    #     THE 'TG' AND 'PG' INSTRUCTIONS
=9MG    #     EXITS    CALL+1      SYNTAX ERROR 
==76    #              CALL+2      SYNTAX OK
==LQ    #   
=?6B    PGTG
=?=? ...      LDX   4  IEWT(2)  
=?B8 ...      ANDN  4  #1   
=?G5 ...      BZE   4  TATA                [J IF NOT CONTEXT
=?L2          LDCT  4  #100 
=#5L          ANDX  4  IEWT+1(2)
=#K=          BZE   4  TATA                [NOT 'TG OR 'PG' 
=*4W          LDN   4  #4   
=*JG          ANDX  4  IESW(2)  
=B46          BZE   4  (6)                 [NOT 'GEDIT' 
=BHQ          LDX   4  IESP(2)  
=C3B          BNZ   4  (6)                 [J IF NESTED 
=CH2          LDX   4  IEWT+1(2)
=D2L          ANDX  4  BSB18               [#00777777   
=DG=          SBN   4  4
=D^W          BNZ   4  (6)                 [NOT FOUR CHAR STRING
=FFG    TATA  EXIT  6  1                   [OK  
=F^6    )   
=GDQ    #   
=GYB    #     THIS ROUTINE CHECKS ON THE JOBTIME. IF EXCEEDED AND NOT   
=HD2    #     MOP THEN EDIT IS ABANDONED. FOR MOP MORE TIME IS GIVEN.   
=JC=    #   
=JWW ...TIME
=KBG ...      CALL  4  XJOBTIME 
=MSL          TXL   7  ATIMEJ+1(3)         [TEST FOR TIME UP
=N#=          TXL   6  ATIMEJ(3)
=NRW          BCS      TIMEX               [J IF NOT TIME UP
=P?G          LDX   6  CONTEXT(2)   
=PR6          SRC   6  4
=Q=Q          BPZ   6  XITER               [FINISH IF NOT MOP JOB   
=QQB          SBX   5  1
=R=2          STO   5  AWORK1(2)           [SAVE LINK   
=RPL          LDX   6  JOBTIME  
=S9=          MPY   6  THOU(1)             [MILLISECS   
=SNW          ADSC  7  ATIMEJ+1(3)         [INCREASE USERS JOBTIME  
=T8G          ADS   6  ATIMEJ(3)
=TN6          MONOUT   JOBTEX              [COMMENT ON FACT 
=W7Q          LDX   5  AWORK1(2)           [RESTORE LINK
=WMB          ADX   5  1
=X72    TIMEX EXIT  5  0
=XLL    #PAG
=Y6=    #   
=YKW    #     TRANSLATE IS THE ROUTINE WHICH ACTUALLY CAUSES THE INSTRUCTIONS TO
=^K6    #     COMPLICATED BY THE FACT THAT BRACKETS ARE ALLOWED. THIS ROUTINE   
?24Q    #     ONLY TAKES VALUES OUT OF THE STACK WHICH ARE LEFT THERE BY THE
?2JB    #     ROUTINE PREPARSE. THE THREE INSTRUCTIONS FOR LEFT PARENTHESIS ARE 
?342    #     THE ONES WHICH DO THE RECURSION.  
?3HL    #   
?43=    T3                                 [INSTRUCTION EXECUTION FANOUT
?4GW    #REP  #20   
?52G          0 
?5G6    N10EDITOR   
?5^Q    TRANSLATE                          [THIS IS IT !
?6FB    #   
?6P8 ...      TESTBRKIN    N8EDITOR 
?78S ...TRANS   
?7DL          CALL  5  TIME                [CHECK ON JOB TIME   
?7Y=          CALL  6  RLIF                [GET INSTRUCTION BLOCK   
?8CW          CALL  0  OH                  [ERROR IF LOST   
?8XG          LDX   6  IEPS(2)             [RESET THE CURRENT POINTER   
?9C6          STO   6  IEIP(2)             [TO WHERE PERPARSE STARTED   
?9WQ          LDCT  6  #100                [CLEAR   
?=BB          ORS   6  IESW(2)             [I   
?=W2          ERS   6  IESW(2)             [SWITCH  
??*L    #   
??T=    TR1   CALL  6  NCH                 [GET CHARACTER   
?##W          BRN   PREPARSE               [IF END START AGAIN  
?#D2 ...#     BEFORE EXECUTING ANY INSTRUCTION TEST IF  
?#H6 ...#     WE ARE ON A TERMINATOR.  THE ROUTINE  
?#L= ...#     WILL ONLY RETURN IF WE ARE NOT
?#PB ...      DOWN  EDITPT,12   
?#Q7 ...#  REHUNT EDIT FILE 
?#QY ...      CALL  6  RLIF 
?#RP ...      CALL  0  OH   
?#SG          TRACE 7,IENSTRUK  
?*#6          CALL  6  TLU                 [LOOK UP THE 
?*RQ          ADN   3  T3(1)               [TABLE AT T3 
?B?B          EXIT  3  TR0                 [AND FANOUT  
?BR2    #   
?C=L    UINS  PAIR  EDITMFO,1   
?CQ=    MINS  PAIR  EDITMFO,2   
?D9W    UMIN  ACROSSVAR 0(1)
?DPG    #   
?F96    MMMM  CALL  4  STNP                [LOCATE FIRST CHARACTER  
?FNQ          STO   0  IEIP(2)             [ADDRESS OF 1ST CHARACTER
?G8B          LDN   1  MINS(1)             [J TO OPEN FILE  
?GN2          BRN      UMIN 
?H7L    #   
?HM= ...OOOO  ACROSS   EDITORA,3           [O INSTRUCTION   
?J6W ...XHHH  ACROSS   EDITORA,4           [H INSTRUCTION   
?JLG ...NLSW  ACROSS   EDITORA,5           [N,L & W INSTRUCTIONS
?K66 ...XI    ACROSS   EDITORA,6           [I INSTRUCTION   
#8M6    OH    GEOERR   1,EDIT   
#96Q    #   
#9LB    XECUTE                             [THIS EOES X INSTRN  
#=62          CALL  6  PULLUP              [PULLUP INPUT STACK  
#=KL          DOWN  EDITPT,11   
#?5=          STOZ     IENO(2)             [X SIMULATES O#  
#?8B ...      LDX   7  IESW(2)             [CHECK FOR W FACILITY
#??G ...      SLL   7  3
#?BL ...      BPZ   7  WINDT               [J IF W NOT BEING USED   
#?FQ ...      DOWN  EDWRITE,10             [LIST THE RECORD 
#?JW          BRN   WINDT                  [CARRY ON
##4G    TR0   CALL  0  OH   
##J6    #   
#*3Q    SHIFT CALL  5  NCHX                [DELTA SHIFT 
#*HB          BXE   7  O31(1),TR1          [IGNORE IF <TAB> 
#B32          BXU   7  O32(1),OH           [J NOT <NEWLINE> 
#BGL          STOZ  IEIP(2)                [IMPLEMENT IT
#C2=    #   
#CFW          IETS  #34,0?-TR0,T3          [COMMA: TO BE IGNORED
#C^G    #   
#DF6          BRN   PREPARSE
#DYQ    #   
#FDB          IETS  #20,0?-TR0,T3   
#FY2          IET   ],$ 
#GCL          BRN   TR1 
#GX=    #   
#HBW          IETS  ^,0?-TR0               [DELTA SHIFT 
#HWG          BRN   SHIFT                  [LOOK AT IT  
#JB6    #   
#JTQ          IETS  V,0?-TR0               [V INSTRUCTION   
#K*B          BRN   VI                     [EXECUTE 
#KT2    #   
#L#L          IETS  D,0?-TR0               [D INSTRUCTION   
#LS=          BRN   XDI                    [EXECUTE 
#M?W    #   
#MRG          IETS  L,0?-TR0               [L INSTRUCTION   
#N?6 ...      LDCT  4  #400                [L-SWITCH BIT
#NQQ          BRN   NLSW
#P=B    #   
#PQ2          IETS  N,0?-TR0               [N INSTRUCTION   
#Q9L ...      LDCT  4  #200                [N-SWITCH BIT
#QP=          BRN   NLSW
#R8W    #   
#RNG          IETS  W,0?-TR0              [W INSTRUCTION
#S86 ...      LDCT  4  #40                 [W SWITCH BIT
#SMQ          BRN   NLSW
#T7B    #   
#TM2          IETS  Z,0?-TR0               [Z INSTRUCTION   
#W6L          CALL  6  POPUP               [POPUP INSTRUCTION STACK 
#WL=          BRN   WINDT                  [CARRY ON
#X5W    #   
#XKG          IETS  X,0?-TR0               [X INSTRUCTION   
#Y56          BRN   XECUTE                 [J TO DO X   
#YJQ    #   
#^4B    #   
#^J2          IETS  F,0?-TR0               [F INSTRUCTION   
*23L          DOWN  EDWRITE,9              [EXECUTE IT  
*2H=          BRN   WINDT   
*32W    #   
*3GG          IETS  A,0?-TR0               [A INSTRUCTION   
*426          CALL  6  SPDS                [EVALUATE OPERAND
*4FQ          ACROSS   EDITPT,3            [EXECUTE INSTRUCTION 
*4^B    #   
*5F2          IETS  B,0?-TR0               [B INSTRUCTION   
*5YL          CALL  6  SPDS                [EVALUTE OPERAND 
*6D=          ACROSS   EDITPT,4            [EXECUTE INSTRUCTION 
*6XW    #   
*7CG          IETS  R,0?-TR0               [R INSTRUCTION   
*7X6          CALL  6  SPDS                [EVALUATE OPERAND
*8BQ          ACROSS   EDITPT,5            [EXECUTE INSTRUCTION 
*8WB    #   
*9B2          IETS  T,0?-TR0               [T INSTRUCTION   
*9TL          CALL  6  SPTR                [SET PARAMETERS  
*=*=          CALL  6  TERM                [EVALUATE <TERMINATOR>   
*=SW    #SKI  JDIAG1
*?#G    (   
*?S6          CALL  6  PGTG                [CHECK 'TG'  
*#?Q          BRN      SE3  
*#RB    )   
**?2    TR4   ACROSS   EDITPT,7            [EXECUTE INSTRUCTION 
**QL    #   
*B==          IETS  P,0?-TR0               [P INSTRUCTION   
*BPW          CALL  6  SPTR                [SET PARAMETERS  
*C9G          CALL  6  TERM                [EVALUATE <TERMINATOR>   
*CP6    #SKI  JDIAG1
*D8Q    (   
*DNB          CALL  6  PGTG                [CHECK 'PG'  
*F82          BRN      SE3  
*FML    )   
*G7=          ACROSS   EDITPT,8            [EXECUTE INSTRUCTION 
*GLW    #   
*H6G          IETS  #23,0?-TR0             [IMPLICIT T INSTRUCTION  
*HL6          IET   -,0,1,2,3,4,5,6,7,8,9,. 
*J5Q          CALL  6  SPTR                [SET PARAMETERS  
*JKB          LDN   6  TR4(1)              [EXECUTES INSTRUCTION
*K52          BRN   TERI                   [EVALUATES <TERMINATOR>  
*KJL    #   
*L4=          IETS  M,0?-TR0               [M INSTRUCTION   
*LHW          BRN      MMMM 
*M3G    #   
*MH6          IETS     O,0?-TR0            [O INSTRUCTION   
*N2Q          BRN      OOOO 
*NGB    #   
*P22          IETS     H,0?-TR0            [H INSTRUCTION   
*PFL          BRN      XHHH 
*P^=    #   
*QDW          IETS  E,0?-TR0               [E  INSTRUCTION  
*QYG    N11EDITOR   
*RD6    XEND  ACROSS   EDITPT,2            [COPY FILE AND FINISH
*RXQ    #   
*SCB          IETS  Q,0?-TR0               [Q INSTRUCTION   
*SX2          BRN      XBK1                [ABANDON 
*TBL    #   
*TW=          IETS  #30,0?-TR0             [LEFT PARENTHESIS
*W*W          BRN   PARL                   [RECURSE 
*WTG    #   
*X*6          IETS  #31,0?-TR0             [RIGHT PARENTHESIS   
*XSQ          BRN   WIN1
*Y#B    #   
*YS2          IETS  I,0?-TR0               [I INSTRUCTION   
*^?L          CALL  4  STNP                [FIND <STRING-DELIMITER> 
*^R=          BRN      XI                  [AND INSERT STRING   
B2=W    #   
B2QG    TR2   IETS  U,0?-TR0               [U INSTRUCTION   
B3=6          CALL  6  NCH                 [NEXT CHARACTER  
B3PQ          BRN   TR3                    [J NO OPERAND
B49B          BXE   7  O20(1),TR2          [IGNORE SPACE
B4P2          BXE   7  O34(1),TR3          [J NO OPERAND
B58L          BXE   7  O31(1),TR3          [J NO OPERAND
B5N=          STO   0  IEIP(2)             [RESET CHARACTER 
B67W          LDN   1  UINS(1)             [POSITION AND
B6MG          BRN   UMIN                   [J TO OPEN FILE  
B776    TR3   STO   0  IEIP(2)             [RESET CHARACTER POSITION
B7LQ          CALL  6  UMOP                [PUSH DOWN INSTRUCTION STACK 
B86B    #   
B8L2    #                                  INSTRUCTION EXECUTED 
B95L    #   
B9K=    N3EDITOR
B=4W ...WINDT   
B=JG          CALL  6  RLIF                [FIND BLOCK  
B?46          CALL  0  OH                  [ERROR IF LOST   
B?HQ    WIN0  CALL  6  NCH                 [ANOTHER CHARACTER   
B#3B          BRN   WIN5                   [END, CHECK  STACK   
B#H2          BXE   7  O20(1),WIN0          [LOOP IF SPACE  
B*2L          BXE   7  O34(1),PREPARSE     [*34 ENDS <INSTRUCTION>  
B*G=          BXE   7  O31(1),WIN1         [*31, CHECK STACK
B*^W          BXE   7  O32(1),WIN00        [J IF #32,ELSE ERROR 
BBFG          STO   0  IEPS(2)  
BB^6          BRN      SE3  
BCDQ    WIN00 SMO      IESP(2)             [GET THE CURRENT 
BCYB          LDX   4  IESTACK+1(2)        [REPEAT ENTRY
BDD2          BZE   4  SE3                 [(ERROR IF ALREADY ZERO) 
BDXL          SBN   4  1                   [AND DECREMENT   
BFC=          BZE   4  WIN4                [J IF FINISHED   
BFWW          SMO   IESP(2)                [ELSE LEAVE NEW  
BGBG          STO   4  IESTACK+1(2)        [VALUE   
BGW6          COOR2                        [WAIT
BJ*2 ...      BRN   TRANS                  [REPEAT  
BJSL    WIN1
BK#=          LDX   3  IESP(2)  
BKRW          ANDX  3  BITS22LS 
BL?G          BZE   3  SE4                 [SYNTAX ERROR SINCE STACK UNDERFLOWS 
BLR6          ADS   2  3                   [ELSE GET CURRENT STACK MODIFIER 
BLW= ...#UNS  EDLOOP
BL^B ...      LDXC  5  IESTACK-9(3)        [GET STACK ENTRY 
BM4G ...#UNS  EDLOOP
BM7L ...#SKI
BM=Q          LDXC  5  IESTACK-7(3)        [GET STACK ENTRY 
BM?K ...#UNS  ICT   
BM#D ...(   
BM*? ...      BCC      WIN1A               [J IF NOT CONDIT. REPETITION 
BMB6 ...      LDCT  4  1                   [J IF ACTIVITY PRIORITY REDUCED  
BMB^ ...      ANDX  4  IESW(2)             [ALREADY 
BMCS ...      BNZ   4  WIN2 
BMDM ...      LDCT  4  1                   [CHANGE PRIORITY TO LOWEST VALUE &   
BMFG ...      ORS   4  IESW(2)             [SET SWITCH  
BMG* ...      APCHANGE DOWN 
BMH8 ...      CALL  6  RLIF                [FIND INSTRUCTION BLOCK  
BMJ3 ...      CALL  0  OH                  [ERROR IF LOST   
BMJ9 ...      LDX   3  IESP(2)             [RELOAD X3 OVERWRITTEN BY RLIF   
BMJC ...      ANDX  3  BITS22LS 
BMJK ...      ADS   2  3
BMKP ...      BRN      WIN2 
BMLJ ...WIN1A   
BMMC ...)   
BMN= ...#UNS  ICT   
BMP5 ...#SKI
BMQB          BCS   WIN2                   [J IF<TERMINATOR>
BMTG ...#UNS  EDLOOP
BMYL ...      LDX   4  IESTACK-8(3)        [GET COUNTER 
BN3Q ...#UNS  EDLOOP
BN6W ...#SKI
BN=2          LDX   4  IESTACK-6(3)        [GET COUNTER 
BNPL          SBN   4  1
BP9=          BZE   4  WIN3                [J IF ENOUGH 
BP#B ...#UNS  EDLOOP
BPCG ...      STO   4  IESTACK-8(3)        [AND RESET   
BPGL ...#UNS  EDLOOP
BPKQ ...#SKI
BPNW          STO   4  IESTACK-6(3)        [AND RESET   
BPPS ...#UNS  EDLOOP
BPQQ ...(   
BPRN ...      BRN      WIN2B               [J IF NOT CONDITIONAL REPETITION 
BPSL ...WIN2  LDX   5  IEOR(2)             [LOAD CURRENT OLDFILE RECORD NO  
BPTJ ...      LDX   6  IEOC(2)             [LOAD CURRENT OLDFILE CHARACTER NO   
BPWG ...      TXU   5  IESTACK-2(3)        [J IF DIFFERENT POSITION IN OLDFILE  
BPXD ...      TXU   6  IESTACK-1(3)        [FROM LAST PASS THRU REPEATED INSTNS 
BPYB ...      BCS      WIN2A
BP^# ...      LDX   6  IESTACK-9(3)        [SET IEPS TO POINT TO (  
BQ2= ...      ANDX  6  BITS22LS 
BQ38 ...      SBN   6  1
BQ46 ...      SRC   6  2
BQ54 ...      STO   6  IEPS(2)  
BQ62 ...      LDX   6  IESTACK-8(3)        [SET IEIP TO POINT AFTER TERMINATOR  
BQ6Y ...      STO   6  IEIP(2)             [TO OUTPUT IN FULL INCORRECT REPETITI
BQ7W ...                                   [INSTRUCTIONS
BQ8S ...      EDERR    INCL                [REPORT ERROR-INSTRUCTION NOT
BQ9Q ...      DOWN     EDITER,4            [COMPLETED,WOULD CAUSE EDITOR TO LOOP
BQ=N ...      STOZ     IESP(2)             [CLEAR STACK 
BQ?L ...      BRN      NER                 [ABORT UNLESS MOP ONLINE EDIT
BQ#J ...WIN2A STO   5  IESTACK-2(3) 
BQ*G ...      STO   6  IESTACK-1(3) 
BQBD ...      LDXC  5  IESTACK-9(3)        [RELOAD X5   
BQCB ...WIN2B SRC   5  2
BQD# ...)   
BQF= ...#UNS  EDLOOP
BQG8 ...#SKI
BQH6 ...(   
BQJ4 ...      BRN      WIN2B
BQK2 ...WIN2  LDXC  5  IESTACK-7(3)        [RELOAD X5,MAYBE OVERWRITTEN BY RLIF 
BQKY ...WIN2B SRC   5  2
BQLW ...)   
BQN6          STO   5  IEIP(2)             [ADDRESS AND 
BQPH ...      SEGENTRY K60EDITOR
BQQY ...      BRN      RP10 
BQS* ...#                                  [TO USE MILL.
BQTQ ...      LDX   6  ACTCHCH(2)          [CALL LETOPRUN IF NO. OF CHAPTER 
BQX7 ...      SBX   6  IERP(2)             [CHANGES SINCE PREVIOUS LETOPRUN 
BQYJ ...      BXL   6  EDRPCHCH,RP10       [NOT LESS THAN N(NIS EDITRP PARAM.). 
BQ^^ ...      LETOPRUN                     [LET ANOTHER ACTIVITY OR PROGRAM 
BR3B ...      LDX   6  ACTCHCH(2)          [USE MILL
BR4R ...      STO   6  IERP(2)             [STORE NO. OF CHAPTER CHANGES
BR5= ...      BRN      PREP                [FIND INSTRUCTION BLOCK & CARRY ON   
BR68 ...RP10
BR6^ ...      SEGENTRY K61EDITOR
BR7Q          BRN   PREPARSE               [CARRY ON
BRMB    WIN3  LDX   4  IESP(2)             [PULL UP STACK   
BS72          SLC   4  1                   [IF THIS LEAVES  
BS=6 ...#UNS  EDLOOP
BS*= ...      SBN   4  18                  [THE POINTER NEGATIVE
BSDB ...#UNS  EDLOOP
BSHG ...#SKI
BSLL          SBN   4  14                  [THE POINTER NEGATIVE
BT6=          BPZ   4  WIN30               [WE HAVE REACHED THE END 
BT7D ...#UNS  ICT   
BT8L ...(   
BT9S ...      LDCT  6  1                   [J IF ACTIVITY PRIORITY HAS NOT BEEN 
BT?2 ...      ANDX  6  IESW(2)             [CHANGED TO LOWEST VALUE 
BT#8 ...      BZE   6  WIN3A
BT*B ...      LDCT  6  1                   [RESET ACTIVITY PRIORITY OF CPAT 
BTBJ ...      ERS   6  IESW(2)             [& UNSET SWITCH  
BTCQ ...      APCHANGE UP   
BTDY ...      CALL  6  RLIF                [FIND INSTRUCTION BLOCK  
BTG6 ...      CALL  0  OH                  [ERROR IF LOST   
BTH# ...WIN3A   
BTJG ...)   
BTKW          STOZ  IESP(2)                [SO WE SHOULD
BW5G          BRN   WIN4                   [CLEAR POINTER   
BWK6    WIN30 SRC   4  1                   [ELSE STORE  
BX4Q          STO   4  IESP(2)             [NEW VALUE   
BXJB    WIN4  CALL  6  NCH                 [END OF THE INSTRUCTION  
BY42          BRN   PREPARSE               [J FOR END   
BYHL          BXE   7  O34(1),PREPARSE     [*34 IS END  
B^3=          BXU   7  O31(1),WIN4         [LOOP IF NOT *31 EITHER  
B^GW          BRN   WIN1                   [*31 SO REPEAT   
C22G    WIN5  LDXC  7  IESP(2)             [CHECK STACK 
C2G6          BZE   7  PREPARSE            [J IF OK 
C2^Q          CALL  0  OH                  [ELSE ERROR  
C3FB    #   
C3^2    STNP  CALL  6  NCH                 [SKIP TO FORST NON-SPACE CHARATCER   
C4DL          BRN      SE4                 [ERROR IF OFF END
C4Y=          BXE   7  O20(1),STNP         [LOOP IF NOT *20 
C5CW          EXIT  4  0                   [ELSE EXIT   
CW#Q    #   
CWSB    #     THIS  ROUTINE SETS THE PARAMETERS FOR TRANSLATE TO CALL TERM  
CX#2    #   
CXRL    SPTR  LDN   3  IEWT                [ADDRESS OF O/P  
CY?=          LDX   4  IEOC(2)             [CURRENT CHARACTER NUMBER
CYQW          LDX   5  IEOR(2)             [CURRENT RECORDNUMBER
C^=G          EXIT  6  0
C^Q6    #   
D29Q    #     THE ROUTINES TERM AND TERI ARE IN SEGMENT EDITET. 
D2PB    #   
D392    TERM  SBX   6  1                   [RELATIVISE LINK 
D3NL          DOWN  EDITET,1               [EVALUATE FROM NEXT CHARACTER
D48=          BRN   NER                    [J IF SYNTAX ERROR   
D4MW          ADS   1  6                   [DATUMISE LINK   
D57G          EXIT  6  0                   [AND RETURN  
D5M6    #   
D66Q    TERI  SBX   6  1                   [RELATIVISE LINK 
D6LB          DOWN  EDITET,2               [EVALUATE FROM THIS CHARACTER
D762          BRN   NER                    [J IF SYNTAX ERROR   
D7KL          ADS   1  6                   [DATUMISE LINK   
D85=          EXIT  6  0                   [AND RETURN  
D8JW    #   
D94G    #     THIS  ROUTINE EVALUATES THE OPERAND FOR THE A,B AND R INSTRUCTIONS
D9J6    #     OUTPUT IS IN IEWT AS FOLLOWS: 
D=3Q    #   
D=HB    #     IEWT+1   ADDRESS OF FIRST CHARACTER IN FIRST STRING   
D?32    #     IEWT+2   LENGTH OF FIRST STRING   
D?GL    #     IEWT+3   ADDRESS OF FIRST CHARACTER IN SECOND STRING  
D#2=    #     IEWT+4   LENGTH OF SECOND STRING  
D#FW    #   
D#^G    #     NOTE THAT NULL STRINGS ARE ALLOWED HERE.  
D*F6    #   
D*YQ    SPDS  STO   6  IEL1(2)             [STORE LINK  
DBDB          CALL  4  STNP                [FIND FIRST NON-SPACE CHARACTER  
DBY2          STO   7  5                   [REMEMBER IT 
DC7S          STOZ     IEWT(2)             [IN CASE LAST INST. WAS'P-'  
DCCL          LDN   1  IEWT+1(2)             [ADDRESS OF O/P
DCX=    SPD1  STO   3  0(1)                [STORE STRING ADDRESS
DDBW          NGN   4  1                   [CUNNING COUNT SET   
DDWG    SPD2  CALL  6  NCH                 [GET NEXT CHARACTER  
DFB6          CALL  0  OH                  [ERROR IF END OF BLOCK   
DFTQ          ADN   4  1                   [COUNT CHARACTER 
DG*B          BXE   7  5,SPD3              [J IF TERMINAL QUOTE 
DGT2          BXU   7  IEVS(2),SPD2        [LOOP IF NOT V.S.
DH#L          LDX   3  0                   [ELSE REPLACE THE
DHS=          LDN   7  #20                 [V.S. CHARACTER IN   
DJ?W          SMO   IEIA(2)                [THE BUFFER BY A 
DJRG          DCH   7  0(3)                [SPACE THEN LOOP 
DK?6          BRN   SPD2                   [AS BEFORE   
DKQQ    SPD3  STO   4  1(1)                [STORE LENGTH
DL=B          ADN   1  2                   [INCREMENT ADDRESS   
DLQ2          BVCI  SPD1                   [FLOP
DM9L          LDX   6  IEL1(2)             [<ET LINK
DMP=          LDX   1  FX1                 [RESET   
DN8W          EXIT  6  0                   [AWAY
DN#R ...#   
DNDN ...PREP  CALL  6  RLIF                [FIND INSTRUCTION BLOCK  
DNJK ...      CALL  0  OH                  [ERROR IF LOST   
DNNG    #   
DP86    N1EDITOR
DPMQ    PREPARSE                           [PREPARSE IS DEALT WITH BY EDITSAR   
DQ7B    #   
DQM2    #                                  ['ABANDON HOPE ALL YE WHO.........'  
DR6L    #   
DR7M ...#UNS  ICT   
DR8N ...(   
DR9P ...      LDCT  6  1                   [J IF ACTIVITY PRIORITY HAS NOT BEEN 
DR=Q ...      ANDX  6  IESW(2)             [CHANGED TO LOWEST VALUE 
DR?R ...      BZE   6  PREP1
DR#S ...      LDXC  6  IESP(2)             [J IF STILL CONDIT. REPETITION   
DR*T ...      BCS      PREP1
DRBW ...      LDCT  6  1                   [RESET ACTIVITY PRIORITY OF CPAT 
DRCX ...      ERS   6  IESW(2)             [& UNSET SWITCH  
DRDY ...      APCHANGE UP   
DRF^ ...      CALL  6  RLIF                [FIND INSTRUCTION BLOCK  
DRH2 ...      STOZ     IEIP(2)             [NO FILE/FRB SO FORCE A RE-READ  
DRJ3 ...PREP1   
DRK4 ...)   
DRL=          CALL  6  NCH                 [GET A CHARACTER 
DS5W ...      BRN   PREPARSE               [REPEAT FOR NEWLINE  
DSKG          SBN   7  #45                 [CHECK IF E(FINISHES EDIT)   
DT56          BZE   7  XEXT                [DON'T BOTHER WITH PREPARSE  
DTJQ          STO   0  IEIP(2)             [STEP BACK CHARACTER 
DW4B          ACROSS   EDITAR,1            [EDITOR ANALYSIS ROUTINES
DWBR ...XEXT  STO   0  IEPS(2)  
DWP8 ...      CALL  4  NEXT                [CHECK NO RUBBISH AFTER E
DX3L          BRN      XEND 
DXH=    #   
DY2W    #   
DYGG    N5EDITOR                           [ENTERED FROM K2EDITPT   
D^26    #   
D^FQ          CALL  6  PULLUP   
D^^B          UP
F2F2    #   
F2YL    #   
F3D=     MENDAREA 1023-0?<100,K100EDITOR
F3XW    #END
^^^^ ...300240420004
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1