Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-1


				page	,132	;								;an000;bgb
				;*****************************************************************************	;an000;bgb
				;*****************************************************************************	;an000;bgb
				;UTILITY NAME: FORMAT.COM							;an000;bgb
				;										;an000;bgb
				;MODULE NAME: DISPLAY.ASM							;an000;bgb
				;										;an000;bgb
				;										;an000;bgb
				; Designed:  Mark T.	 							;an000;bgb
				;										;an000;bgb
				; Change List: AN000 - New code DOS 3.3 spec additions				;an000;bgb
				;	       AC000 - Changed code DOS 3.3 spec additions			;an000;bgb
				;*****************************************************************************	;an000;bgb
														;an000;bgb
					EXTRN	command_line_buffer:byte					;an000;bgb;an005;bgb
				;*****************************************************************************	;an000;bgb
				; Include Files 								;an000;bgb
				;*****************************************************************************	;an000;bgb
				.list										;an000;bgb
				INCLUDE CHKMSG.INC								;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Macro's                                                                       ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	Define_Msg macro Message_Name                   ;                               ;AN000;
			     C	                                                ;                               ;an000;bgb
			     C	Create_Msg Message_Name,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000;
			     C	                                                ;                               ;an000;bgb
			     C	        endm                                    ;                               ;AN000;
			     C	                                                                                ;an000;bgb
			     C	;-----------------------------------------------------------------------------  ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	Create_Msg macro Parm1,Parm2,Parm3,Parm4,Parm5,Parm6,Parm7,Parm8;               ;AN000;
			     C	                                                                                ;an000;bgb
			     C	Public  Parm1                                                                   ;an000;bgb
			     C	Parm1   label   word                            ;                               ;AN000;
			     C	        dw      Parm2                           ;                               ;AN000;
			     C	        dw      Parm3                           ;                               ;AN000;
			     C	        dw      Parm4                           ;                               ;AN000;
			     C	        dw      Parm5                           ;                               ;AN000;
			     C	        db      Parm6                           ;                               ;AN000;
			     C	        db      Parm7                           ;                               ;AN000;
			     C	        dw      Parm8                           ;                               ;AN000;
			     C	        endm                                    ;                               ;AN000;
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; External data declarations                                                    ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-2


			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	        Extrn   Arg_Buf:Byte                                                    ;an000;bgb
			     C	        Extrn   TChar:Byte                                                      ;an000;bgb
			     C	        Extrn   Cross_Clus:Byte                                                 ;an000;bgb
			     C	        extrn   sernum:word                                                     ;an024;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Public Data                                                                   ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	        Public  Sublist_msg_Idmes                                               ;an000;bgb
			     C	        Public  BadDrvm                                                         ;an000;bgb
			     C	        Public  YES_BYTE                                                        ;an000;bgb
			     C	        Public  NO_BYTE                                                         ;an000;bgb
			     C	        Public  yn_arg                                                          ;an000;bgb
			     C	        Public  orphcnt                                                         ;an000;bgb
			     C	        Public  report_arg                                                      ;an000;bgb
			     C	        Public  rarg1                                                           ;an000;bgb
			     C	        Public  rarg3                                                           ;an000;bgb
			     C	        Public  badrw_str                                                       ;an000;bgb
			     C	        Public  badrw_num                                                       ;an000;bgb
			     C	        Public  block_num                                                       ;an000;bgb
			     C	        Public  fatal_arg1                                                      ;an000;bgb
			     C	        Public  fatal_arg2                                                      ;an000;bgb
			     C	        Public  file_arg1                                                       ;an000;bgb
			     C	        Public  file_arg2                                                       ;an000;bgb
			     C	        Public  free_arg1                                                       ;an000;bgb
			     C	        Public  free_arg2                                                       ;an000;bgb
			     C	        Public  free_arg3                                                       ;an000;bgb
			     C	        Public  Fatal_End                                                       ;an000;bgb
			     C	        Public  MonTab                                                          ;an000;bgb
			     C	        public  fatmsg1                 ;an024;bgb                              ;an000;bgb
			     C	        public  fatmsg2                 ;an024;bgb                              ;an000;bgb
			     C	        extrn   orphsiz:word                                                    ;an049;bgb
			     C	                                                                                ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Message Retriever equates                                                     ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
 = 0043                      C	Format_Msg              equ     'C'                                             ;an000;bgb
			     C	                                                                                ;an000;bgb
 = 0000                      C	N_A                     equ     0                                               ;an000;bgb
 = 0000                      C	None                    equ     0                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 = 0020                      C	Blank                   equ     " "                                             ;an000;bgb
 = 0000                      C	No_Function             equ     0                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-3


			     C	                                                                                ;an000;bgb
 0000                        C	data    segment public para 'data'              ; AN000;                        ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Message Sublist Tables                                                        ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;The  following  control  blocks  are   used   for   messages  with             ;an000;bgb
			     C	;replaceable  paramters.  These  control  blocks  are  used by  the             ;an000;bgb
			     C	;SysDispMsg routine.                                                            ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 0000                        C	Sublist_msg_Orphmes2    label dword             ;                               ;an000;bgb
 0000                        C	Sublist_msg_Orphmes3    label dword             ;                               ;an000;bgb
 0000                        C	Sublist_msg_HidMes      label dword             ;                               ;an000;bgb
 0000                        C	Sublist_msg_DirMes      label dword             ;                               ;an000;bgb
 0000                        C	Sublist_msg_FileMes     label dword             ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0000  0B                    C	        db              Sublist_Length          ;0bh                            ;an000;bgb;an049;bgb
 0001  00                    C	        db              Reserved                ;00h                            ;an000;bgb;an049;bgb
 0002  0450 R                C	        dw              rarg1                   ;offset of value                ;an000;bgb;an049;bgb
 0004  ---- R                C	        dw              dg                      ;segment of value               ;an000;bgb;an049;bgb
 0006  01                    C	        db              1                       ;the first parm                 ;an000;bgb;an049;bgb
 0007  B1                    C	        db              Right_Align+Unsgn_Bin_DWord ;type of data               ;an000;bgb;an049;bgb
 0008  0A                    C	        db              10                      ;max length of data             ;an000;bgb;an049;bgb
 0009  0A                    C	        db              10                      ;min length of data             ;an000;bgb;an049;bgb
 000A  20                    C	        db              Blank                   ;pad character                  ;an000;bgb;an049;bgb
 000B  0B                    C	        db              Sublist_Length          ;0bh                            ;an000;bgb;an049;bgb
 000C  00                    C	        db              Reserved                ;00h                            ;an000;bgb;an049;bgb
 000D  0454 R                C	        dw              rarg3                   ;offset of value                ;an000;bgb;an049;bgb
 000F  ---- R                C	        dw              dg                      ;segment of value               ;an000;bgb;an049;bgb
 0011  02                    C	        db              2                       ;the second parm                ;an000;bgb;an049;bgb
 0012  31                    C	        db              Left_Align+Unsgn_Bin_DWord;type of data                 ;an000;bgb;an049;bgb
 0013  0A                    C	        db              10                      ;max length of data             ;an000;bgb;an049;bgb
 0014  01                    C	        db              1                       ;min length of data             ;an000;bgb;an049;bgb
 0015  20                    C	        db              Blank                   ;pad character                  ;an000;bgb;an049;bgb
			     C	;---------------------------                    ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_dskspc      label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_badspc      label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_frespc      label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_totmem      label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_fremem      label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_Freebymes   label dword             ;                               ;an000;bgb;an049;bgb
 0016                        C	Sublist_msg_alloc       label dword             ;                               ;an000;bgb;an049;bgb
			     C	                                                                                ;an000;bgb;an049;bgb
 0016  0B                    C	        db              Sublist_Length          ;0bh                            ;an000;bgb;an049;bgb
 0017  00                    C	        db              Reserved                ;00h                            ;an000;bgb;an049;bgb
 0018  ---- R                C	        dw              dg:rarg1                ;offset  of data                ;an000;bgb;an049;bgb
 001A  ---- R                C	        dw              dg                      ;segment of data                ;an000;bgb;an049;bgb
 001C  01                    C	        db              1                       ;1st parm                       ;an000;bgb;an049;bgb
 001D  B1                    C	        db              Right_Align+Unsgn_Bin_DWord ;type of data               ;an000;bgb;an049;bgb
 001E  0A                    C	        db              10                      ;max length of data             ;an000;bgb;an049;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-4


 001F  0A                    C	        db              10                      ;min length of data             ;an000;bgb;an049;bgb
 0020  20                    C	        db              Blank                   ;pad character                  ;an000;bgb;an049;bgb
			     C	;---------------------------                    ;                               ;an000;bgb;an049;bgb
 0021                        C	Sublist_msg_Extents     label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0021  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb
 0022  00                    C	        db              Reserved                ;                               ;an000;bgb
 0023  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb
 0025  ---- R                C	        dw              dg                      ;                               ;an000;bgb
 0027  01                    C	        db              1                       ;                               ;an000;bgb
 0028  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb
 0029  40                    C	        db              64                      ;                               ;an000;bgb
 002A  01                    C	        db              1                       ;                               ;an000;bgb
 002B  20                    C	        db              Blank                   ;                               ;an000;bgb
 002C  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb
 002D  00                    C	        db              Reserved                ;                               ;an000;bgb
 002E  ---- R                C	        dw              dg:rarg1                ;                               ;an000;bgb
 0030  ---- R                C	        dw              dg                      ;                               ;an000;bgb
 0032  02                    C	        db              2                       ;                               ;an000;bgb
 0033  21                    C	        db              Left_Align+Unsgn_Bin_Word ;                            ;;an000;bgb
 0034  05                    C	        db              5                       ;                               ;an000;bgb
 0035  01                    C	        db              1                       ;                               ;an000;bgb
 0036  20                    C	        db              Blank                   ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 0037                        C	Sublist_msg_Badr_arg    label   dword           ;                               ;an000;bgb
 0037                        C	Sublist_msg_Badw_arg    label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0037  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb
 0038  00                    C	        db              Reserved                ;                               ;an000;bgb
 0039  ---- R                C	        dw              dg:Badrw_Num            ;                               ;an000;bgb
 003B  ---- R                C	        dw              dg                      ;                               ;an000;bgb
 003D  01                    C	        db              1                       ;                               ;an000;bgb
 003E  21                    C	        db              Left_Align+Unsgn_Bin_Word ;                            ;;an000;bgb
 003F  05                    C	        db              5                       ;                               ;an000;bgb
 0040  01                    C	        db              1                       ;                               ;an000;bgb
 0041  20                    C	        db              Blank                   ;                               ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 0042                        C	Sublist_msg_Badrdmes    label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0042  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 0043  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 0044  ---- R                C	        dw              dg:Fatal_End            ;                               ;an000;bgb;AN000;
 0046  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 0048  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 0049  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 004A  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 004B  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 004C  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	;---------------------------                    ;                               ;an000;bgb
 004D                        C	Sublist_msg_Crossmes    label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 004D  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb
 004E  00                    C	        db              Reserved                ;                               ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-5


 004F  ---- E                C	        dw              dg:Cross_Clus           ;                               ;an000;bgb
 0051  ---- R                C	        dw              dg                      ;                               ;an000;bgb
 0053  01                    C	        db              1                       ;                               ;an000;bgb
 0054  21                    C	        db              Left_Align+Unsgn_Bin_Word  ;                            ;an000;bgb
 0055  05                    C	        db              5                       ;                               ;an000;bgb
 0056  01                    C	        db              1                       ;                               ;an000;bgb
 0057  20                    C	        db              Blank                   ;                               ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 0058                        C	Sublist_msg_BadTarg     label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0058  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb
 0059  00                    C	        db              Reserved                ;                               ;an000;bgb
 005A  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb
 005C  ---- R                C	        dw              dg                      ;                               ;an000;bgb
 005E  01                    C	        db              1                       ;                               ;an000;bgb
 005F  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb
 0060  40                    C	        db              64                      ;                               ;an000;bgb
 0061  01                    C	        db              1                       ;                               ;an000;bgb
 0062  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	;---------------------------                    ;                               ;an000;bgb
 0063                        C	Sublist_msg_IDmes       label   dword           ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
 0063  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 0064  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 0065  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb;AN000;
 0067  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 0069  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 006A  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 006B  0B                    C	        db              11                      ;                               ;an000;bgb;AN000;
 006C  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 006D  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
 006E  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 006F  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 0070  0000                  C	        dw              0                       ;Date will be entered           ;an000;bgb;AN000;
 0072  0000                  C	        dw              0                       ; by PrintID routine            ;an000;bgb;AN000;
 0074  02                    C	        db              2                       ;                               ;an000;bgb;AN000;
 0075  34                    C	        db              Left_Align+Date_MDY_4   ;                               ;an000;bgb;AN000;
 0076  0A                    C	        db              10                      ;                               ;an000;bgb;AN000;
 0077  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 0078  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
 0079  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 007A  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 007B  0000                  C	        dw              0                       ;Time will be entered           ;an000;bgb;AN000;
 007D  0000                  C	        dw              0                       ; by PrintID routine            ;an000;bgb;AN000;
 007F  03                    C	        db              3                       ;                               ;an000;bgb;AN000;
 0080  05                    C	        db              Left_Align+Time_HHMM_Cty;                               ;an000;bgb;AN000;
 0081  06                    C	        db              6                       ;                               ;an000;bgb;AN000;
 0082  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 0083  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 0084                        C	Sublist_Msg_File_Arg    label   dword           ;an000;dms                      ;an000;bgb
			     C	                                                                                ;an000;bgb
 0084  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-6


 0085  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 0086  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb;AN000;
 0088  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 008A  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 008B  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 008C  40                    C	        db              64                      ;                               ;an000;bgb;AN000;
 008D  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 008E  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 008F                        C	Sublist_Msg_Noisy       label   dword           ;an000;dms                      ;an000;bgb
			     C	                                                                                ;an000;bgb
 008F  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 0090  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 0091  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb;AN000;
 0093  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 0095  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 0096  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 0097  40                    C	        db              64                      ;                               ;an000;bgb;AN000;
 0098  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 0099  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 009A                        C	Sublist_Msg_Orphmes     label   dword           ;an000;dms                      ;an000;bgb
			     C	                                                                                ;an000;bgb
 009A  0B                    C	        db              Sublist_Length          ;0bh                            ;an000;bgb;AN000;
 009B  00                    C	        db              Reserved                ;00h                            ;an000;bgb;AN000;
 009C  ---- E                C	        dw              dg:orphsiz              ;offset of data                 ;an000;bgb;AN000;;an
				049;bgb
 009E  ---- R                C	        dw              dg                      ;segment                        ;an000;bgb;AN000;
 00A0  01                    C	        db              1                       ;1st of 2 replaceable parms     ;an000;bgb;AN000;
 00A1  21                    C	        db              Left_Align+Unsgn_Bin_Word ;only 64k clusters            ;an000;bgb  ;AN000;
 00A2  05                    C	        db              05                      ;max length                     ;an000;bgb;AN000;;an
				049;bgb
 00A3  01                    C	        db              1                       ;min length                     ;an000;bgb;AN000;
 00A4  20                    C	        db              Blank                   ;pad                            ;an000;bgb;AN000;
			     C	                                                                                ;an000;bgb
 00A5  0B                    C	        db              Sublist_Length          ;0b                             ;an000;bgb;AN000;
 00A6  00                    C	        db              Reserved                ;00                             ;an000;bgb;AN000;
 00A7  ---- R                C	        dw              dg:orphcnt              ;offset                         ;an000;bgb;AN000;
 00A9  ---- R                C	        dw              dg                      ;seg                            ;an000;bgb;AN000;
 00AB  02                    C	        db              2                       ;2nd replaceable parm           ;an000;bgb;AN000;
 00AC  31                    C	        db              Left_Align+Unsgn_Bin_dword ;double word                 ;an000;bgb;AN000;;an
				049;bgb
 00AD  0A                    C	        db              10                      ;max len                        ;an000;bgb;AN000;;an
				049;bgb
 00AE  01                    C	        db              1                       ;min len                        ;an000;bgb;AN000;
 00AF  20                    C	        db              Blank                   ;pad char                       ;an000;bgb;AN000;
			     C	;---------------------------                    ;                               ;an000;bgb
 00B0                        C	Sublist_Msg_Direcmes    label   dword           ;an000;dms                      ;an000;bgb
			     C	                                                                                ;an000;bgb
 00B0  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 00B1  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 00B2  ---- E                C	        dw              dg:arg_buf              ;                               ;an000;bgb;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-7


 00B4  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 00B6  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 00B7  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb;AN000;
 00B8  40                    C	        db              64                      ;                               ;an000;bgb;AN000;
 00B9  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 00BA  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	                                                                                ;an000;bgb
 00BB                        C	Sublist_Msg_Fatalmes    label   dword           ;an000;dms                      ;an000;bgb
			     C	                                                                                ;an000;bgb
 00BB  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 00BC  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 00BD  ---- R                C	fatmsg1 dw              dg:fatal_arg1           ;                               ;an000;bgb;AN024;bgb
 00BF  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 00C1  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 00C2  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 00C3  40                    C	        db              64                      ;                               ;an000;bgb;AN000;
 00C4  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 00C5  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
 00C6  0B                    C	        db              Sublist_Length          ;                               ;an000;bgb;AN000;
 00C7  00                    C	        db              Reserved                ;                               ;an000;bgb;AN000;
 00C8  ---- R                C	fatmsg2 dw              dg:fatal_arg2           ;                               ;an000;bgb;AN000;
 00CA  ---- R                C	        dw              dg                      ;                               ;an000;bgb;AN000;
 00CC  02                    C	        db              2                       ;number 2 of 2 subs             ;an000;bgb;AN022;bgb
 00CD  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;                          ;an000;bgb  ;AN000;
 00CE  40                    C	        db              64                      ;                               ;an000;bgb;AN000;
 00CF  01                    C	        db              1                       ;                               ;an000;bgb;AN000;
 00D0  20                    C	        db              Blank                   ;                               ;an000;bgb;AN000;
			     C	;---------------------------                    ;                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an000;bgb
 00D1                        C	Sublist_msgSerialNumber label dword             ;                               ;an000;bgb;an024;bgb
 00D1  0B                    C	        db              Sublist_Length          ;0b                             ;an000;bgb;an024;bgb
 00D2  00                    C	        db              Reserved                ;00                             ;an000;bgb;an024;bgb
 00D3  0002 E                C	        dw              offset word ptr sernum+2 ;data field                    ;an000;bgb;an024;bgb
 00D5  ---- R                C	        dw              data                    ;                               ;an000;bgb;an024;bgb
 00D7  01                    C	        db              1                       ;#1 of 2                        ;an000;bgb;an024;bgb
 00D8  A3                    C	        db              Right_Align+Bin_Hex_Word ;format                        ;an000;bgb;an024;bgb
 00D9  04                    C	        db              4                       ;min len                        ;an000;bgb;an024;bgb
 00DA  04                    C	        db              4                       ;max len                        ;an000;bgb;an024;bgb
 00DB  30                    C	        db              '0'                     ;Display leading 0's            ;an000;bgb;an024;bgb
			     C	                                                                                ;an000;bgb;an024;bgb
 00DC  0B                    C	        db              Sublist_Length          ;0b                             ;an000;bgb;an024;bgb
 00DD  00                    C	        db              Reserved                ;00                             ;an000;bgb;an024;bgb
 00DE  0000 E                C	        dw              offset sernum           ;data field                     ;an000;bgb;an024;bgb
 00E0  ---- R                C	        dw              data                    ;                               ;an000;bgb;an024;bgb
 00E2  02                    C	        db              2                       ;#2 of 2                        ;an000;bgb;an024;bgb
 00E3  A3                    C	        db              Right_Align+Bin_hex_Word ;format                        ;an000;bgb;an024;bgb
 00E4  04                    C	        db              4                       ;min len                        ;an000;bgb;an024;bgb
 00E5  04                    C	        db              4                       ;max len                        ;an000;bgb;an024;bgb
 00E6  30                    C	        db              '0'                     ;pad char                       ;an000;bgb;an024;bgb
			     C	                                                                                ;an000;bgb
			     C	;---------------------------                    ;                               ;an046;bgb
 00E7                        C	Sublist_msg_parserr     label   dword           ;                               ;an046;bgb
			     C	                                                                                ;an046;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-8


 00E7  0B                    C	        db              Sublist_Length          ;11                             ;an046;bgb
 00E8  00                    C	        db              Reserved                ;0                              ;an046;bgb
			     C	public movsi
 00E9  ---- E                C	movsi   dw              dg:command_line_buffer  ;off                            ;an046;bgb
 00EB  ---- R                C	        dw              dg                      ;seg                            ;an046;bgb
 00ED  00                    C	        db              0                       ;USE PERCENT ZERO               ;an046;bgb
 00EE  10                    C	        db              Left_Align+Char_Field_ASCIIZ ;type of data              ;an046;bgb
 00EF  80                    C	        db              128                     ;max width                      ;an046;bgb
 00F0  01                    C	        db              1                       ;min width                      ;an046;bgb
 00F1  20                    C	        db              Blank                   ;pad char                       ;an046;bgb
			     C	;---------------------------                    ;                               ;an046;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Message Description Tables                                                    ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;----------------------                         ;                               ;an000;bgb
 = 0001                      C	Message_Number  = 1                             ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 0001                      C	Class           = EXT_ERR_CLASS                 ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badver                     ; AN000;SM Incorrect DOS version;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badver,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badver                                                                   ;an000;bgb 
 00F2                        C2	badver   label   word                            ;                               ;AN000; 
 00F2  0001                  C2	        dw      Message_Number                           ;                               ;AN000; 
 00F4  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 00F6  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 00F8  0000                  C2	        dw      Count                           ;                               ;AN000; 
 00FA  01                    C2	        db      Class                           ;                               ;AN000; 
 00FB  00                    C2	        db      Function                           ;                               ;AN000; 
 00FC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0013                      C	Message_Number  = 19                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = N_A                           ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badidbyt                   ; AN000;SM Probable non_DOS disk;an000;bgb (CRLF) Co
				ntinue (Y/N)?
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badidbyt,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badidbyt                                                                   ;an000;bgb 
 00FE                        C2	badidbyt   label   word                            ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-9


 00FE  0013                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0100  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0102  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0104  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0106  FF                    C2	        db      Class                           ;                               ;AN000; 
 0107  00                    C2	        db      Function                           ;                               ;AN000; 
 0108  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0003                      C	Message_Number  = 3                             ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = N_A                           ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   freemes                    ; AN000;SM Convert lost chains t;an000;bgbo files (Y
				/N)?
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg freemes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  freemes                                                                   ;an000;bgb 
 010A                        C2	freemes   label   word                            ;                               ;AN000; 
 010A  0003                  C2	        dw      Message_Number                           ;                               ;AN000; 
 010C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 010E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0110  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0112  FF                    C2	        db      Class                           ;                               ;AN000; 
 0113  00                    C2	        db      Function                           ;                               ;AN000; 
 0114  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0004                      C	Message_Number  = 4                             ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = N_A                           ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   ptrandir                   ; AN000;SM Unrecoverable error i;an000;bgbn director
				y
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg ptrandir,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  ptrandir                                                                   ;an000;bgb 
 0116                        C2	ptrandir   label   word                            ;                               ;AN000; 
 0116  0004                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0118  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 011A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 011C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 011E  FF                    C2	        db      Class                           ;                               ;AN000; 
 011F  00                    C2	        db      Function                           ;                               ;AN000; 
 0120  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-10


			     C	;----------------------                         ;                               ;an000;bgb
 = 0005                      C	Message_Number  = 5                             ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = N_A                           ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   ptrandir2                  ; AN000;SM Convert directory to ;an000;bgbfile (Y/N)
				?
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg ptrandir2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  ptrandir2                                                                   ;an000;bgb 
 0122                        C2	ptrandir2   label   word                            ;                               ;AN000; 
 0122  0005                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0124  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0126  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0128  0000                  C2	        dw      Count                           ;                               ;AN000; 
 012A  FF                    C2	        db      Class                           ;                               ;AN000; 
 012B  00                    C2	        db      Function                           ;                               ;AN000; 
 012C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0007                      C	Message_Number  = 7                             ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_dskspc         ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   dskspc                     ; AN000;SM %1 bytes total disk s;an000;bgbpace
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg dskspc,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  dskspc                                                                   ;an000;bgb 
 012E                        C2	dskspc   label   word                            ;                               ;AN000; 
 012E  0007                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0130  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0132  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0134  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0136  FF                    C2	        db      Class                           ;                               ;AN000; 
 0137  00                    C2	        db      Function                           ;                               ;AN000; 
 0138  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0008                      C	Message_Number  = 8                             ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_badspc         ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badspc                     ; AN000;SM %1 bytes in bad secto;an000;bgbrs
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-11


			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badspc,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badspc                                                                   ;an000;bgb 
 013A                        C2	badspc   label   word                            ;                               ;AN000; 
 013A  0008                  C2	        dw      Message_Number                           ;                               ;AN000; 
 013C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 013E  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0140  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0142  FF                    C2	        db      Class                           ;                               ;AN000; 
 0143  00                    C2	        db      Function                           ;                               ;AN000; 
 0144  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0009                      C	Message_Number  =  9                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = dg:Sublist_msg_hidmes         ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   hidmes                     ; AN000;SM %1 bytes in %2 hidden;an000;bgb files
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg hidmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  hidmes                                                                   ;an000;bgb 
 0146                        C2	hidmes   label   word                            ;                               ;AN000; 
 0146  0009                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0148  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 014A  0000 R                C2	        dw      Sublist                           ;                               ;AN000; 
 014C  0002                  C2	        dw      Count                           ;                               ;AN000; 
 014E  FF                    C2	        db      Class                           ;                               ;AN000; 
 014F  00                    C2	        db      Function                           ;                               ;AN000; 
 0150  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000A                      C	Message_Number  = 10                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = dg:Sublist_msg_dirmes         ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   dirmes                     ; AN000;SM %1 bytes in %2 direct;an000;bgbories
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg dirmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  dirmes                                                                   ;an000;bgb 
 0152                        C2	dirmes   label   word                            ;                               ;AN000; 
 0152  000A                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0154  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0156  0000 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0158  0002                  C2	        dw      Count                           ;                               ;AN000; 
 015A  FF                    C2	        db      Class                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-12


 015B  00                    C2	        db      Function                           ;                               ;AN000; 
 015C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000B                      C	Message_Number  = 11                            ; message number 11             ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; crt                           ;an000;bgb
 = 0000                      C	Sublist         = dg:Sublist_msg_filemes        ; location of sublist           ;an000;bgb
 = 0002                      C	Count           = 2                             ; caontains 2 parameters        ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; type of msg                   ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; no input from user            ;an000;bgb
 = 0000                      C	Input           = N_A                           ; not applicable              ;an000;bgb
			     C	        Define_Msg   filemes                    ; AN000;SM %1 bytes in %2 user f;an000;bgbiles
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg filemes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  filemes                                                                   ;an000;bgb 
 015E                        C2	filemes   label   word                            ;                               ;AN000; 
 015E  000B                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0160  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0162  0000 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0164  0002                  C2	        dw      Count                           ;                               ;AN000; 
 0166  FF                    C2	        db      Class                           ;                               ;AN000; 
 0167  00                    C2	        db      Function                           ;                               ;AN000; 
 0168  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000C                      C	Message_Number  = 12                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = dg:Sublist_msg_orphmes2       ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   orphmes2                   ; AN000;SM %1 bytes in %2 recove;an000;bgbred files
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg orphmes2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  orphmes2                                                                   ;an000;bgb 
 016A                        C2	orphmes2   label   word                            ;                               ;AN000; 
 016A  000C                  C2	        dw      Message_Number                           ;                               ;AN000; 
 016C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 016E  0000 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0170  0002                  C2	        dw      Count                           ;                               ;AN000; 
 0172  FF                    C2	        db      Class                           ;                               ;AN000; 
 0173  00                    C2	        db      Function                           ;                               ;AN000; 
 0174  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000D                      C	Message_Number  = 13                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = dg:Sublist_msg_orphmes3       ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-13


 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   orphmes3                   ; AN000;SM %1 bytes would be in ;an000;bgb%2 recover
				ed files
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg orphmes3,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  orphmes3                                                                   ;an000;bgb 
 0176                        C2	orphmes3   label   word                            ;                               ;AN000; 
 0176  000D                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0178  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 017A  0000 R                C2	        dw      Sublist                           ;                               ;AN000; 
 017C  0002                  C2	        dw      Count                           ;                               ;AN000; 
 017E  FF                    C2	        db      Class                           ;                               ;AN000; 
 017F  00                    C2	        db      Function                           ;                               ;AN000; 
 0180  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000E                      C	Message_Number  = 14                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_frespc         ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   frespc                     ; AN000;SM %1 bytes available on;an000;bgb disk
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg frespc,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  frespc                                                                   ;an000;bgb 
 0182                        C2	frespc   label   word                            ;                               ;AN000; 
 0182  000E                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0184  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0186  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0188  0001                  C2	        dw      Count                           ;                               ;AN000; 
 018A  FF                    C2	        db      Class                           ;                               ;AN000; 
 018B  00                    C2	        db      Function                           ;                               ;AN000; 
 018C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 000F                      C	Message_Number  = 15                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_totmem         ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   totmem                     ; AN000;SM %1 bytes total memory;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg totmem,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  totmem                                                                   ;an000;bgb 
 018E                        C2	totmem   label   word                            ;                               ;AN000; 
 018E  000F                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0190  0001                  C2	        dw      Handle                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-14


 0192  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0194  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0196  FF                    C2	        db      Class                           ;                               ;AN000; 
 0197  00                    C2	        db      Function                           ;                               ;AN000; 
 0198  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0010                      C	Message_Number  = 16                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_fremem         ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   fremem                     ; AN000;SM %1 bytes free        ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg fremem,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  fremem                                                                   ;an000;bgb 
 019A                        C2	fremem   label   word                            ;                               ;AN000; 
 019A  0010                  C2	        dw      Message_Number                           ;                               ;AN000; 
 019C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 019E  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 01A0  0001                  C2	        dw      Count                           ;                               ;AN000; 
 01A2  FF                    C2	        db      Class                           ;                               ;AN000; 
 01A3  00                    C2	        db      Function                           ;                               ;AN000; 
 01A4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0011                      C	Message_Number  = 17                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   no_net_arg                 ; AN000;SM Cannot CHKDSK a netwo;an000;bgbrk drive
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg no_net_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  no_net_arg                                                                   ;an000;bgb 
 01A6                        C2	no_net_arg   label   word                            ;                               ;AN000; 
 01A6  0011                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01A8  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 01AA  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 01AC  0000                  C2	        dw      Count                           ;                               ;AN000; 
 01AE  FF                    C2	        db      Class                           ;                               ;AN000; 
 01AF  00                    C2	        db      Function                           ;                               ;AN000; 
 01B0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0012                      C	Message_Number  = 18                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-15


 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   SubstErr                   ; AN000;SM Cannot CHKDSK a SUBST;an000;bgbed or ASSI
				GNed drive
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg SubstErr,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  SubstErr                                                                   ;an000;bgb 
 01B2                        C2	SubstErr   label   word                            ;                               ;AN000; 
 01B2  0012                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01B4  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 01B6  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 01B8  0000                  C2	        dw      Count                           ;                               ;AN000; 
 01BA  FF                    C2	        db      Class                           ;                               ;AN000; 
 01BB  00                    C2	        db      Function                           ;                               ;AN000; 
 01BC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0014                      C	Message_Number  = 20                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0037                      C	Sublist         = dg:Sublist_msg_badr_arg       ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badr_arg                   ; AN000;SM Disk error reading FA;an000;bgbT %2
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badr_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badr_arg                                                                   ;an000;bgb 
 01BE                        C2	badr_arg   label   word                            ;                               ;AN000; 
 01BE  0014                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01C0  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 01C2  0037 R                C2	        dw      Sublist                           ;                               ;AN000; 
 01C4  0002                  C2	        dw      Count                           ;                               ;AN000; 
 01C6  FF                    C2	        db      Class                           ;                               ;AN000; 
 01C7  00                    C2	        db      Function                           ;                               ;AN000; 
 01C8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0015                      C	Message_Number  = 21                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 00B0                      C	Sublist         = dg:Sublist_msg_direcmes       ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   direc_arg                  ; AN000;SM Directory %1         ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg direc_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  direc_arg                                                                   ;an000;bgb 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-16


 01CA                        C2	direc_arg   label   word                            ;                               ;AN000; 
 01CA  0015                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01CC  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 01CE  00B0 R                C2	        dw      Sublist                           ;                               ;AN000; 
 01D0  0001                  C2	        dw      Count                           ;                               ;AN000; 
 01D2  FF                    C2	        db      Class                           ;                               ;AN000; 
 01D3  00                    C2	        db      Function                           ;                               ;AN000; 
 01D4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0016                      C	Message_Number  = 22                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0021                      C	Sublist         = dg:Sublist_msg_extents        ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   extent_arg                 ; AN000;SM %1 Contains %2 non-co;an000;bgbntiguous b
				locks
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg extent_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  extent_arg                                                                   ;an000;bgb 
 01D6                        C2	extent_arg   label   word                            ;                               ;AN000; 
 01D6  0016                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01D8  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 01DA  0021 R                C2	        dw      Sublist                           ;                               ;AN000; 
 01DC  0002                  C2	        dw      Count                           ;                               ;AN000; 
 01DE  FF                    C2	        db      Class                           ;                               ;AN000; 
 01DF  00                    C2	        db      Function                           ;                               ;AN000; 
 01E0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0017                      C	Message_Number  = 23                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   noext_arg                  ; AN000;SM All specified file(s);an000;bgb are conti
				guous
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg noext_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  noext_arg                                                                   ;an000;bgb 
 01E2                        C2	noext_arg   label   word                            ;                               ;AN000; 
 01E2  0017                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01E4  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 01E6  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 01E8  0000                  C2	        dw      Count                           ;                               ;AN000; 
 01EA  FF                    C2	        db      Class                           ;                               ;AN000; 
 01EB  00                    C2	        db      Function                           ;                               ;AN000; 
 01EC  0000                  C2	        dw      Input                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-17


			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0018                      C	Message_Number  = 24                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   fixmes_arg                 ; AN000;SM Errors found, F param;an000;bgbeter not s
				pecified (CRLF)
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg fixmes_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  fixmes_arg                                                                   ;an000;bgb 
 01EE                        C2	fixmes_arg   label   word                            ;                               ;AN000; 
 01EE  0018                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01F0  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 01F2  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 01F4  0000                  C2	        dw      Count                           ;                               ;AN000; 
 01F6  FF                    C2	        db      Class                           ;                               ;AN000; 
 01F7  00                    C2	        db      Function                           ;                               ;AN000; 
 01F8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;          Corrections will not ;an000;bgbbe written
				 to disk
 = 0019                      C	Message_Number  = 25                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 00BB                      C	Sublist         = dg:Sublist_msg_fatalmes       ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   fatal_arg                  ; AN000;SM Processing cannot con;an000;bgbtinue %1%2
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg fatal_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  fatal_arg                                                                   ;an000;bgb 
 01FA                        C2	fatal_arg   label   word                            ;                               ;AN000; 
 01FA  0019                  C2	        dw      Message_Number                           ;                               ;AN000; 
 01FC  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 01FE  00BB R                C2	        dw      Sublist                           ;                               ;AN000; 
 0200  0002                  C2	        dw      Count                           ;                               ;AN000; 
 0202  FF                    C2	        db      Class                           ;                               ;AN000; 
 0203  00                    C2	        db      Function                           ;                               ;AN000; 
 0204  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 001A                      C	Message_Number  = 26                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0042                      C	Sublist         = dg:Sublist_msg_badrdmes       ; AN000;SM                      ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-18


 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badrdmes                   ; AN000;SM File allocation table;an000;bgb bad, driv
				e %1
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badrdmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badrdmes                                                                   ;an000;bgb 
 0206                        C2	badrdmes   label   word                            ;                               ;AN000; 
 0206  001A                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0208  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 020A  0042 R                C2	        dw      Sublist                           ;                               ;AN000; 
 020C  0002                  C2	        dw      Count                           ;                               ;AN000; 
 020E  FF                    C2	        db      Class                           ;                               ;AN000; 
 020F  00                    C2	        db      Function                           ;                               ;AN000; 
 0210  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0002                      C	Message_Number  = 2                             ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   stackmes                   ; AN000;SM Insufficient memory  ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg stackmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  stackmes                                                                   ;an000;bgb 
 0212                        C2	stackmes   label   word                            ;                               ;AN000; 
 0212  0002                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0214  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0216  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0218  0000                  C2	        dw      Count                           ;                               ;AN000; 
 021A  FF                    C2	        db      Class                           ;                               ;AN000; 
 021B  00                    C2	        db      Function                           ;                               ;AN000; 
 021C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	        Define_Msg   stackmes1                  ; AN000;SM Cannot make directory;an000;bgb entry %1 
				(CRLF)
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg stackmes1,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  stackmes1                                                                   ;an000;bgb 
 021E                        C2	stackmes1   label   word                            ;                               ;AN000; 
 021E  0002                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0220  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0222  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0224  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0226  FF                    C2	        db      Class                           ;                               ;AN000; 
 0227  00                    C2	        db      Function                           ;                               ;AN000; 
 0228  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;          Move files from root ;an000;bgbdirectory 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-19


				and repeat CHKDSK
 = 001D                      C	Message_Number  = 29                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   cdddmes                    ; AN000;SM CHDIR .. failed, tryi;an000;bgbng alterna
				te method
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg cdddmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  cdddmes                                                                   ;an000;bgb 
 022A                        C2	cdddmes   label   word                            ;                               ;AN000; 
 022A  001D                  C2	        dw      Message_Number                           ;                               ;AN000; 
 022C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 022E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0230  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0232  FF                    C2	        db      Class                           ;                               ;AN000; 
 0233  00                    C2	        db      Function                           ;                               ;AN000; 
 0234  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 001E                      C	Message_Number  = 30                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badchain                   ; AN000;SM Has invalid cluster, ;an000;bgbfile trunc
				ated
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badchain,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badchain                                                                   ;an000;bgb 
 0236                        C2	badchain   label   word                            ;                               ;AN000; 
 0236  001E                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0238  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 023A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 023C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 023E  FF                    C2	        db      Class                           ;                               ;AN000; 
 023F  00                    C2	        db      Function                           ;                               ;AN000; 
 0240  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 001F                      C	Message_Number  = 31                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-20


			     C	        Define_Msg   badsubdir                  ; AN000;SM Invalid sub-directory;an000;bgb entry
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badsubdir,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badsubdir                                                                   ;an000;bgb 
 0242                        C2	badsubdir   label   word                            ;                               ;AN000; 
 0242  001F                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0244  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0246  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0248  0000                  C2	        dw      Count                           ;                               ;AN000; 
 024A  FF                    C2	        db      Class                           ;                               ;AN000; 
 024B  00                    C2	        db      Function                           ;                               ;AN000; 
 024C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0020                      C	Message_Number  = 32                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   ndotmes                    ; AN000;SM Does not exist       ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg ndotmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  ndotmes                                                                   ;an000;bgb 
 024E                        C2	ndotmes   label   word                            ;                               ;AN000; 
 024E  0020                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0250  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0252  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0254  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0256  FF                    C2	        db      Class                           ;                               ;AN000; 
 0257  00                    C2	        db      Function                           ;                               ;AN000; 
 0258  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0021                      C	Message_Number  = 33                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   nulnz                      ; AN000;SM First cluster number ;an000;bgbis invalid
				, entry truncated
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg nulnz,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  nulnz                                                                   ;an000;bgb 
 025A                        C2	nulnz   label   word                            ;                               ;AN000; 
 025A  0021                  C2	        dw      Message_Number                           ;                               ;AN000; 
 025C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 025E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-21


 0260  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0262  FF                    C2	        db      Class                           ;                               ;AN000; 
 0263  00                    C2	        db      Function                           ;                               ;AN000; 
 0264  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0022                      C	Message_Number  = 34                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badclus                    ; AN000;SM Allocation error, siz;an000;bgbe adjusted
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badclus,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badclus                                                                   ;an000;bgb 
 0266                        C2	badclus   label   word                            ;                               ;AN000; 
 0266  0022                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0268  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 026A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 026C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 026E  FF                    C2	        db      Class                           ;                               ;AN000; 
 026F  00                    C2	        db      Function                           ;                               ;AN000; 
 0270  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0023                      C	Message_Number  = 35                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   norecdot                   ; AN000;SM Cannot recover .. ent;an000;bgbry, proces
				sing continued
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg norecdot,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  norecdot                                                                   ;an000;bgb 
 0272                        C2	norecdot   label   word                            ;                               ;AN000; 
 0272  0023                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0274  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0276  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0278  0000                  C2	        dw      Count                           ;                               ;AN000; 
 027A  FF                    C2	        db      Class                           ;                               ;AN000; 
 027B  00                    C2	        db      Function                           ;                               ;AN000; 
 027C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0024                      C	Message_Number  = 36                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-22


 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   nuldmes                    ; AN000;SM Directory is totally ;an000;bgbempty, no 
				.. or ..
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg nuldmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  nuldmes                                                                   ;an000;bgb 
 027E                        C2	nuldmes   label   word                            ;                               ;AN000; 
 027E  0024                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0280  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0282  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0284  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0286  FF                    C2	        db      Class                           ;                               ;AN000; 
 0287  00                    C2	        db      Function                           ;                               ;AN000; 
 0288  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0025                      C	Message_Number  = 37                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   joinmes                    ; AN000;SM Directory is joined  ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg joinmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  joinmes                                                                   ;an000;bgb 
 028A                        C2	joinmes   label   word                            ;                               ;AN000; 
 028A  0025                  C2	        dw      Message_Number                           ;                               ;AN000; 
 028C  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 028E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0290  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0292  FF                    C2	        db      Class                           ;                               ;AN000; 
 0293  00                    C2	        db      Function                           ;                               ;AN000; 
 0294  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0026                      C	Message_Number  = 38                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   norecddot                  ; AN000;SM Cannot recover .. ent;an000;bgbry
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg norecddot,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  norecddot                                                                   ;an000;bgb 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-23


 0296                        C2	norecddot   label   word                            ;                               ;AN000; 
 0296  0026                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0298  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 029A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 029C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 029E  FF                    C2	        db      Class                           ;                               ;AN000; 
 029F  00                    C2	        db      Function                           ;                               ;AN000; 
 02A0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0027                      C	Message_Number  = 39                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   norecddot1                 ; AN000;SM Entry has a bad link ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg norecddot1,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  norecddot1                                                                   ;an000;bgb 
 02A2                        C2	norecddot1   label   word                            ;                               ;AN000; 
 02A2  0027                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02A4  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02A6  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 02A8  0000                  C2	        dw      Count                           ;                               ;AN000; 
 02AA  FF                    C2	        db      Class                           ;                               ;AN000; 
 02AB  00                    C2	        db      Function                           ;                               ;AN000; 
 02AC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0028                      C	Message_Number  = 40                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   norecddot2                 ; AN000;SM Entry has a bad attri;an000;bgbbute
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg norecddot2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  norecddot2                                                                   ;an000;bgb 
 02AE                        C2	norecddot2   label   word                            ;                               ;AN000; 
 02AE  0028                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02B0  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02B2  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 02B4  0000                  C2	        dw      Count                           ;                               ;AN000; 
 02B6  FF                    C2	        db      Class                           ;                               ;AN000; 
 02B7  00                    C2	        db      Function                           ;                               ;AN000; 
 02B8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-24


 = 0029                      C	Message_Number  = 41                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   norecddot3                 ; AN000;SM Entry has a bad size ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg norecddot3,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  norecddot3                                                                   ;an000;bgb 
 02BA                        C2	norecddot3   label   word                            ;                               ;AN000; 
 02BA  0029                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02BC  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02BE  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 02C0  0000                  C2	        dw      Count                           ;                               ;AN000; 
 02C2  FF                    C2	        db      Class                           ;                               ;AN000; 
 02C3  00                    C2	        db      Function                           ;                               ;AN000; 
 02C4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 002A                      C	Message_Number  = 42                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 004D                      C	Sublist         = dg:Sublist_msg_crossmes       ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   cross_arg                  ; AN000;SM Is cross linked on cl;an000;bgbuster %2
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg cross_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  cross_arg                                                                   ;an000;bgb 
 02C6                        C2	cross_arg   label   word                            ;                               ;AN000; 
 02C6  002A                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02C8  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02CA  004D R                C2	        dw      Sublist                           ;                               ;AN000; 
 02CC  0001                  C2	        dw      Count                           ;                               ;AN000; 
 02CE  FF                    C2	        db      Class                           ;                               ;AN000; 
 02CF  00                    C2	        db      Function                           ;                               ;AN000; 
 02D0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 002B                      C	Message_Number  = 43                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0058                      C	Sublist         = dg:Sublist_msg_badtarg        ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badtarg_ptr                ; AN000;SM Cannot CHDIR to %1, (;an000;bgbCRLF)
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badtarg_ptr,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-25


			     C2	                                                                                ;an000;bgb 
			     C2	Public  badtarg_ptr                                                                   ;an000;bgb 
 02D2                        C2	badtarg_ptr   label   word                            ;                               ;AN000; 
 02D2  002B                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02D4  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02D6  0058 R                C2	        dw      Sublist                           ;                               ;AN000; 
 02D8  0001                  C2	        dw      Count                           ;                               ;AN000; 
 02DA  FF                    C2	        db      Class                           ;                               ;AN000; 
 02DB  00                    C2	        db      Function                           ;                               ;AN000; 
 02DC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;          tree past this point ;an000;bgbnot proces
				sed
 = 002C                      C	Message_Number  = 44                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badtarg2                   ; AN000;SM tree past this point ;an000;bgbnot proces
				sed
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badtarg2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badtarg2                                                                   ;an000;bgb 
 02DE                        C2	badtarg2   label   word                            ;                               ;AN000; 
 02DE  002C                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02E0  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02E2  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 02E4  0000                  C2	        dw      Count                           ;                               ;AN000; 
 02E6  FF                    C2	        db      Class                           ;                               ;AN000; 
 02E7  00                    C2	        db      Function                           ;                               ;AN000; 
 02E8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 002D                      C	Message_Number  = 45                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_freebymes      ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   freeBymes1                 ; AN000;SM %1 bytes disk space f;an000;bgbreed
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg freeBymes1,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  freeBymes1                                                                   ;an000;bgb 
 02EA                        C2	freeBymes1   label   word                            ;                               ;AN000; 
 02EA  002D                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02EC  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02EE  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 02F0  0001                  C2	        dw      Count                           ;                               ;AN000; 
 02F2  FF                    C2	        db      Class                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-26


 02F3  00                    C2	        db      Function                           ;                               ;AN000; 
 02F4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 002E                      C	Message_Number  = 46                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_freebymes      ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   freebymes2                 ; AN000;SM %1 bytes disk space w;an000;bgbould be fr
				eed
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg freebymes2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  freebymes2                                                                   ;an000;bgb 
 02F6                        C2	freebymes2   label   word                            ;                               ;AN000; 
 02F6  002E                  C2	        dw      Message_Number                           ;                               ;AN000; 
 02F8  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 02FA  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 02FC  0001                  C2	        dw      Count                           ;                               ;AN000; 
 02FE  FF                    C2	        db      Class                           ;                               ;AN000; 
 02FF  00                    C2	        db      Function                           ;                               ;AN000; 
 0300  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 002F                      C	Message_Number  = 47                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0063                      C	Sublist         = dg:Sublist_msg_idmes          ; AN000;SM                      ;an000;bgb
 = 0003                      C	Count           = 3                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   idmes_arg                  ; AN000;SM Volume %1 created %2 ;an000;bgb%3
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg idmes_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  idmes_arg                                                                   ;an000;bgb 
 0302                        C2	idmes_arg   label   word                            ;                               ;AN000; 
 0302  002F                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0304  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0306  0063 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0308  0003                  C2	        dw      Count                           ;                               ;AN000; 
 030A  FF                    C2	        db      Class                           ;                               ;AN000; 
 030B  00                    C2	        db      Function                           ;                               ;AN000; 
 030C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0030                      C	Message_Number  = 48                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_alloc          ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-27


 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   idmes1                     ; AN017;bgb %1 total allocation ;an000;bgbunits on d
				isk
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg idmes1,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  idmes1                                                                   ;an000;bgb 
 030E                        C2	idmes1   label   word                            ;                               ;AN000; 
 030E  0030                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0310  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0312  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0314  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0316  FF                    C2	        db      Class                           ;                               ;AN000; 
 0317  00                    C2	        db      Function                           ;                               ;AN000; 
 0318  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0031                      C	Message_Number  = 49                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_alloc          ; AN000;SM                      ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   idmes2                     ; AN000;SM %1 bytes in each allo;an000;bgbcation uni
				t
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg idmes2,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  idmes2                                                                   ;an000;bgb 
 031A                        C2	idmes2   label   word                            ;                               ;AN000; 
 031A  0031                  C2	        dw      Message_Number                           ;                               ;AN000; 
 031C  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 031E  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0320  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0322  FF                    C2	        db      Class                           ;                               ;AN000; 
 0323  00                    C2	        db      Function                           ;                               ;AN000; 
 0324  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
			     C	;----------------------                         ;                               ;an000;bgb
 = 0033                      C	Message_Number  = 51                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   Inv_XA_Msg                 ; AN000;SM Extended Attributes h;an000;bgbas invalid
				 clusters,
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg Inv_XA_Msg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-28


			     C2	Public  Inv_XA_Msg                                                                   ;an000;bgb 
 0326                        C2	Inv_XA_Msg   label   word                            ;                               ;AN000; 
 0326  0033                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0328  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 032A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 032C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 032E  FF                    C2	        db      Class                           ;                               ;AN000; 
 032F  00                    C2	        db      Function                           ;                               ;AN000; 
 0330  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;          attributes truncated ;an000;bgb
 = 0034                      C	Message_Number  = 52                            ; AN000;SM                      ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   Alloc_XA_Msg               ; AN000;SM Extended Attributes l;an000;bgbocation ..
				 ,
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg Alloc_XA_Msg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  Alloc_XA_Msg                                                                   ;an000;bgb 
 0332                        C2	Alloc_XA_Msg   label   word                            ;                               ;AN000; 
 0332  0034                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0334  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0336  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0338  0000                  C2	        dw      Count                           ;                               ;AN000; 
 033A  FF                    C2	        db      Class                           ;                               ;AN000; 
 033B  00                    C2	        db      Function                           ;                               ;AN000; 
 033C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;          attributes truncated ;an000;bgb
 = 0035                      C	Message_Number  = 53                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 00E7                      C	Sublist         = dg:sublist_msg_parserr        ; AN000;SM                      ;an046;bgb;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;SM                      ;an046;bgb;an000;bgb
 = 0002                      C	Class           = PARSE_ERR_CLASS               ; AN000;SM                      ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   badsw_arg                  ; AN000;SM Invalid parameter    ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badsw_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badsw_arg                                                                   ;an000;bgb 
 033E                        C2	badsw_arg   label   word                            ;                               ;AN000; 
 033E  0035                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0340  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0342  00E7 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0344  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0346  02                    C2	        db      Class                           ;                               ;AN000; 
 0347  00                    C2	        db      Function                           ;                               ;AN000; 
 0348  0000                  C2	        dw      Input                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-29


			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0036                      C	Message_Number  = 54                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN000;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   baddrv_arg                 ; AN000;SM Invalid drive specifi;an000;bgbcation
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg baddrv_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  baddrv_arg                                                                   ;an000;bgb 
 034A                        C2	baddrv_arg   label   word                            ;                               ;AN000; 
 034A  0036                  C2	        dw      Message_Number                           ;                               ;AN000; 
 034C  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 034E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0350  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0352  FF                    C2	        db      Class                           ;                               ;AN000; 
 0353  00                    C2	        db      Function                           ;                               ;AN000; 
 0354  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0037                      C	Message_Number  = 55                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN017;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   invpath_arg                ; AN000;SM Path not found       ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg invpath_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  invpath_arg                                                                   ;an000;bgb 
 0356                        C2	invpath_arg   label   word                            ;                               ;AN000; 
 0356  0037                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0358  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 035A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 035C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 035E  FF                    C2	        db      Class                           ;                               ;AN000; 
 035F  00                    C2	        db      Function                           ;                               ;AN000; 
 0360  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0038                      C	Message_Number  = 56                            ; AN000;SM                      ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;SM                      ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN000;SM                      ;an000;bgb
 = 0000                      C	Count           = None                          ; AN000;SM                      ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN017;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;SM                      ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;SM                      ;an000;bgb
			     C	        Define_Msg   opnerr_arg                 ; AN000;SM File not found       ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-30


			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg opnerr_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  opnerr_arg                                                                   ;an000;bgb 
 0362                        C2	opnerr_arg   label   word                            ;                               ;AN000; 
 0362  0038                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0364  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0366  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0368  0000                  C2	        dw      Count                           ;                               ;AN000; 
 036A  FF                    C2	        db      Class                           ;                               ;AN000; 
 036B  00                    C2	        db      Function                           ;                               ;AN000; 
 036C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0000                      C	Message_Number  = 0                             ;                               ;an000;bgb;AN000;
 = 0002                      C	Handle          = STDERR                        ;                               ;an000;bgb;AN000;
 = 0000                      C	Sublist         = No_Replace                    ;                               ;AN;an000;bgb000;
 = 0000                      C	Count           = N_A                           ;                               ;an000;bgb;AN000;
 = 0001                      C	Class           = Ext_Err_Class                 ;                               ;an000;bgb;AN000;
 = 0000                      C	Function        = No_Function                   ;                               ;an000;bgb;AN000;
 = 0000                      C	Input           = N_A                           ;                               ;an000;bgb;AN000;
			     C	        Define_Msg      Extended_Error_Msg      ;                               ;an000;bgb;AN000;
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg Extended_Error_Msg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  Extended_Error_Msg                                                                   ;an000;
				bgb 
 036E                        C2	Extended_Error_Msg   label   word                            ;                               ;AN000;
				 
 036E  0000                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0370  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0372  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0374  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0376  01                    C2	        db      Class                           ;                               ;AN000; 
 0377  00                    C2	        db      Function                           ;                               ;AN000; 
 0378  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;-----------------------                                                        ;an000;bgb
 = 0000                      C	Message_Number  = 0                             ;                               ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ;                               ;an000;bgb;AN000;
 = 00E7                      C	Sublist         = dg:sublist_msg_parserr        ;                               ;an046;bgbbgb000;
 = 0001                      C	Count           = 1                             ;                               ;an046;bgb;AN000;
 = 0002                      C	Class           = Parse_Err_Class               ;                               ;an000;bgb;AN000;
 = 0000                      C	Function        = No_Function                   ;                               ;an000;bgb;AN000;
 = 0000                      C	Input           = N_A                           ;                               ;an000;bgb;AN000;
			     C	        Define_Msg      Parse_Error_Msg         ;                               ;an000;bgb;AN000;
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg Parse_Error_Msg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  Parse_Error_Msg                                                                   ;an000;bgb
				 
 037A                        C2	Parse_Error_Msg   label   word                            ;                               ;AN000; 
 037A  0000                  C2	        dw      Message_Number                           ;                               ;AN000; 
 037C  0002                  C2	        dw      Handle                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-31


 037E  00E7 R                C2	        dw      Sublist                           ;                               ;AN000; 
 0380  0001                  C2	        dw      Count                           ;                               ;AN000; 
 0382  02                    C2	        db      Class                           ;                               ;AN000; 
 0383  00                    C2	        db      Function                           ;                               ;AN000; 
 0384  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;-----------------------                                                        ;an000;bgb
 = 003A                      C	Message_Number  = 58                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
 = 009A                      C	Sublist         = dg:Sublist_msg_orphmes           ; AN000;dms                  ;an000;bgb
 = 0002                      C	Count           = 2                             ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   orph_arg                   ; AN000;dms "%1 lost clusters fo;an000;bgbund in %2 
				chains.",0
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg orph_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  orph_arg                                                                   ;an000;bgb 
 0386                        C2	orph_arg   label   word                            ;                               ;AN000; 
 0386  003A                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0388  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 038A  009A R                C2	        dw      Sublist                           ;                               ;AN000; 
 038C  0002                  C2	        dw      Count                           ;                               ;AN000; 
 038E  FF                    C2	        db      Class                           ;                               ;AN000; 
 038F  00                    C2	        db      Function                           ;                               ;AN000; 
 0390  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 003B                      C	Message_Number  = 59                            ; AN000;dms                     ;an000;bgb
 = 0001                      C	Handle          = STDout                        ; AN000;bgb                     ;an000;bgb
 = 0000                      C	Sublist         = none                          ; AN000;dms                     ;an000;bgb
 = 0000                      C	Count           = none                          ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   crlf_arg                   ; AN000;dms CR,LF               ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg crlf_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  crlf_arg                                                                   ;an000;bgb 
 0392                        C2	crlf_arg   label   word                            ;                               ;AN000; 
 0392  003B                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0394  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 0396  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0398  0000                  C2	        dw      Count                           ;                               ;AN000; 
 039A  FF                    C2	        db      Class                           ;                               ;AN000; 
 039B  00                    C2	        db      Function                           ;                               ;AN000; 
 039C  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 003C                      C	Message_Number  = 60                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-32


 = 0000                      C	Sublist         = none                          ; AN000;dms                     ;an000;bgb
 = 0000                      C	Count           = none                          ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   badcd_arg                  ; AN000;dms "Cannot CHDIR to roo;an000;bgbt",cr,lf
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badcd_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badcd_arg                                                                   ;an000;bgb 
 039E                        C2	badcd_arg   label   word                            ;                               ;AN000; 
 039E  003C                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03A0  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 03A2  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 03A4  0000                  C2	        dw      Count                           ;                               ;AN000; 
 03A6  FF                    C2	        db      Class                           ;                               ;AN000; 
 03A7  00                    C2	        db      Function                           ;                               ;AN000; 
 03A8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 003D                      C	Message_Number  = 61                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
 = 0037                      C	Sublist         = dg:Sublist_Msg_Badw_arg          ; AN000;dms                  ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   badw_arg                   ; AN000;dms "Disk error writing ;an000;bgbFAT %1"
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg badw_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  badw_arg                                                                   ;an000;bgb 
 03AA                        C2	badw_arg   label   word                            ;                               ;AN000; 
 03AA  003D                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03AC  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 03AE  0037 R                C2	        dw      Sublist                           ;                               ;AN000; 
 03B0  0001                  C2	        dw      Count                           ;                               ;AN000; 
 03B2  FF                    C2	        db      Class                           ;                               ;AN000; 
 03B3  00                    C2	        db      Function                           ;                               ;AN000; 
 03B4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 003E                      C	Message_Number  = 62                            ; AN000;dms                     ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN000;dms                     ;an042;bgb;an000;bgb
 = 008F                      C	Sublist         = dg:Sublist_Msg_Noisy             ; AN000;dms                  ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   noisy_arg                  ; AN000;dms "       %1"         ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg noisy_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  noisy_arg                                                                   ;an000;bgb 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-33


 03B6                        C2	noisy_arg   label   word                            ;                               ;AN000; 
 03B6  003E                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03B8  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 03BA  008F R                C2	        dw      Sublist                           ;                               ;AN000; 
 03BC  0001                  C2	        dw      Count                           ;                               ;AN000; 
 03BE  FF                    C2	        db      Class                           ;                               ;AN000; 
 03BF  00                    C2	        db      Function                           ;                               ;AN000; 
 03C0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 003F                      C	Message_Number  = 63                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
 = 0000                      C	Sublist         = none                          ; AN000;dms                     ;an000;bgb
 = 0000                      C	Count           = none                          ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   baddpbdir                  ; AN000;dms "Invalid current dir;an000;bgbectory"
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg baddpbdir,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  baddpbdir                                                                   ;an000;bgb 
 03C2                        C2	baddpbdir   label   word                            ;                               ;AN000; 
 03C2  003F                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03C4  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 03C6  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 03C8  0000                  C2	        dw      Count                           ;                               ;AN000; 
 03CA  FF                    C2	        db      Class                           ;                               ;AN000; 
 03CB  00                    C2	        db      Function                           ;                               ;AN000; 
 03CC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0040                      C	Message_Number  = 64                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
 = 0084                      C	Sublist         = dg:Sublist_Msg_File_Arg          ; AN000;dms                  ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   file_arg                   ; AN000;dms "%1",cr,lf          ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg file_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  file_arg                                                                   ;an000;bgb 
 03CE                        C2	file_arg   label   word                            ;                               ;AN000; 
 03CE  0040                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03D0  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 03D2  0084 R                C2	        dw      Sublist                           ;                               ;AN000; 
 03D4  0001                  C2	        dw      Count                           ;                               ;AN000; 
 03D6  FF                    C2	        db      Class                           ;                               ;AN000; 
 03D7  00                    C2	        db      Function                           ;                               ;AN000; 
 03D8  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-34


 = 0041                      C	Message_Number  = 65                            ; AN000;dms                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN000;dms                     ;an000;bgb
 = 0000                      C	Sublist         = none                          ; AN000;dms                     ;an000;bgb
 = 0000                      C	Count           = none                          ; AN000;dms                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN000;dms                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN000;dms                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN000;dms                     ;an000;bgb
			     C	        Define_Msg   creatmes                   ; AN000;dms "Insufficient room i;an000;bgbn root dir
				ectory"
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg creatmes,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  creatmes                                                                   ;an000;bgb 
 03DA                        C2	creatmes   label   word                            ;                               ;AN000; 
 03DA  0041                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03DC  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 03DE  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 03E0  0000                  C2	        dw      Count                           ;                               ;AN000; 
 03E2  FF                    C2	        db      Class                           ;                               ;AN000; 
 03E3  00                    C2	        db      Function                           ;                               ;AN000; 
 03E4  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0046                      C	Message_Number  = 70                            ; AN017;bgb                     ;an000;bgb
 = 0001                      C	Handle          = STDOUT                        ; AN017;bgb                     ;an000;bgb
 = 0016                      C	Sublist         = dg:Sublist_msg_alloc          ; AN017;bgb                     ;an000;bgb
 = 0001                      C	Count           = 1                             ; AN017;bgb                     ;an000;bgb
 = 00FF                      C	Class           = UTILITY_MSG_CLASS             ; AN017;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN017;bgb                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN017;bgb                     ;an000;bgb
			     C	        Define_Msg   idmes3                     ; AN017;bgb %1 allocation units ;an000;bgbavailable 
				on disk
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg idmes3,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  idmes3                                                                   ;an000;bgb 
 03E6                        C2	idmes3   label   word                            ;                               ;AN000; 
 03E6  0046                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03E8  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 03EA  0016 R                C2	        dw      Sublist                           ;                               ;AN000; 
 03EC  0001                  C2	        dw      Count                           ;                               ;AN000; 
 03EE  FF                    C2	        db      Class                           ;                               ;AN000; 
 03EF  00                    C2	        db      Function                           ;                               ;AN000; 
 03F0  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0047                      C	Message_Number  = 71                            ;                               ;an000;bgb;an024;bgb
 = 0001                      C	Handle          = STDOUT                        ;                               ;an000;bgb;an024;bgb
 = 00D1                      C	Sublist         = Sublist_msgSerialNumber       ;                               ;an000;bgb;an024;bgb
 = 0002                      C	Count           = 2                             ;                               ;an000;bgb;an024;bgb
 = 00FF                      C	Class           = Utility_Msg_Class             ;                               ;an000;bgb;an024;bgb
 = 0000                      C	Function        = No_Function                   ;                               ;an000;bgb;an024;bgb
 = 0000                      C	Input           = N_A                           ;                               ;an000;bgb;an024;bgb
			     C	        Define_Msg      msgSerialNumber         ;                               ;an000;bgb;an024;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-35


			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg msgSerialNumber,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  msgSerialNumber                                                                   ;an000;bgb
				 
 03F2                        C2	msgSerialNumber   label   word                            ;                               ;AN000; 
 03F2  0047                  C2	        dw      Message_Number                           ;                               ;AN000; 
 03F4  0001                  C2	        dw      Handle                           ;                               ;AN000; 
 03F6  00D1 R                C2	        dw      Sublist                           ;                               ;AN000; 
 03F8  0002                  C2	        dw      Count                           ;                               ;AN000; 
 03FA  FF                    C2	        db      Class                           ;                               ;AN000; 
 03FB  00                    C2	        db      Function                           ;                               ;AN000; 
 03FC  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0048                      C	Message_Number  = 72                            ; AN030;bgb                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN030;bgb                     ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN030;bgb                     ;an000;bgb
 = 0000                      C	Count           = None                          ; AN030;bgb                     ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN030;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN030;bgb                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN030;bgb                     ;an000;bgb
			     C	        Define_Msg   no_mem_arg                 ; AN030;bgb insufficient memory ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg no_mem_arg,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  no_mem_arg                                                                   ;an000;bgb 
 03FE                        C2	no_mem_arg   label   word                            ;                               ;AN000; 
 03FE  0048                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0400  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 0402  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0404  0000                  C2	        dw      Count                           ;                               ;AN000; 
 0406  FF                    C2	        db      Class                           ;                               ;AN000; 
 0407  00                    C2	        db      Function                           ;                               ;AN000; 
 0408  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 0049                      C	Message_Number  = 73                            ; AN033;bgb                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN033;bgb                     ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN033;bgb                     ;an000;bgb
 = 0000                      C	Count           = None                          ; AN033;bgb                     ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN033;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN033;bgb                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN033;bgb                     ;an000;bgb
			     C	        Define_Msg   inval_media                ; AN033;bgb invalid media type  ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg inval_media,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  inval_media                                                                   ;an000;bgb 
 040A                        C2	inval_media   label   word                            ;                               ;AN000; 
 040A  0049                  C2	        dw      Message_Number                           ;                               ;AN000; 
 040C  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 040E  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 0410  0000                  C2	        dw      Count                           ;                               ;AN000; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-36


 0412  FF                    C2	        db      Class                           ;                               ;AN000; 
 0413  00                    C2	        db      Function                           ;                               ;AN000; 
 0414  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	;----------------------                         ;                               ;an000;bgb
 = 004A                      C	Message_Number  = 74                            ; AN045;bgb                     ;an000;bgb
 = 0002                      C	Handle          = STDERR                        ; AN045;bgb                     ;an000;bgb
 = 0000                      C	Sublist         = None                          ; AN045;bgb                     ;an000;bgb
 = 0000                      C	Count           = None                          ; AN045;bgb                     ;an000;bgb
 = 00FF                      C	Class           = utility_msg_class             ; AN045;bgb                     ;an000;bgb
 = 0000                      C	Function        = NO_INPUT                      ; AN045;bgb                     ;an000;bgb
 = 0000                      C	Input           = N_A                           ; AN045;bgb                     ;an000;bgb
			     C	        Define_Msg   write_fault                ; AN045;bgb write fault error   ;an000;bgb
			     C1	                                                ;                               ;an000;bgb 
			     C1	Create_Msg write_fault,Message_Number,Handle,Sublist,Count,Class,Function,Input;AN000; 
			     C2	                                                                                ;an000;bgb 
			     C2	Public  write_fault                                                                   ;an000;bgb 
 0416                        C2	write_fault   label   word                            ;                               ;AN000; 
 0416  004A                  C2	        dw      Message_Number                           ;                               ;AN000; 
 0418  0002                  C2	        dw      Handle                           ;                               ;AN000; 
 041A  0000                  C2	        dw      Sublist                           ;                               ;AN000; 
 041C  0000                  C2	        dw      Count                           ;                               ;AN000; 
 041E  FF                    C2	        db      Class                           ;                               ;AN000; 
 041F  00                    C2	        db      Function                           ;                               ;AN000; 
 0420  0000                  C2	        dw      Input                           ;                               ;AN000; 
			     C1	                                                ;                               ;an000;bgb 
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	; Message Data Area                                                             ;an000;bgb
			     C	;*****************************************************************************  ;an000;bgb
			     C	;                                                                               ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	; THE FOLLOWING ONE BYTE CHARACTERS ARE THE PROMPT ANSWERS.                     ;an000;bgb
			     C	; THEY MUST BE LOWER CASE, AND THE UPPER TO LOWER, OR LOWER                     ;an000;bgb
			     C	; TO LOWER CONVERSION MUST BE DOABLE BY "OR  AL,20h".                           ;an000;bgb
			     C	; Yes/No Answers                                                                ;an000;bgb
 0422  79                    C	YES_BYTE        DB      "y"                                                     ;an000;bgb
 0423  6E                    C	NO_BYTE         DB      "n"                                                     ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	;The following table is the list of abbreviated month names used to print       ;an000;bgb
			     C	;  out the volume ID.                                                           ;an000;bgb
			     C	; MUST BE THREE BYTES PER MONTH                                                 ;an000;bgb
 0424  4A 61 6E 46 65 62     C	MONTAB          DB      "JanFebMarAprMayJunJulAugSepOctNovDec"                  ;an000;bgb
       4D 61 72 41 70 72     C	
       4D 61 79 4A 75 6E     C	
       4A 75 6C 41 75 67     C	
       53 65 70 4F 63 74     C	
       4E 6F 76 44 65 63     C	
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
 0448  0000                  C	yn_arg      dw      ?                                                           ;an000;bgb
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-37


			     C	                                                                                ;an000;bgb
			     C	;orph_num    dw      ?  ;from orphsiz; = number of lost clusters                 ;an000;bgb;an049;bg
				b
 044A  00000000              C	orphcnt     dd      ?  ;number of chains of lost clusters                       ;an000;bgb
			     C	                                                                                ;an000;bgb
 044E  0000                  C	report_arg  dw      ?                                                           ;an000;bgb
 0450  00000000              C	rarg1       dd      ? ;changed to dword                                         ;an000;bgb;an049;bgb
 0454  00000000              C	rarg3       dd      ? ;changed to dword                                         ;an000;bgb;an049;bgb
			     C	                                                                                ;an000;bgb
 0458  20 41 2E 00           C	baddrvm     DB      " A.",0                                                     ;an000;bgb
 045C  0000                  C	badrw_str   dw      ?                                                           ;an000;bgb
 045E  0000                  C	badrw_num   dw      ?                                                           ;an000;bgb
 0460  0000                  C	block_num   dw      ?                                                           ;an000;bgb
 0462  0000                  C	fatal_arg1  dw      ?                                                           ;an000;bgb
 0464  0000                  C	fatal_arg2  dw      ?                                                           ;an000;bgb
 0466  0000                  C	file_arg1   dw      ?                                                           ;an000;bgb
 0468  0000                  C	file_arg2   dw      ?                                                           ;an000;bgb
 046A  0000                  C	free_arg1   dw      ?                                                           ;an000;bgb
 046C  0000                  C	free_arg2   dw      ?                                                           ;an000;bgb
 046E  0000                  C	free_arg3   dw      ?                                                           ;an000;bgb
 0470  2E 00                 C	fatal_end   db     ".",0                                                        ;an000;bgb
			     C	                                                                                ;an000;bgb
			     C	                                                                                ;an000;bgb
 0472                        C	data ends                                       ; AN000;                        ;an000;bgb
				.list										;an000;bgb
				      ; 									;an000;bgb
 0000				cstack	 segment para stack 'STACK'                                             ;an000;bgb
 0000  003E[				db	62 dup ("-Stack!-")      ; (362-80h) is the additional IBM ROM  ;an000;bgb
	   2D 53 74 61 63	
	   6B 21 2D		
			 ]	
				
 01F0				cstack	 ends									;an000;bgb
														;an000;bgb
														;an000;bgb
				;*****************************************************************************	;an000;bgb
				; Message Services								;an000;bgb
				;*****************************************************************************	;an000;bgb
				MSG_UTILNAME  <CHKDSK>								;an000;bgb
			     1					       ; 
			     1	   INCLUDE CHKDSK.CTL	       ;  Include the control file for the utility 
 = 0004                      C1	$M_NUM_CLS  EQU 4
 = FFFF                      1	   $M_STRUC = TRUE		       ; 
			     1	   INCLUDE MSGSERV.ASM		       ;  Get structure definitions 
			     C1	; * * * * * * * * * * * * START OF SPECIFICATIONS * * * * * * * * * * * * * * *
			     C1	;
			     C1	; MODULE NAME: MSGSERV.SAL
			     C1	;
			     C1	; DESCRIPTIVE NAME: Message Services SALUT file
			     C1	;
			     C1	; FUNCTION: This module incorporates all the messages services and
			     C1	;	    is called upon at build time to INCLUDE the code requested
			     C1	;	    by a utility. Code is requested using the macro MSG_SERVICES.
			     C1	;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-38
DOS - Message Retriever - SYSTEM CONTROL file               

			     C1	; ENTRY POINT: Since this a collection of subroutines, entry point is at
			     C1	;	    requested procedure.
			     C1	;
			     C1	; INPUT: Since this a collection of subroutines, input is dependent on function
			     C1	;	    requested.
			     C1	;
			     C1	; EXIT-NORMAL: In all cases, CARRY FLAG = 0
			     C1	;
			     C1	; EXIT-ERROR: In all cases, CARRY FLAG = 1
			     C1	;
			     C1	; INTERNAL REFERENCES: (list of included subroutines)
			     C1	;
			     C1	;	- SYSLOADMSG
			     C1	;	- SYSDISPMSG
			     C1	;	- SYSGETMSG
			     C1	;
			     C1	;
			     C1	; EXTERNAL REFERENCES: None
			     C1	;
			     C1	; NOTES: At build time, some modules must be included. These are only included
			     C1	;	 once using assembler switches. Other logic is included at the request
			     C1	;	 of the utility.
			     C1	;
			     C1	;	 COMR and COMT are assembler switches to conditionally assemble code
			     C1	;	 for RESIDENT COMMAND.COM and TRANSIENT COMMAND.COM to reduce resident
			     C1	;	 storage and multiple EQUates.
			     C1	;
			     C1	; REVISION HISTORY: Created MAY 1987
			     C1	;
			     C1	;     Label: DOS - - Message Retriever
			     C1	;	     (c) Copyright 1988 Microsoft
			     C1	;
			     C1	;
			     C1	; * * * * * * * * * * * * END OF SPECIFICATIONS * * * * * * * * * * * * * * * *
			     C1	; Page 
			     C1	
			     C1	;   $SALUT	     $M  (2,5,22,62)			     ;;AN000;; Set SALUT formatting
			     C1	
			     C1	IF  $M_STRUC						     ;;AN000;; IF we haven't included the st
				ructures yet THEN
 = 0000                      C1	    $M_STRUC	     =	FALSE				     ;;AN000;;	 Let the assembler know that
				 we have
			     C1								     ;;AN000;;	   and include them
			     C1	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-39
DOS - Message Retriever - SYSTEM CONTROL file               

			     C1	    PAGE
			     C1	    SUBTTL	     DOS - Message Retriever - MSGSTR.INC Module
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;; STRUCTURE: $M_SUBLIST_STRUC
			     C1	;;
			     C1	;; Replacable parameters are described by a sublist structure
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	$M_SUBLIST_STRUC STRUC					     ;;AN000;;
			     C1								     ;;
 0000  0B                    C1	    $M_S_SIZE	     DB        11			     ;;AN000;; SUBLIST size  (PTR to next SU
				BLIST)
 0001  00                    C1	    $M_S_RESV	     DB        0			     ;;AN000;; RESERVED
 0002  00000000              C1	    $M_S_VALUE	     DD        ?			     ;;AN000;; Time, Date or PTR to data ite
				m
 0006  00                    C1	    $M_S_ID	     DB        ?			     ;;AN000;; n of %n
 0007  00                    C1	    $M_S_FLAG	     DB        ?			     ;;AN000;; Data-type flags
 0008  00                    C1	    $M_S_MAXW	     DB        ?			     ;;AN000;; Maximum field width
 0009  00                    C1	    $M_S_MINW	     DB        ?			     ;;AN000;; Minimum field width
 000A  00                    C1	    $M_S_PAD	     DB        ?			     ;;AN000;; Character for Pad field
			     C1								     ;;
 000B                        C1	$M_SUBLIST_STRUC ENDS					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;; STRUCTURE: $M_CLASS_ID
			     C1	;;
			     C1	;; Each class will be defined by this structure.
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	$M_CLASS_ID STRUC					     ;;AN000;;
			     C1								     ;;
 0000  FF                    C1	    $M_CLS_ID	     DB        -1			     ;;AN000;; Class identifer
 0001  0004                  C1	    $M_COMMAND_VER   DW        EXPECTED_VERSION 	     ;;AN003;; COMMAND.COM version check
 0003  00                    C1	    $M_NUM_CLS_MSG   DB        0			     ;;AN000;; Total number of message in cl
				ass
			     C1								     ;;
 0004                        C1	$M_CLASS_ID ENDS					     ;;
			     C1								     ;;AN000;;
 = 0004                      C1	    $M_CLASS_ID_SZ   EQU       TYPE $M_CLASS_ID 	     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;; STRUCTURE: $M_ID_STRUC
			     C1	;;
			     C1	;; Each message will be defined by this structure.
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	$M_ID STRUC						     ;;AN000;;
			     C1								     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-40
DOS - Message Retriever - MSGSTR.INC Module                 

 0000  FFFF                  C1	    $M_NUM	     DW        -1			     ;;AN000;; Message Number
 0002  0000                  C1	    $M_TXT_PTR	     DW        ?			     ;;AN000;; Pointer to message text
			     C1								     ;;
 0004                        C1	$M_ID ENDS						     ;;AN000;;
			     C1								     ;;AN000;; Status Flag Values:
 = 0004                      C1	    $M_ID_SZ	     EQU       TYPE $M_ID		     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;; STRUCTURE: $M_RES_ADDRS
			     C1	;;
			     C1	;; Resident data area definition of variables
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	$M_RES_ADDRS STRUC					     ;;AN000;;
			     C1								     ;;
 0000  00000000              C1	    $M_EXT_ERR_ADDRS DD        0			     ;;AN000;; Allow pointers to THREE Exten
				ded error locations
 0004  00000000              C1	    $M_EXT_FILE      DD        0			     ;;AN001;;
 0008  00000000              C1	    $M_EXT_COMMAND   DD        0			     ;;AN000;;
 000C  FFFFFFFF              C1	    $M_EXT_TERM      DD        -1			     ;;AN000;;
 0010  00000000              C1	    $M_PARSE_COMMAND DD        0			     ;;AN000;;
 0014  00000000              C1	    $M_PARSE_ADDRS   DD        0			     ;;AN000;; Allow pointers to TWO Parse e
				rror locations
 0018  FFFFFFFF              C1	    $M_PARSE_TERM    DD        -1			     ;;AN000;;
 001C  00000000              C1	    $M_CRIT_ADDRS    DD        0			     ;;AN000;; Allow pointers to TWO Critica
				l error locations
 0020  00000000              C1	    $M_CRIT_COMMAND  DD        0			     ;;AN000;;
 0024  FFFFFFFF              C1	    $M_CRIT_TERM     DD        -1			     ;;AN000;;
 0028  FFFFFFFF              C1	    $M_DISK_PROC_ADDR DD       -1			     ;;AN004;; Address of READ_DISK_PROC
 002C  0004[                 C1	    $M_CLASS_ADDRS   DD        $M_NUM_CLS DUP(0)	     ;;AN000;; Allow pointers to specified c
				lasses
	   00000000          C1	
			 ]   C1	
			     C1	
 003C  FFFFFFFF              C1	    $M_CLS_TERM      DD        -1			     ;;AN000;;
 0040  00000000              C1	    $M_DBCS_VEC      DD        0			     ;;AN000;; Save DBCS vector
 0044  0000                  C1	    $M_HANDLE	     DW        ?			     ;;AN000;;
 0046  00                    C1	    $M_SIZE	     DB        0			     ;;AN000;;
 0047  0D 0A                 C1	    $M_CRLF	     DB        0DH,0AH			     ;;AN004;; CR LF message
 0049  00                    C1	    $M_CLASS	     DB        ?			     ;;AN004;; Saved class
 004A  0000                  C1	    $M_RETURN_ADDR   DW        ?			     ;;AN000;;
 004C  0000                  C1	    $M_MSG_NUM	     DW        $M_NULL			     ;;AN000;;
 004E  000A                  C1	    $M_DIVISOR	     DW        10			     ;;AN000;; Default = 10 (must be a WORD 
				for division)
 0050  0040[                 C1	    $M_TEMP_BUF      DB        $M_TEMP_BUF_SZ DUP("$")	     ;;AN000;; Temporary buffer
	   24                C1	
			 ]   C1	
			     C1	
 0090  24                    C1	    $M_BUF_TERM      DB        "$"			     ;;AN000;;
			     C1	
 0091                        C1	$M_RES_ADDRS ENDS					     ;;AN000;;
			     C1								     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-41
DOS - Message Retriever - MSGSTR.INC Module                 

 = 0091                      C1	$M_RES_ADDRS_SZ EQU  TYPE $M_RES_ADDRS			     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;; STRUCTURE: $M_COUNTRY_INFO
			     C1	;;
			     C1	;; Important fields of the Get Country Information call
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	$M_COUNTRY_INFO STRUC					     ;;AN000;; Expected Country infomation
			     C1								     ;;
 0000  0050[                 C1	    $M_HEADER	     DB       $M_RES_ADDRS_SZ-$M_TEMP_BUF_SZ-1 DUP(?) ;;AN000;; Go past first part o
				f struc
	   ??                C1	
			 ]   C1	
			     C1	
 0050  0000                  C1	    $M_DATE_FORMAT   DW       ? 			     ;;AN000;; <------- Date Format
 0052  0005[                 C1	    $M_CURR_SEPARA   DB       5 DUP(?)			     ;;AN000;;
	   ??                C1	
			 ]   C1	
			     C1	
 0057  00 00                 C1	    $M_THOU_SEPARA   DB       ?,0			     ;;AN000;; <------- Thou Separator
 0059  00 00                 C1	    $M_DECI_SEPARA   DB       ?,0			     ;;AN000;; <------- Decimal Separator
 005B  00 00                 C1	    $M_DATE_SEPARA   DB       ?,0			     ;;AN000;; <------- Date Separator
 005D  00 00                 C1	    $M_TIME_SEPARA   DB       ?,0			     ;;AN000;; <------- Time Separator
 005F  00                    C1	    $M_CURR_FORMAT   DB       ? 			     ;;AN000;;
 0060  00                    C1	    $M_SIG_DIGS_CU   DB       ? 			     ;;AN000;;
 0061  00                    C1	    $M_TIME_FORMAT   DB       ? 			     ;;AN000;; <------- Time Format
			     C1								     ;;
 0062                        C1	$M_COUNTRY_INFO ENDS					     ;;AN000;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	ENDIF							     ;;AN000;; END of include of Structure o
				nly
			     C1	
			     1					       ; 
														;an000;bgb
				;.xlist 									 ;an000;bgb
 0472				data	segment public para 'DATA'                                              ;an000;bgb
				Msg_Services	<MSGDATA>							;an000;bgb
			     1						  ; 
 = 0000                      1	   $M_SERVICE = FALSE			  ;  Reset service flag 
			     1	   IRP	   var,<MSGDATA>		  ;  FOR each variable in the list 
			     1	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     1						  ;	For each service predefined 
			     1	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     1		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above) 
			     1		 ELSE				  ; 
			     1		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     1		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     1		   ENDIF			  ;	    ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-42
DOS - Message Retriever - MSGSTR.INC Module                 

			     1		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     1		     IFIDN  <var>,<repl>	  ; 
			     1		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     1		     ENDIF			  ; 
			     1		   ENDM 			  ; 
			     1		   serv = TRUE			  ;	    Let the assembler know about the service 
			     1		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     1		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     1		 ENDIF				  ;	  ENDIF 
			     1	      ENDM				  ;	NEXT service 
			     1	MSG_SERVICES2  <MSGDATA> 
			     1						  ; Continue further checks (If we add any more predefined 
			     1						  ;  function to the above IRP command, it generates a 
			     1						  ;  syntax error. We must continue the processing in anothe
				r 
			     1						  ;  MACRO called MSG_SERVICES2) 
			     1	      IF $M_INCLUDE			  ;	IF message class was requested 
			     1		 $M_INC var			  ;	   Include it as a message class 
			     1	      ENDIF				  ;	ENDIF 
			     1	   ENDM 				  ;  NEXT variable 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <MSGDATA>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <MSGDATA>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <MSGDATA>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 ELSE				  ; 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <MSGDATA>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
 = FFFF                      3		   MSGDATA = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-43
DOS - Message Retriever - MSGSTR.INC Module                 

				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <MSGDATA>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <MSGDATA> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<MSGDATA> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <MSGDATA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <MSGDATA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <MSGDATA>,<NOCHECKSTDIN> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-44
DOS - Message Retriever - MSGSTR.INC Module                 

			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <MSGDATA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <MSGDATA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     1						  ; 
			     1	   IF $M_SERVICE			  ;	IF it any services were requested THEN 
			     1	     INCLUDE MSGSERV.ASM		  ;	   THEN include module to get service 
			     C1	; * * * * * * * * * * * * START OF SPECIFICATIONS * * * * * * * * * * * * * * *
			     C1	;
			     C1	; MODULE NAME: MSGSERV.SAL
			     C1	;
			     C1	; DESCRIPTIVE NAME: Message Services SALUT file
			     C1	;
			     C1	; FUNCTION: This module incorporates all the messages services and
			     C1	;	    is called upon at build time to INCLUDE the code requested
			     C1	;	    by a utility. Code is requested using the macro MSG_SERVICES.
			     C1	;
			     C1	; ENTRY POINT: Since this a collection of subroutines, entry point is at
			     C1	;	    requested procedure.
			     C1	;
			     C1	; INPUT: Since this a collection of subroutines, input is dependent on function
			     C1	;	    requested.
			     C1	;
			     C1	; EXIT-NORMAL: In all cases, CARRY FLAG = 0
			     C1	;
			     C1	; EXIT-ERROR: In all cases, CARRY FLAG = 1
			     C1	;
			     C1	; INTERNAL REFERENCES: (list of included subroutines)
			     C1	;
			     C1	;	- SYSLOADMSG
			     C1	;	- SYSDISPMSG
			     C1	;	- SYSGETMSG
			     C1	;
			     C1	;
			     C1	; EXTERNAL REFERENCES: None
			     C1	;
			     C1	; NOTES: At build time, some modules must be included. These are only included
			     C1	;	 once using assembler switches. Other logic is included at the request
			     C1	;	 of the utility.
			     C1	;
			     C1	;	 COMR and COMT are assembler switches to conditionally assemble code
			     C1	;	 for RESIDENT COMMAND.COM and TRANSIENT COMMAND.COM to reduce resident
			     C1	;	 storage and multiple EQUates.
			     C1	;
			     C1	; REVISION HISTORY: Created MAY 1987
			     C1	;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-45
DOS - Message Retriever - MSGSTR.INC Module                 

			     C1	;     Label: DOS - - Message Retriever
			     C1	;	     (c) Copyright 1988 Microsoft
			     C1	;
			     C1	;
			     C1	; * * * * * * * * * * * * END OF SPECIFICATIONS * * * * * * * * * * * * * * * *
			     C1	; Page 
			     C1	
			     C1	;   $SALUT	     $M  (2,5,22,62)			     ;;AN000;; Set SALUT formatting
			     C1	
			     C1	ELSE							     ;;AN000;;	ELSE if we have already incl
				uded the STRUCTURES
			     C1	; 
			     C1	;   $SALUT  $M	(2,5,13,62)				     ;;AN000;;	Set SALUT formatting for cod
				e section
			     C1	
			     C1	    IF	    MSGDATA					     ;;AN000;;	IF this is a request to incl
				ude the data area
 = 0000                      C1	      MSGDATA =  FALSE					     ;;AN000;;	  Let the assembler know not
				 to include it again
			     C1								     ;;AN000;;	  and include it
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-46
DOS - Message Retriever - MSGSTR.INC Module                 

			     C1	      PAGE
			     C1	      SUBTTL  DOS - Message Retriever - MSGRES.TAB Module
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	DATA NAME: $M_RES_TABLE
			     C1	;;
			     C1	;;	REFERENCE LABEL: $M_RT
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	ELSE							     ;;AN000;;
 0472                        C1	      $M_RT   LABEL   BYTE				     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
 0472  00000000              C1	      $M_RES_ADDRS <>					     ;;AN000;; Resident addresses
 0476  00000000              C1	
 047A  00000000              C1	
 047E  FFFFFFFF              C1	
 0482  00000000              C1	
 0486  00000000              C1	
 048A  FFFFFFFF              C1	
 048E  00000000              C1	
 0492  00000000              C1	
 0496  FFFFFFFF              C1	
 049A  FFFFFFFF              C1	
 049E  0004[                 C1	
	   00000000          C1	
			 ]   C1	
 04AE  FFFFFFFF              C1	
 04B2  00000000              C1	
 04B6  0000                  C1	
 04B8  00                    C1	
 04B9  0001[                 C1	
	   0D                C1	
	   0A                C1	
			 ]   C1	
 04BB  00                    C1	
 04BC  0000                  C1	
 04BE  0000                  C1	
 04C0  0A00                  C1	
 04C2  0040[                 C1	
	   24                C1	
			 ]   C1	
 0502  24                    C1	
			     C1	
			     C1								     ;;
			     C1	      include COPYRIGH.INC				     ;;AN001;; Include Copyright 1988 Micros
				oft
 0503  4D 53 20 44 4F 53     C1		DB	"MS DOS Version 4.00 (C)Copyright 1988 Microsoft Corp"
       20 56 65 72 73 69     C1	
       6F 6E 20 34 2E 30     C1	
       30 20 28 43 29 43     C1	
       6F 70 79 72 69 67     C1	
       68 74 20 31 39 38     C1	
       38 20 4D 69 63 72     C1	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-47
DOS - Message Retriever - MSGRES.TAB Module                 

       6F 73 6F 66 74 20     C1	
       43 6F 72 70           C1	
 0537  4C 69 63 65 6E 73     C1		DB	"Licensed Material - Property of Microsoft  "
       65 64 20 4D 61 74     C1	
       65 72 69 61 6C 20     C1	
       2D 20 50 72 6F 70     C1	
       65 72 74 79 20 6F     C1	
       66 20 4D 69 63 72     C1	
       6F 73 6F 66 74 20     C1	
       20                    C1	
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	    ENDIF						     ;;AN000;; END of include of Data table
			     C1	
			     C1	; 
			     C1	ENDIF							     ;;AN000;; END of include of Structure o
				nly
			     C1	
			     1	   ENDIF				  ;	ENDIF 
 0562				data	ends									;an000;bgb
														;an000;bgb
 0000				code	segment public para 'CODE'                                              ;an000;bgb
				pathlabl	msgret								;an040;bgb
				
				 public amis_sign
					even
 0000				amis_sign:
 0000  65 63 6D				db "ecm"
 0003  0005[				db 5 dup (' ')
	   20			
			 ]	
				
 0008  6C 44 4F 53			db "lDOS"
 000C  0004[				db 4 dup (' ')
	   20			
			 ]	
				
 0010				amis_id:			; must be directly after amis_sign
 0010  0000				dw 0
 0012  0000				dw 0			; sequential number
 0014  06				db amis_id_msg_end - amis_id_msg
 0015				amis_id_msg:
 0015  63 68 6B 64 73 6B		db "chkdsk"		; our id name
 001B				amis_id_msg_end:
				
 =				AMIS_SIGN_SEGMENT equ dg
				
				Msg_Services	<NEARmsg>							;an000;bgb
			     1						  ; 
 = 0000                      1	   $M_SERVICE = FALSE			  ;  Reset service flag 
			     1	   IRP	   var,<NEARmsg>		  ;  FOR each variable in the list 
			     1	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     1						  ;	For each service predefined 
			     1	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-48
DOS - Message Retriever - MSGRES.TAB Module                 

				EARmsg,FARmsg,COMR,COMT> 
			     1		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above) 
			     1		 ELSE				  ; 
			     1		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     1		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     1		   ENDIF			  ;	    ENDIF 
			     1		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     1		     IFIDN  <var>,<repl>	  ; 
			     1		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     1		     ENDIF			  ; 
			     1		   ENDM 			  ; 
			     1		   serv = TRUE			  ;	    Let the assembler know about the service 
			     1		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     1		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     1		 ENDIF				  ;	  ENDIF 
			     1	      ENDM				  ;	NEXT service 
			     1	MSG_SERVICES2  <NEARmsg> 
			     1						  ; Continue further checks (If we add any more predefined 
			     1						  ;  function to the above IRP command, it generates a 
			     1						  ;  syntax error. We must continue the processing in anothe
				r 
			     1						  ;  MACRO called MSG_SERVICES2) 
			     1	      IF $M_INCLUDE			  ;	IF message class was requested 
			     1		 $M_INC var			  ;	   Include it as a message class 
			     1	      ENDIF				  ;	ENDIF 
			     1	   ENDM 				  ;  NEXT variable 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <NEARmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <NEARmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <NEARmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <NEARmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-49
DOS - Message Retriever - MSGRES.TAB Module                 

			     3		 IFDIF <NEARmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <NEARmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <NEARmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
 = FFFF                      3		   NEARmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NEARmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <NEARmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<NEARmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NEARmsg>,<serv2> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-50
DOS - Message Retriever - MSGRES.TAB Module                 

			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NEARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NEARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NEARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NEARmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     1						  ; 
			     1	   IF $M_SERVICE			  ;	IF it any services were requested THEN 
			     1	     INCLUDE MSGSERV.ASM		  ;	   THEN include module to get service 
			     C1	; * * * * * * * * * * * * START OF SPECIFICATIONS * * * * * * * * * * * * * * *
			     C1	;
			     C1	; MODULE NAME: MSGSERV.SAL
			     C1	;
			     C1	; DESCRIPTIVE NAME: Message Services SALUT file
			     C1	;
			     C1	; FUNCTION: This module incorporates all the messages services and
			     C1	;	    is called upon at build time to INCLUDE the code requested
			     C1	;	    by a utility. Code is requested using the macro MSG_SERVICES.
			     C1	;
			     C1	; ENTRY POINT: Since this a collection of subroutines, entry point is at
			     C1	;	    requested procedure.
			     C1	;
			     C1	; INPUT: Since this a collection of subroutines, input is dependent on function
			     C1	;	    requested.
			     C1	;
			     C1	; EXIT-NORMAL: In all cases, CARRY FLAG = 0
			     C1	;
			     C1	; EXIT-ERROR: In all cases, CARRY FLAG = 1
			     C1	;
			     C1	; INTERNAL REFERENCES: (list of included subroutines)
			     C1	;
			     C1	;	- SYSLOADMSG
			     C1	;	- SYSDISPMSG
			     C1	;	- SYSGETMSG
			     C1	;
			     C1	;
			     C1	; EXTERNAL REFERENCES: None
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-51
DOS - Message Retriever - MSGRES.TAB Module                 

			     C1	;
			     C1	; NOTES: At build time, some modules must be included. These are only included
			     C1	;	 once using assembler switches. Other logic is included at the request
			     C1	;	 of the utility.
			     C1	;
			     C1	;	 COMR and COMT are assembler switches to conditionally assemble code
			     C1	;	 for RESIDENT COMMAND.COM and TRANSIENT COMMAND.COM to reduce resident
			     C1	;	 storage and multiple EQUates.
			     C1	;
			     C1	; REVISION HISTORY: Created MAY 1987
			     C1	;
			     C1	;     Label: DOS - - Message Retriever
			     C1	;	     (c) Copyright 1988 Microsoft
			     C1	;
			     C1	;
			     C1	; * * * * * * * * * * * * END OF SPECIFICATIONS * * * * * * * * * * * * * * * *
			     C1	; Page 
			     C1	
			     C1	;   $SALUT	     $M  (2,5,22,62)			     ;;AN000;; Set SALUT formatting
			     C1	
			     C1	ELSE							     ;;AN000;;	ELSE if we have already incl
				uded the STRUCTURES
			     C1	; 
			     C1	;   $SALUT  $M	(2,5,13,62)				     ;;AN000;;	Set SALUT formatting for cod
				e section
			     C1	
			     C1	
			     C1	; 
			     C1	    IF	    NOT  $M_MSGDATA_ONLY			     ;;AN000;; IF this was a request for onl
				y the data table THEN
			     C1								     ;; 	don't include any more code
			     C1								     ;;AN000;; Figure out what other code to
				 include
			     C1	;
			     C1	
			     C1	; 
			     C1	; 
			     C1	; 
			     C1	    ENDIF						     ;;AN000;; END of include of MSG_DATA_ON
				LY
			     C1	ENDIF							     ;;AN000;; END of include of Structure o
				nly
			     C1	
			     1	   ENDIF				  ;	ENDIF 
				Msg_Services	<LOADmsg>							;an000;bgb
			     1						  ; 
 = 0000                      1	   $M_SERVICE = FALSE			  ;  Reset service flag 
			     1	   IRP	   var,<LOADmsg>		  ;  FOR each variable in the list 
			     1	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     1						  ;	For each service predefined 
			     1	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     1		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above) 
			     1		 ELSE				  ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-52
DOS - Message Retriever - MSGRES.TAB Module                 

			     1		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     1		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     1		   ENDIF			  ;	    ENDIF 
			     1		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     1		     IFIDN  <var>,<repl>	  ; 
			     1		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     1		     ENDIF			  ; 
			     1		   ENDM 			  ; 
			     1		   serv = TRUE			  ;	    Let the assembler know about the service 
			     1		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     1		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     1		 ENDIF				  ;	  ENDIF 
			     1	      ENDM				  ;	NEXT service 
			     1	MSG_SERVICES2  <LOADmsg> 
			     1						  ; Continue further checks (If we add any more predefined 
			     1						  ;  function to the above IRP command, it generates a 
			     1						  ;  syntax error. We must continue the processing in anothe
				r 
			     1						  ;  MACRO called MSG_SERVICES2) 
			     1	      IF $M_INCLUDE			  ;	IF message class was requested 
			     1		 $M_INC var			  ;	   Include it as a message class 
			     1	      ENDIF				  ;	ENDIF 
			     1	   ENDM 				  ;  NEXT variable 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <LOADmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <LOADmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <LOADmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <LOADmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <LOADmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <LOADmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-53
DOS - Message Retriever - MSGRES.TAB Module                 

			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
 = FFFF                      3		   LOADmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <LOADmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <LOADmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<LOADmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <LOADmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-54
DOS - Message Retriever - MSGRES.TAB Module                 

			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <LOADmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <LOADmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <LOADmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <LOADmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     1						  ; 
			     1	   IF $M_SERVICE			  ;	IF it any services were requested THEN 
			     1	     INCLUDE MSGSERV.ASM		  ;	   THEN include module to get service 
			     C1	; * * * * * * * * * * * * START OF SPECIFICATIONS * * * * * * * * * * * * * * *
			     C1	;
			     C1	; MODULE NAME: MSGSERV.SAL
			     C1	;
			     C1	; DESCRIPTIVE NAME: Message Services SALUT file
			     C1	;
			     C1	; FUNCTION: This module incorporates all the messages services and
			     C1	;	    is called upon at build time to INCLUDE the code requested
			     C1	;	    by a utility. Code is requested using the macro MSG_SERVICES.
			     C1	;
			     C1	; ENTRY POINT: Since this a collection of subroutines, entry point is at
			     C1	;	    requested procedure.
			     C1	;
			     C1	; INPUT: Since this a collection of subroutines, input is dependent on function
			     C1	;	    requested.
			     C1	;
			     C1	; EXIT-NORMAL: In all cases, CARRY FLAG = 0
			     C1	;
			     C1	; EXIT-ERROR: In all cases, CARRY FLAG = 1
			     C1	;
			     C1	; INTERNAL REFERENCES: (list of included subroutines)
			     C1	;
			     C1	;	- SYSLOADMSG
			     C1	;	- SYSDISPMSG
			     C1	;	- SYSGETMSG
			     C1	;
			     C1	;
			     C1	; EXTERNAL REFERENCES: None
			     C1	;
			     C1	; NOTES: At build time, some modules must be included. These are only included
			     C1	;	 once using assembler switches. Other logic is included at the request
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-55
DOS - Message Retriever - MSGRES.TAB Module                 

			     C1	;	 of the utility.
			     C1	;
			     C1	;	 COMR and COMT are assembler switches to conditionally assemble code
			     C1	;	 for RESIDENT COMMAND.COM and TRANSIENT COMMAND.COM to reduce resident
			     C1	;	 storage and multiple EQUates.
			     C1	;
			     C1	; REVISION HISTORY: Created MAY 1987
			     C1	;
			     C1	;     Label: DOS - - Message Retriever
			     C1	;	     (c) Copyright 1988 Microsoft
			     C1	;
			     C1	;
			     C1	; * * * * * * * * * * * * END OF SPECIFICATIONS * * * * * * * * * * * * * * * *
			     C1	; Page 
			     C1	
			     C1	;   $SALUT	     $M  (2,5,22,62)			     ;;AN000;; Set SALUT formatting
			     C1	
			     C1	ELSE							     ;;AN000;;	ELSE if we have already incl
				uded the STRUCTURES
			     C1	; 
			     C1	;   $SALUT  $M	(2,5,13,62)				     ;;AN000;;	Set SALUT formatting for cod
				e section
			     C1	
			     C1	
			     C1	; 
			     C1	    IF	    NOT  $M_MSGDATA_ONLY			     ;;AN000;; IF this was a request for onl
				y the data table THEN
			     C1								     ;; 	don't include any more code
			     C1								     ;;AN000;; Figure out what other code to
				 include
			     C1	;
			     C1	
			     C1	; 
			     C1	      IF      LOADmsg					     ;;AN000;;	 Is the request to include t
				he code for SYSLOADMSG ?
 = 0000                      C1		LOADmsg = FALSE 				     ;;AN000;;	 Yes, THEN include it and re
				set flag
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-56
DOS - Message Retriever - MSGRES.TAB Module                 

			     C1		PAGE
			     C1		SUBTTL	DOS - Message Retriever - LOADMSG.ASM Module
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: SYSLOADMSG
			     C1	;;
			     C1	;;	FUNCTION:
			     C1	;;	INPUTS:
			     C1	;;
			     C1	;;	OUPUTS:
			     C1	;;
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	ELSE							     ;;AN000;;
 001B                        C1		SYSLOADMSG PROC NEAR				     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
 001B  50                    C1		PUSH	AX					     ;;AN000;
 001C  53                    C1		PUSH	BX					     ;;AN000;
 001D  52                    C1		PUSH	DX					     ;;AN000;
 001E  06                    C1		PUSH	ES					     ;;AN000;
 001F  57                    C1		PUSH	DI					     ;;AN000;
 0020  33 C9                 C1		XOR	CX,CX					     ;;AN000;  Reset to zero
 0022  8E C1                 C1		MOV	ES,CX					     ;;AN000;
 0024  33 FF                 C1		XOR	DI,DI					     ;;AN000;
 0026  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 0029  B2 00                 C1		MOV	DL,DOS_GET_EXTENDED			     ;;AN000;; Where are the Extended errors
				 in COMMAND.COM
 002B  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 002D  8C 06 047C R          C1		MOV	WORD PTR $M_RT.$M_EXT_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 0031  89 3E 047A R          C1		MOV	WORD PTR $M_RT.$M_EXT_COMMAND,DI	     ;;AN000;;
			     C1								     ;;
 0035  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 0038  B2 02                 C1		MOV	DL,DOS_GET_PARSE			     ;;AN000;; Where are the Parse errors in
				 COMMAND.COM
 003A  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 003C  8C 06 0484 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 0040  89 3E 0482 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_COMMAND,DI	     ;;AN000;;
			     C1								     ;;
 0044  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 0047  B2 04                 C1		MOV	DL,DOS_GET_CRITICAL			     ;;AN000;; Where are the Critical errors
				 in COMMAND.COM
 0049  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 004B  8C 06 0494 R          C1		MOV	WORD PTR $M_RT.$M_CRIT_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 004F  89 3E 0492 R          C1		MOV	WORD PTR $M_RT.$M_CRIT_COMMAND,DI	     ;;AN000;;
			     C1	
 0053  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN001;; 2FH Interface
 0056  B2 06                 C1		MOV	DL,DOS_GET_FILE 			     ;;AN001;; Where are the FILE dependant 
				in IFSFUNC.EXE
 0058  CD 2F                 C1		INT	2FH					     ;;AN001;; Private interface
 005A  8C 06 0478 R          C1		MOV	WORD PTR $M_RT.$M_EXT_FILE+2,ES 	     ;;AN001;;	Move into first avaliable ta
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-57
DOS - Message Retriever - LOADMSG.ASM Module                

				ble location
 005E  89 3E 0476 R          C1		MOV	WORD PTR $M_RT.$M_EXT_FILE,DI		     ;;AN001;;
			     C1	
			     C1	ELSE							     ;;
			     C1		ELSE						     ;;AN000;;
 0062  E8 127B R             C1		  CALL	  $M_MSGSERV_1				     ;;AN000;; Get addressibilty to MSGSERV 
				CLASS 1 (EXTENDED Errors)
			     C1		ENDIF						     ;;AN000;;
 0065  8C 06 0474 R          C1		MOV	WORD PTR $M_RT.$M_EXT_ERR_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 0069  89 3E 0472 R          C1		MOV	WORD PTR $M_RT.$M_EXT_ERR_ADDRS,DI	     ;;AN000;;
 006D  8C 06 0490 R          C1		MOV	WORD PTR $M_RT.$M_CRIT_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 0071  89 3E 048E R          C1		MOV	WORD PTR $M_RT.$M_CRIT_ADDRS,DI 	     ;;AN000;;
			     C1								     ;;
			     C1		ELSE						     ;;AN000;;
 0075  E8 129C R             C1		  CALL	  $M_MSGSERV_2				     ;;AN000;; Get addressibilty to MSGSERV 
				CLASS 2 (PARSE Errors)
			     C1		ENDIF						     ;;AN000;;
 0078  8C 06 0488 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 007C  89 3E 0486 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_ADDRS,DI	     ;;AN000;;
			     C1	ENDIF							     ;;
			     C1								     ;;
 0080  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN001;; 2FH Interface
 0083  B2 08                 C1		MOV	DL,DOS_GET_ADDR 			     ;;AN001;; Where is the READ_DISK_PROC i
				n COMMAND.COM
 0085  CD 2F                 C1		INT	2FH					     ;;AN001;; Private interface
 0087  8C 06 049C R          C1		MOV	WORD PTR $M_RT.$M_DISK_PROC_ADDR+2,ES	     ;;AN001;;	Move into first avaliable ta
				ble location
 008B  89 3E 049A R          C1		MOV	WORD PTR $M_RT.$M_DISK_PROC_ADDR,DI	     ;;AN001;;
			     C1	
			     C1		$M_BUILD_PTRS %$M_NUM_CLS			     ;;AN000;; Build all utility classes
			     C2							 ; 
 = 0000                      C2	    $M_INDEX =	    0				 ; 
			     C2	ELSE						 ; ELSE 
			     C2	  ELSE						 ;   ELSE 
			     C2							 ; 
 = 0000                      C2	    $M_INDEX =	    0				 ; 
 = 0000                      C2	    $M_COUNT =	    0				 ;     Build normal utilities 
			     C2							 ; 
			     C2	    REPT    4				 ; 
			     C2	    $M_COUNT =	    $M_COUNT + 1		 ; 
			     C2	    $M_MAKE %$M_COUNT				 ; 
			     C2	    ENDM					 ; 
 = 0001                      C3	    $M_COUNT =	    $M_COUNT + 1		 ; 
			     C3	    $M_MAKE %$M_COUNT				 ; 
			     C4	ELSE						 ; 
 008F  E8 0AFB R             C4	    CALL    $M_CLS_1			 ;  Get addressibilty to class &$M_APPEND (ES:DI) 
 0092  89 3E 049E R          C4	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ; 
			     C4	ENDIF						 ; 
 = 0004                      C4	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location 
			     C4							 ; 
 = 0002                      C3	    $M_COUNT =	    $M_COUNT + 1		 ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-58
DOS - Message Retriever - LOADMSG.ASM Module                

			     C3	    $M_MAKE %$M_COUNT				 ; 
			     C4	ELSE						 ; 
 0096  E8 0E05 R             C4	    CALL    $M_CLS_2			 ;  Get addressibilty to class &$M_APPEND (ES:DI) 
 0099  89 3E 04A2 R          C4	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ; 
			     C4	ENDIF						 ; 
 = 0008                      C4	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location 
			     C4							 ; 
 = 0003                      C3	    $M_COUNT =	    $M_COUNT + 1		 ; 
			     C3	    $M_MAKE %$M_COUNT				 ; 
			     C4	ELSE						 ; 
 009D  E8 10C0 R             C4	    CALL    $M_CLS_3			 ;  Get addressibilty to class &$M_APPEND (ES:DI) 
 00A0  89 3E 04A6 R          C4	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ; 
			     C4	ENDIF						 ; 
 = 000C                      C4	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location 
			     C4							 ; 
 = 0004                      C3	    $M_COUNT =	    $M_COUNT + 1		 ; 
			     C3	    $M_MAKE %$M_COUNT				 ; 
			     C4	ELSE						 ; 
 00A4  E8 1256 R             C4	    CALL    $M_CLS_4			 ;  Get addressibilty to class &$M_APPEND (ES:DI) 
 00A7  89 3E 04AA R          C4	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ; 
			     C4	ENDIF						 ; 
 = 0010                      C4	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location 
			     C4							 ; 
			     C2	  ENDIF 					 ; 
			     C2	ENDIF						 ; 
			     C1								     ;;AN000;;
 00AB  E8 00C7 R             C1		CALL	$M_GET_DBCS_VEC 			     ;;AN000;; Save the DBCS vector
			     C1	
			     C1	IF	NOT	NOCHECKSTDIN				     ;;AN000;; IF EOF check is not to be sup
				pressed
 00AE  E8 00DF R             C1		CALL	$M_CHECKSTDIN				     ;;AN000;;	 Set EOF CHECK
			     C1	ENDIF							     ;;AN000;;
			     C1								     ;;AN000;;
			     C1	IF	NOT	NOCHECKSTDOUT				     ;;AN000;; IF Disk Full check is not to 
				be suppressed
 00B1  E8 00F2 R             C1		CALL	$M_CHECKSTDOUT				     ;;AN000;;	 Set Disk Full CHECK
			     C1	ENDIF							     ;;AN000;;
			     C1								     ;;AN000;;
			     C1	ELSE							     ;;AN000;; ELSE
 00B4  51                    C1		PUSH	CX					     ;;AN000;;
 00B5  E8 014E R             C1		CALL	$M_VERSION_CHECK			     ;;AN000;;	 Check Version
			     C1	ENDIF							     ;;AN000;;
			     C1								     ;;        Error ?
			     C1	;	$IF	NC					     ;;AN000;; No.
 00B8  72 08                 C1		JC $MIF20
			     C1	IF	  NOT	  NOVERCHECKmsg 			     ;;AN000;;	IF version check was not sup
				ressed
 00BA  59                    C1		  POP	  CX					     ;;AN000;;	Reset stack
			     C1	ENDIF							     ;;AN000;;
 00BB  5F                    C1		  POP	  DI					     ;;AN000;;	Restore REGS
 00BC  07                    C1		  POP	  ES					     ;;AN000;;
 00BD  5A                    C1		  POP	  DX					     ;;AN000;;
 00BE  5B                    C1		  POP	  BX					     ;;AN000;;
 00BF  58                    C1		  POP	  AX					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-59
DOS - Message Retriever - LOADMSG.ASM Module                

			     C1	;	$ELSE						     ;;AN000;; Yes,
 00C0  EB 04                 C1		JMP SHORT $MEN20
 00C2                        C1	$MIF20:
			     C1	ELSE							     ;;AN000;;	IF version check is to be su
				pressed
 00C2  83 C4 0C              C1		  ADD	  SP,12 				     ;;AN000;;
 00C5  F9                    C1		  STC						     ;;AN000;;	Reset carry flag
			     C1	ENDIF							     ;;AN000;;	IF version check is to be su
				pressed
			     C1	;	$ENDIF						     ;;AN000;;
 00C6                        C1	$MEN20:
 00C6  C3                    C1		RET						     ;;AN000;;
			     C1								     ;;
 00C7                        C1		SYSLOADMSG ENDP 				     ;;AN000;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-60
DOS - Message Retriever - LOADMSG.ASM Module                

			     C1		PAGE
			     C1		SUBTTL	DOS - Message Retriever - $M_VERSION_CHECK Proc
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;  Proc Name:	$M_GET_DBCS_VEC
			     C1	;;
			     C1	;;  Function:	Get the DBCS vector and save it for later use
			     C1	;;
			     C1	;;  Inputs:	None
			     C1	;;
			     C1	;;  Outputs:	None
			     C1	;;
			     C1	;;  Regs Changed:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 00C7                        C1	$M_GET_DBCS_VEC PROC NEAR				     ;;AN000;;
			     C1								     ;;
 00C7  50                    C1		PUSH	AX					     ;;AN000;; Save character to check
 00C8  56                    C1		PUSH	SI					     ;;AN000;;
 00C9  1E                    C1		PUSH	DS					     ;;AN000;;
 00CA  B8 6300               C1		MOV	AX,DOS_GET_DBCS_INFO			     ;;AN000;; DOS function to get DBSC envi
				ronment
 00CD  CD 21                 C1		INT	21H					     ;;AN000;; Get environment pointer
 00CF  1E                    C1		PUSH	DS					     ;;AN000;; Get environment pointer
 00D0  07                    C1		POP	ES					     ;;AN000;; Get environment pointer
 00D1  1F                    C1		POP	DS					     ;;AN000;; Get environment pointer
			     C1	;	$IF	NC					     ;;AN000;;
 00D2  72 08                 C1		JC $MIF23
 00D4  89 36 04B2 R          C1		  MOV	  WORD PTR $M_RT.$M_DBCS_VEC,SI 	     ;;AN000;; Save DBCS Vector
 00D8  8C 06 04B4 R          C1		  MOV	  WORD PTR $M_RT.$M_DBCS_VEC+2,ES	     ;;AN000;;
			     C1	;	$ENDIF						     ;;AN000;;
 00DC                        C1	$MIF23:
 00DC  5E                    C1		POP	SI					     ;;AN000;;
 00DD  58                    C1		POP	AX					     ;;AN000;; Retrieve character to check
 00DE  C3                    C1		RET						     ;;AN000;; Return
			     C1								     ;;
 00DF                        C1	$M_GET_DBCS_VEC ENDP					     ;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		ELSE						     ;AN001; Yes, THEN include it
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-61
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     C1		  PAGE
			     C1		  SUBTTL  DOS - Message Retriever - $M_CHECKSTDIN Proc
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;  Proc Name:	$M_CHECKSTDIN
			     C1	;;
			     C1	;;  Function:
			     C1	;;
			     C1	;;  Inputs:	None
			     C1	;;
			     C1	;;  Outputs:
			     C1	;;
			     C1	;;  Regs Changed:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 00DF                        C1	$M_CHECKSTDIN PROC NEAR 				     ;AN001;
			     C1	
 00DF  B8 4400               C1		  MOV	  AX,DOS_IOCTL_GET_INFO 		     ;AN001; Get info using IOCTL
 00E2  BB 0000               C1		  MOV	  BX,STDIN				     ;AN001;
 00E5  33 D2                 C1		  XOR	  DX,DX 				     ;AN001;
 00E7  CD 21                 C1		  INT	  21H					     ;AN001;
			     C1	
 00E9  80 CE 01              C1		  OR	  DH,$M_CRIT_ERR_MASK			     ;AN001; Turn on bit
 00EC  B8 4401               C1		  MOV	  AX,DOS_IOCTL_SET_INFO 		     ;AN001; Set info using IOCTL
 00EF  CD 21                 C1		  INT	  21H					     ;AN001;
			     C1	
 00F1  C3                    C1		  RET						     ;AN001;
			     C1	
 00F2                        C1	$M_CHECKSTDIN ENDP					     ;AN001;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		ENDIF						     ;AN001; END of include for EOF Check
			     C1		ELSE						     ;AN001; Yes, THEN include it
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-62
DOS - Message Retriever - $M_CHECKSTDIN Proc                

			     C1		  PAGE
			     C1		  SUBTTL  DOS - Message Retriever - $M_CHECKSTDOUT Proc
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;  Proc Name:	$M_CHECKSTDOUT
			     C1	;;
			     C1	;;  Function:
			     C1	;;
			     C1	;;  Inputs:	None
			     C1	;;
			     C1	;;  Outputs:
			     C1	;;
			     C1	;;  Regs Changed:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 00F2                        C1	$M_CHECKSTDOUT PROC NEAR				     ;AN001;
			     C1	
 00F2  B8 4400               C1		  MOV	  AX,DOS_IOCTL_GET_INFO 		     ;AN001; Get info using IOCTL
 00F5  BB 0001               C1		  MOV	  BX,STDOUT				     ;AN001;
 00F8  33 D2                 C1		  XOR	  DX,DX 				     ;AN001;
 00FA  CD 21                 C1		  INT	  21H					     ;AN001;
			     C1	
 00FC  80 CE 01              C1		  OR	  DH,$M_CRIT_ERR_MASK			     ;AN001; Turn on bit
 00FF  B8 4401               C1		  MOV	  AX,DOS_IOCTL_SET_INFO 		     ;AN001; Set info using IOCTL
 0102  CD 21                 C1		  INT	  21H					     ;AN001;
			     C1	
 0104  C3                    C1		  RET						     ;AN001;
			     C1	
 0105                        C1	$M_CHECKSTDOUT ENDP					     ;AN001;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		ENDIF						     ;AN001;  END of include for Disk Full C
				heck
			     C1		ELSE						     ;;AN000;; Yes, THEN include it
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-63
DOS - Message Retriever - $M_CHECKSTDOUT Proc               

			     C1		  PAGE
			     C1		  SUBTTL  DOS - Message Retriever - $M_VERSION_CHECK Proc
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;  Proc Name:	$M_VERSION_CHECK
			     C1	;;
			     C1	;;  Function:	Determine if DOS version is within allowable limits
			     C1	;;
			     C1	;;  Inputs:	None
			     C1	;;
			     C1	;;  Outputs:	CARRY_FLAG = 1 if Incorrect DOS version
			     C1	;;		Registers set for SYSDISPMSG
			     C1	;;		CARRY_FLAG = 0 if Correct DOS version
			     C1	;;
			     C1	;;  Regs Changed: AX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	
 0105                        C1	check_amis:
 0105  50                    C1		push ax
 0106  1E                    C1		push ds
 0107  56                    C1		push si
 0108  06                    C1		push es
 0109  57                    C1		push di
 010A  52                    C1		push dx
 010B  50                    C1		push ax				; version number, last on stack
			     C1	
 010C  B4 00                 C1		mov ah, 0			; multiplex number = 0
 010E                        C1	check_amis_loop:
 010E  B0 00                 C1		mov al, 0
 0110  CD 2D                 C1		int 2Dh				; installation check
 0112  3C FF                 C1		cmp al, -1			; multiplexer installed ?
 0114  75 21                 C1		jne check_amis_next		; no -->
 0116  0E                    C1		 push cs
 0117  1F                    C1		 pop ds
 0118  BE 0000 R             C1		mov si, offset AMIS_SIGN_SEGMENT:amis_sign
			     C1						; ds:si -> amis_sign (for lDOS)
 011B  8E C2                 C1		mov es, dx			; es:di -> multiplexer's sign
 011D  B9 0008               C1		mov cx, 8			; 16 bytes
 0120  F3/ A7                C1		repe cmpsw			; compare
 0122  75 13                 C1		jne check_amis_next		; not us -->
 0124  8C CA                 C1		mov dx, cs			; dx:si -> amis_id
 0126  B0 11                 C1		mov al, 11h
 0128  CD 2D                 C1		int 2Dh				; CHG: al, bx, cx, dx, si, di
 012A  3C 00                 C1		cmp al, 0			; id call supported ?
 012C  74 0D                 C1		je check_amis_unsup		; no, allow if alt version -->
 012E  5A                    C1		pop dx
 012F  33 D2                 C1		xor dx, dx			; 2D.MM11 supported, mark that we need it
 0131  52                    C1		push dx
 0132  3C F0                 C1		cmp al, 0F0h			; CY if below 0F0h
 0134  EB 06 90              C1		jmp check_amis_done
			     C1	
 0137                        C1	check_amis_next:
 0137  FE C4                 C1		inc ah				; next multiplex number
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-64
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 0139  75 D3                 C1		jnz check_amis_loop		; ZR if done, NZ if more to check -->
 013B                        C1	check_amis_unsup:
 013B  F9                    C1		stc				; multiplexer not found
			     C1						;  or function not supported
 013C                        C1	check_amis_done:
			     C1			; CY if not an lDOS revision with our id supported,
			     C1			;  on stack: alt_expected_version if it's fine and either
			     C1			;   no multiplexer or func 11h not supported
			     C1			;  new_expected_version if not fine and either
			     C1			;   no multiplexer or func 11h not suppprted,
			     C1			;  0 if multiplexer found, func 11h supported, but
			     C1			;   our id is unsupported
			     C1			; NC if lDOS revision with multiplexer and our id supported
 013C  5B                    C1		pop bx
 013D  5A                    C1		pop dx
 013E  5F                    C1		pop di
 013F  07                    C1		pop es
 0140  5E                    C1		pop si
 0141  1F                    C1		pop ds
 0142  58                    C1		pop ax
 0143  73 1C                 C1		jnc alt_good_DOS		; id is supported -->
 0145  81 FB 1A05            C1		cmp bx, alt_expected_version	; is it fine ?
 0149  74 16                 C1		je alt_good_DOS			; yes --> (NC)
 014B  EB 17 90              C1		jmp $MIF25			; no, cancel program -->
			     C1	
 014E                        C1	$M_VERSION_CHECK PROC NEAR				     ;;AN000;;
			     C1								     ;;
 014E  B4 30                 C1		  MOV	  AH,DOS_GET_VERSION			     ;;AN000;; Check that version matches VE
				RSIONA.INC
 0150  CD 21                 C1		  INT	  21H					     ;;AN000;;
			     C1								     ;;
 0152  3D 2605               C1		cmp	ax,new_expected_version	; compare with DOS version
 0155  74 AE                 C1		je check_amis
 0157  3D 1A05               C1		cmp	ax,alt_expected_version	; compare with DOS version
 015A  74 A9                 C1		je check_amis
 015C  3D 0004               C1		  CMP	  AX,EXPECTED_VERSION			     ;;AN000;; IF DOS_MAJOR is correct
			     C1	;	  $IF	  E					     ;;AN000;;
 015F  75 03                 C1		  JNE $MIF25
 0161                        C1	alt_good_DOS:
 0161  F8                    C1		    CLC 					     ;;AN000;;	 Clear the carry flag
			     C1	;	  $ELSE 					     ;;AN000;; ELSE
 0162  EB 18                 C1		  JMP SHORT $MEN25
 0164                        C1	$MIF25:
			     C1	IF	    NOT     COMR				     ;;  ** Special case for RESIDENT COMMAN
				D.COM
 0164  3D 0002               C1		    CMP     AX,LOWEST_4CH_VERSION		     ;;AN000;; Does this version support AH 
				= 4CH
			     C1	;	    $IF     B					     ;;AN000;; No,
 0167  73 05                 C1		    JNB $MIF27
 0169  BB FFFF               C1		      MOV     BX,NO_HANDLE			     ;;AN000;;	 No handle (version doesn't 
				support)
			     C1	;	    $ELSE					     ;;AN000;; Yes,
 016C  EB 03                 C1		    JMP SHORT $MEN27
 016E                        C1	$MIF27:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-65
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 016E  BB 0002               C1		      MOV     BX,STDERR 			     ;;AN000;;	 Standard Error
			     C1	;	    $ENDIF					     ;;AN000;;
 0171                        C1	$MEN27:
			     C1	ENDIF
 0171  B8 0001               C1		    MOV     AX,1				     ;;AN000;; Set message # 1
 0174  B9 0000               C1		    MOV     CX,NO_REPLACE			     ;;AN000;; No replacable parms
 0177  B2 00                 C1		    MOV     DL,NO_INPUT 			     ;;AN000;; No input
 0179  B6 FF                 C1		    MOV     DH,UTILITY_MSG_CLASS		     ;;AN000;; Utility class message
 017B  F9                    C1		    STC 					     ;;AN000;; Set Carry Flag
			     C1	;	  $ENDIF					     ;;AN000;;
 017C                        C1	$MEN25:
			     C1								     ;;
 017C  C3                    C1		  RET						     ;;AN000;; Return
			     C1								     ;;
 017D                        C1	$M_VERSION_CHECK ENDP					     ;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		ENDIF						     ;;AN000;; END of include for DOS versio
				n check
			     C1	      ENDIF						     ;;AN000;; END of include for SYSLOADMSG
			     C1	; 
			     C1	; 
			     C1	    ENDIF						     ;;AN000;; END of include of MSG_DATA_ON
				LY
			     C1	ENDIF							     ;;AN000;; END of include of Structure o
				nly
			     C1	
			     1	   ENDIF				  ;	ENDIF 
				Msg_Services	<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg>			;an000;bgb
			     1						  ; 
 = 0000                      1	   $M_SERVICE = FALSE			  ;  Reset service flag 
			     1	   IRP	   var,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg>		  ;  FOR each variable in th
				e list 
			     1	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     1						  ;	For each service predefined 
			     1	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     1		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above) 
			     1		 ELSE				  ; 
			     1		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     1		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     1		   ENDIF			  ;	    ENDIF 
			     1		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     1		     IFIDN  <var>,<repl>	  ; 
			     1		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     1		     ENDIF			  ; 
			     1		   ENDM 			  ; 
			     1		   serv = TRUE			  ;	    Let the assembler know about the service 
			     1		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     1		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     1		 ENDIF				  ;	  ENDIF 
			     1	      ENDM				  ;	NEXT service 
			     1	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-66
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     1						  ; Continue further checks (If we add any more predefined 
			     1						  ;  function to the above IRP command, it generates a 
			     1						  ;  syntax error. We must continue the processing in anothe
				r 
			     1						  ;  MACRO called MSG_SERVICES2) 
			     1	      IF $M_INCLUDE			  ;	IF message class was requested 
			     1		 $M_INC var			  ;	   Include it as a message class 
			     1	      ENDIF				  ;	ENDIF 
			     1	   ENDM 				  ;  NEXT variable 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <DISPLAYmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <DISPLAYmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <DISPLAYmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <DISPLAYmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <DISPLAYmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <DISPLAYmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
 = FFFF                      3		   DISPLAYmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-67
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DISPLAYmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DISPLAYmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-68
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHARmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NUMmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <TIMEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-69
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DATEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHARmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHARmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHARmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-70
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHARmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <CHARmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <CHARmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
			     4		     IFIDN  <CHARmsg>,<CHARmsg>	  ; 
 = FFFF                      4		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     4		     ENDIF			  ; 
 = FFFF                      3		   CHARmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHARmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-71
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DISPLAYmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHARmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<DISK_PROC> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-72
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NUMmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <TIMEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DATEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-73
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <NUMmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <NUMmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <NUMmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <NUMmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <NUMmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-74
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <NUMmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
			     4		     IFIDN  <NUMmsg>,<NUMmsg>	  ; 
 = FFFF                      4		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     4		     ENDIF			  ; 
 = FFFF                      3		   NUMmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <NUMmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DISPLAYmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-75
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5		 IFDIF <DISPLAYmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHARmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NUMmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<DISK_PROC> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-76
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <TIMEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DATEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-77
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     2		 IFDIF <TIMEmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <TIMEmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <TIMEmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <TIMEmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <TIMEmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <TIMEmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
			     4		     IFIDN  <TIMEmsg>,<TIMEmsg>	  ; 
 = FFFF                      4		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     4		     ENDIF			  ; 
 = FFFF                      3		   TIMEmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-78
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <TIMEmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DISPLAYmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHARmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-79
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NUMmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <TIMEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-80
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5		 IFDIF <TIMEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DATEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <DATEmsg>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <DATEmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <DATEmsg>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <DATEmsg>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-81
DOS - Message Retriever - $M_VERSION_CHECK Proc             

				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 ELSE				  ; 
			     3		   IFDIF <DATEmsg>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
 = 0000                      3		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     3		   ENDIF			  ;	    ENDIF 
			     3		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     3		     IFIDN  <DATEmsg>,<repl>	  ; 
			     3		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     3		     ENDIF			  ; 
			     3		   ENDM 			  ; 
			     4		     IFIDN  <DATEmsg>,<DATEmsg>	  ; 
 = FFFF                      4		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     4		     ENDIF			  ; 
 = FFFF                      3		   DATEmsg = TRUE			  ;	    Let the assembler know about the service
				 
 = FFFF                      3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
 = 0000                      3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <DATEmsg>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<DISPLAYmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-82
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DISPLAYmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DISPLAYmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHARmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHARmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <NUMmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-83
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <NUMmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <TIMEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <TIMEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <DATEmsg>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-84
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <DATEmsg>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     1						  ; 
			     1	   IF $M_SERVICE			  ;	IF it any services were requested THEN 
			     1	     INCLUDE MSGSERV.ASM		  ;	   THEN include module to get service 
			     C1	; * * * * * * * * * * * * START OF SPECIFICATIONS * * * * * * * * * * * * * * *
			     C1	;
			     C1	; MODULE NAME: MSGSERV.SAL
			     C1	;
			     C1	; DESCRIPTIVE NAME: Message Services SALUT file
			     C1	;
			     C1	; FUNCTION: This module incorporates all the messages services and
			     C1	;	    is called upon at build time to INCLUDE the code requested
			     C1	;	    by a utility. Code is requested using the macro MSG_SERVICES.
			     C1	;
			     C1	; ENTRY POINT: Since this a collection of subroutines, entry point is at
			     C1	;	    requested procedure.
			     C1	;
			     C1	; INPUT: Since this a collection of subroutines, input is dependent on function
			     C1	;	    requested.
			     C1	;
			     C1	; EXIT-NORMAL: In all cases, CARRY FLAG = 0
			     C1	;
			     C1	; EXIT-ERROR: In all cases, CARRY FLAG = 1
			     C1	;
			     C1	; INTERNAL REFERENCES: (list of included subroutines)
			     C1	;
			     C1	;	- SYSLOADMSG
			     C1	;	- SYSDISPMSG
			     C1	;	- SYSGETMSG
			     C1	;
			     C1	;
			     C1	; EXTERNAL REFERENCES: None
			     C1	;
			     C1	; NOTES: At build time, some modules must be included. These are only included
			     C1	;	 once using assembler switches. Other logic is included at the request
			     C1	;	 of the utility.
			     C1	;
			     C1	;	 COMR and COMT are assembler switches to conditionally assemble code
			     C1	;	 for RESIDENT COMMAND.COM and TRANSIENT COMMAND.COM to reduce resident
			     C1	;	 storage and multiple EQUates.
			     C1	;
			     C1	; REVISION HISTORY: Created MAY 1987
			     C1	;
			     C1	;     Label: DOS - - Message Retriever
			     C1	;	     (c) Copyright 1988 Microsoft
			     C1	;
			     C1	;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-85
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     C1	; * * * * * * * * * * * * END OF SPECIFICATIONS * * * * * * * * * * * * * * * *
			     C1	; Page 
			     C1	
			     C1	;   $SALUT	     $M  (2,5,22,62)			     ;;AN000;; Set SALUT formatting
			     C1	
			     C1	ELSE							     ;;AN000;;	ELSE if we have already incl
				uded the STRUCTURES
			     C1	; 
			     C1	;   $SALUT  $M	(2,5,13,62)				     ;;AN000;;	Set SALUT formatting for cod
				e section
			     C1	
			     C1	
			     C1	; 
			     C1	    IF	    NOT  $M_MSGDATA_ONLY			     ;;AN000;; IF this was a request for onl
				y the data table THEN
			     C1								     ;; 	don't include any more code
			     C1								     ;;AN000;; Figure out what other code to
				 include
			     C1	;
			     C1	
			     C1	; 
			     C1	; 
			     C1	; 
			     C1	      IF      DISPLAYmsg				     ;;AN000;; Is the request to include the
				 code for SYSGETMSG ?
 = 0000                      C1		DISPLAYmsg =  FALSE				     ;;AN000;; Yes, THEN include it and rese
				t flag
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-86
DOS - Message Retriever - $M_VERSION_CHECK Proc             

			     C1		PAGE
			     C1		SUBTTL	DOS - Message Retriever - DISPMSG.ASM Module
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;  Proc Name:	SYSDISPMSG
			     C1	;;
			     C1	;;  Function:	The DISPLAY service will output a defined message to a handle
			     C1	;;		requested by the caller. It also provides function to display
			     C1	;;		messages when handles are not applicable (ie. DOS function calls
			     C1	;;		00h to 0Ah) Replaceable parameters are allowed and are
			     C1	;;		defined previous to entry.
			     C1	;;
			     C1	;;		It is assumes that a PRELOAD function has already determined
			     C1	;;		the addressibilty internally to the message retriever services.
			     C1	;;  Inputs:
			     C1	;;
			     C1	;;  Outputs:
			     C1	;;
			     C1	;;  Psuedocode:
			     C1	;;		Save registers needed later
			     C1	;;		Get address of the message requested
			     C1	;;		IF Message number exists THEN
			     C1	;;		  IF replacable parameters were specified THEN
			     C1	;;		     Display message with replacable parms
			     C1	;;		  ELSE
			     C1	;;		     Display string without replacable parms
			     C1	;;		  ENDIF
			     C1	;;		  IF character input was requested THEN
			     C1	;;		     Wait for character input
			     C1	;;		  ENDIF
			     C1	;;		  Clear CARRY FLAG
			     C1	;;		ELSE
			     C1	;;		   Set CARRY FLAG
			     C1	;;		ENDIF
			     C1	;;		Return
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	ELSE							     ;;AN000;;
 017D                        C1		SYSDISPMSG PROC NEAR				     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
			     C1								     ;;
			     C1	;; Save registers and values needed later
			     C1	
 017D  50                    C1		PUSH	AX					     ;;AN000;; Save changed REGs
 017E  53                    C1		PUSH	BX					     ;;AN000;;
 017F  51                    C1		PUSH	CX					     ;;AN000;;
 0180  55                    C1		PUSH	BP					     ;;AN000;;
 0181  57                    C1		PUSH	DI					     ;;AN000;; Save pointer to input buffer 
				(offset)
 0182  06                    C1		PUSH	ES					     ;;AN000;; Save pointer to input buffer 
				(segment)
 0183  52                    C1		PUSH	DX					     ;;AN000;; Save Input/Class request
			     C1	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-87
DOS - Message Retriever - DISPMSG.ASM Module                

 0184  8B E9                 C1		MOV	BP,CX					     ;;AN000;; Use BP to hold replace count
 0186  89 1E 04B6 R          C1		MOV	WORD PTR $M_RT.$M_HANDLE,BX		     ;;AN000;; Save handle
 018A  88 36 04BB R          C1		MOV	BYTE PTR $M_RT.$M_CLASS,DH		     ;;AN004;; Save class
			     C1	
			     C1	;; Get address of the message requested
			     C1	
			     C1	ELSE							     ;;AN000;;
 018E  E8 043C R             C1		CALL	$M_GET_MSG_ADDRESS			     ;;AN000;; Scan thru classes to find mes
				sage
			     C1	ENDIF							     ;;AN000;;
 0191  0B C9                 C1		OR	CX,CX					     ;;AN000;; Was message found?
			     C1	;	$IF	NZ					     ;;AN000;;	 YES, Message address in ES:
				DI
 0193  74 1C                 C1		JZ $MIF93
			     C1	
			     C1	;; Test if replacable parameters were specified
			     C1	
 0195  0B ED                 C1		  OR	  BP,BP 				     ;;AN000;;	 Were replacable parameters 
				requested
			     C1	;	  $IF	  Z					     ;;AN000;;
 0197  75 05                 C1		  JNZ $MIF94
			     C1	
			     C1	;; Display string without replacable parms
			     C1	
 0199  E8 01C2 R             C1		    CALL    $M_DISPLAY_STRING			     ;;AN000;; No, great . . . Display messa
				ge
			     C1	;	  $ELSE 					     ;;AN000;;
 019C  EB 03                 C1		  JMP SHORT $MEN94
 019E                        C1	$MIF94:
			     C1	IF	    $M_REPLACE					     ;;AN000;;
			     C1	
			     C1	;; Display message with replacable parms
			     C1	
 019E  E8 030E R             C1		    CALL    $M_DISPLAY_MESSAGE			     ;;AN000;;	 Display the message with su
				bstitutions
			     C1	ENDIF							     ;;AN000;;
			     C1	;	  $ENDIF					     ;;AN000;;
 01A1                        C1	$MEN94:
			     C1	;	  $IF	  NC
 01A1  72 08                 C1		  JC $MIF97
			     C1	
 01A3  5A                    C1		    POP     DX					     ;;AN000;; Get Input/Class request
			     C1	
 01A4  E8 0269 R             C1		    CALL    $M_ADD_CRLF 			     ;;AN004;; Check if we need to add the C
				R LF chars.
			     C1	
 01A7  07                    C1		    POP     ES					     ;;AN000;; Get location of input buffer 
				(if specified)
 01A8  5F                    C1		    POP     DI					     ;;AN000;;
			     C1	
			     C1	;; Test if character input was requested
			     C1	
			     C1	;	  $ELSE 					     ;;AN000;;
 01A9  EB 04                 C1		  JMP SHORT $MEN97
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-88
DOS - Message Retriever - DISPMSG.ASM Module                

 01AB                        C1	$MIF97:
 01AB  83 C4 06              C1		    ADD     SP,6				     ;;AN000;;
 01AE  F9                    C1		    STC 					     ;;AN000;; Reset carry flag
			     C1	;	  $ENDIF					     ;;AN000;;
 01AF                        C1	$MEN97:
			     C1	;	$ELSE						     ;;AN000;; No,
 01AF  EB 04                 C1		JMP SHORT $MEN93
 01B1                        C1	$MIF93:
 01B1  07                    C1		  POP	  ES					     ;;AN000;;	 Get pointer to input buffer
				 (segment)
 01B2  5F                    C1		  POP	  DI					     ;;AN000;;	 Get base pointer to first s
				ublist (offset)
 01B3  5A                    C1		  POP	  DX					     ;;AN000;;	 Get base pointer to first s
				ublist (segment)
 01B4  F9                    C1		  STC						     ;;AN000;;	 Set carry flag
			     C1	;	$ENDIF						     ;;AN000;;
 01B5                        C1	$MEN93:
			     C1								     ;;
			     C1	;	$IF	NC					     ;;AN000;; Was there an error?
 01B5  72 06                 C1		JC $MIF104
 01B7  5D                    C1		  POP	  BP					     ;;AN000;; No,
 01B8  59                    C1		  POP	  CX					     ;;AN000;;
 01B9  5B                    C1		  POP	  BX					     ;;AN000;;
			     C1	ELSE							     ;AN000;
 01BA  58                    C1		  POP	  AX					     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
			     C1	;	$ELSE						     ;;AN000;;	Yes,
 01BB  EB 04                 C1		JMP SHORT $MEN104
 01BD                        C1	$MIF104:
 01BD  83 C4 08              C1		  ADD	  SP,8					     ;;AN000;;	   Eliminate from stack
 01C0  F9                    C1		  STC						     ;;AN000;;
			     C1	;	$ENDIF						     ;;AN000;;
 01C1                        C1	$MEN104:
			     C1								     ;;
 01C1  C3                    C1		RET						     ;;AN000;; Return
			     C1								     ;;
 01C2                        C1		SYSDISPMSG ENDP 				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	; 
			     C1	;;
			     C1	;;	PROC NAME: $M_DISPLAY_STRING
			     C1	;;
			     C1	;;	FUNCTION:  Will display or write string
			     C1	;;	INPUTS:    ES:DI points to beginning of message
			     C1	;;		   CX contains the length of string to write (if applicable)
			     C1	;;	OUTPUTS:   None
			     C1	;;	REGS Revised: None
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 01C2                        C1	$M_DISPLAY_STRING PROC NEAR				     ;;AN000;;
			     C1								     ;;
 01C2  50                    C1		PUSH	AX					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-89
DOS - Message Retriever - DISPMSG.ASM Module                

 01C3  53                    C1		PUSH	BX					     ;;AN000;;
 01C4  52                    C1		PUSH	DX					     ;;AN000;;
			     C1								     ;;
 01C5  8B 1E 04B6 R          C1		MOV	BX,$M_RT.$M_HANDLE			     ;;AN000;; Retrieve handle
			     C1								     ;;
			     C1	ELSE
 01C9  83 FB FF              C1		CMP	BX,$M_NO_HANDLE 			     ;;AN000;; Was there a handle specified?
			     C1	;	$IF	E					     ;;AN000;;
 01CC  75 05                 C1		JNE $MIF107
 01CE  E8 01FD R             C1		  CALL	  $M_DISPLAY_$_STRING			     ;;AN000;; No, display $ terminated stri
				ng
			     C1	;	$ELSE						     ;;AN000;;
 01D1  EB 03                 C1		JMP SHORT $MEN107
 01D3                        C1	$MIF107:
 01D3  E8 0232 R             C1		  CALL	  $M_DISPLAY_H_STRING			     ;;AN000;; Yes, display string to handle
			     C1	;	$ENDIF						     ;;AN000;;
 01D6                        C1	$MEN107:
			     C1								     ;AN001;
			     C1	;	$IF	C					     ;;AN000;;	Was there an error?
 01D6  73 0F                 C1		JNC $MIF110
 01D8  B4 59                 C1		  MOV	  AH,DOS_GET_EXT_ERROR			     ;;AN000;;	Yes,
 01DA  BB 0000               C1		  MOV	  BX,DOS_GET_EXT_ERROR_BX		     ;;AN000;;	  Get extended error
 01DD  CD 21                 C1		  INT	  21H					     ;;AN000;;
 01DF  32 E4                 C1		  XOR	  AH,AH 				     ;;AN000;;	  Clear AH
 01E1  83 C4 06              C1		  ADD	  SP,6					     ;;AN000;;	  Clean up stack
 01E4  F9                    C1		  STC						     ;;AN000;;	  Flag that there was an err
				or
			     C1	;	$ELSE						     ;;AN000;;	No,
 01E5  EB 10                 C1		JMP SHORT $MEN110
 01E7                        C1	$MIF110:
 01E7  83 FB FF              C1		  CMP	  BX,$M_NO_HANDLE			     ;;AN000;; Was there a handle specified?
			     C1	;	  $IF	  NE					     ;;AN000;;
 01EA  74 0B                 C1		  JE $MIF112
 01EC  3B C1                 C1		    CMP     AX,CX				     ;AN001;	 Was it ALL written?
			     C1	;	    $IF     NE					     ;AN001;	 No,
 01EE  74 07                 C1		    JE $MIF113
 01F0  E8 0260 R             C1		      CALL    $M_GET_EXT_ERR_39 		     ;AN001;	   Set Extended error
 01F3  83 C4 06              C1		      ADD     SP,6				     ;AN001;	   Clean up stack
 01F6  F9                    C1		      STC					     ;AN001;	   Flag that there was an er
				ror
			     C1	;	    $ENDIF					     ;AN001;
 01F7                        C1	$MIF113:
			     C1	;	  $ENDIF					     ;AN001;
 01F7                        C1	$MIF112:
			     C1	;	$ENDIF						     ;;AN000;;
 01F7                        C1	$MEN110:
			     C1	ENDIF
			     C1	;	$IF	NC					     ;;AN000;;	Was there ANY error?
 01F7  72 03                 C1		JC $MIF117
 01F9  5A                    C1		  POP	  DX					     ;;AN000;;	Restore regs
 01FA  5B                    C1		  POP	  BX					     ;;AN000;;
 01FB  58                    C1		  POP	  AX					     ;;AN000;;
			     C1	;	$ENDIF						     ;;AN000;;
 01FC                        C1	$MIF117:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-90
DOS - Message Retriever - DISPMSG.ASM Module                

 01FC  C3                    C1		RET						     ;;AN000;; Return
			     C1								     ;;
 01FD                        C1	$M_DISPLAY_STRING ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_DISPLAY_$_STRING
			     C1	;;
			     C1	;;	FUNCTION:  Will display a $ terminated string
			     C1	;;	INPUTS:    ES:DI points to beginning of message text (not the length)
			     C1	;;	OUPUTS:    None
			     C1	;;	REGS USED: AX,DX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 01FD                        C1	$M_DISPLAY_$_STRING PROC NEAR				     ;;AN000;;
			     C1								     ;;
 01FD  1E                    C1		PUSH	DS					     ;;AN000;;
 01FE  06                    C1		PUSH	ES					     ;;AN000;;
 01FF  1F                    C1		POP	DS					     ;;AN000;; Set DS to segment of message 
				text
			     C1	IF	NOT	COMR
 0200  83 F9 01              C1		CMP	CX,$M_SINGLE_CHAR			     ;;AN000;; Is this a single character?
			     C1	;	$IF	E					     ;;AN000;; Yes,
 0203  75 1B                 C1		JNE $MIF119
 0205  B4 02                 C1		  MOV	  AH,DOS_DISP_CHAR			     ;;AN000;;	 DOS Function to display CHA
				RACTER
 0207  26: 8A 15             C1		  MOV	  DL,BYTE PTR ES:[DI]			     ;;AN000;;	 Get the character
 020A  CD 21                 C1		  INT	  21H					     ;;AN000;;	 Write character
 020C  1F                    C1		  POP	  DS					     ;;AN000;; Set DS to segment of message 
				text
 020D  8A C2                 C1		  MOV	  AL,DL 				     ;;AN000;;	 Get the character in AL
 020F  E8 0280 R             C1		  CALL	  $M_IS_IT_DBCS 			     ;;AN000;;	 Is this the first byte of a
				 DB character
 0212  1E                    C1		  PUSH	  DS					     ;;AN000;;
 0213  06                    C1		  PUSH	  ES					     ;;AN000;;
 0214  1F                    C1		  POP	  DS					     ;;AN000;; Set DS to segment of message 
				text
			     C1	;	  $IF	  C					     ;;AN000;;	 Yes,
 0215  73 07                 C1		  JNC $MIF120
 0217  26: 8A 55 01          C1		    MOV     DL,BYTE PTR ES:[DI]+1		     ;;AN000;; Get the next character
 021B  CD 21                 C1		    INT     21H 				     ;;AN000;;	 Write character
 021D  F8                    C1		    CLC 					     ;;AN000;;	 Clear the DBCS indicator
			     C1	;	  $ENDIF					     ;;AN000;;
 021E                        C1	$MIF120:
			     C1	;	$ELSE						     ;;AN000;; No,
 021E  EB 0F                 C1		JMP SHORT $MEN119
 0220                        C1	$MIF119:
			     C1	ENDIF
 0220  B4 02                 C1		  MOV	  AH,DOS_DISP_CHAR			     ;;AN000;;	 DOS Function to display CHA
				RACTER
			     C1	;	  $DO						     ;;AN002;; No,
 0222                        C1	$MDO123:
 0222  0B C9                 C1		    OR	    CX,CX				     ;;AN002;;	 Are there any left to displ
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-91
DOS - Message Retriever - DISPMSG.ASM Module                

				ay?
			     C1	;	  $LEAVE  Z					     ;;AN002;;	 Yes,
 0224  74 09                 C1		  JZ $MEN123
 0226  26: 8A 15             C1		    MOV     DL,BYTE PTR ES:[DI] 		     ;;AN002;;	   Get the character
 0229  CD 21                 C1		    INT     21H 				     ;;AN002;;	   Display the character
 022B  47                    C1		    INC     DI					     ;;AN002;;	   Set pointer to next chara
				cter
 022C  49                    C1		    DEC     CX					     ;;AN002;;	   Count this character
			     C1	;	  $ENDDO  Z					     ;;AN002;; No,
 022D  75 F3                 C1		  JNZ $MDO123
 022F                        C1	$MEN123:
			     C1	IF	  NOT	  COMR
			     C1	;	$ENDIF						     ;;AN000;;
 022F                        C1	$MEN119:
			     C1	ENDIF
 022F  F8                    C1		CLC						     ;;AN000;;	 Char functions used don't r
				eturn carry as error
 0230  1F                    C1		POP	DS					     ;;AN000;;
 0231  C3                    C1		RET						     ;;AN000;;
			     C1								     ;;
 0232                        C1	$M_DISPLAY_$_STRING ENDP				     ;;AN000;;
			     C1								     ;;
			     C1	IF	NOT	COMR
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_DISPLAY_H_STRING
			     C1	;;
			     C1	;;	FUNCTION:  Will display a string to a specified handle
			     C1	;;	INPUTS:    ES:DI points to beginning of message
			     C1	;;		   CX contains the number of bytes to write
			     C1	;;		   BX contains the handle to write to
			     C1	;;	OUPUTS:    None
			     C1	;;	REGS USED: AX,DX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0232                        C1	$M_DISPLAY_H_STRING PROC NEAR				     ;;AN000;;
			     C1								     ;;
 0232  33 C0                 C1		XOR	AX,AX					     ;;AN002;; Set number of bytes written t
				o 0
 0234  0B C9                 C1		OR	CX,CX					     ;;AN002;; For performance, don't write 
				if not necessary
			     C1	;	$IF	NZ					     ;;AN002;; Any chars to write?
 0236  74 27                 C1		JZ $MIF127
 0238  1E                    C1		  PUSH	  DS					     ;;AN000;; Yes,
 0239  06                    C1		  PUSH	  ES					     ;;AN000;;
 023A  1F                    C1		  POP	  DS					     ;;AN000;;	 Set DS to segment of messag
				e text
 023B  B4 40                 C1		  MOV	  AH,DOS_WRITE_HANDLE			     ;;AN000;;	 DOS function to write to a 
				handle
 023D  8B D7                 C1		  MOV	  DX,DI 				     ;;AN000;;	 Pointer to data to write
 023F  83 F9 01              C1		  CMP	  CX,$M_SINGLE_CHAR			     ;;AN000;;	 Is this a single character?
			     C1	;	  $IF	  E					     ;;AN000;;	 Yes,
 0242  75 18                 C1		  JNE $MIF128
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-92
DOS - Message Retriever - DISPMSG.ASM Module                

 0244  CD 21                 C1		    INT     21H 				     ;;AN000;;	   Write character
 0246  1F                    C1		    POP     DS					     ;;AN000;;	     Set DS to segment of me
				ssage text
 0247  50                    C1		    PUSH    AX					     ;;AN000;;
 0248  26: 8A 05             C1		    MOV     AL,BYTE PTR ES:[DI] 		     ;;AN000;;	     Get the character
 024B  E8 0280 R             C1		    CALL    $M_IS_IT_DBCS			     ;;AN000;;	     Is this the first byte 
				of a DB character
 024E  58                    C1		    POP     AX					     ;;AN000;;	     Set DS to segment of me
				ssage text
 024F  1E                    C1		    PUSH    DS					     ;;AN000;;
 0250  06                    C1		    PUSH    ES					     ;;AN000;;
 0251  1F                    C1		    POP     DS					     ;;AN000;;	     Set DS to segment of me
				ssage text
			     C1	;	    $IF     C					     ;;AN000;;	     Yes,
 0252  73 06                 C1		    JNC $MIF129
 0254  F8                    C1		      CLC					     ;;AN000;;	      Clear the DBCS indicat
				or
 0255  B4 40                 C1		      MOV     AH,DOS_WRITE_HANDLE		     ;;AN000;;	      DOS function to write 
				to a handle
 0257  42                    C1		      INC     DX				     ;;AN000;;	      Point to next characte
				r
 0258  CD 21                 C1		      INT     21H				     ;;AN000;;	      Write character
			     C1	;	    $ENDIF					     ;;AN000;;
 025A                        C1	$MIF129:
			     C1	;	  $ELSE 					     ;;AN000;;	 No,
 025A  EB 02                 C1		  JMP SHORT $MEN128
 025C                        C1	$MIF128:
 025C  CD 21                 C1		    INT     21H 				     ;;AN000;;	   Write String at DS:SI to 
				handle
			     C1	;	  $ENDIF					     ;;AN000;;
 025E                        C1	$MEN128:
 025E  1F                    C1		  POP	  DS					     ;;AN000;;
			     C1	;	$ENDIF						     ;;AN002;;
 025F                        C1	$MIF127:
			     C1								     ;;
 025F  C3                    C1		RET						     ;;AN000;;
			     C1								     ;;
 0260                        C1	$M_DISPLAY_H_STRING ENDP				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_GET_EXT_ERR_39
			     C1	;;
			     C1	;;	FUNCTION:  Will set registers for extended error #39
			     C1	;;	INPUTS:    None
			     C1	;;	OUPUTS:    AX,BX,CX set
			     C1	;;	REGS USED:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0260                        C1	$M_GET_EXT_ERR_39 PROC NEAR				     ;AN001;
			     C1								     ;;
 0260  B8 0027               C1		MOV	AX,EXT_ERR_39				     ;AN001; Set AX=39
 0263  BB 0004               C1		MOV	BX,(ERROR_CLASS_39 SHR 8) + ACTION_39	     ;AN001; Set BH=1 BL=4
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-93
DOS - Message Retriever - DISPMSG.ASM Module                

 0266  B5 01                 C1		MOV	CH,LOCUS_39				     ;AN001; Set CH=1
			     C1								     ;AN001;
 0268  C3                    C1		RET						     ;AN001;
			     C1								     ;;
 0269                        C1	$M_GET_EXT_ERR_39 ENDP					     ;AN001;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	ENDIF
			     C1	;;
			     C1	;;	PROC NAME: $M_ADD_CRLF
			     C1	;;
			     C1	;;	FUNCTION:  Will decide whether to display a CRLF
			     C1	;;	INPUTS:    DX contains the Input/Class requested
			     C1	;;	OUTPUTS:   None
			     C1	;;	REGS Revised: CX,ES,DI
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0269                        C1	$M_ADD_CRLF PROC NEAR					     ;;AN004;;
			     C1								     ;;
 0269  80 FE FF              C1		CMP	DH,UTILITY_MSG_CLASS			     ;;AN004;; Is it a utility message?
			     C1	;	$IF	NE					     ;;AN004;; No,
 026C  74 11                 C1		JE $MIF134
 026E  F6 C6 80              C1		  TEST	  DH,$M_NO_CRLF_MASK			     ;;AN004;;	 Are we to supress the CR LF
				?
			     C1	;	  $IF	  Z					     ;;AN004;;	 No,
 0271  75 0C                 C1		  JNZ $MIF135
 0273  1E                    C1		    PUSH    DS					     ;;AN004;;
 0274  07                    C1		    POP     ES					     ;;AN004;;	  Set ES to data segment
 0275  8D 3E 04B9 R          C1		    LEA     DI,$M_RT.$M_CRLF			     ;;AN004;;	  Point at CRLF message
 0279  B9 0002               C1		    MOV     CX,$M_CRLF_SIZE			     ;;AN004;;	  Set the message size
 027C  E8 01C2 R             C1		    CALL    $M_DISPLAY_STRING			     ;;AN004;;	  Display the CRLF
			     C1	;	  $ENDIF					     ;;AN004;;
 027F                        C1	$MIF135:
			     C1	;	$ENDIF						     ;;AN004;;
 027F                        C1	$MIF134:
 027F  C3                    C1		RET						     ;;AN004;; Return
			     C1								     ;;
 0280                        C1	$M_ADD_CRLF ENDP					     ;;AN004;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_IS_IT_DBCS
			     C1	;;
			     C1	;;	FUNCTION:  Will decide whether character is Single or Double Byte
			     C1	;;	INPUTS:    AL contains the byte to be checked
			     C1	;;	OUPUTS:    Carry flag = 0 if byte is NOT in DBCS range
			     C1	;;		   Carry flag = 1 if byte IS in DBCS range
			     C1	;;	REGS USED: All restored
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0280                        C1	$M_IS_IT_DBCS PROC NEAR 				     ;;AN000;;
			     C1								     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-94
DOS - Message Retriever - DISPMSG.ASM Module                

 0280  06                    C1		PUSH	ES					     ;;AN000;; Save Extra segment register
 0281  57                    C1		PUSH	DI					     ;;AN000;; Save SI register
			     C1								     ;;
 0282  C4 3E 04B2 R          C1		LES	DI,$M_RT.$M_DBCS_VEC			     ;;AN000;;
 0286  0B FF                 C1		OR	DI,DI					     ;;AN000;; Was the DBCS vector set?
			     C1	;	$IF	NZ					     ;;AN000;;
 0288  74 17                 C1		JZ $MIF138
			     C1	;	  $DO						     ;;AN000;;
 028A                        C1	$MDO139:
 028A  26: 83 3D 00          C1		    CMP     WORD PTR ES:[DI],$M_DBCS_TERM	     ;;AN000;; Is this the terminating flag?
 028E  F8                    C1		    CLC 					     ;;AN000;;
			     C1	;	  $LEAVE  E					     ;;AN000;;
 028F  74 10                 C1		  JE $MEN139
			     C1								     ;;        No,
 0291  26: 3A 05             C1		    CMP     AL,BYTE PTR ES:[DI] 		     ;;AN000;;	  Does the character fall in
				 the DBCS range?
			     C1	;	    $IF     AE,AND				     ;;AN000;;
 0294  72 07                 C1		    JNAE $MIF141
 0296  26: 3A 45 01          C1		    CMP     AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	  Does the character fall in
				 the DBCS range?
			     C1	;	    $IF     BE					     ;;AN000;;
 029A  77 01                 C1		    JNBE $MIF141
 029C  F9                    C1		      STC					     ;;AN000;;	  Yes,
			     C1	;	    $ENDIF					     ;;AN000;;	     Set carry flag
 029D                        C1	$MIF141:
 029D  47                    C1		    INC     DI					     ;;AN000;;	  No,
 029E  47                    C1		    INC     DI					     ;;AN000;;	     Go to next vector
			     C1	;	  $ENDDO					     ;;AN000;;
 029F  EB E9                 C1		  JMP SHORT $MDO139
 02A1                        C1	$MEN139:
			     C1	;	$ENDIF						     ;;AN000;;
 02A1                        C1	$MIF138:
			     C1	
 02A1  5F                    C1		POP	DI					     ;;AN000;;
 02A2  07                    C1		POP	ES					     ;;AN000;; Restore SI register
 02A3  C3                    C1		RET						     ;;AN000;; Return
			     C1								     ;;
 02A4                        C1	$M_IS_IT_DBCS ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_CONVERT2ASC
			     C1	;;
			     C1	;;	FUNCTION: Convert a binary number to a ASCII string
			     C1	;;	INPUTS: DX:AX contains the number to be converted
			     C1	;;		$M_RT_DIVISOR contains the divisor
			     C1	;;	OUPUTS: CX contains the number of characters
			     C1	;;		Top of stack  --> Last character
			     C1	;;				     . . .
			     C1	;;		Bot of stack  --> First character
			     C1	;;	REGS USED:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-95
DOS - Message Retriever - DISPMSG.ASM Module                

 02A4                        C1	$M_CONVERT2ASC PROC NEAR				     ;;AN000;;
			     C1								     ;;
 02A4  8F 06 04BC R          C1		POP	[$M_RT.$M_RETURN_ADDR]			     ;;AN000;; Save Return Address
 02A8  33 DB                 C1		XOR	BX,BX					     ;;AN000;; Use BP as a swapping register
			     C1								     ;;
 02AA  93                    C1		XCHG	BX,AX					     ;;AN000;; Initialize - Low Word in BP
 02AB  92                    C1		XCHG	AX,DX					     ;;AN000;;		  - High Word in AX
			     C1	;	$DO						     ;;AN000;; DO UNTIL Low Word becomes zer
				o
 02AC                        C1	$MDO145:
 02AC  F7 36 04C0 R          C1		  DIV	  $M_RT.$M_DIVISOR			     ;;AN000;; Divide High Word by divisor
 02B0  93                    C1		  XCHG	  BX,AX 				     ;;AN000;; Setup to divide Low Word usin
				g remainder
			     C1								     ;; 	and save reduced High Word i
				n BP
 02B1  F7 36 04C0 R          C1		  DIV	  $M_RT.$M_DIVISOR			     ;;AN000;; Divide Low Word by divisor
 02B5  83 FA 09              C1		  CMP	  DX,9					     ;;AN000;;	Make a digit of the remainde
				r
			     C1	;	  $IF	  A					     ;;AN000;;	IF 10 to 15,
 02B8  76 05                 C1		  JNA $MIF146
 02BA  80 C2 37              C1		    ADD     DL,55				     ;;AN000;;	   Make A to F ASCII
			     C1	;	  $ELSE 					     ;;AN000;;	IF 0 to 9,
 02BD  EB 03                 C1		  JMP SHORT $MEN146
 02BF                        C1	$MIF146:
 02BF  80 C2 30              C1		    ADD     DL,'0'				     ;;AN000;;	   Make 0 to 9 ASCII
			     C1	;	  $ENDIF					     ;;AN000;;
 02C2                        C1	$MEN146:
 02C2  52                    C1		  PUSH	  DX					     ;;AN000;; Save the digit on the stack
 02C3  41                    C1		  INC	  CX					     ;;AN000;; Count that digit
 02C4  0B C0                 C1		  OR	  AX,AX 				     ;;AN000;; Are we done?
			     C1	;	$LEAVE	Z,AND					     ;;AN000;;
 02C6  75 04                 C1		JNZ $MLL149
 02C8  0B DB                 C1		  OR	  BX,BX 				     ;;AN000;; AX and BX must be ZERO!!
			     C1	;	$LEAVE	Z					     ;;AN000;; No,
 02CA  74 39                 C1		JZ $MEN145
 02CC                        C1	$MLL149:
			     C1	IF	  NOT	  COMR
 02CC  83 F9 03              C1		  CMP	  CX,$M_FIRST_THOU			     ;;AN000;; Are we at the first thousands
				 mark
			     C1	;	  $IF	  E					     ;;AN000;; Yes,
 02CF  75 0D                 C1		  JNE $MIF150
 02D1  80 7C 0A 2C           C1		    CMP     $M_SL.$M_S_PAD,$M_COMMA		     ;;AN000;; Is the pad character a comma?
			     C1	;	    $IF     E					     ;;AN000;; Yes,
 02D5  75 05                 C1		    JNE $MIF151
 02D7  FF 36 04C9 R          C1		      PUSH    WORD PTR $M_RT.$M_THOU_SEPARA	     ;;AN000;; Insert a thousand separator
 02DB  41                    C1		      INC     CX				     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;;
 02DC                        C1	$MIF151:
			     C1	;	  $ELSE 					     ;;AN000;; No,
 02DC  EB 22                 C1		  JMP SHORT $MEN150
 02DE                        C1	$MIF150:
 02DE  83 F9 06              C1		    CMP     CX,$M_SECOND_THOU			     ;;AN000;;	 Are we at the first thousan
				ds mark
			     C1	;	    $IF     E					     ;;AN000;;	      Yes,
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-96
DOS - Message Retriever - DISPMSG.ASM Module                

 02E1  75 0D                 C1		    JNE $MIF154
 02E3  80 7C 0A 2C           C1		      CMP     $M_SL.$M_S_PAD,$M_COMMA		     ;;AN000;; Is the pad character a comma?
			     C1	;	      $IF     E 				     ;;AN000;; Yes,
 02E7  75 05                 C1		      JNE $MIF155
 02E9  FF 36 04C9 R          C1			PUSH	WORD PTR $M_RT.$M_THOU_SEPARA	     ;;AN000;; Insert a thousand separator
 02ED  41                    C1			INC	CX				     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;;
 02EE                        C1	$MIF155:
			     C1	;	    $ELSE					     ;;AN000;;	      No,
 02EE  EB 10                 C1		    JMP SHORT $MEN154
 02F0                        C1	$MIF154:
 02F0  83 F9 09              C1		      CMP     CX,$M_THIRD_THOU			     ;;AN000;;	 Are we at the first thousan
				ds mark
			     C1	;	      $IF     E 				     ;;AN000;;		Yes,
 02F3  75 0B                 C1		      JNE $MIF158
 02F5  80 7C 0A 2C           C1			CMP	$M_SL.$M_S_PAD,$M_COMMA 	     ;;AN000;; Is the pad character a comma?
			     C1	;		$IF	E				     ;;AN000;; Yes,
 02F9  75 05                 C1			JNE $MIF159
 02FB  FF 36 04C9 R          C1			  PUSH	  WORD PTR $M_RT.$M_THOU_SEPARA      ;;AN000;; Insert a thousand separator
 02FF  41                    C1			  INC	  CX				     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 0300                        C1	$MIF159:
			     C1	;	      $ENDIF					     ;;AN000;;
 0300                        C1	$MIF158:
			     C1	;	    $ENDIF					     ;;AN000;;
 0300                        C1	$MEN154:
			     C1	;	  $ENDIF					     ;;AN000;;
 0300                        C1	$MEN150:
			     C1	ENDIF
 0300  93                    C1		  XCHG	  AX,BX 				     ;;AN000;;	 Setup to divide the reduced
				 High Word
			     C1								     ;;AN000;;	   and Revised Low Word
 0301  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;;	 Reset remainder
			     C1	;	$ENDDO						     ;;AN000;;	 NEXT
 0303  EB A7                 C1		JMP SHORT $MDO145
 0305                        C1	$MEN145:
			     C1								     ;;AN000;; Yes,
 0305  33 D2                 C1		XOR	DX,DX					     ;;AN000;;	 Reset remainder
 0307  33 C0                 C1		XOR	AX,AX					     ;;AN000;;	 Reset remainder
 0309  FF 36 04BC R          C1		PUSH	[$M_RT.$M_RETURN_ADDR]			     ;;AN000;;	 Restore Return Address
 030D  C3                    C1		RET						     ;;AN000;;	 Return
			     C1								     ;;
 030E                        C1	$M_CONVERT2ASC ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_DISPLAY_MESSAGE
			     C1	;;
			     C1	;;	FUNCTION:  Will display or write entire message (with replacable parameters)
			     C1	;;	INPUTS:    ES:DI points to beginning of message
			     C1	;;		   DS:SI points to first sublist structure in chain
			     C1	;;		   BX contains the handle to write to (if applicable)
			     C1	;;		   CX contains the length of string to write (before substitutions)
			     C1	;;		   BP contains the count of replacables
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-97
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;;
			     C1	;;	OUTPUTS:
			     C1	;;	REGS USED: All
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 030E                        C1	$M_DISPLAY_MESSAGE PROC NEAR				     ;;AN000;;
			     C1								     ;;
			     C1	;	$DO						     ;;AN000;; Note: DS:SI -> message
 030E                        C1	$MDO165:
 030E  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;; Set size = 0
 0310  0B C9                 C1		  OR	  CX,CX 				     ;;AN000;; Are we finished the message y
				et?
			     C1	;	  $IF	  NZ					     ;;AN000;; No,
 0312  74 21                 C1		  JZ $MIF166
 0314  B4 25                 C1		    MOV     AH,"%"				     ;;AN000;;	 Prepare to scan for %
 0316  B0 00                 C1		    MOV     AL,0				     ;;AN004;;
			     C1								     ;;
			     C1	;	    $DO 					     ;;AN000;;	 Scan through string until %
 0318                        C1	$MDO167:
 0318  26: 38 25             C1		      CMP     BYTE PTR ES:[DI],AH		     ;;AN000;;	 Is this character NOT a %
			     C1	;	    $LEAVE  E,AND				     ;;AN000;;	 No,
 031B  75 0A                 C1		    JNE $MLL168
 031D  26: 38 65 01          C1		      CMP     BYTE PTR ES:[DI+1],AH		     ;;AN000;;	   Is the next character als
				o a %
			     C1	;	    $LEAVE  NE,AND				     ;;AN000;;	   No,
 0321  74 04                 C1		    JE $MLL168
 0323  3A C4                 C1		      CMP     AL,AH				     ;;AN000;;	     Was the character befor
				e a %
			     C1	;	    $LEAVE  NE					     ;;AN000;;	     No, GREAT found it
 0325  75 0E                 C1		    JNE $MEN167
 0327                        C1	$MLL168:
 0327  26: 8A 05             C1		      MOV     AL,BYTE PTR ES:[DI]		     ;;AN004;;	 Yes, (to any of the above)
 032A  E8 0280 R             C1		      CALL    $M_IS_IT_DBCS			     ;;AN004;;	   Is this character the fir
				st part of a DBCS?
			     C1	;	      $IF     C 				     ;;AN004;;	   Yes,
 032D  73 01                 C1		      JNC $MIF169
 032F  47                    C1			INC	DI				     ;;AN004;;	     Increment past second p
				art
			     C1	;	      $ENDIF					     ;;AN004;;
 0330                        C1	$MIF169:
 0330  47                    C1		      INC     DI				     ;;AN000;;	     Next character in strin
				g
 0331  42                    C1		      INC     DX				     ;;AN000;;	     Size = Size + 1
 0332  49                    C1		      DEC     CX				     ;;AN000;;	     Decrement total size
			     C1	;	    $ENDDO  Z					     ;;AN000;;	 Exit scan if we're at the e
				nd of the line
 0333  75 E3                 C1		    JNZ $MDO167
 0335                        C1	$MEN167:
			     C1	;	  $ENDIF					     ;;AN000;;
 0335                        C1	$MIF166:
			     C1								     ;;
 0335  56                    C1		  PUSH	  SI					     ;;AN000;; Save beginning of sublists
 0336  87 CA                 C1		  XCHG	  CX,DX 				     ;;AN000;; Get size of message to displa
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-98
DOS - Message Retriever - DISPMSG.ASM Module                

				y (tot sz in DX)
 0338  0B ED                 C1		  OR	  BP,BP 				     ;;AN000;; Do we have any replacables to
				 do?
			     C1	;	  $IF	  NZ					     ;;AN000;; Yes,
 033A  74 33                 C1		  JZ $MIF173
 033C  4D                    C1		    DEC     BP					     ;;AN000;;	 Decrement number of replaca
				bles
			     C1	
			     C1	;; Search through sublists to find applicable one
			     C1	
 033D  83 3E 04BE R 00       C1		    CMP     $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
			     C1	;	    $IF     E					     ;;AN000;; No,
 0342  75 2B                 C1		    JNE $MIF174
			     C1	;	      $SEARCH					     ;;AN000;;
 0344                        C1	$MDO175:
 0344  8A 44 06              C1			MOV	AL,$M_SL.$M_S_ID		     ;;AN000;;	 Get ID byte
 0347  04 30                 C1			ADD	AL,30H				     ;;AN000;;	 Convert to ASCII
 0349  26: 3A 45 01          C1			CMP	AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	 Is this the right sublist?
			     C1	;	      $EXITIF E 				     ;;AN000;;
 034D  75 02                 C1		      JNE $MIF175
			     C1	;	      $ORELSE					     ;;AN000;;	 No,
 034F  EB 1E                 C1		      JMP SHORT $MSR175
 0351                        C1	$MIF175:
 0351  3C 30                 C1			CMP	AL,$M_SPECIAL_CASE		     ;;AN000;;	   Does this sublist have ID
				 = 0
			     C1	;	      $LEAVE  E,AND				     ;;AN000;;	   Yes,
 0353  75 04                 C1		      JNE $MLL178
 0355  0B D2                 C1			OR	DX,DX				     ;;AN000;;	   Are we at the end of the 
				message?
			     C1	;	      $LEAVE  Z 				     ;;AN000;;	   No,
 0357  74 04                 C1		      JZ $MEN175
 0359                        C1	$MLL178:
 0359  03 34                 C1			ADD	SI,WORD PTR $M_SL.$M_S_SIZE	     ;;AN000;;	     Next SUBLIST
			     C1	;	      $ENDLOOP					     ;;AN000;;	   Yes,
 035B  EB E7                 C1		      JMP SHORT $MDO175
 035D                        C1	$MEN175:
 035D  80 3E 04BB R FF       C1			CMP	$M_RT.$M_CLASS,UTILITY_MSG_CLASS     ;;AN004;;	     Is it a utility message
				?
			     C1	;		$IF	E				     ;;AN004;;	     Yes,
 0362  75 08                 C1			JNE $MIF180
 0364  42                    C1			  INC	  DX				     ;;AN000;;	       Remember to display C
				R,LF
 0365  42                    C1			  INC	  DX				     ;;AN000;;		 at the end of the m
				essage
 0366  49                    C1			  DEC	  CX				     ;;AN000;;	       Adjust message length
 0367  49                    C1			  DEC	  CX				     ;;AN000;;
 0368  4F                    C1			  DEC	  DI				     ;;AN000;;	       Adjust ending address
				 of message
 0369  4F                    C1			  DEC	  DI				     ;;AN000;;
			     C1	;		$ELSE					     ;;AN004;;	     No,
 036A  EB 03                 C1			JMP SHORT $MEN180
 036C                        C1	$MIF180:
 036C  BA FFFF               C1			  MOV	  DX,-1 			     ;;AN004;;	       Set special case
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-99
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;		$ENDIF					     ;;AN004;;
 036F                        C1	$MEN180:
			     C1	;	      $ENDSRCH					     ;;AN000;;
 036F                        C1	$MSR175:
			     C1	;	    $ENDIF					     ;;AN000;;
 036F                        C1	$MIF174:
			     C1	;	  $ENDIF					     ;;AN000;;
 036F                        C1	$MIF173:
			     C1	
			     C1	;; Prepare and display this part of message
			     C1	
 036F  57                    C1		  PUSH	  DI					     ;;AN000;; Save pointer to replace numbe
				r
 0370  2B F9                 C1		  SUB	  DI,CX 				     ;;AN000;; Determine beginning of string
 0372  E8 01C2 R             C1		  CALL	  $M_DISPLAY_STRING			     ;;AN000;; Display string until % (or en
				d)
 0375  5F                    C1		  POP	  DI					     ;;AN000;; Get back pointer to replace n
				umber
 0376  59                    C1		  POP	  CX					     ;;AN000;; Clean up stack in case error
			     C1	;	$LEAVE	C,LONG					     ;;AN000;; Fail if carry was set
 0377  73 03                 C1		JNC $MXL3
 0379  E9 0408 R             C1		JMP $MEN165
 037C                        C1	$MXL3:
 037C  51                    C1		  PUSH	  CX					     ;;AN000;;
			     C1	
			     C1	;; Save and reset pointer registers
			     C1	
 037D  8B CA                 C1		  MOV	  CX,DX 				     ;;AN000;; Get the size of the rest of t
				he message
 037F  80 7C 06 00           C1		  CMP	  $M_SL.$M_S_ID,$M_SPECIAL_CASE-30H	     ;;AN000;; Is this the %0 case?
			     C1	;	  $IF	  NE					     ;;AN000;; No,
 0383  74 0D                 C1		  JE $MIF187
 0385  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	Are we finished the whole me
				ssage?
			     C1	;	    $IF     NZ					     ;;AN000;;	No,
 0387  74 06                 C1		    JZ $MIF188
 0389  49                    C1		      DEC     CX				     ;;AN000;;	  Decrement total size (%)
 038A  49                    C1		      DEC     CX				     ;;AN000;;	  Decrement total size (#)
 038B  47                    C1		      INC     DI				     ;;AN000;;	  Go past %
 038C  47                    C1		      INC     DI				     ;;AN000;;	  Go past replace number
			     C1	;	    $ELSE					     ;;AN000;;	Yes, (Note this will not lea
				ve because INC)
 038D  EB 01                 C1		    JMP SHORT $MEN188
 038F                        C1	$MIF188:
 038F  5E                    C1		      POP     SI				     ;;AN000;;	  Get back pointer to beginn
				ing of SUBLISTs
			     C1	;	    $ENDIF					     ;;AN000;; Yes, Note this will not leave
				 because INC
 0390                        C1	$MEN188:
			     C1	;	  $ELSE 					     ;;AN000;;
 0390  EB 10                 C1		  JMP SHORT $MEN187
 0392                        C1	$MIF187:
 0392  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	Are we finished the whole me
				ssage?
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-100
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;	    $IF     Z					     ;;AN004;;	 No,
 0394  75 03                 C1		    JNZ $MIF192
 0396  5E                    C1		      POP     SI				     ;;AN000;;	 Get back pointer to beginni
				ng of SUBLISTs
			     C1	;	    $ELSE					     ;;AN000;; No,
 0397  EB 09                 C1		    JMP SHORT $MEN192
 0399                        C1	$MIF192:
 0399  83 F9 FF              C1		      CMP     CX,-1				     ;;AN004;;	 Are we at the end of the me
				ssage?
			     C1	;	      $IF     Z 				     ;;AN004;;	 No,
 039C  75 02                 C1		      JNZ $MIF194
 039E  33 C9                 C1			XOR	CX,CX				     ;;AN004;;
			     C1	;	      $ENDIF					     ;;AN000;;
 03A0                        C1	$MIF194:
 03A0  0B FF                 C1		      OR      DI,DI				     ;;AN004;;	Turn ZF off
			     C1	;	    $ENDIF					     ;;AN000;;
 03A2                        C1	$MEN192:
			     C1	;	  $ENDIF					     ;;AN000;; Note this will not leave beca
				use INC
 03A2                        C1	$MEN187:
			     C1	;	$LEAVE	Z					     ;;AN000;;
 03A2  74 64                 C1		JZ $MEN165
 03A4  55                    C1		  PUSH	  BP					     ;;AN000;;	 Save the replace count
 03A5  57                    C1		  PUSH	  DI					     ;;AN000;;	 Save location to complete m
				essage
 03A6  06                    C1		  PUSH	  ES					     ;;AN000;;
 03A7  51                    C1		  PUSH	  CX					     ;;AN000;;	 Save size of the rest of th
				e message
 03A8  33 C9                 C1		  XOR	  CX,CX 				     ;;AN000;;	 Reset CX used for character
				 count
			     C1	
			     C1	;; Determine what action is required on parameter
			     C1	
 03AA  83 3E 04BE R 00       C1		  CMP	  $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
			     C1	;	  $IF	  E					     ;;AN000;;
 03AF  75 3B                 C1		  JNE $MIF199
			     C1	
			     C1	IF	    CHARmsg					     ;;AN000;; Was Char specified?
 03B1  F6 44 07 0F           C1		    TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	    $IF     Z					     ;;AN000;;
 03B5  75 08                 C1		    JNZ $MIF200
			     C1	
			     C1	;; Character type requested
			     C1								     ;;AN000;;
 03B7  C4 7C 02              C1		      LES     DI,DWORD PTR $M_SL.$M_S_VALUE	     ;;AN000;; Load pointer to replacing par
				ameter
 03BA  E8 063F R             C1		      CALL    $M_CHAR_REPLACE			     ;;AN000;;
			     C1	;	    $ELSE					     ;;AN000;;	 Get the rest of the message
				 to display
 03BD  EB 28                 C1		    JMP SHORT $MEN200
 03BF                        C1	$MIF200:
			     C1	ENDIF							     ;;AN000;;
			     C1	IF	      NUMmsg					     ;;AN000;; Was Nnmeric type specified?
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-101
DOS - Message Retriever - DISPMSG.ASM Module                

 03BF  F6 44 07 0D           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	      $IF     Z,OR				     ;;AN000;;
 03C3  74 0C                 C1		      JZ $MLL202
 03C5  F6 44 07 0E           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	      $IF     Z,OR				     ;;AN000;;
 03C9  74 06                 C1		      JZ $MLL202
 03CB  F6 44 07 0C           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Bin_Hex_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	      $IF     Z 				     ;;AN000;;
 03CF  75 08                 C1		      JNZ $MIF202
 03D1                        C1	$MLL202:
			     C1	
			     C1	;; Numeric type requested
			     C1	
 03D1  C4 7C 02              C1			LES	DI,DWORD PTR $M_SL.$M_S_VALUE	     ;;AN000;; Load pointer to replacing par
				ameter
 03D4  E8 0667 R             C1			CALL	$M_BIN2ASC_REPLACE		     ;;AN000;;
			     C1	;	      $ELSE					     ;;AN000;; Get the rest of the message t
				o display
 03D7  EB 0E                 C1		      JMP SHORT $MEN202
 03D9                        C1	$MIF202:
			     C1	ENDIF							     ;;AN000;;
			     C1	IF		DATEmsg 				     ;;AN000;; Was date specified?
 03D9  F6 44 07 0B           C1			TEST	BYTE PTR $M_SL.$M_S_FLAG,NOT Date_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;		$IF	E				     ;;AN000;;
 03DD  75 05                 C1			JNE $MIF204
			     C1	
			     C1	;; Date type requested
			     C1	
 03DF  E8 0700 R             C1			  CALL	  $M_DATE_REPLACE		     ;;AN000;;
			     C1	;		$ELSE					     ;;AN000;; Get the rest of the message t
				o display
 03E2  EB 03                 C1			JMP SHORT $MEN204
 03E4                        C1	$MIF204:
			     C1	ENDIF							     ;;AN000;;
			     C1	IF		  TIMEmsg				     ;;AN000;;	Was time (12 hour format) sp
				ecified?
			     C1	
			     C1	;; Time type requested (Default if we have not matched until here)
			     C1	
 03E4  E8 07C4 R             C1			  CALL	  $M_TIME_REPLACE		     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
			     C1	
			     C1	IF		  DATEmsg				     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 03E7                        C1	$MEN204:
			     C1	ENDIF							     ;;AN000;;
			     C1	IF		NUMmsg					     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;;
 03E7                        C1	$MEN202:
			     C1	ENDIF							     ;;AN000;;
			     C1	IF	      CHARmsg					     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;;
 03E7                        C1	$MEN200:
			     C1	ENDIF							     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-102
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	
			     C1	IF	    $M_REPLACE					     ;;AN000;;
			     C1	;; With the replace information of the Stack, display the replaceable field
			     C1	
 03E7  E8 0564 R             C1		    CALL    $M_DISPLAY_REPLACE			     ;;AN000;; Display the replace
			     C1	ENDIF							     ;;AN000;;
			     C1	;; None of the above - Extended/Parse replace
			     C1	;	  $ELSE 					     ;;AN000;;
 03EA  EB 03                 C1		  JMP SHORT $MEN199
 03EC                        C1	$MIF199:
			     C1	IF	    NOT     COMR
 03EC  E8 040F R             C1		    CALL    $M_EXT_PAR_REPLACE			     ;;AN000;;
			     C1	ENDIF
			     C1	;	  $ENDIF					     ;;AN000;;
 03EF                        C1	$MEN199:
			     C1	
			     C1	;; We must go back and complete the message after the replacable parameter if there is any left
			     C1	
			     C1	;	  $IF	  NC					     ;;AN000;; IF there was an error display
				ing then EXIT
 03EF  72 07                 C1		  JC $MIF211
 03F1  59                    C1		    POP     CX					     ;;AN000;; Get size of the rest of the m
				essage
 03F2  07                    C1		    POP     ES					     ;;AN000;; Get address of the rest of th
				e message
 03F3  5F                    C1		    POP     DI					     ;;AN000;;
 03F4  5D                    C1		    POP     BP					     ;;AN000;; Get replacment count
 03F5  5E                    C1		    POP     SI					     ;;AN000;; ELSE get address of first sub
				list structure
			     C1	;	  $ELSE 					     ;;AN000;;
 03F6  EB 04                 C1		  JMP SHORT $MEN211
 03F8                        C1	$MIF211:
 03F8  83 C4 0A              C1		    ADD     SP,10				     ;;AN000;; Clean up stack if error
 03FB  F9                    C1		    STC 					     ;;AN000;;
			     C1	;	  $ENDIF					     ;;AN000;;
 03FC                        C1	$MEN211:
 03FC  83 3E 04BE R 00       C1		  CMP	  $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
			     C1	;	$ENDDO	NE,OR					     ;;AN000;;
 0401  75 05                 C1		JNE $MLL214
			     C1	;	$ENDDO	C,LONG					     ;;AN000;; Go back and display the rest 
				of the message
 0403  72 03                 C1		JC $MXL4
 0405  E9 030E R             C1		JMP $MDO165
 0408                        C1	$MXL4:
 0408                        C1	$MLL214:
 0408                        C1	$MEN165:
			     C1								     ;;        IF there was an error display
				ing then EXIT
 0408  C7 06 04BE R 0000     C1		MOV	$M_RT.$M_MSG_NUM,0			     ;;AN000;; Reset message number to null
 040E  C3                    C1		RET						     ;;AN000;; Return
			     C1								     ;;
 040F                        C1	$M_DISPLAY_MESSAGE ENDP 				     ;;AN000;;
			     C1	IF	NOT	COMR
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-103
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_EXT_PAR_REPLACE
			     C1	;;
			     C1	;;	FUNCTION:
			     C1	;;	INPUTS:
			     C1	;;	OUPUTS:
			     C1	;;
			     C1	;;	REGS USED:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 040F                        C1	$M_EXT_PAR_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 040F  33 D2                 C1		XOR	DX,DX					     ;;AN000;; Prepare for get binary value 
				(HIGH)
 0411  A1 04BE R             C1		MOV	AX,$M_RT.$M_MSG_NUM			     ;;AN000;; Prepare for get binary value 
				(LOW)
 0414  C7 06 04C0 R 000A     C1		MOV	$M_RT.$M_DIVISOR,$M_BASE10		     ;;AN000;; Set default divisor
			     C1								     ;;
 041A  E8 02A4 R             C1		CALL	$M_CONVERT2ASC				     ;;AN000;;
			     C1								     ;;
			     C1	;	$DO						     ;;AN000;;
 041D                        C1	$MDO215:
 041D  58                    C1		  POP	  AX					     ;;AN000;;	 Get character in register
 041E  88 87 04C2 R          C1		  MOV	  BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL	     ;;AN000;;	Move char into the buffer
 0422  43                    C1		  INC	  BX					     ;;AN000;;	 Increase buffer count
 0423  83 FB 40              C1		  CMP	  BX,$M_TEMP_BUF_SZ			     ;;AN000;;	 Is buffer full?
			     C1	;	  $IF	  E					     ;;AN000;;	 Yes,
 0426  75 03                 C1		  JNE $MIF216
 0428  E8 0623 R             C1		    CALL    $M_FLUSH_BUF			     ;;AN000;;	   Flush the buffer
			     C1	;	  $ENDIF					     ;;AN000;;
 042B                        C1	$MIF216:
 042B  FE C9                 C1		  DEC	  CL					     ;;AN000;;	 Have we completed replace?
			     C1	;	$ENDDO	Z					     ;;AN000;;
 042D  75 EE                 C1		JNZ $MDO215
			     C1								     ;;
 042F  B8 0A0D               C1		MOV	AX,$M_CR_LF				     ;;AN000;;	Move char into the buffer
 0432  89 87 04C2 R          C1		MOV	WORD PTR $M_RT.$M_TEMP_BUF[BX],AX	     ;;AN000;;	Move char into the buffer
 0436  43                    C1		INC	BX					     ;;AN000;;	 Increase buffer count
 0437  43                    C1		INC	BX					     ;;AN000;;	 Increase buffer count
 0438  E8 0623 R             C1		CALL	$M_FLUSH_BUF				     ;;AN000;;	   Flush the buffer
 043B  C3                    C1		RET						     ;;AN000::
			     C1								     ;;
 043C                        C1	$M_EXT_PAR_REPLACE ENDP 				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	ENDIF
			     C1		IF	$M_SUBS 				     ;;AN000;; Include the common subroutine
				s if they haven't yet
 = 0000                      C1		  $M_SUBS = FALSE				     ;;AN000;; No, then include and reset th
				e flag
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-104
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;;	PROC NAME: $M_GET_MSG_ADDRESS
			     C1	;;
			     C1	;;	FUNCTION:  To scan thru classes to return pointer to the message header
			     C1	;;	INPUTS:    Access to $M_RES_ADDRESSES
			     C1	;;	OUPUTS:    IF CX = 0 THEN Message was not found
			     C1	;;		   IF CX > 1 THEN DS:SI points to the specified message
			     C1	;;	REGS CHANGED: ES,DI,CX,DS,SI
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
			     C1	ELSE							     ;;AN000;;
 043C                        C1		  $M_GET_MSG_ADDRESS PROC NEAR			     ;;AN000;;
			     C1	ENDIF							     ;;AN000;;
			     C1								     ;;
 043C  56                    C1		  PUSH	  SI					     ;;AN000;;
 043D  53                    C1		  PUSH	  BX					     ;;AN000;;
 043E  33 F6                 C1		  XOR	  SI,SI 				     ;;AN000;; Use SI as an index
 0440  33 C9                 C1		  XOR	  CX,CX 				     ;;AN000;; Use CX as an size
			     C1	;	  $DO						     ;;AN000;;
 0442                        C1	$MDO219:
 0442  80 FE FF              C1		    CMP     DH,UTILITY_MSG_CLASS		     ;;AN000;; Were utility messages request
				ed?
			     C1	;	    $IF     E					     ;;AN000;; Yes,
 0445  75 08                 C1		    JNE $MIF220
			     C1		      ELSE					     ;;AN000;;
 0447  8B BC 049E R          C1			MOV	DI,WORD PTR $M_RT.$M_CLASS_ADDRS[SI] ;;AN000;;	 Get address of class
 044B  8B DF                 C1			MOV	BX,DI				     ;;AN000;
			     C1		      ENDIF					     ;;AN000;;
			     C1	;	    $ELSE					     ;;AN000;; No,
 044D  EB 25                 C1		    JMP SHORT $MEN220
 044F                        C1	$MIF220:
 044F  F6 C6 02              C1		      TEST    DH,PARSE_ERR_CLASS		     ;;AN000;;	 Were parse errors requested
				?
			     C1	;	      $IF     NE				     ;;AN000;;	 Yes,
 0452  74 08                 C1		      JE $MIF222
 0454  C4 BC 0482 R          C1			LES	DI,DWORD PTR $M_RT.$M_PARSE_COMMAND[SI] ;;AN000;;   Get address of class
 0458  8C C3                 C1			MOV	BX,ES				     ;;AN000;
			     C1	;	      $ELSE					     ;;AN000;;	 No, extended errors were sp
				ecified
 045A  EB 18                 C1		      JMP SHORT $MEN222
 045C                        C1	$MIF222:
 045C  3D 0013               C1			CMP	AX,$M_CRIT_LO			     ;;AN000;;	   Is this a critical error?
			     C1	;		$IF	AE,AND				     ;;AN000;;
 045F  72 0D                 C1			JNAE $MIF224
 0461  3D 0027               C1			CMP	AX,$M_CRIT_HI			     ;;AN000;;
			     C1	;		$IF	BE				     ;;AN000;;	    Yes,
 0464  77 08                 C1			JNBE $MIF224
 0466  C4 BC 048E R          C1			  LES	  DI,DWORD PTR $M_RT.$M_CRIT_ADDRS[SI] ;;AN000;; Get address of class
 046A  8C C3                 C1			  MOV	  BX,ES 			     ;;AN000;
			     C1	;		$ELSE					     ;;AN000;;
 046C  EB 06                 C1			JMP SHORT $MEN224
 046E                        C1	$MIF224:
 046E  C4 BC 0472 R          C1			  LES	  DI,DWORD PTR $M_RT.$M_EXT_ERR_ADDRS[SI] ;;AN000;; Get address of class
 0472  8C C3                 C1			  MOV	  BX,ES 			     ;;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-105
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;		$ENDIF					     ;;AN000;;
 0474                        C1	$MEN224:
			     C1	;	      $ENDIF					     ;;AN000;;
 0474                        C1	$MEN222:
			     C1	;	    $ENDIF					     ;;AN000;;
 0474                        C1	$MEN220:
			     C1								     ;;
 0474  83 FB FF              C1		    CMP     BX,$M_TERMINATING_FLAG		     ;;AN000;; Are we finished all classes?
			     C1	;	    $IF     E					     ;;AN000;; Yes,
 0477  75 16                 C1		    JNE $MIF229
 0479  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN000;;	  Was it a UTILITY class?
			     C1	;	      $IF     E 				     ;;AN000;;	  Yes,
 047C  75 03                 C1		      JNE $MIF230
 047E  F9                    C1			STC					     ;;AN000;;	    Set the carry flag
			     C1	;	      $ELSE					     ;;AN000;;	  No,
 047F  EB 0C                 C1		      JMP SHORT $MEN230
 0481                        C1	$MIF230:
 0481  A3 04BE R             C1			MOV	$M_RT.$M_MSG_NUM,AX		     ;;AN000;;	    Save message number
 0484  B8 FFFF               C1			MOV	AX,$M_SPECIAL_MSG_NUM		     ;;AN000;;	    Set special message numb
				er
 0487  BD 0001               C1			MOV	BP,$M_ONE_REPLACE		     ;;AN000;;	    Set one replace in messa
				ge
 048A  33 F6                 C1			XOR	SI,SI				     ;;AN000;;	    Reset the SI index to st
				art again
 048C  F8                    C1			CLC					     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;; No,
 048D                        C1	$MEN230:
			     C1	;	    $ELSE					     ;;AN000;;
 048D  EB 0C                 C1		    JMP SHORT $MEN229
 048F                        C1	$MIF229:
 048F  83 FB 00              C1		      CMP     BX,$M_CLASS_NOT_EXIST		     ;;AN000;;	 Does this class exist?
			     C1	;	      $IF     NE				     ;;AN001;;	 Yes,
 0492  74 03                 C1		      JE $MIF234
 0494  E8 04EB R             C1			CALL	$M_FIND_SPECIFIED_MSG		     ;;AN000;;	   Try to find the message
			     C1	;	      $ENDIF					     ;;AN000;;
 0497                        C1	$MIF234:
 0497  83 C6 04              C1		      ADD     SI,$M_ADDR_SZ_FAR 		     ;;AN000;;	     Get next class
 049A  F8                    C1		      CLC					     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;;
 049B                        C1	$MEN229:
			     C1	;	  $LEAVE  C					     ;;AN000;;
 049B  72 06                 C1		  JC $MEN219
 049D  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	   Was the message found?
			     C1	;	  $ENDDO  NZ,LONG				     ;;AN000;;
 049F  75 02                 C1		  JNZ $MXL5
 04A1  EB 9F                 C1		  JMP $MDO219
 04A3                        C1	$MXL5:
 04A3                        C1	$MEN219:
			     C1	
 04A3  9C                    C1		  PUSHF 					     ;;AN006;; Save the flag state
 04A4  80 FE 01              C1		  CMP	  DH,EXT_ERR_CLASS			     ;;AN006;; Was an extended error request
				ed?
			     C1	;	  $IF	  E					     ;;AN006;; Yes,
 04A7  75 29                 C1		  JNE $MIF239
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-106
DOS - Message Retriever - DISPMSG.ASM Module                

 04A9  52                    C1		    PUSH    DX					     ;;AN006;;	Save all needed registers
 04AA  55                    C1		    PUSH    BP					     ;;AN006;;
 04AB  51                    C1		    PUSH    CX					     ;;AN006;;
 04AC  06                    C1		    PUSH    ES					     ;;AN006;;
 04AD  57                    C1		    PUSH    DI					     ;;AN006;;
 04AE  50                    C1		    PUSH    AX					     ;;AN006;;
			     C1	
 04AF  B8 0500               C1		    MOV     AX,IFSFUNC_INSTALL_CHECK		     ;;AN006;;	Check if IFSFUNC is installe
				d
 04B2  CD 2F                 C1		    INT     2FH 				     ;;AN006;;
 04B4  3C FF                 C1		    CMP     AL,IFSFUNC_INSTALLED		     ;;AN006;;	Is it installed?
 04B6  58                    C1		    POP     AX					     ;;AN006;;	Restore msg number
			     C1	;	    $IF     E					     ;;AN006;;	 Yes,
 04B7  75 09                 C1		    JNE $MIF240
 04B9  8B D8                 C1		      MOV     BX,AX				     ;;AN006;;	  BX is the extended error n
				umber
 04BB  B8 0502               C1		      MOV     AX,IFS_GET_ERR_TEXT		     ;;AN006;;	  AX is the muliplex number
 04BE  CD 2F                 C1		      INT     2FH				     ;;AN006;;	  Call IFSFUNC
			     C1	;	    $ELSE					     ;;AN006;;	 No,
 04C0  EB 01                 C1		    JMP SHORT $MEN240
 04C2                        C1	$MIF240:
 04C2  F9                    C1		      STC					     ;;AN006;;	  Carry conditon
			     C1	;	    $ENDIF					     ;;AN006;;
 04C3                        C1	$MEN240:
			     C1	
			     C1	;	    $IF     C					     ;;AN006;;	Was there an update?
 04C3  73 05                 C1		    JNC $MIF243
 04C5  5F                    C1		      POP     DI				     ;;AN006;;	No,
 04C6  07                    C1		      POP     ES				     ;;AN006;;	 Restore old pointer
 04C7  59                    C1		      POP     CX				     ;;AN006;;
			     C1	;	    $ELSE					     ;;AN006;;	Yes
 04C8  EB 06                 C1		    JMP SHORT $MEN243
 04CA                        C1	$MIF243:
 04CA  83 C4 06              C1		      ADD     SP,6				     ;;AN006;;	 Throw away old pointer
 04CD  E8 04DC R             C1		      CALL    $M_SET_LEN_IN_CX			     ;;AN006;;	 Get the length of the ASCII
				Z string
			     C1	;	    $ENDIF					     ;;AN006;;
 04D0                        C1	$MEN243:
 04D0  5D                    C1		    POP     BP					     ;;AN006;;	Restore other Regs
 04D1  5A                    C1		    POP     DX					     ;;AN006;;
			     C1	;	  $ENDIF					     ;;AN006;;
 04D2                        C1	$MIF239:
			     C1		  $M_POPF					     ;;AN006;; Restore the flag state
 04D2  EB 01                 C2		   JMP	   $+3 
 04D4                        C2	??0000   LABEL   NEAR 
 04D4  CF                    C2		   IRET 
 04D5  0E                    C2		   PUSH    CS 
 04D6  E8 04D4 R             C2		   CALL    ??0000 
			     C1	
 04D9  5B                    C1		  POP	  BX					     ;;AN000;;
 04DA  5E                    C1		  POP	  SI					     ;;AN000;;
 04DB  C3                    C1		  RET						     ;;AN000;; Return ES:DI pointing to the 
				message
			     C1								     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-107
DOS - Message Retriever - DISPMSG.ASM Module                

 04DC                        C1	$M_GET_MSG_ADDRESS ENDP 				     ;;
			     C1								     ;;
 04DC                        C1	$M_SET_LEN_IN_CX PROC NEAR				     ;;
			     C1								     ;;
 04DC  57                    C1		  PUSH	  DI					     ;;AN006;; Save position
 04DD  50                    C1		  PUSH	  AX					     ;;AN006;;
 04DE  B9 FFFF               C1		  MOV	  CX,-1 				     ;;AN006;; Set CX for decrements
 04E1  32 C0                 C1		  XOR	  AL,AL 				     ;;AN006;; Prepare compare register
 04E3  F2/ AE                C1		  REPNE   SCASB 				     ;;AN006;; Scan for zero
 04E5  F7 D1                 C1		  NOT	  CX					     ;;AN006;; Change decrement into number
 04E7  49                    C1		  DEC	  CX					     ;;AN006;; Don't include the zero
 04E8  58                    C1		  POP	  AX					     ;;AN006;;
 04E9  5F                    C1		  POP	  DI					     ;;AN006;; Restore position
 04EA  C3                    C1		  RET						     ;;AN006;;
			     C1								     ;;
 04EB                        C1	$M_SET_LEN_IN_CX ENDP					     ;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_FIND_SPECIFIED_MSG
			     C1	;;
			     C1	;;	FUNCTION:  To scan thru message headers until message is found
			     C1	;;	INPUTS:    ES:DI points to beginning of msg headers
			     C1	;;		   CX contains the number of messages in class
			     C1	;;		   DH contains the message class
			     C1	;;	OUPUTS:    IF CX = 0 THEN Message was not found
			     C1	;;		   IF CX > 1 THEN ES:DI points to header of specified message
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 04EB                        C1	$M_FIND_SPECIFIED_MSG PROC NEAR 			     ;;AN000;;
			     C1								     ;;
 04EB  83 FB 01              C1		  CMP	  BX,1					     ;;AN004;;	Do we have an address to CAL
				L?
			     C1	;	  $IF	  E,AND 				     ;;AN004;;	Yes,
 04EE  75 1D                 C1		  JNE $MIF247
 04F0  83 3E 049A R FF       C1		  CMP	  WORD PTR $M_RT.$M_DISK_PROC_ADDR,-1	     ;;AN004;;	Do we have an address to CAL
				L?
			     C1	;	  $IF	  NE					     ;;AN004;;	Yes,
 04F5  74 16                 C1		  JE $MIF247
 04F7  3D FFFF               C1		    CMP     AX,$M_SPECIAL_MSG_NUM		     ;;AN004;; Are we displaying a default E
				xt Err?
			     C1	;	    $IF     E					     ;;AN004;;	. . . and . . .
 04FA  75 0B                 C1		    JNE $MIF248
 04FC  50                    C1		      PUSH    AX				     ;;AN004;;	 Reset the special message n
				umber
 04FD  A1 04BE R             C1		      MOV     AX,$M_RT.$M_MSG_NUM		     ;;AN004;;	 Get the old message number
 0500  FF 1E 049A R          C1		      CALL    DWORD PTR $M_RT.$M_DISK_PROC_ADDR      ;;AN004;;	 Call the READ_DISK_PROC to 
				get error text
 0504  58                    C1		      POP     AX				     ;;AN004;;	 Reset the special message n
				umber
			     C1	;	    $ELSE					     ;;AN004;;	 Get the old message number
 0505  EB 04                 C1		    JMP SHORT $MEN248
 0507                        C1	$MIF248:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-108
DOS - Message Retriever - DISPMSG.ASM Module                

 0507  FF 1E 049A R          C1		      CALL    DWORD PTR $M_RT.$M_DISK_PROC_ADDR      ;;AN004;;	 Call the READ_DISK_PROC to 
				get error text
			     C1	;	    $ENDIF					     ;;AN004;;	 Get the old message number
 050B                        C1	$MEN248:
			     C1	;	  $ELSE 					     ;;AN004;;
 050B  EB 1A                 C1		  JMP SHORT $MEN247
 050D                        C1	$MIF247:
 050D  33 C9                 C1		    XOR     CX,CX				     ;;AN002;;	 CX = 0 will allow us to
 050F  80 FE FF              C1		    CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;
			     C1	;	    $IF     NE					     ;;AN001;;
 0512  74 06                 C1		    JE $MIF252
 0514  26: 8A 4D 03          C1		      MOV     CL,BYTE PTR ES:[DI].$M_NUM_CLS_MSG     ;;AN001;;	 Get number of messages in c
				lass
			     C1	;	    $ELSE					     ;;AN001;;
 0518  EB 09                 C1		    JMP SHORT $MEN252
 051A                        C1	$MIF252:
			     C1	ELSE
 051A  2E: 38 35             C1		      CMP     BYTE PTR CS:[DI].$M_CLASS_ID,DH	     ;;AN002;; Check if class still exists a
				t
			     C1	ENDIF
			     C1	;	      $IF     E 				     ;;AN002;;	pointer (hopefully)
 051D  75 04                 C1		      JNE $MIF254
			     C1	ELSE
 051F  2E: 8A 4D 03          C1			MOV	CL,BYTE PTR CS:[DI].$M_NUM_CLS_MSG   ;;AN000;;	   Get number of messages in
				 class
			     C1	ENDIF
			     C1	;	      $ENDIF					     ;;AN002;;	  go on to the next class
 0523                        C1	$MIF254:
			     C1	;	    $ENDIF					     ;;AN001;;
 0523                        C1	$MEN252:
 0523  83 C7 04              C1		    ADD     DI,$M_CLASS_ID_SZ			     ;;AN000;;	   Point past the class head
				er
 0526  F9                    C1		    STC 					     ;;AN004;;	 Flag that we haven't found 
				anything yet
			     C1	;	  $ENDIF					     ;;AN004;;
 0527                        C1	$MEN247:
			     C1	
			     C1	;	  $IF	  C					     ;;AN004;; Have we found anything yet?
 0527  73 2D                 C1		  JNC $MIF258
 0529  F8                    C1		    CLC 					     ;;AN004;; No, reset carry
			     C1	;	    $SEARCH					     ;;AN000;;
 052A                        C1	$MDO259:
 052A  0B C9                 C1		      OR      CX,CX				     ;;AN000;;	  Do we have any to check?
			     C1	;	    $LEAVE  Z					     ;;AN000;;	     No, return with CX = 0
 052C  74 19                 C1		    JZ $MEN259
 052E  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;
			     C1	;	      $IF     NE				     ;;AN001;;
 0531  74 05                 C1		      JE $MIF261
 0533  26: 3B 05             C1			CMP	AX,WORD PTR ES:[DI].$M_NUM	     ;;AN001;; Is this the message requested
				?
			     C1	;	      $ELSE					     ;;AN001;;
 0536  EB 03                 C1		      JMP SHORT $MEN261
 0538                        C1	$MIF261:
			     C1	ELSE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-109
DOS - Message Retriever - DISPMSG.ASM Module                

 0538  2E: 3B 05             C1			CMP	AX,WORD PTR CS:[DI].$M_NUM	     ;;AN000;; Is this the message requested
				?
			     C1	ENDIF
			     C1	;	      $ENDIF
 053B                        C1	$MEN261:
			     C1	;	    $EXITIF E					     ;;AN000;;
 053B  75 02                 C1		    JNE $MIF259
			     C1	;	    $ORELSE					     ;;AN000;
 053D  EB 09                 C1		    JMP SHORT $MSR259
 053F                        C1	$MIF259:
 053F  49                    C1		      DEC     CX				     ;;AN000;;	  No, well do we have more t
				o check?
			     C1	;	    $LEAVE  Z					     ;;AN000;;	     No, return with CX = 0
 0540  74 05                 C1		    JZ $MEN259
 0542  83 C7 04              C1		      ADD     DI,$M_ID_SZ			     ;;AN000;;	     Yes, skip past msg head
				er
			     C1	;	    $ENDLOOP					     ;;AN000;;
 0545  EB E3                 C1		    JMP SHORT $MDO259
 0547                        C1	$MEN259:
 0547  F9                    C1		      STC					     ;;AN000;;
			     C1	;	    $ENDSRCH					     ;;AN000;;	     Check next message
 0548                        C1	$MSR259:
			     C1	;	    $IF     NC					     ;;AN000;;	 Did we find the message?
 0548  72 0C                 C1		    JC $MIF269
 054A  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;	 Yes, is it a utility messag
				e?
 054D  F8                    C1		      CLC					     ;;AN001;;
			     C1	;	      $IF     E 				     ;;AN001;;
 054E  75 02                 C1		      JNE $MIF270
			     C1	ELSE							     ;;AN000;;
 0550  0E                    C1			PUSH	CS				     ;;AN000;;
 0551  07                    C1			POP	ES				     ;;AN000;;	 Return ES:DI pointing to th
				e message
			     C1	ENDIF
			     C1	;	      $ENDIF					     ;;AN001;;
 0552                        C1	$MIF270:
 0552  26: 03 7D 02          C1		      ADD     DI,WORD PTR ES:[DI].$M_TXT_PTR	     ;;AN000;; Prepare ES:DI pointing to the
				 message
			     C1	;	    $ENDIF					     ;;AN004;;
 0556                        C1	$MIF269:
			     C1	;	  $ENDIF					     ;;AN004;;
 0556                        C1	$MIF258:
			     C1								     ;; 	  Yes, great we can return w
				ith CX > 0
			     C1	
			     C1	;	  $IF	  NC					     ;;AN000;;	 Did we find the message?
 0556  72 06                 C1		  JC $MIF274
 0558  32 ED                 C1		    XOR     CH,CH				     ;;AN000;;
 055A  26: 8A 0D             C1		    MOV     CL,BYTE PTR ES:[DI] 		     ;;AN000;;	 Move size into CX
 055D  47                    C1		    INC     DI					     ;;AN000;;	 Increment past length
			     C1	;	  $ENDIF					     ;;AN004;;
 055E                        C1	$MIF274:
			     C1	
 055E  C6 06 04B8 R 00       C1		  MOV	  $M_RT.$M_SIZE,$M_NULL 		     ;;AN004;; Reset variable
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-110
DOS - Message Retriever - DISPMSG.ASM Module                

 0563  C3                    C1		  RET						     ;;AN000;; Return
			     C1								     ;;
 0564                        C1	$M_FIND_SPECIFIED_MSG ENDP				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		ENDIF						     ;;AN000;; END of include of common subr
				outines
			     C1	; 
			     C1		IF	$M_REPLACE				     ;;AN000;; Is the request to include the
				 code for replaceable parms
 = 0000                      C1		  $M_REPLACE = FALSE				     ;;AN000;;	   Tell the assembler we did
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 0564                        C1	$M_DISPLAY_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 0564  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Use BX for buffer count
			     C1	IF	  NOT	  COMR
 0566  80 7C 06 00           C1		  CMP	  $M_SL.$M_S_ID,$M_SPECIAL_CASE-30H	     ;;AN000;; Is this the special case (con
				vert to ASCII)
			     C1	;	  $IF	  E					     ;;AN000;; Yes,
 056A  75 11                 C1		  JNE $MIF276
 056C  C7 87 04C2 R 2D20     C1		    MOV     WORD PTR $M_RT.$M_TEMP_BUF[BX],$M_SPACE_HYP ;;AN000;; Move in a " -"
 0572  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 0573  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 0574  C6 87 04C2 R 20       C1		    MOV     BYTE PTR $M_RT.$M_TEMP_BUF[BX],$M_SPACE  ;;AN000;;	   Move in a " "
 0579  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 057A  E8 0623 R             C1		    CALL    $M_FLUSH_BUF			     ;;AN000;;	   Write out " - " to prepar
				e for special case
			     C1	;	  $ENDIF					     ;;AN000;;	   If it fails we will catch
				 it later
 057D                        C1	$MIF276:
			     C1	ENDIF
			     C1	
 057D  5D                    C1		  POP	  BP					     ;;AN000;; Remember the return address
 057E  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Use BX for buffer count
 0580  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;; Use DX for count of parms tak
				en off the stack
			     C1	
 0582  88 0E 04B8 R          C1		  MOV	  $M_RT.$M_SIZE,CL			     ;;AN000;; Save size to later clear stac
				k
 0586  8A 44 09              C1		  MOV	  AL,BYTE PTR $M_SL.$M_S_MINW		     ;;AN000;; Get the minimum width
			     C1								     ;;
 0589  3A C1                 C1		  CMP	  AL,CL 				     ;;AN000;; Do we need pad chars added?
			     C1	;	  $IF	  A					     ;;AN000;; Yes,
 058B  76 1E                 C1		  JNA $MIF278
 058D  2A C1                 C1		    SUB     AL,CL				     ;;AN000;;	 Calculate how many pad char
				s are needed.
 058F  8A F0                 C1		    MOV     DH,AL				     ;;AN000;;	 Save the number of pad char
				acters
 0591  F6 44 07 80           C1		    TEST    BYTE PTR $M_SL.$M_S_FLAG,Right_Align     ;;AN000;;	 Was replaceable parm to be 
				right aligned?
			     C1	;	    $IF     NZ					     ;;AN000;;	 Yes,
 0595  74 14                 C1		    JZ $MIF279
			     C1	;	      $DO					     ;;AN000;;	   Begin filling buffer with
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-111
DOS - Message Retriever - DISPMSG.ASM Module                

				 pad chars
 0597                        C1	$MDO280:
 0597  8A 44 0A              C1			MOV	AL,BYTE PTR $M_SL.$M_S_PAD	     ;;AN000;;
 059A  88 87 04C2 R          C1			MOV	BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL    ;;AN000;;	   Move in a pad char
 059E  43                    C1			INC	BX				     ;;AN000;;
 059F  83 FB 40              C1			CMP	BX,$M_TEMP_BUF_SZ		     ;;AN000;;	   Is buffer full?
			     C1	;		$IF	E				     ;;AN000;;	   Yes,
 05A2  75 03                 C1			JNE $MIF281
 05A4  E8 0623 R             C1			  CALL	  $M_FLUSH_BUF			     ;;AN000;;	     Flush the buffer
			     C1	;		$ENDIF					     ;;AN000;;
 05A7                        C1	$MIF281:
 05A7  FE CE                 C1			DEC	DH				     ;;AN000;;	   Have we filled with enoug
				h pad chars?
			     C1	;	      $ENDDO  Z 				     ;;AN000;;	   No, next pad character
 05A9  75 EC                 C1		      JNZ $MDO280
			     C1	;	    $ENDIF					     ;;AN000;;
 05AB                        C1	$MIF279:
			     C1	;	  $ENDIF					     ;;AN000;;	   Yes,
 05AB                        C1	$MIF278:
			     C1								     ;;
 05AB  80 7C 08 00           C1		  CMP	  BYTE PTR $M_SL.$M_S_MAXW,$M_UNLIM_W	     ;;AN000;; Is maximum width unlimited?
			     C1	;	  $IF	  NE					     ;;AN000;;
 05AF  74 0D                 C1		  JE $MIF286
 05B1  38 4C 08              C1		    CMP     BYTE PTR $M_SL.$M_S_MAXW,CL 	     ;;AN000;; Will we exceed maximum width?
			     C1	;	    $IF     B					     ;;AN000;; Yes,
 05B4  73 08                 C1		    JNB $MIF287
 05B6  2A 4C 08              C1		      SUB     CL,BYTE PTR $M_SL.$M_S_MAXW	     ;;AN000;;	 Calculate how many extra ch
				ars
 05B9  8A D1                 C1		      MOV     DL,CL				     ;;AN000;;	 Remember how many chars to 
				pop off
 05BB  8A 4C 08              C1		      MOV     CL,BYTE PTR $M_SL.$M_S_MAXW	     ;;AN000;;	 Set new string length
			     C1	;	    $ENDIF					     ;;AN000;;
 05BE                        C1	$MIF287:
			     C1	;	  $ENDIF					     ;;AN000;;
 05BE                        C1	$MIF286:
 05BE  0B C9                 C1		  OR	  CX,CX 				     ;;AN000;;
			     C1	;	  $IF	  NZ					     ;;AN000;;
 05C0  74 24                 C1		  JZ $MIF290
			     C1	;	    $DO 					     ;;AN000;; Begin filling buffer with str
				ing
 05C2                        C1	$MDO291:
 05C2  F6 44 07 0F           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	      $IF     Z,AND				     ;;AN000;;
 05C6  75 0C                 C1		      JNZ $MIF292
 05C8  F6 44 07 10           C1		      TEST    $M_SL.$M_S_FLAG,Char_field_ASCIIZ AND $M_SIZE_MASK ;  Is this replace a ASCIIZ
				 string?
			     C1	;	      $IF     NZ				     ;;AN000;; Yes,
 05CC  74 06                 C1		      JZ $MIF292
 05CE  26: 8A 05             C1			MOV	AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get first character from st
				ring
 05D1  47                    C1			INC	DI				     ;;AN000;;	 Next character in string
			     C1	;	      $ELSE					     ;;AN000;; No,
 05D2  EB 01                 C1		      JMP SHORT $MEN292
 05D4                        C1	$MIF292:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-112
DOS - Message Retriever - DISPMSG.ASM Module                

 05D4  58                    C1			POP	AX				     ;;AN000;;	 Get character in register
			     C1	;	      $ENDIF					     ;;AN000;;
 05D5                        C1	$MEN292:
 05D5  88 87 04C2 R          C1		      MOV     BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL      ;;AN000;;	Move char into the buffer
 05D9  43                    C1		      INC     BX				     ;;AN000;;	 Increase buffer count
 05DA  83 FB 40              C1		      CMP     BX,$M_TEMP_BUF_SZ 		     ;;AN000;;	 Is buffer full?
			     C1	;	      $IF     E 				     ;;AN000;;	 Yes,
 05DD  75 03                 C1		      JNE $MIF295
 05DF  E8 0623 R             C1			CALL	$M_FLUSH_BUF			     ;;AN000;;	   Flush the buffer
			     C1	;	      $ENDIF					     ;;AN000;;
 05E2                        C1	$MIF295:
 05E2  FE C9                 C1		      DEC     CL				     ;;AN000;;	 Have we completed replace?
			     C1	;	    $ENDDO  Z					     ;;AN000;;	   Test again
 05E4  75 DC                 C1		    JNZ $MDO291
			     C1	;	  $ENDIF					     ;;AN000;;
 05E6                        C1	$MIF290:
			     C1								     ;;
 05E6  F6 44 07 80           C1		  TEST	  BYTE PTR $M_SL.$M_S_FLAG,Right_Align	     ;;AN000;;	 Was replaceable parm to be 
				left aligned?
			     C1	;	  $IF	  Z					     ;;AN000;; Yes,
 05EA  75 18                 C1		  JNZ $MIF299
 05EC  0A F6                 C1		    OR	    DH,DH				     ;;AN000;;	 Do we need pad chars added?
			     C1	;	    $IF     NZ					     ;;AN000;;	 Yes,
 05EE  74 14                 C1		    JZ $MIF300
			     C1	;	      $DO					     ;;AN000;;	   Begin filling buffer with
				 pad chars
 05F0                        C1	$MDO301:
 05F0  8A 44 0A              C1			MOV	AL,BYTE PTR $M_SL.$M_S_PAD	     ;;AN000;;
 05F3  88 87 04C2 R          C1			MOV	BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL    ;;AN000;;	   Move in a pad char
 05F7  43                    C1			INC	BX				     ;;AN000;;
 05F8  83 FB 40              C1			CMP	BX,$M_TEMP_BUF_SZ		     ;;AN000;;	   Is buffer full?
			     C1	;		$IF	E				     ;;AN000;;	   Yes,
 05FB  75 03                 C1			JNE $MIF302
 05FD  E8 0623 R             C1			  CALL	  $M_FLUSH_BUF			     ;;AN000;;	     Flush the buffer
			     C1	;		$ENDIF					     ;;AN000;;
 0600                        C1	$MIF302:
 0600  FE CE                 C1			DEC	DH				     ;;AN000;;	   Have we filled with enoug
				h pad chars?
			     C1	;	      $ENDDO  Z 				     ;;AN000;;	     Test again
 0602  75 EC                 C1		      JNZ $MDO301
			     C1	;	    $ENDIF					     ;;AN000;;
 0604                        C1	$MIF300:
			     C1	;	  $ENDIF					     ;;AN000;;
 0604                        C1	$MIF299:
			     C1								     ;;
 0604  F6 44 07 0F           C1		  TEST	  BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
			     C1	;	  $IF	  Z,AND 				     ;;AN000;;
 0608  75 08                 C1		  JNZ $MIF307
 060A  F6 44 07 10           C1		  TEST	  $M_SL.$M_S_FLAG,Char_field_ASCIIZ AND $M_SIZE_MASK ;;AN000;;	Is this replace a AS
				CIIZ string?
			     C1	;	  $IF	  NZ					     ;;AN000;; Yes,
 060E  74 02                 C1		  JZ $MIF307
			     C1	;	  $ELSE 					     ;;AN000;;
 0610  EB 0C                 C1		  JMP SHORT $MEN307
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-113
DOS - Message Retriever - DISPMSG.ASM Module                

 0612                        C1	$MIF307:
 0612  0A D2                 C1		    OR	    DL,DL				     ;;AN000;;
			     C1	;	    $IF     NE					     ;;AN000;;
 0614  74 08                 C1		    JE $MIF309
			     C1	;	      $DO					     ;;AN000;;
 0616                        C1	$MDO310:
 0616  8F 06 04BC R          C1			POP	[$M_RT.$M_RETURN_ADDR]		     ;;AN000;;	 Clean Up stack using spare 
				variable
 061A  FE CA                 C1			DEC	DL				     ;;AN000;;	 Are we done?
			     C1	;	      $ENDDO  Z 				     ;;AN000;;
 061C  75 F8                 C1		      JNZ $MDO310
			     C1	;	    $ENDIF					     ;;AN000;;
 061E                        C1	$MIF309:
			     C1	;	  $ENDIF					     ;;AN000;;
 061E                        C1	$MEN307:
 061E  E8 0623 R             C1		  CALL	  $M_FLUSH_BUF				     ;;AN000;;	     Flush the buffer for th
				e final time
 0621  55                    C1		  PUSH	  BP					     ;;AN000;; Restore the return address
			     C1								     ;;
 0622  C3                    C1		  RET						     ;;AN000;;
			     C1								     ;;
 0623                        C1	$M_DISPLAY_REPLACE ENDP 				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_FLUSH_BUFFER
			     C1	;;
			     C1	;;	FUNCTION: Display the contents of the temporary buffer
			     C1	;;	INPUTS: DI contains the number of bytes to display
			     C1	;;	OUTPUTS: BX reset to zero
			     C1	;;
			     C1	;;	REGS USED:
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0623                        C1	$M_FLUSH_BUF PROC NEAR					     ;;AN000;;
			     C1								     ;;
 0623  51                    C1		  PUSH	  CX					     ;;AN000;; Save changed regs
 0624  06                    C1		  PUSH	  ES					     ;;AN000;;
 0625  57                    C1		  PUSH	  DI					     ;;AN000;;
 0626  1E                    C1		  PUSH	  DS					     ;;AN000;; Set ES pointing to buffer
 0627  07                    C1		  POP	  ES					     ;;AN000;;
			     C1								     ;;
 0628  8B CB                 C1		  MOV	  CX,BX 				     ;;AN000;; Set number of bytes to displa
				y
 062A  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Reset buffer counter
 062C  8D 3E 04C2 R          C1		  LEA	  DI,$M_RT.$M_TEMP_BUF			     ;;AN000;; Reset buffer location pointer
 0630  E8 01C2 R             C1		  CALL	  $M_DISPLAY_STRING			     ;;AN000;; Display the buffer
			     C1								     ;;
			     C1	;	  $IF	  NC					     ;;AN000;; Error?
 0633  72 05                 C1		  JC $MIF314
 0635  5F                    C1		    POP     DI					     ;;AN000;; No, Restore changed regs
 0636  07                    C1		    POP     ES					     ;;AN000;;
 0637  59                    C1		    POP     CX					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-114
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1	;	  $ELSE 					     ;;AN000;; Yes,
 0638  EB 04                 C1		  JMP SHORT $MEN314
 063A                        C1	$MIF314:
 063A  83 C4 06              C1		    ADD     SP,6				     ;;AN000;;	Fix stack
 063D  F9                    C1		    STC 					     ;;AN000;;
			     C1	;	  $ENDIF					     ;;AN000;; Error?
 063E                        C1	$MEN314:
			     C1								     ;;
 063E  C3                    C1		  RET						     ;;AN000;; Return
			     C1								     ;;
 063F                        C1	$M_FLUSH_BUF ENDP					     ;;AN000;;
			     C1								     ;;
			     C1								     ;;
			     C1		  IF	  CHARmsg				     ;;AN000;; Is the request to include the
				 code for CHAR replace?
 = FFFF                      C1		    $M_REPLACE =  TRUE				     ;;AN000;; Yes, THEN include it and flag
				 that we will need common
 = FFFF                      C1		    $M_CHAR_ONLY = TRUE 			     ;;AN000;;	 replacement code later
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_CHAR_REPLACE
			     C1	;;
			     C1	;;	FUNCTION: Will prepare a single char or ASCIIZ string for replace
			     C1	;;	INPUTS: DS:SI points at corresponding SUBLIST
			     C1	;;		ES:DI contains the VALUE from SUBLIST
			     C1	;;	OUTPUTS: CX contains number of characters on stack
			     C1	;;		 Top of stack  --> Last character
			     C1	;;					. . .
			     C1	;;		 Bot of stack  --> First character
			     C1	;;
			     C1	;;	OTHER REGS Revised: AX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 063F                        C1	$M_CHAR_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 063F  5D                    C1		    POP     BP					     ;;AN000;; Save return address
 0640  F6 44 07 30           C1		    TEST    $M_SL.$M_S_FLAG,NOT Char_Field_Char AND $M_SIZE_MASK ;;AN000;; Was Character spe
				cified?
			     C1	;	    $IF     Z					     ;;AN000;; Yes,
 0644  75 12                 C1		    JNZ $MIF317
 0646  26: 8A 05             C1		      MOV     AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get the character
 0649  50                    C1		      PUSH    AX				     ;;AN000;;	 Put it on the stack
 064A  41                    C1		      INC     CX				     ;;AN000;;	 Increase the count
 064B  E8 0280 R             C1		      CALL    $M_IS_IT_DBCS			     ;;AN000;;	 Is this the first byte of a
				 DB character
			     C1	;	      $IF     C 				     ;;AN000;;	 Yes,
 064E  73 06                 C1		      JNC $MIF318
 0650  26: 8A 45 01          C1			MOV	AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	   Get the next character
 0654  50                    C1			PUSH	AX				     ;;AN000;;	   Put it on the stack
 0655  F8                    C1			CLC					     ;;AN000;;	   Clear the carry
			     C1	;	      $ENDIF					     ;;AN000;;
 0656                        C1	$MIF318:
			     C1	;	    $ELSE					     ;;AN000;; No, it was an ASCIIZ string
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-115
DOS - Message Retriever - DISPMSG.ASM Module                

 0656  EB 0D                 C1		    JMP SHORT $MEN317
 0658                        C1	$MIF317:
			     C1	;	      $DO					     ;;AN000;;
 0658                        C1	$MDO321:
 0658  26: 8A 05             C1			MOV	AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get the character
 065B  0A C0                 C1			OR	AL,AL				     ;;AN000;;	 Is it the NULL?
			     C1	;	      $LEAVE  Z 				     ;;AN000;;	 No,
 065D  74 04                 C1		      JZ $MEN321
 065F  47                    C1			INC	DI				     ;;AN000;;	   Next character
 0660  41                    C1			INC	CX				     ;;AN000;;	   Increment the count
			     C1	;	      $ENDDO					     ;;AN000;;	 Yes,
 0661  EB F5                 C1		      JMP SHORT $MDO321
 0663                        C1	$MEN321:
 0663  2B F9                 C1		      SUB     DI,CX				     ;;AN000;;	 Set SI at the beginning of 
				the string
			     C1	;	    $ENDIF					     ;;AN000;;
 0665                        C1	$MEN317:
			     C1								     ;;AN000;;
 0665  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 0666  C3                    C1		    RET 					     ;;AN000;; Return
			     C1								     ;;
 0667                        C1	$M_CHAR_REPLACE ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		  ENDIF 					     ;;AN000;; END of include of CHAR replac
				e code
			     C1	; 
			     C1		  IF	  NUMmsg				     ;;AN000;; Is the request to include the
				 code for NUM replace?
 = FFFF                      C1		    $M_REPLACE =  TRUE				     ;;AN000;; Yes, THEN include it and flag
				 that we will need common
 = 0000                      C1		    $M_CHAR_ONLY = FALSE			     ;;AN000;;	 replacement code later
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_BIN2ASC_REPLACE
			     C1	;;
			     C1	;;	FUNCTION: Convert a signed or unsigned binary number to an ASCII string
			     C1	;;		  and prepare to display
			     C1	;;	INPUTS: DS:SI points at corresponding SUBLIST
			     C1	;;		ES:DI contains the VALUE from SUBLIST
			     C1	;;	OUTPUTS: CX contains number of characters on stack
			     C1	;;		 Top of stack  --> Last character
			     C1	;;					. . .
			     C1	;;		 Bot of stack  --> First character
			     C1	;;	OTHER REGS Revised: BX,DX,AX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0667                        C1	$M_BIN2ASC_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 0667  5D                    C1		    POP     BP					     ;;AN000;; Save return address
			     C1								     ;;
 0668  33 D2                 C1		    XOR     DX,DX				     ;;AN000;; Prepare for get binary value 
				(HIGH)
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-116
DOS - Message Retriever - DISPMSG.ASM Module                

 066A  33 C0                 C1		    XOR     AX,AX				     ;;AN000;; Prepare for get binary value 
				(LOW)
 066C  C7 06 04C0 R 0010     C1		    MOV     $M_RT.$M_DIVISOR,$M_BASE16		     ;;AN000;; Set default divisor
 0672  33 DB                 C1		    XOR     BX,BX				     ;;AN000;; Use BP as the NEG flag (if ap
				plicable)
			     C1	IF	    NOT     COMR
 0674  F6 44 07 20           C1		    TEST    $M_SL.$M_S_FLAG,NOT $M_BYTE AND $M_SIZE_MASK ;;AN000;; Was BYTE specified?
			     C1	;	    $IF     Z					     ;;AN000;;
 0678  75 24                 C1		    JNZ $MIF325
 067A  26: 8A 05             C1		      MOV     AL, BYTE PTR ES:[DI]		     ;;AN000;; Setup byte in AL
 067D  F6 44 07 0D           C1		      TEST    $M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binary 
				specified?
			     C1	;	      $IF     Z 				     ;;AN000;;
 0681  75 0D                 C1		      JNZ $MIF326
 0683  A8 80                 C1			TEST	AL,10000000b			     ;;AN000;; Is this number negative?
			     C1	;		$IF	NZ				     ;;AN000;;	 Yes,
 0685  74 03                 C1			JZ $MIF327
 0687  43                    C1			  INC	  BX				     ;;AN000;;	   Remember that it was nega
				tive
 0688  24 7F                 C1			  AND	  AL,01111111b			     ;;AN000;;	   Make it positive
			     C1	;		$ENDIF					     ;;AN000;;
 068A                        C1	$MIF327:
 068A  C7 06 04C0 R 000A     C1			MOV	$M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;;
 0690                        C1	$MIF326:
 0690  F6 44 07 0E           C1		      TEST    $M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binar
				y specified?
			     C1	;	      $IF     Z 				     ;;AN000;;
 0694  75 06                 C1		      JNZ $MIF330
 0696  C7 06 04C0 R 000A     C1			MOV	$M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;;
 069C                        C1	$MIF330:
			     C1	;	    $ELSE					     ;;AN000;;
 069C  EB 54                 C1		    JMP SHORT $MEN325
 069E                        C1	$MIF325:
			     C1	ENDIF
 069E  F6 44 07 10           C1		      TEST    $M_SL.$M_S_FLAG,NOT $M_WORD AND $M_SIZE_MASK ;;AN000;; Was WORD specified?
			     C1	;	      $IF     Z 				     ;;AN000;;
 06A2  75 26                 C1		      JNZ $MIF333
 06A4  26: 8B 05             C1			MOV	AX, WORD PTR ES:[DI]		     ;;AN000;; Setup byte in AL
 06A7  F6 44 07 0D           C1			TEST	$M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;; AN000;; Was Signed bina
				ry specified?
			     C1	;		$IF	Z				     ;;AN000;;
 06AB  75 0F                 C1			JNZ $MIF334
 06AD  F6 C4 80              C1			  TEST	  AH,10000000b			     ;;AN000;; Is this number negative?
			     C1	;		  $IF	  NZ				     ;;AN000;;	 Yes,
 06B0  74 04                 C1			  JZ $MIF335
 06B2  43                    C1			    INC     BX				     ;;AN000;;	   Remember that it was nega
				tive
 06B3  80 E4 7F              C1			    AND     AH,01111111b		     ;;AN000;;	   Make it positive
			     C1	;		  $ENDIF				     ;;AN000;;
 06B6                        C1	$MIF335:
 06B6  C7 06 04C0 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-117
DOS - Message Retriever - DISPMSG.ASM Module                

 06BC                        C1	$MIF334:
 06BC  F6 44 07 0E           C1			TEST	$M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed bin
				ary specified?
			     C1	;		$IF	Z				     ;;AN000;;
 06C0  75 06                 C1			JNZ $MIF338
 06C2  C7 06 04C0 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 06C8                        C1	$MIF338:
			     C1	;	      $ELSE					     ;;AN000;;
 06C8  EB 28                 C1		      JMP SHORT $MEN333
 06CA                        C1	$MIF333:
			     C1	IF		NOT	COMR
 06CA  26: 8B 05             C1			MOV	AX, WORD PTR ES:[DI]		     ;;AN000;; Setup Double word in DX:AX
 06CD  26: 8B 55 02          C1			MOV	DX, WORD PTR ES:[DI]+2		     ;;AN000;;
 06D1  F6 44 07 0D           C1			TEST	$M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binar
				y specified?
			     C1	;		$IF	Z				     ;;AN000;;
 06D5  75 0F                 C1			JNZ $MIF341
 06D7  F6 C6 80              C1			  TEST	  DH,10000000b			     ;;AN000;; Is this number negative?
			     C1	;		  $IF	  NZ				     ;;AN000;;	 Yes,
 06DA  74 04                 C1			  JZ $MIF342
 06DC  43                    C1			    INC     BX				     ;;AN000;;	   Remember that it was nega
				tive
 06DD  80 E6 7F              C1			    AND     DH,01111111b		     ;;AN000;;	   Make it positive
			     C1	;		  $ENDIF				     ;;AN000;;
 06E0                        C1	$MIF342:
 06E0  C7 06 04C0 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 06E6                        C1	$MIF341:
 06E6  F6 44 07 0E           C1			TEST	$M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed bin
				ary specified?
			     C1	;		$IF	Z				     ;;AN000;;
 06EA  75 06                 C1			JNZ $MIF345
 06EC  C7 06 04C0 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 06F2                        C1	$MIF345:
			     C1	ENDIF
			     C1	;	      $ENDIF					     ;;AN000;;
 06F2                        C1	$MEN333:
			     C1	;	    $ENDIF					     ;;AN000;;
 06F2                        C1	$MEN325:
			     C1								     ;;
 06F2  E8 02A4 R             C1		    CALL    $M_CONVERT2ASC			     ;;AN000;; Convert to ASCII string
			     C1	IF	    NOT     COMR
 06F5  0B DB                 C1		    OR	    BX,BX				     ;;AN000;;
			     C1	;	    $IF     NZ					     ;;AN000;; Was number negative?
 06F7  74 05                 C1		    JZ $MIF349
 06F9  33 D2                 C1		      XOR     DX,DX				     ;;AN000;; Yes,
 06FB  B2 2D                 C1		      MOV     DL,$M_NEG_SIGN			     ;;AN000;;	 Put "-" on the stack with t
				he number
 06FD  52                    C1		      PUSH    DX				     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;; No,
 06FE                        C1	$MIF349:
			     C1	ENDIF
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-118
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1								     ;;
 06FE  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 06FF  C3                    C1		    RET 					     ;;AN000;; Return
			     C1								     ;;
 0700                        C1	$M_BIN2ASC_REPLACE ENDP 				     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		  ENDIF 					     ;;AN000;; END of include of NUM replace
				 code
			     C1	; 
			     C1		  IF	  DATEmsg				     ;;AN000;; Is the request to include the
				 code for DATE replace?
 = FFFF                      C1		    $M_REPLACE =  TRUE				     ;;AN000;; Yes, THEN include it and flag
				 that we will need common
 = 0000                      C1		    $M_CHAR_ONLY = FALSE			     ;;AN000;;	  replacement code later
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_DATE_REPLACE
			     C1	;;
			     C1	;;	FUNCTION: Convert a date to a decimal ASCII string using current
			     C1	;;		  country format and prepare to display
			     C1	;;	INPUTS: DS:SI points at corresponding SUBLIST
			     C1	;;		ES:DI points at VALUE from SUBLIST
			     C1	;;	OUTPUTS: CX contains number of characters on stack
			     C1	;;		 Top of stack  --> Last character
			     C1	;;					. . .
			     C1	;;		 Bot of stack  --> First character
			     C1	;;	OTHER REGS Revised: DX, AX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 0700                        C1	$M_DATE_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 0700  5D                    C1		    POP     BP					     ;;AN000;; Save return address
 0701  C7 06 04C0 R 000A     C1		    MOV     $M_RT.$M_DIVISOR,$M_BASE10		     ;;AN000;; Set default divisor
 0707  E8 077D R             C1		    CALL    $M_GET_DATE 			     ;;AN000;; Set date format/separator in 
				$M_RT
			     C1								     ;;AN000;; All O.K.?
 070A  33 D2                 C1		    XOR     DX,DX				     ;;AN000;; Reset DX value
 070C  33 C0                 C1		    XOR     AX,AX				     ;;AN000;; Reset AX value
 070E  83 3E 04C2 R 00       C1		    CMP     WORD PTR $M_RT.$M_DATE_FORMAT,0	     ;;AN000;; USA Date Format
			     C1	;	    $IF     E					     ;;AN000;;	Beginning from end: (saved o
				n the stack)
 0713  75 1E                 C1		    JNE $MIF351
 0715  E8 0795 R             C1		      CALL    $M_YEAR				     ;;AN000;;	 Get Year
 0718  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 071B  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
 071F  41                    C1		      INC     CX				     ;;AN000;; Increment count
 0720  33 C0                 C1		      XOR     AX,AX				     ;;AN000;; Reset AX value
 0722  8A 44 05              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+3	     ;;AN000;;	Get Day
 0725  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 0728  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-119
DOS - Message Retriever - DISPMSG.ASM Module                

 072C  41                    C1		      INC     CX				     ;;AN000;; Increment count
 072D  8A 44 04              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+2	     ;;AN000;;	Get Month
 0730  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
			     C1	;	    $ENDIF					     ;;AN000;;
 0733                        C1	$MIF351:
			     C1								     ;;
 0733  83 3E 04C2 R 01       C1		    CMP     WORD PTR $M_RT.$M_DATE_FORMAT,1	     ;;AN000;; EUROPE Date Format
			     C1	;	    $IF     E					     ;;AN000;;	Beginning from end: (saved o
				n the stack)
 0738  75 1E                 C1		    JNE $MIF353
 073A  E8 0795 R             C1		      CALL    $M_YEAR				     ;;AN000;;	 Get Year
 073D  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 0740  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
 0744  41                    C1		      INC     CX				     ;;AN000;;
 0745  33 C0                 C1		      XOR     AX,AX				     ;;AN000;; Reset AX
 0747  8A 44 04              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+2	     ;;AN000;;	Get Month
 074A  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 074D  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
 0751  41                    C1		      INC     CX				     ;;AN000;;
 0752  8A 44 05              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+3	     ;;AN000;;	Get Day
 0755  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
			     C1	;	    $ENDIF					     ;;AN000;;
 0758                        C1	$MIF353:
			     C1								     ;;
 0758  83 3E 04C2 R 02       C1		    CMP     WORD PTR $M_RT.$M_DATE_FORMAT,2	     ;;AN000;; JAPAN Date Format
			     C1	;	    $IF     E					     ;;AN000;;	Beginning from end: (saved o
				n the stack)
 075D  75 1C                 C1		    JNE $MIF355
 075F  8A 44 05              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+3	     ;;AN000;;	Get Day
 0762  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 0765  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
 0769  41                    C1		      INC     CX				     ;;AN000;;
 076A  8A 44 04              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+2	     ;;AN000;;	Get Month
 076D  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
 0770  FF 36 04CD R          C1		      PUSH    WORD PTR $M_RT.$M_DATE_SEPARA	     ;;AN000;;
 0774  41                    C1		      INC     CX				     ;;AN000;;
 0775  E8 0795 R             C1		      CALL    $M_YEAR				     ;;AN000;;	 Get Year
 0778  E8 07A7 R             C1		      CALL    $M_CONVERTDATE			     ;;AN000;;	Convert it to an ASCII strin
				g
			     C1	;	    $ENDIF					     ;;AN000;;
 077B                        C1	$MIF355:
			     C1								     ;;
 077B  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 077C  C3                    C1		    RET 					     ;;AN000;; Return
			     C1								     ;;
 077D                        C1	$M_DATE_REPLACE ENDP					     ;;AN000;;
			     C1								     ;;
 077D                        C1	$M_GET_DATE PROC    NEAR				     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-120
DOS - Message Retriever - DISPMSG.ASM Module                

 077D  B4 38                 C1		    MOV     AH,DOS_GET_COUNTRY			     ;;AN000;; Call DOS for country dependan
				t info
 077F  B0 00                 C1		    MOV     AL,0				     ;;AN000;; Get current country info
 0781  8D 16 04C2 R          C1		    LEA     DX,$M_RT.$M_TEMP_BUF		     ;;AN000;; Set up addressibility to buff
				er
 0785  CD 21                 C1		    INT     21H 				     ;;AN000;;
			     C1	;	    $IF     C					     ;;AN000;; No,
 0787  73 0B                 C1		    JNC $MIF357
 0789  C7 06 04C2 R 0000     C1		      MOV     WORD PTR $M_RT.$M_DATE_FORMAT,$M_DEF_DATE_FORM ;;AN000;;	 Set default date fo
				rmat    (BH)
 078F  C6 06 04CD R 2D       C1		      MOV     BYTE PTR $M_RT.$M_DATE_SEPARA,$M_DEF_DATE_SEP ;;AN000;;	Set default date sep
				arator (BL)
			     C1	;	    $ENDIF					     ;;AN000;;
 0794                        C1	$MIF357:
 0794  C3                    C1		    RET 					     ;;AN000;;
 0795                        C1	$M_GET_DATE ENDP					     ;;AN000;;
			     C1								     ;;
 0795                        C1	$M_YEAR     PROC    NEAR				     ;;AN000;;
 0795  8B 44 02              C1		    MOV     AX,WORD PTR $M_SL.$M_S_VALUE	     ;;AN000;;	Get Year
 0798  F6 44 07 10           C1		    TEST    $M_SL.$M_S_FLAG,Date_MDY_4 AND $M_DATE_MASK ;;AN000;; Was Month/Day/Year (2 Digi
				ts) specified?
			     C1	;	    $IF     Z					     ;;AN000;;
 079C  75 08                 C1		    JNZ $MIF359
 079E  3D 0063               C1		      CMP     AX,$M_MAX_2_YEAR			     ;;AN000;;	Get Year
			     C1	;	      $IF     A 				     ;;AN000;;
 07A1  76 03                 C1		      JNA $MIF360
 07A3  B8 0063               C1			MOV	AX,$M_MAX_2_YEAR		     ;;AN000;;
			     C1	;	      $ENDIF					     ;;AN000;;
 07A6                        C1	$MIF360:
			     C1	;	    $ENDIF					     ;;AN000;;
 07A6                        C1	$MIF359:
 07A6  C3                    C1		    RET 					     ;;AN000;;
 07A7                        C1	$M_YEAR     ENDP					     ;;AN000;;
			     C1								     ;;
 07A7                        C1	$M_CONVERTDATE PROC NEAR				     ;;AN000;;
 07A7  8F 06 04C2 R          C1		    POP     WORD PTR $M_RT.$M_TEMP_BUF		     ;;AN000;; Save return address
 07AB  88 0E 04B8 R          C1		    MOV     $M_RT.$M_SIZE,CL			     ;;AN000;; Save the size before conversi
				on
 07AF  E8 02A4 R             C1		    CALL    $M_CONVERT2ASC			     ;;AN000;; Convert it to an ASCII string
 07B2  49                    C1		    DEC     CX					     ;;AN000;; Test if size only grew by 1
 07B3  3A 0E 04B8 R          C1		    CMP     CL,$M_RT.$M_SIZE			     ;;AN000;; Did size only grow by one
			     C1	;	    $IF     E					     ;;AN000;; Yes,
 07B7  75 05                 C1		    JNE $MIF363
 07B9  B8 0030               C1		      MOV     AX,$M_TIMEDATE_PAD		     ;;AN000;;	 Get a pad character (0)
 07BC  50                    C1		      PUSH    AX				     ;;AN000;;	 Save it
 07BD  41                    C1		      INC     CX				     ;;AN000;;	 Count it
			     C1	;	    $ENDIF					     ;;AN000;;
 07BE                        C1	$MIF363:
 07BE  41                    C1		    INC     CX					     ;;AN000;; Restore CX
 07BF  FF 36 04C2 R          C1		    PUSH    WORD PTR $M_RT.$M_TEMP_BUF		     ;;AN000;; Save return address
 07C3  C3                    C1		    RET 					     ;;AN000;;
 07C4                        C1	$M_CONVERTDATE ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-121
DOS - Message Retriever - DISPMSG.ASM Module                

			     C1		  ENDIF 					     ;;AN000;; END of include of DATE replac
				e code
			     C1	; 
			     C1		  IF	  TIMEmsg				     ;;AN000;; Is the request to include the
				 code for TIME replace?
 = FFFF                      C1		    $M_REPLACE =  TRUE				     ;;AN000;; Yes, THEN include it and flag
				 that we will need common
 = 0000                      C1		    $M_CHAR_ONLY = FALSE			     ;;AN000;;	  replacement code later
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1	;;
			     C1	;;	PROC NAME: $M_TIME_REPLACE
			     C1	;;
			     C1	;;	FUNCTION: Convert a time to a decimal ASCII string
			     C1	;;		  and prepare to display
			     C1	;;	INPUTS: DS:SI points at corresponding SUBLIST
			     C1	;;		ES:DI points at VALUE from SUBLIST
			     C1	;;	OUTPUTS: CX contains number of characters on stack
			     C1	;;		 Top of stack  --> Last character
			     C1	;;					. . .
			     C1	;;		 Bot of stack  --> First character
			     C1	;;	REGS USED: BP,CX,AX
			     C1	;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1								     ;;
 07C4                        C1	$M_TIME_REPLACE PROC NEAR				     ;;AN000;;
			     C1								     ;;
 07C4  5D                    C1		    POP     BP					     ;;AN000;; Save return address
 07C5  C7 06 04C0 R 000A     C1		    MOV     $M_RT.$M_DIVISOR,$M_BASE10		     ;;AN000;; Set default divisor
 07CB  E8 0848 R             C1		    CALL    $M_GET_TIME 			     ;;AN000;; All O.K.?
 07CE  F6 44 07 01           C1		    TEST    $M_SL.$M_S_FLAG,Time_Cty_Type AND $M_TIME_MASK ;;AN000;; Is this a request for c
				urrent country info?
			     C1	;	    $IF     NZ					     ;;AN000;; Yes,
 07D2  74 1C                 C1		    JZ $MIF365
 07D4  80 3E 04D3 R 00       C1		      CMP     BYTE PTR $M_RT.$M_TIME_FORMAT,0	     ;;AN000;; Is the current country format
				 12 Hour?
			     C1	;	      $IF     E 				     ;;AN000;; Yes,
 07D9  75 15                 C1		      JNE $MIF366
 07DB  8A 44 02              C1			MOV	AL,BYTE PTR $M_SL.$M_S_VALUE	     ;;AN000;;	Get Hours
 07DE  3C 0C                 C1			CMP	AL,12				     ;;AN000;;	Is hour 12 or less?
			     C1	;		$IF	L,OR				     ;;AN000;;	 or
 07E0  7C 04                 C1			JL $MLL367
 07E2  3C 17                 C1			CMP	AL,23				     ;;AN000;;	  Is hour 24 or greater?
			     C1	;		$IF	G				     ;;AN000;;	Yes,
 07E4  7E 06                 C1			JNG $MIF367
 07E6                        C1	$MLL367:
 07E6  B0 61                 C1			  MOV	  AL,$M_AM			     ;;AN000;;
 07E8  50                    C1			  PUSH	  AX				     ;;AN000;;	  Push an "a" to represent A
				M.
 07E9  41                    C1			  INC	  CX				     ;;AN000;;
			     C1	;		$ELSE					     ;;AN000;;	No,
 07EA  EB 04                 C1			JMP SHORT $MEN367
 07EC                        C1	$MIF367:
 07EC  B0 70                 C1			  MOV	  AL,$M_PM			     ;;AN000;;
 07EE  50                    C1			  PUSH	  AX				     ;;AN000;;	  Push an "p" to represent P
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-122
DOS - Message Retriever - DISPMSG.ASM Module                

				M.
 07EF  41                    C1			  INC	  CX				     ;;AN000;;
			     C1	;		$ENDIF					     ;;AN000;;
 07F0                        C1	$MEN367:
			     C1	;	      $ENDIF					     ;;AN000;;
 07F0                        C1	$MIF366:
			     C1	;	    $ENDIF					     ;;AN000;;
 07F0                        C1	$MIF365:
			     C1								     ;;
 07F0  33 C0                 C1		    XOR     AX,AX				     ;;AN000;;
 07F2  33 D2                 C1		    XOR     DX,DX				     ;;AN000;;
 07F4  F6 44 07 20           C1		    TEST    $M_SL.$M_S_FLAG,Time_HHMMSSHH_Cty AND $M_SIZE_MASK ;;AN000;; Was Hour/Min/Sec/Hu
				nds (12 Hour) specified?
			     C1	;	    $IF     NZ					     ;;AN000;;
 07F8  74 0B                 C1		    JZ $MIF372
 07FA  8A 44 05              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+3	     ;;AN000;;	Get Hundreds
 07FD  E8 0865 R             C1		      CALL    $M_CONVERTTIME			     ;;AN000;;
 0800  FF 36 04CB R          C1		      PUSH    WORD PTR $M_RT.$M_DECI_SEPARA	     ;;AN000;;
 0804  41                    C1		      INC     CX				     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;;
 0805                        C1	$MIF372:
 0805  F6 44 07 20           C1		    TEST    $M_SL.$M_S_FLAG,Time_HHMMSSHH_Cty AND $M_SIZE_MASK ;;AN000;; Was Hour/Min/Sec/Hu
				nds (12 Hour) specified?
			     C1	;	    $IF     NZ,OR				     ;;AN000;;
 0809  75 06                 C1		    JNZ $MLL374
 080B  F6 44 07 10           C1		    TEST    $M_SL.$M_S_FLAG,Time_HHMMSS_Cty AND $M_SIZE_MASK ;;AN000;; Was Hour/Min/Sec (12 
				Hour) specified?
			     C1	;	    $IF     NZ					     ;;AN000;;
 080F  74 0B                 C1		    JZ $MIF374
 0811                        C1	$MLL374:
 0811  8A 44 04              C1		      MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+2	     ;;AN000;;	Get Seconds
 0814  E8 0865 R             C1		      CALL    $M_CONVERTTIME			     ;;AN000;;
 0817  FF 36 04CF R          C1		      PUSH    WORD PTR $M_RT.$M_TIME_SEPARA	     ;;AN000;;
 081B  41                    C1		      INC     CX				     ;;AN000;;
			     C1	;	    $ENDIF					     ;;AN000;;
 081C                        C1	$MIF374:
			     C1								     ;;        Do Hour/Min (12 Hour)
 081C  8A 44 03              C1		    MOV     AL,BYTE PTR $M_SL.$M_S_VALUE+1	     ;;AN000;;	Get Minutes
 081F  E8 0865 R             C1		    CALL    $M_CONVERTTIME			     ;;AN000;;
 0822  FF 36 04CF R          C1		    PUSH    WORD PTR $M_RT.$M_TIME_SEPARA	     ;;AN000;;
 0826  41                    C1		    INC     CX					     ;;AN000;;
			     C1								     ;;
 0827  8A 44 02              C1		    MOV     AL,BYTE PTR $M_SL.$M_S_VALUE	     ;;AN000;;	Get Hours
 082A  F6 44 07 01           C1		    TEST    $M_SL.$M_S_FLAG,Time_Cty_Type AND $M_TIME_MASK ;;AN000;; Is this a request for c
				urrent country info?
			     C1	;	    $IF     NZ					     ;;AN000;; Yes,
 082E  74 13                 C1		    JZ $MIF376
 0830  80 3E 04D3 R 00       C1		      CMP     BYTE PTR $M_RT.$M_TIME_FORMAT,0	     ;;AN000;; Is the current country format
				 12 Hour?
			     C1	;	      $IF     E 				     ;;AN000;; Yes,
 0835  75 0C                 C1		      JNE $MIF377
 0837  3C 0D                 C1			CMP	AL,13				     ;;AN000;;	Is hour less than 12?
			     C1	;		$IF	GE				     ;;AN000;;	Yes,
 0839  7C 02                 C1			JNGE $MIF378
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-123
DOS - Message Retriever - DISPMSG.ASM Module                

 083B  2C 0C                 C1			  SUB	  AL,12 			     ;;AN000;;	  Set to a 12 hour value
			     C1	;		$ENDIF					     ;;AN000;;
 083D                        C1	$MIF378:
 083D  3C 00                 C1			CMP	AL,0				     ;;AN000;;	Is hour less than 12?
			     C1	;		$IF	E				     ;;AN000;;	Yes,
 083F  75 02                 C1			JNE $MIF380
 0841  B0 0C                 C1			  MOV	  AL,12 			     ;;AN000;;	  Set to a 12 hour value
			     C1	;		$ENDIF					     ;;AN000;;
 0843                        C1	$MIF380:
			     C1	;	      $ENDIF					     ;;AN000;;
 0843                        C1	$MIF377:
			     C1	;	    $ENDIF					     ;;AN000;;
 0843                        C1	$MIF376:
 0843  E8 02A4 R             C1		    CALL    $M_CONVERT2ASC			     ;;AN000;; Convert it to ASCII
			     C1								     ;;
 0846  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 0847  C3                    C1		    RET 					     ;;AN000;; Return
			     C1								     ;;
 0848                        C1	$M_TIME_REPLACE ENDP					     ;;AN000;;
			     C1								     ;;
 0848                        C1	$M_GET_TIME PROC    NEAR				     ;;AN000;;
 0848  B4 38                 C1		    MOV     AH,DOS_GET_COUNTRY			     ;;AN000;; Call DOS for country dependan
				t info
 084A  B0 00                 C1		    MOV     AL,0				     ;;AN000;; Get current country info
 084C  8D 16 04C2 R          C1		    LEA     DX,$M_RT.$M_TEMP_BUF		     ;;AN000;; Set up addressibility to buff
				er
 0850  CD 21                 C1		    INT     21H 				     ;;AN000;;
			     C1	;	    $IF     C					     ;;AN000;; No,
 0852  73 10                 C1		    JNC $MIF384
 0854  C7 06 04D3 R 0001     C1		      MOV     WORD PTR $M_RT.$M_TIME_FORMAT,$M_DEF_TIME_FORM ;;AN000;;	 Set default time fo
				rmat    (BH)
 085A  C6 06 04CF R 3A       C1		      MOV     BYTE PTR $M_RT.$M_TIME_SEPARA,$M_DEF_TIME_SEP ;;AN000;;	Set default time sep
				arator (BL)
 085F  C6 06 04CB R 2E       C1		      MOV     BYTE PTR $M_RT.$M_DECI_SEPARA,$M_DEF_DECI_SEP ;;AN000;;	Set default time sep
				arator (BL)
			     C1	;	    $ENDIF					     ;;AN000;;
 0864                        C1	$MIF384:
 0864  C3                    C1		    RET 					     ;;AN000;;
 0865                        C1	$M_GET_TIME ENDP					     ;;AN000;;
			     C1								     ;;
 0865                        C1	$M_CONVERTTIME PROC NEAR				     ;;AN000;;
 0865  8F 06 04C2 R          C1		    POP     WORD PTR $M_RT.$M_TEMP_BUF		     ;;AN000;; Save return address
 0869  88 0E 04B8 R          C1		    MOV     $M_RT.$M_SIZE,CL			     ;;AN000;; Save the size before conversi
				on
 086D  E8 02A4 R             C1		    CALL    $M_CONVERT2ASC			     ;;AN000;; Convert it to an ASCII string
 0870  49                    C1		    DEC     CX					     ;;AN000;; Test if size only grew by 1
 0871  3A 0E 04B8 R          C1		    CMP     CL,$M_RT.$M_SIZE			     ;;AN000;; Did size only grow by one
			     C1	;	    $IF     E					     ;;AN000;; Yes,
 0875  75 05                 C1		    JNE $MIF386
 0877  B8 0030               C1		      MOV     AX,$M_TIMEDATE_PAD		     ;;AN000;;	 Get a pad character (0)
 087A  50                    C1		      PUSH    AX				     ;;AN000;;	 Save it
 087B  41                    C1		      INC     CX				     ;;AN000;;	 Count it
			     C1	;	    $ENDIF					     ;;AN000;;
 087C                        C1	$MIF386:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-124
DOS - Message Retriever - DISPMSG.ASM Module                

 087C  41                    C1		    INC     CX					     ;;AN000;; Restore CX
 087D  FF 36 04C2 R          C1		    PUSH    WORD PTR $M_RT.$M_TEMP_BUF		     ;;AN000;; Save return address
 0881  C3                    C1		    RET 					     ;;AN000;;
 0882                        C1	$M_CONVERTTIME ENDP					     ;;AN000;;
			     C1								     ;;
			     C1	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C1		  ENDIF 					     ;;AN000;; END of include of TIME replac
				e
			     C1		ENDIF						     ;;AN000;; END of include of Replacement
				 common code
			     C1	; 
			     C1	      ENDIF						     ;;AN000;; END of include of SYSDISPMSG
			     C1	    ENDIF						     ;;AN000;; END of include of MSG_DATA_ON
				LY
			     C1	ENDIF							     ;;AN000;; END of include of Structure o
				nly
			     C1	
			     1	   ENDIF				  ;	ENDIF 
				pathlabl	msgret								;an040;bgb
				Msg_Services	<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> ;an03
				7;bgb
			     1						  ; 
 = 0000                      1	   $M_SERVICE = FALSE			  ;  Reset service flag 
			     1	   IRP	   var,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL>	
					  ;  FOR each variable in the list 
			     1	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     1						  ;	For each service predefined 
			     1	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     1		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above) 
			     1		 ELSE				  ; 
			     1		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     1		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     1		   ENDIF			  ;	    ENDIF 
			     1		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     1		     IFIDN  <var>,<repl>	  ; 
			     1		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     1		     ENDIF			  ; 
			     1		   ENDM 			  ; 
			     1		   serv = TRUE			  ;	    Let the assembler know about the service 
			     1		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     1		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     1		 ENDIF				  ;	  ENDIF 
			     1	      ENDM				  ;	NEXT service 
			     1	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     1						  ; Continue further checks (If we add any more predefined 
			     1						  ;  function to the above IRP command, it generates a 
			     1						  ;  syntax error. We must continue the processing in anothe
				r 
			     1						  ;  MACRO called MSG_SERVICES2) 
			     1	      IF $M_INCLUDE			  ;	IF message class was requested 
			     1		 $M_INC var			  ;	   Include it as a message class 
			     1	      ENDIF				  ;	ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-125
DOS - Message Retriever - DISPMSG.ASM Module                

			     1	   ENDM 				  ;  NEXT variable 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CLA>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CLA>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CLA>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CLA>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLA>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-126
DOS - Message Retriever - DISPMSG.ASM Module                

			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-127
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-128
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-129
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CLA			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CLA					 ; 
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_CLS_1
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 0882                        C3	$M_CLASS_A_STRUC LABEL BYTE
 0882  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_A_MessageCount>
 0883  0400                  C3	
 0885  13                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 0886                        C3	$M_A_00001H_STRUC LABEL BYTE
 0886  0100                  C3	        $M_ID   <00001H,$M_A_00001H_MSG-$M_A_00001H_STRUC>
 0888  4C00                  C3	
			     C3	
			     C3	
 088A                        C3	$M_A_00002H_STRUC LABEL BYTE
 088A  0200                  C3	        $M_ID   <00002H,$M_A_00002H_MSG-$M_A_00002H_STRUC>
 088C  6000                  C3	
			     C3	
			     C3	
 088E                        C3	$M_A_00003H_STRUC LABEL BYTE
 088E  0300                  C3	        $M_ID   <00003H,$M_A_00003H_MSG-$M_A_00003H_STRUC>
 0890  7300                  C3	
			     C3	
			     C3	
 0892                        C3	$M_A_00004H_STRUC LABEL BYTE
 0892  0400                  C3	        $M_ID   <00004H,$M_A_00004H_MSG-$M_A_00004H_STRUC>
 0894  9300                  C3	
			     C3	
			     C3	
 0896                        C3	$M_A_00005H_STRUC LABEL BYTE
 0896  0500                  C3	        $M_ID   <00005H,$M_A_00005H_MSG-$M_A_00005H_STRUC>
 0898  B000                  C3	
			     C3	
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-130
DOS - Message Retriever - DISPMSG.ASM Module                

 089A                        C3	$M_A_00007H_STRUC LABEL BYTE
 089A  0700                  C3	        $M_ID   <00007H,$M_A_00007H_MSG-$M_A_00007H_STRUC>
 089C  CD00                  C3	
			     C3	
			     C3	
 089E                        C3	$M_A_00008H_STRUC LABEL BYTE
 089E  0800                  C3	        $M_ID   <00008H,$M_A_00008H_MSG-$M_A_00008H_STRUC>
 08A0  E300                  C3	
			     C3	
			     C3	
 08A2                        C3	$M_A_00009H_STRUC LABEL BYTE
 08A2  0900                  C3	        $M_ID   <00009H,$M_A_00009H_MSG-$M_A_00009H_STRUC>
 08A4  F700                  C3	
			     C3	
			     C3	
 08A6                        C3	$M_A_0000AH_STRUC LABEL BYTE
 08A6  0A00                  C3	        $M_ID   <0000AH,$M_A_0000AH_MSG-$M_A_0000AH_STRUC>
 08A8  0F01                  C3	
			     C3	
			     C3	
 08AA                        C3	$M_A_0000BH_STRUC LABEL BYTE
 08AA  0B00                  C3	        $M_ID   <0000BH,$M_A_0000BH_MSG-$M_A_0000BH_STRUC>
 08AC  2601                  C3	
			     C3	
			     C3	
 08AE                        C3	$M_A_0000CH_STRUC LABEL BYTE
 08AE  0C00                  C3	        $M_ID   <0000CH,$M_A_0000CH_MSG-$M_A_0000CH_STRUC>
 08B0  3C01                  C3	
			     C3	
			     C3	
 08B2                        C3	$M_A_0000DH_STRUC LABEL BYTE
 08B2  0D00                  C3	        $M_ID   <0000DH,$M_A_0000DH_MSG-$M_A_0000DH_STRUC>
 08B4  5701                  C3	
			     C3	
			     C3	
 08B6                        C3	$M_A_0000EH_STRUC LABEL BYTE
 08B6  0E00                  C3	        $M_ID   <0000EH,$M_A_0000EH_MSG-$M_A_0000EH_STRUC>
 08B8  7B01                  C3	
			     C3	
			     C3	
 08BA                        C3	$M_A_0000FH_STRUC LABEL BYTE
 08BA  0F00                  C3	        $M_ID   <0000FH,$M_A_0000FH_MSG-$M_A_0000FH_STRUC>
 08BC  9201                  C3	
			     C3	
			     C3	
 08BE                        C3	$M_A_00010H_STRUC LABEL BYTE
 08BE  1000                  C3	        $M_ID   <00010H,$M_A_00010H_MSG-$M_A_00010H_STRUC>
 08C0  A401                  C3	
			     C3	
			     C3	
 08C2                        C3	$M_A_00011H_STRUC LABEL BYTE
 08C2  1100                  C3	        $M_ID   <00011H,$M_A_00011H_MSG-$M_A_00011H_STRUC>
 08C4  AE01                  C3	
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-131
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
 08C6                        C3	$M_A_00012H_STRUC LABEL BYTE
 08C6  1200                  C3	        $M_ID   <00012H,$M_A_00012H_MSG-$M_A_00012H_STRUC>
 08C8  C801                  C3	
			     C3	
			     C3	
 08CA                        C3	$M_A_00013H_STRUC LABEL BYTE
 08CA  1300                  C3	        $M_ID   <00013H,$M_A_00013H_MSG-$M_A_00013H_STRUC>
 08CC  EE01                  C3	
			     C3	
			     C3	
 08CE                        C3	$M_A_00014H_STRUC LABEL BYTE
 08CE  1400                  C3	        $M_ID   <00014H,$M_A_00014H_MSG-$M_A_00014H_STRUC>
 08D0  1102                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 08D2                        C3	$M_A_00001H_MSG LABEL BYTE
 08D2  17                    C3	        DB      $M_A_00001H_END-$M_A_00001H_MSG-1
 08D3  49 6E 63 6F 72 72     C3	        DB      "Incorrect DOS version",CR,LF
       65 63 74 20 44 4F     C3	
       53 20 76 65 72 73     C3	
       69 6F 6E 0D 0A        C3	
 08EA                        C3	$M_A_00001H_END LABEL BYTE
			     C3	  
 08EA                        C3	$M_A_00002H_MSG LABEL BYTE
 08EA  16                    C3	        DB      $M_A_00002H_END-$M_A_00002H_MSG-1
 08EB  25 31 20 61 6C 72     C3	        DB      "%1 already installed",CR,LF
       65 61 64 79 20 69     C3	
       6E 73 74 61 6C 6C     C3	
       65 64 0D 0A           C3	
 0901                        C3	$M_A_00002H_END LABEL BYTE
			     C3	  
 0901                        C3	$M_A_00003H_MSG LABEL BYTE
 0901  23                    C3	        DB      $M_A_00003H_END-$M_A_00003H_MSG-1
 0902  43 6F 6E 76 65 72     C3	        DB      "Convert lost chains to files (Y/N)?"
       74 20 6C 6F 73 74     C3	
       20 63 68 61 69 6E     C3	
       73 20 74 6F 20 66     C3	
       69 6C 65 73 20 28     C3	
       59 2F 4E 29 3F        C3	
 0925                        C3	$M_A_00003H_END LABEL BYTE
			     C3	  
 0925                        C3	$M_A_00004H_MSG LABEL BYTE
 0925  20                    C3	        DB      $M_A_00004H_END-$M_A_00004H_MSG-1
 0926  55 6E 72 65 63 6F     C3	        DB      "Unrecoverable error in directory"
       76 65 72 61 62 6C     C3	
       65 20 65 72 72 6F     C3	
       72 20 69 6E 20 64     C3	
       69 72 65 63 74 6F     C3	
       72 79                 C3	
 0946                        C3	$M_A_00004H_END LABEL BYTE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-132
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	  
 0946                        C3	$M_A_00005H_MSG LABEL BYTE
 0946  20                    C3	        DB      $M_A_00005H_END-$M_A_00005H_MSG-1
 0947  43 6F 6E 76 65 72     C3	        DB      "Convert directory to file (Y/N)?"
       74 20 64 69 72 65     C3	
       63 74 6F 72 79 20     C3	
       74 6F 20 66 69 6C     C3	
       65 20 28 59 2F 4E     C3	
       29 3F                 C3	
 0967                        C3	$M_A_00005H_END LABEL BYTE
			     C3	  
 0967                        C3	$M_A_00007H_MSG LABEL BYTE
 0967  19                    C3	        DB      $M_A_00007H_END-$M_A_00007H_MSG-1
 0968  25 31 20 62 79 74     C3	        DB      "%1 bytes total disk space"
       65 73 20 74 6F 74     C3	
       61 6C 20 64 69 73     C3	
       6B 20 73 70 61 63     C3	
       65                    C3	
 0981                        C3	$M_A_00007H_END LABEL BYTE
			     C3	  
 0981                        C3	$M_A_00008H_MSG LABEL BYTE
 0981  17                    C3	        DB      $M_A_00008H_END-$M_A_00008H_MSG-1
 0982  25 31 20 62 79 74     C3	        DB      "%1 bytes in bad sectors"
       65 73 20 69 6E 20     C3	
       62 61 64 20 73 65     C3	
       63 74 6F 72 73        C3	
 0999                        C3	$M_A_00008H_END LABEL BYTE
			     C3	  
 0999                        C3	$M_A_00009H_MSG LABEL BYTE
 0999  1B                    C3	        DB      $M_A_00009H_END-$M_A_00009H_MSG-1
 099A  25 31 20 62 79 74     C3	        DB      "%1 bytes in %2 hidden files"
       65 73 20 69 6E 20     C3	
       25 32 20 68 69 64     C3	
       64 65 6E 20 66 69     C3	
       6C 65 73              C3	
 09B5                        C3	$M_A_00009H_END LABEL BYTE
			     C3	  
 09B5                        C3	$M_A_0000AH_MSG LABEL BYTE
 09B5  1A                    C3	        DB      $M_A_0000AH_END-$M_A_0000AH_MSG-1
 09B6  25 31 20 62 79 74     C3	        DB      "%1 bytes in %2 directories"
       65 73 20 69 6E 20     C3	
       25 32 20 64 69 72     C3	
       65 63 74 6F 72 69     C3	
       65 73                 C3	
 09D0                        C3	$M_A_0000AH_END LABEL BYTE
			     C3	  
 09D0                        C3	$M_A_0000BH_MSG LABEL BYTE
 09D0  19                    C3	        DB      $M_A_0000BH_END-$M_A_0000BH_MSG-1
 09D1  25 31 20 62 79 74     C3	        DB      "%1 bytes in %2 user files"
       65 73 20 69 6E 20     C3	
       25 32 20 75 73 65     C3	
       72 20 66 69 6C 65     C3	
       73                    C3	
 09EA                        C3	$M_A_0000BH_END LABEL BYTE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-133
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	  
 09EA                        C3	$M_A_0000CH_MSG LABEL BYTE
 09EA  1E                    C3	        DB      $M_A_0000CH_END-$M_A_0000CH_MSG-1
 09EB  25 31 20 62 79 74     C3	        DB      "%1 bytes in %2 recovered files"
       65 73 20 69 6E 20     C3	
       25 32 20 72 65 63     C3	
       6F 76 65 72 65 64     C3	
       20 66 69 6C 65 73     C3	
 0A09                        C3	$M_A_0000CH_END LABEL BYTE
			     C3	  
 0A09                        C3	$M_A_0000DH_MSG LABEL BYTE
 0A09  27                    C3	        DB      $M_A_0000DH_END-$M_A_0000DH_MSG-1
 0A0A  25 31 20 62 79 74     C3	        DB      "%1 bytes would be in %2 recovered files"
       65 73 20 77 6F 75     C3	
       6C 64 20 62 65 20     C3	
       69 6E 20 25 32 20     C3	
       72 65 63 6F 76 65     C3	
       72 65 64 20 66 69     C3	
       6C 65 73              C3	
 0A31                        C3	$M_A_0000DH_END LABEL BYTE
			     C3	  
 0A31                        C3	$M_A_0000EH_MSG LABEL BYTE
 0A31  1A                    C3	        DB      $M_A_0000EH_END-$M_A_0000EH_MSG-1
 0A32  25 31 20 62 79 74     C3	        DB      "%1 bytes available on disk"
       65 73 20 61 76 61     C3	
       69 6C 61 62 6C 65     C3	
       20 6F 6E 20 64 69     C3	
       73 6B                 C3	
 0A4C                        C3	$M_A_0000EH_END LABEL BYTE
			     C3	  
 0A4C                        C3	$M_A_0000FH_MSG LABEL BYTE
 0A4C  15                    C3	        DB      $M_A_0000FH_END-$M_A_0000FH_MSG-1
 0A4D  25 31 20 74 6F 74     C3	        DB      "%1 total bytes memory"
       61 6C 20 62 79 74     C3	
       65 73 20 6D 65 6D     C3	
       6F 72 79              C3	
 0A62                        C3	$M_A_0000FH_END LABEL BYTE
			     C3	  
 0A62                        C3	$M_A_00010H_MSG LABEL BYTE
 0A62  0D                    C3	        DB      $M_A_00010H_END-$M_A_00010H_MSG-1
 0A63  25 31 20 62 79 74     C3	        DB      "%1 bytes free"
       65 73 20 66 72 65     C3	
       65                    C3	
 0A70                        C3	$M_A_00010H_END LABEL BYTE
			     C3	  
 0A70                        C3	$M_A_00011H_MSG LABEL BYTE
 0A70  1D                    C3	        DB      $M_A_00011H_END-$M_A_00011H_MSG-1
 0A71  43 61 6E 6E 6F 74     C3	        DB      "Cannot CHKDSK a network drive"
       20 43 48 4B 44 53     C3	
       4B 20 61 20 6E 65     C3	
       74 77 6F 72 6B 20     C3	
       64 72 69 76 65        C3	
 0A8E                        C3	$M_A_00011H_END LABEL BYTE
			     C3	  
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-134
DOS - Message Retriever - DISPMSG.ASM Module                

 0A8E                        C3	$M_A_00012H_MSG LABEL BYTE
 0A8E  29                    C3	        DB      $M_A_00012H_END-$M_A_00012H_MSG-1
 0A8F  43 61 6E 6E 6F 74     C3	        DB      "Cannot CHKDSK a SUBSTed or ASSIGNed drive"
       20 43 48 4B 44 53     C3	
       4B 20 61 20 53 55     C3	
       42 53 54 65 64 20     C3	
       6F 72 20 41 53 53     C3	
       49 47 4E 65 64 20     C3	
       64 72 69 76 65        C3	
 0AB8                        C3	$M_A_00012H_END LABEL BYTE
			     C3	  
 0AB8                        C3	$M_A_00013H_MSG LABEL BYTE
 0AB8  26                    C3	        DB      $M_A_00013H_END-$M_A_00013H_MSG-1
 0AB9  50 72 6F 62 61 62     C3	        DB      "Probable non-DOS disk",CR,LF,"Continue (Y/N)?"
       6C 65 20 6E 6F 6E     C3	
       2D 44 4F 53 20 64     C3	
       69 73 6B 0D 0A 43     C3	
       6F 6E 74 69 6E 75     C3	
       65 20 28 59 2F 4E     C3	
       29 3F                 C3	
 0ADF                        C3	$M_A_00013H_END LABEL BYTE
			     C3	  
 0ADF                        C3	$M_A_00014H_MSG LABEL BYTE
 0ADF  1B                    C3	        DB      $M_A_00014H_END-$M_A_00014H_MSG-1
 0AE0  44 69 73 6B 20 65     C3	        DB      "Disk error reading FAT %1",CR,LF
       72 72 6F 72 20 72     C3	
       65 61 64 69 6E 67     C3	
       20 46 41 54 20 25     C3	
       31 0D 0A              C3	
 0AFB                        C3	$M_A_00014H_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 0013                      C3	Class_A_MessageCount EQU     19
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        ELSE
 0AFB                        C3	$M_CLS_1 PROC NEAR
			     C3	        ENDIF
			     C3	
 0AFB  0E                    C3	        PUSH    CS
 0AFC  07                    C3	        POP     ES
 0AFD  8D 3E 0882 R          C3	        LEA     DI,$M_CLASS_A_STRUC
 0B01  81 C1 027F            C3	        ADD     CX,$-$M_CLASS_A_STRUC
 0B05  C3                    C3	        RET
			     C3	
 0B06                        C3	$M_CLS_1 ENDP
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-135
DOS - Message Retriever - DISPMSG.ASM Module                

			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CLB>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CLB>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CLB>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CLB>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLB>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-136
DOS - Message Retriever - DISPMSG.ASM Module                

			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-137
DOS - Message Retriever - DISPMSG.ASM Module                

			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-138
DOS - Message Retriever - DISPMSG.ASM Module                

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-139
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CLB			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CLB					 ; 
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_CLS_2
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 0B06                        C3	$M_CLASS_B_STRUC LABEL BYTE
 0B06  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_B_MessageCount>
 0B07  0400                  C3	
 0B09  13                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 0B0A                        C3	$M_B_00015H_STRUC LABEL BYTE
 0B0A  1500                  C3	        $M_ID   <00015H,$M_B_00015H_MSG-$M_B_00015H_STRUC>
 0B0C  4C00                  C3	
			     C3	
			     C3	
 0B0E                        C3	$M_B_00016H_STRUC LABEL BYTE
 0B0E  1600                  C3	        $M_ID   <00016H,$M_B_00016H_MSG-$M_B_00016H_STRUC>
 0B10  5500                  C3	
			     C3	
			     C3	
 0B12                        C3	$M_B_00017H_STRUC LABEL BYTE
 0B12  1700                  C3	        $M_ID   <00017H,$M_B_00017H_MSG-$M_B_00017H_STRUC>
 0B14  7600                  C3	
			     C3	
			     C3	
 0B16                        C3	$M_B_00018H_STRUC LABEL BYTE
 0B16  1800                  C3	        $M_ID   <00018H,$M_B_00018H_MSG-$M_B_00018H_STRUC>
 0B18  9700                  C3	
			     C3	
			     C3	
 0B1A                        C3	$M_B_00019H_STRUC LABEL BYTE
 0B1A  1900                  C3	        $M_ID   <00019H,$M_B_00019H_MSG-$M_B_00019H_STRUC>
 0B1C  E400                  C3	
			     C3	
			     C3	
 0B1E                        C3	$M_B_0001AH_STRUC LABEL BYTE
 0B1E  1A00                  C3	        $M_ID   <0001AH,$M_B_0001AH_MSG-$M_B_0001AH_STRUC>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-140
DOS - Message Retriever - DISPMSG.ASM Module                

 0B20  0301                  C3	
			     C3	
			     C3	
 0B22                        C3	$M_B_00002H_STRUC LABEL BYTE
 0B22  0200                  C3	        $M_ID   <00002H,$M_B_00002H_MSG-$M_B_00002H_STRUC>
 0B24  2601                  C3	
			     C3	
			     C3	
 0B26                        C3	$M_B_0001DH_STRUC LABEL BYTE
 0B26  1D00                  C3	        $M_ID   <0001DH,$M_B_0001DH_MSG-$M_B_0001DH_STRUC>
 0B28  3901                  C3	
			     C3	
			     C3	
 0B2A                        C3	$M_B_0001EH_STRUC LABEL BYTE
 0B2A  1E00                  C3	        $M_ID   <0001EH,$M_B_0001EH_MSG-$M_B_0001EH_STRUC>
 0B2C  6101                  C3	
			     C3	
			     C3	
 0B2E                        C3	$M_B_0001FH_STRUC LABEL BYTE
 0B2E  1F00                  C3	        $M_ID   <0001FH,$M_B_0001FH_MSG-$M_B_0001FH_STRUC>
 0B30  8C01                  C3	
			     C3	
			     C3	
 0B32                        C3	$M_B_00020H_STRUC LABEL BYTE
 0B32  2000                  C3	        $M_ID   <00020H,$M_B_00020H_MSG-$M_B_00020H_STRUC>
 0B34  A701                  C3	
			     C3	
			     C3	
 0B36                        C3	$M_B_00021H_STRUC LABEL BYTE
 0B36  2100                  C3	        $M_ID   <00021H,$M_B_00021H_MSG-$M_B_00021H_STRUC>
 0B38  B501                  C3	
			     C3	
			     C3	
 0B3A                        C3	$M_B_00022H_STRUC LABEL BYTE
 0B3A  2200                  C3	        $M_ID   <00022H,$M_B_00022H_MSG-$M_B_00022H_STRUC>
 0B3C  E601                  C3	
			     C3	
			     C3	
 0B3E                        C3	$M_B_00023H_STRUC LABEL BYTE
 0B3E  2300                  C3	        $M_ID   <00023H,$M_B_00023H_MSG-$M_B_00023H_STRUC>
 0B40  0502                  C3	
			     C3	
			     C3	
 0B42                        C3	$M_B_00024H_STRUC LABEL BYTE
 0B42  2400                  C3	        $M_ID   <00024H,$M_B_00024H_MSG-$M_B_00024H_STRUC>
 0B44  3202                  C3	
			     C3	
			     C3	
 0B46                        C3	$M_B_00025H_STRUC LABEL BYTE
 0B46  2500                  C3	        $M_ID   <00025H,$M_B_00025H_MSG-$M_B_00025H_STRUC>
 0B48  5802                  C3	
			     C3	
			     C3	
 0B4A                        C3	$M_B_00026H_STRUC LABEL BYTE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-141
DOS - Message Retriever - DISPMSG.ASM Module                

 0B4A  2600                  C3	        $M_ID   <00026H,$M_B_00026H_MSG-$M_B_00026H_STRUC>
 0B4C  6B02                  C3	
			     C3	
			     C3	
 0B4E                        C3	$M_B_00027H_STRUC LABEL BYTE
 0B4E  2700                  C3	        $M_ID   <00027H,$M_B_00027H_MSG-$M_B_00027H_STRUC>
 0B50  8202                  C3	
			     C3	
			     C3	
 0B52                        C3	$M_B_00028H_STRUC LABEL BYTE
 0B52  2800                  C3	        $M_ID   <00028H,$M_B_00028H_MSG-$M_B_00028H_STRUC>
 0B54  9602                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 0B56                        C3	$M_B_00015H_MSG LABEL BYTE
 0B56  0C                    C3	        DB      $M_B_00015H_END-$M_B_00015H_MSG-1
 0B57  44 69 72 65 63 74     C3	        DB      "Directory %1"
       6F 72 79 20 25 31     C3	
 0B63                        C3	$M_B_00015H_END LABEL BYTE
			     C3	  
 0B63                        C3	$M_B_00016H_MSG LABEL BYTE
 0B63  24                    C3	        DB      $M_B_00016H_END-$M_B_00016H_MSG-1
 0B64  25 31 20 43 6F 6E     C3	        DB      "%1 Contains %2 non-contiguous blocks"
       74 61 69 6E 73 20     C3	
       25 32 20 6E 6F 6E     C3	
       2D 63 6F 6E 74 69     C3	
       67 75 6F 75 73 20     C3	
       62 6C 6F 63 6B 73     C3	
 0B88                        C3	$M_B_00016H_END LABEL BYTE
			     C3	  
 0B88                        C3	$M_B_00017H_MSG LABEL BYTE
 0B88  24                    C3	        DB      $M_B_00017H_END-$M_B_00017H_MSG-1
 0B89  41 6C 6C 20 73 70     C3	        DB      "All specified file(s) are contiguous"
       65 63 69 66 69 65     C3	
       64 20 66 69 6C 65     C3	
       28 73 29 20 61 72     C3	
       65 20 63 6F 6E 74     C3	
       69 67 75 6F 75 73     C3	
 0BAD                        C3	$M_B_00017H_END LABEL BYTE
			     C3	  
 0BAD                        C3	$M_B_00018H_MSG LABEL BYTE
 0BAD  50                    C3	        DB      $M_B_00018H_END-$M_B_00018H_MSG-1
 0BAE  45 72 72 6F 72 73     C3	        DB      "Errors found, F parameter not specified",CR,LF,"Corrections will not be written to 
				disk"
       20 66 6F 75 6E 64     C3	
       2C 20 46 20 70 61     C3	
       72 61 6D 65 74 65     C3	
       72 20 6E 6F 74 20     C3	
       73 70 65 63 69 66     C3	
       69 65 64 0D 0A 43     C3	
       6F 72 72 65 63 74     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-142
DOS - Message Retriever - DISPMSG.ASM Module                

       69 6F 6E 73 20 77     C3	
       69 6C 6C 20 6E 6F     C3	
       74 20 62 65 20 77     C3	
       72 69 74 74 65 6E     C3	
       20 74 6F 20 64 69     C3	
       73 6B                 C3	
 0BFE                        C3	$M_B_00018H_END LABEL BYTE
			     C3	  
 0BFE                        C3	$M_B_00019H_MSG LABEL BYTE
 0BFE  22                    C3	        DB      $M_B_00019H_END-$M_B_00019H_MSG-1
 0BFF  20 20 20 50 72 6F     C3	        DB      "   Processing cannot continue %1%2"
       63 65 73 73 69 6E     C3	
       67 20 63 61 6E 6E     C3	
       6F 74 20 63 6F 6E     C3	
       74 69 6E 75 65 20     C3	
       25 31 25 32           C3	
 0C21                        C3	$M_B_00019H_END LABEL BYTE
			     C3	  
 0C21                        C3	$M_B_0001AH_MSG LABEL BYTE
 0C21  26                    C3	        DB      $M_B_0001AH_END-$M_B_0001AH_MSG-1
 0C22  20 20 20 46 69 6C     C3	        DB      "   File allocation table bad, drive %1"
       65 20 61 6C 6C 6F     C3	
       63 61 74 69 6F 6E     C3	
       20 74 61 62 6C 65     C3	
       20 62 61 64 2C 20     C3	
       64 72 69 76 65 20     C3	
       25 31                 C3	
 0C48                        C3	$M_B_0001AH_END LABEL BYTE
			     C3	  
 0C48                        C3	$M_B_00002H_MSG LABEL BYTE
 0C48  16                    C3	        DB      $M_B_00002H_END-$M_B_00002H_MSG-1
 0C49  25 31 20 61 6C 72     C3	        DB      "%1 already installed",CR,LF
       65 61 64 79 20 69     C3	
       6E 73 74 61 6C 6C     C3	
       65 64 0D 0A           C3	
 0C5F                        C3	$M_B_00002H_END LABEL BYTE
			     C3	  
 0C5F                        C3	$M_B_0001DH_MSG LABEL BYTE
 0C5F  2B                    C3	        DB      $M_B_0001DH_END-$M_B_0001DH_MSG-1
 0C60  20 20 20 43 48 44     C3	        DB      "   CHDIR .. failed, trying alternate method"
       49 52 20 2E 2E 20     C3	
       66 61 69 6C 65 64     C3	
       2C 20 74 72 79 69     C3	
       6E 67 20 61 6C 74     C3	
       65 72 6E 61 74 65     C3	
       20 6D 65 74 68 6F     C3	
       64                    C3	
 0C8B                        C3	$M_B_0001DH_END LABEL BYTE
			     C3	  
 0C8B                        C3	$M_B_0001EH_MSG LABEL BYTE
 0C8B  2E                    C3	        DB      $M_B_0001EH_END-$M_B_0001EH_MSG-1
 0C8C  20 20 20 48 61 73     C3	        DB      "   Has invalid allocation unit, file truncated"
       20 69 6E 76 61 6C     C3	
       69 64 20 61 6C 6C     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-143
DOS - Message Retriever - DISPMSG.ASM Module                

       6F 63 61 74 69 6F     C3	
       6E 20 75 6E 69 74     C3	
       2C 20 66 69 6C 65     C3	
       20 74 72 75 6E 63     C3	
       61 74 65 64           C3	
 0CBA                        C3	$M_B_0001EH_END LABEL BYTE
			     C3	  
 0CBA                        C3	$M_B_0001FH_MSG LABEL BYTE
 0CBA  1E                    C3	        DB      $M_B_0001FH_END-$M_B_0001FH_MSG-1
 0CBB  20 20 20 49 6E 76     C3	        DB      "   Invalid sub-directory entry"
       61 6C 69 64 20 73     C3	
       75 62 2D 64 69 72     C3	
       65 63 74 6F 72 79     C3	
       20 65 6E 74 72 79     C3	
 0CD9                        C3	$M_B_0001FH_END LABEL BYTE
			     C3	  
 0CD9                        C3	$M_B_00020H_MSG LABEL BYTE
 0CD9  11                    C3	        DB      $M_B_00020H_END-$M_B_00020H_MSG-1
 0CDA  20 20 20 44 6F 65     C3	        DB      "   Does not exist"
       73 20 6E 6F 74 20     C3	
       65 78 69 73 74        C3	
 0CEB                        C3	$M_B_00020H_END LABEL BYTE
			     C3	  
 0CEB                        C3	$M_B_00021H_MSG LABEL BYTE
 0CEB  34                    C3	        DB      $M_B_00021H_END-$M_B_00021H_MSG-1
 0CEC  20 20 20 46 69 72     C3	        DB      "   First allocation unit is invalid, entry truncated"
       73 74 20 61 6C 6C     C3	
       6F 63 61 74 69 6F     C3	
       6E 20 75 6E 69 74     C3	
       20 69 73 20 69 6E     C3	
       76 61 6C 69 64 2C     C3	
       20 65 6E 74 72 79     C3	
       20 74 72 75 6E 63     C3	
       61 74 65 64           C3	
 0D20                        C3	$M_B_00021H_END LABEL BYTE
			     C3	  
 0D20                        C3	$M_B_00022H_MSG LABEL BYTE
 0D20  22                    C3	        DB      $M_B_00022H_END-$M_B_00022H_MSG-1
 0D21  20 20 20 41 6C 6C     C3	        DB      "   Allocation error, size adjusted"
       6F 63 61 74 69 6F     C3	
       6E 20 65 72 72 6F     C3	
       72 2C 20 73 69 7A     C3	
       65 20 61 64 6A 75     C3	
       73 74 65 64           C3	
 0D43                        C3	$M_B_00022H_END LABEL BYTE
			     C3	  
 0D43                        C3	$M_B_00023H_MSG LABEL BYTE
 0D43  30                    C3	        DB      $M_B_00023H_END-$M_B_00023H_MSG-1
 0D44  20 20 20 43 61 6E     C3	        DB      "   Cannot recover .. entry, processing continued"
       6E 6F 74 20 72 65     C3	
       63 6F 76 65 72 20     C3	
       2E 2E 20 65 6E 74     C3	
       72 79 2C 20 70 72     C3	
       6F 63 65 73 73 69     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-144
DOS - Message Retriever - DISPMSG.ASM Module                

       6E 67 20 63 6F 6E     C3	
       74 69 6E 75 65 64     C3	
 0D74                        C3	$M_B_00023H_END LABEL BYTE
			     C3	  
 0D74                        C3	$M_B_00024H_MSG LABEL BYTE
 0D74  29                    C3	        DB      $M_B_00024H_END-$M_B_00024H_MSG-1
 0D75  20 20 20 44 69 72     C3	        DB      "   Directory is totally empty, no . or .."
       65 63 74 6F 72 79     C3	
       20 69 73 20 74 6F     C3	
       74 61 6C 6C 79 20     C3	
       65 6D 70 74 79 2C     C3	
       20 6E 6F 20 2E 20     C3	
       6F 72 20 2E 2E        C3	
 0D9E                        C3	$M_B_00024H_END LABEL BYTE
			     C3	  
 0D9E                        C3	$M_B_00025H_MSG LABEL BYTE
 0D9E  16                    C3	        DB      $M_B_00025H_END-$M_B_00025H_MSG-1
 0D9F  20 20 20 44 69 72     C3	        DB      "   Directory is joined"
       65 63 74 6F 72 79     C3	
       20 69 73 20 6A 6F     C3	
       69 6E 65 64           C3	
 0DB5                        C3	$M_B_00025H_END LABEL BYTE
			     C3	  
 0DB5                        C3	$M_B_00026H_MSG LABEL BYTE
 0DB5  1A                    C3	        DB      $M_B_00026H_END-$M_B_00026H_MSG-1
 0DB6  20 20 20 43 61 6E     C3	        DB      "   Cannot recover .. entry"
       6E 6F 74 20 72 65     C3	
       63 6F 76 65 72 20     C3	
       2E 2E 20 65 6E 74     C3	
       72 79                 C3	
 0DD0                        C3	$M_B_00026H_END LABEL BYTE
			     C3	  
 0DD0                        C3	$M_B_00027H_MSG LABEL BYTE
 0DD0  17                    C3	        DB      $M_B_00027H_END-$M_B_00027H_MSG-1
 0DD1  20 20 20 45 6E 74     C3	        DB      "   Entry has a bad link"
       72 79 20 68 61 73     C3	
       20 61 20 62 61 64     C3	
       20 6C 69 6E 6B        C3	
 0DE8                        C3	$M_B_00027H_END LABEL BYTE
			     C3	  
 0DE8                        C3	$M_B_00028H_MSG LABEL BYTE
 0DE8  1C                    C3	        DB      $M_B_00028H_END-$M_B_00028H_MSG-1
 0DE9  20 20 20 45 6E 74     C3	        DB      "   Entry has a bad attribute"
       72 79 20 68 61 73     C3	
       20 61 20 62 61 64     C3	
       20 61 74 74 72 69     C3	
       62 75 74 65           C3	
 0E05                        C3	$M_B_00028H_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 0013                      C3	Class_B_MessageCount EQU     19
			     C3	
			     C3	; ----------------------------------------------------------
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-145
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
			     C3	        ELSE
 0E05                        C3	$M_CLS_2 PROC NEAR
			     C3	        ENDIF
			     C3	
 0E05  0E                    C3	        PUSH    CS
 0E06  07                    C3	        POP     ES
 0E07  8D 3E 0B06 R          C3	        LEA     DI,$M_CLASS_B_STRUC
 0E0B  81 C1 0305            C3	        ADD     CX,$-$M_CLASS_B_STRUC
 0E0F  C3                    C3	        RET
			     C3	
 0E10                        C3	$M_CLS_2 ENDP
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CLC>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CLC>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CLC>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CLC>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-146
DOS - Message Retriever - DISPMSG.ASM Module                

			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLC>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-147
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-148
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-149
DOS - Message Retriever - DISPMSG.ASM Module                

			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CLC			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CLC					 ; 
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_CLS_3
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 0E10                        C3	$M_CLASS_C_STRUC LABEL BYTE
 0E10  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_C_MessageCount>
 0E11  0400                  C3	
 0E13  12                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 0E14                        C3	$M_C_00029H_STRUC LABEL BYTE
 0E14  2900                  C3	        $M_ID   <00029H,$M_C_00029H_MSG-$M_C_00029H_STRUC>
 0E16  4800                  C3	
			     C3	
			     C3	
 0E18                        C3	$M_C_0002AH_STRUC LABEL BYTE
 0E18  2A00                  C3	        $M_ID   <0002AH,$M_C_0002AH_MSG-$M_C_0002AH_STRUC>
 0E1A  5C00                  C3	
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-150
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
 0E1C                        C3	$M_C_0002BH_STRUC LABEL BYTE
 0E1C  2B00                  C3	        $M_ID   <0002BH,$M_C_0002BH_MSG-$M_C_0002BH_STRUC>
 0E1E  8100                  C3	
			     C3	
			     C3	
 0E20                        C3	$M_C_0002CH_STRUC LABEL BYTE
 0E20  2C00                  C3	        $M_ID   <0002CH,$M_C_0002CH_MSG-$M_C_0002CH_STRUC>
 0E22  B800                  C3	
			     C3	
			     C3	
 0E24                        C3	$M_C_0002DH_STRUC LABEL BYTE
 0E24  2D00                  C3	        $M_ID   <0002DH,$M_C_0002DH_MSG-$M_C_0002DH_STRUC>
 0E26  DA00                  C3	
			     C3	
			     C3	
 0E28                        C3	$M_C_0002EH_STRUC LABEL BYTE
 0E28  2E00                  C3	        $M_ID   <0002EH,$M_C_0002EH_MSG-$M_C_0002EH_STRUC>
 0E2A  F000                  C3	
			     C3	
			     C3	
 0E2C                        C3	$M_C_0002FH_STRUC LABEL BYTE
 0E2C  2F00                  C3	        $M_ID   <0002FH,$M_C_0002FH_MSG-$M_C_0002FH_STRUC>
 0E2E  0F01                  C3	
			     C3	
			     C3	
 0E30                        C3	$M_C_00030H_STRUC LABEL BYTE
 0E30  3000                  C3	        $M_ID   <00030H,$M_C_00030H_MSG-$M_C_00030H_STRUC>
 0E32  2501                  C3	
			     C3	
			     C3	
 0E34                        C3	$M_C_00031H_STRUC LABEL BYTE
 0E34  3100                  C3	        $M_ID   <00031H,$M_C_00031H_MSG-$M_C_00031H_STRUC>
 0E36  4301                  C3	
			     C3	
			     C3	
 0E38                        C3	$M_C_00033H_STRUC LABEL BYTE
 0E38  3300                  C3	        $M_ID   <00033H,$M_C_00033H_MSG-$M_C_00033H_STRUC>
 0E3A  6001                  C3	
			     C3	
			     C3	
 0E3C                        C3	$M_C_00034H_STRUC LABEL BYTE
 0E3C  3400                  C3	        $M_ID   <00034H,$M_C_00034H_MSG-$M_C_00034H_STRUC>
 0E3E  A601                  C3	
			     C3	
			     C3	
 0E40                        C3	$M_C_00035H_STRUC LABEL BYTE
 0E40  3500                  C3	        $M_ID   <00035H,$M_C_00035H_MSG-$M_C_00035H_STRUC>
 0E42  E101                  C3	
			     C3	
			     C3	
 0E44                        C3	$M_C_00036H_STRUC LABEL BYTE
 0E44  3600                  C3	        $M_ID   <00036H,$M_C_00036H_MSG-$M_C_00036H_STRUC>
 0E46  EF01                  C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-151
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
			     C3	
 0E48                        C3	$M_C_00037H_STRUC LABEL BYTE
 0E48  3700                  C3	        $M_ID   <00037H,$M_C_00037H_MSG-$M_C_00037H_STRUC>
 0E4A  0902                  C3	
			     C3	
			     C3	
 0E4C                        C3	$M_C_00038H_STRUC LABEL BYTE
 0E4C  3800                  C3	        $M_ID   <00038H,$M_C_00038H_MSG-$M_C_00038H_STRUC>
 0E4E  1602                  C3	
			     C3	
			     C3	
 0E50                        C3	$M_C_0003AH_STRUC LABEL BYTE
 0E50  3A00                  C3	        $M_ID   <0003AH,$M_C_0003AH_MSG-$M_C_0003AH_STRUC>
 0E52  2302                  C3	
			     C3	
			     C3	
 0E54                        C3	$M_C_0003BH_STRUC LABEL BYTE
 0E54  3B00                  C3	        $M_ID   <0003BH,$M_C_0003BH_MSG-$M_C_0003BH_STRUC>
 0E56  4F02                  C3	
			     C3	
			     C3	
 0E58                        C3	$M_C_0003CH_STRUC LABEL BYTE
 0E58  3C00                  C3	        $M_ID   <0003CH,$M_C_0003CH_MSG-$M_C_0003CH_STRUC>
 0E5A  4E02                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 0E5C                        C3	$M_C_00029H_MSG LABEL BYTE
 0E5C  17                    C3	        DB      $M_C_00029H_END-$M_C_00029H_MSG-1
 0E5D  20 20 20 45 6E 74     C3	        DB      "   Entry has a bad size"
       72 79 20 68 61 73     C3	
       20 61 20 62 61 64     C3	
       20 73 69 7A 65        C3	
 0E74                        C3	$M_C_00029H_END LABEL BYTE
			     C3	  
 0E74                        C3	$M_C_0002AH_MSG LABEL BYTE
 0E74  28                    C3	        DB      $M_C_0002AH_END-$M_C_0002AH_MSG-1
 0E75  20 20 20 49 73 20     C3	        DB      "   Is cross linked on allocation unit %1"
       63 72 6F 73 73 20     C3	
       6C 69 6E 6B 65 64     C3	
       20 6F 6E 20 61 6C     C3	
       6C 6F 63 61 74 69     C3	
       6F 6E 20 75 6E 69     C3	
       74 20 25 31           C3	
 0E9D                        C3	$M_C_0002AH_END LABEL BYTE
			     C3	  
 0E9D                        C3	$M_C_0002BH_MSG LABEL BYTE
 0E9D  3A                    C3	        DB      $M_C_0002BH_END-$M_C_0002BH_MSG-1
 0E9E  20 20 20 43 61 6E     C3	        DB      "   Cannot CHDIR to %1,",CR,LF,"tree past this point not processed"
       6E 6F 74 20 43 48     C3	
       44 49 52 20 74 6F     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-152
DOS - Message Retriever - DISPMSG.ASM Module                

       20 25 31 2C 0D 0A     C3	
       74 72 65 65 20 70     C3	
       61 73 74 20 74 68     C3	
       69 73 20 70 6F 69     C3	
       6E 74 20 6E 6F 74     C3	
       20 70 72 6F 63 65     C3	
       73 73 65 64           C3	
 0ED8                        C3	$M_C_0002BH_END LABEL BYTE
			     C3	  
 0ED8                        C3	$M_C_0002CH_MSG LABEL BYTE
 0ED8  25                    C3	        DB      $M_C_0002CH_END-$M_C_0002CH_MSG-1
 0ED9  20 20 20 74 72 65     C3	        DB      "   tree past this point not processed"
       65 20 70 61 73 74     C3	
       20 74 68 69 73 20     C3	
       70 6F 69 6E 74 20     C3	
       6E 6F 74 20 70 72     C3	
       6F 63 65 73 73 65     C3	
       64                    C3	
 0EFE                        C3	$M_C_0002CH_END LABEL BYTE
			     C3	  
 0EFE                        C3	$M_C_0002DH_MSG LABEL BYTE
 0EFE  19                    C3	        DB      $M_C_0002DH_END-$M_C_0002DH_MSG-1
 0EFF  25 31 20 62 79 74     C3	        DB      "%1 bytes disk space freed"
       65 73 20 64 69 73     C3	
       6B 20 73 70 61 63     C3	
       65 20 66 72 65 65     C3	
       64                    C3	
 0F18                        C3	$M_C_0002DH_END LABEL BYTE
			     C3	  
 0F18                        C3	$M_C_0002EH_MSG LABEL BYTE
 0F18  22                    C3	        DB      $M_C_0002EH_END-$M_C_0002EH_MSG-1
 0F19  25 31 20 62 79 74     C3	        DB      "%1 bytes disk space would be freed"
       65 73 20 64 69 73     C3	
       6B 20 73 70 61 63     C3	
       65 20 77 6F 75 6C     C3	
       64 20 62 65 20 66     C3	
       72 65 65 64           C3	
 0F3B                        C3	$M_C_0002EH_END LABEL BYTE
			     C3	  
 0F3B                        C3	$M_C_0002FH_MSG LABEL BYTE
 0F3B  19                    C3	        DB      $M_C_0002FH_END-$M_C_0002FH_MSG-1
 0F3C  56 6F 6C 75 6D 65     C3	        DB      "Volume %1 created %2 %3",CR,LF
       20 25 31 20 63 72     C3	
       65 61 74 65 64 20     C3	
       25 32 20 25 33 0D     C3	
       0A                    C3	
 0F55                        C3	$M_C_0002FH_END LABEL BYTE
			     C3	  
 0F55                        C3	$M_C_00030H_MSG LABEL BYTE
 0F55  21                    C3	        DB      $M_C_00030H_END-$M_C_00030H_MSG-1
 0F56  25 31 20 74 6F 74     C3	        DB      "%1 total allocation units on disk"
       61 6C 20 61 6C 6C     C3	
       6F 63 61 74 69 6F     C3	
       6E 20 75 6E 69 74     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-153
DOS - Message Retriever - DISPMSG.ASM Module                

       73 20 6F 6E 20 64     C3	
       69 73 6B              C3	
 0F77                        C3	$M_C_00030H_END LABEL BYTE
			     C3	  
 0F77                        C3	$M_C_00031H_MSG LABEL BYTE
 0F77  20                    C3	        DB      $M_C_00031H_END-$M_C_00031H_MSG-1
 0F78  25 31 20 62 79 74     C3	        DB      "%1 bytes in each allocation unit"
       65 73 20 69 6E 20     C3	
       65 61 63 68 20 61     C3	
       6C 6C 6F 63 61 74     C3	
       69 6F 6E 20 75 6E     C3	
       69 74                 C3	
 0F98                        C3	$M_C_00031H_END LABEL BYTE
			     C3	  
 0F98                        C3	$M_C_00033H_MSG LABEL BYTE
 0F98  49                    C3	        DB      $M_C_00033H_END-$M_C_00033H_MSG-1
 0F99  20 20 20 45 78 74     C3	        DB      "   Extended Attributes has invalid allocation units, attributes truncated"
       65 6E 64 65 64 20     C3	
       41 74 74 72 69 62     C3	
       75 74 65 73 20 68     C3	
       61 73 20 69 6E 76     C3	
       61 6C 69 64 20 61     C3	
       6C 6C 6F 63 61 74     C3	
       69 6F 6E 20 75 6E     C3	
       69 74 73 2C 20 61     C3	
       74 74 72 69 62 75     C3	
       74 65 73 20 74 72     C3	
       75 6E 63 61 74 65     C3	
       64                    C3	
 0FE2                        C3	$M_C_00033H_END LABEL BYTE
			     C3	  
 0FE2                        C3	$M_C_00034H_MSG LABEL BYTE
 0FE2  3E                    C3	        DB      $M_C_00034H_END-$M_C_00034H_MSG-1
 0FE3  20 20 20 45 78 74     C3	        DB      "   Extended Attributes allocation error , attributes truncated"
       65 6E 64 65 64 20     C3	
       41 74 74 72 69 62     C3	
       75 74 65 73 20 61     C3	
       6C 6C 6F 63 61 74     C3	
       69 6F 6E 20 65 72     C3	
       72 6F 72 20 2C 20     C3	
       61 74 74 72 69 62     C3	
       75 74 65 73 20 74     C3	
       72 75 6E 63 61 74     C3	
       65 64                 C3	
 1021                        C3	$M_C_00034H_END LABEL BYTE
			     C3	  
 1021                        C3	$M_C_00035H_MSG LABEL BYTE
 1021  11                    C3	        DB      $M_C_00035H_END-$M_C_00035H_MSG-1
 1022  49 6E 76 61 6C 69     C3	        DB      "Invalid parameter"
       64 20 70 61 72 61     C3	
       6D 65 74 65 72        C3	
 1033                        C3	$M_C_00035H_END LABEL BYTE
			     C3	  
 1033                        C3	$M_C_00036H_MSG LABEL BYTE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-154
DOS - Message Retriever - DISPMSG.ASM Module                

 1033  1D                    C3	        DB      $M_C_00036H_END-$M_C_00036H_MSG-1
 1034  49 6E 76 61 6C 69     C3	        DB      "Invalid drive specification",CR,LF
       64 20 64 72 69 76     C3	
       65 20 73 70 65 63     C3	
       69 66 69 63 61 74     C3	
       69 6F 6E 0D 0A        C3	
 1051                        C3	$M_C_00036H_END LABEL BYTE
			     C3	  
 1051                        C3	$M_C_00037H_MSG LABEL BYTE
 1051  10                    C3	        DB      $M_C_00037H_END-$M_C_00037H_MSG-1
 1052  50 61 74 68 20 6E     C3	        DB      "Path not found",CR,LF
       6F 74 20 66 6F 75     C3	
       6E 64 0D 0A           C3	
 1062                        C3	$M_C_00037H_END LABEL BYTE
			     C3	  
 1062                        C3	$M_C_00038H_MSG LABEL BYTE
 1062  10                    C3	        DB      $M_C_00038H_END-$M_C_00038H_MSG-1
 1063  46 69 6C 65 20 6E     C3	        DB      "File not found",CR,LF
       6F 74 20 66 6F 75     C3	
       6E 64 0D 0A           C3	
 1073                        C3	$M_C_00038H_END LABEL BYTE
			     C3	  
 1073                        C3	$M_C_0003AH_MSG LABEL BYTE
 1073  2F                    C3	        DB      $M_C_0003AH_END-$M_C_0003AH_MSG-1
 1074  20 20 20 25 31 20     C3	        DB      "   %1 lost allocation units found in %2 chains."
       6C 6F 73 74 20 61     C3	
       6C 6C 6F 63 61 74     C3	
       69 6F 6E 20 75 6E     C3	
       69 74 73 20 66 6F     C3	
       75 6E 64 20 69 6E     C3	
       20 25 32 20 63 68     C3	
       61 69 6E 73 2E        C3	
 10A3                        C3	$M_C_0003AH_END LABEL BYTE
			     C3	  
 10A3                        C3	$M_C_0003BH_MSG LABEL BYTE
 10A3  02                    C3	        DB      $M_C_0003BH_END-$M_C_0003BH_MSG-1
 10A4  0D 0A                 C3	        DB      CR,LF
 10A6                        C3	$M_C_0003BH_END LABEL BYTE
			     C3	  
 10A6                        C3	$M_C_0003CH_MSG LABEL BYTE
 10A6  19                    C3	        DB      $M_C_0003CH_END-$M_C_0003CH_MSG-1
 10A7  20 20 20 43 61 6E     C3	        DB      "   Cannot CHDIR to root",CR,LF
       6E 6F 74 20 43 48     C3	
       44 49 52 20 74 6F     C3	
       20 72 6F 6F 74 0D     C3	
       0A                    C3	
 10C0                        C3	$M_C_0003CH_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 0012                      C3	Class_C_MessageCount EQU     18
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-155
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	        ELSE
 10C0                        C3	$M_CLS_3 PROC NEAR
			     C3	        ENDIF
			     C3	
 10C0  0E                    C3	        PUSH    CS
 10C1  07                    C3	        POP     ES
 10C2  8D 3E 0E10 R          C3	        LEA     DI,$M_CLASS_C_STRUC
 10C6  81 C1 02B6            C3	        ADD     CX,$-$M_CLASS_C_STRUC
 10CA  C3                    C3	        RET
			     C3	
 10CB                        C3	$M_CLS_3 ENDP
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CLD>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CLD>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CLD>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CLD>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-156
DOS - Message Retriever - DISPMSG.ASM Module                

			     3		 IFDIF <CHKDSK.CLD>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CLD>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-157
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-158
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-159
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CLD			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CLD					 ; 
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_CLS_4
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 10CB                        C3	$M_CLASS_D_STRUC LABEL BYTE
 10CB  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_D_MessageCount>
 10CC  0400                  C3	
 10CE  0E                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 10CF                        C3	$M_D_0003DH_STRUC LABEL BYTE
 10CF  3D00                  C3	        $M_ID   <0003DH,$M_D_0003DH_MSG-$M_D_0003DH_STRUC>
 10D1  3800                  C3	
			     C3	
			     C3	
 10D3                        C3	$M_D_0003EH_STRUC LABEL BYTE
 10D3  3E00                  C3	        $M_ID   <0003EH,$M_D_0003EH_MSG-$M_D_0003EH_STRUC>
 10D5  5100                  C3	
			     C3	
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-160
DOS - Message Retriever - DISPMSG.ASM Module                

 10D7                        C3	$M_D_0003FH_STRUC LABEL BYTE
 10D7  3F00                  C3	        $M_ID   <0003FH,$M_D_0003FH_MSG-$M_D_0003FH_STRUC>
 10D9  5800                  C3	
			     C3	
			     C3	
 10DB                        C3	$M_D_00040H_STRUC LABEL BYTE
 10DB  4000                  C3	        $M_ID   <00040H,$M_D_00040H_MSG-$M_D_00040H_STRUC>
 10DD  6E00                  C3	
			     C3	
			     C3	
 10DF                        C3	$M_D_00041H_STRUC LABEL BYTE
 10DF  4100                  C3	        $M_ID   <00041H,$M_D_00041H_MSG-$M_D_00041H_STRUC>
 10E1  6F00                  C3	
			     C3	
			     C3	
 10E3                        C3	$M_D_00042H_STRUC LABEL BYTE
 10E3  4200                  C3	        $M_ID   <00042H,$M_D_00042H_MSG-$M_D_00042H_STRUC>
 10E5  C700                  C3	
			     C3	
			     C3	
 10E7                        C3	$M_D_00043H_STRUC LABEL BYTE
 10E7  4300                  C3	        $M_ID   <00043H,$M_D_00043H_MSG-$M_D_00043H_STRUC>
 10E9  CC00                  C3	
			     C3	
			     C3	
 10EB                        C3	$M_D_00044H_STRUC LABEL BYTE
 10EB  4400                  C3	        $M_ID   <00044H,$M_D_00044H_MSG-$M_D_00044H_STRUC>
 10ED  D200                  C3	
			     C3	
			     C3	
 10EF                        C3	$M_D_00045H_STRUC LABEL BYTE
 10EF  4500                  C3	        $M_ID   <00045H,$M_D_00045H_MSG-$M_D_00045H_STRUC>
 10F1  D900                  C3	
			     C3	
			     C3	
 10F3                        C3	$M_D_00046H_STRUC LABEL BYTE
 10F3  4600                  C3	        $M_ID   <00046H,$M_D_00046H_MSG-$M_D_00046H_STRUC>
 10F5  DE00                  C3	
			     C3	
			     C3	
 10F7                        C3	$M_D_00047H_STRUC LABEL BYTE
 10F7  4700                  C3	        $M_ID   <00047H,$M_D_00047H_MSG-$M_D_00047H_STRUC>
 10F9  0001                  C3	
			     C3	
			     C3	
 10FB                        C3	$M_D_00048H_STRUC LABEL BYTE
 10FB  4800                  C3	        $M_ID   <00048H,$M_D_00048H_MSG-$M_D_00048H_STRUC>
 10FD  1C01                  C3	
			     C3	
			     C3	
 10FF                        C3	$M_D_00049H_STRUC LABEL BYTE
 10FF  4900                  C3	        $M_ID   <00049H,$M_D_00049H_MSG-$M_D_00049H_STRUC>
 1101  2E01                  C3	
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-161
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
 1103                        C3	$M_D_0004AH_STRUC LABEL BYTE
 1103  4A00                  C3	        $M_ID   <0004AH,$M_D_0004AH_MSG-$M_D_0004AH_STRUC>
 1105  3F01                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
 1107                        C3	$M_D_0003DH_MSG LABEL BYTE
 1107  1C                    C3	        DB      $M_D_0003DH_END-$M_D_0003DH_MSG-1
 1108  20 20 20 44 69 73     C3	        DB      "   Disk error writing FAT %1"
       6B 20 65 72 72 6F     C3	
       72 20 77 72 69 74     C3	
       69 6E 67 20 46 41     C3	
       54 20 25 31           C3	
 1124                        C3	$M_D_0003DH_END LABEL BYTE
			     C3	  
 1124                        C3	$M_D_0003EH_MSG LABEL BYTE
 1124  0A                    C3	        DB      $M_D_0003EH_END-$M_D_0003EH_MSG-1
 1125  20 20 20 20 20 20     C3	        DB      "        %1"
       20 20 25 31           C3	
 112F                        C3	$M_D_0003EH_END LABEL BYTE
			     C3	  
 112F                        C3	$M_D_0003FH_MSG LABEL BYTE
 112F  19                    C3	        DB      $M_D_0003FH_END-$M_D_0003FH_MSG-1
 1130  49 6E 76 61 6C 69     C3	        DB      "Invalid current directory"
       64 20 63 75 72 72     C3	
       65 6E 74 20 64 69     C3	
       72 65 63 74 6F 72     C3	
       79                    C3	
 1149                        C3	$M_D_0003FH_END LABEL BYTE
			     C3	  
 1149                        C3	$M_D_00040H_MSG LABEL BYTE
 1149  04                    C3	        DB      $M_D_00040H_END-$M_D_00040H_MSG-1
 114A  25 31 0D 0A           C3	        DB      "%1",CR,LF
 114E                        C3	$M_D_00040H_END LABEL BYTE
			     C3	  
 114E                        C3	$M_D_00041H_MSG LABEL BYTE
 114E  5B                    C3	        DB      $M_D_00041H_END-$M_D_00041H_MSG-1
 114F  20 20 20 49 6E 73     C3	        DB      "   Insufficient room in root directory",CR,LF,"   Move files from root directory an
				d repeat CHKDSK"
       75 66 66 69 63 69     C3	
       65 6E 74 20 72 6F     C3	
       6F 6D 20 69 6E 20     C3	
       72 6F 6F 74 20 64     C3	
       69 72 65 63 74 6F     C3	
       72 79 0D 0A 20 20     C3	
       20 4D 6F 76 65 20     C3	
       66 69 6C 65 73 20     C3	
       66 72 6F 6D 20 72     C3	
       6F 6F 74 20 64 69     C3	
       72 65 63 74 6F 72     C3	
       79 20 61 6E 64 20     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-162
DOS - Message Retriever - DISPMSG.ASM Module                

       72 65 70 65 61 74     C3	
       20 43 48 4B 44 53     C3	
       4B                    C3	
 11AA                        C3	$M_D_00041H_END LABEL BYTE
			     C3	  
 11AA                        C3	$M_D_00042H_MSG LABEL BYTE
 11AA  08                    C3	        DB      $M_D_00042H_END-$M_D_00042H_MSG-1
 11AB  25 31 20 25 32 20     C3	        DB      "%1 %2 %3"
       25 33                 C3	
 11B3                        C3	$M_D_00042H_END LABEL BYTE
			     C3	  
 11B3                        C3	$M_D_00043H_MSG LABEL BYTE
 11B3  09                    C3	        DB      $M_D_00043H_END-$M_D_00043H_MSG-1
 11B4  25 31 20 25 32 2C     C3	        DB      "%1 %2, %3"
       20 25 33              C3	
 11BD                        C3	$M_D_00043H_END LABEL BYTE
			     C3	  
 11BD                        C3	$M_D_00044H_MSG LABEL BYTE
 11BD  0A                    C3	        DB      $M_D_00044H_END-$M_D_00044H_MSG-1
 11BE  25 31 25 32 25 33     C3	        DB      "%1%2%3%4%5"
       25 34 25 35           C3	
 11C8                        C3	$M_D_00044H_END LABEL BYTE
			     C3	  
 11C8                        C3	$M_D_00045H_MSG LABEL BYTE
 11C8  08                    C3	        DB      $M_D_00045H_END-$M_D_00045H_MSG-1
 11C9  25 31 25 32 25 33     C3	        DB      "%1%2%3%4"
       25 34                 C3	
 11D1                        C3	$M_D_00045H_END LABEL BYTE
			     C3	  
 11D1                        C3	$M_D_00046H_MSG LABEL BYTE
 11D1  25                    C3	        DB      $M_D_00046H_END-$M_D_00046H_MSG-1
 11D2  25 31 20 61 76 61     C3	        DB      "%1 available allocation units on disk"
       69 6C 61 62 6C 65     C3	
       20 61 6C 6C 6F 63     C3	
       61 74 69 6F 6E 20     C3	
       75 6E 69 74 73 20     C3	
       6F 6E 20 64 69 73     C3	
       6B                    C3	
 11F7                        C3	$M_D_00046H_END LABEL BYTE
			     C3	  
 11F7                        C3	$M_D_00047H_MSG LABEL BYTE
 11F7  1F                    C3	        DB      $M_D_00047H_END-$M_D_00047H_MSG-1
 11F8  56 6F 6C 75 6D 65     C3	        DB      "Volume Serial Number is %1-%2",CR,LF
       20 53 65 72 69 61     C3	
       6C 20 4E 75 6D 62     C3	
       65 72 20 69 73 20     C3	
       25 31 2D 25 32 0D     C3	
       0A                    C3	
 1217                        C3	$M_D_00047H_END LABEL BYTE
			     C3	  
 1217                        C3	$M_D_00048H_MSG LABEL BYTE
 1217  15                    C3	        DB      $M_D_00048H_END-$M_D_00048H_MSG-1
 1218  49 6E 73 75 66 66     C3	        DB      "Insufficient memory",CR,LF
       69 63 69 65 6E 74     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-163
DOS - Message Retriever - DISPMSG.ASM Module                

       20 6D 65 6D 6F 72     C3	
       79 0D 0A              C3	
 122D                        C3	$M_D_00048H_END LABEL BYTE
			     C3	  
 122D                        C3	$M_D_00049H_MSG LABEL BYTE
 122D  14                    C3	        DB      $M_D_00049H_END-$M_D_00049H_MSG-1
 122E  49 6E 76 61 6C 69     C3	        DB      "Invalid media type",CR,LF
       64 20 6D 65 64 69     C3	
       61 20 74 79 70 65     C3	
       0D 0A                 C3	
 1242                        C3	$M_D_00049H_END LABEL BYTE
			     C3	  
 1242                        C3	$M_D_0004AH_MSG LABEL BYTE
 1242  13                    C3	        DB      $M_D_0004AH_END-$M_D_0004AH_MSG-1
 1243  57 72 69 74 65 20     C3	        DB      "Write fault error",CR,LF
       66 61 75 6C 74 20     C3	
       65 72 72 6F 72 0D     C3	
       0A                    C3	
 1256                        C3	$M_D_0004AH_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 000E                      C3	Class_D_MessageCount EQU     14
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        ELSE
 1256                        C3	$M_CLS_4 PROC NEAR
			     C3	        ENDIF
			     C3	
 1256  0E                    C3	        PUSH    CS
 1257  07                    C3	        POP     ES
 1258  8D 3E 10CB R          C3	        LEA     DI,$M_CLASS_D_STRUC
 125C  81 C1 0191            C3	        ADD     CX,$-$M_CLASS_D_STRUC
 1260  C3                    C3	        RET
			     C3	
 1261                        C3	$M_CLS_4 ENDP
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CL1>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CL1>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CL1>,<repl>	  ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-164
DOS - Message Retriever - DISPMSG.ASM Module                

			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CL1>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL1>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-165
DOS - Message Retriever - DISPMSG.ASM Module                

			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-166
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-167
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CL1			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CL1					 ; 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-168
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_MSGSERV_1
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 1261                        C3	$M_CLASS_1_STRUC LABEL BYTE
 1261  01                    C3	        $M_CLASS_ID <001H,EXPECTED_VERSION,Class_1_MessageCount>
 1262  0400                  C3	
 1264  01                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 1265                        C3	$M_1_FF_STRUC LABEL BYTE
 1265  FFFF                  C3	        $M_ID <0FFFFH,$M_1_FF_MSG-$M_1_FF_STRUC>
 1267  0400                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 1269                        C3	$M_1_FF_MSG LABEL BYTE
 1269  11                    C3	        DB      $M_1_FF_END-$M_1_FF_MSG-1
 126A  45 78 74 65 6E 64     C3	        DB      "Extended Error %1"
       65 64 20 45 72 72     C3	
       6F 72 20 25 31        C3	
 127B                        C3	$M_1_FF_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 0001                      C3	Class_1_MessageCount EQU     1
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        ELSE
 127B                        C3	$M_MSGSERV_1 PROC NEAR
			     C3	        ENDIF
			     C3	
 127B  0E                    C3	        PUSH    CS
 127C  07                    C3	        POP     ES
 127D  8D 3E 1261 R          C3	        LEA     DI,$M_CLASS_1_STRUC
 1281  83 C1 20              C3	        ADD     CX,$-$M_CLASS_1_STRUC
 1284  C3                    C3	        RET
			     C3	
 1285                        C3	$M_MSGSERV_1 Endp
			     C3	
			     C3	; ----------------------------------------------------------
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-169
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CL2>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CL2>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CL2>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CL2>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CL2>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-170
DOS - Message Retriever - DISPMSG.ASM Module                

			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-171
DOS - Message Retriever - DISPMSG.ASM Module                

			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-172
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-173
DOS - Message Retriever - DISPMSG.ASM Module                

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CL2			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CL2					 ; 
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        PUBLIC  $M_MSGSERV_2
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 1285                        C3	$M_CLASS_2_STRUC LABEL BYTE
 1285  02                    C3	        $M_CLASS_ID <002H,EXPECTED_VERSION,Class_2_MessageCount>
 1286  0400                  C3	
 1288  01                    C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 1289                        C3	$M_2_FF_STRUC LABEL BYTE
 1289  FFFF                  C3	        $M_ID <0FFFFH,$M_2_FF_MSG-$M_2_FF_STRUC>
 128B  0400                  C3	
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
 128D                        C3	$M_2_FF_MSG LABEL BYTE
 128D  0E                    C3	        DB      $M_2_FF_END-$M_2_FF_MSG-1
 128E  50 61 72 73 65 20     C3	        DB      "Parse Error %1"
       45 72 72 6F 72 20     C3	
       25 31                 C3	
 129C                        C3	$M_2_FF_END LABEL BYTE
			     C3	  
			     C3	; ----------------------------------------------------------
			     C3	
 = 0001                      C3	Class_2_MessageCount EQU     1
			     C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-174
DOS - Message Retriever - DISPMSG.ASM Module                

			     C3	; ----------------------------------------------------------
			     C3	
			     C3	        ELSE
 129C                        C3	$M_MSGSERV_2 PROC NEAR
			     C3	        ENDIF
			     C3	
 129C  0E                    C3	        PUSH    CS
 129D  07                    C3	        POP     ES
 129E  8D 3E 1285 R          C3	        LEA     DI,$M_CLASS_2_STRUC
 12A2  83 C1 1D              C3	        ADD     CX,$-$M_CLASS_2_STRUC
 12A5  C3                    C3	        RET
			     C3	
 12A6                        C3	$M_MSGSERV_2 Endp
			     C3	
			     C3	; ----------------------------------------------------------
			     C3	
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
 = FFFF                      2	     $M_INCLUDE = TRUE			  ;  Reset include flag 
			     2						  ;	For each service predefined 
			     2	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT> 
			     2		 IFDIF <CHKDSK.CTL>,<serv>		  ;	  IF it IS a service (defined above) 
			     2		 ELSE				  ; 
			     2		   IFDIF <CHKDSK.CTL>,<MSGDATA>	  ;	    IF it is NOT the message data space request 
			     2		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s 
			     2		   ENDIF			  ;	    ENDIF 
			     2		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service 
			     2		     IFIDN  <CHKDSK.CTL>,<repl>	  ; 
			     2		       $M_REPLACE = TRUE	  ;	       Set replace flag 
			     2		     ENDIF			  ; 
			     2		   ENDM 			  ; 
			     2		   serv = TRUE			  ;	    Let the assembler know about the service 
			     2		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     2		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     2		 ENDIF				  ;	  ENDIF 
			     2	      ENDM				  ;	NEXT service 
			     3		 IFDIF <CHKDSK.CTL>,<MSGDATA>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<LOADmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<NOVERCHECKmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<DISPLAYmsg>		  ;	  IF it IS a service (defined above)
				 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<GETmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<INPUTmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<CHARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-175
DOS - Message Retriever - DISPMSG.ASM Module                

			     3		 IFDIF <CHKDSK.CTL>,<NUMmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<TIMEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<DATEmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<NEARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<FARmsg>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<COMR>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     3		 IFDIF <CHKDSK.CTL>,<COMT>		  ;	  IF it IS a service (defined above) 
			     3		 ENDIF				  ;	  ENDIF 
			     2	MSG_SERVICES2  <CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3						  ; 
			     3						    ;  FOR each variable in the list 
			     3	   IRP	   var2,<CHKDSK.CLA,CHKDSK.CLB,CHKDSK.CLC,CHKDSK.CLD,CHKDSK.CL1,CHKDSK.CL2,CHKDSK.CTL> 
			     3							       ; For each service predefined 
			     3	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     3						    ;AN003; IF it IS a service (defined above) 
			     3		 IFDIF <var2>,<serv2> 
			     3		 ELSE				  ; 
			     3		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     3		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     3		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     3		 ENDIF				  ;	  ENDIF 
			     3	      ENDM				  ;	NEXT service 
			     3	   ENDM 				  ;  NEXT variable 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLA>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLA>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-176
DOS - Message Retriever - DISPMSG.ASM Module                

			     4		 IFDIF <CHKDSK.CLB>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLB>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLC>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLC>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CLD>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-177
DOS - Message Retriever - DISPMSG.ASM Module                

			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CLD>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL1>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL1>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CL2>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CL2>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     4							       ; For each service predefined 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-178
DOS - Message Retriever - DISPMSG.ASM Module                

			     4	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC> 
			     4						    ;AN003; IF it IS a service (defined above) 
			     4		 IFDIF <CHKDSK.CTL>,<serv2> 
			     4		 ELSE				  ; 
			     4		   serv2 = TRUE 		   ;	     Let the assembler know about the service 
			     4		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service 
			     4		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class 
			     4		 ENDIF				  ;	  ENDIF 
			     4	      ENDM				  ;	NEXT service 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<SETSTDIO> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDIN> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<NOCHECKSTDOUT> 
			     5		 ENDIF				  ;	  ENDIF 
			     5						    ;AN003; IF it IS a service (defined above) 
			     5		 IFDIF <CHKDSK.CTL>,<DISK_PROC> 
			     5		 ENDIF				  ;	  ENDIF 
			     2						  ; Continue further checks (If we add any more predefined 
			     2						  ;  function to the above IRP command, it generates a 
			     2						  ;  syntax error. We must continue the processing in anothe
				r 
			     2						  ;  MACRO called MSG_SERVICES2) 
			     2	      IF $M_INCLUDE			  ;	IF message class was requested 
			     2		 $M_INC CHKDSK.CTL			  ;	   Include it as a message class 
			     3							 ; 
			     3	INCLUDE CHKDSK.CTL					 ; 
 = 0004                      C3	$M_NUM_CLS  EQU 4
			     3							 ; 
			     2	      ENDIF				  ;	ENDIF 
			     1						  ; 
 12A6				code	ends									;an000;bgb
				.list										;an000;bgb
														;an000;bgb
				;										;an000;bgb
				;*****************************************************************************	;an000;bgb
				; Public Declarations								;an000;bgb
				;*****************************************************************************	;an000;bgb
					Public	SysLoadMsg							;an000;bgb
					Public	SysDispMsg							;an000;bgb
														;an000;bgb
														;an000;bgb
				;										;an000;bgb
				;***************************************************************************	;an000;bgb
				; Message Structures								;an000;bgb
				;***************************************************************************	;an000;bgb
				Message_Table struc				;				;an000;bgb;AN000;
 0000  0000			Entry1	dw	0				;				;an000;bgb;AN000;
 0002  0000			Entry2	dw	0				;				;an000;bgb;AN000;
 0004  0000			Entry3	dw	0				;				;an000;bgb;AN000;
 0006  0000			Entry4	dw	0				;				;an000;bgb;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-179
DOS - Message Retriever - DISPMSG.ASM Module                

 0008  00			Entry5	db	0				;				;an000;bgb;AN000;
 0009  00			Entry6	db	0				;				;an000;bgb;AN000;
 000A  0000			Entry7	dw	0				;				;an000;bgb;AN000;
 000C				Message_Table ends				;				;an000;bgb;AN000;
														;an000;bgb
 12A6				code	segment public para 'CODE'              ;                               ;an000;bgb;AN000;
				;*****************************************************************************	;an000;bgb
				;Routine name&gml Display_Interface						;an000;bgb
				;*****************************************************************************	;an000;bgb
				;										;an000;bgb
				;DescriptioN&gml Save all registers, set up registers required for SysDispMsg	;an000;bgb
				;	      routine. This information is contained in a message description	;an000;bgb
				;	      table pointed to by the DX register. Call SysDispMsg, then	;an000;bgb
				;	      restore registers. This routine assumes that the only time an	;an000;bgb
				;	      error will be returned is if an extended error message was	;an000;bgb
				;	      requested, so it will ignore error returns			;an000;bgb
				;										;an000;bgb
				;Called Procedures: Message (macro)						;an000;bgb
				;										;an000;bgb
				;Change History&gml Created	   4/22/87	   MT				;an000;bgb
				;										;an000;bgb
				;Input&gml ES&gmlDX = pointer to message description				;an000;bgb
				;										;an000;bgb
				;Output&gml None								;an000;bgb
				;										;an000;bgb
				;Psuedocode									;an000;bgb
				;----------									;an000;bgb
				;										;an000;bgb
				;	Save all registers							;an000;bgb
				;	Setup registers for SysDispMsg from Message Description Tables		;an000;bgb
				;	CALL SysDispMsg 							;an000;bgb
				;	Restore registers							;an000;bgb
				;	ret									;an000;bgb
				;*****************************************************************************	;an000;bgb
				Public	Display_Interface							;an000;bgb
 12A6				Display_Interface   proc			;				;an000;bgb;AN000;
 12A6  1E				push	ds								;an000;bgb
 12A7  50				push	ax								;an000;bgb
 12A8  53				push	bx								;an000;bgb
 12A9  51				push	cx								;an000;bgb
 12AA  52				push	dx								;an000;bgb
 12AB  56				push	si								;an000;bgb
 12AC  57				push	di								;an000;bgb
 12AD  8B FA				mov	di,dx				;Change pointer to table	;an000;bgb;AN000;
 12AF  BA ---- R			mov	dx,dg				;Point to group 		;an000;bgb
 12B2  8E DA				mov	ds,dx				;				;an000;bgb
 12B4  8B 05				mov	ax,[di].Entry1			;Message number 		;an000;bgb;AN000;
 12B6  8B 5D 02				mov	bx,[di].Entry2			;Handle 			;an000;bgb;AN000;
 12B9  8B 75 04				mov	si,[di].Entry3			;Sublist			;an000;bgb;AN000;
 12BC  8B 4D 06				mov	cx,[di].Entry4			;Count				;an000;bgb;AN000;
 12BF  8A 75 08				mov	dh,[di].Entry5			;Class				;an000;bgb;AN000;
 12C2  8A 55 09				mov	dl,[di].Entry6			;Function			;an000;bgb;AN000;
 12C5  8B 7D 0A				mov	di,[di].Entry7			;Input				;an000;bgb;AN000;
 12C8  E8 017D R			call	SysDispMsg			;Display the message		;an000;bgb;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-180
DOS - Message Retriever - DISPMSG.ASM Module                

 12CB  5F				pop	di								;an000;bgb
 12CC  5E				pop	si								;an000;bgb
 12CD  5A				pop	dx								;an000;bgb
 12CE  59				pop	cx								;an000;bgb
 12CF  5B				pop	bx								;an000;bgb
 12D0  58				pop	ax								;an000;bgb
 12D1  1F				pop	ds								;an000;bgb
 12D2  C3				ret					;All done			;an000;bgb;AN000;
 12D3				Display_Interface      endp			;				;an000;bgb;AN000;
														;an000;bgb
				include msgdcl.inc
			     C	; This Macro was removed from sysmsg.inc. We had to remove this
			     C	; macro and put it into it's own include file in order to clear up
			     C	; some assembly errors. MS MASM will not allow a public declaration
			     C	; during the second pass of the assembler. IBM MASM will allow this.
			     C	;
			     C	;
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	$M_DECLARE	     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C	$M_DECLARE    macro	numcls	       ;
			     C	   $M_DCOUNT = 0		       ;
			     C	   REPT  numcls 		       ;
			     C	     $M_DCOUNT =  $M_DCOUNT + 1        ;
			     C	     $M_DECLARE2  %$M_DCOUNT	       ;
			     C	   ENDM 			       ;
			     C	
			     C	  IF COMR
			     C	    IFNDEF $M_RT2			;  If Resident table is not in this assembly,
			     C		EXTRN	$M_RT2:BYTE		;     Must be external
			     C	    ELSE
			     C		PUBLIC	$M_RT2
			     C	    ENDIF				;
			     C	  ELSE
			     C	    IFNDEF $M_RT			;  If Resident table is not in this assembly,
			     C		EXTRN	$M_RT:BYTE		;     Must be external
			     C	    ELSE
			     C		PUBLIC	$M_RT
			     C	    ENDIF				;
			     C	  ENDIF
			     C	
			     C	  $M_CHECK $M_GET_MSG_ADDRESS	      ;  If this subroutine is not in this assembly,
			     C	  $M_CHECK $M_MSGSERV_1 	      ;  If this subroutine is not in this assembly,
			     C	  $M_CHECK $M_MSGSERV_2 	      ;  If this subroutine is not in this assembly,
			     C	
			     C	ENDM				       ;
			     C					       ;
			     C	$M_DECLARE2   macro   innum	       ;
			     C	  IF NOT COMR			       ; IF Not resident COMMAND.COM
			     C	    IF NOT COMT 			 ; IF Not transient COMMAND.COM
			     C	      IFNDEF  $M_CLS_&innum		 ; IF class is not in this assembly,
			     C		IF	FARmsg			 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-181
DOS - Message Retriever - DISPMSG.ASM Module                

			     C		  EXTRN   $M_CLS_&innum:FAR	 ;    Must be external
			     C		ELSE				 ;
			     C		  EXTRN   $M_CLS_&innum:NEAR	 ;    Must be external
			     C		ENDIF				 ;
			     C	      ELSE				 ; ELSE
			     C		PUBLIC	$M_CLS_&innum		 ;    Label PUBLIC
			     C	      ENDIF				 ;
			     C	    ELSE				 ; ELSE
			     C	      IFDIF  <$M_CLS_&innum>,<$M_CLS_1>  ; IF NOT $M_CLS_1 or
			     C		IFDIF <$M_CLS_&innum>,<$M_CLS_2> ;   IF NOT $M_CLS_2 then
			     C		  IFNDEF  $M_CLS_&innum 	 ;     IF class is not in this assembly,
			     C		    IF	    FARmsg		 ;
			     C		      EXTRN   $M_CLS_&innum:FAR  ;	 Must be external
			     C		    ELSE			 ;
			     C		      EXTRN   $M_CLS_&innum:NEAR ;	 Must be external
			     C		    ENDIF			 ;
			     C		  ELSE				 ;     ELSE
			     C		    PUBLIC  $M_CLS_&innum	 ;	 Label PUBLIC
			     C		  ENDIF 			 ;
			     C		ENDIF				 ;
			     C	      ENDIF				 ;
			     C	    ENDIF				 ;
			     C	  ELSE					 ; ELSE
			     C	    IFDIF  <$M_CLS_&innum>,<$M_CLS_1>	 ; IF NOT $M_CLS_1 or
			     C	      IFDIF <$M_CLS_&innum>,<$M_CLS_2>	 ;   IF NOT $M_CLS_2 then
			     C		IFNDEF	$M_CLS_&innum		 ;     IF class is not in this assembly,
			     C		  IF	  FARmsg		 ;
			     C		    EXTRN   $M_CLS_&innum:FAR	 ;	 Must be external
			     C		  ELSE				 ;
			     C		    EXTRN   $M_CLS_&innum:NEAR	 ;	 Must be external
			     C		  ENDIF 			 ;
			     C		ELSE				 ;     ELSE
			     C		  PUBLIC  $M_CLS_&innum 	 ;	 Label PUBLIC
			     C		ENDIF				 ;
			     C	      ENDIF				 ;
			     C	    ENDIF				 ;
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
			     C	$M_CHECK      macro   parm	       ;
			     C	  IFNDEF  parm			       ; IF class is not in this assembly,
			     C	    IF	    FARmsg		       ;
			     C	      EXTRN   parm:FAR		       ;    Must be external
			     C	    ELSE			       ;
			     C	      EXTRN   parm:NEAR 	       ;    Must be external
			     C	    ENDIF			       ;
			     C	  ELSE
			     C	    IF COMR
			     C	    ELSE
			     C	      PUBLIC parm
			     C	    ENDIF
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Page     1-182
DOS - Message Retriever - DISPMSG.ASM Module                

			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	
				
 12D3				code	ends									;an000;bgb
					end									;an000;bgb

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-1


Macros:

		N a m e			Lines

$M_BUILD_PTRS  . . . . . . . . .  	  18
$M_CHECK . . . . . . . . . . . .  	  12
$M_DECLARE . . . . . . . . . . .  	  21
$M_DECLARE2  . . . . . . . . . .  	  41
$M_INC . . . . . . . . . . . . .  	   3
$M_MAKE  . . . . . . . . . . . .  	  10
$M_MAKE_COMR . . . . . . . . . .  	  21
$M_MAKE_COMT . . . . . . . . . .  	   5
$M_POPF  . . . . . . . . . . . .  	   5
CREATE_MSG . . . . . . . . . . .  	  10
DEFINE_MSG . . . . . . . . . . .  	   3
MSG_SERVICES . . . . . . . . . .  	  34
MSG_SERVICES2  . . . . . . . . .  	  14
MSG_UTILNAME . . . . . . . . . .  	   5
PATHLABL . . . . . . . . . . . .  	  10

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

$M_CLASS_ID  . . . . . . . . . .  	0004	0003
  $M_CLS_ID  . . . . . . . . . .  	0000
  $M_COMMAND_VER . . . . . . . .  	0001
  $M_NUM_CLS_MSG . . . . . . . .  	0003
$M_COUNTRY_INFO  . . . . . . . .  	0062	000A
  $M_HEADER  . . . . . . . . . .  	0000
  $M_DATE_FORMAT . . . . . . . .  	0050
  $M_CURR_SEPARA . . . . . . . .  	0052
  $M_THOU_SEPARA . . . . . . . .  	0057
  $M_DECI_SEPARA . . . . . . . .  	0059
  $M_DATE_SEPARA . . . . . . . .  	005B
  $M_TIME_SEPARA . . . . . . . .  	005D
  $M_CURR_FORMAT . . . . . . . .  	005F
  $M_SIG_DIGS_CU . . . . . . . .  	0060
  $M_TIME_FORMAT . . . . . . . .  	0061
$M_ID  . . . . . . . . . . . . .  	0004	0002
  $M_NUM . . . . . . . . . . . .  	0000
  $M_TXT_PTR . . . . . . . . . .  	0002
$M_RES_ADDRS . . . . . . . . . .  	0091	0017
  $M_EXT_ERR_ADDRS . . . . . . .  	0000
  $M_EXT_FILE  . . . . . . . . .  	0004
  $M_EXT_COMMAND . . . . . . . .  	0008
  $M_EXT_TERM  . . . . . . . . .  	000C
  $M_PARSE_COMMAND . . . . . . .  	0010
  $M_PARSE_ADDRS . . . . . . . .  	0014
  $M_PARSE_TERM  . . . . . . . .  	0018
  $M_CRIT_ADDRS  . . . . . . . .  	001C
  $M_CRIT_COMMAND  . . . . . . .  	0020
  $M_CRIT_TERM . . . . . . . . .  	0024
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-2


  $M_DISK_PROC_ADDR  . . . . . .  	0028
  $M_CLASS_ADDRS . . . . . . . .  	002C
  $M_CLS_TERM  . . . . . . . . .  	003C
  $M_DBCS_VEC  . . . . . . . . .  	0040
  $M_HANDLE  . . . . . . . . . .  	0044
  $M_SIZE  . . . . . . . . . . .  	0046
  $M_CRLF  . . . . . . . . . . .  	0047
  $M_CLASS . . . . . . . . . . .  	0049
  $M_RETURN_ADDR . . . . . . . .  	004A
  $M_MSG_NUM . . . . . . . . . .  	004C
  $M_DIVISOR . . . . . . . . . .  	004E
  $M_TEMP_BUF  . . . . . . . . .  	0050
  $M_BUF_TERM  . . . . . . . . .  	0090
$M_SUBLIST_STRUC . . . . . . . .  	000B	0008
  $M_S_SIZE  . . . . . . . . . .  	0000
  $M_S_RESV  . . . . . . . . . .  	0001
  $M_S_VALUE . . . . . . . . . .  	0002
  $M_S_ID  . . . . . . . . . . .  	0006
  $M_S_FLAG  . . . . . . . . . .  	0007
  $M_S_MAXW  . . . . . . . . . .  	0008
  $M_S_MINW  . . . . . . . . . .  	0009
  $M_S_PAD . . . . . . . . . . .  	000A
A_DEVICEPARAMETERS . . . . . . .  	0026	0012
  SPECIALFUNCTIONS . . . . . . .  	0000
  DEVICETYPE . . . . . . . . . .  	0001
  DEVICEATTRIBUTES . . . . . . .  	0002
  NUMBEROFCYLINDERS  . . . . . .  	0004
  MEDIATYPE  . . . . . . . . . .  	0006
  BYTEPERSECTOR  . . . . . . . .  	0007
  SECTORSPERCLUSTER  . . . . . .  	0009
  RESERVEDSECTORS  . . . . . . .  	000A
  NUMBEROFFATS . . . . . . . . .  	000C
  ROOTENTRIES  . . . . . . . . .  	000D
  TOTALSECTORS . . . . . . . . .  	000F
  MEDIADESCRIPTOR  . . . . . . .  	0011
  SECTORSPERFAT  . . . . . . . .  	0012
  SECTORSPERTRACK  . . . . . . .  	0014
  HEADS  . . . . . . . . . . . .  	0016
  HIDDENSECTORS  . . . . . . . .  	0018
  EXT_TOTAL_SECTORS  . . . . . .  	001C
  RESERVEDAREA . . . . . . . . .  	0020
DIRENT . . . . . . . . . . . . .  	0028	000C
  DIRNAM . . . . . . . . . . . .  	0008
  DIRATT . . . . . . . . . . . .  	0013
  DIRCP  . . . . . . . . . . . .  	0014
  DIR_XA . . . . . . . . . . . .  	0016
  DIRATT2  . . . . . . . . . . .  	0018
  DIRRES . . . . . . . . . . . .  	0019
  DIRTIM . . . . . . . . . . . .  	001E
  DIRDAT . . . . . . . . . . . .  	0020
  DIRCLUS  . . . . . . . . . . .  	0022
  DIRESIZ  . . . . . . . . . . .  	0024
MESSAGE_TABLE  . . . . . . . . .  	000C	0007
  ENTRY1 . . . . . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-3


  ENTRY2 . . . . . . . . . . . .  	0002
  ENTRY3 . . . . . . . . . . . .  	0004
  ENTRY4 . . . . . . . . . . . .  	0006
  ENTRY5 . . . . . . . . . . . .  	0008
  ENTRY6 . . . . . . . . . . . .  	0009
  ENTRY7 . . . . . . . . . . . .  	000A
RELATIVE_SECTOR_BUFFER . . . . .  	000A	0005
  START_SECTOR_LOW . . . . . . .  	0000
  START_SECTOR_HIGH  . . . . . .  	0002
  NUMBER_SECTORS . . . . . . . .  	0004
  BUFFER_OFFSET  . . . . . . . .  	0006
  BUFFER_SEGMENT . . . . . . . .  	0008
SUBLIST_STRUC  . . . . . . . . .  	000B	0009
  SUBLIST_SIZE . . . . . . . . .  	0000
  SUBLIST_RSV  . . . . . . . . .  	0001
  SUBLIST_OFFSET . . . . . . . .  	0002
  SUBLIST_SEGMENT  . . . . . . .  	0004
  SUBLIST_NUMBER . . . . . . . .  	0006
  SUBLIST_TYPE . . . . . . . . .  	0007
  SUBLIST_MAX  . . . . . . . . .  	0008
  SUBLIST_MIN  . . . . . . . . .  	0009
  SUBLIST_CHAR . . . . . . . . .  	000A
SYS_FCB  . . . . . . . . . . . .  	0025	000C
  FCB_DRIVE  . . . . . . . . . .  	0000
  FCB_NAME . . . . . . . . . . .  	0001
  FCB_EXT  . . . . . . . . . . .  	0009
  FCB_EXTENT . . . . . . . . . .  	000C
  FCB_RECSIZ . . . . . . . . . .  	000E
  FCB_FILSIZ . . . . . . . . . .  	0010
  FCB_DRVBP  . . . . . . . . . .  	0012
  FCB_FDATE  . . . . . . . . . .  	0014
  FCB_FTIME  . . . . . . . . . .  	0016
  FCB_RESERVED . . . . . . . . .  	0018
  FCB_NR . . . . . . . . . . . .  	0020
  FCB_RR . . . . . . . . . . . .  	0021
XAL  . . . . . . . . . . . . . .  	0200	0005
  XAL_TSIZE  . . . . . . . . . .  	0000
  XAL_TCOUNT . . . . . . . . . .  	0002
  XAL_LSIZE  . . . . . . . . . .  	0004
  XAL_LCOUNT . . . . . . . . . .  	0006
  XAL_DATA . . . . . . . . . . .  	0008

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DG . . . . . . . . . . . . . . .  	GROUP
  DATA . . . . . . . . . . . . .  	0562	PARA	PUBLIC	'DATA'
  CONST  . . . . . . . . . . . .  	0000	PARA	PUBLIC	'DATA'
  CODE . . . . . . . . . . . . .  	12D3	PARA	PUBLIC	'CODE'
  CSTACK . . . . . . . . . . . .  	01F0	PARA	STACK	'STACK'
  LASTSEG  . . . . . . . . . . .  	0000	PARA	PUBLIC	'LAST'
PSP  . . . . . . . . . . . . . .  	0000	PARA	PUBLIC	'DUMMY'
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-4



Symbols:            

                N a m e         	Type	 Value	 Attr

ACTION_39  . . . . . . . . . . .  	NUMBER	0004	
Alloc_XA_Msg . . . . . . . . . .  	L WORD	0332	DATA	Global
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_GOOD_DOS . . . . . . . . . .  	L NEAR	0161	CODE
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	0010	CODE
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	0015	CODE
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	001B	CODE
amis_sign  . . . . . . . . . . .  	L NEAR	0000	CODE	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 DG		
APPEND_OFF . . . . . . . . . . .  	NUMBER	0000	
APPEND_ON  . . . . . . . . . . .  	NUMBER	0001	
APPEND_X . . . . . . . . . . . .  	NUMBER	B706	
APPEND_X_SET . . . . . . . . . .  	NUMBER	0001	
Arg_Buf  . . . . . . . . . . . .  	V BYTE	0000		External
ASCIIZ_END . . . . . . . . . . .  	NUMBER	0000	
ASSIGN_CHECK . . . . . . . . . .  	NUMBER	8000	

badcd_arg  . . . . . . . . . . .  	L WORD	039E	DATA	Global
badchain . . . . . . . . . . . .  	L WORD	0236	DATA	Global
badclus  . . . . . . . . . . . .  	L WORD	0266	DATA	Global
baddpbdir  . . . . . . . . . . .  	L WORD	03C2	DATA	Global
BadDrvm  . . . . . . . . . . . .  	L BYTE	0458	DATA	Global
baddrv_arg . . . . . . . . . . .  	L WORD	034A	DATA	Global
badidbyt . . . . . . . . . . . .  	L WORD	00FE	DATA	Global
badrdmes . . . . . . . . . . . .  	L WORD	0206	DATA	Global
badrw_num  . . . . . . . . . . .  	L WORD	045E	DATA	Global
badrw_str  . . . . . . . . . . .  	L WORD	045C	DATA	Global
badr_arg . . . . . . . . . . . .  	L WORD	01BE	DATA	Global
badspc . . . . . . . . . . . . .  	L WORD	013A	DATA	Global
badsubdir  . . . . . . . . . . .  	L WORD	0242	DATA	Global
badsw_arg  . . . . . . . . . . .  	L WORD	033E	DATA	Global
badtarg2 . . . . . . . . . . . .  	L WORD	02DE	DATA	Global
badtarg_ptr  . . . . . . . . . .  	L WORD	02D2	DATA	Global
badver . . . . . . . . . . . . .  	L WORD	00F2	DATA	Global
badw_arg . . . . . . . . . . . .  	L WORD	03AA	DATA	Global
BAD_EXIT . . . . . . . . . . . .  	NUMBER	00FF	
BELL . . . . . . . . . . . . . .  	NUMBER	0007	
BIG_FAT_THRESHOLD  . . . . . . .  	NUMBER	0FF6	
BIN_HEX_BYTE . . . . . . . . . .  	NUMBER	0013	
BIN_HEX_DWORD  . . . . . . . . .  	NUMBER	0033	
BIN_HEX_TYPE . . . . . . . . . .  	NUMBER	0003	
BIN_HEX_WORD . . . . . . . . . .  	NUMBER	0023	
BLANK  . . . . . . . . . . . . .  	NUMBER	0020	
block_num  . . . . . . . . . . .  	L WORD	0460	DATA	Global

cdddmes  . . . . . . . . . . . .  	L WORD	022A	DATA	Global
CHARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-5


CHAR_FIELD_ASCIIZ  . . . . . . .  	NUMBER	0010	
CHAR_FIELD_CHAR  . . . . . . . .  	NUMBER	0000	
CHAR_TYPE  . . . . . . . . . . .  	NUMBER	0000	
CHECK_AMIS . . . . . . . . . . .  	L NEAR	0105	CODE
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	013C	CODE
CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	010E	CODE
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	0137	CODE
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	013B	CODE
CHK_ERROR  . . . . . . . . . . .  	NUMBER	0001	
CLASS  . . . . . . . . . . . . .  	NUMBER	00FF	
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	0013	
CLASS_B_MESSAGECOUNT . . . . . .  	NUMBER	0013	
CLASS_C_MESSAGECOUNT . . . . . .  	NUMBER	0012	
CLASS_D_MESSAGECOUNT . . . . . .  	NUMBER	000E	
COLON  . . . . . . . . . . . . .  	NUMBER	003A	
command_line_buffer  . . . . . .  	V BYTE	0000		External
COMR . . . . . . . . . . . . . .  	NUMBER	0000	
COMT . . . . . . . . . . . . . .  	NUMBER	0000	
COUNT  . . . . . . . . . . . . .  	NUMBER	0000	
CR . . . . . . . . . . . . . . .  	NUMBER	000D	
creatmes . . . . . . . . . . . .  	L WORD	03DA	DATA	Global
CRITICAL_ERROR_FAIL  . . . . . .  	NUMBER	0003	
crlf_arg . . . . . . . . . . . .  	L WORD	0392	DATA	Global
cross_arg  . . . . . . . . . . .  	L WORD	02C6	DATA	Global
Cross_Clus . . . . . . . . . . .  	V BYTE	0000		External

DATEMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
DATE_MD  . . . . . . . . . . . .  	NUMBER	0014	
DATE_MDY_2 . . . . . . . . . . .  	NUMBER	0024	
DATE_MDY_4 . . . . . . . . . . .  	NUMBER	0034	
DATE_TYPE  . . . . . . . . . . .  	NUMBER	0004	
DAY_MASK . . . . . . . . . . . .  	NUMBER	001F	
direc_arg  . . . . . . . . . . .  	L WORD	01CA	DATA	Global
dirmes . . . . . . . . . . . . .  	L WORD	0152	DATA	Global
DIR_ATTRIBUTE  . . . . . . . . .  	NUMBER	0010	
DIR_ENTRIES_PER_SECTOR . . . . .  	NUMBER	0010	
DISK_ERROR . . . . . . . . . . .  	NUMBER	0080	
DISK_PROC  . . . . . . . . . . .  	NUMBER	0000	
DISPLAYMSG . . . . . . . . . . .  	NUMBER	0000	
Display_Interface  . . . . . . .  	N PROC	12A6	CODE	Global	Length = 002D
DOS_BUF_KEYB_INP . . . . . . . .  	NUMBER	000A	
DOS_CLOSE_FILE . . . . . . . . .  	NUMBER	003E	
DOS_CLR_KEYB_BUF . . . . . . . .  	NUMBER	000C	
DOS_CLR_KEYB_BUF_MASK  . . . . .  	NUMBER	00C0	
DOS_CON_INP  . . . . . . . . . .  	NUMBER	0008	
DOS_DIR_CON_INP  . . . . . . . .  	NUMBER	0007	
DOS_DISP_CHAR  . . . . . . . . .  	NUMBER	0002	
DOS_DISP_STRING  . . . . . . . .  	NUMBER	0009	
DOS_EXTENDED_OPEN  . . . . . . .  	NUMBER	6C00	
DOS_GET_ADDR . . . . . . . . . .  	NUMBER	0008	
DOS_GET_COUNTRY  . . . . . . . .  	NUMBER	0038	
DOS_GET_CRITICAL . . . . . . . .  	NUMBER	0004	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-6


DOS_GET_DBCS_INFO  . . . . . . .  	NUMBER	6300	
DOS_GET_EXTENDED . . . . . . . .  	NUMBER	0000	
DOS_GET_EXT_ERROR  . . . . . . .  	NUMBER	0059	
DOS_GET_EXT_ERROR_BX . . . . . .  	NUMBER	0000	
DOS_GET_EXT_PARSE_ADD  . . . . .  	NUMBER	122E	
DOS_GET_FILE . . . . . . . . . .  	NUMBER	0006	
DOS_GET_PARSE  . . . . . . . . .  	NUMBER	0002	
DOS_GET_VERSION  . . . . . . . .  	NUMBER	0030	
DOS_IOCTL_GET_INFO . . . . . . .  	NUMBER	4400	
DOS_IOCTL_SET_INFO . . . . . . .  	NUMBER	4401	
DOS_KEYB_INP . . . . . . . . . .  	NUMBER	0001	
DOS_LSEEK_FILE . . . . . . . . .  	NUMBER	4200	
DOS_READ_BYTE  . . . . . . . . .  	NUMBER	003F	
DOS_SET_ADDR . . . . . . . . . .  	NUMBER	0009	
DOS_WRITE_HANDLE . . . . . . . .  	NUMBER	0040	
DO_INCLUDE . . . . . . . . . . .  	NUMBER	0001	
DRIVE_NOT_READY  . . . . . . . .  	NUMBER	0002	
DRVCHAR  . . . . . . . . . . . .  	NUMBER	003A	
dskspc . . . . . . . . . . . . .  	L WORD	012E	DATA	Global

ENTSIZ . . . . . . . . . . . . .  	NUMBER	0028	
ERROR_CLASS_39 . . . . . . . . .  	NUMBER	0001	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
Extended_Error_Msg . . . . . . .  	L WORD	036E	DATA	Global
extent_arg . . . . . . . . . . .  	L WORD	01D6	DATA	Global
EXT_ERR_39 . . . . . . . . . . .  	NUMBER	0027	
EXT_ERR_CLASS  . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FARMSG . . . . . . . . . . . . .  	NUMBER	0000	
fatal_arg  . . . . . . . . . . .  	L WORD	01FA	DATA	Global
fatal_arg1 . . . . . . . . . . .  	L WORD	0462	DATA	Global
fatal_arg2 . . . . . . . . . . .  	L WORD	0464	DATA	Global
Fatal_End  . . . . . . . . . . .  	L BYTE	0470	DATA	Global
fatmsg1  . . . . . . . . . . . .  	L WORD	00BD	DATA	Global
fatmsg2  . . . . . . . . . . . .  	L WORD	00C8	DATA	Global
FCB  . . . . . . . . . . . . . .  	NUMBER	005C	
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
FCBSPECIAL . . . . . . . . . . .  	NUMBER	0080	
FCB_L_ATTR . . . . . . . . . . .  	BYTE	001E	
FCB_L_DRIVE  . . . . . . . . . .  	BYTE	0019	
FCB_L_FIRCLUS  . . . . . . . . .  	WORD	001A	
FCB_L_MFS  . . . . . . . . . . .  	WORD	001C	
FCB_NETID  . . . . . . . . . . .  	DWORD	001C	
FCB_NET_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NET_HANDLE . . . . . . . . .  	WORD	001A	
FCB_NSLD_DRIVE . . . . . . . . .  	BYTE	0019	
FCB_NSLD_DRVPTR  . . . . . . . .  	DWORD	001A	
FCB_NSL_BITS . . . . . . . . . .  	BYTE	001A	
FCB_NSL_DIRPOS . . . . . . . . .  	BYTE	001F	
FCB_NSL_DIRSEC . . . . . . . . .  	WORD	001D	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-7


FCB_NSL_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NSL_FIRCLUS  . . . . . . . .  	WORD	001B	
FCB_SFN  . . . . . . . . . . . .  	BYTE	0018	
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
filemes  . . . . . . . . . . . .  	L WORD	015E	DATA	Global
file_arg . . . . . . . . . . . .  	L WORD	03CE	DATA	Global
file_arg1  . . . . . . . . . . .  	L WORD	0466	DATA	Global
file_arg2  . . . . . . . . . . .  	L WORD	0468	DATA	Global
fixmes_arg . . . . . . . . . . .  	L WORD	01EE	DATA	Global
FORMAT_MSG . . . . . . . . . . .  	NUMBER	0043	
FORMFD . . . . . . . . . . . . .  	NUMBER	000C	
FOUND_NO . . . . . . . . . . . .  	NUMBER	0000	
FOUND_YES  . . . . . . . . . . .  	NUMBER	0001	
freeBymes1 . . . . . . . . . . .  	L WORD	02EA	DATA	Global
freebymes2 . . . . . . . . . . .  	L WORD	02F6	DATA	Global
freemes  . . . . . . . . . . . .  	L WORD	010A	DATA	Global
free_arg1  . . . . . . . . . . .  	L WORD	046A	DATA	Global
free_arg2  . . . . . . . . . . .  	L WORD	046C	DATA	Global
free_arg3  . . . . . . . . . . .  	L WORD	046E	DATA	Global
fremem . . . . . . . . . . . . .  	L WORD	019A	DATA	Global
frespc . . . . . . . . . . . . .  	L WORD	0182	DATA	Global
FUNCTION . . . . . . . . . . . .  	NUMBER	0000	

GETMSG . . . . . . . . . . . . .  	NUMBER	0000	

HANDLE . . . . . . . . . . . . .  	NUMBER	0002	
HEAD_MASK  . . . . . . . . . . .  	NUMBER	007F	
HIDDN  . . . . . . . . . . . . .  	NUMBER	0002	
hidmes . . . . . . . . . . . . .  	L WORD	0146	DATA	Global
HOME . . . . . . . . . . . . . .  	NUMBER	000B	
HOUR_MASK  . . . . . . . . . . .  	NUMBER	F800	

idmes1 . . . . . . . . . . . . .  	L WORD	030E	DATA	Global
idmes2 . . . . . . . . . . . . .  	L WORD	031A	DATA	Global
idmes3 . . . . . . . . . . . . .  	L WORD	03E6	DATA	Global
idmes_arg  . . . . . . . . . . .  	L WORD	0302	DATA	Global
IFSFUNC_INSTALLED  . . . . . . .  	NUMBER	00FF	
IFSFUNC_INSTALL_CHECK  . . . . .  	NUMBER	0500	
IFS_GET_ERR_TEXT . . . . . . . .  	NUMBER	0502	
INPUT  . . . . . . . . . . . . .  	NUMBER	0000	
INPUTMSG . . . . . . . . . . . .  	NUMBER	0000	
inval_media  . . . . . . . . . .  	L WORD	040A	DATA	Global
invpath_arg  . . . . . . . . . .  	L WORD	0356	DATA	Global
Inv_XA_Msg . . . . . . . . . . .  	L WORD	0326	DATA	Global
ISDIR  . . . . . . . . . . . . .  	NUMBER	0010	

joinmes  . . . . . . . . . . . .  	L WORD	028A	DATA	Global

LBL_MSGRET . . . . . . . . . . .  	NUMBER	0001	
LEFT_ALIGN . . . . . . . . . . .  	NUMBER	0000	
LF . . . . . . . . . . . . . . .  	NUMBER	000A	
LOADMSG  . . . . . . . . . . . .  	NUMBER	0000	
LOCUS_39 . . . . . . . . . . . .  	NUMBER	0001	
LOWEST_4CH_VERSION . . . . . . .  	NUMBER	0002	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-8


LOW_NIB_MASK . . . . . . . . . .  	NUMBER	000F	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MESSAGE_NUMBER . . . . . . . . .  	NUMBER	004A	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MINUTE_MASK  . . . . . . . . . .  	NUMBER	07E0	
MonTab . . . . . . . . . . . . .  	L BYTE	0424	DATA	Global
MONTH_MASK . . . . . . . . . . .  	NUMBER	01E0	
movsi  . . . . . . . . . . . . .  	L WORD	00E9	DATA	Global
MSGDATA  . . . . . . . . . . . .  	NUMBER	0000	
msgSerialNumber  . . . . . . . .  	L WORD	03F2	DATA	Global
MSG_SER_CLASS  . . . . . . . . .  	NUMBER	0000	
MULTIPLEX  . . . . . . . . . . .  	NUMBER	002F	

ndotmes  . . . . . . . . . . . .  	L WORD	024E	DATA	Global
NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NET_CHECK  . . . . . . . . . . .  	NUMBER	1200	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NO . . . . . . . . . . . . . . .  	NUMBER	0000	
NOCHECKSTDIN . . . . . . . . . .  	NUMBER	0000	
NOCHECKSTDOUT  . . . . . . . . .  	NUMBER	0000	
noext_arg  . . . . . . . . . . .  	L WORD	01E2	DATA	Global
noisy_arg  . . . . . . . . . . .  	L WORD	03B6	DATA	Global
NONE . . . . . . . . . . . . . .  	NUMBER	0000	
norecddot  . . . . . . . . . . .  	L WORD	0296	DATA	Global
norecddot1 . . . . . . . . . . .  	L WORD	02A2	DATA	Global
norecddot2 . . . . . . . . . . .  	L WORD	02AE	DATA	Global
norecddot3 . . . . . . . . . . .  	L WORD	02BA	DATA	Global
norecdot . . . . . . . . . . . .  	L WORD	0272	DATA	Global
NOT_EX_FAIL_EX_OPEN  . . . . . .  	NUMBER	0101	
NOT_INCLUDE  . . . . . . . . . .  	NUMBER	0000	
NOVERCHECKMSG  . . . . . . . . .  	NUMBER	0000	
NO_BYTE  . . . . . . . . . . . .  	L BYTE	0423	DATA	Global
NO_CRIT_OPEN . . . . . . . . . .  	NUMBER	2000	
NO_ENTRY . . . . . . . . . . . .  	NUMBER	0000	
NO_ERROR . . . . . . . . . . . .  	NUMBER	0000	
NO_EXT_ATTRIB  . . . . . . . . .  	NUMBER	0000	
NO_FOUND . . . . . . . . . . . .  	NUMBER	0000	
NO_FUNCTION  . . . . . . . . . .  	NUMBER	0000	
NO_HANDLE  . . . . . . . . . . .  	NUMBER	FFFF	
NO_INPUT . . . . . . . . . . . .  	NUMBER	0000	
no_mem_arg . . . . . . . . . . .  	L WORD	03FE	DATA	Global
no_net_arg . . . . . . . . . . .  	L WORD	01A6	DATA	Global
NO_REPLACE . . . . . . . . . . .  	NUMBER	0000	
nuldmes  . . . . . . . . . . . .  	L WORD	027E	DATA	Global
NULL . . . . . . . . . . . . . .  	NUMBER	0000	
nulnz  . . . . . . . . . . . . .  	L WORD	025A	DATA	Global
NUMMSG . . . . . . . . . . . . .  	NUMBER	FFFF	
N_A  . . . . . . . . . . . . . .  	NUMBER	0000	

OFF  . . . . . . . . . . . . . .  	NUMBER	0000	
ON . . . . . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-9


opnerr_arg . . . . . . . . . . .  	L WORD	0362	DATA	Global
orphcnt  . . . . . . . . . . . .  	L DWORD	044A	DATA	Global
orphmes2 . . . . . . . . . . . .  	L WORD	016A	DATA	Global
orphmes3 . . . . . . . . . . . .  	L WORD	0176	DATA	Global
orphsiz  . . . . . . . . . . . .  	V WORD	0000		External
orph_arg . . . . . . . . . . . .  	L WORD	0386	DATA	Global

Parse_Error_Msg  . . . . . . . .  	L WORD	037A	DATA	Global
PARSE_ERR_CLASS  . . . . . . . .  	NUMBER	0002	
ptrandir . . . . . . . . . . . .  	L WORD	0116	DATA	Global
ptrandir2  . . . . . . . . . . .  	L WORD	0122	DATA	Global

rarg1  . . . . . . . . . . . . .  	L DWORD	0450	DATA	Global
rarg3  . . . . . . . . . . . . .  	L DWORD	0454	DATA	Global
RDONLY . . . . . . . . . . . . .  	NUMBER	0001	
report_arg . . . . . . . . . . .  	L WORD	044E	DATA	Global
RESERVED . . . . . . . . . . . .  	NUMBER	0000	
RIGHT_ALIGN  . . . . . . . . . .  	NUMBER	0080	

sernum . . . . . . . . . . . . .  	V WORD	0000		External
SETSTDIO . . . . . . . . . . . .  	NUMBER	0000	
SET_APPEND_X . . . . . . . . . .  	NUMBER	B707	
SGN_BIN_BYTE . . . . . . . . . .  	NUMBER	0012	
SGN_BIN_DWORD  . . . . . . . . .  	NUMBER	0032	
SGN_BIN_TYPE . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_WORD . . . . . . . . . .  	NUMBER	0022	
stackmes . . . . . . . . . . . .  	L WORD	0212	DATA	Global
stackmes1  . . . . . . . . . . .  	L WORD	021E	DATA	Global
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
STRING_DONE  . . . . . . . . . .  	NUMBER	0000	
SUBLIST  . . . . . . . . . . . .  	NUMBER	0000	
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SUBLIST_MSGSERIALNUMBER  . . . .  	L DWORD	00D1	DATA
SUBLIST_MSG_ALLOC  . . . . . . .  	L DWORD	0016	DATA
SUBLIST_MSG_BADRDMES . . . . . .  	L DWORD	0042	DATA
SUBLIST_MSG_BADR_ARG . . . . . .  	L DWORD	0037	DATA
SUBLIST_MSG_BADSPC . . . . . . .  	L DWORD	0016	DATA
SUBLIST_MSG_BADTARG  . . . . . .  	L DWORD	0058	DATA
SUBLIST_MSG_BADW_ARG . . . . . .  	L DWORD	0037	DATA
SUBLIST_MSG_CROSSMES . . . . . .  	L DWORD	004D	DATA
SUBLIST_MSG_DIRECMES . . . . . .  	L DWORD	00B0	DATA
SUBLIST_MSG_DIRMES . . . . . . .  	L DWORD	0000	DATA
SUBLIST_MSG_DSKSPC . . . . . . .  	L DWORD	0016	DATA
SUBLIST_MSG_EXTENTS  . . . . . .  	L DWORD	0021	DATA
SUBLIST_MSG_FATALMES . . . . . .  	L DWORD	00BB	DATA
SUBLIST_MSG_FILEMES  . . . . . .  	L DWORD	0000	DATA
SUBLIST_MSG_FILE_ARG . . . . . .  	L DWORD	0084	DATA
SUBLIST_MSG_FREEBYMES  . . . . .  	L DWORD	0016	DATA
SUBLIST_MSG_FREMEM . . . . . . .  	L DWORD	0016	DATA
SUBLIST_MSG_FRESPC . . . . . . .  	L DWORD	0016	DATA
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-10


SUBLIST_MSG_HIDMES . . . . . . .  	L DWORD	0000	DATA
Sublist_msg_Idmes  . . . . . . .  	L DWORD	0063	DATA	Global
SUBLIST_MSG_NOISY  . . . . . . .  	L DWORD	008F	DATA
SUBLIST_MSG_ORPHMES  . . . . . .  	L DWORD	009A	DATA
SUBLIST_MSG_ORPHMES2 . . . . . .  	L DWORD	0000	DATA
SUBLIST_MSG_ORPHMES3 . . . . . .  	L DWORD	0000	DATA
SUBLIST_MSG_PARSERR  . . . . . .  	L DWORD	00E7	DATA
SUBLIST_MSG_TOTMEM . . . . . . .  	L DWORD	0016	DATA
SubstErr . . . . . . . . . . . .  	L WORD	01B2	DATA	Global
SysDispMsg . . . . . . . . . . .  	N PROC	017D	CODE	Global	Length = 0045
SysLoadMsg . . . . . . . . . . .  	N PROC	001B	CODE	Global	Length = 00AC
SYSTM  . . . . . . . . . . . . .  	NUMBER	0004	

TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
TChar  . . . . . . . . . . . . .  	V BYTE	0000		External
THISENT  . . . . . . . . . . . .  	NUMBER	0014	
TIMEMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
TIME_24_TYPE . . . . . . . . . .  	NUMBER	0006	
TIME_CTY_TYPE  . . . . . . . . .  	NUMBER	0005	
TIME_HHMMSSHH_24 . . . . . . . .  	NUMBER	0026	
TIME_HHMMSSHH_CTY  . . . . . . .  	NUMBER	0025	
TIME_HHMMSS_24 . . . . . . . . .  	NUMBER	0016	
TIME_HHMMSS_CTY  . . . . . . . .  	NUMBER	0015	
TIME_HHMM_24 . . . . . . . . . .  	NUMBER	0006	
TIME_HHMM_CTY  . . . . . . . . .  	NUMBER	0005	
totmem . . . . . . . . . . . . .  	L WORD	018E	DATA	Global
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	

UNSGN_BIN_BYTE . . . . . . . . .  	NUMBER	0011	
UNSGN_BIN_DWORD  . . . . . . . .  	NUMBER	0031	
UNSGN_BIN_TYPE . . . . . . . . .  	NUMBER	0001	
UNSGN_BIN_WORD . . . . . . . . .  	NUMBER	0021	
UTILITY_MSG_CLASS  . . . . . . .  	NUMBER	00FF	

VOLIDA . . . . . . . . . . . . .  	NUMBER	0008	
VOL_ATTRIBUTE  . . . . . . . . .  	NUMBER	0008	

write_fault  . . . . . . . . . .  	L WORD	0416	DATA	Global
WRITE_PROTECT  . . . . . . . . .  	NUMBER	0000	

XA_CHAIN . . . . . . . . . . . .  	NUMBER	0084	

YEAR_MASK  . . . . . . . . . . .  	NUMBER	FE00	
YES  . . . . . . . . . . . . . .  	NUMBER	FFFF	
YES_BYTE . . . . . . . . . . . .  	L BYTE	0422	DATA	Global
YES_FOUND  . . . . . . . . . . .  	NUMBER	0001	
yn_arg . . . . . . . . . . . . .  	L WORD	0448	DATA	Global

$$A_START_msgret . . . . . . . .  	L NEAR	0000	CODE	Global
$$A_STOP_msgret  . . . . . . . .  	L NEAR	0882	CODE	Global
$MDO123  . . . . . . . . . . . .  	L NEAR	0222	CODE
$MDO139  . . . . . . . . . . . .  	L NEAR	028A	CODE
$MDO145  . . . . . . . . . . . .  	L NEAR	02AC	CODE
$MDO165  . . . . . . . . . . . .  	L NEAR	030E	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-11


$MDO167  . . . . . . . . . . . .  	L NEAR	0318	CODE
$MDO175  . . . . . . . . . . . .  	L NEAR	0344	CODE
$MDO215  . . . . . . . . . . . .  	L NEAR	041D	CODE
$MDO219  . . . . . . . . . . . .  	L NEAR	0442	CODE
$MDO259  . . . . . . . . . . . .  	L NEAR	052A	CODE
$MDO280  . . . . . . . . . . . .  	L NEAR	0597	CODE
$MDO291  . . . . . . . . . . . .  	L NEAR	05C2	CODE
$MDO301  . . . . . . . . . . . .  	L NEAR	05F0	CODE
$MDO310  . . . . . . . . . . . .  	L NEAR	0616	CODE
$MDO321  . . . . . . . . . . . .  	L NEAR	0658	CODE
$MEN104  . . . . . . . . . . . .  	L NEAR	01C1	CODE
$MEN107  . . . . . . . . . . . .  	L NEAR	01D6	CODE
$MEN110  . . . . . . . . . . . .  	L NEAR	01F7	CODE
$MEN119  . . . . . . . . . . . .  	L NEAR	022F	CODE
$MEN123  . . . . . . . . . . . .  	L NEAR	022F	CODE
$MEN128  . . . . . . . . . . . .  	L NEAR	025E	CODE
$MEN139  . . . . . . . . . . . .  	L NEAR	02A1	CODE
$MEN145  . . . . . . . . . . . .  	L NEAR	0305	CODE
$MEN146  . . . . . . . . . . . .  	L NEAR	02C2	CODE
$MEN150  . . . . . . . . . . . .  	L NEAR	0300	CODE
$MEN154  . . . . . . . . . . . .  	L NEAR	0300	CODE
$MEN165  . . . . . . . . . . . .  	L NEAR	0408	CODE
$MEN167  . . . . . . . . . . . .  	L NEAR	0335	CODE
$MEN175  . . . . . . . . . . . .  	L NEAR	035D	CODE
$MEN180  . . . . . . . . . . . .  	L NEAR	036F	CODE
$MEN187  . . . . . . . . . . . .  	L NEAR	03A2	CODE
$MEN188  . . . . . . . . . . . .  	L NEAR	0390	CODE
$MEN192  . . . . . . . . . . . .  	L NEAR	03A2	CODE
$MEN199  . . . . . . . . . . . .  	L NEAR	03EF	CODE
$MEN20 . . . . . . . . . . . . .  	L NEAR	00C6	CODE
$MEN200  . . . . . . . . . . . .  	L NEAR	03E7	CODE
$MEN202  . . . . . . . . . . . .  	L NEAR	03E7	CODE
$MEN204  . . . . . . . . . . . .  	L NEAR	03E7	CODE
$MEN211  . . . . . . . . . . . .  	L NEAR	03FC	CODE
$MEN219  . . . . . . . . . . . .  	L NEAR	04A3	CODE
$MEN220  . . . . . . . . . . . .  	L NEAR	0474	CODE
$MEN222  . . . . . . . . . . . .  	L NEAR	0474	CODE
$MEN224  . . . . . . . . . . . .  	L NEAR	0474	CODE
$MEN229  . . . . . . . . . . . .  	L NEAR	049B	CODE
$MEN230  . . . . . . . . . . . .  	L NEAR	048D	CODE
$MEN240  . . . . . . . . . . . .  	L NEAR	04C3	CODE
$MEN243  . . . . . . . . . . . .  	L NEAR	04D0	CODE
$MEN247  . . . . . . . . . . . .  	L NEAR	0527	CODE
$MEN248  . . . . . . . . . . . .  	L NEAR	050B	CODE
$MEN25 . . . . . . . . . . . . .  	L NEAR	017C	CODE
$MEN252  . . . . . . . . . . . .  	L NEAR	0523	CODE
$MEN259  . . . . . . . . . . . .  	L NEAR	0547	CODE
$MEN261  . . . . . . . . . . . .  	L NEAR	053B	CODE
$MEN27 . . . . . . . . . . . . .  	L NEAR	0171	CODE
$MEN292  . . . . . . . . . . . .  	L NEAR	05D5	CODE
$MEN307  . . . . . . . . . . . .  	L NEAR	061E	CODE
$MEN314  . . . . . . . . . . . .  	L NEAR	063E	CODE
$MEN317  . . . . . . . . . . . .  	L NEAR	0665	CODE
$MEN321  . . . . . . . . . . . .  	L NEAR	0663	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-12


$MEN325  . . . . . . . . . . . .  	L NEAR	06F2	CODE
$MEN333  . . . . . . . . . . . .  	L NEAR	06F2	CODE
$MEN367  . . . . . . . . . . . .  	L NEAR	07F0	CODE
$MEN93 . . . . . . . . . . . . .  	L NEAR	01B5	CODE
$MEN94 . . . . . . . . . . . . .  	L NEAR	01A1	CODE
$MEN97 . . . . . . . . . . . . .  	L NEAR	01AF	CODE
$MIF104  . . . . . . . . . . . .  	L NEAR	01BD	CODE
$MIF107  . . . . . . . . . . . .  	L NEAR	01D3	CODE
$MIF110  . . . . . . . . . . . .  	L NEAR	01E7	CODE
$MIF112  . . . . . . . . . . . .  	L NEAR	01F7	CODE
$MIF113  . . . . . . . . . . . .  	L NEAR	01F7	CODE
$MIF117  . . . . . . . . . . . .  	L NEAR	01FC	CODE
$MIF119  . . . . . . . . . . . .  	L NEAR	0220	CODE
$MIF120  . . . . . . . . . . . .  	L NEAR	021E	CODE
$MIF127  . . . . . . . . . . . .  	L NEAR	025F	CODE
$MIF128  . . . . . . . . . . . .  	L NEAR	025C	CODE
$MIF129  . . . . . . . . . . . .  	L NEAR	025A	CODE
$MIF134  . . . . . . . . . . . .  	L NEAR	027F	CODE
$MIF135  . . . . . . . . . . . .  	L NEAR	027F	CODE
$MIF138  . . . . . . . . . . . .  	L NEAR	02A1	CODE
$MIF141  . . . . . . . . . . . .  	L NEAR	029D	CODE
$MIF146  . . . . . . . . . . . .  	L NEAR	02BF	CODE
$MIF150  . . . . . . . . . . . .  	L NEAR	02DE	CODE
$MIF151  . . . . . . . . . . . .  	L NEAR	02DC	CODE
$MIF154  . . . . . . . . . . . .  	L NEAR	02F0	CODE
$MIF155  . . . . . . . . . . . .  	L NEAR	02EE	CODE
$MIF158  . . . . . . . . . . . .  	L NEAR	0300	CODE
$MIF159  . . . . . . . . . . . .  	L NEAR	0300	CODE
$MIF166  . . . . . . . . . . . .  	L NEAR	0335	CODE
$MIF169  . . . . . . . . . . . .  	L NEAR	0330	CODE
$MIF173  . . . . . . . . . . . .  	L NEAR	036F	CODE
$MIF174  . . . . . . . . . . . .  	L NEAR	036F	CODE
$MIF175  . . . . . . . . . . . .  	L NEAR	0351	CODE
$MIF180  . . . . . . . . . . . .  	L NEAR	036C	CODE
$MIF187  . . . . . . . . . . . .  	L NEAR	0392	CODE
$MIF188  . . . . . . . . . . . .  	L NEAR	038F	CODE
$MIF192  . . . . . . . . . . . .  	L NEAR	0399	CODE
$MIF194  . . . . . . . . . . . .  	L NEAR	03A0	CODE
$MIF199  . . . . . . . . . . . .  	L NEAR	03EC	CODE
$MIF20 . . . . . . . . . . . . .  	L NEAR	00C2	CODE
$MIF200  . . . . . . . . . . . .  	L NEAR	03BF	CODE
$MIF202  . . . . . . . . . . . .  	L NEAR	03D9	CODE
$MIF204  . . . . . . . . . . . .  	L NEAR	03E4	CODE
$MIF211  . . . . . . . . . . . .  	L NEAR	03F8	CODE
$MIF216  . . . . . . . . . . . .  	L NEAR	042B	CODE
$MIF220  . . . . . . . . . . . .  	L NEAR	044F	CODE
$MIF222  . . . . . . . . . . . .  	L NEAR	045C	CODE
$MIF224  . . . . . . . . . . . .  	L NEAR	046E	CODE
$MIF229  . . . . . . . . . . . .  	L NEAR	048F	CODE
$MIF23 . . . . . . . . . . . . .  	L NEAR	00DC	CODE
$MIF230  . . . . . . . . . . . .  	L NEAR	0481	CODE
$MIF234  . . . . . . . . . . . .  	L NEAR	0497	CODE
$MIF239  . . . . . . . . . . . .  	L NEAR	04D2	CODE
$MIF240  . . . . . . . . . . . .  	L NEAR	04C2	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-13


$MIF243  . . . . . . . . . . . .  	L NEAR	04CA	CODE
$MIF247  . . . . . . . . . . . .  	L NEAR	050D	CODE
$MIF248  . . . . . . . . . . . .  	L NEAR	0507	CODE
$MIF25 . . . . . . . . . . . . .  	L NEAR	0164	CODE
$MIF252  . . . . . . . . . . . .  	L NEAR	051A	CODE
$MIF254  . . . . . . . . . . . .  	L NEAR	0523	CODE
$MIF258  . . . . . . . . . . . .  	L NEAR	0556	CODE
$MIF259  . . . . . . . . . . . .  	L NEAR	053F	CODE
$MIF261  . . . . . . . . . . . .  	L NEAR	0538	CODE
$MIF269  . . . . . . . . . . . .  	L NEAR	0556	CODE
$MIF27 . . . . . . . . . . . . .  	L NEAR	016E	CODE
$MIF270  . . . . . . . . . . . .  	L NEAR	0552	CODE
$MIF274  . . . . . . . . . . . .  	L NEAR	055E	CODE
$MIF276  . . . . . . . . . . . .  	L NEAR	057D	CODE
$MIF278  . . . . . . . . . . . .  	L NEAR	05AB	CODE
$MIF279  . . . . . . . . . . . .  	L NEAR	05AB	CODE
$MIF281  . . . . . . . . . . . .  	L NEAR	05A7	CODE
$MIF286  . . . . . . . . . . . .  	L NEAR	05BE	CODE
$MIF287  . . . . . . . . . . . .  	L NEAR	05BE	CODE
$MIF290  . . . . . . . . . . . .  	L NEAR	05E6	CODE
$MIF292  . . . . . . . . . . . .  	L NEAR	05D4	CODE
$MIF295  . . . . . . . . . . . .  	L NEAR	05E2	CODE
$MIF299  . . . . . . . . . . . .  	L NEAR	0604	CODE
$MIF300  . . . . . . . . . . . .  	L NEAR	0604	CODE
$MIF302  . . . . . . . . . . . .  	L NEAR	0600	CODE
$MIF307  . . . . . . . . . . . .  	L NEAR	0612	CODE
$MIF309  . . . . . . . . . . . .  	L NEAR	061E	CODE
$MIF314  . . . . . . . . . . . .  	L NEAR	063A	CODE
$MIF317  . . . . . . . . . . . .  	L NEAR	0658	CODE
$MIF318  . . . . . . . . . . . .  	L NEAR	0656	CODE
$MIF325  . . . . . . . . . . . .  	L NEAR	069E	CODE
$MIF326  . . . . . . . . . . . .  	L NEAR	0690	CODE
$MIF327  . . . . . . . . . . . .  	L NEAR	068A	CODE
$MIF330  . . . . . . . . . . . .  	L NEAR	069C	CODE
$MIF333  . . . . . . . . . . . .  	L NEAR	06CA	CODE
$MIF334  . . . . . . . . . . . .  	L NEAR	06BC	CODE
$MIF335  . . . . . . . . . . . .  	L NEAR	06B6	CODE
$MIF338  . . . . . . . . . . . .  	L NEAR	06C8	CODE
$MIF341  . . . . . . . . . . . .  	L NEAR	06E6	CODE
$MIF342  . . . . . . . . . . . .  	L NEAR	06E0	CODE
$MIF345  . . . . . . . . . . . .  	L NEAR	06F2	CODE
$MIF349  . . . . . . . . . . . .  	L NEAR	06FE	CODE
$MIF351  . . . . . . . . . . . .  	L NEAR	0733	CODE
$MIF353  . . . . . . . . . . . .  	L NEAR	0758	CODE
$MIF355  . . . . . . . . . . . .  	L NEAR	077B	CODE
$MIF357  . . . . . . . . . . . .  	L NEAR	0794	CODE
$MIF359  . . . . . . . . . . . .  	L NEAR	07A6	CODE
$MIF360  . . . . . . . . . . . .  	L NEAR	07A6	CODE
$MIF363  . . . . . . . . . . . .  	L NEAR	07BE	CODE
$MIF365  . . . . . . . . . . . .  	L NEAR	07F0	CODE
$MIF366  . . . . . . . . . . . .  	L NEAR	07F0	CODE
$MIF367  . . . . . . . . . . . .  	L NEAR	07EC	CODE
$MIF372  . . . . . . . . . . . .  	L NEAR	0805	CODE
$MIF374  . . . . . . . . . . . .  	L NEAR	081C	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-14


$MIF376  . . . . . . . . . . . .  	L NEAR	0843	CODE
$MIF377  . . . . . . . . . . . .  	L NEAR	0843	CODE
$MIF378  . . . . . . . . . . . .  	L NEAR	083D	CODE
$MIF380  . . . . . . . . . . . .  	L NEAR	0843	CODE
$MIF384  . . . . . . . . . . . .  	L NEAR	0864	CODE
$MIF386  . . . . . . . . . . . .  	L NEAR	087C	CODE
$MIF93 . . . . . . . . . . . . .  	L NEAR	01B1	CODE
$MIF94 . . . . . . . . . . . . .  	L NEAR	019E	CODE
$MIF97 . . . . . . . . . . . . .  	L NEAR	01AB	CODE
$MLL149  . . . . . . . . . . . .  	L NEAR	02CC	CODE
$MLL168  . . . . . . . . . . . .  	L NEAR	0327	CODE
$MLL178  . . . . . . . . . . . .  	L NEAR	0359	CODE
$MLL202  . . . . . . . . . . . .  	L NEAR	03D1	CODE
$MLL214  . . . . . . . . . . . .  	L NEAR	0408	CODE
$MLL367  . . . . . . . . . . . .  	L NEAR	07E6	CODE
$MLL374  . . . . . . . . . . . .  	L NEAR	0811	CODE
$MSR175  . . . . . . . . . . . .  	L NEAR	036F	CODE
$MSR259  . . . . . . . . . . . .  	L NEAR	0548	CODE
$MXL3  . . . . . . . . . . . . .  	L NEAR	037C	CODE
$MXL4  . . . . . . . . . . . . .  	L NEAR	0408	CODE
$MXL5  . . . . . . . . . . . . .  	L NEAR	04A3	CODE
$M_1_FF_END  . . . . . . . . . .  	L BYTE	127B	CODE
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	1269	CODE
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	1265	CODE
$M_2_FF_END  . . . . . . . . . .  	L BYTE	129C	CODE
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	128D	CODE
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	1289	CODE
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	0269	CODE	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	08EA	CODE
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	08D2	CODE
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	0886	CODE
$M_A_00002H_END  . . . . . . . .  	L BYTE	0901	CODE
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	08EA	CODE
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	088A	CODE
$M_A_00003H_END  . . . . . . . .  	L BYTE	0925	CODE
$M_A_00003H_MSG  . . . . . . . .  	L BYTE	0901	CODE
$M_A_00003H_STRUC  . . . . . . .  	L BYTE	088E	CODE
$M_A_00004H_END  . . . . . . . .  	L BYTE	0946	CODE
$M_A_00004H_MSG  . . . . . . . .  	L BYTE	0925	CODE
$M_A_00004H_STRUC  . . . . . . .  	L BYTE	0892	CODE
$M_A_00005H_END  . . . . . . . .  	L BYTE	0967	CODE
$M_A_00005H_MSG  . . . . . . . .  	L BYTE	0946	CODE
$M_A_00005H_STRUC  . . . . . . .  	L BYTE	0896	CODE
$M_A_00007H_END  . . . . . . . .  	L BYTE	0981	CODE
$M_A_00007H_MSG  . . . . . . . .  	L BYTE	0967	CODE
$M_A_00007H_STRUC  . . . . . . .  	L BYTE	089A	CODE
$M_A_00008H_END  . . . . . . . .  	L BYTE	0999	CODE
$M_A_00008H_MSG  . . . . . . . .  	L BYTE	0981	CODE
$M_A_00008H_STRUC  . . . . . . .  	L BYTE	089E	CODE
$M_A_00009H_END  . . . . . . . .  	L BYTE	09B5	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-15


$M_A_00009H_MSG  . . . . . . . .  	L BYTE	0999	CODE
$M_A_00009H_STRUC  . . . . . . .  	L BYTE	08A2	CODE
$M_A_0000AH_END  . . . . . . . .  	L BYTE	09D0	CODE
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	09B5	CODE
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	08A6	CODE
$M_A_0000BH_END  . . . . . . . .  	L BYTE	09EA	CODE
$M_A_0000BH_MSG  . . . . . . . .  	L BYTE	09D0	CODE
$M_A_0000BH_STRUC  . . . . . . .  	L BYTE	08AA	CODE
$M_A_0000CH_END  . . . . . . . .  	L BYTE	0A09	CODE
$M_A_0000CH_MSG  . . . . . . . .  	L BYTE	09EA	CODE
$M_A_0000CH_STRUC  . . . . . . .  	L BYTE	08AE	CODE
$M_A_0000DH_END  . . . . . . . .  	L BYTE	0A31	CODE
$M_A_0000DH_MSG  . . . . . . . .  	L BYTE	0A09	CODE
$M_A_0000DH_STRUC  . . . . . . .  	L BYTE	08B2	CODE
$M_A_0000EH_END  . . . . . . . .  	L BYTE	0A4C	CODE
$M_A_0000EH_MSG  . . . . . . . .  	L BYTE	0A31	CODE
$M_A_0000EH_STRUC  . . . . . . .  	L BYTE	08B6	CODE
$M_A_0000FH_END  . . . . . . . .  	L BYTE	0A62	CODE
$M_A_0000FH_MSG  . . . . . . . .  	L BYTE	0A4C	CODE
$M_A_0000FH_STRUC  . . . . . . .  	L BYTE	08BA	CODE
$M_A_00010H_END  . . . . . . . .  	L BYTE	0A70	CODE
$M_A_00010H_MSG  . . . . . . . .  	L BYTE	0A62	CODE
$M_A_00010H_STRUC  . . . . . . .  	L BYTE	08BE	CODE
$M_A_00011H_END  . . . . . . . .  	L BYTE	0A8E	CODE
$M_A_00011H_MSG  . . . . . . . .  	L BYTE	0A70	CODE
$M_A_00011H_STRUC  . . . . . . .  	L BYTE	08C2	CODE
$M_A_00012H_END  . . . . . . . .  	L BYTE	0AB8	CODE
$M_A_00012H_MSG  . . . . . . . .  	L BYTE	0A8E	CODE
$M_A_00012H_STRUC  . . . . . . .  	L BYTE	08C6	CODE
$M_A_00013H_END  . . . . . . . .  	L BYTE	0ADF	CODE
$M_A_00013H_MSG  . . . . . . . .  	L BYTE	0AB8	CODE
$M_A_00013H_STRUC  . . . . . . .  	L BYTE	08CA	CODE
$M_A_00014H_END  . . . . . . . .  	L BYTE	0AFB	CODE
$M_A_00014H_MSG  . . . . . . . .  	L BYTE	0ADF	CODE
$M_A_00014H_STRUC  . . . . . . .  	L BYTE	08CE	CODE
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	0667	CODE	Length = 0099
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_B_00002H_END  . . . . . . . .  	L BYTE	0C5F	CODE
$M_B_00002H_MSG  . . . . . . . .  	L BYTE	0C48	CODE
$M_B_00002H_STRUC  . . . . . . .  	L BYTE	0B22	CODE
$M_B_00015H_END  . . . . . . . .  	L BYTE	0B63	CODE
$M_B_00015H_MSG  . . . . . . . .  	L BYTE	0B56	CODE
$M_B_00015H_STRUC  . . . . . . .  	L BYTE	0B0A	CODE
$M_B_00016H_END  . . . . . . . .  	L BYTE	0B88	CODE
$M_B_00016H_MSG  . . . . . . . .  	L BYTE	0B63	CODE
$M_B_00016H_STRUC  . . . . . . .  	L BYTE	0B0E	CODE
$M_B_00017H_END  . . . . . . . .  	L BYTE	0BAD	CODE
$M_B_00017H_MSG  . . . . . . . .  	L BYTE	0B88	CODE
$M_B_00017H_STRUC  . . . . . . .  	L BYTE	0B12	CODE
$M_B_00018H_END  . . . . . . . .  	L BYTE	0BFE	CODE
$M_B_00018H_MSG  . . . . . . . .  	L BYTE	0BAD	CODE
$M_B_00018H_STRUC  . . . . . . .  	L BYTE	0B16	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-16


$M_B_00019H_END  . . . . . . . .  	L BYTE	0C21	CODE
$M_B_00019H_MSG  . . . . . . . .  	L BYTE	0BFE	CODE
$M_B_00019H_STRUC  . . . . . . .  	L BYTE	0B1A	CODE
$M_B_0001AH_END  . . . . . . . .  	L BYTE	0C48	CODE
$M_B_0001AH_MSG  . . . . . . . .  	L BYTE	0C21	CODE
$M_B_0001AH_STRUC  . . . . . . .  	L BYTE	0B1E	CODE
$M_B_0001DH_END  . . . . . . . .  	L BYTE	0C8B	CODE
$M_B_0001DH_MSG  . . . . . . . .  	L BYTE	0C5F	CODE
$M_B_0001DH_STRUC  . . . . . . .  	L BYTE	0B26	CODE
$M_B_0001EH_END  . . . . . . . .  	L BYTE	0CBA	CODE
$M_B_0001EH_MSG  . . . . . . . .  	L BYTE	0C8B	CODE
$M_B_0001EH_STRUC  . . . . . . .  	L BYTE	0B2A	CODE
$M_B_0001FH_END  . . . . . . . .  	L BYTE	0CD9	CODE
$M_B_0001FH_MSG  . . . . . . . .  	L BYTE	0CBA	CODE
$M_B_0001FH_STRUC  . . . . . . .  	L BYTE	0B2E	CODE
$M_B_00020H_END  . . . . . . . .  	L BYTE	0CEB	CODE
$M_B_00020H_MSG  . . . . . . . .  	L BYTE	0CD9	CODE
$M_B_00020H_STRUC  . . . . . . .  	L BYTE	0B32	CODE
$M_B_00021H_END  . . . . . . . .  	L BYTE	0D20	CODE
$M_B_00021H_MSG  . . . . . . . .  	L BYTE	0CEB	CODE
$M_B_00021H_STRUC  . . . . . . .  	L BYTE	0B36	CODE
$M_B_00022H_END  . . . . . . . .  	L BYTE	0D43	CODE
$M_B_00022H_MSG  . . . . . . . .  	L BYTE	0D20	CODE
$M_B_00022H_STRUC  . . . . . . .  	L BYTE	0B3A	CODE
$M_B_00023H_END  . . . . . . . .  	L BYTE	0D74	CODE
$M_B_00023H_MSG  . . . . . . . .  	L BYTE	0D43	CODE
$M_B_00023H_STRUC  . . . . . . .  	L BYTE	0B3E	CODE
$M_B_00024H_END  . . . . . . . .  	L BYTE	0D9E	CODE
$M_B_00024H_MSG  . . . . . . . .  	L BYTE	0D74	CODE
$M_B_00024H_STRUC  . . . . . . .  	L BYTE	0B42	CODE
$M_B_00025H_END  . . . . . . . .  	L BYTE	0DB5	CODE
$M_B_00025H_MSG  . . . . . . . .  	L BYTE	0D9E	CODE
$M_B_00025H_STRUC  . . . . . . .  	L BYTE	0B46	CODE
$M_B_00026H_END  . . . . . . . .  	L BYTE	0DD0	CODE
$M_B_00026H_MSG  . . . . . . . .  	L BYTE	0DB5	CODE
$M_B_00026H_STRUC  . . . . . . .  	L BYTE	0B4A	CODE
$M_B_00027H_END  . . . . . . . .  	L BYTE	0DE8	CODE
$M_B_00027H_MSG  . . . . . . . .  	L BYTE	0DD0	CODE
$M_B_00027H_STRUC  . . . . . . .  	L BYTE	0B4E	CODE
$M_B_00028H_END  . . . . . . . .  	L BYTE	0E05	CODE
$M_B_00028H_MSG  . . . . . . . .  	L BYTE	0DE8	CODE
$M_B_00028H_STRUC  . . . . . . .  	L BYTE	0B52	CODE
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	063F	CODE	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	00DF	CODE	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	00F2	CODE	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	1261	CODE
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	1285	CODE
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	0882	CODE
$M_CLASS_B_STRUC . . . . . . . .  	L BYTE	0B06	CODE
$M_CLASS_C_STRUC . . . . . . . .  	L BYTE	0E10	CODE
$M_CLASS_D_STRUC . . . . . . . .  	L BYTE	10CB	CODE
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-17


$M_CLS_1 . . . . . . . . . . . .  	N PROC	0AFB	CODE	Global	Length = 000B
$M_CLS_2 . . . . . . . . . . . .  	N PROC	0E05	CODE	Global	Length = 000B
$M_CLS_3 . . . . . . . . . . . .  	N PROC	10C0	CODE	Global	Length = 000B
$M_CLS_4 . . . . . . . . . . . .  	N PROC	1256	CODE	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	02A4	CODE	Length = 006A
$M_CONVERTDATE . . . . . . . . .  	N PROC	07A7	CODE	Length = 001D
$M_CONVERTTIME . . . . . . . . .  	N PROC	0865	CODE	Length = 001D
$M_CON_INP . . . . . . . . . . .  	NUMBER	-0001	
$M_COUNT . . . . . . . . . . . .  	NUMBER	0004	
$M_CRIT_ERR_MASK . . . . . . . .  	NUMBER	0001	
$M_CRIT_HI . . . . . . . . . . .  	NUMBER	0027	
$M_CRIT_LO . . . . . . . . . . .  	NUMBER	0013	
$M_CRLF_SIZE . . . . . . . . . .  	NUMBER	0002	
$M_CR_LF . . . . . . . . . . . .  	NUMBER	0A0D	
$M_C_00029H_END  . . . . . . . .  	L BYTE	0E74	CODE
$M_C_00029H_MSG  . . . . . . . .  	L BYTE	0E5C	CODE
$M_C_00029H_STRUC  . . . . . . .  	L BYTE	0E14	CODE
$M_C_0002AH_END  . . . . . . . .  	L BYTE	0E9D	CODE
$M_C_0002AH_MSG  . . . . . . . .  	L BYTE	0E74	CODE
$M_C_0002AH_STRUC  . . . . . . .  	L BYTE	0E18	CODE
$M_C_0002BH_END  . . . . . . . .  	L BYTE	0ED8	CODE
$M_C_0002BH_MSG  . . . . . . . .  	L BYTE	0E9D	CODE
$M_C_0002BH_STRUC  . . . . . . .  	L BYTE	0E1C	CODE
$M_C_0002CH_END  . . . . . . . .  	L BYTE	0EFE	CODE
$M_C_0002CH_MSG  . . . . . . . .  	L BYTE	0ED8	CODE
$M_C_0002CH_STRUC  . . . . . . .  	L BYTE	0E20	CODE
$M_C_0002DH_END  . . . . . . . .  	L BYTE	0F18	CODE
$M_C_0002DH_MSG  . . . . . . . .  	L BYTE	0EFE	CODE
$M_C_0002DH_STRUC  . . . . . . .  	L BYTE	0E24	CODE
$M_C_0002EH_END  . . . . . . . .  	L BYTE	0F3B	CODE
$M_C_0002EH_MSG  . . . . . . . .  	L BYTE	0F18	CODE
$M_C_0002EH_STRUC  . . . . . . .  	L BYTE	0E28	CODE
$M_C_0002FH_END  . . . . . . . .  	L BYTE	0F55	CODE
$M_C_0002FH_MSG  . . . . . . . .  	L BYTE	0F3B	CODE
$M_C_0002FH_STRUC  . . . . . . .  	L BYTE	0E2C	CODE
$M_C_00030H_END  . . . . . . . .  	L BYTE	0F77	CODE
$M_C_00030H_MSG  . . . . . . . .  	L BYTE	0F55	CODE
$M_C_00030H_STRUC  . . . . . . .  	L BYTE	0E30	CODE
$M_C_00031H_END  . . . . . . . .  	L BYTE	0F98	CODE
$M_C_00031H_MSG  . . . . . . . .  	L BYTE	0F77	CODE
$M_C_00031H_STRUC  . . . . . . .  	L BYTE	0E34	CODE
$M_C_00033H_END  . . . . . . . .  	L BYTE	0FE2	CODE
$M_C_00033H_MSG  . . . . . . . .  	L BYTE	0F98	CODE
$M_C_00033H_STRUC  . . . . . . .  	L BYTE	0E38	CODE
$M_C_00034H_END  . . . . . . . .  	L BYTE	1021	CODE
$M_C_00034H_MSG  . . . . . . . .  	L BYTE	0FE2	CODE
$M_C_00034H_STRUC  . . . . . . .  	L BYTE	0E3C	CODE
$M_C_00035H_END  . . . . . . . .  	L BYTE	1033	CODE
$M_C_00035H_MSG  . . . . . . . .  	L BYTE	1021	CODE
$M_C_00035H_STRUC  . . . . . . .  	L BYTE	0E40	CODE
$M_C_00036H_END  . . . . . . . .  	L BYTE	1051	CODE
$M_C_00036H_MSG  . . . . . . . .  	L BYTE	1033	CODE
$M_C_00036H_STRUC  . . . . . . .  	L BYTE	0E44	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-18


$M_C_00037H_END  . . . . . . . .  	L BYTE	1062	CODE
$M_C_00037H_MSG  . . . . . . . .  	L BYTE	1051	CODE
$M_C_00037H_STRUC  . . . . . . .  	L BYTE	0E48	CODE
$M_C_00038H_END  . . . . . . . .  	L BYTE	1073	CODE
$M_C_00038H_MSG  . . . . . . . .  	L BYTE	1062	CODE
$M_C_00038H_STRUC  . . . . . . .  	L BYTE	0E4C	CODE
$M_C_0003AH_END  . . . . . . . .  	L BYTE	10A3	CODE
$M_C_0003AH_MSG  . . . . . . . .  	L BYTE	1073	CODE
$M_C_0003AH_STRUC  . . . . . . .  	L BYTE	0E50	CODE
$M_C_0003BH_END  . . . . . . . .  	L BYTE	10A6	CODE
$M_C_0003BH_MSG  . . . . . . . .  	L BYTE	10A3	CODE
$M_C_0003BH_STRUC  . . . . . . .  	L BYTE	0E54	CODE
$M_C_0003CH_END  . . . . . . . .  	L BYTE	10C0	CODE
$M_C_0003CH_MSG  . . . . . . . .  	L BYTE	10A6	CODE
$M_C_0003CH_STRUC  . . . . . . .  	L BYTE	0E58	CODE
$M_DATE_MASK . . . . . . . . . .  	NUMBER	0010	
$M_DATE_REPLACE  . . . . . . . .  	N PROC	0700	CODE	Length = 007D
$M_DBCS_TERM . . . . . . . . . .  	NUMBER	0000	
$M_DCOUNT  . . . . . . . . . . .  	NUMBER	0004	
$M_DEF_DATE_FORM . . . . . . . .  	NUMBER	0000	
$M_DEF_DATE_SEP  . . . . . . . .  	NUMBER	002D	
$M_DEF_DECI_SEP  . . . . . . . .  	NUMBER	002E	
$M_DEF_TIME_FORM . . . . . . . .  	NUMBER	0001	
$M_DEF_TIME_SEP  . . . . . . . .  	NUMBER	003A	
$M_DISPLAY_$_STRING  . . . . . .  	N PROC	01FD	CODE	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	0232	CODE	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	030E	CODE	Length = 0101
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	0564	CODE	Length = 00BF
$M_DISPLAY_STRING  . . . . . . .  	N PROC	01C2	CODE	Length = 003B
$M_DWORD . . . . . . . . . . . .  	NUMBER	0030	
$M_D_0003DH_END  . . . . . . . .  	L BYTE	1124	CODE
$M_D_0003DH_MSG  . . . . . . . .  	L BYTE	1107	CODE
$M_D_0003DH_STRUC  . . . . . . .  	L BYTE	10CF	CODE
$M_D_0003EH_END  . . . . . . . .  	L BYTE	112F	CODE
$M_D_0003EH_MSG  . . . . . . . .  	L BYTE	1124	CODE
$M_D_0003EH_STRUC  . . . . . . .  	L BYTE	10D3	CODE
$M_D_0003FH_END  . . . . . . . .  	L BYTE	1149	CODE
$M_D_0003FH_MSG  . . . . . . . .  	L BYTE	112F	CODE
$M_D_0003FH_STRUC  . . . . . . .  	L BYTE	10D7	CODE
$M_D_00040H_END  . . . . . . . .  	L BYTE	114E	CODE
$M_D_00040H_MSG  . . . . . . . .  	L BYTE	1149	CODE
$M_D_00040H_STRUC  . . . . . . .  	L BYTE	10DB	CODE
$M_D_00041H_END  . . . . . . . .  	L BYTE	11AA	CODE
$M_D_00041H_MSG  . . . . . . . .  	L BYTE	114E	CODE
$M_D_00041H_STRUC  . . . . . . .  	L BYTE	10DF	CODE
$M_D_00042H_END  . . . . . . . .  	L BYTE	11B3	CODE
$M_D_00042H_MSG  . . . . . . . .  	L BYTE	11AA	CODE
$M_D_00042H_STRUC  . . . . . . .  	L BYTE	10E3	CODE
$M_D_00043H_END  . . . . . . . .  	L BYTE	11BD	CODE
$M_D_00043H_MSG  . . . . . . . .  	L BYTE	11B3	CODE
$M_D_00043H_STRUC  . . . . . . .  	L BYTE	10E7	CODE
$M_D_00044H_END  . . . . . . . .  	L BYTE	11C8	CODE
$M_D_00044H_MSG  . . . . . . . .  	L BYTE	11BD	CODE
$M_D_00044H_STRUC  . . . . . . .  	L BYTE	10EB	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-19


$M_D_00045H_END  . . . . . . . .  	L BYTE	11D1	CODE
$M_D_00045H_MSG  . . . . . . . .  	L BYTE	11C8	CODE
$M_D_00045H_STRUC  . . . . . . .  	L BYTE	10EF	CODE
$M_D_00046H_END  . . . . . . . .  	L BYTE	11F7	CODE
$M_D_00046H_MSG  . . . . . . . .  	L BYTE	11D1	CODE
$M_D_00046H_STRUC  . . . . . . .  	L BYTE	10F3	CODE
$M_D_00047H_END  . . . . . . . .  	L BYTE	1217	CODE
$M_D_00047H_MSG  . . . . . . . .  	L BYTE	11F7	CODE
$M_D_00047H_STRUC  . . . . . . .  	L BYTE	10F7	CODE
$M_D_00048H_END  . . . . . . . .  	L BYTE	122D	CODE
$M_D_00048H_MSG  . . . . . . . .  	L BYTE	1217	CODE
$M_D_00048H_STRUC  . . . . . . .  	L BYTE	10FB	CODE
$M_D_00049H_END  . . . . . . . .  	L BYTE	1242	CODE
$M_D_00049H_MSG  . . . . . . . .  	L BYTE	122D	CODE
$M_D_00049H_STRUC  . . . . . . .  	L BYTE	10FF	CODE
$M_D_0004AH_END  . . . . . . . .  	L BYTE	1256	CODE
$M_D_0004AH_MSG  . . . . . . . .  	L BYTE	1242	CODE
$M_D_0004AH_STRUC  . . . . . . .  	L BYTE	1103	CODE
$M_END . . . . . . . . . . . . .  	NUMBER	0000	
$M_EXTPAR_TYPE . . . . . . . . .  	NUMBER	0008	
$M_EXT_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_EXT_ERR_FLAG  . . . . . . . .  	NUMBER	FFFF	
$M_EXT_PAR_REPLACE . . . . . . .  	N PROC	040F	CODE	Length = 002D
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	04EB	CODE	Length = 0079
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0623	CODE	Length = 001C
$M_GET_DATE  . . . . . . . . . .  	N PROC	077D	CODE	Length = 0018
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	00C7	CODE	Length = 0018
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	0260	CODE	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	N PROC	043C	CODE	Global	Length = 00A0
$M_GET_TIME  . . . . . . . . . .  	N PROC	0848	CODE	Length = 001D
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	FFFF	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0010	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	0280	CODE	Length = 0024
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	N PROC	127B	CODE	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	N PROC	129C	CODE	Global	Length = 000A
$M_NEG_SIGN  . . . . . . . . . .  	NUMBER	002D	
$M_NEXT_DBCS_VECTOR  . . . . . .  	NUMBER	0002	
$M_NO_CRLF_MASK  . . . . . . . .  	NUMBER	0080	
$M_NO_HANDLE . . . . . . . . . .  	NUMBER	-0001	
$M_NULL  . . . . . . . . . . . .  	NUMBER	0000	
$M_NUM_CLS . . . . . . . . . . .  	NUMBER	0004	
$M_ONE_REPLACE . . . . . . . . .  	NUMBER	0001	
$M_PARSE_FLAG  . . . . . . . . .  	NUMBER	FFFF	
$M_PAR_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_PM  . . . . . . . . . . . . .  	NUMBER	0070	
$M_REPLACE . . . . . . . . . . .  	NUMBER	FFFF	
$M_REPL_DONE . . . . . . . . . .  	NUMBER	0000	
$M_RES_ADDRS_SZ  . . . . . . . .  	NUMBER	0091	
$M_RT  . . . . . . . . . . . . .  	L BYTE	0472	DATA	Global
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:01
                                                             Symbols-20


$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	0000	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	04DC	CODE	Length = 000F
$M_SINGLE_CHAR . . . . . . . . .  	NUMBER	0001	
$M_SIZE_MASK . . . . . . . . . .  	NUMBER	0030	
$M_SL  . . . . . . . . . . . . .  	TEXT  DS:[SI]		
$M_SPACE . . . . . . . . . . . .  	NUMBER	0020	
$M_SPACE_HYP . . . . . . . . . .  	NUMBER	2D20	
$M_SPECIAL_CASE  . . . . . . . .  	NUMBER	0030	
$M_SPECIAL_MSG_NUM . . . . . . .  	NUMBER	FFFF	
$M_STRUC . . . . . . . . . . . .  	NUMBER	0000	
$M_SUBS  . . . . . . . . . . . .  	NUMBER	0000	
$M_TEMP_BUF_SZ . . . . . . . . .  	NUMBER	0040	
$M_TERMINATING_FLAG  . . . . . .  	NUMBER	-0001	
$M_THIRD_THOU  . . . . . . . . .  	NUMBER	0009	
$M_TIMEDATE_PAD  . . . . . . . .  	NUMBER	0030	
$M_TIME_MASK . . . . . . . . . .  	NUMBER	0001	
$M_TIME_REPLACE  . . . . . . . .  	N PROC	07C4	CODE	Length = 0084
$M_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	014E	CODE	Length = 002F
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
$M_YEAR  . . . . . . . . . . . .  	N PROC	0795	CODE	Length = 0012
??0000 . . . . . . . . . . . . .  	L NEAR	04D4	CODE
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  chkdisp		
@VERSION . . . . . . . . . . . .  	TEXT  510		


  18995 Source  Lines
  26728 Total   Lines
   1014 Symbols

  42052 + 177041 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
