]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/INC/SYSMSG.INC

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / INC / SYSMSG.INC
1 PAGE ,132
2 SUBTTL DOS - Message Retriever - SYSTEM CONTROL file
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4 ;; DOS -- Message Retriever
5 ;; (c) Copyright 1988 Microsoft
6 ;;
7 ;; File Name: SYSMSG.INC
8 ;; ----------
9 ;;
10 ;; Description: Message retriever functions are included into source code
11 ;; ------------ by referencing a MSG_SERVICES macro. That macro is defined
12 ;; here as well as the logic to include necessary .ASM and .INC
13 ;; files.
14 ;;
15 ;;
16 ;; Documentation Reference:
17 ;; ------------------------
18 ;; DOS -Message Retriever I0 Document - Feb. ?? 1987
19 ;; DOS -Message Retriever I1 Document - Mar. ?? 1987
20 ;; DOS -Message Retriever I2 Document - Mar. ?? 1987
21 ;; DOS -Final Functional Specification Document - Mar ?? 1987
22 ;;
23 ;; Procedures Contained in This File:
24 ;; ---------------------------------
25 ;; None
26 ;;
27 ;; Include Files Required:
28 ;; -----------------------
29 ;; MSGSERV.INC := All message services
30 ;; ???? := ????
31 ;;
32 ;; External Procedure References:
33 ;; ------------------------------
34 ;; None
35 ;;
36 ;; Linkage Instructions:
37 ;; --------------------
38 ;; None
39 ;;
40 ;; Change History:
41 ;; ---------------
42 ;; CREATED March, 1987 RPS
43 ;;
44 ;; Psuedocode:
45 ;; -----------
46 ;; None
47 ;;
48 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
49 ;;
50 INCLUDE VERSIONA.INC ;;AN003;;
51
52 FALSE = 0 ;;
53 TRUE = NOT FALSE ;; List message services and flags
54 ;;
55
56 ; Control Characters For Message Skeleton file
57
58 NULL EQU 00H ;; Null
59 BELL EQU 07H ;; Bell
60 TAB EQU 09H ;; Tab
61 LF EQU 0AH ;; Line Feed
62 HOME EQU 0BH ;; Home
63 FORMFD EQU 0CH ;; Form Feed
64 CR EQU 0DH ;; Carriage Return
65 COLON EQU 3AH ;; Colon
66
67 ; SYSDISPMSG and SYSGETMSG Equates
68
69 MSG_SER_CLASS EQU 00H ;; Message Service Class (reserved)
70 EXT_ERR_CLASS EQU 01H ;; DOS Extended error class
71 PARSE_ERR_CLASS EQU 02H ;; Parse error class
72 UTILITY_MSG_CLASS EQU 0FFH ;; Utility message class
73
74 NO_HANDLE EQU 0FFFFH ;; No handle specified (Use DOS functions 01H-09H only)
75
76 NO_REPLACE EQU 0000H ;; No replacable parameters
77
78 ; SUBLIST Equates
79
80 Sublist_Length EQU 11 ;; Length of sublist structure
81 Reserved EQU 0 ;; Reserved byte field
82
83 Left_Align EQU 0 ;;00xxxxxx
84 Right_Align EQU 80h ;;10xxxxxx
85
86 Char_type EQU 0 ;;axxx0000 - Character type
87 Char_Field_Char EQU 0 ;;a0000000
88 Char_Field_ASCIIZ EQU 10h ;;a0010000
89
90 Unsgn_Bin_Type EQU 01h ;;axxx0001 - Unsigned Binary to Decimal character
91 Unsgn_Bin_Byte EQU 11h ;;a0010001
92 Unsgn_Bin_Word EQU 21h ;;a0100001
93 Unsgn_Bin_DWord EQU 31h ;;a0110001
94
95 Sgn_Bin_Type EQU 02h ;;axxx0010 - Signed Binary to Decimal character
96 Sgn_Bin_Byte EQU 12h ;;a0010010
97 Sgn_Bin_Word EQU 22h ;;a0100010
98 Sgn_Bin_DWord EQU 32h ;;a0110010
99
100 Bin_Hex_Type EQU 03h ;;axxx0011 - Unsigned Binary to Hexidecimal character
101 Bin_Hex_Byte EQU 13h ;;a0010011
102 Bin_Hex_Word EQU 23h ;;a0100011
103 Bin_Hex_DWord EQU 33h ;;a0110011
104
105 Date_Type EQU 04h ;;axxx0100 - Date to character using current country format
106 Date_MD EQU 14h ;;a0010100
107 Date_MDY_2 EQU 24h ;;a0100100
108 Date_MDY_4 EQU 34h ;;a0110100
109
110 Time_Cty_Type EQU 05h ;;axxx0101 - Time to character using current country format
111 Time_HHMM_Cty EQU 05h ;;a0000101
112 Time_HHMMSS_Cty EQU 15h ;;a0010101
113 Time_HHMMSSHH_Cty EQU 25h ;;a0100101
114
115 Time_24_Type EQU 06h ;;axxx0110 - Time to character using 24 hour format
116 Time_HHMM_24 EQU 06h ;;a0000110
117 Time_HHMMSS_24 EQU 16h ;;a0010110
118 Time_HHMMSSHH_24 EQU 26h ;;a0100110
119
120 $M_EXTPAR_Type EQU 08h ;;axxx1000 - Special case for extended parse replace format
121
122 NO_INPUT EQU 00H ;; No input characters
123 DOS_KEYB_INP EQU 01H ;; DOS INT 21H - AH=01H := Keyboard Input
124 DOS_DIR_CON_INP EQU 07H ;; DOS INT 21H - AH=07H := Direct Console Input Without Echo
125 DOS_CON_INP EQU 08H ;; DOS INT 21H - AH=08H := Console Input Without Echo (Check CTL-BK)
126 DOS_BUF_KEYB_INP EQU 0AH ;; DOS INT 21H - AH=0AH := Buffered Keyboard Input
127 DOS_CLR_KEYB_BUF EQU 0CH ;; DOS INT 21H - AH=0CH := Clear keyboard buffer
128 DOS_WRITE_HANDLE EQU 40H ;; DOS INT 21H - AH=40H := Write to a DOS handle
129 DOS_DISP_STRING EQU 09H ;; DOS INT 21H - AH=09H := Display $ terminated string
130 DOS_DISP_CHAR EQU 02H ;; DOS INT 21H - AH=02H := Display Character
131 LOWEST_4CH_VERSION EQU 0002H ;; First DOS version to allow AH = 4CH Exit (VERSION 2.00)
132
133 DOS_GET_DBCS_INFO EQU 6300H ;; DOS INT 21H - AX=6507H := Get DBCS Vector Table
134 DOS_GET_EXT_ERROR EQU 59H ;; DOS INT 21H - AH=59H := Get Extended Error
135 DOS_GET_EXT_ERROR_BX EQU 00H ;; DOS INT 21H - BX=0000H := Version 0
136
137 DOS_EXTENDED_OPEN EQU 6C00H ;AN003; DOS INT 21H - AX=6C00H := Extended Open
138 NO_CRIT_OPEN EQU 2000H ;AN003; Extended Open Mode bit
139 NOT_EX_FAIL_EX_OPEN EQU 0101H ;AN003; Extended Open Flag
140 DOS_LSEEK_FILE EQU 4200H ;AN003; DOS INT 21H - AX=4200H := LSEEK file
141 DOS_READ_BYTE EQU 3FH ;AN003; DOS INT 21H - AH=3FH := Read byte block
142 DOS_CLOSE_FILE EQU 3EH ;AN003; DOS INT 21H - AH=3EH := Close file handle
143
144 IFSFUNC_INSTALL_CHECK EQU 0500H ;AN006; IFSFUNC Installation Check
145 IFS_GET_ERR_TEXT EQU 0502H ;AN006; IFSFUNC Get Extended Error Text
146 IFSFUNC_INSTALLED EQU 0FFH ;AN006; Return code if IFSFUNC is installed
147
148 EXT_ERR_39 EQU 39 ;; Insufficent Disk Space EXTENDED ERROR (changed from hex to decimal - eg d201)
149 ERROR_CLASS_39 EQU 01H ;; Error Class = 1
150 ACTION_39 EQU 04H ;; Suggested Action = 4
151 LOCUS_39 EQU 01H ;; Locus = 1
152
153 DOS_GET_COUNTRY EQU 38H ;; DOS INT 21H - AH=38H := Get Country Dependant Information
154 DOS_GET_VERSION EQU 30H ;; DOS INT 21H - AH=30H := Get DOS Version number
155 DOS_IOCTL_GET_INFO EQU 4400H ;; DOS INT 21H - AH=4400H := I/O control for devices
156 DOS_IOCTL_SET_INFO EQU 4401H ;; DOS INT 21H - AH=4401H := I/O control for devices
157 DOS_GET_EXT_PARSE_ADD EQU 122EH ;; DOS INT 2FH - AX=122EH := Get Extended/Parse error address
158 DOS_GET_EXTENDED EQU 00 ;; DOS INT 2FH - AX=122EH - DL=00 := Get Extended address
159 DOS_GET_PARSE EQU 02 ;; DOS INT 2FH - AX=122EH - DL=02 := Get Parse address
160 DOS_GET_CRITICAL EQU 04 ;; DOS INT 2FH - AX=122EH - DL=04 := Get Critical address
161 DOS_GET_FILE EQU 06 ;; DOS INT 2FH - AX=122EH - DL=06 := Get File system dependant
162 DOS_GET_ADDR EQU 08 ;; DOS INT 2FH - AX=122EH - DL=08 := Get Address of READ_DISK_PROC
163 DOS_SET_ADDR EQU 09 ;; DOS INT 2FH - AX=122EH - DL=09 := Set Address of READ_DISK_PROC
164 LOW_NIB_MASK EQU 0FH ;; Mask out the high byte
165 DOS_CLR_KEYB_BUF_MASK EQU 0C0H ;; Check if high nibble is C Hex
166 $M_CON_INP EQU -1 ;; If DOS INT 21H Function 06H - DL := 0FFH for input
167 $M_CRIT_LO EQU 19 ;; First Extended Error considered CRITICAL
168 $M_CRIT_HI EQU 39 ;; Last Extended Error considered CRITICAL (EG - D191)
169 $M_AM EQU "a" ;; Time format AM indicator
170 $M_PM EQU "p" ;; Time format PM indicator
171 $M_NEG_SIGN EQU "-" ;; Signed decimal number format negative indicator
172 $M_DEF_TIME_FORM EQU 1 ;; Default Time format - 24 hour
173 $M_DEF_DATE_FORM EQU 0 ;; Default Time format - 0 := USA format
174 $M_DEF_TIME_SEP EQU ":" ;; Default Time separator - ":"
175 $M_DEF_DATE_SEP EQU "-" ;; Default Time separator - "-"
176 $M_DEF_DECI_SEP EQU "." ;; Default Time hundreds separator - "."
177 $M_TIMEDATE_PAD EQU "0" ;; Time/Date PAD character - "0" (ie 12:03p)
178 $M_MAX_2_YEAR EQU 99 ;; Maximum 2 digit year
179 $M_SINGLE_CHAR EQU 1 ;; A single character is this long ^
180 $M_SPECIAL_CASE EQU 30H ;; Special case for replacable parameters %0
181 $M_UNLIM_W EQU 0 ;; Unlimited width character
182 $M_COMMA EQU "," ;; Default Thousand separate
183 $M_CR_LF EQU 0A0DH ;; Default CR/LF
184 $M_SPACE_HYP EQU "- " ;; Default Space/Hyphan
185 $M_SPACE EQU " " ;; Default Space
186 $M_NULL EQU 0 ;; Null
187 $M_FIRST_THOU EQU 3 ;; Location of first thousand separator
188 $M_SECOND_THOU EQU 6 ;; Location of second thousand separator
189 $M_THIRD_THOU EQU 9 ;; Location of third thousand separator
190 $M_BASE10 EQU 10 ;; Base 10 for arthmetic
191 $M_BASE16 EQU 16 ;; Base 16 for arthmetic
192 $M_CLASS_NOT_EXIST EQU 0 ;; Does class exist?
193 $M_TERMINATING_FLAG EQU -1 ;; Is there any more classes?
194 $M_ADDR_SZ_NEAR EQU 2 ;; Size to increment if NEAR
195 $M_ADDR_SZ_FAR EQU 4 ;; Size to increment if FAR
196 $M_SL EQU DS:[SI] ;; Refer to SUBLIST as $M_SL
197 $M_NO_HANDLE EQU -1 ;; No handle flag
198 $M_TEMP_BUF_SZ EQU 64 ;; Size of temporary buffer ;AN003;
199 $M_NEXT_DBCS_VECTOR EQU 2 ;; Amount to increment to get next vector
200 $M_DBCS_TERM EQU 0000 ;; DBCS vector table terminating flag
201 $M_SPECIAL_MSG_NUM EQU 0FFFFH ;; Special generic message number
202 $M_CRLF_SIZE EQU 2 ;; Size of the CR LF message
203 $M_NO_CRLF_MASK EQU 10000000B ;; Mask to supress CR LF
204 $M_ONE_REPLACE EQU 1 ;; Indicate one replacement
205 $M_CRIT_ERR_MASK EQU 00000001B ;; Mask to allow EOF/EOI Crit error
206 ;;
207 $M_ALIGN_MASK EQU 10000000b ;; Mask for align
208 $M_TYPE_MASK EQU 00001111b ;; Mask for types
209 $M_SIZE_MASK EQU 00110000b ;; Mask for types
210 $M_TIME_MASK EQU 00000001b ;; Mask for TIME
211 $M_DATE_MASK EQU 00010000b ;; Mask for TIME
212 $M_BYTE EQU 00010000b ;; BYTE indicator
213 $M_WORD EQU 00100000b ;; WORD indicator
214 $M_DWORD EQU 00110000b ;; DWORD indicator
215
216 ; Standard reserved DOS handles
217
218 STDIN EQU 0000H ;; Standard Input device handle
219 STDOUT EQU 0001H ;; Standard Output device handle
220 STDERR EQU 0002H ;; Standard Error Output device handle
221 STDAUX EQU 0003H ;; Standard Auxiliary device handle
222 STDPRN EQU 0004H ;; Standard Printer device handle
223
224 ; Reserved Message Service equates
225
226 NEARmsg = TRUE ;; \
227 NOVERCHECKmsg = FALSE ;; |
228 MSGDATA = FALSE ;; |
229 FARmsg = FALSE ;; |
230 GETmsg = FALSE ;; |
231 LOADmsg = FALSE ;; |
232 DISPLAYmsg = FALSE ;; } Set default cases
233 SETSTDIO = FALSE ;; |
234 NOCHECKSTDIN = FALSE ;; |
235 NOCHECKSTDOUT = FALSE ;; |
236 DISK_PROC = FALSE ;; | ;AN003;
237 INPUTmsg = FALSE ;; |
238 CHARmsg = FALSE ;; |
239 NUMmsg = FALSE ;; |
240 TIMEmsg = FALSE ;; |
241 DATEmsg = FALSE ;; /
242
243 IF1 ;;
244 COMR = FALSE ;; COMMAND.COM Cases (resident)
245 COMT = FALSE ;; (transient)
246 ENDIF ;;
247
248 $M_STRUC = TRUE ;; Internal message service defaults
249 $M_LOAD = TRUE ;;
250 $M_SUBS = TRUE ;;
251 $M_REPLACE = TRUE ;;
252 $M_REPL_DONE = FALSE ;;
253 $M_CHAR_ONLY = TRUE ;;
254 $M_PARSE_FLAG = TRUE ;;
255 $M_EXT_ERR_FLAG = TRUE ;;
256 $M_MSGDATA_ONLY = TRUE ;;
257 $M_END = FALSE ;;
258 $M_EXT_CLS = TRUE ;;
259 $M_PAR_CLS = TRUE ;;
260 ;;
261 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
262 ;; $M_POPF Macro
263 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
264
265 $M_POPF MACRO
266 LOCAL $M_MYRET
267 JMP $+3
268 $M_MYRET LABEL NEAR
269 IRET
270 PUSH CS
271 CALL $M_MYRET
272 ENDM
273
274 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
275 ;;
276 ;; Message Retreiver requests
277 ;;
278 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
279 ;
280 MSG_UTILNAME Macro utilname ;
281 ;
282 INCLUDE &utilname.CTL ; Include the control file for the utility
283 $M_STRUC = TRUE ;
284 INCLUDE MSGSERV.ASM ; Get structure definitions
285 ;
286 ENDM ;
287 ;
288 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
289 ;; MSG_SERVICES Macro
290 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
291 ;
292 MSG_SERVICES Macro varlist ; MACRO used in source routine
293 ;
294 $M_SERVICE = FALSE ; Reset service flag
295 IRP var,<varlist> ; FOR each variable in the list
296 $M_INCLUDE = TRUE ; Reset include flag
297 ; For each service predefined
298
299 IRP serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,NEARmsg,FARmsg,COMR,COMT>
300
301 IFDIF <var>,<serv> ; IF it IS a service (defined above)
302 ELSE ;
303 IFDIF <var>,<MSGDATA> ; IF it is NOT the message data space request
304 $M_MSGDATA_ONLY = FALSE ; Instruct the assembler to include all services
305 ENDIF ; ENDIF
306 IRP repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg> ; IF it is a replace service
307 IFIDN <var>,<repl> ;
308 $M_REPLACE = TRUE ; Set replace flag
309 ENDIF ;
310 ENDM ;
311 serv = TRUE ; Let the assembler know about the service
312 $M_SERVICE = TRUE ; Let the macro know it was a service
313 $M_INCLUDE = FALSE ; Let the macro know it wasn't a class
314 ENDIF ; ENDIF
315 ENDM ; NEXT service
316
317 MSG_SERVICES2 <varlist>
318 ; Continue further checks (If we add any more predefined
319 ; function to the above IRP command, it generates a
320 ; syntax error. We must continue the processing in another
321 ; MACRO called MSG_SERVICES2)
322
323 IF $M_INCLUDE ; IF message class was requested
324 $M_INC var ; Include it as a message class
325 ENDIF ; ENDIF
326 ENDM ; NEXT variable
327 ;
328 IF $M_SERVICE ; IF it any services were requested THEN
329 INCLUDE MSGSERV.ASM ; THEN include module to get service
330 ENDIF ; ENDIF
331
332 ENDM
333 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
334 ;; MSG_SERVICES2 Macro
335 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
336 ;
337 MSG_SERVICES2 Macro varlist2 ; MACRO used in source routine
338 ;
339 ; FOR each variable in the list
340 IRP var2,<varlist2>
341 ; For each service predefined
342 IRP serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC>
343 ;AN003; IF it IS a service (defined above)
344 IFDIF <var2>,<serv2>
345 ELSE ;
346 serv2 = TRUE ; Let the assembler know about the service
347 $M_SERVICE = TRUE ; Let the macro know it was a service
348 $M_INCLUDE = FALSE ; Let the macro know it wasn't a class
349 ENDIF ; ENDIF
350 ENDM ; NEXT service
351 ENDM ; NEXT variable
352 ENDM ;
353 ;
354 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
355 ;; $M_INC Macro
356 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
357 ;
358 $M_INC Macro ext ;
359 ;
360 INCLUDE &ext ;
361 ;
362 ENDM ;
363 ;
364 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
365 ;; $M_BUILD_PTRS Macro
366 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
367 ;
368 $M_BUILD_PTRS Macro nummsg ;
369 ;
370 $M_INDEX = 0 ;
371 IF COMR ; IF this is resident COMMAND.COM
372 $M_MAKE_COMR ;
373 ELSE ; ELSE
374 IF COMT ; IF this is transient COMMAND.COM
375 $M_MAKE_COMT ;
376 ELSE ; ELSE
377 ;
378 $M_INDEX = 0 ;
379 $M_COUNT = 0 ; Build normal utilities
380 ;
381 REPT nummsg ;
382 $M_COUNT = $M_COUNT + 1 ;
383 $M_MAKE %$M_COUNT ;
384 ENDM ;
385 ENDIF ;
386 ENDIF ;
387 ENDM ;
388 ;
389 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
390 ;; $M_MAKE Macro
391 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
392 ;
393 $M_MAKE Macro $m_append ;
394 IF FARmsg ;
395 CALL FAR PTR $M_CLS_&$m_append ; Get addressibilty to class &$M_APPEND (ES:DI)
396 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX+2,ES ; Move into first avaliable table location
397 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
398 ELSE ;
399 CALL $M_CLS_&$m_append ; Get addressibilty to class &$M_APPEND (ES:DI)
400 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
401 ENDIF ;
402 $M_INDEX = $M_INDEX + 4 ; Set next available table location
403 ;
404 ENDM ;
405 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
406 ;; $M_MAKE_COMR Macro
407 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
408 ;
409 $M_MAKE_COMR macro ;
410 ;
411 CALL $M_CLS_3 ; Get addressibilty to class A
412 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
413 $M_INDEX = $M_INDEX + 4 ; Set next available table location
414 ;
415 CALL $M_CLS_4 ; Get addressibilty to class B
416 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
417 $M_INDEX = $M_INDEX + 4 ; Set next available table location
418 ;
419 CALL $M_CLS_5 ; Get addressibilty to class C
420 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
421 $M_INDEX = $M_INDEX + 4 ; Set next available table location
422 ;
423 CALL $M_CLS_6 ; Get addressibilty to class D
424 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
425 $M_INDEX = $M_INDEX + 4 ; Set next available table location
426 ;
427 CALL $M_CLS_7 ; Get addressibilty to class E
428 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
429 $M_INDEX = $M_INDEX + 4 ; Set next available table location
430 ;
431 ENDM ;
432 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
433 ;; $M_MAKE_COMT Macro
434 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
435 ;
436 $M_MAKE_COMT macro ;
437 ;
438 CALL $M_CLS_8 ; Get addressibilty to class A
439 MOV WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
440 $M_INDEX = $M_INDEX + 4 ; Set next available table location
441 ;
442 ENDM ;
443 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;