SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (3)     104  GET MESSAGE

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   1

HJ02                                                                                                                             (1)



                                     0000     1 	.TITLE	SYSGETMSG - SYSTEM SERVICE GET MESSAGE

                                     0000     2 	.IDENT	/HJ02/

                                     0000     3  

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

                                     0000     8 ; THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A

                                     0000     9 ; SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-

                                     0000    10 ; SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY

                                     0000    11 ; OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE

                                     0000    12 ; AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM

                                     0000    13 ; AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND

                                     0000    14 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

                                     0000    15 ;

                                     0000    16 ; THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT

                                     0000    17 ; NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL

                                     0000    18 ; EQUIPMENT CORPORATION.

                                     0000    19 ;

                                     0000    20 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

                                     0000    21 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    22 ;

                                     0000    23 ; H.J.	JULY 1977

                                     0000    24 ;

                                     0000    25 ; SYSTEM SERVICE GET MESSAGE

                                     0000    26 ;

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   2

HJ02                                                                                                                             (2)



                                     0000    28 ;

                                     0000    29 ; MACRO LIBRARY CALLS

                                     0000    30 ;

                                     0000    31  

                                     0000    32 	$SSDEF				;DEFINE SYSTEM STATUS VALUES

                                     0000    33 

                                     0000    34 ;

                                     0000    35 ; LOCAL SYMBOLS

                                     0000    36 ;

                           000000FF  0000    37 	MSG$CB_SUPPRESS	= 255		;BYTE INDICATING SUPRESSION OF BLANK 

                                     0000    38 ;

                                     0000    39 ; ARGUMENT LIST OFFSET DEFINITIONS

                                     0000    40 ; (5 ARGUMENTS)

                                     0000    41 ; 

                           00000004  0000    42 	MSGID	= 4			;ID OF MESSAGE TO BE RETRIEVED

                           00000008  0000    43 	MSGLEN	= 8			;ADDR TO STORE RESULT MESSAGE LENGTH

                           0000000C  0000    44 	BUFADR	= 12			;ADDR OF MESSAGE BUFFER DESCRIPTOR

                           00000010  0000    45 	FLAGS	= 16			;FLAG INDICATORS FOR SELECTION OF

                           00000000  0000    46 	 TXTIND	= 0			; INCLUDE TEXT PORTION

                           00000001  0000    47 	 IDIND	= 1			; INCLUDE ID PORTION OF MESSAGE

                           00000002  0000    48 	 SEVIND	= 2			; INCLUDE SEVERITY PORTION OF MESSAGE

                           00000003  0000    49 	 SUBIND = 3			; INCLUDE SUBSYSTEM NAME IN MESSAGE

                           00000014  0000    50 	OUTADR	= 20			;LONGWORD ADDR CONTAINING 4 SUBFIELDS

                           00000000  0000    51 	 LEVEL	= 0			;DETAIL LEVEL OF MESSAGE

                           00000001  0000    52 	 FAOARG	= 1			;NUMBER OF FAO ARGUMENTS IN MESSAGE

                           00000002  0000    53 	 USER	= 2			;USER DEFINED VALUE

                           00000003  0000    54 	 ORDER	= 3			;RESERVED FOR ORDERING NUMBER IN

                                     0000    55 					;MULTI-LINE MESSAGES

                                     0000    56 

                                     0000    57 ;

                                     0000    58 ; MESSAGE TEXT DATA STRUCTURE

                                     0000    59 ;

                           00000000  0000    60 	MLEVEL	= 0			;DETAIL LEVEL OF MESSAGE

                           00000001  0000    61 	MFAOCNT	= 1			;NUMBER OF FAO ARGUMENTS IN MESSAGE

                           00000002  0000    62 	MUSER	= 2			;USER DEFINED VALUE

                           00000003  0000    63 	MORDER	= 3			;ORDER NUMBER OF MESSAGE

                           00000004  0000    64 	MLANG	= 4			;BYTE CONTAINING LANGUAGE ID

                           00000000  0000    65 	 MCONT	= 0			;1 = MESSAGE IS PART OF PREVIOUS GROUP

                           00000001  0000    66 	 MLID	= 1			;3 BITS OF LANGUAGE ID

                           00000005  0000    67 	MLEN	= 5			;TOTAL MESSAGE LENGTH

                           00000006  0000    68 	MIDLEN	= 6			;LENGTH OF ASCII MESSAGE ID

                           00000007  0000    69 	MID	= 7			;START OF MESSAGE ID

                                     0000    70 ;	MTXT	= UNKNOWN		;START OF MESSAGE TEXT

                                     0000    71 

                                     0000    72 ;

                                     0000    73 ; LOCAL DATA

                                     0000    74 ;

                                 00000000    75 	.PSECT	YEXEPAGED,BYTE		;PAGED PSECT

                                     0000    76 ;

                                     0000    77 ; SUBSTITUTE MESSAGE FORMAT CONTROL STRING (SS$_MSGNOTFND)

                                     0000    78 ;

                                 00  0000    79 DEFMSG:	.BYTE	0			;NO ASSOCIATED DETAIL LEVEL

                                 00  0001    80 	.BYTE	0			;NO FAO CALL NECESSARY

                                 00  0002    81 	.BYTE	0			;NO USER VALUE

                                 00  0003    82 	.BYTE	0			;NO ORDERING INFORMATION

                                 00  0004    83 	.BYTE	0			;NO EXPLICIT LANGUAGE

                                 39' 0005    84 	.BYTE	DLEN			;TOTAL SIZE OF THE DEFAULT MESSAGE

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   3

