mirror of https://github.com/tongzx/nt5src
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
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
|
|
|