Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

154 lines
6.1 KiB

IF1 ;AN000;
;%OUT INCLUDING MSGHAN.INC...;AN000;
ENDIF ;AN000;
;THIS IS A COMMONLY INCLUDED FILE, USED BY (AT LEAST) THE FOLLOWING COMPONENTS:
;TREE, GRAFTABL, DISKCOMP, DISKCOPY, COMP - WRITTEN OR Revised BY E.K.
; VALUES FOR THE MSG_DESC CONTROL BLOCK
ONE_SUBS EQU 1 ;AN000;ONE VARIABLE FIELD IN MESSAGE
TWO_SUBS EQU 2 ;AN000;TWO VARIABLE FIELDS IN MESSAGE
THREE_SUBS EQU 3 ;AN000;THREE VARIABLE FIELDS IN MESSAGE
CLASS_1 EQU EXT_ERR_CLASS ;AN000;CLASS 1 (DOS EXTENDED ERRORS)
CLASS_2 EQU PARSE_ERR_CLASS ;AN000;CLASS 2 (PARSE ERRORS)
CLASS_A EQU UTILITY_MSG_CLASS ;AN000;CLASS A TYPE MESSAGE
;THIS MESSAGE DESCRIPTOR CONTROL BLOCK IS GENERATED, ONE PER MESSAGE,
;TO DEFINE THE SEVERAL PARAMETERS THAT ARE EXPECTED TO BE PASSED IN
;CERTAIN REGISTERS WHEN THE SYSDISPMSG FUNCTION IS TO BE INVOKED.
MSG_DESC STRUC ;AN000;
MSG_NUM DW 0 ;AN000;MESSAGE NUMBER (TO AX)
MSG_HANDLE DW STDOUT ;AN000;HANDLE OF OUTPUT DEVICE (TO BX)
MSG_SUBLIST DW 0 ;AN000;POINTER TO SUBLIST (TO SI)
MSG_COUNT DW 0 ;AN000;SUBSTITUTION COUNT (TO CX)
MSG_CLASS DW CLASS_A SHL 8 ;AN000;MESSAGE CLASS (IN HIGH BYTE, TO DH)
; LOW BYTE HAS 0 (FUNCTION "NO INPUT", TO DL)
MSG_DESC ENDS ;AN000;
; VALUES FOR THE SUBLIST CONTROL BLOCK
PC_ID_0 EQU 0 ;AN000;ID OF " - " TRAILER TO MESSAGE
PC_ID_1 EQU 1 ;AN000;ID OF PERCENT VARIABLE FIELD
PC_ID_2 EQU 2 ;AN000;ID OF PERCENT VARIABLE FIELD
PC_ID_3 EQU 3 ;AN000;ID OF PERCENT VARIABLE FIELD
MAX_0 EQU 0 ;AN000;MAXIMUM WIDTH OF STRING FIELD (0=NO LIMIT)
MIN_1 EQU 1 ;AN000;MINIMUM WIDTH OF STRING FIELD
PAD_BLK EQU " " ;AN000;CHAR FOR PAD FIELD
FILL_OFF EQU 0 ;AN000;TO BE REPLACED WITH ACTUAL OFFSET
FILL_SEG EQU 0 ;AN000;TO BE REPLACED WITH ACTUAL SEG ID
;THIS SUBLIST CONTROL BLOCK, POINTED TO BY SI WHEN SYSDISPMSG IS CALLED
;FURTHER DESCRIBES THE MESSAGE AND THE VARIABLE FIELDS THE MSG MAY CONTAIN.
;THERE IS ONE OF THESE CONTROL BLOCKS PER VARIABLE FIELD. ADDITIONAL
;VARIABLE FIELDS ARE DEFINED IN ADDITIONAL "SUBLIST" CONTROL BLOCKS,
;CONSECUTIVE AND CONTIGUOUS WITH THIS ONE. THE NUMBER OF THESE CONTROL
;BLOCKS IS THE SUBSTITUTION COUNT, PASSED IN CS TO SYSDISPMSG, AS DEFINED
;IN THE ABOVE "MSC_DESC" CONTROL BLOCK.
SUBLIST STRUC ;AN000;
SUB_SIZE DB 11 ;AN000;SUBLIST SIZE (POINTER TO NEXT SUBLIST)
SUB_RES DB 0 ;AN000;RESERVED
;NEXT FIELD IS TO BE USED AS A DOUBLE WORD
SUB_VALUE DW 0 ;AN000;TIME, DATE, OR PTR TO DATA ITEM
SUB_VALUE_SEG DW 0 ;AN000;SEG ID OF PTR
;(ABOVE FIELD MUST BE FILLED AT EXECUTION TIME
; IF THIS IS A .COM FILE)
SUB_ID DB 0 ;AN000;N OF %N
SUB_FLAGS DB 0 ;AN000;DATA TYPE FLAGS
SUB_MAX_WIDTH DB MAX_0 ;AN000;MAXIMUM FIELD WIDTH (0=UNLIMITED)
SUB_MIN_WIDTH DB 0 ;AN000;MINIMUM FIELD WIDTH
SUB_PAD_CHAR DB PAD_BLK ;AN000;CHARACTER FOR PAD FIELD
; CAN BE " ", "0" OR ",".
; "," CAUSES INSERTION OF THE ACTIVE
; THOUSANDS SEPARATOR BETWEEN EVERY 3 DIGITS.
SUBLIST ENDS ;AN000;
; BITS DEFINED FOR SUB_FLAGS ABOVE
; FORMAT = A0SSTTTT
; ++ + +--- FIELD TYPE
; || +--- DATA VARIABLE SIZE
; |+--- RESERVED, MUST BE ZERO
; +--- ALIGNMENT INDICATOR
SF_BITS RECORD F_ALIGN:1,F_RES:1=0,F_SIZE:2,F_TYPE:4;AN000;
; F_ALIGN FIELD, ALIGNMENT INDICATOR
SF_LEFT EQU 0 ;AN000;LEFT ALIGN
SF_RIGHT EQU 1 ;AN000;RIGHT ALIGN
; F_RES FIELD, RESERVED, SHOULD BE ZERO
; F_TYPE FIELD, FIELD TYPE
SF_CHAR EQU 0000B ;AN000;TYPE IS CHARACTER
; F_SIZE FIELD,
SF_CH EQU 00B ;AN000;SINGLE CHARACTER
SF_ASCIIZ EQU 01B ;AN000;ASCIIZ STRING
; F_TYPE FIELD, FIELD TYPE
SF_UN_BD EQU 0001B ;AN000;UNSIGNED BINARY TO DECIMAL CHARACTER
; F_SIZE FIELD,
SF_BYTE EQU 01B ;AN000;DATA IS BYTE SIZED
SF_WORD EQU 10B ;AN000;DATA IS WORD SIZED
SF_DWORD EQU 11B ;AN000;DATA IS DOUBLE WORD SIZED
; F_TYPE FIELD, FIELD TYPE
SF_SIN_BD EQU 0010B ;AN000;SIGNED BINARY TO DECIMAL CHARACTER
; F_SIZE FIELD,
;SF_BYTE EQU 01B ;DATA IS BYTE SIZED
;SF_WORD EQU 10B ;DATA IS WORD SIZED
;SF_DWORD EQU 11B ;DATA IS DOUBLE WORD SIZED
; F_TYPE FIELD, FIELD TYPE
SF_UN_BH EQU 0011B ;AN000;UNSIGNED BINARY TO HEXADECIMAL CHARACTER
; F_SIZE FIELD,
;SF_BYTE EQU 01B ;DATA IS BYTE SIZED
;SF_WORD EQU 10B ;DATA IS WORD SIZED
;SF_DWORD EQU 11B ;DATA IS DOUBLE WORD SIZED
; F_TYPE FIELD, FIELD TYPE
SF_DATE EQU 0100B ;AN000;DATE TO CHARACTER,
; USING CURRENT COUNTRY FORMAT
;SUB_VALUE HIGH=YEAR
;SUB_VALUE LOW=MMDD
; F_SIZE FIELD,
SF_MD EQU 01B ;AN000;MONTH AND DAY ONLY
SF_MDY2 EQU 10B ;AN000;MONTH,DAY AND YEAR (2 DIGITS)
SF_MDY4 EQU 11B ;AN000;MONTH,DAY AND YEAR (4 DIGITS)
; F_TYPE FIELD, FIELD TYPE
SF_TIME_12 EQU 0101B ;AN000;TIME TO CHARACTER, 12 HOUR FORMAT
; USING CURRENT COUNTRY FORMAT
;SUB_VALUE HIGH=HHMM
;SUB_VALUE LOW=SSHH
; F_SIZE FIELD,
SF_HHMM EQU 00B ;AN000;HH:MM (ACTIVE TIME FORMAT)
SF_HHMMSS EQU 01B ;AN000;HH:MM:SS (ACTIVE TIME FORMAT)
SF_HHMMSSHH EQU 10B ;AN000;HH:MM:SS:HH
; F_TYPE FIELD, FIELD TYPE
SF_TIME_24 EQU 0110B ;AN000;TIME TO CHARACTER, 24 HOUR FORMAT
; USING CURRENT COUNTRY FORMAT
;SUB_VALUE HIGH=HHMM
;SUB_VALUE LOW=SSHH
; F_SIZE FIELD,
;SF_HHMM EQU 00B ;HH:MM (ACTIVE TIME FORMAT)
;SF_HHMMSS EQU 01B ;HH:MM:SS (ACTIVE TIME FORMAT)
;SF_HHMMSSHH EQU 10B ;HH:MM:SS:HH
; THE NEXT GROUP ARE ALL CLASS "1" MESSAGES
PUBLIC MSGNUM_EXTERR;AN000;
MSGNUM_EXTERR MSG_DESC <,STDERR,,,CLASS_1 SHL 8> ;AN000;ALL EXTENDED DOS ERRORS
;ERROR NUMBER WILL NEED TO BE FILLED IN
; THE NEXT GROUP ARE ALL CLASS "2" MESSAGES
PUBLIC MSGNUM_PARSE ;AN000;SO PARSE DRIVER CAN FIND IT
MSGNUM_PARSE MSG_DESC <,STDERR,,,CLASS_2 SHL 8> ;AN000;ALL PARSING ERRORS
;ERROR NUMBER WILL NEED TO BE FILLED IN
; THE NEXT GROUP ARE ALL CLASS "A" MESSAGES
; THESE ARE THE "CANNED" MESSAGES ALWAYS PRESENT
PUBLIC MSGNUM_VER ;AN000;
MSGNUM_VER MSG_DESC <1,STDERR> ;AN000;"Incorrect DOS Version"
;end of MSGHAN.INC