diff options
Diffstat (limited to 'v4.0/src/INC/SYSMSG.INC')
| -rw-r--r-- | v4.0/src/INC/SYSMSG.INC | 443 |
1 files changed, 443 insertions, 0 deletions
diff --git a/v4.0/src/INC/SYSMSG.INC b/v4.0/src/INC/SYSMSG.INC new file mode 100644 index 0000000..5462820 --- /dev/null +++ b/v4.0/src/INC/SYSMSG.INC | |||
| @@ -0,0 +1,443 @@ | |||
| 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 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||