EDITPT867

(George Source)

Macros used: ACROSS, ACROSSVAR, ALTLEN, BACKSPACE, BXE, BXGE, BXL, BXU, DOWN, EDCOM, EDERR, FI, FIXTRA, FREECORE, FREELINK, GEOERR, HUNTW, IF, MENDAREA, MHUNTW, NAME, PAIR, PHOTO, READ, READAGAIN, READBACK, REWIND, SEG, SEGENTRY, SKIP, STEP, STEPAGAIN, TESTBRKIN, TESTMOVE, TESTREP2, TESTRPN2, THEN, TRACE, UP, UPPLUS, VSKIP

EDITPT867.txt
22FL    #LIS  K0EDITPT>K0ALLGEO>0   
22LS ...      SEG EDITPT,867,COMM,,G571 
22S2 ...[   
22^8 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
236B ...[     THIS EXCLUDES CODE UNDER #SKI G571
23?J ...[   
23DQ ...#OPT G571 = 0   
23KY ...#SKI G571&1 
23R6 ...# WITH UGUG EDIT M571 (IMPROVED EDIT AMORPHOUS FILE)
23YG    #   
24D6    #     THIS SEGMENT EXECUTES THE P AND T INSTRUCTIONS
24XQ    #   
25CB    #              ENTRY POINTS  -  FOR GEORGE MODULARITY   
25X2    #   
26BL     SEGENTRY K1EDITPT,OH   
26W=     SEGENTRY K2EDITPT,N2EDITPT        [E INSTRUCTION   
27*W     SEGENTRY K3EDITPT,N3EDITPT        [A INSTRUCTION   
27TG     SEGENTRY K4EDITPT,N4EDITPT        [B INSTRUCTION   
28*6     SEGENTRY K5EDITPT,N5EDITPT        [R INSTRUCTION   
28SQ     SEGENTRY K7EDITPT,N7EDITPT        [T INSTRUCTION   
29#B     SEGENTRY K8EDITPT,N8EDITPT        [P INSTRUCTION   
29S2     SEGENTRY K9EDITPT,OH   
2=?L     SEGENTRY K10EDITPT,N10EDITPT      [READ 1ST RECORD OF OLDFILE  
2=R=     SEGENTRY K11EDITPT,N11EDITPT      [PART OF X INSTRUCTION   
2?34     SEGENTRY K12EDITPT,N12EDITPT      [ARE WE ON A TERMINATOR? 
2?=W    #   
2?QG    #              THIS SEGMENT READS THE OLDFILE   
2#=6    #   
2#PQ    #   
2*9B    #     RLOF RELOCATES THE OLD FILE BLOCK 
2*P2    #   
2B8L    RLOF  LDX   5  IEOM(2)             [GET BLOCK PHOTO 
2BN=          LDX   3  IEOA(2)  
2C7W          TESTMOVE 5,RO1               [J IF STILL THERE
2CMG          MHUNTW   3,EDIT,FRB           [ELSE FIND IT   
2D76          PHOTO    5                   [GET NEW PHOTO   
2DLQ          STO   5  IEOM(2)             [AND STORE   
2F6B          STO   3  IEOA(2)             [STORE ADDRESS   
2FL2    RO1   EXIT  6  0                   [AND EXIT
2G5L    #   
2GK=    #     RLNF RELOCATES THE NEW FILE BLOCK 
2H4W    #   
2HJG    RLNF  LDX   5  IENM(2)             [GET BLOCK PHOTO 
2J46          LDX   3  IENA(2)  
2JHQ          TESTMOVE 5,RN1               [J IF STILL THERE
2K3B          MHUNTW   3,FILE,FAPB          [ELSE FIND IT   
2KH2          PHOTO    5                   [GET NEW PHOTO   
2L2L          STO   5  IENM(2)             [AND STORE   
2LG=          STO   3  IENA(2)             [STORE ADDRESS   
2L^W    RN1   EXIT  6  0                   [AND EXIT
2MFG    #   
2M^6    #     NER IS ENTERED FOLLOWING A CATASTROPHE
2NDQ    #   
2NYB    NER   ACROSS   EDITOR,12
2PD2    #   
2PXL    #     RDBI IS IF BREAK-IN DURING READ   
2QC=    #   
2QWW    RDBI  LDCT  7  #2                  [TEST IF BREAK-IN OCCURRED   
2RBG          ANDX  7  IESW(2)             [WHILST READING RECORD FOR   
2RW6          BZE   7  RDB0                [SEGMENT EDIT,J IF NOT   
2S3#          LDCT  7  #002 
2S8G          ERS   7  IESW(2)  
2S*Q          UP                           [ELSE ABANDON EDIT   
2STB    RDB0  ACROSS   EDITOR,8 
2T*2    #   
2TSL    #     WRITE IS THE ROUTINE WHICH WRITES TO THE NEW FILE 
2W#=    #   
2WRW    WRITE SBX   6  1
2X?G          STO   6  AWORK2(2)
2XR6    #SKI  JDIAG1
2Y=Q    (   
2YQB          LDN   6  #4   
2^=2          ANDX  6  IESW(2)  
2^PL          BZE   6  NEGG                [J IF NOT GEDIT  
329=          CALL  6  RLOF 
32NW          CALL  6  RLNF 
338G          SMO      IEOA(2)  
33N6          LDX   6  A1+3 
347Q          STO   6  A1+3(3)             [PASS ACROSS SECOND KEY WORD 
34MB    NEGG
3572    )   
35LL          DOWN     EDWRITE,1           [WRITE RECORD TO NEW FILE
366=          BRN      WRQ                 [J IF FILE FULL  
36KW          BRN      RDB0                [J IF BREAK-IN   
375G          LDX   6  AWORK2(2)
37K6          ADS   1  6
384Q          EXIT  6  0
38JB    WRQ   ACROSS   EDITOR,9            [ABANDON EDIT
3942    #   
39HL    #     READ IS THE ROUTINE WHICH GETS THE NEXT RECORD FROM   
3=3=    #     THE OLD FILE. WRITTEN SO THAT IF V IS SET ON ENTRY
3=GW    #     THEN READING WILL BE DONE BACKWARDS. THE ROUTINE ALSO 
3?2G    #     UPDATES THE RECORD COUNTER(IEOR). AWORK4 AND X3 WILL  
3?G6    #     BE SET AS FOLLOWS:
3?^Q    #   
3#FB    #     0     READ WAS OK 
3#^2    #     1     READING OFF END OF FILE 
3*DL    #     2     READING OFF BEGINNING OF FILE   
3*Y=    #   
3BCW    READ  SBS   1  6                   [RELATIVISE LINK 
3BXG          STO   6  AWORK1(2)           [AND STORE   
3CC6          STOZ     IEOC(2)  
3CWQ          LDCT  3  #20                 [CLEAR THE 'W LISTED'
3DBB          ORS   3  IESW(2)             [SWITCH  
3DW2          ERS   3  IESW(2)  
3F*L          STOZ     AWORK4(2)           [TENTATIVELY MARK AS OK  
3FT=          LDX   3  IEOA(2)  
3G#W          BZE   3  RD41                [J FOR VIRGIN READ   
3GSG          LDCT  7  #4   
3H#6          ANDX  7  IESW(2)  
3HRQ          LDX   6  IEWT(2)  
3J?B          BZE   7  RD10                [J IF NOT END OF FILE
3JR2          BPZ   6  RD70                [J IF EOF AND FORWARDS   
3K=L    RD10  BNG   6  RD80                [J IF BACKWARDS  
3KQ=          LDN   7  1
3L9W          ADS   7  IEOR(2)             [UPDATE RECORD COUNT 
3LC4          FIXTRA   ESP2                [****EDITOR SPECIAL FOR PLESSEY****  
3LJ=          NULL  
3LPG          HUNTW    3,EDIT,FRB           [SEE IF THERE IS AN FRB 
3M96          BNG   3  RD40                [J TO READ IF NOT
3MNQ          PHOTO    4                   [SNAP
3N8B          STO   4  IEOM(2)             [STORE WHEN AND WHERE
3NN2          STO   3  IEOA(2)  
3P7L          LDX   7  ALOGLEN(3)          [GET LENGTH OF FRB   
3PM=          STEP     1
3Q6W          STO   3  AWORK3(2)           [SAVE PTR TO RECORD  
3QLG          BZE   3  RD60                [J IF END OF FILE
3R66          LDEX  4  0(3)                [GET LENGTH OF RECORD
3R?# ...#SKI G571&1 
3RDG ...      ADN   4  1                   [ + 1 IN CASE AMORPHOUS  
3RKQ          BXGE  7  4,RD20              [J IF FRB BIG ENOUGH 
3S5B    RD15  CALL  6  RLOF                [GET FRB POINTER 
3SK2          LDX   3  IEOA(2)  
3SQ8 ...#SKI G571&1 
3SXB ...RD16
3T4L          ALTLEN   3,4                 [ALTER SIZE OF FRB   
3TJ=          MHUNTW   3,EDIT,FRB   
3W3W          STO   3  IEOA(2)             [SET NEW ADDRESS 
3WHG          PHOTO    0
3X36          STO   0  IEOM(2)             [SET NEW PHOTO   
3XGQ          STEPAGAIN 1                  [GET FURB POINTER BACK   
3Y2B          STO   3  AWORK3(2)           [AND SAVE
3YG2          BRN      RD30 
3Y^L    RD20  LDX   0  4
3^F=          SLL   0  1                   [2XREQUIRED LENGTH   
3^YW          BXGE  0  7,RD30              [J IF FRB NOT MASSIVE
42DG          SBN   7  33   
42Y6          BNG   7  RD30                [NOT WORTH ALTERING  
43CQ          LDX   0  4
43XB          SBN   0  32                  [ELSE ADJUST LENGTH  
44C2          BPZ   0  RD15                [TO THE GREATER OF 32
44WL          LDN   4  32                  [AND THE REQUIRED LENGTH 
45B=          BRN      RD15 
45TW    RD30  CALL  6  RLOF                [GET FRB POINTER BACK
46*G    RD31  LDX   6  IEOA(2)  
46T6          ADN   6  A1   
47#Q          LDX   5  AWORK3(2)
47*J ...#SKI G571&1 
47BB ...(   
47C8 ...      SBN   4  1                   [ RESET LENGTH - NON-AMORPHOUS   
47D2 ...      LDXC  0  IEOT(2)  
47DS ...      IF       CC   
47FL ...      THEN                         [ AMORPHOUS  
47GD ...         SMO      5 
47H= ...         LDX   4  0                   [ OLD X4 SOMETIMES TOO BIG
47J4 ...         LDN   0  #41   
47JW ...         ADN   4  1 
47KN ...         STO   4  A1(3)               [ 1 WORD LONGER   
47LG ...         STO   0  A1+1(3)             [ SUPPLY A '2ND RED TAPE WORD'
47M# ...         ADN   6  2 
47N6 ...         SBN   4  2                   [ SIZE OF RECORD BODY 
47NY ...         ADN   5  1 
47PQ ...         BZE   4  RD32  
47QJ ...      FI
47RB ...)   
47SB          SMO      4
48#2          MOVE  5  0                   [MOVE DATA INTO FRB  
48RL          LDX   3  IEOA(2)  
48YS ...#SKI G571&1 
4962 ...RD32
49?=          LDEX  6  A1(3)
49QW          BRN      RD50 
4==G    RD40  LDN   7  1
4=Q6          ADS   7  IEOR(2)             [UPDATE RECORD COUNT 
4?9Q    RD41  READ     1                   [READ A RECORD   
4?PB    RD42  MHUNTW   3,FILE,FRB           [FIND FILE/FRB  
4#92          NAME     3,EDIT,FRB          [AND RENAME EDIT/FRB 
4#NL          PHOTO    5                   [SNAP
4*8=          STO   5  IEOM(2)             [STORE WHEN AND WHERE
4*MW          STO   3  IEOA(2)  
4B7G          LDEX  6  A1(3)
4BM6          BZE   6  RD60                [J IF END OF FILE
4BNT ...#SKI G571&1 
4BQJ ...(   
4BS? ...         LDXC  0  IEOT(2)   
4BW2 ...         BCS      RD50               [ EDIT/FRB IS O.K. UNLESS AMORPHOUS
4BXP ...         LDN   4  1                   [  IN WHICH CASE IT NEEDS TO BE   
4B^D ...         ADX   4  6                   [  LENGTHENED AND REFORMATTED 
4C37 ...         BRN      RD16  
4C4W ...)   
4C6Q    RD50  LDX   7  A1+1(3)             [GET SECOND WORD OF HEADER   
4CLB          ANDX  7  CACT                [CLEAR BITS 2-23 
4D62          SBN   6  3                   [ADJUST FOR RECORD HEADER
4DKL          BNZ   7  RD51                [J IF NOT WORD BOUNDARY  
4F5=          ADN   6  1                   [ADJUST FOR WORD BOUNDARY
4FJW    RD51  SLL   67 2                   [CONVERT TO CHARS
4G4G    #SKI  JDIAG1
4GJ6    (   
4H3Q          LDN   4  #4   
4HHB          ANDX  4  IESW(2)  
4J32          BZE   4  NOTG                [J IF NOT GEDIT  
4JGL          SBN   6  8                   [DON'T COUNT SPECIAL WORDS   
4K2=          BPZ   6  NOTG 
4KFW          ADN   6  4                   [MAYBE A BLANK RECORD
4K^G          LDX   5  ACES 
4LF6          STO   5  A1+3(3)             [REINSTATE SECOND KEY WORD   
4LYQ          LDN   5  1
4MDB          ADS   5  A1(3)               [INCREMENT RECORD HEADER COUNT   
4MY2    NOTG
4NCL    )   
4NX=          STO   6  IEOH(2)  
4PBW          BNG   6  RD83                [J IF RUBBISH
4PWG    RD52  LDCT  0  #4   
4QB6          ORS   0  IESW(2)             [CLEAR END OF FILE BIT   
4QTQ          ERS   0  IESW(2)  
4R*B          TESTBRKIN RDBI               [TEST B-I FOR OK READ ONLY   
4RT2    #SKI  JDIAG1
4S#L    (   
4SS=          BZE   4  NAYG                [J IF NOT GEDIT  
4T?W          LDX   4  A1+2(3)  
4TRG          STOZ     A1+2(3)             [NULL SEQUENCE WORD AS DEFAULT   
4W?6          STO   4  IESD(2)             [SAVE SEQUENCE WORD  
4WQQ    NAYG
4X=B    )   
4XQ2          LDX   3  AWORK4(2)           [LOAD OUTPUT INDICATOR   
4Y9L    RDX 
4YP=          LDX   6  AWORK1(2)           [GET LINK
4^8W          ADX   6  1
4^NG          EXIT  6  0                   [EXIT
5286    RD60  LDCT  4  #4   
52MQ          ORS   4  IESW(2)             [SET EOF BIT 
537B          STOZ     IEOH(2)  
53M2          BRN      RDX  
546L    RD70  LDN   3  1
54L=          STO   3  AWORK4(2)           [SET EOF ANSWER  
555W          BRN      RDX  
55KG    RD80  LDX   7  IEOR(2)  
5656          BNZ   7  RD81                [J IF NOT ON RECORD 0
56JQ          LDN   3  2
574B          STO   3  AWORK4(2)           [SET BOF ANSWER  
57J2          BRN      RDX  
583L    RD81  HUNTW    3,EDIT,FRB   
58H=          BNG   3  RD82 
592W          FREECORE 3                   [FREE ANY FRB
59GG    RD82  READBACK 1                   [BSP+BSP+READ
5=26          LDN   7  1
5=FQ          SBS   7  IEOR(2)             [UPDATE RECORD COUNT 
5=LY          FIXTRA   ESP3                [****EDITOR SPECIAL FOR PLESSEY****  
5=S6          NULL  
5=^B          BRN      RD42 
5?F2    RD83  STOZ     IEOH(2)  
5?YL          BRN      RD52 
5#D=    #   
5#XW    #     SIZE IS THE ROUTINE WHICH CHECKS IF THE FILE/FAPB 
5*CG    #     IS BIG ENOUGH. IT SHOULD BE CALLED WITH X4 = REQUIRED 
5*X6    #     VALUE OF IENC. THE ROUTINE WILL ADJUST THE FAPB   
5BBQ    #     SIZE IF REQUIRED  
5BWB    #   
5CB2    SIZE  SBS   1  0
5CTL          STO   0  AWORK1(2)           [STORE RELATIVISED LINK  
5D*=          CALL  6  RLNF                [RELOCATE BLOCK  
5DSW          LDX   3  IENA(2)             [GET ADDRESS 
5F#G          LDX   5  ALOGLEN(3)          [LENGTH OF BLOCK 
5FS6          LDX   6  4
5G?Q          ADN   6  20   
5GRB          SRL   6  2                   [LENGTH REQUIRED 
5H?2          BXGE  5  6,SIZE1             [J IF BLOCK BIG ENOUGH   
5HQL    SIZE0 ALTLEN   3,6                 [STRETCH BLOCK   
5J==          MHUNTW   3,FILE,FAPB          [FIND BLOCK 
5JPW          STO   3  IENA(2)             [STORE ADDRESS   
5K9G          PHOTO    5                   [GET NEW PHOTO   
5KP6          STO   5  IENM(2)             [AND STORE   
5L8Q    SIZEX LDX   0  AWORK1(2)           [GET LINK
5LNB          ADX   0  1
5M82          EXIT  0  0                   [AND EXIT
5MML    SIZE1 SLL   6  1
5N7=          BXGE  6  5,SIZEX             [J IF FAPB NOT MASSIVE   
5NLW          SRL   6  1
5P6G          SBN   5  33   
5PL6          BNG   5  SIZEX               [NOT WORTH ALTERING  
5Q5Q          LDX   0  6
5QKB          SBN   0  32                  [ELSE ADJUST LENGTH TO   
5R52          BPZ   0  SIZE0               [THE GREATER OF 32 AND   
5RJL          LDN   6  32                  [THE REQUIRED LENGTH 
5S4=          BRN      SIZE0
5SHW    #   
5T3G    #     CHARACTER MOVE ROUTINE
5TH6    #   
5W2Q    MVCH  BZE   3  MVC1 
5WGB          MVCH  6  0(3) 
5X22          SBN   3  1
5XFL          SRL   3  9
5X^=          SLL   3  9
5YDW          BRN      MVCH 
5YYG    MVC1  EXIT  0  0
5^D6    #   
5^XQ    #     MOVE COPIES THE FRB TO THE FAPB   
62CB    #   
62X2    MOVE  SBS   1  0
63BL          STO   0  AWORK4(2)           [SAVE LINK   
63W=          LDX   4  IEOH(2)  
64*W          STO   4  IENC(2)             [SET N/F CHARACTER POINTER   
64TG          CALL  0  SIZE                [CHECK SIZE OF FAPB  
65*6          CALL  6  RLOF                [RELOCATE BLOCKS 
65SQ          CALL  6  RLNF 
66#B          LDX   3  IEOA(2)  
66S2    #SKI  JDIAG1
67?L    (   
67R=          LDN   0  #4   
68=W          ANDX  0  IESW(2)  
68QG          BZE   0  NONG                [J IF NOT GEDIT  
69=6          LDX   0  IEON(2)  
69PQ          SBN   0  1
69WY          BZE   0  NOM                 [J IF NOT MERGEFILE  
6=46          LDN   0  #20  
6=9#          ANDX  0  IESW(2)  
6=BG          BZE   0  NONG                [NOT 'D' MODE GEDIT  
6=HN          LDCT  0  #400 
6=NW          ORS   0  A1+3(3)             [SET SECOND KEY WORD 
6=W4          BRN      NONG 
6?3=    NOM   LDX   0  IESD(2)  
6?8L          STO   0  A1+2(3)             [RESTORE SEQUENCE WORD   
6?N=    NONG
6#7W    )   
6#MG          LDX   7  IENA(2)             [SET UP ROINTERS 
6*76          LDN   6  A1(3)
6*LQ          ADN   7  A1   
6B6B          LDEX  3  A1(3)               [LENGTH OF BLOCK (WORKS) 
6BL2          MOVE  6  0(3)                [MOVE DATA   
6C5L          LDX   0  AWORK4(2)           [GET LINK
6CK=          ADS   1  0
6D4W          EXIT  0  0                   [EXIT
6DJG    #   
6F46    #     RROR COPIES THE REMAINDER OF A RECORD TO THE FAPB 
6FHQ    #   
6G3B    RROR  LDCT  7  #200 
6GH2          ANDX  7  IEWT(2)  
6H2L          BZE   7  RREX                [EXIT IF P INSTRUCTION   
6HG=          SBS   1  6
6H^W          STO   6  AWORK4(2)
6JFG          LDX   4  IEOH(2)  
6J^6          SBX   4  IEOC(2)  
6K6#          BPZ   4  RR15             [J IF NOT OFF END OF LINE   
6K?G          LDX   4  IEOH(2)         [RESET TO END OF LINE
6KDN          STO   4  IEOC(2)  
6KKW          LDN   4  0
6KR4    RR15
6KYB          ADX   4  IENC(2)  
6LD2          STO   4  AWORK3(2)           [SAVE DESTINATION POINT  
6LXL          BXL   4  IENH(2),RR10        [J IF LENGTH OK  
6MC=          LDX   4  IENH(2)             [ELSE ADJUST 
6MWW    RR10  CALL  0  SIZE                [CHECK SIZE OF FAPB  
6NBG          SBX   4  IENC(2)  
6NW6          CALL  6  RLOF 
6P*Q          CALL  6  RLNF                [RELOCATE BLOCKS 
6PTB          LDX   3  4                   [NO OF CHARS TO TRANSCRIBE   
6Q*2          LDX   6  IEOC(2)  
6QSL          LDX   7  IENC(2)  
6R#=          ADS   3  IEOC(2)             [UPDATE CHARACTER POINTERS   
6RRW          ADS   3  IENC(2)  
6S?G          SRC   6  2
6SR6          SRC   7  2
6T=Q
6TQB          BNZ   7  RR20                [J IF RED TAPE NOT REQUIRED  
6W=2    #SKI  JDIAG1<1$1
6WPL    (   
6X9=          ADN   3  8
6XNW          NGN   6  2
6Y8G          NGN   7  2
6YN6    RR20  ADN   6  A1+2 
6^7Q          ADN   7  A1+2 
6^MB    )   
7272    #SKI  JDIAG1
72LL    (   
736=          LDX   0  IEOG(2)  
73KW          SBN   0  A1   
745G          SLL   0  2
754Q          LDN   4  #4   
75JB          ANDX  4  IESW(2)  
7642          BZE   4  NOG                 [J IF NOT GEDIT  
76HL          LDX   4  IEON(2)  
773=          SBN   4  1
777Y          BZE   4  NAYM                [J IF NOT MERGEFILE  
77#L          LDN   4  #20  
77F#          ANDX  4  IESW(2)  
77L2          BZE   4  NOG                 [J IF NOT 'D' MODE GEDIT 
77QN          LDCT  4  #400 
77XB          SMO      IEOA(2)  
7844          ORS   4  A1+3                [SET SECOND KEY WORD 
788Q          BRN      NOG  
78*D    NAYM  LDX   4  IESD(2)  
78G6          SMO      IEOA(2)  
78^Q          STO   4  A1+2                [RESTORE SEQUENCE WORD   
79?G    NOG 
79K=          LDX   4  IEOA(2)             [OLD FILE BLOCK ADDR 
79X2          LDX   5  IENA(2)             [NEW FILE BLOCK ADDR 
7=8Q          ADN   4  A1                  [AND INCREMENT TO
7=GG          ADN   5  A1                  [RED TAPE
7=S=          SMO      0                   [LENGTH OF RED TAPE  
7?62          MVCH  4  0                   [COPY OVER FROM OLD TO NEW   
7?CW    RR20  ADX   6  IEOG(2)  
7?XG          ADX   7  IENG(2)  
7#C6    )   
7#WQ          ADX   6  IEOA(2)             [GET ABSOLUTE ADDRESSES  
7*BB          ADX   7  IENA(2)  
7*W2          CALL  0  MVCH 
7B*L          LDX   7  IENC(2)  
7BT=          BXE   7  AWORK3(2),RR30      [J IF RECORD NOT TRUNCATED   
7C#W          EDCOM    YRTL 
7CSG    RR30  CALL  6  WRITE               [WRITE BLOCK AWAY
7D#6          LDX   6  AWORK4(2)           [GET LINK
7DRQ          ADS   1  6
7F?B    RREX  EXIT  6  0                   [EXIT
7FR2    #   
7G=L    #   
7GQ=    #     TARGREC CHECKS IF WE ARE ON THE CORRECT   
7H9W    #     EXIT     CALL+1 = YES 
7HPG    #              CALL+2 = NO  
7J96    #   
7JNQ    TARGREC 
7K8B          SBS   1  6
7KN2          STO   6  AWORK1(2)           [SAVE LINK   
7L7L          LDX   3  IEWT(2)  
7LM=          SLL   3  2
7M6W          SRL   3  2                   [CLEAR B0,B1 
7MLG          BZE   3  TREC3               [J IF END OF FILE
7N66          SBN   3  1
7NKQ          BZE   3  TREC4               [J IF CONTEXT
7P5B          LDX   7  IEOR(2)             [ELSE RECORD NO  
7PK2          SBX   7  IEWT+1(2)           [CHECK IF THERE  
7Q4L          BNZ   7  TREC2               [J IF NOT
7QJ=    TREC1 LDX   6  AWORK1(2)           [FOUND EXIT  
7R3W          ADS   1  6
7RHG          EXIT  6  0
7S36    TREC2 LDX   6  AWORK1(2)           [NOT FOUND EXIT  
7SGQ          ADS   1  6
7T2B          EXIT  6  1
7TG2    TREC3 LDX   7  AWORK4(2)           [GET READ OUTPUT 
7T^L          SBN   7  1                   [INDICATOR   
7WF=          BZE   7  TREC1               [J IF AT END OF FILE 
7WYW          BRN      TREC2               [ELSE NOT FOUND  
7XDG    TREC4 LDN   6  IEWT                [SET DATA POINTER
7XY6          DOWN     EDITEX,1            [DO CONTEXT SEARCH   
7YCQ          BRN      TREC2                [NOT FOUND  
7YXB          BRN      TREC1                [FOUND  
7^C2    #   
7^WL    #   
82B=    #     TERMS CHECKS FOR TERMINATORS, SETTING IESY AND IECC IF
82TW    #     ONE IS FOUND  
83*G    #   
83T6    TERMS STOZ     IESY(2)             [INITIALISE INDICATOR
84#Q          LDXC  3  IESP(2)  
84SB          BCC      TERMX               [J IF NO TERMINATORS 
85#2          SBS   1  6
85RL          STO   6  AWORK1(2)           [SAVE LINK   
86?=          STOZ     ACOM1(2)            [FUTURE VALUE OF IECC
86QW          LDX   6  IEWT(2)  
87=G          BNG   6  TM1                 [J IF BACKWARDS  
87Q6          LDX   7  IEOH(2)  
889Q          STO   7  ACOM1(2)            [ELSE RESET FOR FORWARDS 
88PB    TM1   STOZ     ACOM2(2)            [FUTURE VALUE OF IESY
8992          BRN      TM3  
89NL    TM2   LDX   3  ACOM3(2)            [GET STACK POINTER   
89RQ    #UNS  EDLOOP
89WW    TM3   SBN   3  9                   [PTR TO NEXT ENTRY   
8=22    #UNS  EDLOOP
8=56    #SKI
8=8=    TM3   SBN   3  7                   [PTR TO NEXT ENTRY   
8=MW          BNG   3  TM20                [J IF END
8?7G          STO   3  ACOM3(2)            [ELSE SAVE   
8?M6          ADX   3  2
8#6Q          LDXC  7  IESTACK(3)          [IS THIS A CONDITION 
8#LB          BCC      TM2                 [J IF NOT
8#N^          LDXC  7  IESTACK+2(3)        [**TYPE FOR FAN OUT AT TM5   
8#RJ          BCS      £                   [**CLEAR C IF SET
8#W7          LDX   6  IEWT(2)             [**AND NOW SEE   
8#YQ          SBN   6  #7777               [*****COMMENTS   
8*3*          BZE   6  TM5                 [*************AT K12 
8*62          LDX   6  IEWT(2)  
8*KL          BNG   6  TM4                 [J IF BACKWARDS  
8B5=          LDXC  7  IESTACK+2(3)        [SEE IF TERMINATOR IS FORWARDS   
8BJW          BCS      TM2                 [J IF NOT
8C4G          BRN      TM5  
8CJ6    TM4   LDXC  7  IESTACK+2(3)        [SEE IF TERMINATOR IS BACKWARDS  
8D3Q          BCC      TM2                 [J IF NOT
8DHB    TM5   ADX   7  1                   [FANOUT ON TYPE  
8F32          EXIT  7  £                   [OF TERMINATOR   
8FGL          BRN      TMEND               [J FOR END   
8G2=          BRN      TMTXT               [J FOR CONTEXT   
8GFW          LDX   7  IESTACK+3(3)        [ELSE RECORD NO  
8G^G          SBX   7  IEOR(2)             [CHECK IF REQUIRED RECORD
8HF6          BNZ   7  TM2                 [J IF NOT
8HYQ          BRN      TM10 
8JDB    TMEND LDCT  7  #4                  [END OF FILE 
8JY2          ANDX  7  IESW(2)  
8KCL          BZE   7  TM2                 [J IF NOT THERE  
8KX=          BRN      TM10 
8LBW    TMTXT LDN   6  IESTACK+2(3)         [SET DATA POINTER   
8LWG          SBX   6  2
8MB6          DOWN     EDITEX,1            [CONTEXT - DO CHECK  
8MTQ          BRN      TM2  
8N*B    TM10  LDX   3  ACOM3(2) 
8NT2          ADX   3  2
8P#L          LDX   0  IESTACK+6(3) 
8PS=          BZE   0  TM11                [J IF SEARCH BY NUMBER   
8Q?W          LDN   6  IESTACK+2(3) 
8QRG          SBX   6  2
8R?6          DOWN     EDITEX,2            [DO CONTEXT SEARCH   
8RQQ    TM11  LDX   3  ACOM3(2) 
8S=B          ADX   3  2
8SQ2          LDX   0  IESTACK+5(3)        [GET CHAR NO 
8T9L          BPZ   0  TM12                [J IF REASONABLE 
8TP=          LDN   0  0                   [ELSE ADJUST 
8W8W    TM12  BXL   0  IEOH(2),TM13 
8WNG          LDX   0  IEOH(2)  
8X86    TM13  LDX   6  IEWT(2)  
8XMQ          BNG   6  TM14                [J IF BACKWARDS  
8Y7B          BXL   0  ACOM1(2),TM15       [J IF THIS TERMINATOR
8YM2          BXE   0  ACOM1(2),TM15       [OVERRIDES PREVIOUS ONES 
8^6L          BRN      TM2  
8^L=    TM14  BXL   0  ACOM1(2),TM2        [DISREGARD   
925W    TM15  STO   0  ACOM1(2)            [THIS TERMINATOR OVERRIDES   
92KG          LDCT  7  #400                [ANY PREVIOUS ONES SO
9356          ORX   7  ACOM3(2)            [ADJUST THE DETAILS  
93JQ          STO   7  ACOM2(2) 
944B          BRN      TM2  
94J2    TM20  LDX   7  ACOM2(2)            [FINISHED SO SET 
953L          STO   7  IESY(2)             [IESY,IECC   
95H=          LDX   7  ACOM1(2) 
962W          STO   7  IECC(2)  
963G    #UNS  EDLOOP
9646    (   
964Q          LDXC  3  IESY(2)             [J IF TERMINATOR DOES NOT STOP   
965B          BCC      TM22                [ON THIS RECORD  
9662          LDX   7  IECC(2)             [J IF CURRENT CHARACTER NOT STOPPING 
966L          BXU   7  IEOC(2),TM22        [CHARACTER   
967=          LDXC  7  IESP(2)             [POINTER TO NEXT FREE STACK ENTRY
967W          ANDX  7  BITS22LS 
968G          ANDX  3  BITS22LS 
9696          STO   3  ACOM3(2) 
969Q          BXE   7  ACOM3(2),TM22       [SHOULD NOT BE POSSIBLE  
96=B          LDX   6  BITS22LS 
96?2    TM21  LDX   3  ACOM3(2) 
96?L          ADS   2  3
96#=          STO   6  IESTACK+7(3)        [RE-INITIALISE TWO EXTRA WORDS IN
96#W          STOZ     IESTACK+8(3)        [STACK ENTRY FOR THIS TERMINATOR 
96*G          LDN   3  9                   [& ANY NESTED TERMINATORS UP TO IESP 
96B6          ADS   3  ACOM3(2) 
96BQ          BXU   7  ACOM3(2),TM21
96CB    TM22  LDX   6  AWORK1(2)           [GET LINK
96D2    )   
96DL    #UNS  EDLOOP
96F=    #SKI
96GG          LDX   6  AWORK1(2)           [GET LINK
9726          ADS   1  6
97FQ    TERMX EXIT  6  0                   [EXIT
97^B    #PAG
98F2    #   
98YL    #     THE FOLLOWING ROUTINES ACTUALLY DO THE EDITING
99D=    #   
99XW    #     FIRST THE TRANSCRIBE ROUTINE  
9=CG    #   
9=X6    N7EDITPT
9?BQ    #   
9?WB          LDCT  0  #200                [SET A BIT TO SAY WE 
9#B2          ORS   0  IEWT(2)             [ARE TRANSCRIBING
9#TL          LDX   7  IEWT(2)  
9**=          BPZ   7  N8EDITPT            [CONTINUE IF FORWARDS
9*SW          EDERR    BTNA                [CANT TRANSCRIBE BACKWARDS   
9B#G          BRN      NER  
9BS6    #   
9C?Q    #     NOW THE POSITION/TRANSCRIBE   
9CRB    #   
9D?2    N8EDITPT
9DQL    #   
9F2D          BVCR     £                   [ENSURE V IS CLEAR   
9F==          LDXC  7  IESP(2)             [SEE IF ANY TERMINATORS  
9FPW          BCS      PTSLOW              [J TO SLOW METHOD IF SO  
9G9G          LDCT  0  #200 
9GP6          ADN   0  1                   [USE THE FAST METHOD 
9H8Q          ANDX  0  IEWT(2)             [IF PE OR PN 
9HNB          BZE   0  PFAST
9J82    PTSLOW  
9JML          STOZ     AWORK4(2)           [DON'T TRIGGER EOF YET   
9K7=          CALL  6  TERMS               [CHECK IF TERMINATOR STOPS   
9KLW          LDXC  7  IESY(2)             [US ON THIS RECORD   
9L6G          BCC      PTS10               [J IF NOT
9LL6          CALL  6  TARGREC             [SEE IF ON TARGET RECORD 
9M5Q          BRN      PTS80               [J IF SO 
9MKB          LDX   3  IECC(2)             [ELSE SET TARGET CHAR TO WHERE   
9N52          BRN      PTS81               [TERMINATOR STOPS US 
9NJL    PTS10 STOZ     AWORK4(2)           [DONT TRIGGER EOF YET
9P4=          CALL  6  TARGREC             [SEE IF ON TARGET RECORD 
9PHW          BRN      PTS80               [J IF SO 
9Q3G          LDCT  7  #4   
9QH6          ANDX  7  IESW(2)  
9R2Q          BZE   7  PTS20               [J IF NOT AT EOF 
9RGB          LDXC  7  IEWT(2)  
9S22          BCC      PTS30               [J IF FORWARDS   
9SFL    PTS20 CALL  6  RROR                [WRITE RESIDUE OF RECORD 
9S^=    PTS30   
9TDW          CALL  6  READ                [READ NEXT RECORD
9TYG          CALL  6  TERMS               [CHECK TERMINATORS   
9WD6          LDXC  7  IESY(2)  
9WXQ          BCC      PTS40               [J IF NOT FOUND ONE  
9XCB          CALL  6  TARGREC             [SEE IF ON TARGET RECORD 
9XX2          BRN      PTS80               [J IF SO 
9YBL          LDX   3  IECC(2)             [ADJUST TARGET RECORD
9YW=          BRN      PTS81
9^*W    PTS40 CALL  6  TARGREC             [SEE IF ON TARGET RECORD 
9^TG          BRN      PTS80               [J IF SO 
=2*6          LDX   7  AWORK4(2)
=2SQ          BZE   7  PTS60               [J IF READ WAS OK
=3#B          SBN   7  1
=3S2          BNZ   7  PTS50               [J IF NOT OFF END
=4?L    PTS45 EDERR    YROE                [YOUVE RUN OFF THE END   
=4R=          BRN      NER  
=5=W    PTS55 LDN   7  1
=5QG          STO   7  AWORK4(2)           [MARK AS END OF FILE 
=6=6          CALL  6  TERMS               [CHECK FOR E TERMINATOR  
=6PQ          LDXC  7  IESY(2)  
=79B          BCC      PTS45               [J IF NOT ONE
=7P2          LDX   3  IECC(2)             [OTHERWISE PICK UP STOPPING CHAR 
=88L          BRN      PTS8A               [J RECORD FOUND  
=8N=    PTS50 EDERR    YROB                [YOUVE RUN OFF THE BEGINNING 
=97W          BRN      NER  
=9MG    PTS60 LDCT  7  #4   
==76          ANDX  7  IESW(2)  
==LQ          BZE   7  PTS70               [J IF NOT AT EOF 
=?6B          LDXC  7  IEWT(2)  
=?L2          BCC      PTS30               [J IF FORWARDS   
=#5L    PTS70 LDCT  6  #200 
=#K=          ANDX  6  IEWT(2)  
=*4W          BZE   6  PTS30               [J IF P  
=*JG          CALL  0  MOVE                [MOVE DATA TO FAPB   
=B46          CALL  6  WRITE
=BHQ          BRN      PTS30
=C3B    PFAST LDXC  0  IEWT(2)  
=C5^          FIXTRA   ESP4                [****EDITOR SPECIAL FOR PLESSEY****  
=C8J          BRN      SP4  
=C?7          BCS      £                   [CLEAR 'C' IF SET
=C*Q          LDX   5  IEOR(2)  
=CD*    SP4 
=CH2          BNZ   0  PFS10               [J IF NUMBER 
=D2L          LDCT  7  #4   
=DG=          ANDX  7  IESW(2)  
=D^W          BNZ   7  PTS94               [J IF AT EOF 
=FFG          LDN   3  4095                [A BIG NO
=F^6    PFS0  VSKIP    1,0(3)              [SKIP
=GDQ          TESTREP2  ENDFILE,PFS1        [J IF HIT EOF   
=GYB          LDN   3  4095 
=HD2          ADS   3  IEOR(2)             [ELSE UPDATE IEOR
=HXL          BRN      PFS0 
=JC=    PFS1  LDN   4  4095 
=JWW          SBX   4  3
=KBG          ADS   4  IEOR(2)             [UPDATE IEOR 
=KF5          FIXTRA   ESP5                [****EDITOR SPECIAL FOR PLESSEY****  
=KHN          BRN      SP5  
=KL?          SBX   5  IEOR(2)  
=KNW          SBS   5  IEOS(2)  
=KRF    SP5 
=KW6          STOZ     IEOC(2)  
=L*Q          STOZ     IEOH(2)             [CLEAR CURRENT CHAR. COUNT (OF)  
=LTB          LDCT  7  #4   
=M*2          ORS   7  IESW(2)             [SET EOF BIT 
=MSL          BRN      PTS94
=N#=    PFS10 LDXC  0  IEWT(2)  
=NRW          BCS      PFS20               [J IF BACKWARDS  
=P?G          LDCT  7  #4   
=PR6          ANDX  7  IESW(2)  
=Q=Q          BZE   7  PFS11               [J IF NOT AT EOF 
=QQB          LDX   6  IEWT+1(2)
=R=2          SBX   6  IEOR(2)             [SEE IF ON TARGET RECORD 
=RPL          BNZ   6  PTS45               [YROF IF NOT 
=S9=          BRN      PTS80               [ELSE CARRY ON   
=SNW    PFS11 LDX   4  IEWT+1(2)
=T8G          SBX   4  IEOR(2)  
=TN6          BZE   4  PTS80               [J IF ALREADY THERE  
=W7Q          SBN   4  1
=WMB          BZE   4  PFS12
=X72          LDX   6  4                   [X6=NO. RECORDS STILL LEFT   
=XLL    PFSL  LDN   3  4095 
=Y6=          SBX   6  3
=YKW          BPZ   6  PFSV                [J IF > 4095 
=^5G          ADX   3  6
=^K6          LDN   6  0                   [NONE LEFT AFTER NEXT SKIP   
?24Q    PFSV  VSKIP    1,0(3)              [SKIP GIVEN NO.  
?2JB          TESTRPN2 ENDFILE,PSF12        [J IF NOT HIT EOF   
?342          SBX   4  3                   [E0F SO - WHAT VSKIP LEFT
?3HL    PSF11 SBX   4  6                   [- NO. LEFT UNDONE   
?43=          ADS   4  IEOR(2)  
?48D           FIXTRA   ESP6                [****EDITOR SPECIAL FOR PLESSEY**** 
?4*L          NULL  
?4GW          STOZ     IEOC(2)  
?52G          STOZ     IEOH(2)             [CLEAR CURRENT CHAR. COUNT (OF)  
?5G6          LDCT  7  #4                  [SET EOF BIT 
?5^Q          ORS   7  IESW(2)  
?6FB          BRN      PTS45               [YROF
?6^2    PSF12 BZE   3  PSF11
?7DL          BNZ   6  PFSL                [J IF MORE TO SKIP   
?7Y=    PFS12 ADS   4  IEOR(2)  
?85D          FIXTRA   ESP7                [****EDITOR SPECIAL FOR PLESSEY****  
?8=L          NULL  
?8CW          CALL  6  READ                [READ REQUIRED RECORD
?8XG          LDX   7  IEOR(2)  
?9C6          SBX   7  IEWT+1(2)
?9WQ          BZE   7  PTS80
?=BB    OH    GEOERR   1,EDITPT 
?=W2    PFS20 LDX   7  IEOR(2)  
??*L          SBX   7  IEWT+1(2)           [NO OF RECORDS TO GO BACK
??T=          BZE   7  PTS80               [J IF ALREADY THERE  
?##W          LDCT  6  #4   
?#SG          ORS   6  IESW(2)             [CLEAR EOF BIT   
?*#6          ERS   6  IESW(2)  
?*RQ          LDN   6  20                  [USE DMB'S ALGORITHM TO  
?B?B          MPY   7  6                   [DETERMINE MOST ECONOMICAL   
?BR2          BNZ   7  PREW                [METHOD - REWIND IF  
?C=L          NGX   0  0                   [Y<20(X-Y)   
?CQ=          ADX   0  IEWT+1(2)           [X = CURRENT 
?D9W          BNG   0  PREW                [Y = DESTINATION 
?DPG    PBSP  NGX   6  IEWT+1(2)           [ALSO REWIND IF  
?F96          BPZ   6  PREW                [Y<0 OR Y=0  
?FNQ          LDX   7  IEOR(2)  
?G8B          ADX   7  6                   [X-Y 
?GN2          SBN   7  1                   [NO OF BACKSPACES TO DO  
?H7L          BZE   7  PBSP2               [J IF NONE   
?HM=          SBS   7  IEOR(2)             [UPDATE RECORD NO
?HSD          FIXTRA   ESP8                [****EDITOR SPECIAL FOR PLESSEY****  
?H^L          NULL  
?J6W    PBSP1 BACKSPACE 1                  [DO LOOP OF BSP  
?JLG          BCT   7  PBSP1
?K66    PBSP2 CALL  6  READ                [READ BACKWARDS  
?KKQ          BRN      PTS80
?L5B    PREW  NGN   7  1                   [SET REC NO = -1 
?LK2          STO   7  IEOR(2)  
?M4L          REWIND   1                   [REWIND FILE 
?MJ=          LDCT  4  #400 
?N3W          ERS   4  IEWT(2)             [FORCE FORWARDS  
?NHG          LDX   4  IEWT+1(2)
?P36          BZE   4  PREW2               [NO NEED TO SKIP 
?PGQ          BPZ   4  PREW1               [J IF NORMAL TO SKIP 
?Q2B          CALL  6  READ                [ELSE ERROR OCCURRED SO READ 
?QG2          BRN      PTS50               [FIRST RECORD AND COMMENT
?Q^L    PREW1 LDN   3  4095 
?RF=          SBX   4  3
?RYW          BPZ   4  PREW0               [J IF > 4095 
?SDG          ADX   3  4
?SY6          LDN   4  0                   [NONE LEFT AFTER NEXT SKIP   
?TCQ    PREW0 SKIP     1,0(3)   
?TXB          BNZ   4  PREW1               [LOOP IF MORE TO SKIP
?WC2          LDX   7  IEWT+1(2)
?WWL          ADS   7  IEOR(2)             [UPDATE RECORD NO
?X3S          FIXTRA   ESP9                [****EDITOR SPECIAL FOR PLESSEY****  
?X92          NULL  
?XB=    PREW2 CALL  6  READ                [READ REQUIRED RECORD
?XTW    PTS80 LDX   0  IEWT+4(2)
?Y*G          BZE   0  PTS82               [J IF SEARCH BY NUMBER   
?YT6          LDCT  7  #4   
?^#Q          ANDX  7  IESW(2)             [CHECK IF EOF
?^SB          BZE   7  PST80                [OK IF NOT  
#2#2          LDXC  7  IEWT(2)  
#2RL          BCS      PST84                [CHNF IF BACKWARDS  
#3?=          BRN      PTS55               [POSSIBLY YROE FORWARDS  
#3QW    PST80 LDN   6  IEWT                 [SET DATA POINTER   
#4=G          DOWN     EDITEX,2            [DO CONTEXT SEARCH   
#4Q6    PTS82 LDX   3  IEWT+3(2)           [GET CHAR NUMBER 
#59Q    PTS81 LDCT  7  #4   
#5PB          ANDX  7  IESW(2)  
#692          BZE   7  PTS8A               [J IF NOT EOF
#6NL          BNG   3  PTS8A                [J IF TARGET CHAR -VE   
#78=          BNZ   3  PTS55               [TARGET CHAR NOT ZERO
#7MW    PTS8A LDCT  7  #60  
#87G          ANDX  7  IESW(2)             [CHECK FOR W FACILITY
#8M6          SLL   7  3
#96Q          BPZ   7  PTS8B               [W NOT BEING USED
#9LB          SLL   7  1
#=62          BNG   7  PTS8B               [RECORD ALREADY LISTED   
#=KL          DOWN     EDWRITE,10          [LIST THE RECORD 
#?5=    PTS8B LDXC  7  IESY(2)             [J IF NO REPETITION STOPS
#?JW          BCC      PTS84               [ON THIS RECORD  
##4G          LDX   7  IECC(2)  
##J6          LDXC  0  IEWT(2)  
#*3Q          BCS      PTS83               [J IF BACKWARDS  
#*HB          BXL   3  7,PTS84  
#B32          LDX   3  7                   [ADJUST STOPPING POINT   
#BGL          BRN      PTS84               [TO TAKE ACCOUNT 
#C2=    PTS83 BXGE  3  7,PTS84             [OF TERMINATOR   
#CFW          LDX   3  7
#C^G    PTS84 BPZ   3  PTS85               [J IF CHAR NO REASONABLE 
#DF6    PST84 EDCOM    CHNF                 ["CHARACTER NOT FOUND"  
#DYQ          LDN   3  0                   [SET TO REASONABLE VALUE 
#FDB    PTS85 LDCT  7  #200 
#FY2          ANDX  7  IEWT(2)  
#GCL          BZE   7  PTS91               [J IF P INSTRUCTION  
#GX=          STO   3  AWORK3(2)           [SAVE DESTINATION POINT  
#HBW          LDX   4  3
#HWG          SBX   4  IEOC(2)             [NO OF CHARS TO TRANSCRIBE   
#J8X          BNG   4  PTS92               [J IF NEGATIVE   
#JH#          BZE   4  PTS92               [J IF NOE (DONT WANT RED TAPE)   
#JTQ          ADX   4  IENC(2)             [WHAT IENC WOULD BECOME  
#K*B          BXL   4  IENH(2),PTS86       [J IF LENGTH OK  
#KT2          LDX   4  IENH(2)             [ELSE ADJUST 
#L#L    PTS86 CALL  0  SIZE                [CHECK SIZE OF FAPB  
#LS=          SBX   4  IENC(2)             [NO OF CHARS TO TRANSCRIBE   
#M?W          STOZ     AWORK4(2)           [NO OF SPACES REQUIRED   
#MRG          LDX   3  IEOH(2)  
#N?6          SBX   3  IEOC(2)             [NO OF CHARS LEFT IN RECORD  
#NQQ          BPZ   3  PTS87
#P=B          LDN   3  0                   [NEGATIVE MEANS NONE 
#PQ2    PTS87 BXGE  3  4,PTS88             [SPACES NOT REQUIRED 
#Q9L          SBX   4  3
#QP=          STO   4  AWORK4(2)           [NO OF SPACES
#R8W          BRN      PTS89
#RNG    PTS88 LDX   3  4                   [NO OF CHARS TO TRANSCRIBE   
#S86    PTS89 STO   3  AWORK1(2)
#SMQ          CALL  6  RLOF                [RELOCATE BLOCKS 
#T7B          CALL  6  RLNF 
#TM2          LDX   3  AWORK1(2)
#W6L          LDX   6  IEOC(2)  
#WL=          LDX   7  IENC(2)  
#X5W          ADS   3  IEOC(2)             [UPDATE CHAR POINTERS
#XKG          ADS   3  IENC(2)  
#Y56          SRC   6  2
#YJQ          SRC   7  2
#^4B
#^J2          BNZ   7  PTS90               [J IF RED TAPE NOT REQUIRED  
*23L    #SKI  JDIAG1<1$1
*2H=    (   
*32W          ADN   3  8                   [ELSE ADJUST 
*3GG          NGN   6  2
*426          NGN   7  2
*4FQ    PTS90 ADN   6  A1+2 
*4^B          ADN   7  A1+2 
*5F2    )   
*5YL    #SKI  JDIAG1
*6D=    (   
*6T3          LDX   0  IEOG(2)  
*79S          SBN   0  A1   
*7LK          SLL   0  2
*83B
*8D7          LDX   4  IEOA(2)             [OLD FILE BLOCK ADDR 
*8SY          LDX   5  IENA(2)             [NEW FILE BLOCK ADDR 
*99P          ADN   4  A1                  [AND INCREMENT TO
*9LG          ADN   5  A1                  [RED TAPE
*=3?          SMO      0                   [LENGTH OF RED TAPE  
*=D4          MVCH  4  0                   [COPY OVER FROM OLD TO NEW   
*=SW    PTS90 ADX   6  IEOG(2)  
*?#G          ADX   7  IENG(2)  
*?S6    )   
*#?Q          ADX   6  IEOA(2)             [GET ABSOLUTE ADDRESSES  
*#RB          ADX   7  IENA(2)  
**?2          CALL  0  MVCH                [AT LAST 
**QL          LDX   3  AWORK4(2)           [NO OF SPACES REQUIRED   
*B==          BZE   3  PST90
*BPW          ADS   3  IEOC(2)  
*C9G          ADS   3  IENC(2)             [UPDATE POINTERS 
*CP6          LDN   5  #20  
*D8Q          LDX   6  7
*DNB          LDX   3  7
*F82          DCH   5  0(3)                [DUMP A SPACE
*FML          BCHX  7  £
*G7=          LDX   3  AWORK4(2)
*GLW          SBN   3  1
*H6G          CALL  0  MVCH                [MOVE THE SPACES 
*HL6    PST90 LDX   7  IEOC(2)              [SEE IF WE TRUNCATED
*J5Q          BXE   7  AWORK3(2),PTS92     [J IF NOT
*JKB          EDCOM    YRTL                [CHOP CHOP CHOP  
*K52          BRN      NER  
*KJL    PTS91 STO   3  IEOC(2)             [SET IEOC
*P^=    PTS92 LDXC  7  IESY(2)             [HAS A TERMINATOR STOPPED US 
*QDW          BCC      PTS94               [J IF NOT
*QYG          LDX   6  IEOC(2)             [HAVE WE REACHED STOPPING POINT  
*RD6          BXU   6  IECC(2),PTS94       [J IF NOT
*RMY    PTS92A  
*RXQ          BZE   7  PTS93               [J IF STACK NOW CLEAR
*SCB          LDCT  6  #400 
*SX2          ORX   7  6                   [KEEP B0 OF IESP SET 
*TBL    PTS93 STO   7  IESP(2)             [RESET STACK TO PULLED   
*TW=          SMO      7                   [UP VALUE
*W*W          LDX   6  IESTACK+1(2) 
*WTG          STO   6  IEIP(2)             [SKIP PAST TERMINATOR
*X*6          STOZ     IESY(2)             [ZEROISE STORAGE WORD
*XSQ    PTS94 ACROSS   EDITOR,3            [WIND TO NEXT INSTRUCTION
*Y#B    #   
*YS2    #   
*^?L    #     THIS ROUTINE COPIES THE REST OF THE OLD FILE STACK
*^R=    #   
B2=W    N2EDITPT
B2QG          LDCT  5  #4   
B3=6          ANDX  5  IESW(2)             [CHECK IF AT EOF 
B3PQ          BZE   5  ZE1                 [J IF NOT
B49B          LDX   5  IENC(2)             [TEST IF ANYTHING TO WRITE   
B4P2          BZE   5  ZE3                 [J IF NOT
B58L    ZE1   STOZ     IESP(2)             [DONT ALLOW REPETITION   
B5N=          LDCT  4  #400 
B67W          LDCT  0  #600                [SET BIT SAYING WE ARE   
B6MG          ORS   0  IEWT(2)             [TRANSCRIBING
B776          ERS   4  IEWT(2)             [FORCE READ FROWARDS 
B7LQ          CALL  6  RROR 
B86B    ZE2 
B8L2          CALL  6  READ                [READ NEXT RECORD
B95L          LDCT  7  #4   
B9K=          ANDX  7  IESW(2)  
B=4W          BNZ   7  ZE3                 [J IF EOF
B=JG          CALL  0  MOVE 
B?46          CALL  6  WRITE
B?HQ          BRN      ZE2  
B#3B    ZE3   LDX   5  IEON(2)  
B#H2          SBN   5  2
B*2L          BNG   5  ZE4                 [J IF LAST OLDFILE COPIED
B*G=          DOWN     EDITOR,5 
B*^W          DOWN     EDITPT,11           [SIMULATE X INSTRUCTION  
BBFG          BRN      N2EDITPT            [DO NEXT FILE
BB^6    ZE4   ACROSS   EDITOR,9            [FINISHED
BCDQ    #   
BCYB    #   
BDD2    #     CODE FOR A,B AND R INSTRUCTIONS   
BDXL    #   
BFC=    TABR  SBS   1  6
BFWW          STO   6  AWORK2(2)           [STORE LINK  
BGBG          CALL  6  TERMS               [CHECK TERMINATORS   
BGW6          LDX   1  AWORK2(2)           [GET PAIR ADDRESS
BH*Q          ADX   1  FX1                 [DATUMISE
BHTB          ACROSSVAR 0(1)               [J TO INSTRUCTION
BJ*2    #   
BJSL    N3EDITPT                           [A INSTRUCTION   
BK#=    #   
BKRW          CALL  6  TABR 
BL?G          PAIR     EDITEX,4 
BLR6    #   
BM=Q    N4EDITPT                           [B INSTRUCTION   
BMQB    #   
BN=2          CALL  6  TABR 
BNPL          PAIR     EDITEX,5 
BP9=    #   
BPNW    N5EDITPT                           [R INSTRUCTION   
BQ8G    #   
BQN6          CALL  6  TABR 
BR7Q          PAIR     EDITEX,7 
BRMB    #   
BS72    #   
BSLL    N10EDITPT                          [READ FIRST RECORD OF OLD FILE   
BT6=          LDCT  0  #2                  [SET B7 IN   
BTKW          ORS   0  IESW(2)             [CASE OF BREAK-IN
BW5G          STOZ     IEWT(2)             [FORCE FORWARDS  
BWK6          CALL  6  READ                [READ RECORD 
BX4Q          LDCT  0  #2                  [CLEAR MARKER
BXJB          ORS   0  IESW(2)             [FROM SWITCH WORD
BY42          ERS   0  IESW(2)  
BYHL          LDCT  7  #4   
B^3=          ANDX  7  IESW(2)  
B^GW          LDN   3  0
C22G          BZE   7  UP                  [J IF EOF NOT SET
C2G6          LDN   3  1
C2^Q    UP    STO   3  ACOM3(2)            [SET ACOM3   
C3FB          UPPLUS   1
C3^2    #   
C4DL    #   
C4Y=    N11EDITPT                          [PART OF X INSTRUCTION   
C5CW    #   
C5XG          HUNTW    3,EDIT,FRB           [FIND FRB OF FILE JUST CLOSED   
C6C6          BNG   3  U1                  [J IF NOT THERE  
C6WQ          FREECORE 3                   [FREE IT 
C7BB    U1    READAGAIN 1                  [REREAD REQUIRED RECORD  
C7W2          LDN   6  U2   
C8*L          STO   6  AWORK1(2)           [SET EXIT
C8T=          BRN      RD42                [INITIALISE  
C9#W    U2    UP                           [RETURN  
C9SG    #   
C9T6    #   
C9TQ    #   
C9WB    #   
C9X2    #     THIS ROUTINE IS CALLED TO TEST IF ANY TERMINATOR  
C9XL    #     HAS BEEN REACHED BEFORE EXECUTING ANY INSTRUCTION 
C9Y=    #     IF WE ARE NOT ON ANY TERMINATOR GO BACK   
C9YW    #     OTHERWISE PULL UP STACK AND WIND TO NEXT INSTRUCTION  
C9^G    #   
C=26    #     IEWT IS SET TO #7777 TO SIGNIFY THAT WE MAY STOP  
C=2Q    #     ON A FORWARDS OR BACKWARDS TERMINATOR 
C=3B    #   
C=42    #   
C=4L    N12EDITPT   
C=5=          LDN   7  #7777
C=5W          STO   7  IEWT(2)             [AS ABOVE
C=6G          CALL  6  TERMS               [TEST IF THIS TERMINATOR STOPS US .. 
C=76          LDXC  7  IESY(2)             [ON THIS RECORD ..   
C=7Q          BCC      U2                  [J TO 'UP' IF NOT THIS RECORD
C=8B          LDX   6  IECC(2)             [IF STOPPING CHAR IS NOT CURRENT ..  
C=92          BXU   6  IEOC(2),U2          [CHAR THEN J TO 'UP' 
C=9L          TRACE    6,IESTOPCH   
C===          FREELINK                     [NOT GOING UP NOW
C==W          BRN      PTS92A              [J TO PULL UP STACK ETC  
C=#6     MENDAREA 1023-0?<150,K100EDITPT
C=RQ    #END
^^^^ ...67643253000200000000