SCEDITAR84

(George Source)

Macros used: ACROSS, ALTLENG, ALTLENGD, ASCEDIT, BACKSPACE, BXE, BXGE, BXL, BXU, CATMASK, CHARS, CLOSE, CLOSEABANDON, CURTAIL, ENDCOM, HUNT2J, MHUNTW, MONOUTX, OFF, REPEAT, SEG, SEGENTRY, SETNCORE, STEP, STEPAGAIN, TESTBRKIN, TESTREP, TRACE, VFREEW, WIND, XCBINDEX

SCEDITAR84.txt
22FL          SEG      SCEDITAR,,KEITH H MARTIN 
22^=    #LIS      K0SCEDITAR>K0ALLGEO>K0GREATGEO
23DW    #   
23YG    #   
24D6    #   
24XQ    #   
25CB    #              IN   
25X2    #              **   
26BL    #   
26W=          SEGENTRY K1SCEDITAR,SDATA        [SCREENFULL OF DATA  
27*W          SEGENTRY K2SCEDITAR,SCONTROL     [CONTROL +6,+7   
27TG          SEGENTRY K3SCEDITAR,SCOMMANDT    [T   
28*6          SEGENTRY K4SCEDITAR,SCOMMANDP    [P   
28SQ         SEGENTRY K5SCEDITAR,SCOMMANDE     [E   
29#B          SEGENTRY K6SCEDITAR,SCOMMANDF    [F   
29S2          SEGENTRY K7SCEDITAR,SCOMMANDQ    [Q   
2=?L    #   
2=R=    #   
2?=W    #              OUT  
2?QG    #              ***  
2#=6    #     K1SCEDITOR   [OUTPUT POINTER READY
2#PQ    #     K2SCEDITOR   [OUTPUT ASCREEN BLOCK
2*9B    #     K3SCEDITOR   [REOUTPUT ASCREEN BLOCK  
2*P2    #     K4SCEDITOR   [BREAK IN
2B8L    #   
2BN=    #   
2C7W    #   
2CMG    #   
2D76    # ================================================================= #   
2DLQ    #   
2F6B    #   
2FL2    #   
2G5L    #   
2GK=    SSKATC         CATMASK COMMANDS 
2H4W    SSCOMMA        4H000,   
2HJG    SSSPACE        4H000
2J46    SSSPACES       4H   
2JHQ    SSHASH         4H000#   
2K3B    SSMINUS        4H000-   
2KH2    SST            4H000T   
2L2L    SSP            4H000P   
2LG=    SSR            4H000R   
2L^W    SSQ            4H000Q   
2MFG    SSE            4H000E   
2M^6    SSF            4H000F   
2NDQ    SSTEN          +10  
2NYB    SSBITS22       #17777777
2PD2    SSDELIM        16H:;<=>?!"£%&'+/
2PXL    SSMAGICNO      +7036875 
2QC=    SSKATZ         CATMASK FORCETYP,BROADCAS
2QWW    SSSYN          13HSYNTAX ERROR: 
2RBG    #   
2RW6    SS6            +6   
2S*Q    SS7            +7   
2STB    SS8            +8   
2T58 ...XISBITNG        #00010000         [FLAG FOR NON GRAPHIC FILES   
2T*2    #   
2TSL    #   
2W#=    #   
2WRW    #   
2X?G    #   
2XR6    # ================================================================= #   
2Y=Q    #   
2YQB    #   
2^=2    #   
2^PL    #   
329=    #              MONITORING FILE MESSAGE ADDRESSES
32NW    SE2MBAFR       +ISE2MBAFR   
338G    SYROTBOTF      +ISYROTBOTF  
33N6    SYRYBSL        +ISYRYBSL
347Q    SROTKINA       +ISROTKINA   
34MB    SBTNA          +ISBTNA  
3572    SYROTEOTF      +ISYROTEOTF  
35LL    SFMNBUITC      +ISFMNBUITC  
366=    SYFYNF         +ISYFYNF 
36KW    SIT            +ISIT
375G    SNTL           +ISNTL   
37K6    SEA            +ISEA
384Q    SEOE           +ISEOE   
38#J ...SCHOP       48HWARNING:  TOTAL      LINES TRUNCATED TO 80 CHARS 
38JB    #   
3942    #   
39HL    #   
3=3=    #   
3=GW    # ================================================================= #   
3?2G    #   
3?G6    #   
3?^Q    #   
3#FB    #   
3#^2    #   
3*DL    #              MATCH SUBROUTINE 
3*Y=    #   
3BCW    #              DOES THE USER GIVEN STRING MATCH 
3BXG    #              WITH THE CURRENT LINE
3CC6    #   
3CWQ    #              GIVEN
3DBB    #              X1=PTR TO STRING(ISPARAMA+2 OR ISPARAMB+2)   
3DW2    #              X2=PTR TO LINE   
3F*L    #   
3FT=    #              LINK X7  
3G#W    #              USES 
3GSG    #              X3 CHAR FROM STRING  
3H#6    #              X4 CHAR FROM LINE
3HRQ    #              X5 LENGTH OF STRING  
3J?B    #              X6 LENGTH OF LINE
3JR2    #              EXIT CALL+1 MATCH
3K=L    #                    CALL+2 N0 MATCH
3KQ=    MATCH   
3L9W    #              CALCULATE LENGTHS
3LPG          LDX   5  0(1)                [STRING LENGTH   
3M96          SMO      FX1  
3MNQ          ANDX  5  SSBITS22            [IGNORE DIRECTION
3N8B          LDCT  6  #600 
3NN2          ANDX  6  FRH+1(2) 
3P7L          BNZ   6  MATCHUP  
3PM=          ADN   6  1
3Q6W    MATCHUP 
3QLG          ADX   6  FRH(2)   
3R66          SLC   6  2
3RKQ          SBN   6  12   
3S5B          BZE   6  MATCHNO           [NO MATCH IF ZERO LINE 
3SK2                                       [LINE LENGTH 
3T4L    #              STEP OVER RED TAPE ETC   
3TJ=          ADN   1  1
3W3W          ADN   2  FRH+2
3WHG    #              TEST MATCH   
3X36    MATCHA  
3XGQ          LDCH  3  0(1) 
3Y2B          LDCH  4  0(2) 
3YG2          BXU   3  4,MATCHNO
3Y^L    #              STEP POINTERS
3^F=          BCHX  1  £
3^YW          BCHX  2  £
42DG    #              TEST COUNTS  
42Y6          BCT   5  MATCHB   
43CQ    MATCHYES
43XB          EXIT  7  0
44C2    MATCHB  
44WL          BCT   6  MATCHA   
45B=    MATCHNO 
45TW          EXIT  7  1
46*G    #   
46T6    #   
47#Q    #   
47SB    #   
48#2    # ================================================================= #   
48RL    #   
49?=    #   
49QW    #   
4==G    #   
4=Q6    #   
4?9Q    #              STEPBACKOLD,STEPBACKNEW SUBROUTINES  
4?PB    #              STEPS BACK TO LINE (X0) IN NEW OR OLD FILE AND   
4#92    #              RESETS CURRENT LINE NO   
4#NL    #   
4*8=    #              LINK X7  
4*MW    #   
4B7G    #              X3 MUST BE PTR TO AMXOR:ASCREEN  
4BM6    #   
4C6Q    #   
4CLB    #   
4D62    #   
4DKL    STEPBACKNEW 
4DTD ...      SBX   7  FX1  
4F5=          LDX   6  ISNCURRENT(3)       [CURREN LINE NO  
4FJW          SBX   6  0                   [DIFFERENCE  
4G4G          TRACE   6,ISNEWBAK          [<<<<<<<<<<>>>>>>>>>> 
4GJ6          BZE   6  STEPBNEX 
4H3Q          STO   0  ISNCURRENT(3)       [RESET   
4HHB    STEPBNA 
4J32          BACKSPACE    0
4JGL          BCT   6  STEPBNA  
4K2=          LDN   0  0
4KFW          CURTAIL      0               [SET APPEND=READ PTR 
4K^G    STEPBNEX
4L9# ...      ADX   7  FX1  
4LF6          EXIT  7  0
4LYQ    #   
4MDB    #   
4MY2    #   
4NCL    #   
4NX=    STEPBACKOLD 
4P74 ...      SBX   7  FX1  
4PBW          LDX   6  ISOCURRENT(3)
4PWG          SBX   6  0
4QB6          TRACE   6,ISOLDBAK           [<<<<<<<<<>>>>>>>>>> 
4QTQ          BZE   6  STEPBOEX 
4R*B          STO   0  ISOCURRENT(3)
4RK8 ...      BNG   6  STEPBOB           [J IF MOVE FORWARDS
4RT2    STEPBOA 
4S#L          BACKSPACE    1
4SS=          BCT   6  STEPBOA  
4T?W    STEPBOEX
4THN ...      ADX   7  FX1  
4TRG          EXIT  7  0
4TTD ...STEPBOB 
4TXB ...      NGX   6  6               [MAKE +VE COUNT  
4T^# ...STEPBOC 
4W3= ...      STEP     1
4W58 ...      BCT   6  STEPBOC         [TO LOOP ON  
4W76 ...      ADX   7  FX1  
4W94 ...      EXIT  7  0
4W?6    #   
4WQQ    #   
4X=B    #   
4XQ2    #   
4Y9L    # ================================================================= #   
4YP=    #   
4^8W    #   
4^NG    #   
5286    #   
52MQ    #   
537B    #              SETLOP SUBROUTINE
53M2    #   
546L    #              MUST BE CALLED BEFORE OVERWRITING ISMFORM
54L=    #              WHEN OUTPUTTING TEXT RDY OR PTR RDY BUT  
555W    #              NOT FOR ERROR MESSAGES   
55KG    #   
5656    #              CALL ON X7   
56JQ    #   
574B    #              N.B  THE LAST OUTPUT IS THE ONE PRIOR TO THE 
57J2    #              ---  ONE ON THE SCREEN NOW OR THE ONE JUST   
583L    #                   ABOUT TO BE OUTPUT  
58H=    #                CF LAST OUTPUT - CURRENT OUTPUT
592W    SETLOP  
59GG          LDN   5  ISBITLOP 
5=26          ORS   5  ISBITS(3)           [SET LAST OUTPUT READY   
5=FQ          LDCT  0  #002                [B7=TEXT READY   
5=^B          ANDX  0  ISMFORM(3)   
5?F2          BZE   0  SETLOPX               [J IF PTR RDY  
5?YL          ERS   5  ISBITS(3)           [CLEAR LAST OUTPUT PTR READY 
5#D=    SETLOPX 
5#XW          EXIT  7  0
5*CG    #   
5*X6    #   
5BBQ    #   
5BWB    #   
5CB2    # ================================================================= #   
5CTL    #   
5D*=    #   
5DSW    #   
5F#G    #   
5FS6    #              SCOMMENT SUBROUTINE  
5G?Q    #   
5GRB    #   
5H?2    #              OUTPUT FIXED MESSAGE ON NEXT FREE LINE   
5HQL    #   
5J==    #              CALL ON X7   
5JPW    #              EXIT TO CALL+1   
5K9G    #   
5KP6    #              X6 PTR TO MESSAGE
5L8Q    #   
5LNB    SCOMMENT
5LY8 ...      SBX   7  FX1  
5M82          MHUNTW   3,AMXOR,ASCREEN  
5MML          LDN  0  ISBITR
5N7=          ORS   0  ISBITS(3)
5NLW          ERS   0  ISBITS(3)           [CLEAR R 
5P6G          LDN   0  ISBITLOP 
5PL6          ANDX  0  ISBITS(3)           [LAT OP PTR RDY  
5Q5Q          BNZ   0  SCOM1               [J IF SO 
5QKB          LDX   0  ISMERR(3)
5R52          SRL   0  18   
5RJL          SBN   0  3
5S4=          BNZ   0  SCOM1               [J IF ONE ON SCREEN NOW  
5SHW          LDCT  0  #004 
5T3G          ORS   0  ISMERR(3)           [SET CLEAR SCREEN
5TH6    SCOM1   
5W2Q          LDX   5  ISMFORM(3)          [SAVE THIS   
5WGB          LDX   0  ISMERR(3)
5X22          STO   0  ISMFORM(3)   
5XFL          MONOUTX  6
5X^=          MHUNTW   3,AMXOR,ASCREEN  
5YDW          STO   5  ISMFORM(3)   
5YYG          LDCT  0  #010 
5^D6          ADS   0  ISMERR(3)          [LINES+1  
5^XQ          LDCT  0  #004 
62CB          ORS   0  ISMERR(3)
62X2          ERS   0  ISMERR(3)           [CLEAR CLEAR SCREEN  
636S ...      ADX   7  FX1  
63BL          EXIT  7  0
63W=    #   
64*W    #   
64TG    #   
65*6    #   
65SQ    # ================================================================= #   
66#B    #   
66S2    #   
67?L    #   
67R=    #   
68=W    #              WRITETIDY SUBROUNTINE
68QG    #   
69=6    #              TIDY UP WHEN 
69PQ    #              WRITING COMPLETED
6=9B    #   
6=P2    #              SET READ POINTERS EQUAL TO END OF FILE   
6?8L    #   
6?N=    #              UPDATE ISNCURRENT BY 1   
6#7W    #   
6#MG    #              LINK X7  
6*76    WRITETIDY   
6*BY ...      SBX   7  FX1  
6*LQ          WIND     0
6B6B          MHUNTW   3,AMXOR,ASCREEN  
6BL2          LDN   0  1
6C5L          ADS   0  ISNCURRENT(3)
6C*D ...      ADX   7  FX1  
6CK=          EXIT  7  0
6D4W    #   
6DJG    #   
6F46    #   
6FHQ    #   
6G3B    #   
6GH2    # ================================================================= #   
6H2L    #   
6HG=    #   
6H^W    #   
6JFG    #   
6J^6    #              SDIRECTION SUBROUTINE
6KDQ    #              %A OR %B OF T OR B BACKWARDS OR FORWARDS 
6KYB    #   
6LD2    #              CALL ON X7   
6LXL    #                X6=0 NUMBER
6MC=    #                X6=1 STRING
6MWW    #                X2=PTR TO ANALYSED PARAM   
6NBG    #                   (ISPARAMA OR ISPARAMB)  
6NW6    #                X3=PTR TO AMXOR/ASCREEN
6P*Q    #   
6PTB    #              EXIT CALL+1 BACKWARDS
6Q*2    #                   CALL+2 FORWARDS 
6QSL    #   
6R#=    #   
6RRW    SDIRECTION  
6S?G          BZE   6  SDIRA               [J IF NUMBER 
6SR6          LDX   6  2(2) 
6T=Q          BNG   6  SDIRX0   
6TQB    SDIRX1  
6W=2          EXIT  7  1                   [FORWARDS
6WPL    SDIRX0  
6X9=          EXIT  7  0                   [BACKWARDS   
6XNW    SDIRA   
6Y8G          LDX   6  0(2) 
6YN6          BNG   6  SDIRX1              [J IF E  
6^7Q          SLL   6  1
6^MB          BNG   6  SDIRX0              [J IF B  
7272          LDX   6  0(2) 
72LL          SMO      FX1  
736=          ANDX  6  SSBITS22         [LINE NO
73KW          BXL   6  ISOCURRENT(3),SDIRX0    [J IF BACK   
745G          EXIT  7  1                   [FORWARDS
74K6    #   
754Q    #   
75JB    #   
7642    #   
76HL    # ================================================================= #   
773=    #   
77GW    #   
782G    #   
78G6    #   
78^Q    #              REFIND SUBROUTINE
79FB    #   
79^2    #              USED BY ALTLEN   
7=DL    #   
7=Y=    REFIND  
7?CW          MHUNTW   2,AMXOR,ASCREEN  
7?XG          EXIT  1  0
7#C6    #   
7#WQ    #   
7*BB    #   
7*W2    #   
7B*L    # ================================================================= #   
7BT=    #   
7C#W    #   
7CSG    #   
7D#6    #   
7DRQ    #   
7F?B    #              SABS SUBROUTINE  
7FR2    #   
7G=L    #              CONVERT RELATIVE ENDPOINT TO ABSOLUTE
7GQ=    #   
7H9W    #              LINK X7  
7HPG    #   
7J96    #              REQUIRES 
7JNQ    #              X3=PTR TO ASCREEN BLOCK  
7K8B    #              X2=PTR TO ENDPOINT   
7KN2    #   
7L7L    SABS
7LM=          LDX   0  0(2) 
7M6W          BNG   0  SABSX               [J IF E  
7MLG          LDX   0  1(2) 
7N66          BNG   0  SABSX               [J IF ALREADY ABSOLUTE   
7NKQ          LDX   6  1(2) 
7P5B          SMO      FX1  
7PK2          ANDX  6  SSBITS22         [GET RELATIVE NO
7Q4L          SLL   0  1
7QJ=          BPZ   0  SABSF               [J IF FORWARD
7R3W          NGX   6  6                   [SET BACKWARDS   
7RHG    SABSF   
7S36          ADX   6  ISOCURRENT(3)       [MAKE ABSOLUTE   
7SGQ          BPZ   6  SABSB               [J IF NOT OFF TOP
7T2B          LDCT  6  #200                [SET B   
7TG2    SABSB   
7T^L          STO   6  0(2) 
7WF=    SABSX   
7WYW          EXIT  7  0
7XDG    #   
7XY6    #   
7YCQ    #   
7YXB    #   
7^C2    # K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 #  
7^WL    #              SDATA
82B=    #   
82TW    #              COME HERE WITH BLOCKFULL OF TEXT 
83*G    #              TO BE WRITTEN AWAY TO NEW FILE   
83T6    #   
84#Q    #              USES 
84SB    #              AWORK1 RELATIVE PTR TO NEXT LINE WITHIN BLOCK
85#2    #              AWORK3 LENGTH OF TEXT LEFT   
85RL    #   
86?=    #   
86QW    #              CODE FROM 'SDATEL' TO END IS COMMON  
87=G    #              FOR WRITING TO NEWFILE FROM  
87Q6    #              FILE.FRB        AWORK4=0 
889Q    #              AMXOR.ASCREEN   AWORK4#0 
88PB    #   
8992    #   
89NL    SDATA   
8=8=          MHUNTW   1,FILE,FRB   
8=MW          TRACE   1,ISDATA          [<<<<<<<<<<>>>>>>>>>>   
8?7G          LDN   0  A1+2                [DATA PTR
8?M6          STO   0  AWORK1(2)
8#6Q          STOZ     AWORK4(2)
8#LB    #     CALCULATE TOTAL CHAR LENGTH   
8*62          LDCT  0  #600 
8*KL          ANDX  0  A1+1(1)  
8B5=          BNZ   0  SDATAB   
8BJW          ADN   0  1
8C4G    SDATAB  
8CJ6          ADX   0  A1(1)
8D3Q          SLC   0  2
8DHB          SBN   0  12                  [CH COUNT OF DATA
8F32          STO   0  AWORK3(2)        [CHS LEFT IN BLOCK  
8FGL    #     ANY MORE DATA LEFT
8G2=    SDATEL  
8GFW          LDX   2  FX2  
8G^G          LDX   0  AWORK3(2)
8HF6          BZE   0  SDATEND             [J IF ALL COPIED 
8HYQ    #     USE 80 CH LINES TO END
8JDB          LDN   4  80                  [SET 80  
8JY2          BXGE  0  4,SDATX             [J IF MORE THAN 80   
8KCL          LDX   4  0                   [ELSE SET REMAINDER (LAST LINE)  
8KX=    SDATX   
8LBW          SBS   4  AWORK3(2)        [DECREASE LENGTH LEFT   
8LCC ...
8LCY ...#     REMOVE ALL TRAILING SPACES
8LDF ...      LDX   1  AWORK4(2)
8LF2 ...      BNZ   1  SDLINA              [J IF USING ACREEN   
8LFH ...      MHUNTW   1,FILE,FRB   
8LG4 ...      BRN      SDLINB   
8LGK ...SDLINA  
8LH6 ...      MHUNTW   1,AMXOR,ASCREEN  
8LHM ...SDLINB  
8LJ8 ...      ADX   1  AWORK1(2)
8LJP ...      SLC   1  2
8LK= ...      SBN   1  1
8LKR ...      SRC   1  2                   [CH BEFORE FIRST 
8LL# ...      LDX   5  1
8LLT ...      LDX   3  1
8LMB ...SDLINY  
8LMX ...      BCHX  3  £
8LND ...      LDCH  0  0(3) 
8LN^ ...      SBN   0  #20  
8LPG ...      BZE   0  SDLINX              [J IF SPACE  
8LQ3 ...      STO   3  5                   [LAST KNOWN NON SPACE
8LQJ ...SDLINX  
8LR5 ...      BCT   4  SDLINY   
8LRL ...      SLC   1  2                   [PTR BEFORE LINE 
8LS7 ...      SLC   5  2                   [PTR TO LAST NON SPACE   
8LSN ...      SBX   5  1                   [NEW CHAR COUNT  
8LT9 ...      LDX   4  5
8LWG    #     CALCULATE LENGTH OF NEW RECORD
8MB6          LDX   1  4                   [CH COUNT
8MTQ          SRC   1  2
8N*B          LDCT  5  #600 
8NT2          ANDX  5  1
8P#L          BZE   5  SDATE
8PS=          ADN   1  1
8Q?W    SDATE   
8QRG          ADN   1  2                   [RECORD LENGTH   
8R?6          ANDN  1  #7777
8RQQ          STO   1  5                   [COPY
8S=B          STEP     0,0(1),SBREAKIN  
8SQ2          TESTREP  FILEFULL,SDFF,REFUSED,SDREF  
8WNG          BRN      SDIT 
8X86    #     FILE FULL 
8XMQ    SDFF
8Y7B          LDN   6  SYFYNF   
8YM2          BRN      SDREF1   
8^6L    #     BS LIMIT  
8^L=    SDREF   
925W          LDN   6  SYRYBSL  
92KG    SDREF1  
9356          ADX   6  FX1  
93JQ          SMO      6
944B          LDX   6  0
94J2          CALL  7  SCOMMENT            [OUT PUT MESS
953L          BRN      SEDITEND            [J TO TERMINATE  
95H=    #     CONSTRUCT RECORD  
962W    SDIT
96GG    #   
9726          LDX   1  AWORK4(2)
97FQ          BNZ   1  SDIT2              [J IF USING ASCREEN   
97^B          MHUNTW   1,FILE,FRB   
98F2          BRN      SDIT3
98YL    SDIT2   
99D=          MHUNTW   1,AMXOR,ASCREEN  
99XW    SDIT3   
9=CG    #     RED TAPE WD 0 
9=X6          STO   5  FRH(3)   
9?BQ    #     SPACEFILL LAST WORD   
9?LJ ...      BZE   4  SDIT4
9?WB          SMO      FX1  
9#B2          LDX   0  SSSPACES 
9#TL          LDX   7  5                   [RECORD LENGTH   
9**=          SBN   7  1
9*SW          SMO      7
9B#G          STO   0  0(3) 
9BS6    #     UPDATE PTR TO NEXT TEXT   
9C?Q    #     GET PTR TO THIS TEXT  
9CHJ ...SDIT4   
9CRB          LDX   7  AWORK1(2)        [REL PTR TO TEXT
9D?2          LDN   0  20   
9DQL          ADS   0  AWORK1(2)        [UPDATE 
9F==          LDX   2  1
9FPW          ADX   2  7                   [ABS PTR TO TEXT 
9G9G    #     RED TAPE WD 1 
9GP6          LDX   5  4                   [CH LENGTH   
9H8Q          SRC   5  2
9HNB          LDCT  6  #600 
9J82          ANDX  6  5
9J9Y ...      MHUNTW   1,AMXOR,ASCREEN  
9J?W ...      SMO      FX1  
9J*S ...      LDX   0  XISBITNG 
9JCQ ...      ANDX  0  ISBITS(1)            [IS NON GRAPHIC FLAG SET
9JFN ...      BZE   0  SDIT6                [JUMP IF NOT
9JHL ...      ADN   6  #7400                [SET ALPHA SHIFT
9JKJ ...SDIT6   
9JML          ADN   6  #41  
9K7=          STO   6  FRH+1(3) 
9KLW    #     COPY TEXT 
9KWN ...      BZE   4  SDIT5
9L6G          ADN   3  FRH+2
9LL6          SMO      4
9M5Q          MVCH  2  0
9M*J ...SDIT5   
9MKB ...      CALL  7  WRITETIDY
9N52          BRN      SDATEL              [DEAL WITH REMAINDER 
9NJL    #     ALL WRITTEN AWAY  
9P4=    SDATEND 
9PHW          MHUNTW   3,AMXOR,ASCREEN  
9Q3G    #     IF COPYING THEN J TO CONSTRUCT ANOTHER SCREENFULL 
9QH6          LDN   0  ISBITC   
9R2Q          ANDX  0  ISBITS(3)
9RGB          BNZ   0  NEXTSCREEN          [J IF COPYING
9S22    #     IF NOT COPYING AND NOT REPEATING OUTPUT PTR RDY   
9SFL          LDN   0  ISBITR   
9S^=          ANDX  0  ISBITS(3)
9TDW          BZE   0  POINTER             [J IF NOT REPEATING  
9TYG    #     IF REPEATING EXECUTE COMMAND AGAIN
9WD6          LDN   0  ISBITT   
9WXQ          ANDX  0  ISBITS(3)
9XCB          BNZ   0  TREPEAT             [J IF T  
9XX2          BRN      PREPEAT             [J IF P  
9YBL    #   
9YW=    #   
9^*W    #   
9^TG    #   
=2*6    #   
=2SQ    # K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 K2 #  
=3#B    #   
=3S2    #   
=4?L    #   
=4R=    #   
=5=W    #   
=5QG    #   
=6=6    #   
=6PQ    #   
=79B    #              DEAL WITH ACTION KEYS 6 AND 7
=7P2    #   
=88L    SCONTROL
=8N=          MHUNTW   3,AMXOR,ASCREEN  
=97W          MHUNTW   2,FILE,FRB   
=9MG          TRACE  3,ISCONTRL          [<<<<<<<<<<>>>>>>>>>>  
==76    #     GET NO OF AK  
==LQ          LDX  0  A1(2) 
=?6B          ANDN  0  #7777
=?L2          SBN   0  1
=#5L          ADN   2  A1+2 
=#K=          SRC   0  2
=*4W          ADX   2  0
=*JG          LDCH  0  0(2) 
=*S# ...      ANDN  0  #17                 [LOOSE ANY SHIFT 
=B46          BXE   0  SS6(1),SAK6  
=BHQ    #     MUST BE  AK 7 
=C3B    SAK7
=CH2          LDN   0  ISBITLOP 
=D2L          ANDX  0  ISBITS(3)           [LAST OP PTR RDY?
=DG=          BNZ   0  REPEAT             [J IF SO  
=D^W    #   
=FFG          LDCT  0  #002 
=F^6          ANDX  0  ISMFORM(3)          [THIS OP PTR RDY 
=GDQ          BNZ   0  SAK7Q               [J IF NOT
=GYB    #     STEP BACK - THIS OP PTR RDY   
=JWW          LDX   0  ISOPAGE(3)   
=KBG          BNG  0  REPEAT               [J IF NOT ALLOWED
=KGC ...      LDN  1  ISBITCE   
=KL# ...      ORS   1  ISBITS(3)
=KQ9 ...      ERS   1  ISBITS(3)           [CLEAR COMMAND EXPECTED  
=KW6          CALL  7  STEPBACKOLD  
=L*Q          MHUNTW   3,AMXOR,ASCREEN  
=LTB          LDX   0  ISNPAGE(3)   
=M*2          CALL  7  STEPBACKNEW  
=MSL          BRN      SMATCH   
=N#=    #     THIS OP TEXT RDY  
=NRW    SAK7Q   
=P?G          LDX   0  ISOPAGE(3)   
=PR6          BNG   0  REPEAT             [J IF NOT ALLOWED 
=Q=Q          LDX   0  ISOPREVPAGE(3)   
=QQB          BNG   0  REPEAT             [J IF NOT ALLOWED 
=R=2    #     STEP BACK TO PREVIOUS PAGE
=RPL          CALL  7  STEPBACKOLD  
=S9=          MHUNTW   3,AMXOR,ASCREEN  
=SNW          LDX   0  ISNPREVPAGE(3)   
=T8G          CALL  7  STEPBACKNEW  
=TN6          LDCT  0  #400 
=W7Q          STO   0  ISOPREVPAGE(3)      [SET NOT ALLOWED 
=WMB          STO  0  ISOPAGE(3)           [SAME
=X72          BRN      SMATCH          [CARRY ON
=XLL    #     ACTION KEY 6  
=Y6=    SAK6
=YKW          LDCT  0  #002 
=^5G          ANDX  0  ISMFORM(3)          [THIS OP PTR RDY 
=^K6          BZE   0  REPEAT             [J IF SO  
?24Q    #     NOW WRITE AWAY DATA IN BLOCK  
?2JB          MHUNTW   1,AMXOR,ASCREEN  
?2WR ...      LDCT  0  #200                [CHAR 1,FOR PRECEEDING PACE  
?398 ...      ORN   0  ISTEXT              [PTR TO DATA IN BLOCK
?3HL          LDX  2  FX2   
?43=          STO   0  AWORK1(2)
?4GW ...      STO   0  AWORK4(2)        [SET NON ZERO FOR C+6   
?52G    #     SET TOTAL CHAR LENGTH 
?5G6          LDX   0  ISTEXTCT(1)  
?5PY ...      SBN   0  1                   [FOR PRECEEDONG SPACE
?5^Q          STO   0  AWORK3(2)        [=CHARS LEFT IN BLOCK   
?6FB          BRN      SDATEL   
?6^2    #   
?7DL    #   
?7Y=    #   
?8CW    #   
?8XG    # K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 K3 #  
?9C6    #   
?9WQ    # K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 K4 #  
?=BB    #   
?=W2    #   
??*L    #   
??T=    #   
?##W    #              TTT     PPP  
?#SG    #               T      P P  
?*#6    #               T      PPP  
?*RQ    #               T      P
?B?B    #               T      P
?BR2    #   
?C=L    SCOMMANDP   
?CQ=    SCOMMANDT   
?D9W          MHUNTW   3,AMXOR,ASCREEN  
?DPG    #              REPEATS COME HERE
?F96    #              ENSURE X3 CORRECT BEFORE JUMP
?FNQ    TREPEAT 
?G8B    PREPEAT 
?GN2          TRACE  3,ISPPPTTT          [<<<<<<<<<<>>>>>>>>>>  
?H7L         LDN   6  ISBITA
?HM=          ANDX   6  ISBITS(3)   
?J6W          BNZ   6  REP1               [J IF STR 
?JLG          LDN   2  ISPARAMA(3)  
?K66          CALL  7  SABS               [ENSURE ENDPOINT1 IS ABSOLUTE 
?KKQ    REP1
?L5B          LDN   6  ISBITA              [WHAT IS ENDPOINT1   
?LK2          ANDX  6  ISBITS(3)
?M4L          LDN   2  ISPARAMA(3)  
?MJ=          CALL  7  SDIRECTION   
?N3W          BRN      SBACKWARDS   
?NHG          BRN      SFORWARDS
?P36    #   
?PGQ    #   
?Q2B    #   
?QG2    #   
?Q^L    # ================================================================= #   
?RF=    #   
?RYW    #   
?SDG    #   
?SY6    #   
?TCQ    #   
?TXB    #   
?WC2    #              MOVE BACKWARDS TO ENDPOINT1  
?WWL    SBACKWARDS  
?XB=          TRACE  3,ISBACK          [<<<<<<<<<<>>>>>>>>>>
?XTW          LDN   0  ISBITT   
?Y*G          ANDX  0  ISBITS(3)
?YT6          BNZ   0  SSBTNA              [ERROR IF T & BACKWARDS  
?^#Q          LDX   0  ISOCURRENT(3)
?^SB          BZE   0  SSYROTBOTF          [OFF BEGINNING   
#2#2    SBACK3  
#2RL          BACKSPACE   1                [BACK 1 LINE 
#3?=          STEPAGAIN   1                [AND LOOK AT IT  
#3QW          MHUNTW   2,AMXOR,ASCREEN  
#4=G          LDN   0  1
#4Q6          SBS   0  ISOCURRENT(2)       [AND COUNT IT
#59Q          STO  2  7 
#5PB          TESTBRKIN  SBREAKIN            [J IF BRK IN   
#692          LDX   2  7
#6NL    #   
#78=    #              IS THIS THE LINE?
#7MW          LDN   0  ISBITA   
#87G          ANDX  0  ISBITS(2)
#8M6          BNZ   0  SBACK              [J IF STR 
#96Q    #   
#9LB    #              LOOKING FOR NUMBER   
#=62          LDX   0  ISPARAMA(2)  
#=KL          SLL   0  1
#?5=          BNG   0  SBACK2              [J IF MUST RUN OF TOP
#?JW          LDX   0  ISPARAMA(2)  
##4G          BXE   0  ISOCURRENT(2),SMATCH     [J IF THIS IS IT
##J6          BRN      SBACK2              [LOOP UNTIL FOUND
#*3Q    #   
#*HB    #              LOOKING FOR STRING   
#B32    SBACK   
#BGL          LDX   0  2                   [SAVE ASCREEN PTR
#C2=          LDN   1  ISPARAMA+2(2)      [STRING PTR   
#CFW          LDX   2  3                   [PTR TO LINE 
#C^G          CALL  7  MATCH               [IS THERE A STRING MATCH?
#DF6          BRN      SMATCH          [... YES 
#DYQ          LDX   2  0                   [RESTORE ASCREEN PTR 
#FDB    #   
#FY2    #              THIS IS NOT THE LINE 
#GCL    SBACK2  
#GX=          LDX   2  ISOCURRENT(2)       [IF LINE ZERO
#HBW          BZE   2  SSYROTBOTF          [THEN ERROR  
#HWG          BRN      SBACK3              [ELSE TRY NEXT   
#JB6    #   
#JTQ    #   
#K*B    #   
#KT2    #   
#L#L    # ================================================================= #   
#LS=    #   
#M?W    #   
#MRG    #   
#N?6    #   
#NQQ    #   
#P=B    #              MOVE FORWARDS TO ENDPOINT1   
#PQ2    #              COPY OVER IF T   
#Q9L    #              THROW AWAY IF P  
#QP=    SFORWARDS   
#R8W          TRACE  3,ISFORW            [<<<<<<<<<<>>>>>>>>>>  
#RNG    SFOR7   
#S86          STEPAGAIN    1               [LOOK AT LINE
#SMQ    SFOR71  
#T7B          MHUNTW   2,AMXOR,ASCREEN  
#TM2    SFORA   
#W6L    #   
#WL=    #              IS THIS THE LINE?
#X5W          LDN   0  ISBITA   
#XKG          ANDX  0  ISBITS(2)
#Y56          BNZ   0  SFOR1              [J IF STR 
#YJQ    #   
#^4B    #              LOOKING FOR NUMBER   
#^J2          LDX   0  ISPARAMA(2)  
*23L          BNG   0  SFOR2               [J IF E  
*2H=          BXE   0  ISOCURRENT(2),SMATCH     [J IF THIS IS IT
*32W          BRN      SFOR2
*3GG    #   
*426    #              LOOKING FOR STRING   
*4FQ    SFOR1   
*4^B          BZE   3  SFOROFF             [J IF OFF END
*5F2          LDX   0  2                   [SAVE ASCREEN PTR
*5YL          LDN   1  ISPARAMA+2(2)      [STRING PTR   
*6D=          LDX   2  3                   [LINE PTR
*6XW          CALL  7  MATCH               [ARE THEY THE SAME?  
*7CG          BRN      SMATCH             [YES  
*7X6          LDX   2  0                   [PTR TO ASCREEN  
*8BQ         BRN      SFOR2X
*8WB    SFOR2   
*9B2    #   
*9TL    #              WHAT TO DO WITH THIS LINE?   
*=*=          BZE   3  SFOROFF             [J IF OFF END
*=SW    SFOR2X  
*?#G          LDN   0  ISBITT   
*?S6          ANDX  0  ISBITS(2)
*#?Q          BZE   0  SFOR3               [J IF P TO IGNORE
*#RB    #   
**?2    #              CURRENT COMMAND IS T 
**QL    #              SO WRITE THIS LINE AWAY  
*B==    SFORCOOR
*BPW          STEPAGAIN    1               [PTR TO LINE 
*C9G          TESTREP  COORED,SFORCOOR  
*CP6          STO   3  4                   [SAVE
*D8Q          LDX   2  FRH(3)             [REC LENGTH   
*DNB          STEP     0,0(2),SBREAKIN     [APPEND  
*F82          STO   3  5                   [SET READY FOR MOVE  
*FML          TESTREP  FILEFULL,SDFF,REFUSED,SDREF,COORED,SFORCOOR  
*G7=          SMO      4
*GLW          LDX   2  FRH                [LENGTH   
*H6G          MOVE  4  0(2)                [COPY OVER   
*HL6          CALL  7  WRITETIDY
*J5Q    #   
*JKB    #              COMMON T & P PATH AGAIN  
*K52    #              READ NEXT LINE - IF ANY  
*KJL    SFOR3   
*L4=          STEP     1                   [READ AGAIN  
*LHW          MHUNTW   2,AMXOR,ASCREEN  
*M3G          LDN   0  1
*MH6          ADS   0  ISOCURRENT(2)      [OLD FILE LINE NO + 1 
*N2Q          BZE   3  SFOROFF             [J IF EOF
*NGB          STO   2  7
*P22          TESTBRKIN  SBREAKIN            [J IF BRK IN   
*PFL          LDX   2  7
*P^=          BRN      SFORA
*QDW    #   
*QYG    #              RUN OFF END OF OLD FILE  
*RD6    SFOROFF 
*RXQ          MHUNTW   3,AMXOR,ASCREEN  
*SCB          LDN   0  ISBITE   
*SX2          ANDX   0  ISBITS(3)   
*TBL          BNZ   0  SEDITEND           [J TO WIND UP IF E
*TW=          LDN   0  ISBITA   
*W*W          ANDX  0  ISBITS(3)
*WTG          BNZ   0  SSYROTEOTF         [ERR IF STR   
*X*6          LDX   0  ISPARAMA(3)  
*XSQ          BPZ   0  SSYROTEOTF         [ERR IF NOT E 
*Y#B    #   
*YS2    #   
*^?L    SMATCH  
*^R=          MHUNTW   3,AMXOR,ASCREEN  
B2=W          LDN   6  ISBITB   
B2QG          ANDX  6  ISBITS(3)
B3=6          BNZ   6  SMATCHX            [ MJ IF STR   
B3PQ          LDN   2  ISPARAMB(3)  
B49B          CALL  7  SABS               [ENSURE ENDPOINT 2 IS ABSOLUTE
B4P2    SMATCHX 
B58L    #   
B5N=    #   
B67W    #   
B6MG    #   
B776    # ================================================================= #   
B7LQ    #   
B86B    #   
B8L2    #   
B95L    #   
B9K=    #   
B=4W    #              CONSTRUCT NEXT SCREENFULL
B=JG    #   
B?46    #   
B?HQ    #   
B#3B    NEXTSCREEN  
B#H2          MHUNTW   1,AMXOR,ASCREEN  
B*2L          TRACE  1,ISNEXTSC          [<<<<<<<<<<>>>>>>>>>>  
B*G=          LDN   0  ISBITC   
B*^W          ORS   0  ISBITS(1)             [SET COPYING   
BBFG          LDX   3  1
BB^6          CALL  7  SETLOP              [SET OR CLEAR LAST OUTPUT READY  
BCDQ          LDCT  0  #022                [LINE 2  
BCYB          ADN   0  79                  [COL 79  
BDD2          STO   0  ISMFORM(1)   
BDXL          LDX  2  FX2   
BFC=          STOZ     AWORK2(2)        [COUNT OF LINES=0   
BFWW          LDN   0  #20  
BGBG          LDN   3  ISTEXT(1)           [DUMP LINES HERE 
BGW6          DCH   0  0(3)                [AFTER 1 SPACE   
BH*Q          BCHX  3  £
BHTB          SBX   3  1                   [MAKE REL
BJ*2          STO   3  ISTEXTCT(1)         [SAVE PTR HERE   
BJSL          LDN   6  ISBITB   
BK#=          ANDX  6  ISBITS(1)
BKRW          BNZ   6  NEX9               [J IF ENDPOINT2 TEXT  
BL?G          LDX   0  ISPARAMB+1(1)
BLR6          BZE   0  NEXTX              [ J IF ,0 
BM=Q    NEX9
BMQB          LDX   3  1                   [ASCREEN PTR 
BN=2          LDN   2  ISPARAMB(3)         [PTR TO ENDPOINT2
BNPL          CALL  7  SDIRECTION   
BP9=          BRN      NEXTBAK          [CANT GO BACKWARDS  
BPNW    NEX1
BQ8G          MHUNTW   1,AMXOR,ASCREEN  
BQN6 ...      ALTLENGD 1,ASCREENLEN+401,REFIND  
BR7Q          STEPAGAIN    1
BRMB          BZE   3  NEXTEOF         [J IF OFF END
BS72    #   
BSLL    #   
BT6=    #              NOW MAIN LOOP
BTKW    NEXTLOOP
BW5G          MHUNTW   1,AMXOR,ASCREEN  
BWK6          LDN   0  ISBITB   
BX4Q          ANDX  0  ISBITS(1)
BXJB          BNZ   0  NEXT2              [J IF STR 
BY42          LDX   0  AWORK2(2)          [LINES THIS TIME  
BYHL          ADX   0  ISOCURRENT(1)       [+LINES LAST TIME
B^3=          BXE   0  ISPARAMB(1),NEXTX   [J IF MATCH  
B^GW          BRN      NEXT3               [J IF E OR NOT THIS LINE 
C22G    NEXT2   
C2G6          STO   1  AWORK3(2)        [ASCREEN PTR
C2^Q          STO   3  AWORK4(2)        [LINE PTR   
C3FB          LDN   1  ISPARAMB+2(1)      [PTR TO END PT 2  
C3^2          LDX   2  3                   [LINE PTR
C4DL          CALL  7  MATCH
C4Y=          BRN      NEXTXY              [J IF MATCH  
C5CW          LDX   2  FX2  
C5XG          LDX   1  AWORK3(2)        [ASCREEN PTR
C6C6          LDX   3  AWORK4(2)        [LINE PTR   
C6WQ    NEXT3   
C7BB    #     SCREEN FULL?  
C7MQ ...#   
C7^6 ...      LDX   7  AWORK2(2)
C8=G ...      SBN   7  20   
C8HW ...      BPZ   7  NEXTQ               [J IF FULL   
C8T=    #     NOT THIS LINE - SO MUST DISPLAY IT
C9#W    #     BUT ONLY 80 CHS PER LINE  
C9SG          LDCT  6  #600 
C=#6          ANDX  6  FRH+1(3) 
C=RQ          BNZ   6  NEXTEXT  
C??B          ADN   6  1
C?R2    NEXTEXT 
C#=L          ADX   6  FRH(3)   
C#Q=          SLC   6  2
C*9W          SBN   6  12   
C*PG          LDN   7  80   
CB96          BXL   6  7,NEXTA             [J IF LENGTH OK  
CB*3 ...      BXE   6  7,NEXTA  
CBDY ...      LDCT  0  1
CBJT ...      ADS   0  ISBITS(1)
CBNQ          LDN   6  80                  [RESET TO MAX
CC8B    NEXTA   
CCN2          SBX   7  6                   [REMAINDER   
CD7L    #     MOVE CONSTANT PART
CDM=          LDN   3  FRH+2(3)                [PTR TO TEXT 
CF6W          LDX   4  ISTEXTCT(1)         [PTR TO NEXT FREE LOCATION   
CFLG          ADX   4  1                   [MAKE ABSOLUTE   
CG66          BZE   6  NEXTA1   
CGKQ          SMO      6
CH5B          MVCH  3  0                   [COPY TO BLOCK   
CHK2    NEXTA1  
CJ4L    #     SPACE FILL TO 80 CHARS
CJJ=          LDX   3  4                [PTR TO NEXT FREE LOCN  
CK3W          BZE   7  NEXTA2              [J IF FULL   
CKHG          LDN   0  #20  
CL36    NEXTA3  
CLGQ          DCH   0  0(3) 
CM2B          BCHX  3  £
CMG2          BCT   7  NEXTA3   
CM^L    NEXTA2  
CNF=          SBX   3  1                   [MAKE REL
CNYW          STO   3  ISTEXTCT(1)  
CPDG    #     ROOM FOR MORE 
CPY6          LDX   2  FX2  
CQCQ          LDX   6  AWORK2(2)        [COUNT OF LINES 
CQXB          ADN   6  1
CRC2          STO   6  AWORK2(2)        [RESET  
CRWL          STEP     1                   [READ NEXT   
CSB=          BZE   3  NEXTEOF             [J IF OFF END
CSTW          BRN      NEXTLOOP 
CT*G    NEXTEOF 
CTT6    #     RUN OFF END OF FILE   
CW#Q    #     REMEMBER TO OUTPUT ASCREEN BLOCK AFTER MESSAGE
CWSB          MHUNTW   1,AMXOR,ASCREEN  
CX#2          LDN   0  ISBITB   
CXRL          ANDX  0  ISBITS(1)
CY?=          BNZ   0  NEXTEOFA           [J TO ERR IF STR  
CYQW          LDX   0  ISPARAMB(1)  
C^=G          BNG   0  NEXTX               [OK IF TE
C^*L ...
C^DQ ...      LDX   0  AWORK2(2)           [NO OF LINES FOR SCREEN  
C^HW ...      ADX   0  ISOCURRENT(1)       [+ START LINE NO 
C^M2 ...      BXE   0  ISPARAMB(1),NEXTX  [JIF RIGHT LINE   
C^Q6    NEXTEOFA
C^T= ...
C^YB ...      LDX   0  AWORK2(2)           [NO OF LINES FOR SCREEN  
D23G ...      SBN   0  20   
D26L ...      BZE   0  NEXTQ               [J IF 20 LINES TO DISPLAY
D29Q          SMO      FX1  
D2PB          LDX   6  SYROTEOTF          [OFF END  
D392          CALL  7  SCOMMENT 
D3NL          LDX   1  3                   [PTR TO ASCREEN  
D48=          LDCT  0  #010 
D4MW          ADS   0  ISMFORM(1)         [SET LINES+1  
D57G          BRN      NEXTX
D5M6    #   
D66Q    #     TIDY UP BEFORE OUTPUTING BLOCK
D6LB    NEXTXY  
D762          MHUNTW   1,AMXOR,ASCREEN  
D7KL    NEXTX   
D85=    #     CLEAR COPYING 
D8JW          LDN   0  ISBITC   
D94G          ORS   0  ISBITS(1)
D9J6          ERS   0  ISBITS(1)
D=3Q          BRN      NEXTZ
D=HB    NEXTQ   
D?32          MHUNTW   1,AMXOR,ASCREEN  
D?GL    NEXTZ   
D?K# ...      LDX   5  ISBITS(1)
D?N2 ...      SRL   5  15   
D?QN ...      BZE   5  NEXZ2
D?TB ...      HUNT2J   3,AMXOR,BBC,FX2,NEXZ1
D?Y4 ...      BRN       NEXZ2   
D#2Q ...
D#5D ...NEXZ1   
D#86 ...      SETNCORE 14,3,AMXOR,BBC   
D#=S ...      LDN   6  SCHOP(1) 
D#*G ...      LDN   7  A1+2(3)  
D#D8 ...      MOVE  6  12   
D#GW ...      STOZ     A1+1(3)  
D#KJ ...      LDN   0  48   
D#N= ...      STO   0  A1(3)
D#QY ...      LDN   2  A1+5(3)  
D#TL ...
D#Y# ...      XCBINDEX 4,2,5
D*32 ...      LDX   2  FX2  
D*5N ...      LDX   6  SCHOP+3(1)   
D*8B ...      STO   6  A1+5(3)  
D*?4 ...      MHUNTW   1,AMXOR,ASCREEN  
D**Q ...NEXZ2   
D*F6    #     UPDATE ALL FILE LINE NUMBERS  
D*YQ          LDX   0  ISOPAGE(1)   
DBDB          STO   0  ISOPREVPAGE(1)   
DBY2    #   
DCCL          LDX   0  ISNPAGE(1)   
DCX=          STO   0  ISNPREVPAGE(1)   
DDBW    #   
DDWG          LDX   0  ISOCURRENT(1)
DFB6          STO   0  ISOPAGE(1)   
DFTQ    #   
DG*B          LDX   0  ISNCURRENT(1)
DGT2          STO   0  ISNPAGE(1)   
DH#L    #   
DHS=          SMO      FX2  
DJ?W          LDX   0  AWORK2   
DJRG          ADS   0  ISOCURRENT(1)       [+LINES OUTPUT THIS TIME 
DJWL ...#     DONT OUTPUT IF B-IN   
DJ^Q ...      STO   1  7
DK4W ...      TESTBRKIN SBREAKIN
DK82 ...      LDX   1  7
DK?6    #     NOW CALCULATE LENGTH OF TEXT AND SHRINK BLOCK 
DKQQ          LDX   5  ISTEXTCT(1)  
DL=B          LDN   6  ISTEXT   
DLQ2          SLC   5  2
DM9L          SLC   6  2
DMP=          SBX   5  6                   [CHAR LENGTH 
DN8W          STO   5  ISTEXTCT(1)  
DN=K ...      LDX   4  5                  [CHAR LENGTH  
DN## ...      SBN   4  1
DNB3 ...      BNZ   4  NEXTNZ             [J IF NOT NULL
DNCQ ...      LDX   4  ISMERR(1)
DNFF ...      SRL   4  18   
DNH8 ...      SBN   4  3
DNJX ...      BNZ   4  POINTER             [J IF ERR MESS ON SCREEN 
DNLL ...NEXTNZ  
DNNG          ADN   5  4*ASCREENLEN+3   
DP86          SRL   5  2                   [WD LENGTH OF BLOCK  
DPMQ          ALTLENG  1,5,REFIND   
DQ7B          BRN      OUTPUT   
DQM2    #   
DR6L    #              CANT GO BACKWARDS - TERMINATE
DRL=    NEXTBAK 
DS5W          SMO      FX1  
DSKG          LDX   6  SIT  
DT56          CALL  7  SCOMMENT           [PART 1 OF MESS   
DTJQ          BRN      SSE2MBAFR          [ AND PART 2  
DYGG    #   
D^26    #   
D^FQ    #   
D^^B    #   
F2F2    # K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 K5 #  
F2YL    #   
F3D=    #              EEE  
F3XW    #              E
F4CG    #              EEE  
F4X6    #              E
F5BQ    #              EEE  
F5WB    #   
F6B2    #   
F6TL    #              TWO PARTS TO E COMMAND   
F7*=    #   
F7SW    #   
F8#G    #              PART 1 : COPY REST OF OLD FILE TO NEW FILE   
F8S6    #                       SET  TE,0   
F9?Q    SCOMMANDE   
F9RB          MHUNTW   3,AMXOR,ASCREEN  
F=?2          TRACE  3,ISEEEEEE          [<<<<<<<<<<>>>>>>>>>>  
F=QL          LDN   0  ISBITT+ISBITE
F?==          ORS   0  ISBITS(3)           [SET T+E 
F?PW          LDN   0  ISBITA+ISBITB
F#9G          ORS   0  ISBITS(3)
F#P6          ERS   0  ISBITS(3)           [BOTH ENDPOINTS ARE NUMBERS  
F*8Q          LDCT  0  #400 
F*NB          STO   0  ISPARAMA(3)         [SET E   
FB82          STO   0  ISPARAMA+1(3)       [..AND ASOLUTE   
FBML          STOZ     ISPARAMB(3)         [SET RELATIVE 0  
FC7=          STOZ     ISPARAMB+1(3)
FCLW          BRN      SCOMMANDT
FD6G    #   
FDL6    #   
FF5Q    #   
FFKB    #              PART 2 : ALL COPYING DONE-TIDY UP
FG52    SEDITEND
FGJL          TRACE  0,ISENDEND          [<<<<<<<<<<>>>>>>>>>>  
FH4= ...      CLOSE 
FHHW          LDX   6  SEOE(1)             [END OF EDIT 
FJ3G    #              E AND Q JOIN FORCES HERE 
FJH6    SEANDQ  
FK2Q          CALL  7  SCOMMENT            [OUT MESSAGE 
FKGB ...      CLOSE 
FL22          VFREEW   FILE,FRB 
FLFL          MHUNTW   3,AMXOR,ASCREEN  
FL^=          LDX   0  ISMXMS(3)
FMDW          STO   0  AMXMSK(2)
FMYG          VFREEW   AMXOR,ASCREEN
FND6          ASCEDIT  OFF  
FNXQ          ENDCOM
FPCB    #   
FPX2    #   
FQBL    #   
FQW=    # K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 K6 #  
FR*W    #   
FRTG    #   
FS*6    #              FFF  
FSSQ    #              F
FT#B    #              FFF  
FTS2    #              F
FW?L    #              F
FWR=    #   
FX=W    SCOMMANDF   
FXQG          MHUNTW   3,AMXOR,ASCREEN  
FY=6          TRACE  3,ISFFFFFF          [<<<<<<<<<<>>>>>>>>>>  
FYPQ          LDN   0  ISBITF   
F^9B          ORS   0  ISBITS(3)          [SET F
F^P2          LDN   0  ISBITLC  
G28L          ANDX  0  ISBITS(3)
G2N=          BZE   0  SSFMNBUITC          [J IF F NOT VALID
G37W          LDX   0  ISOPREVCOM(3)
G3MG          CALL  7  STEPBACKOLD  
G476          MHUNTW   3,AMXOR,ASCREEN  
G4LQ          LDX   0  ISNPREVCOM(3)
G56B          CALL  7  STEPBACKNEW  
G5L2          BRN      POINTER  
G65L    #   
G6K=    #   
G74W    #   
G7JG    #   
G846    # K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 K7 #  
G8HQ    #   
G93B    #   
G9H2    #   
G=2L    #   
G=G=    #               QQ  
G=^W    #              Q  Q 
G?FG    #              Q  Q 
G?^6    #              Q  Q 
G#DQ    #               QQQQ
G#YB    #   
G*D2    SCOMMANDQ   
G*XL          TRACE  0,ISQQQQQQ          [<<<<<<<<<<>>>>>>>>>>  
GBC= ...      CLOSEABANDON                 [FORGET NEW FILE 
GBWW          LDX   6  SEA(1)              [EDIT ABANDONED  
GCBG          BRN      SEANDQ   
GCW6    #   
GD*Q    #   
GDTB    # ================================================================= #   
GF*2    #   
GFSL    #   
GG#=    #   
GGRW    #   
GH?G    #   
GHR6    #              OUTPUT MESSAGE THEN POINTER READY
GJ=Q    SSYROTBOTF     [YOUVE RUN OFF THE BEGINNING OF THE FILE 
GJQB          LDN   3  SYROTBOTF
GK=2          BRN      SSOUTCOM 
GKPL    SSYRYBSL       [YOU'VE REACHED YOUR BACKING STORE LIMIT 
GL9=          LDN   3  SYRYBSL  
GLNW          BRN      SSOUTCOM 
GM8G    SSE2MBAFR      [ENDPOINT2 MUST BE A FORWARD REFERENCE   
GMN6          LDN   3  SE2MBAFR 
GN7Q          BRN      SSOUTCOM 
GNMB    SSROTKINA      [REPETITION OF THIS KIND IS NOT ALLOWED  
GP72          LDN   3  SROTKINA 
GPLL          BRN      SSOUTCOM 
GQ6=    SSBTNA        [BACKWARDS TRANSCRIPTION NOT ALLOWED  
GQKW          LDN   3  SBTNA
GR5G          BRN      SSOUTCOM 
GRK6    SSYROTEOTF     [YOU'VE RUN OFF THE END OF THE FILE  
GS4Q          LDN   3  SYROTEOTF
GSJB          BRN      SSOUTCOM 
GT42    SSFMNBUITC     [IF MAY NOT BE USED IN THIS CONTEXT  
GTHL          LDN   3  SFMNBUITC
GW3=          BRN      SSOUTCOM 
GWGW    SSYFYNF        [YOU'VE FILLED YOUR NEW FILE 
GX2G          LDN   3  SYFYNF   
GXG6          BRN      SSOUTCOM 
GX^Q    SSIT           [INSTRUCTION TERMINATED  
GYFB          LDN   3  SIT  
GY^2          BRN      SSOUTCOM 
G^DL    SSNTL          [NUMBER TOO LARGE
G^Y=          LDN   3  SNTL 
H2CW          BRN      SSOUTCOM 
H2XG    SSEA           [EDIT ABANDONED  
H3C6          LDN   3  SEA  
H3WQ          BRN      SSOUTCOM 
H4BB    SSEOE          [END OE EDIT 
H4W2          LDN   3  SEOE 
H5*L    SSOUTCOM
H5T=         ADX   3  FX1   
H6#W          LDX   6  0(3)                [PTR TO MESSAGE  
H6SG          CALL  7  SCOMMENT 
H7#6          BRN      POINTER  
H7RQ    #   
H8?B    #   
H8R2    #   
H9=L    #   
H9Q=    # ================================================================= #   
H=9W    #   
H=PG    #   
H?96    #   
H?NQ    #   
H#8B    #               SWITCH TO OTHER CHAPTERS
H#N2    POINTER 
H*7L          ACROSS  SCEDITOR,1
H*M=    OUTPUT  
HB6W          ACROSS  SCEDITOR,2
HBLG    REPEAT  
HC66          ACROSS  SCEDITOR,3
HCKQ    SBREAKIN
HD5B          ACROSS   SCEDITOR,4   
HDK2    #   
HF4L    #   
HFJ=    #   
HG3W    #   
HGHG    # ================================================================= #   
HH36    #   
HHGQ    #   
HJ2B    #   
HJG2    #   
HJ^L    #   
HKF=    #   
HKYW    #   
HLDG    #   
HLY6    #   
HMCQ    #END
^^^^ ...145126630014