2 ; SCCSID = @(#)uinit.asm 4.5 85/12/04
3 ; SCCSID = @(#)uinit.asm 4.5 85/12/04
4 TITLE COMMAND Initialization messages
18 dw offset resgroup
:sym
21 name dw offset resgroup
:sym
26 ENVIRONMENT
SEGMENT PUBLIC PARA
;AC000;
30 TRANCODE
SEGMENT PUBLIC BYTE ;AC000;
33 extrn append_parse
:FAR ;AN054;
36 INIT
SEGMENT PUBLIC PARA
;AC000;
61 public resetenv
;AC000;
62 public ext_msg
;AC000;
63 public num_positionals
70 PUBLIC KAUTOBAT
;AN000; 3/3/KK
71 public eswitch
;AN018;
72 public dswitch
;AN018;
73 public init_parse
;AN054;
74 public old_parse_ptr
;AN057;
75 PUBLIC pars_msg_off
;AN060;
76 PUBLIC pars_msg_seg
;AN060;
78 include resmsg
.equ
;AC000;
83 DB "CON",0,0,0,0,0,0 ; Room for 8 char device
85 COMSPECT
DB "/COMMAND.COM",0,0
86 AUTOBAT
DB 0,":\AUTOEXEC.BAT",0,0DH ;AC027;
87 KAUTOBAT
DB 0,":\KAUTOEXE.BAT",0,0DH ;AC027; 3/3/KK
89 PRDATTM
DB -1 ;Init not to prompt for date time
92 DW OFFSET TranGroup
:Printf_INIT
94 triage_add
LABEL DWORD
95 DW OFFSET TranGroup
:Triage_Init
98 ;eg ECOMLOC DW OFFSET ENVIRONMENT:ECOMSPEC-10H
99 ECOMLOC
DW OFFSET ENVIRONMENT
:ECOMSPEC
;eg
101 COMSPSTRING
DB "COMSPEC="
108 scswitch db "C
" ; Single command
111 EnvSiz DW 0 ; size user wants to allocate
112 EnvMax DW 0 ; maximum size allowed.
113 oldenv DW 0 ; envirseg at initialization
114 usedenv DW 0 ; amount of envirseg used
115 PARS_MSG_OFF DW 0 ;AN060; SAVED PARSE ERROR MESSAGE OFFSET
116 PARS_MSG_SEG DW 0 ;AN060; SAVED PARSE ERROR MESSAGE SEGMENT
118 ;Do not separate the following two words. Used to call transient PARSE routine
120 init_parse label dword ;AN054;
121 init_p DW TRANGROUP:APPEND_PARSE ;AN054;
122 initend DW 0 ;eg segment address of end of init
124 ;End of data that shouldn't be separated.
126 trnsize DW 0 ;eg size of transient in paragraphs
127 resetenv DB 0 ;eg set if we need to setblck env at endinit
128 ext_msg DB 0 ;AN000; set if /MSG switch entered
129 eswitch db 0 ;AN018; set if /e was entered
130 dswitch db 0 ;AN018; set if /d was entered
131 parsemes_ptr dw 0 ;AN000; word to store parse error number
134 ; PARSE BLOCK FOR COMMAND
136 PUBLIC PARSE_COMMAND ;AN000;
137 PUBLIC COMND1_OUTPUT ;AN000;
138 PUBLIC COMND1_TYPE ;AN000;
139 PUBLIC COMND1_CODE ;AN000;
140 PUBLIC COMND1_SYN ;AN000;
141 PUBLIC COMND1_ADDR ;AN000;
142 PUBLIC COMMAND_F_SYN ;AN000;
143 PUBLIC COMMAND_P_SYN ;AN000;
144 PUBLIC COMMAND_C_SYN ;AN000;
145 PUBLIC COMMAND_D_SYN ;AN000;
146 PUBLIC COMMAND_E_SYN ;AN000;
147 PUBLIC COMMAND_M_SYN ;AN000;
150 ; The following parse control block is used for COMMAND. This block is
151 ; used for parsing during initialization. The sytax for COMMAND is:
152 ; COMMAND [d:][path][/P][/F][/D][/E:xxxxx][/MSG][/C executable]
153 ; Anything on the command line after the /C switch will be passed to the
154 ; executable command, so if /C is used, it must be specified last. The
155 ; /MSG switch can only be specified if the /P switch is specified.
158 ENVBIG EQU 32768 ;AN000; maximum environment size
159 ENVSML EQU 160 ;AN000; minimum environment size
161 INTERNAT_INFO LABEL BYTE ;AN000; used for country info after parsing is completed
162 PARSE_COMMAND LABEL BYTE ;AN000;
163 DW RESGROUP:COMMAND_PARMS ;AN000;
164 DB 0 ;AN000; no extra delimiter
166 COMMAND_PARMS LABEL BYTE ;AN000;
167 DB 0,1 ;AN000; 1 positional parm
168 DW RESGROUP:COMMAND_FILE ;AN000;
169 DB 6 ;AN000; 6 switches
170 DW RESGROUP:COMMAND_SWITCH1 ;AN000;
171 DW RESGROUP:COMMAND_SWITCH2 ;AN000;
172 DW RESGROUP:COMMAND_SWITCH3 ;AN000;
173 DW RESGROUP:COMMAND_SWITCH4 ;AN000;
174 DW RESGROUP:COMMAND_SWITCH5 ;AN000;
175 DW RESGROUP:COMMAND_SWITCH6 ;AN000;
176 DB 0 ;AN000; no keywords
178 COMMAND_FILE LABEL BYTE ;AN000;
179 DW 0201H ;AN000; filespec - optional
180 DW 1 ;AN000; capitalize - file table
181 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
182 DW RESGROUP:NO_VAL ;AN000;
183 DB 0 ;AN000; no keywords
185 COMMAND_SWITCH1 LABEL BYTE ;AN000;
186 DW 0 ;AN000; no match flags
187 DW 2 ;AN000; capitalize by char table
188 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
189 DW RESGROUP:NO_VAL ;AN000;
190 DB 1 ;AN000; 1 keyword
191 COMMAND_P_SYN DB "/P
",0 ;AN000; /P switch
193 COMMAND_SWITCH2 LABEL BYTE ;AN000;
194 DW 0 ;AN000; no match flags
195 DW 2 ;AN000; capitalize by char table
196 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
197 DW RESGROUP:NO_VAL ;AN000;
198 DB 1 ;AN000; 1 keyword
199 COMMAND_F_SYN DB "/F
",0 ;AN000; /F switch
201 COMMAND_SWITCH3 LABEL BYTE ;AN000;
202 DW 0 ;AN000; no match flags
203 DW 2 ;AN000; capitalize by char table
204 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
205 DW RESGROUP:NO_VAL ;AN000;
206 DB 1 ;AN000; 1 keyword
207 COMMAND_D_SYN DB "/D
",0 ;AN000; /D switch
209 COMMAND_SWITCH4 LABEL BYTE ;AN000;
210 DW 8000H ;AN000; numeric value - required
211 DW 0 ;AN000; no function flags
212 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
213 DW RESGROUP:COMMAND_E_VAL ;AN000; pointer to value list
214 DB 1 ;AN000; 1 keyword
215 COMMAND_E_SYN DB "/E
",0 ;AN000; /E switch
217 COMMAND_E_VAL LABEL BYTE ;AN000;
220 DB 1 ;AN000; returned if result
221 DD ENVSML,ENVBIG ;AN000; minimum & maximum value
222 DB 0 ;AN000; no numeric values
223 DB 0 ;AN000; no string values
225 COMMAND_SWITCH5 LABEL BYTE ;AN000;
226 DW 0 ;AN000; no match flags
227 DW 2 ;AN000; capitalize by char table
228 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
229 DW RESGROUP:NO_VAL ;AN000;
230 DB 1 ;AN000; 1 keyword
231 COMMAND_C_SYN DB "/C
",0 ;AN000; /C switch
233 COMMAND_SWITCH6 LABEL BYTE ;AN000;
234 DW 0 ;AN000; no match flags
235 DW 2 ;AN000; capitalize by char table
236 DW RESGROUP:COMND1_OUTPUT ;AN000; result buffer
237 DW RESGROUP:NO_VAL ;AN000;
238 DB 1 ;AN000; 1 keyword
239 COMMAND_M_SYN DB "/MSG
",0 ;AN000; /MSG switch
241 COMND1_OUTPUT LABEL BYTE ;AN000;
242 COMND1_TYPE DB 0 ;AN000; type
243 COMND1_CODE DB 0 ;AN000; return value
244 COMND1_SYN DW 0 ;AN000; synonym pointer
245 COMND1_ADDR DD 0 ;AN000; numeric value / address
248 NO_VAL DB 0 ;AN000; no values
249 num_positionals DW 0 ;AN000; counter for positionals
250 old_parse_ptr DW 0 ;AN057; SI position before calling parser
255 INCLUDE SYSMSG.INC ;AN000; get message services routine
260 ASSUME DS:RESGROUP,ES:RESGROUP,CS:RESGROUP
262 MSG_UTILNAME <COMMAND> ;AN000; define utility name
264 MSG_SERVICES <COMR,COMMAND.CLB> ;AN000; include initialization messages