HJ02                                                                                                                             (2)



                                 05' 0006    85 	.BYTE	DMSG-DID		;SIZE OF 'NOMSG' ID

                     47 53 4D 4F 4E  0007    86 DID:	.ASCII	\NOMSG\			;IDENTIFIER ASSOCIATED WITH THIS MSG

55 21 20 6D 65 74 73 79 73 62 75 53  000C    87 DMSG:	.ASCII	\Subsystem !UW -- Message number !UW\

65 67 61 73 73 65 4D 20 2D 2D 20 57  0018       

   57 55 21 20 72 65 62 6D 75 6E 20  0024       

                                     002F    88 DEND:

                           00000039  002F    89 	DLEN	= DEND-DEFMSG+10	;ACCOUNTS FOR FAO !UW EXPANSIONS

                                     002F    90  

                           00000023  002F    91 CNTRL:	.LONG	DEND-DMSG		;STRING DESCRIPTOR FOR FAO CALL

                           0000000C' 0033    92 	.LONG	DMSG			;START OF DEFAULT MESSAGE

                                     0037    93 

                                     0037    94 					;SEVERITY CHAR TO OUTPUT

                                 57  0037    95 SEVTAB:	.ASCII	\W\			;+WARNING

                                 53  0038    96 	.ASCII	\S\			;+SUCCESS

                                 45  0039    97 	.ASCII	\E\			;+ERROR

                                 49  003A    98 	.ASCII	\I\			;+INFORMATIONAL

                                 46  003B    99 	.ASCII	\F\			;+FATAL ERROR

                                 3F  003C   100 	.ASCII	\?\			;+

                                 3F  003D   101 	.ASCII	\?\			;+

                                 3F  003E   102 	.ASCII	\?\			;+

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   4

HJ02            GET MESSAGE                                                                                                      (3)



                                     003F   104 	.SBTTL	GET MESSAGE

                                     003F   105 ;+

                                     003F   106 ; EXE$GETMSG - GET MESSAGE

                                     003F   107 ;

                                     003F   108 ; THIS SERVICE PROVIDES THE CAPABILITY TO RETRIEVE MESSAGE TEXT FROM

                                     003F   109 ; THE SYSTEM MESSAGE FILE.

                                     003F   110 ;

                                     003F   111 ; INPUTS:

                                     003F   112 ;

                                     003F   113 ;	MSGID(AP)  = IDENTIFICATION OF MESSAGE TO BE RETRIEVED.

                                     003F   114 ;	MSGLEN(AP) = ADDRESS TO STORE LENGTH OF RESULT MESSAGE.

                                     003F   115 ;	BUFADR(AP) = ADDRESS OF MESSAGE BUFFER DESCRIPTOR.

                                     003F   116 ;	FLAGS(AP)  = INPUT FLAGS INDICATING PARTS OF MESSAGE WANTED.

                                     003F   117 ;	OUTADR(AP) = ADDRESS TO STORE MESSAGE ASSOCIATED INFORMATION.

                                     003F   118 ;

                                     003F   119 ; OUTPUTS:

                                     003F   120 ;

                                     003F   121 ;	R0 LOW BIT CLEAR IS NEVER DIRECTLY RETURNED, BUT CAN OCCUR AS

                                     003F   122 ;	THE RESULT OF AN ACCESS VIOLATION

                                     003F   123 ;

                                     003F   124 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     003F   125 ;

                                     003F   126 ;		R0 = SS$_NORMAL - NORMAL COMPLETION.

                                     003F   127 ;

                                     003F   128 ;		R0 = SS$_MSGNOTFND - MESSAGE NOT IN FILE, DEFAULT MESSAGE

                                     003F   129 ;

                                     003F   130 ;		R0 = SS$_BUFFEROVF - OUTPUT BUFFER TOO SMALL FOR MESSAGE

                                     003F   131 ;

                                     003F   132 ;

                                     003F   133 ;	THE MESSAGE FILE '[1,2]SYSMSG.MPF' IS AN IMPLIED INPUT TO THIS SYSTEM

                                     003F   134 ;	SERVICE.  THIS SERVICE ACCESSES THE FILE AS A MAPPED FILE.  THE

                                     003F   135 ;	FILE IS MAPPED AT BOOT TIME.  THE FIRST PAGE CONTAINS POINTERS

                                     003F   136 ;	AND A NUMERICAL INDEX TO THE OTHER PORTIONS OF THE FILE.

                                     003F   137 ;	LONG WORD 1 - RELATIVE ADDRESS OF THE SUBSTITUTION TABLE

                                     003F   138 ;		  2 - TOTAL NUMBER OF PAGES TO GET TO START OF INDEX

                                     003F   139 ;		  3 - NUMBER OF PAGES OF MESSAGE IDS AND POINTERS

                                     003F   140 ;	      4-128 - MESSAGE IDS OF HIGHEST MESSAGE ON SUBSEQUENT PAGES

                                     003F   141 ;	SECOND-NTH PAGES CONTAIN MESSAGE IDS IN WORDS 1-64 AND CORRESPONDING

                                     003F   142 ;	RELATIVE POINTERS IN WORDS 65-128.  THIS IS FOLLOWED BY N PAGES OF

                                     003F   143 ;	SUBSYSTEM NUMBERS AND THEIR ASSOCIATED NAMES.

                                     003F   144 ;	THIS IS ALL FOLLOWED BY PAGES CONTAINING MESSAGE INFORMATION AND TEXT

                                     003F   145 ;	IN THE FORMAT OF THE MESSAGE TEXT DATA STRUCTURE.

                                     003F   146 ;

                                     003F   147 ;-

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   5

