EDITET7

(George Source)

Macros used: ALASHUNT, BACKSPACE, BRKINOFF, BXE, BXGE, BXU, CLOSE, DOWN, EDERR, FILEMOVE, GEOERR, IET, IETS, MENDAREA, MHUNTW, PHOTO, SEGENTRY, SUBREC, TESTBRKIN, TESTMOVE, UP, UPPLUS

EDITET7.txt
22FL    #LIS  K0EDITET>K0ALLGEO>0   
22^=    #SEG  EDITET7                      [DICK RUSBRIDGE  
23DW          8HEDITET  
23YG    #   
24D6    #     THIS SEGMENT ENCODES <TERMINATOR>.
24XQ    #   
25CB    #              ENTRY POINT TABLE
25X2    #   
26BL     SEGENTRY K1EDITET,N1EDITET        [ANALYSE FROM NEXT CHAR.-
26W=     SEGENTRY K2EDITET,N2EDITET        [ANALYSE FROM CURRENT CHAR.  
27*W     SEGENTRY K3EDITET,N3EDITET        [PART 0 INSTRUCTION  
27TG     SEGENTRY K4EDITET,N4EDITET        [CLEARS BREAK-IN (FROM EDITOR)   
28*6     SEGENTRY K5EDITET,N5EDITET        [BODY OF POPUP IN EDITOR (X) 
28SQ     SEGENTRY K6EDITET,N8EDITET        [BODY OF PULLUP IN EDITOR (Z)
29#B     SEGENTRY K7EDITET,N7EDITET        [BODY OF UMOP IN EDITOR (U)  
29S2    #   
2=?L    O30   #30   
2=R=    O31   #31   
2?=W    O34   #34   
2?QG    #   
2#=6    #   
2#PQ    #     XCLSE CLOSES THE FILE ON TOP OF THIS ACTIVITIES FILE STACK
2*9B    #   
2*P2    XCLSE SBX   6  1
2B8L          CLOSE 
2BN=          ADS   1  6
2C7W          EXIT  6  0
2CMG    #   
2D76    #   
2DLQ    #     RLIF RELOCATES THE INSTRUCTION BLOCK  
2F6B    #   
2FL2    RLIF  LDX   5  IEIM(2)              [GET PHOTO  
2FTS ...      LDX   3  IEIA(2)  
2G5L          TESTMOVE 5,RL1                [J IF NOT MOVED 
2GK=          MHUNTW   3,FILE,FRB          [ELSE REDUNDANT  
2H4W          PHOTO    5
2HJG          STO   3  IEIA(2)              [STORE NEW WHERE
2J46          STO   5  IEIM(2)              [AND WHEN   
2JHQ    RL1   EXIT  6  0
2K3B    #   
2KH2    #     NCH IS THE NEXT CHARACTER FROM EDITING FILE ROUTINE.  THE REQUIRED
2L2L    #     CHARACTER IS PUT INTO X7 AND EXIT IS TO CALL+2. AN ATTEMPT TO READ
2LG=    #     OFF THE BLOCK CAUSES EXIT TO CALL+1. A SUBSEQUENT CALL WILL CAUSE 
2L^W    #     GEOERR EDITET. ADDRESS OF LAST CHARACTER IS LEFT IN X0.   
2MFG    #   
2M^6    NCH   LDX   3  IEIP(2)             [ADDRESS OF NEXT CHARACTER   
2NDQ          BZE   3  NCH3                [J IF OFF END LAST TIME  
2NYB          STO   3  0                   [GET CHARACTER ADDRESS OF END OF 
2PD2          SLC   0  2                   [BLOCK AND PERFORM ARITHMETIC
2PXL          SBX   0  IEIH(2)             [TO DETERMINE IF WE ARE ABOUT TO RUN 
2QC=          BPZ   0  NCH2                [OFF THE END OF THE BLOCK
2QWW    NCH1  SMO   IEIA(2)                [MODIFY BY ADDRESS OF BLOCK  
2RBG          LDCH  7  0(3)                [LOAD CHARACTER INTO X7  
2RW6          LDX   0  3                   [LEAVE ADDRESS IN X0 
2S*Q          BCHX  3  £                   [INCREMENT ADDRESS   
2STB          STO   3  IEIP(2)             [STORE ADDRESS OF NEXT CHARACTER 
2T*2          EXIT  6  1                   [AND RETURN TO CALL+2
2TSL    NCH2  STOZ  IEIP(2)                [CLEAR POINTER FOR NEXT TIME 
2W#=          STO   3  0                   [OLD CHARACTER ADDRESS   
2WRW          EXIT  6  0                   [AND RETURN TO CALL+1
2X?G    NCH3  GEOERR   1,EDITET 
2XR6    #   
2Y=Q    NCHX  CALL  6  NCH                 [NEXT CHARACTER WITH A SYNTAX
2YQB          BRN   SE4                    [ERROR IF OFF END
2^=2          EXIT  5  0
2^PL    #   
329=    #     CODE FOR DEALING WITH SYNTAX ERRORS.  
32NW    #     ENTRIES ARE - 
338G    #     SE1   SCAN, STARTING AT NEXT CHARACTER
33N6    #     SE2   SCAN, STARTING AT THIS CHARACTER
347Q    #     SE3   SCAN ENDED AT CURRENT CHARACTER 
34MB    #     SE4   SCAN ENDED AT LAST CHARACTER
3572    #   
35LL    #   
366=    SE1   CALL  5  NCHX                [GET ANOTHER CHARACTER   
36KW    SE2   BXE   7  O31(1),SE3          [J IF *31
375G          BXU   7  O34(1),SE1          [LOOP NOT *34
37K6    SE4   STO   0  IEIP(2)  
384Q    SE3 
38JB          DOWN  EDITER,3               ['SYNTAX ERROR : OH!'
3942    NER   UP
39HL    #   
3=3=    TLU   STO   7  3                   [TABLE LOOK-UP   
3=GW          SRC   3  2                   [CONVERT TO CHARACTER ADDRESSS   
3?2G ...      SMO      6
3?G6 ...      OBEY     0
3?^Q          LDCH  3  0(3)                [ACCESS TABLE
3#FB          ADS   1  3                   [DATUMISE RESULT 
3#^2          EXIT  6  1                   [AND FINISH  
3*DL    #   
3*Y=    #   
3BCW    #     MULTIFLICATION ROUTINE. STOPS AT FIRST NON-DECIMAL CHARACTER. 
3BXG    #   
3CC6    MULT  STO   6  AWORK3(2)           [STORE LINK  
3CWQ          LDN   4  0                   [AND SET RESULT  
3DBB          LDN   5  0                   [TO ZERO.
3DW2          BRN   MM4                    [FIRST CHARACTER IN X7   
3F*L    MM1   EDERR NUTL                   ['NUMBER TOO LARGE'  
3FT=          BRN      SE2                 ['SYNTAX ERROR: NNNNNNNN'
3G#W    MM2   STO   0  IEIP(2)             [STEP BACK CH PTR
3GSG          BNZ   4  MM1                 [J IF TOO LARGE  
3H#6          LDX   6  AWORK3(2)           [GET LINK
3HRQ          STO   5  IEBF(2)             [STORE RESULT
3J?B          EXIT  6  0                   [AND FINISH  
3JR2    MM3   CALL  6  NCH                 [NEXT CHARACTER  
3K=L          BRN   MM2                    [J IF END
3KQ=    MM4   CDB   4  7                   [CONVERT 
3L9W          BCS   MM2                    [J IF END
3LPG          BVSR  MM1                    [J IF  HUGE  
3M96          BRN   MM3                    [CARRY ON
3MNQ    #   
3N8B    #     THIS SUBROUTINE ANALYSES <TERMINATOR>, THE SYNTAX OF WHICH MAY BE 
3NN2    #     FOUND IN THE USER SPECIFICATION. ENTRIES ARE: 
3P7L    #   
3PM=    #     1     TERM - ANALYSE FROM THE NEXT CHARACTER. 
3Q6W    #     2     TERI - ANALYSE FROM CURRENT CHARACTER IN X7.
3QLG    #   
3R66    #     ENTRY CONDITIONS: 
3RKQ    #   
3S5B    #     X3 = ADDRESS OF 5-WORD OUTPUT AREA
3SK2    #     X5 = CURRENT OLD FILE RECORD NUMBER   
3T4L    #     X4 = CURRENT OLD FILE CHARACTER NUMBER
3TJ=    #   
3W3W    #     OUTPUT FORMAT:
3WHG    #   
3X36    #     [X3]+0   0.0 E
3XGQ    #              1.0 CONTEXT FORWARDS 
3Y2B    #              1.2 CONTEXT BACKWARDS
3YG2    #              2.0 ABSOLUTE FORWARDS
3Y^L    #              2.2 ABSOLUTE BACKWARDS   
3^F=    #     [X3]+1   ABSOLUTE RECORD NUMBER / CHARACTER COUNT 
3^YW    #                                  B0=1  CONTAINS   
42DG    #                                  B1=1  SPACES 
42Y6    #                                  B2=1  G INSTRUCTION  
43CQ    #     [X3]+2   ZERO / CHARACTER ADDRESS 
43XB    #     [X3]+3   SIGNED CHARACTER NUMBER / SIGNED CHARACTER COUNT 
4478 ...#     [X3]+4   ZERO / CHARACTER ADDRESS 
44C2 ...#                          B2=1 IF .E   
44LS ...#                          B3=1 IF .S   
44WL    #   
45B=    #   
45TW    #     IEL2 IS AN ADDITIVE CONTEXT COUNTER. VALUES ARE:  
46*G    #   
46T6    #     1     #   
47#Q    #     2     - FIRST TIME
47SB    #     4     C   
48#2    #     10    STRING FIRST TIME   
48RL    #     20    NUMBER FIRST TIME   
49?=    #     40    RECORD COMPLETE 
49QW    #     100   - SECOND TIME   
4==G    #     200   NUMBER SECOND TIME  
4=Q6    #     400   STRING SECOND TIME  
4?9Q    #     1000  E SECOND TIME   
4?PB    #     2000  S   
4#92    #     4000  G   
4#B8 ...#     10000 S SECOND TIME (.S)  
4#HB ...#     20000 #SECOND TIME (.#)   
4#NL    #   
4*8=    #     THIS ROUTINE STORES THE INPUT PARAMETERS  
4*MW    #     AND INITIALISES THE OUTPUT AREA.  
4B7G    #   
4BM6    TESP  ADS   2  3                   [ADDRESS OF O/P  
4C6Q          STO   3  IEL3(2)             [AND IN FX2  
4CLB          STOC  4  IEL4(2)             [CHARACTER NUMBER
4D62          STOZ  IEL2(2)                [INITIALISE CONTEXT  
4DKL          STO   0  AWRK1(2)            [STORE LINK  
4F5=          LDN   4  5                   [SIZE OF O/P 
4FJW          STOC  5  IEL5(2)             [RECORD NUMBER   
4G4G    TES1  STOZ  0(3)                   [ZEROISE OUTPUT  
4GJ6          BUX   3  £
4H3Q          BCT   4  TES1 
4HHB          CALL  6  RLIF                 [GET INSTRUCTION BLOCK  
4J32          LDX   0  AWRK1(2) 
4JGL    TES2  EXIT  0  0
4K2=    #   
4KFW    #     THIS ROUTINE CHECKS THE BITS IN X5 AGAINST THE PARAMETER. 
4K^G    #     IF ILLEGAL BITS ARE SET A SYNTAX ERROR IS REPORTED.   
4LF6    #   
4LYQ    TESX  ANDX  5  0(3) 
4MDB          BNZ   5  SE2  
4MY2          EXIT  3  1
4NCL    #   
4NX=    TT                                 [<TERMINATOR> EXECUTION FANOUT TABLE 
4PBW    #REP  #20   
4PWG          0 
4QB6    #   
4QTQ    #     THE MAIN LOGIC OF THE ROUTINE STARTS HERE.
4R*B    #   
4RT2    N2EDITET
4S#L    TERI  CALL  0  TESP                [STORE PARAMETERS
4SS=          BRN   TER1
4T?W    TERP  ORS   5  IEL2(2)             [INCREMENT CONTEXT COUNTER   
4TRG          BRN   TER0
4W?6    TERR  BRN   SE2                    [SYNTAX ERROR
4WQQ    N1EDITET
4X=B    TERM  CALL  0  TESP                [STORE PARAMETERS
4XQ2    TER0  IETS  #20,TER0-TERR,TT       [SPACE IS IGNORED
4Y9L          IET   ],$ 
4YP=          CALL  6  NCH                 [GET A CHARACTER 
4^8W          BRN      TENL                [J IF FINISHED   
4^NG    TER1  CALL  6  TLU                 [LOOK UP <TERMINATOR>
5286          ADN   3  TT(1)               [TABLE AT TT 
52MQ          LDX   5  IEL2(2)             [LOAD CONTEXT
537B          EXIT  3  TERR                [AND FANOUT  
53M2    #   
546L    TENL  LDX   5  IEL2(2)             [LOAD CONTEXT AT END 
54L=    TEND  IETS  ),TEND-TERR            [END OF ANALYSIS 
555W          IET   *,#34                  [ ) , *  
55KG          STO   0  IEIP(2)             [BACKSPACE   
5656          BRN      TER12               [J TO FINAL CHECK
56JQ    #   
574B          IETS  E,0?-TERR              [E  (END OF RECORD/FILE) 
57J2          BZE   5  TIDYE               [J IF ONLY ARG TO FINISH 
583L          CALL  3  TESX                [CHECK THAT ONLY 
586Q ...#UNS  EDCHAR
589W ...      #31700                       [<RECORD> HAS BEEN ANALYSED  
58*2 ...#UNS  EDCHAR
58D6 ...#SKI
58H=          #1700                         [<RECORD> HAS BEEN ANALYSED 
592W          LDN   5  #1000               [SET SWITCH  
59GG          BRN   TERP                   [AND REPEAT  
5=26    #   
5=FQ          IETS  #23,0?-TERR            [# (ABSOLUTE NUMBER) 
5=H^ ...#UNS  EDCHAR
5=L8 ...(   
5=NC ...      LDN   3  #40  
5=QL ...      ANDX  3  IEL2(2)             [RECORD COMPLETE?
5=ST ...      BNZ   3  TER1A               [J IF SO 
5=X4 ...)   
5=^B          BNZ   5  SE2                 [J IF NOT FIRST CHARACTER
5?F2          LDN   5  1                   [SET SWITCH  
5?YL          BRN   TERP                   [AND REPEAT  
5#D=    #   
5#XW          IETS  -,0?-TERR              [-  (GO BACKWARDS)   
5*66 ...
5*#B ...      LDN   3  #40  
5*GL ...      ANDX  3  IEL2(2)             [RECORD PART COMPLETE?   
5*NW ...      BZE   3  TER2                [JIF NOT 
5*X6          CALL  3  TESX                [CHECK ON SECOND TIME
5B2= ...#UNS  EDCHAR
5B5B ...      #31700
5B8G ...#UNS  EDCHAR
5B?L ...#SKI
5BBQ          #1700 
5BWB ...      LDN   5  #100                [SET SWITCH  
5CB2          BRN   TERP                   [AND CONTINUE
5CKS ...TER2
5CTL ...      BNZ   5  SE2                 [ERROR IF ANYTHING BOFORE MINUS  
5D5D ...      LDN   5  2                   [SET FIRST TIME MINUS
5D*=          BRN   TERP                   [AND CONTINUE
5DSW    #   
5F#G          IETS  C,0?-TERR              [C  (CONTAINING) 
5FS6          CALL  3  TESX                [CHECK CONTEXT   
5FX= ...#UNS  EDCHAR
5G2B ...      #37775
5G5G ...#UNS  EDCHAR
5G8L ...#SKI
5G?Q          #7775                        [ONLY MINUS IS ALLOWED   
5GRB          LDN   5  4                   [SET SWITCH  
5H?2          BRN   TERP                   [AND CONTINUE
5HQL    #   
5J==          IETS     S,0?-TERR           [S  (SPACES) 
5J#F ...#UNS  EDCHAR
5JBN ...(   
5JDX ...      LDN   3  #40  
5JH6 ...      ANDX  3  IEL2(2)             [RECORD COMPLETE?
5JK* ...      BNZ   3  TER2A               [J IF SO 
5JMJ ...)   
5JPW          CALL  3  TESX                [CHECK CONTEXT   
5JT2 ...#UNS  EDCHAR
5JY6 ...      #37775
5K3= ...#UNS  EDCHAR
5K6B ...#SKI
5K9G          #7775                        [ONLY MINUS ALLOWED  
5KP6          LDN   5  #2000
5L8Q          BRN      TERP 
5LNB    #   
5N7=          IETS  G,0?-TERR               [G (GEDIT)  
5NLW          CALL  3  TESX                 [CHECK CONTEXT  
5NQ2 ...#UNS  EDCHAR
5NT6 ...      #37775
5NY= ...#UNS  EDCHAR
5P3B ...#SKI
5P6G          #7775                         [ONLY MINUS ALLOWED 
5PL6          LDN   5  #4000
5Q5Q          BRN      TERP 
5R52    #   
5RJL          IETS  .,0?-TERR              [.  (START OF <CHARACTER>)   
5S4=          CALL  3  TESX                [CHECK CONTEXT   
5S7B ...#UNS  EDCHAR
5S=G ...      #31740
5S*L ...#UNS  EDCHAR
5SDQ ...#SKI
5SHW ...      #1740                       [ <CHARACTER> NOT ALLOWED 
5T3G          LDN   5  #30                 [CHECK IF <RECORD>   
5TH6          ANDX  5  IEL2(2)             [IS NULL 
5W2Q          BNZ   5  TER9                [J IF NOT
5WGB          LDN   5  #60                 [ELSE SIMULATE   
5X22          BRN   TERP                   [RELATIVE ZERO   
5XFL    TER9  LDN   5  #40                 [SET <CHARACTER> SWITCH  
5X^=          BRN   TERP                   [AND CONTINUE
5YDW    #   
5YYG          IETS  0,0?-TERR              [NUMBER  
5^D6          IET   1,2,3,4,5,6,7,8,9   
5^XQ          BRN      NUMBER   
62CB    #   
62X2          IETS  :,0?-TERR              [<STRING>
63BL          IET   ;,<,=,>,?,!,",£,%,&,',+,/   
63W=          ANDN  5  #40                 [CHECK CONTEXT   
64*W          BZE   5  TER4                [J IF FIRST TIME 
64TG          LDN   5  #1200               [ILLEGEL CONTEXTS
65*6          BRN   TER5                   [CHECK   
65SQ    TER4  LDN   5  #31                 [ILLEGAL CONTEXTS
66#B    TER5  ANDX  5  IEL2(2)             [CHECK   
66S2          BNZ   5  SE2                 [J IF ERROR  
67?L          LDX   1  IEIP(2)             [START ADDRESS   
67R=          STO   7  5                   [FIRST CHARACTER 
68=W          NGN   4  1                   [SET COUNT   
68QG    TER6  CALL  6  NCH                 [GET A CHARACTER 
69=6          BRN   SE3                    [ERROR IF OFF END
69PQ          ADN   4  1                   [COUNT IT AND
6=9B          BXE   5  7,TER8              [J IF TERMINAL QUOTE 
6=P2          BXU   7  IEVS(2),TER6        [LOOP IF NOT V.S.
6?8L          LDX   3  0                   [ELSE REPLACE THE
6?N=          LDN   7  #20                 [V.S. CHARACTER IN   
6#7W          SMO   IEIA(2)                [THE BUFFER BY A 
6#MG          DCH   7  0(3)                [SPACE THEN LOOP 
6*76          BRN   TER6                   [AS BEFORE   
6*LQ    TER8  LDN   6  #2000
6B6B          BZE   4  TER11               [SKIP IF NULL STRING 
6BL2          ANDX  6  IEL2(2)             [CHECK CONTEXT   
6C5L          BZE   6  TER11               [J IF NOT S  
6CK=          LDN   5  #20  
6D4W    TER10 SMO      IEIA(2)             [RE-SCAN THE <STRING>
6DJG          LDCH  6  0(1)                [FOR LEADING SPACES  
6F46          BXU   6  5,TER11             [TRUNCATING THEM 
6FHQ          BCHX  1  £                   [LOOP UNTIL FIRST NON-SPACE  
6G3B          BCT   4  TER10               [CHAR OR END OF <STRING> 
6GH2    TER11 LDN   5  #10                 [FIRST TIME CONTEXT  
6H2L          LDN   0  #40                 [FIRST TIME SWITCH   
6HG=          LDX   3  IEL3(2)             [ADD OF O/P  
6H^W          ANDX  0  IEL2(2)             [CHECK   
6JFG          BZE   0  TER7                [J IF FIRST TIME 
6J^6          LDN   5  #400                [SECOND TIME CONTEXT 
6KDQ          ADN   3  2                   [SECOND TIME O/P 
6KYB    TER7  STO   1  2(3)                [STORE ADDRESS   
6LD2          STO   4  1(3)                [STORE COUNT 
6LXL          LDX   1  FX1                 [RE-SET  
6MC=          BRN   TERP                   [AND CONTINUE
6MCW ...#UNS  EDCHAR
6MDG ...(   
6MF6 ...#   
6MFQ ...#              TEST FOR .#  
6MGB ...TER1A   
6MH2 ...      CALL  3  TESX                [CHECK ONLY RECORD GAS   
6MHL ...      #31700                       [BEEN ANALYSED   
6MJ= ...      LDN   5  #4000
6MJW ...      SLL   5  2                   [#20000 FOR .#   
6MKG ...      BRN      TERP 
6ML6 ...#   
6MLQ ...#              TEST FOR .S  
6MMB ...TER2A   
6MN2 ...      CALL  3  TESX                [CHECK ONLY RECORD HAS   
6MNL ...      #31600
6MP= ...      LDN   5  1
6MPW ...      LDX   3  IEL3(2)             [ADDR OF OUTPUT  
6MQG ...      STO   5  3(3)                [LENGTH OF .S CHAR = 1   
6MR6 ...      LDN   5  #4000
6MRQ ...      SLL   5  1
6MSB ...      BRN      TERP                [#10000 FOR .S   
6MT2 ...#   
6MTL ...)   
6MWW    NUMBER  
6NBG          CALL  6  MULT                [CONVERSION OF NUMBER
6NW6          LDN   0  #40                 [THEN CHECK CONTEXT  
6P*Q          LDX   5  IEL2(2)             [ IF FIRST TIME DONE 
6PTB          ANDX  0  IEL2(2)             [JUMP TO TER3
6Q*2          LDX   6  IEBF(2)             [LOAD RESULT 
6QSL          BNZ   0  TER3 
6R#=          CALL  3  TESX                [CHECK CONTEXT   
6RCB ...#UNS  EDCHAR
6RGG ...      #37774
6RKL ...#UNS  EDCHAR
6RNQ ...#SKI
6RRW          #7774                        [FOR FIRST TIME  
6S?G          LDX   3  IEL3(2)             [ADD OF O/P  
6SR6          LDN   5  #20                 [SET SWITCH  
6T=Q          STO   6  1(3)                [STORE RESULT
6TQB          BRN   TERP                   [AND CONTINUE
6W=2    TER3  CALL  3  TESX                [SECOND TIME NUMBER  
6W*6 ...#UNS  EDCHAR
6WD= ...      #11600
6WHB ...#UNS  EDCHAR
6WLG ...#SKI
6WPL          #1600                         [CHECK CONTEXT  
6X9=          LDX   3  IEL3(2)             [ADD OF O/P  
6XNW          LDN   5  #200                [SET SWITCH  
6Y8G          STO   6  3(3)                [STORE RESULT
6YN6          BRN   TERP                   [AND CONTINUE
6^7Q    #   
7272    TER12 ANDN  5  #6004               [IF NOT C OR S OR G  
73KW          BZE   5  TIDY                [J TO DECANT O/P 
745G          LDN   3  #10                 [IF NO STRING FOLLOWED C OR S
74K6          ANDX  3  IEL2(2)             [ITS AN ERROR
754Q          BZE   3  SE2                 [J IF STRING ABSENT  
75JB    #   
7642    #   
76HL    #     AT THIS POINT WE HAVE SOME VALUES IN THE OUTPUT AREA AND THE  
773=    #     CONTEXT BITS IN IEL2 SO WE HAVE TO PROCESS THE OUTPUT AREA.   
77GW    #   
782G    TIDY  LDX   0  IEL2(2)             [CONTEXT COUNTER 
78=# ...      BZE   0  SE2                 [J IF NO CONTEXT BITS SET
78G6          LDX   3  IEL3(2)             [O/P AREA
78^Q          LDX   4  1(3)                [RECORD / CH CNT 
79FB          LDX   5  3(3)                [CHAR / CH CNT   
79^2          LDX   6  4(3)                [Z / CH INDEX
7=DL          LDN   7  0                   [INITIALISE  
7=Y=          SRC   0  2                   [SHIFT TO *2 
7?CW          BPZ   0  TD1                 [J NOT - FIRST TIME  
7?XG          LDCT  7  #400                [MEANS GO BACKWARDS  
7#C6    TD1   ORN   7  1                   [TENTATIVELY CONTEXT 
7#WQ          SRC   0  3                   [SHIFT TO *20
7*BB          BPZ   0  TD2                 [J NOT NUMBER FIRST TIME 
7*W2          ADN   7  1                   [ADD FOR ABSOLUTE
7B*L          BPZ   7  TD21                [J NOT BACKWARDS 
7BT=          NGX   4  4                   [INVERT SIGN 
7C#W    TD21  SLC   0  1                   [SHIFT TO *10
7CSG          BRN   TD20                   [SKIP NEXT BIT   
7D#6    TD2   SLC   0  1                   [SHIFT TO *10
7DRQ          BNG   0  TD20                [J IF CONTEXT
7F?B          ADN   7  1                   [NUMBER BY DEFAULT   
7FR2    TD20  SLC   0  1                   [SHIFT TO *4 
7G=L          BPZ   0  TD30                [J NOT CONTAINING
7GQ=          SLL   4  1                   [ELSE SET B0 
7H9W          ADN   4  1
7HPG          SRC   4  1
7J96    TD30  SRC   0  8
7K8B          BPZ   0  TD40                [J NOT SPACES
7LM=          SLL   4  2
7M6W          ADN   4  1                    [ELSE SET BIT1  
7MLG          SRC   4  2
7P5B    TD40  SRC   0  1
7PK2          BPZ   0  TD3                 [J IF NOT G  
7Q4L          SLL   4  3
7QJ=          ADN   4  1                   [ELSE SET BIT 2  
7R3W          SRC   4  3
7RHG    TD3   SLC   0  6
7TG2          BNG   0  TD4                 [J IF <CHARACTER> PRESENT
7T^L          SRC   0  2                   [SHIFT TO *200   
7WF=          BRN   TD7                    [CHECK ON <CHARACTER>
7WYW    TD4   SRC   0  1                   [SHIFT TO *100   
7XDG          BPZ   0  TD5                 [J NO - SECOND TIME  
7XY6          NGX   5  5                   [INVERT COUNT / SIGN 
7YCQ    TD5   SRC   0  3                   [SHIFT TO *1000  
7YXB          BPZ   0  TD6                 [J NOT E SECOND TIME 
7^2G ...#UNS  EDCHAR
7^5L ...      LDCT  6  #100                [SET E(2ND)  
7^8Q ...#UNS  EDCHAR
7^?W ...#SKI
7^C2          LDCT  6  #177                [SUBSTITUTE LARGE ADDRESS
7^D? ...#UNS  EDCHAR
7^FJ ...(   
7^GT ...TD6 
7^J6 ...      SRC   0  3                   [*10000  
7^KC ...      BPZ   0  TD6A                [J IF NOT S(2ND) 
7^LN ...      LDCT  6  #040                [SET .S  
7^M^ ...TD6A
7^P= ...      SLC   0  5                   [*200
7^QH ...)   
7^RS ...#UNS  EDCHAR
7^T5 ...#SKI
7^WL    TD6   SLC   0  2                   [SHIFT TO *200   
82B=    TD7   BPZ   0  TD10                [J NOT NUMBER SECOND TIME
82TW          SLC   0  7                   [SHIFT TO *1 
83*G          BNG   0  TD12                [J IF #  
83T6    TD8   BNZ   4  TD9                 [J IF <RECORD> WILL CHANGE   
83XP ...#UNS  EDCHAR
842# ...(   
844X ...      SLC   0  11                  [*20000  
847G ...      BNG   0  TD8A                [J IF #(2ND) 
84=5 ...)   
84#Q          ADX   5  IEL4(2)             [CONVERT TO ABSOLUTE <CHARACTER> 
84C* ...#UNS  EDCHAR
84FY ...(   
84JH ...TD8A
84M6 ...      SRC   0  11                  [*1  
84PP ...)   
84SB    TD9   BPZ   0  TD11                [J NOT # 
85#2          ADX   4  IEL5(2)             [CONVERT TO ABSOLUTE <RECORD>
85RL          BRN   TD11                   [SKIP, ALREADY SHIFTED   
86?=    TD10  SLC   0  7                   [SHIFT TO *1 
86QW    TD11  BNG   0  TD12                [J IF #  
87=G          SRC   0  3                   [SHIFT TO *10
87Q6          BNG   0  TD12-1   
889Q          ADX   4  IEL5(2)             [CONVERT TO ABSOLUTE <RECORD>
88PB          SLC   0  3                   [SHIFT TO *1 
8992    TD12  BPZ   0  TD13                [J NOT # 
89NL          ADX   4  IENO(2)             [ADJUST FOR NEW ORIGIN   
8=8=          NGX   0  IEL5(2)             [ELSE WE HAVE TO 
8=MW          ADXC  0  4                   [CHECK THAT THE  
8?7G          LDN   0  0                   [DESTINATION, IF 
8?M6          SRC   0  1                   [BEFORE CURRENT POSITION 
8#6Q          ORX   7  0                   [CAUSES REVERSE READ 
8#LB    TD13  STO   4  1(3)                [STORE <RECORD>  
8*62          STO   5  3(3)                [STORE <CHARACTER>   
8*KL          STO   6  4(3)                [STORE CH ADDRESS
8B5=          STO   7  0(3)                [STORE EXECUTION SWITCH  
8BJW    TIDYE UPPLUS   1                   [FINISH IN GOOD ORDER
8C4G    #   
8CJ6    N3EDITET
8D3Q          CALL  6  RLIF 
8DHB          CALL  6  NCH                 [GET CHARACTER FOLLOWING O   
8F32          CALL  0  NCH3                [GEOERR IF NOT THERE 
8FGL          CALL  6  MULT                [EVALUATE NUMBER 
8G2=          LDX   7  IEOR(2)  
8GFW          SBX   7  IEBF(2)  
8G^G          STO   7  ACOM1(2)             [SAVE NEW ORIGIN
8HF6          UPPLUS   1
8HYQ    #   
8JDB    #   
8JY2    N4EDITET
8KCL          BRKINOFF XITER                [CLEAR B-I / J IF DISASTER  
8KX=          UPPLUS   1
8L5G ...XITER   
8L?Q ...      TESTBRKIN  XITERUP          [TO CLEAR BREAKIN BIT ONLY
8LG2 ...XITERUP 
8LN= ...      UP
8LWG    #   
8MB6    #   
8MTQ    N5EDITET
8N*B          LDX   7  IEFS(2)              [NO OF EDITING FILES
8NT2          SBN   7  1
8P#L          LDX   4  IEFT(2)              [TYPES OF FILES 
8PS=          BZE   7  POP2                 [J IF LAST FILE IN STACK
8Q?W          BNG   4  POP1                 [J IF J/S - MUSTNT CLOSE
8QRG          LDX   1  IEON(2)              [GET OUR FILE IN TOP OF 
8R?6          FILEMOVE 1(1),0               [THE GEORGE FILE STACK  
8RQQ          CALL  6  XCLSE                [CLOSE IT   
8S=B    POP1  SLL   4  1                    [SHIFT TO NEW FILE  
8SQ2          STO   7  IEFS(2)              [STORE NEW VALUES   
8T9L          STO   4  IEFT(2)              [FOR STACK  
8TP=          UPPLUS   2                    [EXIT IN GOOD ORDER 
8TXG ...POP2  LDCT  7  #100                [CLEAR INSERT INSTRUCTION BIT IF SET 
8W5Q ...      ORS   7  IESW(2)  
8W#2 ...      ERS   7  IESW(2)  
8WG= ...      BNG   4  POP3                 [J IF J/S EXHAUSTED 
8WNG          EDERR    IEYE                 ["IVE EXHAUSTED YOUR EDITING FL"
8WTN ...      LDX   1  IEON(2)  
8X2W ...      BACKSPACE   1(1)           [SET TO READ EOF AGAIN 
8X86          UP
8XMQ    POP3  LDX   0  CONTEXT(2)   
8Y7B          ANDN  0  #10  
8YM2          BNZ   0  POP4                 [J IF MOP   
8^6L          EDERR    IEYJ                 ["IVE EXHAUSTED YOUR JOB SOURCE"
8^L=          BACKSPACE  -2 
925W          ALASHUNT 3,6                  [CONSIDERATION FOR  
92KG          SUBREC   3,6                  [COMMAND PROCESSOR  
9356          UP
93JQ    POP4  EDERR    TNFC                 ["THERE IS NO FILE TO CLOSE"
944B          UPPLUS   1
94J2    #   
953L    #   
95H=    N8EDITET
962W          LDX   7  IEON(2)              [NO OF OLD FILES
96GG          SBN   7  1
9726          BZE   7  PLP1                 [J IF NONE TO CLOSE 
97FQ          STO   7  IEON(2)              [STORE NEW VALUE
97^B          FILEMOVE 1,0                  [GET THE FILE ON
98F2          CALL  6  XCLSE                [TOP AND CLOSE  
98YL          LDN   6  IEOW(2)              [AT THIS POINT WE   
99D=          LDN   7  IEOR(2)              [HAVE TO SHUFFLE
99XW          MOVE  6  20                   [THE FINGERS DOWN   
9=CG          LDCT  0  #4   
9=X6          ORS   0  IESW(2)              [CLEAR EOF BIT  
9?BQ          ERS   0  IESW(2)  
9?WB          LDX   6  IEOR(2)              [WE ALSO HAVE TO
9#B2          STO   6  IEOY(2)              [FIDDLE AROUND A
9#TL          STO   6  IEOZ(2)              [BIT IN CASE USER   
9**=          LDX   6  IEOC(2)              [TRIES TO F THE 
9*SW          STO   6  IEOY+1(2)            [X INSTRUCTION  
9B#G          STO   6  IEOZ+1(2)
9BS6          LDX   6  IENR(2)  
9C?Q          STO   6  IENY(2)              [UNFORTUNATELY MOVE 
9CRB          STO   6  IENZ(2)              [CANNOT BE USED 
9D?2          LDX   6  IENC(2)  
9DQL          STO   6  IENY+1(2)
9F==          STO   6  IENZ+1(2)
9FPW          UPPLUS   1                    [EXIT OK
9G9G    PLP1  EDERR    TNFC                 ["THERE IS NO FILE TO CLOSE"
9GP6          UP
9H8Q    #   
9HNB    #   
9J82    N7EDITET
9JML          LDX   5  IEFS(2)              [NO OF FILES OPEN   
9K7=          LDX   4  IEFT(2)              [TYPES OF FILES 
9KLW          BXGE  5  O30(1),UM2           [J IF STACK FULL
9L6G          ORN   4  1                    [SET B0 
9LL6          ADN   5  1                    [INCREMENT BY 1 FILE
9M5Q          SRC   4  1
9MKB          STO   5  IEFS(2)              [STORE NEW  
9N52          STO   4  IEFT(2)              [VALUES 
9NJL    UM1   UPPLUS   1                    [EXIT OK
9P4=    UM2   EDERR    EFSF                 ["EDIT FILE STACK FULL" 
9PHW          BNG   4  UM1                  [CARRY ON IF MOP
9Q3G          UP
9QH6    #   
9R2Q     MENDAREA 100,K100EDITET
9RGB    #END
^^^^ ...15160445001100000000