1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
;*****************************************************************************
;
; MODULE: compeq.inc
;
; Modification History:
;
; version author date comment
; ------- ------ ---- -------
; V4.0 Bill L. 9/17/87 moved equates from comp2.sal to here!
;
;*****************************************************************************
if1 ;AN000;
%OUT INCLUDING COMPEQ.INC... ;AN000;
endif ;AN000;
EAISBINARY equ 02h ;extended attribute is a binary integer ;AN001;
EASYSTEM equ 8000h ;extended attr. is system defined ;AN001;
VERSION EQU 00H ;DOS VERSION, =00H (NOT USED) ;AN000;
NUL EQU 00H ;END OF STRING (ASCIIZ) MARKER ;AN000;
ONE_PARM EQU 01H ;ONLY PARSE ONE PARAMETER ;AN000;
ZERO_PARM_CT EQU 00H ;ORDINAL # BEFORE PARSING FIRST PARM. ;AN000;
FIRST_PARM_CT EQU 01H ;ORDINAL # AFTER PARSING FIRST PARM. ;AN000;
TRICK_PARM_CT EQU 02H ;TRICK PARSER SO THAT FILENAME GOES TO PATH2 ;AN000;
;INSTEAD OF PATH1 ;AN000;
YES EQU 01H ;A VALID YES RESPONSE EQUALS 1 ;AN000;
KEYB_INP_CLR EQU 0C1H ; does an INT 21H fuction 0CH, 01H ;AN000;
KEYB_INPUT EQU 0FFH ;DO A READ ON CLEAR KEYBOARD ;AN000;
INPUT_LEN EQU 127 ;LENGTH OF INPUT BUFFER ON BUFFERED INPUT ;AN000;
KEYIN EQU 01H ;WAIT FOR KEYBOARD INPUT TO AL ;AN000;
DISP_OUT EQU 02H ;DL = CHAR TO BE DISPLAYED TO STD OUT ;AN000;
DIRECT_IO EQU 06H ;DUMBY CALL, USED IN CLEARING KEYBOARD ;AN000;
BUFFD_KEYBD EQU 0AH ;BUFFERED KEYBOARD INPUT TO DX ;AN000;
IN_STAT EQU 0BH ;check keyboard status ;AC210;
CLEAR_KEYBD EQU 0CH ;CLEAR KEYB, DO KEYB FUNC IN AL ;AN000;
FCBOpen equ 0FH ;fcb open ;AN000;
FCBCLOSE EQU 10H ;FCB CLOSE FILE ;AN000;
SearchF equ 11H ;FCB Search function call ;AN000;
SEARCHN EQU 12H ;FCB SEARCH NEXT ;AN000;
SetDTA equ 1AH ;Set DTA ;AN000;
DEFDRV equ 19H ;get default drive ;AN000;
YESNO_CHECK EQU 23H ;CHECK (Y/N) RESPONSE ON INPUT (EXTENDED COUNTRY INFO) ;AN000;
SETVECTOR equ 25H ;set interrupt vector in AL to DS:DX ;AN000;
FCBRndBlkRead equ 27H ;Read function call ;AN000;
PARSE_FILENAME EQU 29H ;PARSE FILENAME ;AN000;
GETVER equ 30H ;get dos version ;AN000;
CHDIR equ 3BH ;CHDIR function call ;AN000;
HandleOpen equ 3DH ;Handle open function call ;AN000;
HANDLECLOSE EQU 3EH ;HANDLE CLOSE FUNCTION CALL ;AN000;
Write equ 40H ;Write function call ;AN000;
CURDIR equ 47H ;get current directory for drive in [dl] ;AN000;
RET_FN EQU 4CH ;"RETURN TO DOS" NOT REMAIN RESIDENT ;AN000;
GET_EXT_CNTRY_INFO EQU 65H ;EXTENED COUNTRY INFO DOS CALL ;AN000;
STDOUT equ 0001H ;Standard output device ;AN000;
STDERR equ 0002H ;Standard error device ;AN000;
ReadOnlyAccess equ 00H ;Access code for Handle Open function call ;AN000;
CPSW_CHECK EQU 33H ;CODE PAGE SWITCHING CONTROL ;AN000;
GET_CPSW_STATE EQU 03H ;AL=3, GET STATE TO DL ;AN000;
SET_CPSW_STATE EQU 04H ;AL=4, SET STATE FROM DL ;AN000;
CPSW_OFF EQU 00H ; DL=0, OFF ;AN000;
CPSW_ON EQU 01H ; DL=1, ON ;AN000;
CPSW EQU 40H ;IN CPSW_ORIG: ON, CPSW=ON ;AN000;
ZERO_CP EQU 00H ; A ZERO CODE PAGE ;AN000;
; EXTENDED OPEN EQUATES ; LOOK ;AN000;
NO_ATTR_LIST EQU 00H ;NO ATTRIBUTE LIST NEEDED || ;AN000;
OPEN_MODE EQU 82H ;OPEN MODE FOR EXTENDED OPEN || ;AN000;
FUNC_CNTRL EQU 0101H ;FUNCTION CONTROL FOR EXTENDED OPEN || ;AN000;
EXT_OPEN_RD EQU 00H ;READ MODE ON EXTENDED OPEN \/ ;AN000;
EXT_OPEN EQU 6CH ;EXTENDED OPEN ;AN000;
;AL=FUNCTION CONTROL, IN FORMAT=CE ;AN000;
; C=DOES NOT EXIST ACTION: ;AN000;
; 0=FAIL, 1=CREATE ;AN000;
; E=EXISTS ACTION ;AN000;
; 0=FAIL, 1=OPEN, 2=REPLACE/OPEN ;AN000;
;BX=OPEN MODE, FORMAT=0WF00000ISSS0AAA ;AN000;
; AAA=ACCESS CODE: 0=READ, 1=WRITE ;AN000;
; 2=READ/WRITE, 4=EXECUTE (UNDOC) ;AN000;
; 7=FCB (UNDOC) ;AN000;
; SSS=SHARING MODE: 0=COMPATIBILITY ;AN000;
; 1=DENY READ/WRITE, 2=DENY WRITE ;AN000;
; 2=DENY READ, 3=DENY NONE ;AN000;
; I=0, PASS HANDLE TO CHILD, 1=NO INHERIT ;AN000;
; F=0, INT 24H, 1=RETURN ERROR ;AN000;
;ON THIS OPEN AND ANY IO TO THIS HANDLE ;AN000;
; W=0, NO COMMIT, 1=AUTO-COMMIT ON WRITE ;AN000;
;CX=SCARCH/CREATE ATTRIBUTE ;AN000;
;DX=FUNCTION CONTROL, 0000000C NNNNEEEE ;AN000;
; NNNN=DOES NOT EXIST ACTION: ;AN000;
; 0=FAIL,1=CREATE ;AN000;
; EEEE=DOES EXIST ACTION: ;AN000;
; 0=FAIL,1=OPEN,2=REPLACE/OPEN ;AN000;
; C=CODEPAGE ACTION: ;AN000;
; 0=VALIDATE, 1=NO CHECK CODE PAGE ;AN000;
;DS:SI=PARM LIST: ;AN000;
; DD POINT TO NAME TO OPEN ;AN000;
; DB NUMBER OF ADDITIONAL PARMS ;AN000;
; DB 1 IO MODE ;AN000;
; DB IOMODE ;AN000;
; ???0H=UNSPECIFIED (DEFAULT) ;AN000;
; ???1H=MAINLY SEQUENTIAL ;AN000;
; ???2H=MAINLY RANDOM ;AN000;
; ???3H=RANDOM WITH LOCALITY ;AN000;
; ???=RESERVED (SET TO ZERO) ;AN000;
;ES:DI=EXTENTED ATTR LIST ;AN000;
;OUTPUT: CY SET ON ERROR ;AN000;
; AX=HANDLE ;AN000;
; CX=ACTION TAKEN: 1=FILE OPENED, ;AN000;
; 2=FILE CREATED/OPENED, ;AN000;
; 3=FILE REPLACED/OPENED ;AN000;
EXT_ATTR_LIST EQU 57H ;FUNCTION # : EXTENDED ATTR LIST ;AN000;
GET_EXT_ATTR_LIST EQU 02H ;SUB-FUNC. # : GET EXTENDED ATTR TO LIST ;AN000;
;BX=HANDLE ;AN000;
;ES:DI=LIST ;AN000;
;CY SET IF ERROR ;AN000;
EXTERROR EQU 59H ;EXTENDED ERROR ;AN000;
;BX = 40 VERSION NUMBER (FOR 3.40) ;AN000;
;OUTPUT: ;AN000;
;AX=EXTENDED ERROR ;AN000;
;BH=ERROR CLASS ;AN000;
;BL=SUGGESTED ACTION ;AN000;
;CH=LOCUS ;AN000;
; ERRORLEVEL RETURN CODES, PASSED IN "EXITFL" ;AN000;
EXOK EQU 0 ;NORMAL RETURN CODE, NO PROBLEM ;AN000;
EXCB EQU 1 ;CONTROL BREAK EXIT ;AN000;
EXVER EQU 1 ;BAD DOS VERSION OR OTHER ;AN000;
; SYSLOADMSG DIFFICULTY ;AN000;
; VALUES FOR THE MSG_DESC CONTROL BLOCK ;AN000;
NO_SUBS EQU 0 ;NO VARIABLE FIELDS IN MESSAGE ;AN000;
ONE_SUBS EQU 1 ;ONE VARIABLE FIELD IN MESSAGE ;AN000;
TWO_SUBS EQU 2 ;TWO VARIABLE FIELDS IN MESSAGE ;AN000;
THREE_SUBS EQU 3 ;THREE VARIABLE FIELDS IN MESSAGE ;AN000;
CLASS_1 EQU 1 ;CLASS 1 (DOS EXTENDED ERRORS) ;AN000;
CLASS_2 EQU 2 ;CLASS 2 (PARSE ERRORS) ;AN000;
CLASS_A EQU -1 ;CLASS A TYPE MESSAGE ;AN000;
;***************************** ;AN000;
; Message Retriever structures ;AN000;
;***************************** ;AN000;
msg_desc struc ;AN000;
msg_num dw 0 ;MESSAGE NUMBER (TO AX) ;AN000;
msg_handle dw STDOUT ;HANDLE OF OUTPUT DEVICE (TO BX) ;AN000;
msg_sublist dw 0 ;POINTER TO SUBLIST (TO SI) ;AN000;
msg_count dw 0 ;SUBSTITUTION COUNT (TO CX) ;AN000;
msg_class dw CLASS_A shl 8 ;MESSAGE CLASS (IN HIGH BYTE, TO DH) ;AN000;
;LOW BYTE HAS 0 (FUNCTION "NO INPUT", TO DL) ;AN000;
msg_input dw ? ;######EXTRA WORD - ONLY FOR MESSAGES WITH BUFFERED INPUT ;AN000;
;######OTHERWISE THIS WORD IS NOT VALID AS PART OF THE STRUCT ;AN000;
;POINTER TO INPUT BUFFER ;AN000;
msg_desc ends ;AN000;
MAX_0 equ 0 ;MAXIMUM WIDTH OF STRING FIELD (0=NO LIMIT) ;AN000;
PAD_BLK equ " " ;CHAR FOR PAD FIELD ;AN000;
sublist struc ;AN000;
sub_size db 11 ;SUBLIST SIZE (POINTER TO NEXT SUBLIST) ;AN000;
sub_res db 0 ;RESERVED ;AN000;
;NEXT FIELD IS TO BE USED AS A DOUBLE WORD ;AN000;
sub_value dw 0 ;TIME, DATE, OR PTR TO DATA ITEM ;AN000;
sub_value_seg dw 0 ;SEG ID OF PTR ;AN000;
;(ABOVE FIELD MUST BE FILLED AT EXECUTION TIME ;AN000;
; IF THIS IS A .COM FILE) ;AN000;
sub_id db 0 ;N OF %N ;AN000;
sub_flags db 0 ;DATA TYPE FLAGS ;AN000;
sub_max_width db MAX_0 ;MAXIMUM FIELD WIDTH (0=UNLIMITED) ;AN000;
sub_min_width db 0 ;MINIMUM FIELD WIDTH ;AN000;
sub_pad_char db PAD_BLK ;CHARACTER FOR PAD FIELD ;AN000;
; CAN BE " ", "0" OR ",". ;AN000;
; "," CAUSES INSERTION OF THE ACTIVE ;AN000;
; THOUSANDS SEPARATOR BETWEEN EVERY 3 DIGITS. ;AN000;
sublist ends ;AN000;
;end of COMPEQ.INC ;AN000;
|