HJ02            GET MESSAGE                                                                                                      (4)



                                     003F   149 	.ENABL	LSB

                                     003F   150  

                                     003F   151 EXE$GETMSG::				;GET MESSAGE

                               0FFC  003F   152 	.WORD	^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11> ;ENTRY MASK

            58         04 AC     D0  0041   153 	MOVL	MSGID(AP),R8		;GET THE MESSAGE ID

            58            0F     E0  0045   154 	BBS	#15,R8,10$		;BRANCH IF FACILITY LOCAL MESSAGE

                          03         0048       

            58            58     3C  0049   155 	MOVZWL	R8,R8			;CLEAR OUT FACILITY CODE

            58            07     CA  004C   156 10$:	BICL	#7,R8			;GET THE MESSAGE NUMBER

            59   00000000'EF     D0  004F   157 	MOVL	MSG$GL_INDEX,R9		;GET ADDR OF TOP LEVEL INDEX

                                     0056   158 	IFNORD	#8,(R9),30$		;BRANCH IF THE FILE IS NOT MAPPED

            57         08 A9     DE  005C   159 	MOVAL	8(R9),R7		;GET ADDR OF FIRST LEVEL INDEX

            56            01     CE  0060   160 	MNEGL	#1,R6			;INIT BLOCK COUNTER FOR SECOND INDEX

                          56     D6  0063   161 20$:	INCL	R6			;BUMP POINTER TO NEXT BLOCK

            6746          58     D1  0065   162 	CMPL	R8,(R7)[R6]		;IS TEXT IN THIS BLOCK?

                          F8     1A  0069   163 	BGTRU	20$			;BRANCH IF TEXT NOT IN THIS BLOCK

            56            09     78  006B   164 	ASHL	#9,R6,R6		;ADJUST INDEX BY BYTES/PAGE

                          56         006E       

            57       01F8 C746   9E  006F   165 	MOVAB	512-8(R7)[R6],R7	;POINT TO START OF

                                     0075   166 					;PAGE FOR SECOND LEVEL INDEX

                          52     D4  0075   167 	CLRL	R2			;SET LOW LIMIT OF SEARCH INDEX

            53            3F     9A  0077   168 	MOVZBL	#63,R3			;SET HIGH LIMIT

                          3D     10  007A   169 	BSBB	SEARCH			;LOCATE THE ENTRY

                          5D     13  007C   170 	BEQL	50$			;BRANCH IF MESSAGE IN TABLE

                                     007E   171 

                                     007E   172 					;MESSAGE NOT FOUND, USE DEFAULT

            5E            3C     C2  007E   173 30$:	SUBL	#DLEN+3&^XFFFC,SP	;MAKE ROOM FOR MESSAGE (ALIGNED)

            56            5E     D0  0081   174 	MOVL	SP,R6			;SET FAKE MESSAGE ADDRESS

       FF77 CF            0C     28  0084   175 	MOVC3	#DMSG-DEFMSG,DEFMSG,(SP) ;MOVE THE FIRST PART OF THE MESSAGE

                          6E         0089       

                          53     DD  008A   176 	PUSHL	R3			;PUSH ADDRESS PART OF CHARACTER DESC

                          30     DD  008C   177 	PUSHL	#DLEN+3&^XFFFC-<DMSG-DEFMSG> ;PUSH AVAILABLE OUTPUT LENGTH

            52            5E     D0  008E   178 	MOVL	SP,R2			;SAVE ADDRESS FOR FAO CALL

            7E         04 AC     3C  0091   179 	MOVZWL	MSGID(AP),-(SP)		;PUSH ID NUMBER

            7E         06 AC     3C  0095   180 	MOVZWL	MSGID+2(AP),-(SP)	;PUSH SUBSYSTEM NUMBER

                                     0099   181 	$FAO_S	CNTRL,(R2),(R2)		;CALL FAO TO CONVERT THE NUMBERS INTO

                                     00A7   182 					;THE DEFAULT MESSAGE TO RETURN

            62            82     C0  00A7   183 	ADDL	(R2)+,(R2)		;FORM POINTER TO END OF STRING

                          92     94  00AA   184 	CLRB	@(R2)+			;MAKE THE STRING ASCIZ

            57       0621 8F     3C  00AC   185 	MOVZWL	#SS$_MSGNOTFND,R7	;SET RETURN STATUS FOR LATER

                          53     D4  00B1   186 	CLRL	R3			;LANGUAGE MUST BE 0 FOR DEFAULT MSG

                          32     11  00B3   187 	BRB	60$			;CONTINUE PROCESSING WITH SPECIAL MSG

                                     00B5   188 

            56            01     C1  00B5   189 NEWLOW:	ADDL3	#1,R6,R2		;UPDATE LOW BOUND

                          52         00B8       

            53            52     C1  00B9   190 SEARCH:	ADDL3	R2,R3,R6		;AVERAGE HIGH AND LOW BOUNDS

                          56         00BC       

            56            02     C6  00BD   191 	DIVL	#2,R6			;FOR NEW INDEX TO CHECK

            53            52     D1  00C0   192 	CMPL	R2,R3			;IF LOW>HIGH UNSUCCESSFUL END

                          0E     14  00C3   193 	BGTR	40$			;RETURN, Z=0

            6746          58     D1  00C5   194 	CMPL	R8,(R7)[R6]		;CHECK ENTRY IN TABLE

                          08     13  00C9   195 	BEQL	40$			;RETURN, Z=1 SUCCESS

                          E8     1A  00CB   196 	BGTRU	NEWLOW			;BRANCH IF ID>ENTRY TO SET NEW LOW

            56            01     C3  00CD   197 	SUBL3	#1,R6,R3		;SET A NEW UPPER LIMIT IF ID<ENTRY

                          53         00D0       

                          E6     11  00D1   198 	BRB	SEARCH			;LOOP

                                 05  00D3   199 40$:	RSB				;RETURN

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   6

