]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/CMD/COMMAND/RDATA.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / CMD / COMMAND / RDATA.ASM
1 page 80,132
2 ; SCCSID = @(#)rdata.asm 4.2 85/09/22
3 ; SCCSID = @(#)rdata.asm 4.2 85/09/22
4 TITLE COMMAND Resident DATA
5
6 include comsw.asm
7 .xlist
8 .xcref
9 include comseg.asm
10 .list
11 .cref
12
13 ;
14 ; Equates for initialization (from COMEQU)
15 ;
16 initInit equ 01h ; initialization in progress
17 initSpecial equ 02h ; in initialization time/date routine
18 initCtrlC equ 04h ; already in ^C handler
19
20 Tokenized = FALSE
21
22 CODERES SEGMENT PUBLIC BYTE ;AC000;
23 PUBLIC RSTACK
24 EXTRN EXT_EXEC:NEAR
25 EXTRN THEADFIX:NEAR
26 EXTRN TREMCHECK:NEAR
27
28 DB (80H - 3) DUP (?)
29
30 RSTACK LABEL WORD
31
32 CODERES ENDS
33
34 TRANCODE SEGMENT PUBLIC BYTE ;AC000;
35 EXTRN COMMAND:NEAR
36 TRANCODE ENDS
37
38 ; Data for resident portion
39
40 DATARES SEGMENT PUBLIC BYTE
41
42 IF Tokenized
43 PUBLIC IOTYP
44 PUBLIC MESADD
45 ENDIF
46
47 PUBLIC abort_char
48 PUBLIC append_flag ;AN020;
49 PUBLIC append_state ;AN020;
50 PUBLIC BADFAT_BLOCK ;AC000;
51 PUBLIC BADFAT_OP_SEG ;AC000;
52 PUBLIC BADFAT_SUBST ;AC000;
53 PUBLIC BATCH
54 PUBLIC Batch_Abort
55 PUBLIC call_batch_flag
56 PUBLIC call_flag
57 PUBLIC CDEVAT ;AC000;
58 PUBLIC COM_FCB1
59 PUBLIC COM_FCB2
60 PUBLIC COM_PTR
61 PUBLIC COM_XLAT_ADDR
62 PUBLIC COMDRV
63 PUBLIC COMPRMT1_BLOCK ;AC000;
64 PUBLIC COMPRMT1_SEG ;AC000;
65 PUBLIC COMPRMT1_SEG2 ;AC000;
66 PUBLIC COMPRMT1_SUBST ;AC000;
67 PUBLIC COMSPEC
68 PUBLIC crit_msg_off ;AC000;
69 PUBLIC crit_msg_seg ;AC000;
70 PUBLIC critical_msg_start ;AC000;
71 PUBLIC comspec_print
72 PUBLIC comspec_end
73 PUBLIC cpdrv
74 PUBLIC crit_err_INFO
75 PUBLIC DATARESEND
76 PUBLIC dbcs_vector_addr ;AN000;
77 PUBLIC DEVE_OP_OFF ;AC000;
78 PUBLIC DEVE_OP_SEG ;AC000;
79 PUBLIC DEVE_OP_SEG2 ;AC000;
80 PUBLIC DEVEMES_BLOCK ;AC000;
81 PUBLIC DEVEMES_SUBST ;AC000;
82 PUBLIC DEVENAM ;AC000;
83 PUBLIC DISP_CLASS ;AN000;
84 PUBLIC DRVLET
85 PUBLIC DRVNUM_BLOCK ;AC000;
86 PUBLIC DRVNUM_OP_OFF ;AC000;
87 PUBLIC DRVNUM_OP_SEG ;AC000;
88 PUBLIC DRVNUM_OP_SEG2 ;AC000;
89 PUBLIC DRVNUM_SUBST ;AC000;
90 PUBLIC ECHOFLAG
91 PUBLIC ENVIRSEG
92 PUBLIC ERR15_OP_SEG ;AC000;
93 PUBLIC ERR15_OP_SEG2 ;AC000;
94 PUBLIC ERR15_OP_SEG3 ;AC000;
95 PUBLIC ERR15MES_BLOCK ;AC000;
96 PUBLIC ERR15MES_SUBST ;AC000;
97 PUBLIC ERRCD_24
98 PUBLIC ErrType
99 PUBLIC EXEC_BLOCK
100 PUBLIC EXECEMES_BLOCK ;AC000;
101 PUBLIC EXECEMES_SUBST ;AC000;
102 PUBLIC EXECEMES_OFF ;AC000;
103 PUBLIC EXECEMES_SEG ;AC000;
104 PUBLIC EXTCOM
105 PUBLIC extended_msg_start ;AN000;
106 PUBLIC extmsgend ;AN000;
107 PUBLIC fail_char ;AC000;
108 PUBLIC fFail
109 PUBLIC FORFLAG
110 PUBLIC forptr
111 PUBLIC fucase_addr ;AN000;
112 PUBLIC HANDLE01
113 PUBLIC IFFlag
114 PUBLIC ignore_char
115 PUBLIC In_Batch
116 PUBLIC InitFlag
117 PUBLIC INPIPEPTR
118 PUBLIC INT_2E_RET
119 PUBLIC IO_SAVE
120 PUBLIC LOADING
121 PUBLIC LTPA
122 PUBLIC MEMSIZ
123 ;AD054; PUBLIC MESBAS ;AC000;
124 PUBLIC MYSEG
125 PUBLIC MYSEG1
126 PUBLIC MYSEG2
127 PUBLIC nest
128 PUBLIC next_batch
129 PUBLIC no_char
130 PUBLIC NULLFLAG
131 PUBLIC NUMBER_SUBST ;AN000;
132 PUBLIC olderrno
133 PUBLIC OldTerm
134 PUBLIC OUTPIPEPTR
135 PUBLIC PARENT
136 ;AD060; PUBLIC pars_msg_off ;AN000;
137 ;AD060; PUBLIC pars_msg_seg ;AN000;
138 PUBLIC parse_msg_start ;AN000;
139 PUBLIC PERMCOM
140 PUBLIC PIPE1
141 PUBLIC pipe1t
142 PUBLIC PIPE2
143 PUBLIC pipe2t
144 PUBLIC PIPEFILES
145 PUBLIC PIPEFLAG
146 PUBLIC PIPEPTR
147 PUBLIC PIPESTR
148 PUBLIC RDIRCHAR
149 PUBLIC RE_OUT_APP
150 PUBLIC RE_OUTSTR
151 PUBLIC RemMsg
152 PUBLIC resmsgend ;AN000;
153 PUBLIC RES_TPA
154 PUBLIC RESTDIR
155 PUBLIC ResTest
156 PUBLIC RETCODE
157 PUBLIC retry_char
158 PUBLIC rsrc_xa_seg ;AN030;
159 PUBLIC RSWITCHAR
160 PUBLIC SAVE_PDB
161 PUBLIC SINGLECOM
162 PUBLIC SUM
163 PUBLIC SUPPRESS
164 PUBLIC TRANS
165 PUBLIC TranVarEnd
166 PUBLIC TRANVARS
167 PUBLIC TRNSEG
168 PUBLIC TrnMvFlg
169 PUBLIC VERVAL
170 PUBLIC VolName
171 PUBLIC VOLSER ;AN000;
172 PUBLIC yes_char
173
174 ;AD054;MESBAS DW 19 ;AC000; error_write_protect
175 ;AD054; DW 20 ;AC000; error_bad_unit
176 ;AD054; DW 21 ;AC000; error_not_ready
177 ;AD054; DW 22 ;AC000; error_bad_command
178 ;AD054; DW 23 ;AC000; error_CRC
179 ;AD054; DW 24 ;AC000; error_bad_length
180 ;AD054; DW 25 ;AC000; error_Seek
181 ;AD054; DW 26 ;AC000; error_not_DOS_disk
182 ;AD054; DW 27 ;AC000; error_sector_not_found
183 ;AD054; DW 28 ;AC000; error_out_of_paper
184 ;AD054; DW 29 ;AC000; error_write_fault
185 ;AD054; DW 30 ;AC000; error_read_fault
186 ;AD054; DW 31 ;AC000; error_gen_failure
187 ;AD054; DW 32 ;AC000; error_sharing_violation
188 ;AD054; DW 33 ;AC000; error_lock_violation
189 ;AD054; DW 34 ;AC000; error_wrong_disk
190 ;AD054; DW 35 ;AC000; error_FCB_unavailable
191 ;AD054; DW 36 ;AC000; error_sharing_buffer_exceeded
192 ;AD054; DW 37 ;AC000; error_code_page_mismatch
193 ;AD054; DW 38 ;AC026; error_out_of_input
194 ;AD054; DW 39 ;AN026; error_insufficient_disk_space
195
196
197
198 IF Tokenized
199 MESADD LABEL WORD
200 DW OFFSET ResGroup:NEWLIN ;"0"
201 DW OFFSET ResGroup:COM$1 ;"1"
202 DW OFFSET ResGroup:ERR3 ;"2"
203 DW OFFSET ResGroup:ALLOC$3 ;"3"
204 DW OFFSET ResGroup:FILE$4 ;"4"
205 DW OFFSET ResGroup:RROR$5 ;"5"
206 DW OFFSET ResGroup:CAN$6 ;"6"
207 DW OFFSET ResGroup:EMORY$7 ;"7"
208 DW OFFSET ResGroup:BAT$8 ;"8"
209 DW OFFSET ResGroup:INS$9 ;"9"
210
211 ERR0 DB "Write protec","t"+80h
212 ERR1 DB "Bad uni","t"+80h
213 ERR2 DB "Not read","y"+80h
214 ERR3 DB "Bad command"," "+80h
215 ERR4 DB "Dat","a"+80h
216 ERR5 DB "Bad call forma","t"+80h
217 ERR6 DB "See","k"+80h
218 ERR7 DB "Non-DOS dis","k"+80h
219 ERR8 DB "Sector not foun","d"+80h
220 ERR9 DB "No pape","r"+80h
221 ERR10 DB "Write faul","t"+80h
222 ERR11 DB "Read faul","t"+80h
223 ERR12 DB "General Failur","e"+80h
224 ERR13 DB "Sharing Violatio","n"+80h
225 ERR14 DB "Lock Violatio","n"+80h
226 ERR15 DB "Invalid Disk Chang","e"+80h
227 ERR16 DB "FCB unavailabl","e"+80h
228 ERR17 DB "Sharing buffer exceede","d"+80h
229
230 ;--- Extra message for error 15
231 Err15Mes db "Please Insert disk "
232 VolName db 11 dup(?)
233 db 13,10,"$"
234
235 MREAD DB "read"
236 MWRITE DB "writ"
237 ERRMES DB " e5"
238 IOTYP DB "writin","g"+80h
239 DRVNUM DB " drive "
240 DRVLET DB "A"
241 NEWLIN DB 13,10+80h
242 DEVEMES DB " device "
243 DEVENAM DB 8 DUP (?)
244 DB 13,10,"$" ;Must be $ terminated
245 COM$1 DB " COMMAN","D"+80h
246 ALLOC$3 DB " allocation"," "+80h
247 FILE$4 DB " file"," "+80h
248 RROR$5 DB "rror"," "+80h
249 CAN$6 DB "Cannot"," "+80h
250 EMORY$7 DB "emor","y"+80h
251 BAT$8 DB " batc","h"+80h
252 INS$9 DB "Inser","t"+80h
253
254
255 CDEVAT DB ?
256 BADFAT DB "0File 3table bad",","+80h
257 COMBAD DB "0Invalid1.COM","0"+80h
258 comprmt1 DB "9 disk with"," "+80h
259 comprmt2 DB " in drive "
260 cpdrv DB " "
261 PROMPT DB "0and strike any key when ready","0"+80h
262 ENDBATMES DB "0Terminate8 job (Y/N)?"," "+80h
263 EXECEMES DB "EXEC failure","0"+80h
264 EXEBAD DB "E5in EXE4","0"+80h
265 TOOBIG DB "Program too big to fit in m7","0"+80h
266 NOHANDMES DB "0No free4handle","s"+80h
267 BMEMMES DB "0M73e","5"+80h
268 HALTMES DB "06load1, system halte","d"+80h
269 FRETMES DB "06start1, exiting","0"+80h
270 RBADNAM DB "2or4name","0"+80h
271 AccDen DB "Access Denied","0"+80h
272 Patricide DB 13,10,"Top level process aborted, cannot continue."," "+80h
273 COMSPEC_PRINT DW ?
274
275 ELSE
276
277
278 parm_block_size EQU 11 ;AN000; size of message subst block
279 blank EQU " " ;AN000; blank character
280
281 DISP_CLASS DB -1 ;AN000; utility message class
282 NUMBER_SUBST DB 0 ;AN000; number of message substitutions - def 0
283
284
285 DRVNUM_SUBST db 2 ;AN000; number of subst
286 DRVNUM_BLOCK db parm_block_size ;AN000;size of sublist
287 db 0 ;AN000;reserved
288 DRVNUM_OP_OFF dw 0 ;AN000;offset of arg
289 DRVNUM_OP_SEG dw 0 ;AN000;segment of arg
290 db 1 ;AN000;first subst
291 db Char_field_ASCIIZ ;AN000;character string
292 db 128 ;AN000;maximum width
293 db 0 ;AN000;minimum width
294 db blank ;AN000;pad character
295 db parm_block_size ;AN000;size of sublist
296 db 0 ;AN000;reserved
297 dw OFFSET RESGROUP:DRVLET ;AN000;offset of arg
298 DRVNUM_OP_SEG2 dw 0 ;AN000;segment of arg
299 db 2 ;AN000;second subst
300 db Char_field_Char ;AN000;one character
301 db 1 ;AN000;maximum width
302 db 1 ;AN000;minimum width
303 db blank ;AN000;pad character
304
305 DRVLET DB "A"
306
307 DEVEMES_SUBST db 2 ;AN000; number of subst
308 DEVEMES_BLOCK db parm_block_size ;AN000;size of sublist
309 db 0 ;AN000;reserved
310 DEVE_OP_OFF dw 0 ;AN000;offset of arg
311 DEVE_OP_SEG dw 0 ;AN000;segment of arg
312 db 1 ;AN000;first subst
313 db Char_field_ASCIIZ ;AN000;character string
314 db 128 ;AN000;maximum width
315 db 0 ;AN000;minimum width
316 db blank ;AN000;pad character
317 db parm_block_size ;AN000;size of sublist
318 db 0 ;AN000;reserved
319 dw OFFSET RESGROUP:DEVENAM ;AN000;offset of arg
320 DEVE_OP_SEG2 dw 0 ;AN000;segment of arg
321 db 2 ;AN000;second subst
322 db Char_field_ASCIIZ ;AN000;character string
323 db 8 ;AN019;maximum width
324 db 8 ;AN019;minimum width
325 db blank ;AN000;pad character
326
327 DEVENAM DB 8 DUP (?)
328
329 ;--- Extra message for error 15
330 ERR15MES_SUBST db 3 ;AN000; number of subst
331 ERR15MES_BLOCK db parm_block_size ;AN000;size of sublist
332 db 0 ;AN000;reserved
333 dw OFFSET RESGROUP:VOLNAME ;AN000;offset of arg
334 ERR15_OP_SEG dw 0 ;AN000;segment of arg
335 db 1 ;AN000;first subst
336 db Char_field_ASCIIZ ;AN000;character string
337 db 12 ;AN000;maximum width
338 db 12 ;AN000;minimum width
339 db blank ;AN000;pad character
340 db parm_block_size ;AN000;size of sublist
341 db 0 ;AN000;reserved
342 dw OFFSET RESGROUP:VOLSER+2;AN000;offset of arg
343 ERR15_OP_SEG2 dw 0 ;AN000;segment of arg
344 db 2 ;AN000;second subst
345 db right_align+Bin_Hex_Word ;AN000;long binary to decimal
346 db 4 ;AN000;maximum width
347 db 4 ;AN000;minimum width
348 db "0" ;AN000;pad character
349 db parm_block_size ;AN000;size of sublist
350 db 0 ;AN000;reserved
351 dw OFFSET RESGROUP:VOLSER ;AN000;offset of arg
352 ERR15_OP_SEG3 dw 0 ;AN000;segment of arg
353 db 3 ;AN000;third subst
354 db right_align+Bin_Hex_Word ;AN000;long binary to decimal
355 db 4 ;AN000;maximum width
356 db 4 ;AN000;minimum width
357 db "0" ;AN000;pad character
358
359 ;************************************
360 ;* DO NOT SEPARATE VOLNAME & VOLSER *
361 ;************************************
362 ;*
363 VolName DB 11 dup(?) ;*
364 DB 0 ;*
365 VolSer DD 0 ;*
366 ;*
367 ;************************************
368
369
370 CDEVAT DB ?
371
372 BADFAT_SUBST db 1 ;AN000; number of subst
373 BADFAT_BLOCK db parm_block_size ;AN000;size of sublist
374 db 0 ;AN000;reserved
375 dw OFFSET RESGROUP:DRVLET ;AN000;offset of arg
376 BADFAT_OP_SEG dw 0 ;AN000;segment of arg
377 db 1 ;AN000;first subst
378 db Char_field_Char ;AN000;one character
379 db 1 ;AN000;maximum width
380 db 1 ;AN000;minimum width
381 db blank ;AN000;pad character
382
383
384 COMPRMT1_SUBST db 2 ;AN000; number of subst
385 COMPRMT1_BLOCK db parm_block_size ;AN000;size of sublist
386 db 0 ;AN000;reserved
387 COMSPEC_PRINT dw ? ;AN000;offset of arg
388 COMPRMT1_SEG dw 0 ;AN000;segment of arg
389 db 1 ;AN000;first subst
390 db Char_field_ASCIIZ ;AN000;character string
391 db 64 ;AN000;maximum width
392 db 0 ;AN000;minimum width
393 db blank ;AN000;pad character
394 db parm_block_size ;AN000;size of sublist
395 db 0 ;AN000;reserved
396 dw OFFSET RESGROUP:CPDRV ;AN000;offset of arg
397 COMPRMT1_SEG2 dw 0 ;AN000;segment of arg
398 db 2 ;AN000;second subst
399 db Char_field_Char ;AN000;one character
400 db 1 ;AN000;maximum width
401 db 1 ;AN000;minimum width
402 db blank ;AN000;pad character
403
404 cpdrv DB " "
405 ;
406 ; Exec error messages
407 ;
408 EXECEMES_SUBST db 1 ;AN000; number of subst
409 EXECEMES_BLOCK db parm_block_size ;AN000;size of sublist
410 db 0 ;AN000;reserved
411 EXECEMES_OFF dw 0 ;AN000;offset of arg
412 EXECEMES_SEG dw 0 ;AN000;segment of arg
413 db 1 ;AN000;first subst
414 db Char_field_ASCIIZ ;AN000;character string
415 db 64 ;AN000;maximum width
416 db 0 ;AN000;minimum width
417 db blank ;AN000;pad character
418
419 ;
420 ; These characters MUST remain in order
421 ;
422 abort_char db "A"
423 retry_char db "R"
424 ignore_char db "I"
425 fail_char db "F"
426 yes_char db "Y"
427 no_char db "N"
428 ;
429 ; End of characters that MUST remain in order
430 ;
431 ENDIF
432
433 RemMsg DD ? ;Pointer to message in error 15
434 ErrType DB ? ; Error message style, 0=old, 1=new
435
436 INT_2E_RET DD ? ; Magic command executer return address
437 SAVE_PDB DW ?
438 PARENT DW ?
439 OldTerm DD ?
440 ERRCD_24 DW ?
441 HANDLE01 DW ?
442 LOADING DB 0
443 BATCH DW 0 ; Assume no batch mode initially
444 COMSPEC DB 64 DUP(0)
445 comspec_end dw ?
446 TRANS DW OFFSET TRANGROUP:COMMAND
447 TRNSEG DW ?
448 ; BAS DEBUG
449 TrnMvFlg DB 0 ; Indicate if transient portion has been moved
450
451 In_Batch DB 0 ; Indicate if we are in Batch processing mode.
452 Batch_Abort DB 0 ; Indicate if user wants to abort from batch mode.
453
454 COMDRV DB ? ; DRIVE SPEC TO LOAD AUTOEXEC AND COMMAND
455 MEMSIZ DW ?
456 SUM DW ?
457 EXTCOM DB 1 ; For init, pretend just did an external
458 RETCODE DW ?
459 CRIT_ERR_INFO DB ? ;G hold critical error flags for R,I,F
460 rsrc_xa_seg DW -1 ;AN030; holds segment of xa copy buffer
461
462 ;
463 ; The echo flag needs to be pushed and popped around pipes and batch files.
464 ; We implement this as a bit queue that is shr/shl for push and pop.
465 ;
466 ECHOFLAG DB 00000001B ; low bit TRUE => echo commands
467 SUPPRESS DB 1 ; used for echo, 1=echo line
468 IO_SAVE DW ?
469 RESTDIR DB 0
470 PERMCOM DB 0 ; TRUE => permanent command
471 SINGLECOM DW 0 ; TRUE => single command version
472 VERVAL DW -1
473 fFail DB 0 ; TRUE => FAIL all INT 24s
474 IFFLAG DB 0 ; TRUE => If statement in progress
475
476 FORFLAG DB 0 ; TRUE => FOR statement in progress
477 FORPTR DW 0
478
479 NEST DW 0 ; NESTED BATCH FILE COUNTER
480 CALL_FLAG DB 0 ; NO CALL (BATCH COMMAND) IN PROGRESS
481 CALL_BATCH_FLAG DB 0
482 NEXT_BATCH DW 0 ; ADDRESS OF NEXT BATCH SEGMENT
483 NULLFLAG DB 0 ; FLAG IF NO COMMAND ON COMMAND LINE
484 COM_XLAT_ADDR DB 5 DUP (0) ;G BUFFER FOR TRANSLATE TABLE ADDRESS
485 FUCASE_ADDR DB 5 DUP (0) ;AN000; BUFFER FOR FILE UCASE ADDRESS
486 CRIT_MSG_OFF DW 0 ;AN000; SAVED CRITICAL ERROR MESSAGE OFFSET
487 CRIT_MSG_SEG DW 0 ;AN000; SAVED CRITICAL ERROR MESSAGE SEGMENT
488 ;AD060; PARS_MSG_OFF DW 0 ;AN000; SAVED PARSE ERROR MESSAGE OFFSET
489 ;AD060; PARS_MSG_SEG DW 0 ;AN000; SAVED PARSE ERROR MESSAGE SEGMENT
490 Dbcs_vector_addr DW 0 ;AN000; DBCS vector offset
491 DW 0 ;AN000; DBCS vector segment
492 APPEND_STATE DW 0 ;AN020; current state of append (if flag = -1)
493 APPEND_FLAG DB 0 ;AN020; set if APPEND state valid
494
495 RE_OUT_APP DB 0
496 RE_OUTSTR DB 64+3+13 DUP (?)
497
498 ;
499 ; We flag the state of COMMAND in order to correctly handle the ^Cs at
500 ; various times. Here is the breakdown:
501 ;
502 ; initINIT We are in the init code.
503 ; initSpecial We are in the date/time prompt
504 ; initCtrlC We are handling a ^C already.
505 ;
506 ; If we get a ^C in the initialization but not in the date/time prompt, we
507 ; ignore the ^C. This is so the system calls work on nested commands.
508 ;
509 ; If we are in the date/time prompt at initialization, we stuff the user's
510 ; input buffer with a CR to pretend an empty response.
511 ;
512 ; If we are already handling a ^C, we set the carry bit and return to the user
513 ; (ourselves). We can then detect the carry set and properly retry the
514 ; operation.
515 ;
516
517 InitFlag DB initINIT
518
519 ;These two bytes refed as a word
520 PIPEFLAG DB 0
521 PIPEFILES DB 0
522
523 ;--- 2.x data for piping
524 ;
525 ; All the "_" are substituted later, the one before the : is substituted
526 ; by the current drive, and the others by the CreateTemp call with the
527 ; unique file name. Note that the first 0 is the first char of the pipe
528 ; name. -MU
529 ;
530 ;--- Order dependant, do not change
531
532 Pipe1 db "_:/"
533 Pipe1T db 0
534 db "_______.___",0
535 Pipe2 db "_:/"
536 Pipe2T db 0
537 db "_______.___",0
538
539 PIPEPTR DW ?
540 PIPESTR DB 129 DUP(?)
541 INPIPEPTR DW OFFSET ResGroup:PIPE1
542 OUTPIPEPTR DW OFFSET ResGroup:PIPE2
543
544 EXEC_BLOCK LABEL BYTE ; The data block for EXEC calls
545 ENVIRSEG DW ?
546 COM_PTR LABEL DWORD
547 DW 80H ; Point at unformatted parameters
548 DW ?
549 COM_FCB1 LABEL DWORD
550 DW 5CH
551 DW ?
552 COM_FCB2 LABEL DWORD
553 DW 6CH
554 DW ?
555
556 TRANVARS LABEL BYTE ; Variables passed to transient
557 DW OFFSET ResGroup:THEADFIX
558 MYSEG DW 0 ; Put our own segment here
559 LTPA DW 0 ; WILL STORE TPA SEGMENT HERE
560 RSWITCHAR DB "-"
561 RDIRCHAR DB "/"
562 DW OFFSET ResGroup:EXT_EXEC
563 MYSEG1 DW ?
564 DW OFFSET ResGroup:TREMCHECK
565 MYSEG2 DW 0
566 ResTest DW 0
567 RES_TPA DW 0 ; Original TPA (not rounded to 64K)
568 TranVarEnd LABEL BYTE
569
570 olderrno dw ?
571
572 RESMSGEND DW 0 ;AN000;; holds offset of msg end (end of resident)
573
574 .xlist
575 .xcref
576
577 INCLUDE SYSMSG.INC ;AN000; include message services
578
579 .list
580 .cref
581
582 ASSUME DS:RESGROUP,ES:RESGROUP,CS:RESGROUP
583
584 MSG_UTILNAME <COMMAND> ;AN000; define utility name
585
586 ;AD054; MSG_SERVICES <COMR,MSGDATA,COMMAND.CLA,COMMAND.CL3,COMMAND.CL4> ;AN000; get message services data and resident messages
587 MSG_SERVICES <COMR,MSGDATA,COMMAND.CLA> ;AN054; get message services data and resident messages
588
589
590 CRITICAL_MSG_START LABEL BYTE ;AN000; start of critical error messages
591
592 MSG_SERVICES <COMR,COMMAND.CLD> ;AN000; get critical error messages
593
594 DATARESEND LABEL BYTE ;AC060; end of resident portion if /msg not used
595
596 PARSE_MSG_START LABEL BYTE ;AN000; start of parse error messages
597
598 MSG_SERVICES <COMR,COMMAND.CLC> ;AN000; get parse error messages
599
600 ;AD060; DATARESEND LABEL BYTE ; end of resident portion if /msg not used
601
602 EXTENDED_MSG_START LABEL BYTE ;AN000; start of extended error messages
603
604 MSG_SERVICES <COMR,COMMAND.CLE> ;AN000; get extended error messages
605
606 EXTMSGEND LABEL BYTE ;AN000; end of extended error messages
607
608 include msgdcl.inc
609
610 DATARES ENDS
611 END