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 %Ả-26?,21? [GET RELATIVE ADDRESS OF MESSAGE 66#B ... MFLOCAL %Ả+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?� 6FHQ MFERROR 2 [MESSAGE TOO BIG 6G3B ( 6G?8 ...#DEF MHLS=34?+0?]ྠ 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?]ྠ 6PGY ...#DEF 21?=34?+0?]̉ [EXISTING CHAR COUNT 6PTB #HAL 25?,21? [MESSNO/CHAR COUNT 6Q*2 #DEF 22?=34?+0?]� [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?�-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