HJ02            GET MESSAGE                                                                                                      (4)



                                     00D4   200 

               00 45 4D 41 4E 4F 4E  00D4   201 NONAME:	.ASCIZ	\NONAME\		;DEFAULT NAME IF ONE NOT FOUND

                                     00DB   202 

                                     00DB   203 50$:

                                     00DB   204 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GET LANGUAGE BITS INTO R3

                                     00DB   205 ;	EXTZV	#0,#3,(R3),R3		;GET USER DEFAULT LANGUAGE BITS

                          53     D4  00DB   206 	CLRL	R3			;ASSUME LANGUAGE 0 FOR NOW

            59       0100 C746   C1  00DD   207 	ADDL3	256(R7)[R6],R9,R6	;POINT TO TEXT PART OF FILE

                          56         00E3       

            57            01     3C  00E4   208 	MOVZWL	#SS$_NORMAL,R7		;DEFAULT TO SUCCESS RETURN

            59         04 A9     C1  00E7   209 60$:	ADDL3	4(R9),R9,R4		;POINT TO SUBSYSTEM TABLE PART OF FILE

                          54         00EB       

            59            69     C0  00EC   210 	ADDL	(R9),R9			;GET ADDR OF LANGUAGE EXPANSION TABLE

            51            56     D0  00EF   211 	MOVL	R6,R1			;SAVE FIRST POINTER FOR WRONG LANGUAGE

            03            01     ED  00F2   212 70$:	CMPZV	#MLID,#3,MLANG(R6),R3	;IS THIS THE CORRECT LANGUAGE?

            53         04 A6         00F5       

                          11     13  00F8   213 	BEQL	80$			;BRANCH IF YES, HAVE MESSAGE

            58         05 A6     9A  00FA   214 	MOVZBL	MLEN(R6),R8		;GET LENGTH TO NEXT MESSAGE

            56            58     C0  00FE   215 	ADDL	R8,R6			;FORM POINTER TO NEXT MESSAGE

         04 A6            00     E0  0101   216 	BBS	#MCONT,MLANG(R6),70$	;BRANCH IF MORE MESSAGES WITH THIS ID

                          EC         0105       

            56            51     D0  0106   217 	MOVL	R1,R6			;NO MESSAGE IS OF CORRECT LANGUAGE,

                          53     D4  0109   218 	CLRL	R3			;DEFAULT LANG AND ASSUME FIRST MESSAGE

            7E            6943   3C  010B   219 80$:	MOVZWL	(R9)[R3],-(SP)		;GET OFFSET TO THE APPROPRIATE LANG

            59            8E     C0  010F   220 	ADDL	(SP)+,R9		;FORM OFFSET FOR LATER

            50         14 AC     D0  0112   221 	MOVL	OUTADR(AP),R0		;DOES USER WANT OUTPUT'S FROM GETMSG

                          03     13  0116   222 	BEQL	90$			;BRANCH IF NOT

            60            66     D0  0118   223 	MOVL	MLEVEL(R6),(R0)		;RETURN 4 BYTES OF ASSOCIATED MSG INFO

                          55     D4  011B   224 90$:	CLRL	R5			;CLEAR OUTPUT LENGTH COUNT

            5A         0C BC     7D  011D   225 	MOVQ	@BUFADR(AP),R10		;GET THE MESSAGE BUFFER DESCRIPTOR

         10 AC            03     E1  0121   226 	BBC	#SUBIND,FLAGS(AP),120$	;BRANCH IF DON'T INCLUDE SUBSYS NAME

                          20         0125       

                          7E     D4  0126   227 	CLRL	-(SP)			;MAKE ROOM TO SET NUMBER AS STRING

         01 AE         06 AC     B0  0128   228 	MOVW	MSGID+2(AP),1(SP)	;SET UP THE SUBSYSTEM AS A STRING

            6E            03     39  012D   229 	MATCHC	#3,(SP),(R4)+,(R4)	;FIND THE SUBSYSTEM TEXT FOR NUMBER

            64            84         0130       

                          04     13  0132   230 	BEQL	100$			;BRANCH IF FOUND

            53         9D AF     9E  0134   231 	MOVAB	NONAME,R3		;POINT R3 TO UNKNOWN NAME

            54            53     D0  0138   232 100$:	MOVL	R3,R4			;SAVE POINTER TO STRING

            53            25     9A  013B   233 	MOVZBL	#^A/%/,R3		;OUTPUT LEADING INDICATOR OF MESSAGE

                          008A   30  013E   234 110$:	BSBW	EMIT			;OUTPUT IT

            53            84     9A  0141   235 	MOVZBL	(R4)+,R3		;GET A BYTE OF THE SUBSYSTEM NAME

                          F8     12  0144   236 	BNEQ	110$			;BRANCH TO OUTPUT IT UNTIL NULL BYTE

         10 AC            02     E1  0146   237 120$:	BBC	#SEVIND,FLAGS(AP),130$	;BRANCH IF DON'T INCLUDE SEVERITY CODE

                          18         014A       

            53            2D     9A  014B   238 	MOVZBL	#^A/-/,R3		;OUTPUT A -X- WHERE X IS THE SEVERITY

                          7B     10  014E   239 	BSBB	EMIT			;OUTPUT A CHAR

            03            00     EF  0150   240 	EXTZV	#0,#3,MSGID(AP),R0	;GET THE SEVERITY BITS

            50         04 AC         0153       

            53       FEDC CF40   9A  0156   241 	MOVZBL	SEVTAB[R0],R3		;POINT TO CORRECT CHAR IN TABLE

                          6D     10  015C   242 	BSBB	EMIT			;OUTPUT A CHAR

            53            2D     9A  015E   243 	MOVZBL	#^A/-/,R3		;GET THE TRAILING HYPHEN

                          68     10  0161   244 	BSBB	EMIT			;OUTPUT IT

         10 AC            01     E1  0163   245 130$:	BBC	#IDIND,FLAGS(AP),150$	;BRANCH IF DON'T INCLUDE IDENTIFIER

                          11         0167       

            58         06 A6     9E  0168   246 	MOVAB	MIDLEN(R6),R8		;START TO FORM POINTER TO ID

            51            88     9A  016C   247 	MOVZBL	(R8)+,R1		;GET LENGTH OF IDENTIFIER, R8->ID

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   7

