OPERAPP864

(George Source)

Macros used: ALTLEN, AND, BXE, BXGE, DO, ELSE, ELSF, FI, IF, INSERT, MHUNTW, REPEAT, SEGENTRY, THEN, UP, WHILE

OPERAPP864.txt
22FL    #OPT           K0OPERAPP=0  
22^=    #LIS           K0OPERAPP > K0ALLGEO > K0GREATGEO
23DW    #SEG           OPERAPP             [COMM - STIG TOWNSEND
23YG    [   
24D6    [   
24XQ                8HOPERAPP   
25CB       SEGENTRY K1OPERAPP,OPERAPPK1    [APPEND A MESSAGE TO ACTIVE PAGE 
25X2       SEGENTRY K2OPERAPP,OPERAPPK2    [FILL ACTIVE PAGE WITH NEWLINES  
26BL    [   
26W=    [   
27*W    [ AWORK1, 2 USED
27TG    #PAGE   
28*6    [   
28SQ    [   
29#B    PREFIXC        4H-  -              [CONTINUATION PREFIX = HYPHEN SP SP  
29S2    [   
2=?L    XDELTA         #74                 [DELTA CHARACTER LIMIT   
2=R=    [   
2?=W    TABLE                              [USED FOR SPLITTING LONG MESSAGES
2?QG       BRN      XCOLNFOUND  
2#=6                   4H000:              [COLON   
2#PQ       BRN      XEDIT   
2*9B                   4H000(              [OPEN PARENTHESIS
2*P2       BRN      XCOMMA  
2B8L                   4H000,              [COMMA   
2BN=       BRN      XEDIT   
2C7W                   4H000               [SPACE   
2CMG    TEND
2D76    [   
2DLQ    [   
2F6B    TOOLONGMSG  
2FL2 ...               30HOVERLONG MESSAGE TRUNCATED
2K3B    [   
2KH2    [ DEFINITIONS   
2L2L    [   
2LG=    #DEF  WIDTH = 40                   [WIDTH OF OPER SCREEN (CHARS)
2L^W    [   
2MFG    [   
2M^6    [ PRESET DATA   
2NDQ    [   
2NYB    TYPECOUT       +CONBUFF+COUT @L 12 [CONBUFF/COUT BLOCKTYPE  
2PD2                                       [
2PXL    TYPEREMTW      +CONBUFF+IREMTW@L12 [CONBUFF/IREMTW BLOCKTYPE
2QC=                                       [
2QWW    TYPEAPP        +CONBUFF+CONAPP@L12 [CONBUFF/CONAPP BLOCKTYPE
2RBG                                       [
2RW6    TYPEFORCE      +CONBUFF+FORCE@L12  [CONBUFF/FORCE BLOCKTYPE 
2S*Q                                       [
2STB    SEARCHBACK     +10                 [MSG ONLY SPLIT IN LAST 10 CHARS 
2T*2                                       [
2TJS ...SMSK           #77770000
2TSL                                       [
2W#=    #PAGE   
2WRW    [   
2X?G    [   
2XR6    [*********************************************************************  
2Y=Q    [   
2YQB    SFILLPAGE   
2^=2    [   
2^PL    [*********************************************************************  
329=    [   
32NW    [ FILLS THE ACTIVE PAGE BLOCK WITH NEWLINES (I.E. BLANK 
338G    [ LINES), UPDATING ACLEN, ACLNS AND ACLFT   
33N6    [   
347Q    [ LINK X7   
34MB    [   
3572    [ ON EXIT,  X1,2 = FX'S 
35LL    [           X0,3 CORRUPT
366=    [   
36KW       MHUNTW   1,CONBUFF,ACTIVE
375G       LDX   3  ACLFT(1)
37K6       IF       3,NZ
384Q       THEN 
38JB          LDX   0  FCANCEL+2
3942          LDX   2  ACLEN(1) 
39HL          SRL   2  2
3=3=          ADN   2  FPTR(1)  
3=GW          ADX   2  ACOUT(1) 
3?2G          DO
3?G6             STO   0  0(2)  
3?^Q             ADN   2  1 
3#FB          REPEAT   CT 3 
3#^2          LDX   0  ACLFT(1) 
3*DL          ADS   0  ACLNS(1) 
3*Y=          SLL   0  2
3BCW          ADS   0  ACLEN(1) 
3BXG          STOZ     ACLFT(1) 
3CC6       FI   
3CWQ       LDX   1  FX1 
3DBB       LDX   2  FX2 
3DW2       EXIT  7  0   
3F*L    #PAGE   
3FT=    [   
3G#W    [   
3GSG    [                    WW   WW   W
3H#6    [                    WW  WW   WW
3HRQ    [                    WW WW   WWW
3J?B    [                    WWWW     WW
3JR2    [                    WWWW     WW
3K=L    [                    WW WW    WW
3KQ=    [                    WW  WW   WW
3L9W    [                    WW   WW  WW
3LPG    [   
3M96    [   
3MNQ    OPERAPPK1   
3N8B    [   
3NN2    [ APPENDS A MESSAGE FROM A MESSAGE BLOCK TO THE ACTIVE PAGE. WHOLE- 
3P7L    [ WORD OUTPUT LINES ARE USED, THE MESSAGE BEING FILLED WITH #74'S   
3PM=    [ AT THE END IF NEEDED  
3Q6W    [   
3QLG    [ ON ENTRY, MESSAGE IN 1ST CONBUFF-CONAPP ON CONSOLE CHAIN  
3R66    [   
3RKQ    [ ON EXIT,  X0 =  0 - APPENDED OK   
3S5B    [               -VE - DIDN'T BUT PAGE BLOCK IS NOT MAXIMUM SIZE 
3SK2    [               +VE - PAGE FULL AND CANNOT BE EXTENDED  
3T4L    [                     (OR TRIED TO APPEND TOO MANY LINES)   
3TJ=    [   
3W3W    [ THIS ROUTINE DOES NOT COORDINATE OR USE ANY MACROS (APART FROM
3WHG    [ MHUNTW) WHICH CHANGE ACCUMULATORS, AWORK OR ACOMMUNE WORDS.   
3X36    [ ACOMMUNE WORDS ARE THEREFORE USED TO STORE DATA   
3XGQ    [   
3Y2B    [ ACOMMUNE1 USED FOR TEMPORARY STORAGE  
3YG2    [ ACOMMUNE3 HOLDS THE POINTER TO THE MESSAGE BLOCK  
3Y^L    [ ACOMMUNE4 USED FOR TEMPORARY STORAGE  
3^F=    [ ACOMMUNE5 HOLDS THE NUMBER OF LINES ALLOWED FOR THIS MESSAGE  
3^YW    [ ACOMMUNE6 HOLDS THE NUMBER OF CHARS ALLOWED FOR THIS MESSAGE  
42DG    [ ACOMMUNE7 HOLDS THE NUMBER OF LINES ADDED FOR THIS MESSAGE
42Y6    [ ACOMMUNE8 HOLDS ORIGINAL ATYPE OF CONBUFF/CONAPP  
43CQ    [ ACOMMUNE9 USED TO RETURN RESULT (X0)  
43XB    [   
44C2    [ AWORK1 HOLDS LENGTH OF DATA ALLOWED ON A LINE 
44WL    [        ('WIDTH' FOR 1ST, 'WIDTH'-3 FOR REST - PREFIX) 
45B=    [ AWORK2 REMAINDER COUNT OF SOURCE MESSAGE  
45TW    [   
46*G                                  [EXTENDING /ACTIVE UNTIL MAX ...  
46T6                                  [... SIZE OR UNTIL NO MORE ...
47#Q                                  [... LINES LEFT IN PAGE, ...  
47SB                                  [... TRY TO APPEND MSG
48#2       LDN   3  BCONSOUT
48RL       WHILE    TRUE
49?=       DO                           [FIND /CONAPP BLOCK 
49QW          LDX   3  FPTR(3)  
4==G       REPEAT   UNTIL,+ATYPE(3),E,TYPEAPP(1)
4=Q6       STO   3  ACOMMUNE3(2)
4?9Q       IF       +ACOMMUNE8(2),E,TYPEFORCE(1)
4?PB       THEN 
4#92          CALL  7  SFILLPAGE
4#NL          LDN   0  0
4*8=          BRN      XITSAPP  
4*MW          [***************  
4B7G          [ 
4BM6       FI   
4C6Q       LDN   0  WIDTH   
4CLB       STO   0  AWORK1(2)   
4D62       MHUNTW   1,CONBUFF,ACTIVE
4DKL       LDX   0  ACLFT(1)
4F5=       STO   0  ACOMMUNE5(2)        [LINES ALLOWED FOR MESSAGE  
4FJW       STOZ     ACOMMUNE7(2)        [NO LINES ADDED YET 
4G4G       LDX   0  ACLEN(1)
4GJ6       SRL   0  2   
4H3Q       ADX   0  ACOUT(1)
4HHB       SBX   0  ALOGLEN(1)  
4J32       SBN   0  ACHCT   
4JGL       NGX   0  0                   [UNUSED WORDS IN ACTIVE BLOCK   
4K2=       SBX   0  ACLFT(1)            [RESERVE SPACE FOR NEWLINES AT END  
4KFW       SLL   0  2   
4K^G       STO   0  ACOMMUNE6(2)        [CHARS AVAILABLE IN PAGE BLOCK  
4LF6       LDX   1  FX1 
4LYQ       LDX   0  ACOMMUNE8(2)        [GET START AND LENGTH OF ...
4MDB       ANDX  0  HALFTOP             [TEXT FOR /COUT, /IREMTW OR /CINP   
4MY2       IF       0,E,TYPECOUT(1) 
4NCL       THEN 
4NX=          LDX   5  AREC(3)  
4PBW          SBN   5  1
4PWG          LDN   6  ATEXT
4QB6       ELSF     0,E,TYPEREMTW(1)
4QTQ       THEN 
4R*B          LDEX  5  AREC(3)  
4RT2          LDN   6  ICBUFF   
4S#L       ELSE                         [/CINP  
4SS=          LDX   5  A1(3)
4T?W          SBN   5  CPDATA-A1-1         [WORD COUNT INCL 4 INITIAL SPACES
4TRG    #DEF        20? = CPDATA-(A1+1) 
4W?6    #SKI        (20?<1$1) ^ (20?&#40000000) [TROUBLE IF CPDATA < (A1+1) 
4WQQ    !! CPDATA NOT GREATER THAN A1+1 - CAN'T INSERT LEADING SPACES   
4X=B          LDX   0  ACES 
4XQ2          STO   0  CPDATA-1(3)         [INSERT LEADING SPACES (INPUT MSG)   
4Y9L          LDN   6  CPDATA-1 
4YP=       FI   
4^8W    [   
4^NG    [ X1 = FX1  
5286    [ X2 = FX2  
52MQ    [ X5 = MESSAGE LENGTH IN WORDS (ASSUMES SPACE-FILLED AT END)
537B    [ X6 -> START OF TEXT (REL FPTR)
53M2    [ OTHERS FREE   
546L    [   
54L=    [ FIND LAST SIGNIFICANT CHARACTER IN MESSAGE
555W    [   
55KG       LDX   3  6   
5656       ADX   3  ACOMMUNE3(2)
56JQ       ADX   3  5                   [X3 -> BEYOND LAST WORD OF TEXT 
574B       IF       5,NZ                [IF MESSAGE NOT NULL THEN   
57J2       THEN 
583L          SLL   5  2                   [CONVERT WORDS TO CHARS  
58H=          WHILE    TRUE 
592W             SLC   3  2 
59GG             SBN   3  1 
5=26             SRC   3  2 
5=FQ             LDCH  0  0(3)  
5=^B             SBN   0  #20   
5?F2          AND      0,ZE                [WHILE SPACE IS LAST CHAR DO 
5?YL          DO
5#D=          REPEAT   CT 5                [REPEAT  
5#XW       FI                           [FI 
5*CG    [   
5*X6    [ X1 = FX1  
5BBQ    [ X2 = FX2  
5BWB    [ X5 = CHARACTERS IN MESSAGE (MAY BE ZERO)  
5CB2    [ X6 -> START OF TEXT (REL FPTR)
5CTL    [ OTHERS FREE   
5D*=    [   
5DSW    [ APPEND A MESSAGE TO ACTIVE PAGE   
5F#G    [   
5FS6       STO   5  AWORK2(2)           [REMAINDER COUNT OF MESSAGE 
5G?Q       MHUNTW   1,CONBUFF,ACTIVE
5GRB       LDX   0  ACLEN(1)
5H?2       SRL   0  2   
5HQL       ADX   1  ACOUT(1)
5J==       ADX   1  0                   [X1 -> END OF ACTIVE PAGE   
5JPW       LDX   3  6   
5K9G       ADX   3  ACOMMUNE3(2)        [X3 -> START OF TEXT
5KP6       LDN   4  0                   [X4 IS COUNT OF CHARS APPENDED THIS MSG 
5L8Q    [   
5LNB    [ ON ENTRY TO THE LOOP: 
5M82    [ X1 -> NEXT APPEND POSITION
5MML    [ X2 = FX2  
5N7=    [ X3 -> START OF THE LINE WE ARE ADDING 
5NLW    [ X4 = TOTAL CHARS ADDED TO ACTIVE PAGE THIS MESSAGE
5P6G    [ AWORK1 = LENGTH OF LINE ALLOWED   
5PL6    [ AWORK2 = REMAINDER COUNT OF MESSAGE (CHARS)   
5Q5Q    [   
5QKB       DO   
5R52          STO   1  ACOMMUNE1(2)        [SAVE APPEND POINTER 
5RJL          LDX   5  AWORK2(2)           [X5 = MESSAGE REMAINDER COUNT
5S4=          LDX   0  AWORK1(2)
5SHW          ADN   0  1
5T3G          IF       5,GE,0              [IF MSG LONGER THAN ONE LINE THEN
5TH6          THEN  
5W2Q             SMO      FX1                 [SPLIT MESSAGE
5WGB             LDN   1  TABLE               [X1 -> BRN'S IN TABLE 
5X22             LDN   6  TEND-TABLE/2        [X6 = NO OF ELTS IN TABLE 
5XFL             DO 
5X^=                LDX   2  3  
5YDW                SLC   2  2  
5YYG                SMO      FX2
5^D6                ADX   2  AWORK1              [NO OF CHARACTERS LEFT ON LINE 
5^XQ                SBN   2  1  
62CB                SRC   2  2                   [X2 -> LAST CHAR OF THIS 'WIDTH
62X2                SMO      FX1
63BL                LDX   0  SEARCHBACK          [FOR LAST FEW CHARS, STARTING A
63W=                DO                           [DO
64*W                   LDCH  7  0(2)                [LOAD NEXT CHAR 
64TG                   BXE   7  1(1),(1)            [J IF SUITABLE CHAR FOUND   
65*6    RECOVER           [FROM COLON ROUTINE IF SPACE FOLLOWS  
65SQ                   SLC   2  2                   [STEP BACK POINTER ONE CHAR 
66#B                   SBN   2  1   
66S2                   SRC   2  2   
67?L                REPEAT   CT 0                [REPEAT BACK ALONG LINE
67R=                ADN   1  2  
68=W             REPEAT   CT 6                [REPEAT OVER SPLITTER CHARS   
68QG             SMO      FX2                 [NO SUITABLE CHARACTER FOUND ...  
69=6             LDX   5  AWORK1              [SO SPLIT AFTER 'WIDTH'   
69PQ          FI
6=9B    XPT               [RETURN POINT FROM SPLITTER ROUTINES  
6=P2          LDX   2  FX2  
6?8L          LDX   1  ACOMMUNE1(2)        [POINT X1 AT CURRENT END OF ACTIVE   
6?N=       [
6#7W       [ X1 -> NEXT APPEND POSITION 
6#MG       [ X2 = FX2   
6*76       [ X3 -> START OF THIS LINE   
6*LQ       [ X4 = TRANSFER COUNT
6B6B       [ X5 = LENGTH OF LINE (CHARS)
6BL2       [
6C5L          LDX   7  AWORK2(2)           [MESSAGE REMAINDER COUNT 
6CK=          LDN   6  #76  
6D4W          IF       5,NZ 
6DJG          THEN  
6F46             DO                           [FOR CHARS IN LINE DO 
6FHQ                LDX   0  4  
6G3B                ADN   0  1  
6GH2                BXGE  0  ACOMMUNE6(2),XITERR  [J IF NO ROOM FOR TWO CHARS   
6H2L                [***************************
6HG=                [   
6H^W                LDCH  0  0(3)                [LOAD NEXT CHARACTER   
6JFG                STO   3  ACOMMUNE4(2)   
6J^6                LDX   3  FX1
6KDQ                IF       0,GE,XDELTA(3)      [IF DELTA CHAR THEN
6KYB                THEN
6LD2                   DCH   6  0(1)                [STORE #76 FOR NEXT CHAR
6LXL                   BCHX  1  £   
6MC=                   SBN   0  #10                 [CONVERT CHARACTER TO ALPHA 
6MWW                   ADN   4  1                   [UPDATE CURRENT CHAR COUNT  
6NBG                FI                           [FI DELTA  
6NW6                LDX   3  ACOMMUNE4(2)   
6P*Q                SBN   7  1                   [DECREMENT MSG REMAINDER COUNT 
6PTB                DCH   0  0(1)                [INSERT NEXT CHARACTER 
6Q*2                BCHX  1  £  
6QSL                BCHX  3  £                   [UPDATE POINTERS   
6R#=                ADN   4  1                   [AND CHARACTER COUNT   
6RRW             REPEAT   CT 5  
6S?G          FI
6SR6       [
6T=Q       [ END OF (PRINT) LINE REACHED
6TQB       [
6W=2       [ X1 -> NEXT APPEND POSITION 
6WPL       [ X2 = FX2   
6X9=       [ X3 -> NEXT INPUT CHARACTER 
6XNW       [ X4 = TOTAL TRANSFER COUNT  
6Y8G       [ X7 = MESSAGE REMAINDER COUNT   
6YN6       [
6^7Q          LDX   0  4
6^MB          ADN   0  9                   [J IF NO ROOM FOR 10 CHARS ...   
7272          BXGE  0  ACOMMUNE6(2),XITERR [(4 NEWLINE, 3 PREFIX, 3 FILL CHARS))
72LL          [***************************  
736=          [ 
73KW          LDX   0  ACOMMUNE5(2) 
745G          SBN   0  1
74K6          IF       0,NG                 [IF TOO MANY LINES THEN 
754Q          THEN  
75JB             MHUNTW   1,CONBUFF,ACTIVE  
7642             LDN   0  1                   [DRASTIC ERROR
76HL             BRN      XITSAPP   
773=             [***************   
77GW             [  
782G          FI                           [FI  
78G6          STO   0  ACOMMUNE5(2)        [REDUCE LINES LEFT   
78^Q          LDN   0  1
79FB          ADS   0  ACOMMUNE7(2) 
79^2 ...      LDN   0  #74                 [X0 = NULL CHAR  
7=DL          WHILE    TRUE 
7=Y=             LDN   5  0(1)  
7?CW          AND      5,U,1               [UNTIL X1 -> WORD BOUNDARY   
7?XG          DO
7#C6             DCH   0  0(1)  
7#WQ             ADN   4  1                   [PUT IN NULL  
7*BB          REPEAT   CHX 1               [REPEAT  
7*W2          LDN   0  FCANCEL+2           [ADDRESS OF NL BUFFER
7B*L          MVCH  0  4                   [MOVE IN NL  
7BT=          ADN   4  4                   [INCREMENT CURRENT COUNT 
7C#W          LDN   0  WIDTH-3             [AFTER NL, SUBSEQUENT LINES  
7CSG          STO   0  AWORK1(2)           [MUST HAVE A 3-CHAR PREFIX   
7D#6          IF       7,NZ                [IF MSG CONTINUES THEN   
7DRQ          THEN  
7F?B             SMO      FX1                 [INSERT CONTINUATION CHARS
7FR2             LDN   0  PREFIXC             [ADDRESS OF CONTINUATION PREFIX   
7G=L             MVCH  0  3                   [MOVE IN  CONT PREFIX 
7GQ=             ADN   4  3                   [INCREMENT CURRENT COUNT  
7H9W             WHILE    TRUE                [FOR FOLLOWING TEXT   
7HPG                STO   7  AWORK2(2)           [STORE CURRENT REMAINDER COUNT 
7J96                LDCH  0  0(3)   
7JNQ                SBN   0  #20
7K8B             AND      0,ZE                [WHILE SPACES 
7KN2                SBN   7  1  
7L7L             AND      7,NZ                [AND STILL HAVE TEXT LEFT DO  
7LM=             DO 
7M6W             REPEAT   CHX 3 
7MLG          FI                           [FI  
7N66    [   
7NKQ    [ X1 APPEND PTR 
7P5B    [ X2 FX2
7PK2    [ X3 -> NEXT MSG CHAR (UNLESS EOM)  
7Q4L    [ X4 TOTAL CHARS APPENDED   
7QJ=    [ X7 REMAINDER COUNT OF MESSAGE 
7R3W    [ AWORK1 LENGTH OF LINE ALLOWED 
7RHG    [ AWORK2 REMAINDER COUNT OF MSG (= X7)  
7S36    [   
7SGQ       REPEAT   UNTIL,7,ZE          [REPEAT OVER LINES IN MSG   
7T2B       MHUNTW   1,CONBUFF,ACTIVE
7TG2       LDX   0  ACOMMUNE5(2)
7T^L       STO   0  ACLFT(1)            [UPDATE LINES LEFT IN PAGE  
7WF=       ADS   4  ACLEN(1)            [UPDATE 'TO BE WRITTEN' CHAR COUNT  
7WYW       LDX   0  ACOMMUNE7(2)
7XDG       ADS   0  ACLNS(1)            [UPDATE 'TO BE WRITTEN' LINE COUNT  
7XY6       STO   1  ACHCT(1)            [MESSAGE APPENDED OK
7YCQ       LDN   0  0   
7YXB       BRN      XITSAPP             [SUCCESS
7^C2    XITERR                          [APPEND HAS FAILED  
7^WL       MHUNTW   1,CONBUFF,ACTIVE
82B=       LDX   0  ALOGLEN(1)  
82TW       SBN   0  ACTIVEMAX   
83*G       ADN   0  1                   [X0 = 1(PAGE FULL), -VE(EXTENSIBLE) 
83T6       BPZ   0  XITSAPP             [FAIL IF NOT WORTH EXTENDING PAGE   
84#Q       LDX   2  FX2 
84SB       LDX   3  ACOMMUNE8(2)        [PRESERVE ORIGINAL TYPE 
85#2       LDX   4  ALOGLEN(1)  
85RL       ADN   4  ACTIVEXT
86?=       ALTLEN   1,4,CONBUFF,ACTIVE  [EXTEND BLOCK   
86QW       STO   3  ACOMMUNE8(2)        [RESTORE ORIGINAL TYPE  
87=G       BRN      OPERAPPK1           [TRY AGAIN AFTER PAGE EXTENDED  
87Q6    XITSAPP 
889Q       LDX   2  FX2 
88PB       STO   0  ACOMMUNE9(2)
8992       SBN   0  1   
89NL       IF       0,ZE                [IF PAGE FULL   
8=8=       AND      +ACHCT(1),ZE        [AND NO MESSAGE FULLY APPENDED THEN 
8=MW       THEN 
8=WN ...[  MESSAGE TOO LONG TO FIT ON A FULL PAGE   
8?5G ...[  TRUNCATE MESSAGE & GO BACK TO K1OPERAPP TO TRY AGAIN 
8?## ...[  X3 -> NEXT CHAR OF MESSAGE   
8?H6 ...      LDX   5  3
8?PY ...      SBN   5  9                   [STEP BACK 9 WORDS IN MESSAGE BLOCK  
8?YQ ...      LDX   1  FX1  
8#7J ...      LDN   4  TOOLONGMSG(1)
8#BB ...      MVCH  4  30                  [MOVE TO MESSAGE BLOCK   
8#K8 ...      LDX   3  ACOMMUNE3(2)        [POINTER TO MESSAGE BLOCK
8#S2 ...      SBX   5  3                   [CHAR POINTER RELATIVE TO START OF BL
8*2S ...      LDX   0  ACOMMUNE8(2)        [ATYPE OF MESSAGE BLOCK  
8*9L ...      ANDX  0  HALFTOP  
8*DD ...      IF       0,E,TYPECOUT(1)     [CONBUFF/COUT BLOCK  
8*M= ...      THEN  
8*W4 ...         SBN   5  AREC             [GET NEW MESSAGE LENGTH  
8B4W ...         ANDX  5  BITS22LS  
8B?N ...         STO   5  AREC(3)   
8BGG ...      ELSF     0,E,TYPEREMTW(1)    [CONBUFF/IREMTW BLOCK
8BP# ...      THEN  
8BY6 ...         SBN   5  ICBUFF
8C6Y ...         ANDX  5  BITS22LS  
8C*Q ...         LDX   4  A1(3) 
8CJJ ...         ANDX  4  SMSK(1)   
8CRB ...         ADX   4  5 
8D28 ...         STO   4  A1(3) 
8D92 ...      ELSE  
8DCS ...         SBN   5  CPDATA           [CONBUFF/CINP BLOCK  
8DLL ...         ANDX  5  BITS22LS  
8DTD ...         STO   5  A1(3) 
8F4= ...      FI
8F?4 ...      BRN      OPERAPPK1
8FGL       FI                           [FI 
8G2=       LDX   0  ACOMMUNE8(2)
8GFW       SMO      ACOMMUNE3(2)
8G^G       STO   0  ATYPE               [RESTORE BLOCK TYPE/SUBTYPE 
8HF6       UP   
8HYQ    [   
8JDB    [   
8JY2    [ SPLITTER ROUTINES BRN'D TO FROM 'TABLE'   
8KCL    [   
8KX=    [   
8LBW    XCOLNFOUND                      [ENTER IF FIND COLON
8LWG       BCHX  2  £                   [X2-> CHAR FOLLOWING :  
8MB6       LDCH  7  0(2)                [LOAD CHAR FOLLOWING :  
8MTQ       SLC   2  2   
8N*B       SBN   2  1   
8NT2       SRC   2  2                   [X2-> : 
8P#L       SBN   7  #20                 [IF FOLLOWED BY SPACE ...   
8PS=       BZE   7  RECOVER             [GO BACK TO FIND SUITABLE CHAR  
8Q?W    [   
8QRG    XEDIT                           [SPACE, '(' OR COLON FOUND  
8R?6                                    [REMOVE ANY PRECEDING SPACES
8RQQ       LDX   5  2                   [X2 -> THE SPLIT CHAR   
8S=B       SLC   5  2   
8SQ2       SLC   3  2   
8T9L       SBX   5  3                   [X5 = NO OF CHARS BEFORE IT ... 
8TP=       SRC   3  2                   [ON THIS LINE   
8W8W       WHILE TRUE                   [FOR PRECEDING CHARACTERS   
8WNG          SLC   2  2
8X86          SBN   2  1
8XMQ          SRC   2  2
8Y7B          LDCH  7  0(2) 
8YM2          SBN   7  #20  
8^6L       AND      7,ZE                [WHILE THEY ARE SPACES DO   
8^L=       DO   
925W       REPEAT   CT 5                [REPEAT 
92KG       BRN      XPT                 [RETURN TO MAIN FLOW
9356    [   
93JQ    XCOMMA                          [X2-> COMMA 
944B       SLC   2  2   
94J2       SLC   3  2   
953L       SBX   2  3                   [X2 = CHARS IN LINE UP TO COMMA 
95H=       SRC   3  2                   [(X2 NO LONGER -> SPLIT CHAR)   
962W       LDX   5  2   
96GG       ADN   5  1                   [X5 = LINE LENGTH INCL COMMA
9726       BRN      XPT                 [RETURN TO MAIN FLOW
97FQ    #PAGE   
97^B    [   
98F2    [   
98YL    [   
99D=    [                    WW   WW   WWWWW
99XW    [                    WW  WW   WW   WW   
9=CG    [                    WW WW         WW   
9=X6    [                    WWWW          WW   
9?BQ    [                    WWWW        WW 
9?WB    [                    WW WW     WW   
9#B2    [                    WW  WW   WW
9#TL    [                    WW   WW  WWWWWWW   
9**=    [   
9*SW    [   
9B#G    OPERAPPK2   
9BS6    [   
9C?Q    [   
9CRB    [ FILLS THE ACTIVE PAGE WITH NEWLINES AND UPDATES THE BLOCK 
9D?2    [   
9DQL       CALL  7  SFILLPAGE   
9F==       UP   
9FPW    #END
^^^^ ...100515520004
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1