MACROS MSYS

(George Source)

MACROS MSYS.txt
22FL    #   
22^=    #   
23DW    #     HEREIN LIE MACROS USED BY THE MESSAGE SYSTEM. 
24D6    #   
24XQ ...[??? MESSAGES SECT CENT FGN 56 DOC  
2*P2    #   
2B8L    #     HERE FOLLOWS MESSAGES                                **** MESSAGES
2BN=    #     IT IS USED TO SET SEGNO AND TO SET UP THE SEGENTRIES. 
2C7W    #     %A=SEGMENT NUMBER 
2CMG    #   
2D76    #MAC  MESSAGES  
2DLQ    #STR  %B
2F6B    #SKI
2FL2    (   
2G5L    #DEF  21?=%A*512
2GK=    #DEF  20?=%A
2GNB ...#UNS  ADDMESS&#40000000 
2GRG ...      MESSAGES XX,A,B,C,D,E,F,G,H,I,J,A,B,C,D,E,F,G,H,I 
2GWL ...#UNS  ADDMESS&#40000000 
2G^Q ...#SKI
2H4W          MESSAGES X,A,B,C,D,E,F,G,H,I,J,A,B,C,D,E,F,G,H,I  
2HJG    #EXI
2J46    )   
2JHQ    #SKI  20?   
2K3B    (   
2KH2    #DEF  20?=20?-1 
2L2L    #STR  %B,J  
2LG=          MESSAGES %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T 
2L^W    #STR  %B,J  
2MFG    #SKI
2M^6          MESSAGES %CJ,%CA,%CB,%CC,%CD,%CE,%CF,%CG,%CH,%CI,J,%D,%E,%F,%G,%H-
2NDQ    ,%I,%J,%K   
2NYB    #EXI
2PD2    )   
2PXL    #INC  MESS%A
2QC=    #SEG  MESS%A
2QWW    #OPT  K0MESS%A=0
2RBG ...#STR X,%A   
2RW6    #LIS  K0MESS%A  
2S*Q                   8HMESS%A 
2STB          SEGENTRY K1MESS%A,XK1 
2T*2          SEGENTRY K2MESS%A,XK2 
2TSL          SEGENTRY K3MESS%A,XK3 
2W#=          SEGENTRY K4MESS%A,XK4 
2WRW          SEGENTRY K5MESS%A,XK5 
2X?G          SEGENTRY K11MESS%A,XK11   
2XR6          SEGENTRY K12MESS%A,XK12   
2Y=Q          SEGENTRY K90MESS%A
2YQB                   +TAB 
2^=2    #DEF  SEGNO=21? 
2^C8 ...#UNS  ADDMESS&#40000000*(SEGNO<1$1) 
2^JB ...#ALT  SEGNO=128 
2^PL    #DEF  20?=0 
329=    #DEF  22?=1 
32F4 ...#DEF  MESSSTART=0?  
32J^ ...#DEF  21?=0?
32NW    #NOR
32YN ...[??? MFTAB SECT CENT FGN 56 DOC 
338G    #   
33N6    #   
347Q    #     HERE FOLLOWS MFTAB                                   **** MFTAB   
34MB    #     IT IS USED IN AUXILMF TO SET UP BY RECURSIVELY
3572    #     CALLING ITSELF A TABLE OF HALF-WORD ENTRIES.  
35LL    #     %A=NUMBER OF ENTRIES LEFT TO SET UP   
35P9 ...#     %B=SEGMENT ADDRESS SCANNED TO SO FAR  
35RS ...#   
35WC ...#     OR IT IS USED WITH %A NULL TO SCAN THE SEGMENT BUFFER 
35^2 ...#     %B=START ADDRESS  
363K ...#     %C=COMPILER VARIABLE TO STORE RESULT IN   
366=    #   
36KW    #MAC  MFTAB 
36R4 ...#STR  %A
36Y= ...(   
375G    #SKI  %A<1$1
37K6    (   
384Q    #HAL  TAB,0 
38JB    #EXI
3942    )   
39HL    #SKI  %A-1<1$1  
3=3=    (   
3=GW ...#HAL  %B,TAB
3?2G          0 
3?G6    #EXI
3?^Q    )   
3#?* ...#DEF  21?=%B
3#JY ...      MFTAB    ,21?,22? 
3#WH ...#HAL  21?,22?   
3*86 ...#DEF  20?=%A-2  
3*FP ...      MFTAB    ,22?,21? 
3*R# ...      MFTAB    20?,21?  
3B4X ...#EXI
3BBG ...)   
3BN5 ...#DEF  23?=34?+%B+1]&#10000000   
3B^N ...#DEF  %C=34?+%B]&#777+11/4+%B   
3C?? ...#EXI  23?   
3CJW ...      MFTAB    ,%C,%C   
3CWQ    #NOR
3D6J ...[??? MESSMON SECT CENT FGN 56 DOC   
3DBB    #   
3DW2    #   
3F*L    #     HERE FOLLOWS MESSMON                                 **** MESSMON 
3FT=    #     IT IS USED TO INTRODUCE A MESSAGE PART AND
3G#W    #     DEFINE A UNIVERSAL TO REFER TO THE MESSAGE.   
3GSG    #     %A=NUMBER OF CHARS IN FOLLOWING MESSAGE PART  
3H#6    #     %B=CATEGORIES AS AN OCTAL NUMBER  
3HRQ    #     %C=UNIVERSAL IDENTIFIER OF THE MESSAGE
3J?B    #     %D=SEGMENT NUMBER CONTAINING THE MESSAGE  
3JR2    #     %E=MESSAGE NUMBER (IF PRESENT)
3K=L    #   
3KQ=    #MAC  MESSMON   
3KSL ...#SKI  21?-0?
3KX2 ...(   
3K^B ...!     WRONG LENGTH (PREVIOUS PART)  
3L3Q ...#DEF  0?=21?
3L66 ...)   
3L8G ...#DEF  21?=%A
3L=W ...#SKI  21?>1000-1000 
3L*= ...(   
3LCL ...!     WRONG LENGTH  
3LG2 ...#DEF  21?=0 
3LJB ...)   
3LLQ ...#HAL  %E+0,21?  
3LPG          %B
3M96    #STR  %C
3MNQ    #DEF  %C=SEGNO+20?  
3N8B    #SKI  22?   
3PM=    #DEF  20?=20?+1 
3QLG    #DEF  22?=%B&#10000000<1$1  
3QW# ...#DEF  21?=21?+3/4+0?
3R66    #SKI  0?>AMFLIMIT-AMFLIMIT  
3RKQ    !   SEGMENT   ! 
3S5B    #NOR
3S*8 ...[??? MESSMONA SECT CENT FGN 56 DOC  
3SK2    #   
3T4L    #   
3TJ=    #     HERE FOLLOWS MESSMONA                                **** MESSMONA
3W3W    #     IT HAS THE SAME FUNCTION AS MESSMON   
3WHG    #     %A=CHAR COUNT OF MESSAGE PART 
3X36    #     %B=UNIVERSAL IDENTIFIER   
3XGQ    #     %C=MESSAGE NUMBER (IF PRESENT)
3Y2B    #     %D ETC. =CATEGORY NAMES   
3YG2    #   
3Y^L    #MAC  MESSMONA  
3^42 ...#SKI  21?-0?
3^6B ...(   
3^8Q ...!     WRONG LENGTH (PREVIOUS PART)  
3^?6 ...#DEF  0?=21?
3^*G ...)   
3^CW ...#DEF  21?=%A
3^G= ...#SKI  21?>1000-1000 
3^JL ...(   
3^M2 ...!     WRONG LENGTH  
3^PB ...#DEF  21?=0 
3^RQ ...)   
3^W6 ...#HAL  %C+0,21?  
3^YW    #STR  %B
42DG    #DEF  %B=SEGNO+20?  
42Y6          CATMASK  %D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V-
43CQ    ,%W,%X  
43XB    #SKI 22?
45B=    #DEF  20?=20?+1 
46*G    #DEF  22?=34?+0?-1]&#10000000<1$1   
46K# ...#DEF  21?=21?+3/4+0?
46T6    #SKI  0?>AMFLIMIT-AMFLIMIT  
47#Q    !   SEGMENT   ! 
47SB    #NOR
48#2 ...[??? AUXILMF SECT CENT FGN 56 DOC   
4J32    #   
4JGL    #   
4K2=    #     HERE FOLLOWS AUXILMF                                 **** AUXILMF 
4KFW    #     IT IS USED TO GENERATE THE EXECUTABLE 
4K^G    #     CODE AT THE END OF EACH MESSAGE SEGMENT.  
4LF6    #     IT HAS NO PARAMETERS  
4LYQ    #   
4MDB    #MAC  AUXILMF   
4MFF ...#SKI  SEGNO/512 
4MGJ ...(   
4MHM ...#SKI  21?-0?
4MJQ ...(   
4MKT ...!     WRONG LENGTH (PREVIOUS PART)  
4MLY ...#DEF  0?=21?
4MN3 ...)   
4MP6 ...#SKI  22?<1$1   
4MQ9 ...(   
4MR# ...      MESSMONA 22,,,CT  
4MSC ...      22HLAST PART NOT SUPPLIED 
4MTG ...)   
4MWK ...)   
4MY2    #OPT  TAB=0?
4N3X ...      MFTAB    20?,MESSSTART
4N7S ...#SKI  SEGNO<1$1 
4N?P ...(   
4N*2 ...#UNS  AKMESSXX  
4NB? ...(   
4NCL ...MESSYK  
4NHH ...#HAL  +KMESSXX,+0   
4NMD ...X128           +128 
4NPB ...)   
4NR* ...)   
4NX=    XK5   LDX   0  JOBNO(2) 
4PBW          STO   0  ACOMMUNE2(2) 
4PWG    XK3   STOZ     GDESTINY(2)  
4QB6          NGN   6  1
4QTQ    XK1   LDEX  3  HMON1(2)            [MESSAGE NUMBER WITHIN SEGMENT   
4QX^ ...MF1 
4R28 ...#SKI  SEGNO<1$1 
4R4C ...(   
4R56 ...#UNS  AKMESSXX  
4R5T ...(   
4R6L ...      BXL   3  X128(1),MESSX
4R8T ...      LDX   0  ALINK1(2)
4R?4 ...      ANDN  0  #7777
4R*? ...      ORX   0  MESSYK(1)
4RCG ...      ACROSSVAR 0   
4RFP ...MESSX   
4RGS ...)   
4RHY ...)   
4RL7 ...#SKI  SEGNO&#200
4RNB ...      SBN   3  128  
4RQK ...      SRC   23 1
4RT2          SMO      FX1  
4S#L          LDX   4  TAB(3)   
4SS=          BNG   2  MF3  
4T?W          SRL   4  12   
4TRG    MF3   ANDN  4  #7777               [ADDRESS OF MESSAGE IN SEGMENT   
4W?6          ADX   1  4                   [X1->MESSAGE 
4WQQ          LDX   3  1
4X=B          LDCT  0  #100                [CONT'D BIT  
4XQ2    MF2   ANDX  0  1(3) 
4Y9L          LDEX  5  0(3)                [CHAR LENGTH OF THIS PART
4YP=          ADN   5  11   
4^8W          SRL   5  2                   [WORDS IN THIS MESSAGE PART +RED TAPE
4^NG          ADX   3  5
5286          BNZ   0  MF2                 [J IF CONT'D 
52MQ          SBX   3  1                   [X3=LENGTH OF WHOLE MESSAGE+RED TAPE 
537B          SBN   3  512  
53M2          BPZ   3  (GEOERR) 
546L          ADN   3  512  
54L=          SETUPCOR 3,2,GMON,ATEMP   
555W          ADN   2  A1   
55KG          LDX   5  2
5656          ADX   1  4
56JQ          MOVE  1  0(3)                [MOVE MESSAGE
574B          PHOTO    7
57J2          BZE   6  OUTMESS             [J IF 'OUTMESS'  
583L          ACROSS   MONFILE,3
58H=    OUTMESS 
592W          ACROSS   SETMON,7 
59GG    XK4   LDN   6  0
5=26          BRN      XK1  
5=FQ    XK2   LDX   3  4
5=^B          LDN   6  0
5?F2          BRN      MF1  
5?YL    XK12  LDX   0  JOBNO(2) 
5#D=          STO   0  ACOMMUNE2(2) 
5#XW    XK11  LDN   6  1                   [INFORM  
5*CG          BRN      XK1  
5*X6    #NOR
5B6Y ...[??? ALTMESS SECT CENT FGN 56 DOC   
5BBQ    #   
5BWB    #   
5CB2    #   
5CTL    #     HERE FOLLOWS ALTMESS                                 **** ALTMESS 
5D*=    #     IT IS USED TO ALTER (BY MEND) AN EXISTING MESSAGE.
5DSW    #     AN ALTMESS IS GIVEN FOR EACH PART (OPTIONALLY 
5F#G    #     FOLLOWED ON THE NEXT LINE BY THE NEW TEXT OF THE  
5FS6    #     PART). THE SERIES OF ALTMESS'S IS TERMINATED BY   
5G?Q    #     ALTEND.   
5GRB    #     THE UNIVERSAL ALTMESS IS SET TO INDICATE THE  
5H?2    #     FOLLOWING :-  
5HQL    #   
5J==    #     0 => ALTMESS NOT YET USED (OUTSIDE).  
5JPW    #     -1 => INSIDE AN ALTMESS SERIES BUT NO PARTS YET   
5K9G    #           ALTERED.
5KP6    #     -1 => ERROR ENCOUNTERED   
5L8Q    #     +VE => INSIDE AN ALTMESS SERIES AND VALUE= ADDRESS
5LNB    #            OF LAST PART SUCCESSFULLY ALTERED. 
5M82    #   
5MML    #     PARAMETERS FOR THE FIRST ALTMESS ARE :-   
5N7=    #   
5NLW    #     %A=MESSAGE IDENTIFIER 
5P6G    #     %B=MESSAGE NO. (OPTIONAL) 
5PL6    #     %C=CHAR. COUNT OF NEW TEXT (OPTIONAL) 
5Q5Q    #     %D ONWARDS=CATEGORIES FOR NEW PART.   
5QKB    #   
5R52    #     PARAMETERS FOR SUBSEQUENT ALTMESS'S (%A,%B ETC)   
5RJL    #     ARE AS %C,%D ETC. IN THE FIRST PART.  
5S4=    #   
5SHW    #     THE COMPILER VARIABLES ARE USED AS FOLLOWS:-  
5T3G    #   
5TH6    #     20? - WORK VARIABLE   
5W2Q    #     21? - THE EXPECTED 0? ON ENTRY TO A SUBSEQUENT
5WGB    #           ALTMESS 
5X22    #     22? - WORK VARIABLE   
5XFL    #     23? - 0=>NO TEXT YET ALTERED. 1=>TEXT ALTERED 
5X^=    #     24? - HOLDS THE 'MANDATORY' CATEGORY BITS 
5YDW    #     25? - MESSAGE NO. 
5YYG    #     26? - ROOM LEFT IN MESSAGE SPACE  
5^D6    #   
5^XQ    #MAC  ALTMESS   
62CB    #OPT  ALTMESS=0                    [OUTSIDE 
62X2    #EXI  ALTMESS+2                    [NULL EXPANSION IF ERROR PREVIOUSLY  
63BL    #SKI  ALTMESS<1$1                  [SKIP IF SUBSEQUENT ALTMESS  
63W=    (   
64*W ...      MONMEND  %A                  [MEND APPROPRIATE SEGMENT
65*6    (   
65SQ ...      MFLOCAL  %A&#777-26?,21?         [GET RELATIVE ADDRESS OF MESSAGE 
66#B ...      MFLOCAL  %A&#777+1-26?,22?         [DITTO FOR NEXT MESSAGE IN SEGM
66S2    #DEF  26?=22?-21?                  [ROOM FOR NEW SKELETON   
67?L    #DEF  0?=21?
67R=    #DEF  25?=34?+0?]/4096             [EXISTING MESSAGE NO.
68=W    #STR  %B
68QG    #DEF  25?=%B                       [NEW MESSAGE NO. 
69=6    #DEF  24?=0 
69PQ    #DEF  23?=0 
6=9B    #ALT  ALTMESS=-1
6=P2          ALTMESS  %C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U-
6?8L    ,%V,%W,%X,%Y,%Z 
6?N=    #EXI
6#7W    )   
6#MG    #ALT  ALTMESS=-2
6*76    #EXI
6*LQ    )   
6B6B    #SKI  21?-0?
6BL2          MFERROR  1                   [TEXT GIVEN NOT RIGHT LENGTH 
6C5L    (   
6CK=    #STR  %A                           [SKIP IF NO NEW TEXT 
6D4W    (   
6DJG    #DEF  26?=26?-(%A+11/4)            [ROOM LEFT AFTER THIS PART   
6F46    #SKI  26?&#40000000 
6FHQ          MFERROR  2                   [MESSAGE TOO BIG 
6G3B    (   
6G?8 ...#DEF  MHLS=34?+0?]&#4000
6GH2    #HAL  25?,%A                       [MESSNO/CHAR COUNT   
6H2L          MFCATS   %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
6HG=    ,%U,%V,%W,%X,%Y,%Z  
6H^W    (   
6JFG    #DEF  23?=1 
6J^6    #DEF  21?=%A+3/4+0? 
6KDQ    #ALT  ALTMESS=0?-2  
6KYB    )   
6L88 ...#FRE  MHLS  
6LD2    )   
6LXL    #EXI
6MC=    )   
6MWW    #SKI  23?   
6NBG          MFERROR  3                   [ERROR IF NO TEXT AFTER REDEFINED... 
6NW6    (                                  [...TEXT IN A PREVIOUS PART. 
6P8H ...#DEF  MHLS=34?+0?]&#4000
6PGY ...#DEF  21?=34?+0?]&#777            [EXISTING CHAR COUNT  
6PTB    #HAL  25?,21?                      [MESSNO/CHAR COUNT   
6Q*2    #DEF  22?=34?+0?]&#04000000        [ISOLATE PACKED BIT  
6QSL ...      MFCATS   %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
6R#=    ,%U,%V,%W,%X,%Y,%Z  
6RRW    (   
6S?G    #SKI  24?&#04000000-22? 
6SR6          MFERROR  4                   [ATTEMPT TO CHANGE PACKED BIT... 
6T=Q    (                                  [...WITH NO NEW TEXT.
6TQB    #ALT  ALTMESS=0?-2  
6W=2    #DEF  0?=21?+3/4+0?                [UPDATE 0? FOR NEXT PART.
6WPL    #DEF  21?=0?
6X9=    )   
6XNW    )   
6XYN ...#FRE  MHLS  
6Y8G    )   
6YN6    #EXI
6^7Q    #NOR
6^CJ ...[??? ALTEND SECT CENT FGN 56 DOC
6^MB    #   
7272    #   
72LL    #     HERE FOLLOWS ALTEND                                  **** ALTEND  
736=    #     IT IS USED TO TERMINATE A SERIES OF ALTMESS'S.
73KW    #     IT HAS NO PARAMETERS. 
745G    #   
74K6    #MAC  ALTEND
754Q    #SKI  ALTMESS+2                    [SKIP IF PREVIOUS ERROR  
75JB    (   
7642    #SKI  21?-0?
76HL          MFERROR  1                   [WRONG LENGTH TEXT IN PREVIOUS MACRO 
773=    (   
77GW    #DEF  0?=ALTMESS+1  
782G    #DEF  20?=34?+0?]&#67777777 
78G6          +20?                         [CLEAR CONT BIT IN LAST PART.
78^Q    #END  %A
79FB    )   
79^2    )   
7=DL    #ALT  ALTMESS=0 
7=Y=    #NOR
7?84 ...[??? MFLOCAL SECT CENT FGN 56 DOC   
7?CW    #   
7?XG    #   
7#C6    #     HERE FOLLOWS MFLOCAL                                 **** MFLOCAL 
7#WQ    #     GIVEN A TABENTRY NUMBER IT FINDS THE VALUE OF 
7*BB    #     THE LOCAL HELD IN THAT TABENTRY   
7*W2    #     PARAMETERS:-  
7B*L    #   
7BT=    #     %A=TABENTRY NUMBER
7C#W    #     %B=A COMPILER VARIABLE WHICH WILL BE SET TO   
7CSG    #        THE VALUE OF THE LOCAL 
7D#6    #   
7DRQ    #MAC  MFLOCAL   
7F?B    #DEF  20?=34?+K90MESSA] 
7FR2    #DEF  20?=%A/2+20?+34?] 
7G=L    #SKI  %A&1<1$1  
7GQ=    #DEF  20?=20?/4096  
7H9W    #DEF  %B=20?&#7777  
7HPG    #NOR
7H^# ...[??? MFCATS SECT CENT FGN 56 DOC
7J96    #   
7JNQ    #   
7K8B    #     HERE FOLLOWS MFCATS                                  **** MFCATS  
7KN2    #     IT IS USED TO SET AND CHECK THE CATEGORY  
7L7L    #     WORD OF A MESSAGE PART.   
7LM=    #     PARAMETERS ARE CATEGORY NAMES 
7M6W    #   
7MLG    #MAC  MFCATS
7N66    #SKI  24?<1$1                      [SKIP IF NOT FIRST TIME THROUGH  
7NKQ    (   
7P5B    #DEF  24?=34?+0?]&#61100000^#10000000   
7PK2    #DEF  20?=33?                      [CURRENT ERROR COUNT 
7Q4L    #STR  %A
7QJ=          CATMASK  %A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S-
7R3W    ,%T,%U,%V,%W,%X,%Y,%Z   
7RHG    #SKI  33?-20?                      [SKIP UNLESS ERROR IN CATMASK
7S36          MFERROR  5
7SGQ    (   
7TG2    #DEF  0?=0?-1   
7TKX ...#STR  %A
7TPS ...#SKI
7TTP ...      34?+0?]^MHLS  
7T^L    #DEF  20?=34?+0?]   
7WF=    #DEF  24?=20?&#04000000^24?        [ADD PA IF NECESSARY 
7WYW    #DEF  20?=24?&#00100000^#77677777&20?  [SUPPRESS SYSREQ IF CLEAR IN OLD 
7XDG    #DEF  20?=20?&#02777777 
7XY6          +24?&#77677777^20?           [RESET CATS APPLYING CONSTRAINTS 
7YCQ    #EXI
7YXB    )   
7^C2    )   
7^WL    #SKI  ALTMESS+2                    [SKIP IF ERROR DETECTED  
82B=    (   
82TW    #DEF  20?=33?                      [CURRENT ERROR COUNT 
83*G    #SKI 23?<1$1
83T6    #STR  %A
84#Q          CATMASK  %A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S-
84SB    ,%T,%U,%V,%W,%X,%Y,%Z   
85#2    #SKI  33?-20?                      [SKIP UNLESS ERROR IN CATMASK
85RL          MFERROR  5
86?=    (   
87Q6    #DEF 0?=0?-1
87T= ...#SKI  23?<1$1   
87YB ...#STR  %A
883G ...#SKI
886L ...      34?+0?]^MHLS  
889Q    #DEF  20?=34?+0?]   
88PB    #SKI  20?&#00100000 
8992          MFERROR  6                   [SYSREQ NOT ALLOWED IN MULTI-PART
89NL    (   
8=8=          +20?&#02777777^24?           [ADD MANDATORY BITS  
8=MW    #EXI
8?7G    )   
8?M6    )   
8#6Q    )   
8#LB    #SKI                               [SKIP FOLLOWING CODE IF ERROR FOUND  
8*62    #NOR
8**S ...[??? MFERROR SECT CENT FGN 56 DOC   
8*KL    #   
8B5=    #   
8BJW    #     HERE FOLLOWS MFERROR                                 **** MFERROR 
8C4G    #     IT IS USED BY ALTMESS ETC. WHEN AN ERROR IS   
8CJ6    #     DETECTED. IT CLEANS UP,SETS THE ERROR IDENTIFIER, 
8D3Q    #     AND OUTPUTS A MEANINGFUL MESSAGE. IT THEN SKIPS   
8DHB    #     THE REMAINING EXPENSION OF THE CALLING MACRO. 
8F32    #     IT HAS ONE PARAMETER - THE ERROR NUMBER.  
8FGL    #   
8G2=    #MAC  MFERROR   
8GFW    #SKI  %A-1<1$1  
8G^G    ! WRONG LENGTH TEXT !   
8HF6    #SKI  %A-2<1$1  
8HYQ    ! MESSAGE TOO LONG !
8JDB    #SKI  %A-3<1$1  
8JLL    (   
8JSW    ! TEXT OMITTED AFTER PRESENT IN !   
8K36    ! PREVIOUS PART !   
8K9B    )   
8KCL    #SKI  %A-4<1$1  
8KKW    (   
8KS6    ! ATTEMPT TO CHANGED PACKED BIT !   
8L2B    ! WITH NO NEW TEXT !
8L8L    )   
8LBW    #SKI  %A-5<1$1  
8LWG    ! UNKNOWN CATEGORIES REQUESTED !
8MB6    #SKI  %A-6<1$1  
8MKY    (   
8MTQ    ! SYSREQ NOT ALLOWED IN MULTI-PART !
8N5J    ! MESSAGE ! 
8N9F    )   
8N*B    #SKI  ALTMESS&#40000000<1$1        [SKIP IF NO PARTS YET COMPILED   
8NT2    (   
8P#L    #DEF  0?=ALTMESS+1  
8PS=    #DEF  20?=34?+0?]&#67777777        [LOSE CONT. BIT  
8Q?W          +20?  
8QRG    )   
8R?6    #END
8RQQ    #ALT  ALTMESS=-2                   [SET ERROR FLAG  
8S=B    #SKI
8SQ2    #NOR
8S^S ...[??? ADDMESS SECT CENT FGN 56 DOC   
8T9L    #   
8TP=    #     HERE FOLLOWS ADDMESS                                 **** ADDMESS 
8W8W    #     IT IS USED TO INTRODUCE (BY MEND) A SERIES OF 
8WNG    #     MESSMON(A)'S FOR ADDITIONAL MESSAGES. 
8X86    #     IT HAS NO PARAMETERS  
8XMQ    #   
8Y7B    #MAC  ADDMESS   
8YM2    #OPT  ADDMESS=0 
8^6L ...#SKI  ADDMESS&#37777777<1$1 
8^L=    (   
925W          MESSAGES 0
92KG    #EXI
9356    )   
939X ...#STR  %A
93BN ...#SKI
93HF ...(   
93N= ...#SKI  ADDMESS&#40000000 
93T3 ...(   
93^S ...      ADDMESS  X
946K ...#EXI
94?B ...)   
94D7 ...)   
94JY ...#ALT LMESSX%A=ADDMESS&#37777777 
94PP ...#MEN  MESSX%A   
94WG ...#DEF  23?=34?+K90MESSX%A]   
953L    #TRA  2 
95H= ...      SEGENTRY K1MESSX%A,XK1
962W ...      SEGENTRY K2MESSX%A,XK2
96GG ...      SEGENTRY K3MESSX%A,XK3
9726 ...      SEGENTRY K4MESSX%A,XK4
97FQ ...      SEGENTRY K5MESSX%A,XK5
97^B ...      SEGENTRY K11MESSX%A,XK11  
98F2 ...      SEGENTRY K12MESSX%A,XK12  
98YL ...      SEGENTRY K90MESSX%A   
99XW                   +TAB 
9==? ...#DEF  MESSSTART=0?  
9=JN ...#DEF  SEGNO=ADDMESS&#40000000<1*128 
9=X6    #DEF  22?=1 
9?BQ    #TRA 23?-1  
9?WB    #DEF  20?=34?+0?]   
9?XF ...#DEF  21?=0?
9?^6 ...#SKI  (0?<900-0?)^(20?<65-20?)  
9#2S ...(   
9#3X ...#ALT  AKMESSXX=1
9#53 ...      ADDEND
9#7= ...#ALT  ADDMESS=#40000000 
9#9F ...      ADDMESS  X
9#?N ...)   
9#B2    #NOR
9#KS ...[??? ADDEND SECT CENT FGN 56 DOC
9#TL    #   
9**=    #   
9*SW    #     HERE FOLLOWS ADDEND.                                 **** ADDEND  
9B#G    #     IT IS USED TO TERMINATE A SERIES OF MESSMON(A)'S. 
9BS6    #     INTRODUCED BY ADDMESS.
9C?Q    #     IT HAS NO PARAMETERS. 
9CRB    #   
9D?2    #MAC  ADDEND
9D#C ...#SKI  21?-0?
9D*S ...(   
9DC9 ...!     WRONG LENGTH (PREVIOUS PART)  
9DDL ...#DEF  0?=21?
9DG3 ...)   
9DHD ...#SKI  22?<1$1   
9DJT ...(   
9DL= ...      MESSMONA 22,,,CT  
9DMM ...      22HLAST PART NOT SUPPLIED 
9DP4 ...)   
9DQL                   +20? 
9F==          AUXILMF   
9FPW    #REP  4-(0?&3)  
9G9G          +0
9QH6    #DEF  20?=0?
9R2Q ...#SKI  ADDMESS&#37777777<1$1 
9RGB    #GAP  950-0?
9S22    #END  %A
9S7* ...#DEF  22?=ADDMESS&#40000000 
9S#N ...#ALT  ADDMESS=952^22?   
9SG3 ...#SKI  22?   
9SMB ...(   
9SSP ...#ALT  LMESSXX=20?+3&#77777774   
9T24 ...#MEN  MESSXX
9T7C ...      8HMESSXX  
9T#^ ...#END
9T*B ...      NEWCHENT MESSXX   
9T*R ...)   
9TB8 ...#SKI  22?<1$1   
9TBK ...(   
9TC2 ...#ALT  LMESSX=20?+3&#77777774
9TCC ...#MEN  MESSX 
9TCS ...      8HMESSX   
9TD9 ...#END
9TDW          NEWCHENT MESSX
9TNN ...)   
9TYG    #NOR
9WD6 ...[??? CATEGORI SECT CENT FGN 56 DOC  
=9MG    #   
==76    #   
==LQ    #     HERE FOLLOWS CATEGORISE.                             **** CATEGORI
=?6B    #     IT IS USED TO 'OR' SPECIFIED BITS (%B) INTO ALL   
=?L2    #     MESSAGES THAT HAVE CATERORIES AS IN %A.   
=#5L    #   
=#K=    #MAC  CATEGORISE
=*4W    #DEF  24?=%A&#77777 
=*JG    #DEF  23?=%B&#77777 
=B46    #OPT  ADDMESS=0 
=BHQ    #DEF  21?=AMFNUMBER+1   
=C3B          CAT      X,A,B,C,D,E,F,G,H,I,J,A,B,C,D,E,F,G,H,I  
=CH2    #NOR
=CQS ...[??? CAT SECT CENT FGN 56 DOC   
=D2L    #   
=DG=    #   
=D^W    #     HERE FOLLOWS CAT.                                    **** CAT 
=FFG    #     IT IS USED BY CATEGORISE  
=F^6    #   
=GDQ    #MAC  CAT   
=GYB    #STR  %A,X  
=HD2    #SKI
=HXL    #SKI  ADDMESS   
=JC=    (   
=JWW    #MEN  MESS%A
=KBG    #DEF  22?=0 
=KW6          MFLOCAL  22?,25?  
=L*Q          MOUSE 
=LTB    #END
=M*2    )   
=MSL    #DEF  21?=21?-1 
=N#=    #EXI  21?   
=NRW    #STR  %B,J  
=P?G          CAT      %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T 
=PR6    #STR  %B,J  
=Q=Q    #SKI
=QQB          CAT      %CJ,%CA,%CB,%CC,%CD,%CE,%CF,%CG,%CH,%CI,J,%D,%E,%F,%G,%H-
=R=2    ,%I,%J,%K   
=RPL    #NOR
=R^D ...[??? MOUSE SECT CENT FGN 56 DOC 
=S9=    #   
=SNW    #   
=T8G    #     HERE FOLLOWS MOUSE.                                  **** MOUSE   
=TN6    #     IT IS USED (?) BY CAT.
=W7Q    #   
=WMB    #MAC  MOUSE 
=X72          MFLOCAL  22?+1,26?
=XLL    #EXI  26?   
=Y6=    #DEF  0?=25?+1  
=YKW    #DEF  25?=34?+0?]   
=^5G    #SKI  25?&#77777-23?<1$1
=^K6          +24?^25?  
?24Q    #DEF  25?=26?   
?2JB    #DEF  22?=22?+1 
?342          MOUSE 
?3HL    #NOR
?3RD ...[??? SENDPARS SECT CENT FGN 56 DOC  
?43=    #   
?43Q ...#   
?44= ...#   
?44Q ...#     HERE FOLLOWS SENDPARS                                **** SENDPARS
?45= ...#     IT IS USED TO CONVEY PARAMETERS FROM  
?45Q ...#     ONE ACTIVITY TO ANOTHER   
?46= ...#   
?46Q ...#MAC  SENDPARS  
?47= ...      UNSETBIT 2,CLONG1(%A) 
?47Q ...      LDX   2  ACTRING(%B)  
?48= ...      SBN   2  ACTRING  
?48Q ...      MHUNTW   1,GMON,ASET  
?49= ...      NAME     1,%C,%D  
?49Q ...      CHAIN    1,BPTR(2)
?4== ...#NOR
?4=G ...[??? FINDPARS SECT CENT FGN 56 DOC  
?4=Q ...#   
?4?= ...#   
?4?Q ...#     HERE FOLLOWS FINDPARS                                **** FINDPARS
?4#= ...#     IT IS USED BY AN ACTIVITY TO PICK UP A
?4#Q ...#     PARAMETER BLOCK TRANSFERRED FROM ANOTHER ACTIVITY 
?4*= ...#   
?4*Q ...#MAC  FINDPARS  
?4B= ...#STR  %C
?4BQ ...      LDX   2  FX2  
?4C= ...      SETBIT   2,CLONG1(2)  
?4CQ ...      MHUNTW   1,%A,%B  
?4D= ...      NAME     1,GMON,ASET  
?4DQ ...      LDX   1  FX1  
?4F= ...#NOR
?4FG ...[??? MFPDCTAB SECT CENT FGN 56 DOC  
?4FQ ...#   
?4F^ ...#     PDC TABLE 
?4G8 ...#     TOP 9 BITS GIVE MAX LENGTH AFTER CONV(CHARS)  
?4GC ...#     BOTTOM 15 BITS RELATIVE ADDRESS OF CONVERSION ROUTINE 
?4GL ...#     B0 SET->A WELL KNOWN PDC (EG TIME)
?4GT ...#     B1 SET->VARIABLE LENGTH (EG PROPERTIES)   
?4H4 ...#MAC  MFPDCTAB  
?4H? ...#DEF  PDCTAB=0? 
?4HG ...      +0                           [0 NOTJOURN  
?4HP ...      PDCSET   DATENOW,8,KNOWN  
?4HY ...      PDCSET   TIMENOW,8,KNOWN  
?4J7 ...      PDCSET   USERNAME,13,KNOWN
?4JB ...      PDCSET   LOCNAME,12   
?4JK ...      PDCSET   GENNUM,4 
?4JS ...      PDCSET   LANGUAGE,4   
?4K3 ...      PDCSET   JOBNAME,12,KNOWN 
?4K= ...      PDCSET   JOBTYPE,7
?4KF ...      PDCSET   PROGNAME,5   
?4KN ...      PDCSET   URGENCY,1
?4KX ...      PDCSET   PROGCORE,7,KNOWN 
?4L6 ...      PDCSET                       [<   
?4L* ...      PDCSET   PROGMILL,7,KNOWN 
?4LJ ...      PDCSET   PERITYPE,2   
?4LR ...      PDCSET   PERINAME,5   
?4M2 ...      PDCSET                       [SPACE -NOT USED 
?4M9 ...      PDCSET   TSNCSN,9 
?4MD ...      PDCSET   TRANSCT,7
?4MM ...      PDCSET   PROPS,13,,V  
?4MW ...      PDCSET   BUDGTYPE,8   
?4N5 ...      PDCSET                       [%   
?4N# ...      PDCSET   BUDGQUAN,8   
?4NH ...      PDCSET   INCNUM,7 
?4NQ ...      PDCSET   SKIP,0,KNOWN 
?4N^ ...      PDCSET   NULL,0,KNOWN 
?4P8 ...      PDCSET   BLOCKCT,7
?4PC ...      PDCSET   JOBMILL,14,KNOWN 
?4PL ...      PDCSET                       [COMMA   
?4PT ...      PDCSET   GEOPER,6,KNOWN   
?4Q4 ...      PDCSET   FAILCT,7 
?4Q? ...      PDCSET   REPEATS,7
?4QG ...      PDCSET   ERRMESS,4,,V        [ERROR MESSAGE   
?4QP ...      PDCSET   NUMA,8   
?4QY ...      PDCSET   NUMB,8   
?4R7 ...      PDCSET   NUMC,8   
?4RB ...      PDCSET   NUMD,8   
?4RK ...      PDCSET   VARCHAR,4,,V 
?4RS ...      PDCSET   PAGETURN,4   
?4S3 ...      PDCSET   QUOTA,4  
?4S= ...      PDCSET   DATETHEN,8   
?4SF ...      PDCSET   TIMETHEN,8   
?4SN ...      PDCSET   OCTA,9   
?4SX ...      PDCSET   OCTB,9   
?4T6 ...      PDCSET   VAROCT,10,,V 
?4T* ...      PDCSET   VARDEC,9,,V  
?4TJ ...      PDCSET   ENTRANT,4,,V 
?4TR ...      PDCSET   SWITCH,3 
?4W2 ...      PDCSET   GEOMILL,14   
?4W9 ...      PDCSET
?4WD ...      PDCSET   REELNUM,4
?4WM ...#DEF  20?=64-0?+PDCTAB  
?4WW ...#SKI  20?   
?4X5 ...(   
?4X# ...#REP  20?      [ZEROFILL TABLE  
?4XH ...      +0
?4XQ ...)   
?4X^ ... MFDEFS 
?4Y8 ...#NOR
?4Y? ...[??? MFSAVE SECT CENT FGN 56 DOC
?4YC ...#   
?4YJ ...#MAC  MFSAVE
?4YP ...      SMO      FX2  
?4YW ...      STO   3  OUTCHAR  
?4^3 ...      CALL  6  SET  
?4^8 ...#STR  %A
?4^* ...      CALL  6  SAVEB
?4^G ...#NOR
?4^J ...[??? MFUNSAVE SECT CENT FGN 56 DOC  
?4^M ...#MAC  MFUNSAVE  
?4^S ...#STR  %A
?4^^ ...      CALL  6  UNSVB
?526 ...      CALL  6  RESET
?52? ...#NOR
?52B ...[??? NEWMESS SECT CENT FGN 56 DOC   
?52G    #     THE FOLLOWING BORING MACROS ARE TO PROVIDE 'NEWMESS' IN   
?5G6    #     THE EARLY VERSION(S) OF MARK 8. I HOPE THEY CAN BE REMOVED SOON.  
?5^Q    #   
?6FB    #   
?6^2    #MAC  NEWMESS   
?7DL          VALIDATE 2,%A,%B  
?7Y=    (   
?8CW    #DEF  20?=0 
?8XG     VALIDNEW %C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V   
?9C6    #EXI  20?+1 
?9WQ ...      MONMEND  %A   
?=W2    (   
??*L ...      MFLOCAL  %A&#777-26?,0?   
??T=    #DEF  20?=0 
?##W     NEWLEN %C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V 
?#SG    #SKI  20?&#40000000 
?*#6    (   
?*RQ    ! YOU HAVE NOT ENOUGH SPACE 
?B?B    #END
?BR2    #EXIT   
?C=L    )   
?CGD    #DEF  24?=20?   
?CW7 ...      MFLOCAL  %A&#777-26?,0?   
?D9W    #STR  %B
?DPG    #STR
?F96    #DEF  23?=0?+34?+0]+0/4096  
?FNQ     NEWORKS %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V 
?G8B ...      MFLOCAL   %A&#777-26?,0?  
?GN2    #STR  %B
?H7L          MESSNO   %B   
?HM=    #STR  %B
?J6W    #STR
?JLG          MESSNO   23?  
?K66    [0?->CATWORD OF LAST PART   
?KKQ    [20? = EXCESS OF WORDS  
?L5B          SPACEND 0?-1,24?  
?LK2    #END
?M4L    )   
?MJ=    )   
?N3W    #NOR
?N?N ...[??? VALIDNEW SECT CENT FGN 56 DOC  
?NHG    #MAC  VALIDNEW  
?P36    #STR  %A
?PGQ    (   
?Q2B    #STR  #,%A  
?QG2    (   
?Q^L    #DEF  20?=-1
?RF=    ! CATEGORY WORD NOT OCTAL   
?RYW    #EXIT   
?SDG    )   
?SY6    )   
?TCQ    #SKI  20?   
?TXB    (   
?WC2    #STR  %B
?WWL    #STR
?XB=    #DEF  20?=-1
?XTW    #STR  %A
?Y*G    #STR
?YT6    #DEF  20?=-1
?^#Q    #SKI  20?+1<1$1 
?^SB    ! YOU MAY NOT 'SKIP' PARTS AFTER A NEW TEXT 
#2#2    )   
#2RL    #STR  %C
#3?=    (   
#3QW    #SKI  20?<1$1   
#4=G    #DEF  20?=1 
#4Q6    )   
#59Q    #STR  %D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z
#5PB     VALIDNEW %D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V  
#692    #NOR
#6DS ...[??? NEWLEN SECT CENT FGN 56 DOC
#6NL    #     NEWLEN : FIND EXCESS OF WORDS IN 20?  
#78=    #MAC  NEWLEN
#7MW    #STR  %B
#87G    (   
#8M6    #DEF  21?=%B+11/4   
#96Q    #DEF  20?=20?-21?   
#9LB    )   
#=62    #SKI  0?
#=KL    (   
#?5=    #STR  %B
#?JW ...#DEF  20?=0?+34?+0]&#777+11/4+20?   
##4G    #DEF  21?=0?+34?+1]&#10000000   
##J6    #SKI  21?   
#*3Q ...#DEF  0?=0?+34?+0]&#777+11/4+0? 
#*HB    #SKI  21?<1$1   
#B32    #DEF  0?=0  
#BGL    )   
#C2=    #SKI  0?<1$1
#CFW    #STR  %D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z
#C^G     NEWLEN %D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V
#DF6    #NOR
#DNY ...[??? NEWORKS SECT CENT FGN 56 DOC   
#DYQ    #MAC  NEWORKS   
#FDB    #STR  %D
#FY2    #STR
#GCL    (   
#GX= ...      +0?+34?+0]&#777   
#HBW    #STR %B 
#HWG    (   
#JB6          +0?+34?+0]&#77700000^%B   
#JTQ    #DEF  0?=0?-1   
#K*B    )   
#KT2    #DEF  22?=0?+34?
#L#L    #DEF  22?=22?-1 
#LS=    #DEF  22?=22?+0]
#M?W ...#DEF  22?=22?&#777  
#MRG    #DEF  22?=22?+11
#N?6    #DEF  22?=22?/4 
#NQQ    #DEF  0?=22?+0?-1   
#P=B    )   
#PQ2    #STR  %D
#Q9L    (   
#QP=          +%C   
#R8W          %B
#RNG    #STR  %E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z  
#S86    (   
#SMQ    #DEF  0?=0?-1   
#T7B          +0?+34?+0]^#10000000  
#TM2    )   
#W6L          %CH%D 
#WL=    )   
#X5W    #STR  %E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z  
#XKG     NEWORKS %A,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V   
#Y56    #NOR
#Y#Y ...[??? MESSNO SECT CENT FGN 56 DOC
#YJQ    #   
#^4B    #   
#^J2    #MAC  MESSNO
*23L ...      +0?+34?+0]&#777   
*2H=    #FID  0 11 %A   
*32W    #SKI  0?+34?+0]&#10000000   
*3GG    (   
*426    #DEF  0?=0?-1   
*4FQ ...#DEF  0?=0?+34?+0]&#777+11/4+0? 
*4^B          MESSNO   %A   
*5F2    )   
*5YL    #NOR
*68D ...[??? SPACEND SECT CENT FGN 56 DOC   
*6D=    #     SPACEFILL LAST PART : SPACEND 
*6XW    #MAC  SPACEND   
*7CG    #SKI  %B
*7X6    (   
*8BQ    #DEF  0?=%A [PTR TO LAST PART   
*8WB    #DEF  21?=4*%B  
*9B2          +0?+34?+0]+21?
*9TL    #DEF  0?=0?-1   
*=*= ...#DEF  0?=0?+34?+0]&#777-21?+11/4+0? 
*=SW    #REP  %B
*?#G          4H
*?S6    )   
*#?Q    #NOR
*#RB    #   
^^^^ ...24423073006100000000