HJ02            GET MESSAGE                                                                                                      (4)



                          08     13  016F   248 	BEQL	150$			;BRANCH IF NOT IDENTIFIER IN FILE

            53            88     9A  0171   249 140$:	MOVZBL	(R8)+,R3		;GET AN IDENTIFIER CHARACTER

                          55     10  0174   250 	BSBB	EMIT			;OUTPUT THE CHAR

            F8            51     F5  0176   251 	SOBGTR	R1,140$			;LOOP ON ALL THE CHARS

            5E         10 AC     E9  0179   252 150$:	BLBC	FLAGS(AP),210$		;BRANCH IF DON'T INCLUDE MESSAGE TEXT

            04            00     ED  017D   253 	CMPZV	#0,#4,FLAGS(AP),#<1@SUBIND>+<1@TXTIND> ;JUST SUBSYS AND TEXT?

            09         10 AC         0180       

                          0A     13  0183   254 	BEQL	155$			;BRANCH IF YES TO SEPARATE WITH BLANK

         10 AC            01     E1  0185   255 	BBC	#IDIND,FLAGS(AP),160$	;BRANCH IF IDENTIFIER NOT OUTPUT

                          0A         0189       

            53            2C     9A  018A   256 	MOVZBL	#^A/,/,R3		;CLEAN UP MESSAGE BY OUTPUTING ', '

                          3C     10  018D   257 	BSBB	EMIT			;OUTPUT THE COMMA

            53            20     9A  018F   258 155$:	MOVZBL	#^A/ /,R3		;GET A BLANK

                          37     10  0192   259 	BSBB	EMIT			;OUTPUT THE BLANK

            58         06 A6     9E  0194   260 160$:	MOVAB	MIDLEN(R6),R8		;START TO FORM POINTER TO TEXT

            51            88     9A  0198   261 	MOVZBL	(R8)+,R1		;GET LENGTH OF IDENTIFIER, R8->ID

            58            51     C0  019B   262 	ADDL	R1,R8			;R8-> START OF TEXT, HIGH R1 IS 0

                                     019E   263 

            53            88     90  019E   264 170$:	MOVB	(R8)+,R3		;GET A MESSAGE BYTE, HIGH R3 IS 0

                          38     13  01A1   265 	BEQL	210$			;BRANCH IF AT END OF TEXT STRING

                          23     14  01A3   266 	BGTR	190$			;BRANCH IF REGULAR ASCII CHARACTER

            50       FEFE C943   3C  01A5   267 	MOVZWL	-129*2(R9)[R3],R0	;GET OFFSET TO EXPANSION TEXT

       FF00 C943          50     A3  01AB   268 	SUBW3	R0,-128*2(R9)[R3],R1	;CALCULATE LENGTH OF TEXT

                          51         01B1       

            50            59     C0  01B2   269 	ADDL	R9,R0			;POINT TO TEXT CHARS

            53            80     9A  01B5   270 180$:	MOVZBL	(R0)+,R3		;GET AN EXPANSION CHARACTER

                          11     10  01B8   271 	BSBB	EMIT			;OUTPUT A CHAR

            F8            51     F5  01BA   272 	SOBGTR	R1,180$			;LOOP THROUGH CHARS

            88         FF 8F     91  01BD   273 	CMPB	#MSG$CB_SUPPRESS,(R8)+	;SHOULD THE AUTOMATIC BLANK BE OUTPUT?

                          DB     13  01C1   274 	BEQL	170$			;BRANCH IF NOT

            53            20     9A  01C3   275 	MOVZBL	#^A/ /,R3		;GET A BLANK

                          58     D7  01C6   276 	DECL	R8			;ADJUST FOR POP PAST 'SUPPRESS'

                       D3 AF     9F  01C8   277 190$:	PUSHAB	170$			;SET UP TO LOOP AFTER 'EMIT'

                                     01CB   278 

            5A            55     B1  01CB   279 EMIT:	CMPW	R5,R10			;IS THERE ROOM FOR THE CHARACTER?

                          06     1E  01CE   280 	BGEQU	200$			;BRANCH IF NOT, FLAG BUFFER OVERFLOW

            8B            53     90  01D0   281 	MOVB	R3,(R11)+		;STORE THE RESULT BYTE

                          55     B6  01D3   282 	INCW	R5			;BUMP THE COUNT

                                 05  01D5   283 	RSB				;EXIT

                                     01D6   284 

            57       0601 8F     3C  01D6   285 200$:	MOVZWL	#SS$_BUFFEROVF,R7	;SET BUFFER OVERFLOW RETURN

            50         08 AC     D0  01DB   286 210$:	MOVL	MSGLEN(AP),R0		;GET THE ADDRESS OF RESULT LENGTH

                          03     13  01DF   287 	BEQL	220$			;BRANCH IF IT WAS UNSPECIFIED

            60            55     B0  01E1   288 	MOVW	R5,(R0)			;SET THE OUTPUT LENGTH

            50            57     D0  01E4   289 220$:	MOVL	R7,R0			;SET THE RETURN STATUS VALUE

                                 04  01E7   290 	RET				;RETURN, R0 CONTAINS RETURN STATUS

                                     01E8   291 

                                     01E8   292 	.DSABL	LSB

                                     01E8   293 

                                     01E8   294 	.END

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   8

