2 %OUT INCLUDING MSGHAN.INC...;AN000;
4 ;THIS IS A COMMONLY INCLUDED FILE, USED BY (AT LEAST) THE FOLLOWING COMPONENTS:
5 ;TREE, GRAFTABL, DISKCOMP, DISKCOPY, COMP - WRITTEN OR Revised BY E.K.
7 ; VALUES FOR THE MSG_DESC CONTROL BLOCK
8 ONE_SUBS EQU 1 ;AN000;ONE VARIABLE FIELD IN MESSAGE
9 TWO_SUBS EQU 2 ;AN000;TWO VARIABLE FIELDS IN MESSAGE
10 THREE_SUBS EQU 3 ;AN000;THREE VARIABLE FIELDS IN MESSAGE
11 CLASS_1 EQU EXT_ERR_CLASS ;AN000;CLASS 1 (DOS EXTENDED ERRORS)
12 CLASS_2 EQU PARSE_ERR_CLASS ;AN000;CLASS 2 (PARSE ERRORS)
13 CLASS_A EQU UTILITY_MSG_CLASS ;AN000;CLASS A TYPE MESSAGE
15 ;THIS MESSAGE DESCRIPTOR CONTROL BLOCK IS GENERATED, ONE PER MESSAGE,
16 ;TO DEFINE THE SEVERAL PARAMETERS THAT ARE EXPECTED TO BE PASSED IN
17 ;CERTAIN REGISTERS WHEN THE SYSDISPMSG FUNCTION IS TO BE INVOKED.
19 MSG_DESC STRUC ;AN000;
20 MSG_NUM DW 0 ;AN000;MESSAGE NUMBER (TO AX)
21 MSG_HANDLE DW STDOUT ;AN000;HANDLE OF OUTPUT DEVICE (TO BX)
22 MSG_SUBLIST DW 0 ;AN000;POINTER TO SUBLIST (TO SI)
23 MSG_COUNT DW 0 ;AN000;SUBSTITUTION COUNT (TO CX)
24 MSG_CLASS DW CLASS_A SHL 8 ;AN000;MESSAGE CLASS (IN HIGH BYTE, TO DH)
25 ; LOW BYTE HAS 0 (FUNCTION "NO INPUT", TO DL)
28 ; VALUES FOR THE SUBLIST CONTROL BLOCK
29 PC_ID_0 EQU 0 ;AN000;ID OF " - " TRAILER TO MESSAGE
30 PC_ID_1 EQU 1 ;AN000;ID OF PERCENT VARIABLE FIELD
31 PC_ID_2 EQU 2 ;AN000;ID OF PERCENT VARIABLE FIELD
32 PC_ID_3 EQU 3 ;AN000;ID OF PERCENT VARIABLE FIELD
33 MAX_0 EQU 0 ;AN000;MAXIMUM WIDTH OF STRING FIELD (0=NO LIMIT)
34 MIN_1 EQU 1 ;AN000;MINIMUM WIDTH OF STRING FIELD
35 PAD_BLK EQU " " ;AN000;CHAR FOR PAD FIELD
36 FILL_OFF EQU 0 ;AN000;TO BE REPLACED WITH ACTUAL OFFSET
37 FILL_SEG EQU 0 ;AN000;TO BE REPLACED WITH ACTUAL SEG ID
39 ;THIS SUBLIST CONTROL BLOCK, POINTED TO BY SI WHEN SYSDISPMSG IS CALLED
40 ;FURTHER DESCRIBES THE MESSAGE AND THE VARIABLE FIELDS THE MSG MAY CONTAIN.
41 ;THERE IS ONE OF THESE CONTROL BLOCKS PER VARIABLE FIELD. ADDITIONAL
42 ;VARIABLE FIELDS ARE DEFINED IN ADDITIONAL "SUBLIST" CONTROL BLOCKS,
43 ;CONSECUTIVE AND CONTIGUOUS WITH THIS ONE. THE NUMBER OF THESE CONTROL
44 ;BLOCKS IS THE SUBSTITUTION COUNT, PASSED IN CS TO SYSDISPMSG, AS DEFINED
45 ;IN THE ABOVE "MSC_DESC" CONTROL BLOCK.
48 SUB_SIZE DB 11 ;AN000;SUBLIST SIZE (POINTER TO NEXT SUBLIST)
49 SUB_RES DB 0 ;AN000;RESERVED
50 ;NEXT FIELD IS TO BE USED AS A DOUBLE WORD
51 SUB_VALUE DW 0 ;AN000;TIME, DATE, OR PTR TO DATA ITEM
52 SUB_VALUE_SEG DW 0 ;AN000;SEG ID OF PTR
53 ;(ABOVE FIELD MUST BE FILLED AT EXECUTION TIME
54 ; IF THIS IS A .COM FILE)
55 SUB_ID DB 0 ;AN000;N OF %N
56 SUB_FLAGS DB 0 ;AN000;DATA TYPE FLAGS
57 SUB_MAX_WIDTH DB MAX_0 ;AN000;MAXIMUM FIELD WIDTH (0=UNLIMITED)
58 SUB_MIN_WIDTH DB 0 ;AN000;MINIMUM FIELD WIDTH
59 SUB_PAD_CHAR DB PAD_BLK ;AN000;CHARACTER FOR PAD FIELD
60 ; CAN BE " ", "0" OR ",".
61 ; "," CAUSES INSERTION OF THE ACTIVE
62 ; THOUSANDS SEPARATOR BETWEEN EVERY 3 DIGITS.
65 ; BITS DEFINED FOR SUB_FLAGS ABOVE
67 ; ³³ ³ ÀÄÄÄ FIELD TYPE
68 ; ³³ ÀÄÄÄ DATA VARIABLE SIZE
69 ; ³ÀÄÄÄ RESERVED, MUST BE ZERO
70 ; ÀÄÄÄ ALIGNMENT INDICATOR
71 SF_BITS RECORD F_ALIGN:1,F_RES:1=0,F_SIZE:2,F_TYPE:4;AN000;
73 ; F_ALIGN FIELD, ALIGNMENT INDICATOR
74 SF_LEFT EQU 0 ;AN000;LEFT ALIGN
75 SF_RIGHT EQU 1 ;AN000;RIGHT ALIGN
77 ; F_RES FIELD, RESERVED, SHOULD BE ZERO
79 ; F_TYPE FIELD, FIELD TYPE
80 SF_CHAR EQU 0000B ;AN000;TYPE IS CHARACTER
82 SF_CH EQU 00B ;AN000;SINGLE CHARACTER
83 SF_ASCIIZ EQU 01B ;AN000;ASCIIZ STRING
85 ; F_TYPE FIELD, FIELD TYPE
86 SF_UN_BD EQU 0001B ;AN000;UNSIGNED BINARY TO DECIMAL CHARACTER
88 SF_BYTE EQU 01B ;AN000;DATA IS BYTE SIZED
89 SF_WORD EQU 10B ;AN000;DATA IS WORD SIZED
90 SF_DWORD EQU 11B ;AN000;DATA IS DOUBLE WORD SIZED
92 ; F_TYPE FIELD, FIELD TYPE
93 SF_SIN_BD EQU 0010B ;AN000;SIGNED BINARY TO DECIMAL CHARACTER
95 ;SF_BYTE EQU 01B ;DATA IS BYTE SIZED
96 ;SF_WORD EQU 10B ;DATA IS WORD SIZED
97 ;SF_DWORD EQU 11B ;DATA IS DOUBLE WORD SIZED
99 ; F_TYPE FIELD, FIELD TYPE
100 SF_UN_BH EQU 0011B ;AN000;UNSIGNED BINARY TO HEXADECIMAL CHARACTER
102 ;SF_BYTE EQU 01B ;DATA IS BYTE SIZED
103 ;SF_WORD EQU 10B ;DATA IS WORD SIZED
104 ;SF_DWORD EQU 11B ;DATA IS DOUBLE WORD SIZED
106 ; F_TYPE FIELD, FIELD TYPE
107 SF_DATE EQU 0100B ;AN000;DATE TO CHARACTER,
108 ; USING CURRENT COUNTRY FORMAT
112 SF_MD EQU 01B ;AN000;MONTH AND DAY ONLY
113 SF_MDY2 EQU 10B ;AN000;MONTH,DAY AND YEAR (2 DIGITS)
114 SF_MDY4 EQU 11B ;AN000;MONTH,DAY AND YEAR (4 DIGITS)
116 ; F_TYPE FIELD, FIELD TYPE
117 SF_TIME_12 EQU 0101B ;AN000;TIME TO CHARACTER, 12 HOUR FORMAT
118 ; USING CURRENT COUNTRY FORMAT
122 SF_HHMM EQU 00B ;AN000;HH:MM (ACTIVE TIME FORMAT)
123 SF_HHMMSS EQU 01B ;AN000;HH:MM:SS (ACTIVE TIME FORMAT)
124 SF_HHMMSSHH EQU 10B ;AN000;HH:MM:SS:HH
126 ; F_TYPE FIELD, FIELD TYPE
127 SF_TIME_24 EQU 0110B ;AN000;TIME TO CHARACTER, 24 HOUR FORMAT
128 ; USING CURRENT COUNTRY FORMAT
132 ;SF_HHMM EQU 00B ;HH:MM (ACTIVE TIME FORMAT)
133 ;SF_HHMMSS EQU 01B ;HH:MM:SS (ACTIVE TIME FORMAT)
134 ;SF_HHMMSSHH EQU 10B ;HH:MM:SS:HH
136 ; THE NEXT GROUP ARE ALL CLASS "1" MESSAGES
138 PUBLIC MSGNUM_EXTERR;AN000;
139 MSGNUM_EXTERR MSG_DESC <,STDERR,,,CLASS_1 SHL 8> ;AN000;ALL EXTENDED DOS ERRORS
140 ;ERROR NUMBER WILL NEED TO BE FILLED IN
142 ; THE NEXT GROUP ARE ALL CLASS "2" MESSAGES
144 PUBLIC MSGNUM_PARSE ;AN000;SO PARSE DRIVER CAN FIND IT
145 MSGNUM_PARSE MSG_DESC <,STDERR,,,CLASS_2 SHL 8> ;AN000;ALL PARSING ERRORS
146 ;ERROR NUMBER WILL NEED TO BE FILLED IN
148 ; THE NEXT GROUP ARE ALL CLASS "A" MESSAGES
149 ; THESE ARE THE "CANNED" MESSAGES ALWAYS PRESENT
151 PUBLIC MSGNUM_VER ;AN000;
152 MSGNUM_VER MSG_DESC <1,STDERR> ;AN000;"Incorrect DOS Version"