{{htmlmetatags>metatag-description:(ICL George 3 and George 4 GIN macro: ALTMESS)}}
====== ALTMESS ======
(GIN Macro)
**Defined in:** [[george:source:MACROS_MSYS|MACROS MSYS]]
**Used in:**
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