SYMBOL TABLE                                                                                                                     (4)



$$T2           = 00000003            SS$_BUFFEROVF  = 00000601            SS$_GSDFULL    = 000000CC            

BIT...         = 00000000            SS$_BUGCHECK   = 000002A4            SS$_HANGUP     = 000002CC            

BUFADR         = 0000000C            SS$_CANCEL     = 00000830            SS$_HEADERFULL = 000008C8            

CNTRL            0000002F R     03   SS$_CHANINTLK  = 0000004C            SS$_IDXFILEFULL= 000008D0            

DEFMSG           00000000 R     03   SS$_CLIFRCEXT  = 00000980            SS$_ILLBLKNUM  = 000000DC            

DEND             0000002F R     03   SS$_CMODSUPR   = 0000041C            SS$_ILLCNTRFUNC= 000000E4            

DID              00000007 R     03   SS$_CMODUSER   = 00000424            SS$_ILLEFC     = 000000EC            

DLEN           = 00000039            SS$_COMPAT     = 0000042C            SS$_ILLIOFUNC  = 000000F4            

DMSG             0000000C R     03   SS$_CONTINUE   = 00000001            SS$_ILLLBLAST  = 00000968            

EMIT             000001CB R     03   SS$_CONTROLC   = 00000651            SS$_ILLPAGCNT  = 000000FC            

EXE$GETMSG       0000003F RG    03   SS$_CONTROLO   = 00000609            SS$_ILLSEQOP   = 000002DC            

FAOARG         = 00000001            SS$_CONTROLY   = 00000611            SS$_ILLSER     = 00000104            

FLAGS          = 00000010            SS$_CREATED    = 00000619            SS$_ILLUSRLBLRD= 00000958            

GBL...         = 00000000            SS$_CTRLERR    = 00000054            SS$_ILLUSRLBLWT= 00000960            

IDIND          = 00000001            SS$_DATACHECK  = 0000005C            SS$_INCVOLLABEL= 0000010C            

LEVEL          = 00000000            SS$_DATAOVERUN = 00000838            SS$_INSFARG    = 00000114            

MCONT          = 00000000            SS$_DEBUG      = 0000046C            SS$_INSFMEM    = 00000124            

MFAOCNT        = 00000001            SS$_DECOVF     = 000004A4            SS$_INSFRAME   = 0000012C            

MID            = 00000007            SS$_DEVACTIVE  = 000002C4            SS$_INSFWSL    = 0000011C            

MIDLEN         = 00000006            SS$_DEVALLOC   = 00000840            SS$_INTDIV     = 00000484            

MLANG          = 00000004            SS$_DEVALRALLOC= 00000641            SS$_INTOVF     = 0000047C            

MLEN           = 00000005            SS$_DEVASSIGN  = 00000848            SS$_IVADDR     = 00000134            

MLEVEL         = 00000000            SS$_DEVFOREIGN = 00000064            SS$_IVCHAN     = 0000013C            

MLID           = 00000001            SS$_DEVICEFULL = 00000850            SS$_IVCHNLSEC  = 0000026C            

MORDER         = 00000003            SS$_DEVMOUNT   = 0000006C            SS$_IVDEVNAM   = 00000144            

MSG$CB_SUPPRESS= 000000FF            SS$_DEVNOTALLOC= 00000858            SS$_IVGSDNAM   = 0000014C            

MSG$GL_INDEX     ********   X   03   SS$_DEVNOTMBX  = 00000074            SS$_IVLOGNAM   = 00000154            

MSGID          = 00000004            SS$_DEVNOTMOUNT= 0000007C            SS$_IVLOGTAB   = 0000015C            

MSGLEN         = 00000008            SS$_DEVOFFLINE = 00000084            SS$_IVPROTECT  = 000002F4            

MUSER          = 00000002            SS$_DIRFULL    = 00000860            SS$_IVQUOTAL   = 00000164            

NEWLOW           000000B5 R     03   SS$_DRVERR     = 0000008C            SS$_IVSECFLG   = 0000016C            

NONAME           000000D4 R     03   SS$_DUPFILENAME= 00000868            SS$_IVSECIDCTL = 000002E4            

ORDER          = 00000003            SS$_DUPLNAM    = 00000094            SS$_IVSSRQ     = 00000174            

OUTADR         = 00000014            SS$_ENDOFFILE  = 00000870            SS$_IVSTSFLG   = 0000017C            

SEARCH           000000B9 R     03   SS$_ENDOFTAPE  = 00000878            SS$_IVTIME     = 00000184            

SEVIND         = 00000002            SS$_ENDOFUSRLBL= 00000970            SS$_LCKPAGFUL  = 000000D4            

SEVTAB           00000037 R     03   SS$_EXQUOTA    = 0000001C            SS$_LENVIO     = 0000018C            

SS$_ABORT      = 0000002C            SS$_EXTIDXFILE = 00000880            SS$_LKWSETFUL  = 00000194            

SS$_ACCONFLICT = 00000800            SS$_FCPREADERR = 00000888            SS$_MBFULL     = 000008D8            

SS$_ACCVIO     = 0000000C            SS$_FCPREPSTN  = 00000988            SS$_MBTOOSML   = 0000019C            

SS$_ACPVAFUL   = 000002FC            SS$_FCPREWNDERR= 00000890            SS$_MCHECK     = 000002BC            

SS$_ARTRES     = 00000474            SS$_FCPSPACERR = 00000898            SS$_MEDOFL     = 000001A4            

SS$_ASTFLT     = 0000040C            SS$_FCPWRITERR = 000008A0            SS$_MSGNOTFND  = 00000621            

SS$_BADATTRIB  = 00000034            SS$_FILACCERR  = 0000009C            SS$_MTLBLLONG  = 00000304            

SS$_BADCHKSUM  = 00000808            SS$_FILALRACC  = 000000A4            SS$_MUSTCLOSEFL= 00000948            

SS$_BADESCAPE  = 0000003C            SS$_FILELOCKED = 000008A8            SS$_NOAQB      = 00000314            

SS$_BADFILEHDR = 00000810            SS$_FILENUMCHK = 000008B0            SS$_NODATA     = 000001AC            

SS$_BADFILENAME= 00000818            SS$_FILESEQCHK = 000008B8            SS$_NOHANDLER  = 000008F8            

SS$_BADFILEVER = 00000820            SS$_FILESTRUCT = 000008C0            SS$_NOHOMEBLK  = 000008E0            

SS$_BADIMGHDR  = 00000044            SS$_FILNOTACC  = 000000AC            SS$_NOIOCHAN   = 000001B4            

SS$_BADIRECTORY= 00000828            SS$_FILNOTCNTG = 000002AC            SS$_NOLINKS    = 0000027C            

SS$_BADPARAM   = 00000014            SS$_FILNOTEXP  = 000000B4            SS$_NOLOGNAM   = 000001BC            

SS$_BADSTACK   = 000002B4            SS$_FLTDIV     = 00000494            SS$_NOMBX      = 00000274            

SS$_BEGOFFILE  = 00000938            SS$_FLTOVF     = 0000048C            SS$_NOMOREFILES= 00000930            

SS$_BLOCKCNTERR= 00000940            SS$_FLTUND     = 0000049C            SS$_NONEXDRV   = 000001C4            

SS$_BREAK      = 00000414            SS$_FORMAT     = 000000BC            SS$_NONEXPR    = 000008E8            

SS$_BUFBYTALI  = 0000030C            SS$_GPTFULL    = 000000C4            SS$_NONLOCAL   = 000008F0            

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page   9

SYMBOL TABLE                                                                                                                     (4)



SS$_NOPRIV     = 00000024            USER           = 00000002            

SS$_NORMAL     = 00000001            

SS$_NOSIGNAL   = 00000900            

SS$_NOSOLICIT  = 00000284            

SS$_NOSUCHDEV  = 00000908            

SS$_NOSUCHFILE = 00000910            

SS$_NOSUCHNODE = 0000028C            

SS$_NOSUCHSEC  = 00000978            

SS$_NOTAPEOP   = 00000264            

SS$_NOTFILEDEV = 000001CC            

SS$_NOTINTBLSZ = 000001D4            

SS$_NOTLABELMT = 000001DC            

SS$_NOTMODIFIED= 00000659            

SS$_NOTNETDEV  = 000002EC            

SS$_NOTRAN     = 00000629            

SS$_NOTSQDEV   = 000001E4            

SS$_OPCCUS     = 00000434            

SS$_OPCDEC     = 0000043C            

SS$_OPINCOMPL  = 000002D4            

SS$_PAGOWNVIO  = 000001EC            

SS$_PAGRDERR   = 00000444            

SS$_PARITY     = 000001F4            

SS$_PARTESCAPE = 000001FC            

SS$_PFMBSY     = 00000204            

SS$_PLHLDR     = 00000404            

SS$_PSTFULL    = 0000020C            

SS$_RADRMOD    = 0000044C            

SS$_REJECT     = 00000294            

SS$_REMOTE     = 00000649            

SS$_RESIGNAL   = 00000918            

SS$_RESULTOVF  = 00000214            

SS$_ROPRAND    = 00000454            

SS$_SECTBLFUL  = 0000021C            

SS$_SSFAIL     = 0000045C            

SS$_SUBRNG     = 000004AC            

SS$_SUPERSEDE  = 00000631            

SS$_TAPEPOSLOST= 00000224            

SS$_TBIT       = 00000464            

SS$_TIMEOUT    = 0000022C            

SS$_TOOMANYVER = 00000990            

SS$_TOOMUCHDATA= 0000029C            

SS$_UNASEFC    = 00000234            

SS$_UNSAFE     = 0000023C            

SS$_UNWIND     = 00000920            

SS$_UNWINDING  = 00000928            

SS$_VASFULL    = 00000244            

SS$_VECINUSE   = 0000024C            

SS$_VOLINV     = 00000254            

SS$_WAITUSRLBL = 00000950            

SS$_WASCLR     = 00000001            

SS$_WASECC     = 00000639            

SS$_WASSET     = 00000009            

SS$_WRITLCK    = 0000025C            

SS$_WRONGACP   = 0000031C            

SUBIND         = 00000003            

SYS$FAO          ********   X   03   

TXTIND         = 00000000            

SYSGETMSG       - SYSTEM SERVICE GET MESSAGE                     21-AUG-1978 20:31:47   VAX-11 MACRO X0.3-11               Page  10

PROGRAM SECTION SYNOPSIS                                                                                                         (4)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            00000000      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

YEXEPAGED        000001E8      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

18644. BYTES LEFT IN FREE MEMORY POOL.

2940. BYTES OF RECLAIMED MEMORY.

OBJ$:SYSGETMSG,LIS$:SYSGETMSG/-SP=EXECML$/ML,SRC$:SYSGETMSG

3 MLB DIR RDS - 315 GETS TO DEFINE 10 MACROS. 27 INTER. FILE WRITES. 

