summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/COMMAND/TDATA.ASM
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/CMD/COMMAND/TDATA.ASM
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/CMD/COMMAND/TDATA.ASM')
-rw-r--r--v4.0/src/CMD/COMMAND/TDATA.ASM777
1 files changed, 777 insertions, 0 deletions
diff --git a/v4.0/src/CMD/COMMAND/TDATA.ASM b/v4.0/src/CMD/COMMAND/TDATA.ASM
new file mode 100644
index 0000000..c80c588
--- /dev/null
+++ b/v4.0/src/CMD/COMMAND/TDATA.ASM
@@ -0,0 +1,777 @@
1 page 80,132
2; SCCSID = @(#)tdata.asm 4.3 85/05/17
3; SCCSID = @(#)tdata.asm 4.3 85/05/17
4TITLE COMMAND Transient Initialized DATA
5
6; MODIFICATION HISTORY
7;
8; EE 10-20-83 Changed the drive check indicator bytes (DCIB's) in
9; COMTAB to be a flag byte in which bit 0 is now the
10; DCIB(bit) and bit 1 is on if the command can take
11; switches.
12
13fmt macro name,string,args
14 local a
15a db string
16PUBLIC name
17name dw offset trangroup:a
18irp val,<args>
19 dw offset trangroup:val
20endm
21endm
22
23btab macro b,sym
24 db b
25 dw offset trangroup:sym
26 endm
27
28.xlist
29.xcref
30 INCLUDE comsw.asm ;AC000;
31 INCLUDE comseg.asm
32 INCLUDE EA.inc ;AN030;
33 INCLUDE dirent.inc ;AN042;
34.list
35.cref
36
37BREAK MACRO subtitle
38 SUBTTL subtitle
39 PAGE
40ENDM
41
42;
43; WARNING: DO NOT INCLUDE DOSSYM.INC BECAUSE IT DESTROYS THE MACRO 'FMT' THAT
44; has been defined above - RS.
45;
46 INCLUDE CURDIR.INC
47 INCLUDE ERROR.INC
48 INCLUDE ifequ.asm
49 INCLUDE comequ.asm
50
51TRANSPACE SEGMENT PUBLIC BYTE ;AC000;
52 EXTRN arg_buf:BYTE
53 EXTRN bwdbuf:byte
54 EXTRN bytes_free:WORD
55 EXTRN charbuf:byte
56 EXTRN copy_Num:WORD
57 EXTRN cpyflag:BYTE
58 EXTRN DATE_OUTPUT:BYTE ;AC000;
59 EXTRN Dir_Num:WORD
60 EXTRN DRIVE_OUTPUT:BYTE ;AC000;
61 EXTRN file_size_high:WORD
62 EXTRN file_size_low:WORD
63 EXTRN major_ver_num:WORD
64 EXTRN minor_ver_num:WORD
65 EXTRN one_char_val:BYTE
66 EXTRN PARSE1_OUTPUT:BYTE ;AC000;
67 EXTRN srcbuf:byte
68 EXTRN string_ptr_2:WORD
69 EXTRN system_cpage:word
70 EXTRN TIME_OUTPUT:BYTE ;AC000;
71 EXTRN vol_drv:BYTE
72 EXTRN vol_serial:dword ;AN000;
73TRANSPACE ENDS
74
75TRANCODE SEGMENT PUBLIC BYTE ;AC000;
76 EXTRN $CALL:NEAR
77 EXTRN $CHDIR:NEAR
78 EXTRN $EXIT:NEAR
79 EXTRN $FOR:NEAR
80 EXTRN $IF:NEAR
81 EXTRN $MKDIR:NEAR
82 EXTRN $RMDIR:NEAR
83 EXTRN ADD_NAME_TO_ENVIRONMENT:NEAR
84 EXTRN ADD_PROMPT:NEAR
85 EXTRN build_dir_for_prompt:near
86 EXTRN CATALOG:NEAR
87 EXTRN CHCP:NEAR
88 EXTRN CLS:NEAR
89 EXTRN CNTRLC:NEAR
90 EXTRN COPY:NEAR
91 EXTRN CRENAME:NEAR
92 EXTRN CRLF2:NEAR
93 EXTRN CTIME:NEAR
94 EXTRN CTTY:NEAR
95 EXTRN DATE:NEAR
96 EXTRN ECHO:NEAR
97 EXTRN ERASE:NEAR
98 EXTRN GOTO:NEAR
99 EXTRN IFERLEV:NEAR
100 EXTRN IFEXISTS:NEAR
101 EXTRN IFNOT:NEAR
102 EXTRN PATH:NEAR
103 EXTRN PAUSE:NEAR
104 EXTRN PRINT_B:NEAR
105 EXTRN PRINT_BACK:NEAR
106 EXTRN PRINT_DATE:NEAR
107 EXTRN PRINT_CHAR:NEAR
108 EXTRN PRINT_DRIVE:NEAR
109 EXTRN PRINT_EQ:NEAR
110 EXTRN PRINT_ESC:NEAR
111 EXTRN PRINT_G:NEAR
112 EXTRN PRINT_L:NEAR
113 EXTRN PRINT_TIME:NEAR
114 EXTRN PRINT_VERSION:NEAR
115 EXTRN SHIFT:NEAR
116 EXTRN TCOMMAND:NEAR
117 EXTRN TRUENAME:NEAR ;AN000;
118 EXTRN TYPEFIL:NEAR
119 EXTRN VERSION:NEAR
120 EXTRN VOLUME:NEAR
121 EXTRN VERIFY:NEAR
122;
123; WARNING!!! No code may appear after this label!!!!
124;
125PUBLIC TranCodeLast
126TranCodeLast LABEL BYTE
127TRANCODE ENDS
128
129; Data for transient portion
130
131TRANDATA SEGMENT PUBLIC BYTE
132
133 PUBLIC accden_ptr ;AN000;
134 PUBLIC acrlf_ptr ;AN000;
135 PUBLIC arg_buf_ptr ;AN000;
136 PUBLIC badbat_ptr ;AN000;
137 PUBLIC badcd_ptr ;AN000;
138 PUBLIC badCPmes_ptr ;AN000;
139 PUBLIC badcurdrv ;AN000;
140 PUBLIC baddat_ptr ;AN000;
141 PUBLIC baddev_ptr ;AN000;
142 PUBLIC baddrv_ptr ;AN000;
143 PUBLIC badlab_ptr ;AN000;
144 PUBLIC badmkd_ptr ;AN000;
145 PUBLIC badnam_ptr ;AN000;
146 PUBLIC bad_on_off_ptr ;AN000;
147 PUBLIC badPmes_ptr ;AN000;
148 PUBLIC badrmd_ptr ;AN000;
149 PUBLIC badtim_ptr ;AN000;
150 PUBLIC batext
151 PUBLIC bytmes_ptr ;AN000;
152 PUBLIC CLSSTRING
153 PUBLIC comext
154 PUBLIC COMSPECSTR
155 PUBLIC COMTAB
156 PUBLIC copied_ptr ;AN000;
157 PUBLIC cp_active_ptr ;AN000;
158 PUBLIC cp_not_all_ptr ;AN000;
159 PUBLIC cp_not_set_ptr ;AN000;
160 PUBLIC ctrlcmes_ptr ;AN000;
161 PUBLIC curdat_mo_day ;AN000;
162 PUBLIC curdat_ptr ;AN000;
163 PUBLIC curdat_yr ;AN000;
164 PUBLIC curtim_hr_min ;AN000;
165 PUBLIC curtim_ptr ;AN000;
166 PUBLIC curtim_sec_hn ;AN000;
167 PUBLIC dback_ptr ;AN000;
168 PUBLIC del_Y_N_ptr ;AN000;
169 PUBLIC devwmes_ptr ;AN000;
170 PUBLIC dirdattim_ptr ;AN000;
171 PUBLIC dirdat_mo_day ;AN000;
172 PUBLIC dirdat_yr ;AN000;
173 PUBLIC dirhead_ptr ;AN000;
174 PUBLIC dirmes_ptr ;AN000;
175 PUBLIC dirtim_hr_min ;AN000;
176 PUBLIC dirtim_sec_hn ;AN000;
177 PUBLIC DIR_W_SYN ;AN000;
178 PUBLIC disp_file_size_ptr ;AN000;
179 PUBLIC dmes_ptr ;AN000;
180 PUBLIC echomes_ptr ;AN000;
181 PUBLIC enverr_ptr ;AN000;
182 PUBLIC eurdat_ptr ;AN000;
183 PUBLIC exeext
184 PUBLIC extend_buf_off ;AN000;
185 PUBLIC extend_buf_ptr ;AN000;
186 PUBLIC extend_buf_seg ;AN000;
187 PUBLIC extend_buf_sub ;AN000;
188 PUBLIC file_name_ptr ;AN000;
189 PUBLIC fornestmes_ptr ;AN000;
190 PUBLIC fuldir_ptr ;AN000;
191 PUBLIC IFTAB
192 PUBLIC inBdev_ptr ;AN000;
193 PUBLIC inornot_ptr ;AN000;
194 PUBLIC Inv_code_page ;AN000;
195 PUBLIC inval_path_ptr ;AN000;
196 PUBLIC japdat_ptr ;AN000;
197 PUBLIC Losterr_ptr ;AN000;
198 PUBLIC md_exists_ptr ;AN006;
199 PUBLIC msg_cont_flag ;AN000;
200 PUBLIC msg_disp_class ;AN000;
201 PUBLIC needbat_ptr ;AN000;
202 PUBLIC newdat_format ;AN000;
203 PUBLIC newdat_ptr ;AN000;
204 PUBLIC newtim_ptr ;AN000;
205 PUBLIC NLSFUNC_ptr ;AN000;
206 PUBLIC nospace_ptr ;AN000;
207 PUBLIC no_values ;AN000;
208 PUBLIC nulpath_ptr ;AN000;
209 PUBLIC offmes_ptr ;AN000;
210 PUBLIC onmes_ptr ;AN000;
211 PUBLIC overwr_ptr ;AN000;
212 PUBLIC PARSE_BREAK ;AN000;
213 PUBLIC PARSE_CHCP ;AN000;
214 PUBLIC PARSE_CHDIR ;AN000;
215 PUBLIC PARSE_CTTY ;AN000;
216 PUBLIC PARSE_DATE ;AN000;
217 PUBLIC PARSE_DIR ;AN000;
218 PUBLIC PARSE_ERASE ;AN000;
219 PUBLIC PARSE_MRDIR ;AN000;
220 PUBLIC PARSE_RENAME ;AN000;
221 PUBLIC PARSE_TIME ;AN000;
222 PUBLIC PARSE_VOL ;AN000;
223 PUBLIC PATH_TEXT
224 PUBLIC pausemes_ptr ;AN000;
225 PUBLIC pipeEmes_ptr ;AN000;
226 PUBLIC promptdat_moday ;AN000;
227 PUBLIC promptdat_ptr ;AN000;
228 PUBLIC promptdat_yr ;AN000;
229 PUBLIC PROMPT_TABLE
230 PUBLIC PROMPT_TEXT
231 PUBLIC promtim_hr_min ;AN000;
232 PUBLIC promtim_ptr ;AN000;
233 PUBLIC promtim_sec_hn ;AN000;
234 PUBLIC renerr_ptr ;AN000;
235 PUBLIC SLASH_P_SYN ;AN000;
236 PUBLIC string_buf_ptr ;AN000;
237 PUBLIC suremes_ptr ;AN000;
238 PUBLIC switch_list
239 PUBLIC syntmes_ptr ;AN000;
240 PUBLIC tab_ptr ;AN000;
241 PUBLIC TRANDATAEND
242 PUBLIC usadat_ptr ;AN000;
243 PUBLIC verimes_ptr ;AN000;
244 PUBLIC vermes_ptr ;AN000;
245 PUBLIC volmes_ptr ;AN000;
246 PUBLIC volmes_ptr_2 ;AN000;
247 PUBLIC volsermes_ptr ;AN000;
248 PUBLIC WEEKTAB
249 PUBLIC xa_cp ;AN030;
250
251INCLUDE tranmsg.asm
252
253CLSSTRING DB 4,01BH,"[2J" ; ANSI Clear screen
254
255PROMPT_TABLE LABEL BYTE
256 btab "B",Print_B
257 btab "D",PRINT_DATE
258 btab "E",PRINT_ESC
259 btab "G",PRINT_G
260 btab "H",PRINT_BACK
261 btab "L",PRINT_L
262 btab "N",PRINT_DRIVE
263 btab "P",build_dir_for_prompt
264 btab "Q",PRINT_EQ
265 btab "T",PRINT_TIME
266 btab "V",PRINT_VERSION
267 btab "_",CRLF2
268 btab "$",PRINT_CHAR
269 DB 0 ; NUL TERMINATED
270
271IFTAB LABEL BYTE ; Table of IF conditionals
272 DB 3,"NOT" ; First byte is count
273 DW OFFSET TRANGROUP:IFNOT
274 DB 10,"ERRORLEVEL"
275 DW OFFSET TRANGROUP:IFERLEV
276 DB 5,"EXIST"
277 DW OFFSET TRANGROUP:IFEXISTS
278 DB 0
279
280; Table for internal command names
281COMTAB DB 3,"DIR",fSwitchAllowed+fCheckDrive
282 DW OFFSET TRANGROUP:CATALOG ; In TCMD1.ASM
283 DB 4,"CALL",fSwitchAllowed
284 DW OFFSET TRANGROUP:$CALL ; In TBATCH2.ASM
285 DB 4,"CHCP",fSwitchAllowed
286 DW OFFSET TRANGROUP:CHCP ; In TCMD2B.ASM
287 DB 6,"RENAME",fSwitchAllowed+fCheckDrive ;AC018; P3903
288 DW OFFSET TRANGROUP:CRENAME ; In TCMD1.ASM
289 DB 3,"REN",fSwitchAllowed+fCheckDrive ;AC018; P3903
290 DW OFFSET TRANGROUP:CRENAME ; In TCMD1.ASM
291 DB 5,"ERASE",fSwitchAllowed+fCheckDrive
292 DW OFFSET TRANGROUP:ERASE ; In TCMD1.ASM
293 DB 3,"DEL",fSwitchAllowed+fCheckDrive
294 DW OFFSET TRANGROUP:ERASE ; In TCMD1.ASM
295 DB 4,"TYPE",fSwitchAllowed+fCheckDrive ;AC018; P3903
296 DW OFFSET TRANGROUP:TYPEFIL ; In TCMD1.ASM
297 DB 3,"REM",fSwitchAllowed
298 DW OFFSET TRANGROUP:TCOMMAND ; In TCODE.ASM
299 DB 4,"COPY",fSwitchAllowed+fCheckDrive
300 DW OFFSET TRANGROUP:COPY ; In COPY.ASM
301 DB 5,"PAUSE",fSwitchAllowed
302 DW OFFSET TRANGROUP:PAUSE ; In TCMD1.ASM
303 DB 4,"DATE",fSwitchAllowed
304 DW OFFSET TRANGROUP:DATE ; In TPIPE.ASM
305 DB 4,"TIME",fSwitchAllowed ;AC018; P3903
306 DW OFFSET TRANGROUP:CTIME ; In TPIPE.ASM
307 DB 3,"VER",0
308 DW OFFSET TRANGROUP:VERSION ; In TCMD2.ASM
309 DB 3,"VOL",fSwitchAllowed+fCheckDrive ;AC018; P3903
310 DW OFFSET TRANGROUP:VOLUME ; In TCMD1.ASM
311 DB 2,"CD",fSwitchAllowed+fCheckDrive ;AC018; P3903
312 DW OFFSET TRANGROUP:$CHDIR ; In TENV.ASM
313 DB 5,"CHDIR",fSwitchAllowed+fCheckDrive ;AC018; P3903
314 DW OFFSET TRANGROUP:$CHDIR ; In TENV.ASM
315 DB 2,"MD",fSwitchAllowed+fCheckDrive ;AC018; P3903
316 DW OFFSET TRANGROUP:$MKDIR ; In TENV.ASM
317 DB 5,"MKDIR",fSwitchAllowed+fCheckDrive ;AC018; P3903
318 DW OFFSET TRANGROUP:$MKDIR ; In TENV.ASM
319 DB 2,"RD",fSwitchAllowed+fCheckDrive ;AC018; P3903
320 DW OFFSET TRANGROUP:$RMDIR ; In TENV.ASM
321 DB 5,"RMDIR",fSwitchAllowed+fCheckDrive ;AC018; P3903
322 DW OFFSET TRANGROUP:$RMDIR ; In TENV.ASM
323 DB 5,"BREAK",fSwitchAllowed ;AC018; P3903
324 DW OFFSET TRANGROUP:CNTRLC ; In TUCODE.ASM
325 DB 6,"VERIFY",fSwitchAllowed ;AC018; P3903
326 DW OFFSET TRANGROUP:VERIFY ; In TUCODE.ASM
327 DB 3,"SET",fSwitchAllowed
328 DW OFFSET TRANGROUP:ADD_NAME_TO_ENVIRONMENT; In TENV.ASM
329 DB 6,"PROMPT",fSwitchAllowed
330 DW OFFSET TRANGROUP:ADD_PROMPT ; In TENV.ASM
331 DB 4,"PATH",fSwitchAllowed
332 DW OFFSET TRANGROUP:PATH ; In TCMD2.ASM
333 DB 4,"EXIT",0
334 DW OFFSET TRANGROUP:$EXIT ; In TCMD2.ASM
335 DB 4,"CTTY",fCheckDrive+fSwitchAllowed
336 DW OFFSET TRANGROUP:CTTY ; In TCMD2.ASM
337 DB 4,"ECHO",fSwitchAllowed
338 DW OFFSET TRANGROUP:ECHO ; In TUCODE.ASM
339 DB 4,"GOTO",fSwitchAllowed
340 DW OFFSET TRANGROUP:GOTO ; In TBATCH.ASM
341 DB 5,"SHIFT",fSwitchAllowed
342 DW OFFSET TRANGROUP:SHIFT ; In TBATCH.ASM
343 DB 2,"IF",fSwitchAllowed
344 DW OFFSET TRANGROUP:$IF ; In TBATCH.ASM
345 DB 3,"FOR",fSwitchAllowed
346 DW OFFSET TRANGROUP:$FOR ; In TBATCH.ASM
347 DB 3,"CLS",0
348 DW OFFSET TRANGROUP:CLS ; In TCMD2.ASM
349 DB 8,"TRUENAME",fSwitchAllowed+fCheckDrive ;AN000; P3903 changed
350 DW OFFSET TRANGROUP:TRUENAME ;AN000;
351 DB 0 ; Terminate command table
352
353
354comext dB ".COM"
355exeext dB ".EXE"
356batext dB ".BAT"
357
358switch_list DB "VBAPW" ; flags we can recognize
359
360
361XA_cp Label byte ;AN030; list for one extended attribute
362 DW 1 ;AN030;
363 DB EAISBINARY ;AN030; type
364 DW EASYSTEM ;AN030; flags
365 DB 2 ;AN030; name length
366 DB "CP" ;AN030; name
367
368
369
370
371PUBLIC BatBufLen
372BatBufLen DW BatLen
373
374; *****************************************************
375; EMG 4.00
376; DATA STARTING HERE WAS ADDED BY EMG FOR 4.00
377; FOR IMPLEMENTATION OF COMMON PARSE ROUTINE
378; *****************************************************
379
380;
381; COMMON PARSE BLOCKS
382;
383
384;
385; Indicates no value list for PARSE.
386;
387
388NO_VALUES DW 0 ;AN000; no values
389
390;
391; PARSE control block for a required file specification (upper cased)
392;
393
394FILE_REQUIRED LABEL BYTE ;AN000;
395 DW 0200H ;AN000; filespec - required
396 DW 1 ;AN000; capitalize - file table
397 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
398 DW TRANGROUP:NO_VALUES ;AN000;
399 DB 0 ;AN000; no keywords
400
401;
402; PARSE control block for an optional file specification (upper cased)
403; or drive number
404;
405
406FILE_OPTIONAL LABEL BYTE ;AN000;
407 DW 0301H ;AN000; filespec or drive number
408 ; optional
409 DW 1 ;AN000; capitalize - file table
410 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
411 DW TRANGROUP:NO_VALUES ;AN000;
412 DB 0 ;AN000; no keywords
413
414;
415; PARSE control block for an optional file specification (upper cased)
416;
417
418FILE_OPTIONAL2 LABEL BYTE ;AN000;
419 DW 0201H ;AN000; filespec or drive number
420 ; optional
421 DW 1 ;AN000; capitalize - file table
422 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
423 DW TRANGROUP:NO_VALUES ;AN000;
424 DB 0 ;AN000; no keywords
425
426;
427; PARSE control block for an optional /P switch
428;
429
430SLASH_P_SWITCH LABEL BYTE ;AN000;
431 DW 0 ;AN000; no match flags
432 DW 2 ;AN000; capitalize - char table
433 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
434 DW TRANGROUP:NO_VALUES ;AN000;
435 DB 1 ;AN000; 1 keyword
436SLASH_P_SYN DB "/P",0 ;AN000; /P switch
437
438
439
440; PARSE BLOCK FOR BREAK, VERIFY, ECHO
441
442;
443; The following parse control block can be used for any command which
444; needs only the optional "ON" and "OFF" keywords as operands. Allows
445; the equal sign as an additional delimiter. Returns verified result
446; in PARSE1_OUTPUT. Currently used for the BREAK, VERIFY, and ECHO
447; internal commands.
448;
449
450PARSE_BREAK LABEL BYTE ;AN000;
451 DW TRANGROUP:BREAK_PARMS ;AN000;
452 DB 0 ;AN032; no extra delimiter
453
454BREAK_PARMS LABEL BYTE ;AN000;
455 DB 0,1 ;AN000; 1 positional parm
456 DW TRANGROUP:BREAK_CONTROL1;AN000;
457 DB 0 ;AN000; no switches
458 DB 0 ;AN000; no keywords
459
460BREAK_CONTROL1 LABEL BYTE ;AN000;
461 DW 2001H ;AN000; string value - optional
462 DW 2 ;AN000; capitalize - char table
463 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
464 DW TRANGROUP:BREAK_VALUES ;AN000;
465 DB 0 ;AN000; no keywords
466
467BREAK_VALUES LABEL BYTE ;AN000;
468 DB 3 ;AN000;
469 DB 0 ;AN000; no ranges
470 DB 0 ;AN000; no numeric values
471 DB 2 ;AN000; 2 string values
472 DB 0 ;AN000; returned if ON
473 DW TRANGROUP:BREAK_ON ;AN000; point to ON string
474 DB 'f' ;AN000; returned if OFF
475 DW TRANGROUP:BREAK_OFF ;AN000; point to OFF string
476
477BREAK_ON DB "ON",0 ;AN000;
478BREAK_OFF DB "OFF",0 ;AN000;
479
480;
481; PARSE BLOCK FOR CHCP
482;
483
484;
485; The following parse control block can be used for any command which
486; needs only one optional three digit decimal parameter for operands.
487; Returns verified result in PARSE1_OUTPUT. Currently used for the
488; CHCP internal command.
489;
490CHCP_MINVAL EQU 100 ;AN000;
491CHCP_MAXVAL EQU 999 ;AN000;
492
493PARSE_CHCP LABEL BYTE ;AN000;
494 DW TRANGROUP:CHCP_PARMS ;AN000;
495 DB 0 ;AN000; no extra delimiter
496
497CHCP_PARMS LABEL BYTE ;AN000;
498 DB 0,1 ;AN000; 1 positional parm
499 DW TRANGROUP:CHCP_CONTROL1 ;AN000;
500 DB 0 ;AN000; no switches
501 DB 0 ;AN000; no keywords
502
503CHCP_CONTROL1 LABEL BYTE ;AN000;
504 DW 8001H ;AN000; numeric value - optional
505 DW 0 ;AN000; no function flags
506 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
507 DW TRANGROUP:CHCP_VALUES ;AN000;
508 DB 0 ;AN000; no keywords
509
510CHCP_VALUES LABEL BYTE ;AN000;
511 DB 1 ;AN000;
512 DB 1 ;AN000; 1 range
513 DB 1 ;AN000; returned if result
514 DD CHCP_MINVAL,CHCP_MAXVAL ;AN000; minimum & maximum value
515 DB 0 ;AN000; no numeric values
516 DB 0 ;AN000; no string values
517
518
519;
520; PARSE BLOCK FOR DATE
521;
522
523;
524; The following parse control block can be used for any command which
525; needs only an optional date string as an operand. Returns unverified
526; result in DATE_OUTPUT. Currently used for the DATE internal command.
527;
528
529PARSE_DATE LABEL BYTE ;AN000;
530 DW TRANGROUP:DATE_PARMS ;AN000;
531 DB 0 ;AN000; no extra delimiter
532
533DATE_PARMS LABEL BYTE ;AN000;
534 DB 0,1 ;AN000; 1 positional parm
535 DW TRANGROUP:DATE_CONTROL1 ;AN000;
536 DB 0 ;AN000; no switches
537 DB 0 ;AN000; no keywords
538
539DATE_CONTROL1 LABEL BYTE ;AN000;
540 DW 1001H ;AN000; date - optional
541 DW 0 ;AN000; no function flags
542 DW TRANGROUP:DATE_OUTPUT ;AN000; result buffer
543 DW TRANGROUP:NO_VALUES ;AN000;
544 DB 0 ;AN000; no keywords
545
546;
547; PARSE BLOCK FOR TIME
548;
549
550;
551; The following parse control block can be used for any command which
552; needs only an optional time string as an operand. Returns unverified
553; result in TIME_OUTPUT. Currently used for the TIME internal command.
554;
555
556PARSE_TIME LABEL BYTE ;AN000;
557 DW TRANGROUP:TIME_PARMS ;AN000;
558 DB 0 ;AN000; no extra delimiter
559
560TIME_PARMS LABEL BYTE ;AN000;
561 DB 0,1 ;AN000; 1 positional parm
562 DW TRANGROUP:TIME_CONTROL1 ;AN000;
563 DB 0 ;AN000; no switches
564 DB 0 ;AN000; no keywords
565
566TIME_CONTROL1 LABEL BYTE ;AN000;
567 DW 0801H ;AN000; TIME - optional
568 DW 0 ;AN000; no function flags
569 DW TRANGROUP:TIME_OUTPUT ;AN000; result buffer
570 DW TRANGROUP:NO_VALUES ;AN000;
571 DB 0 ;AN000; no keywords
572
573
574;
575; PARSE BLOCK FOR VOL
576;
577
578;
579; The following parse control block can be used for any command which
580; needs only an optional drive letter as an operand. Returns unverified
581; drive number (one based) in DRIVE_OUTPUT. Currently used for the VOL
582; internal command.
583;
584
585PARSE_VOL LABEL BYTE ;AN000;
586 DW TRANGROUP:VOL_PARMS ;AN000;
587 DB 0 ;AN000; no extra delimiter
588
589VOL_PARMS LABEL BYTE ;AN000;
590 DB 0,1 ;AN000; 1 positional parm
591 DW TRANGROUP:DRIVE_CONTROL1;AN000;
592 DB 0 ;AN000; no switches
593 DB 0 ;AN000; no keywords
594
595DRIVE_CONTROL1 LABEL BYTE ;AN000;
596 DW 0101H ;AN000; DRIVE - optional
597 DW 1 ;AN000; capitalize - file table
598 DW TRANGROUP:DRIVE_OUTPUT ;AN000; result buffer
599 DW TRANGROUP:NO_VALUES ;AN000;
600 DB 0 ;AN000; no keywords
601
602
603;
604; PARSE BLOCK FOR MKDIR, RMDIR, TYPE
605;
606
607;
608; The following parse control block can be used for any command which
609; needs only one required file specification as an operand. Returns a
610; pointer to the unverified string in PARSE1_OUTPUT. Currently used
611; for the MKDIR, RMDIR, and TYPE internal commands.
612;
613
614PARSE_MRDIR LABEL BYTE ;AN000;
615 DW TRANGROUP:MRDIR_PARMS ;AN000;
616 DB 0 ;AN000; no extra delimiter
617
618MRDIR_PARMS LABEL BYTE ;AN000;
619 DB 1,1 ;AN000; 1 positional parm
620 DW TRANGROUP:FILE_REQUIRED ;AN000;
621 DB 0 ;AN000; no switches
622 DB 0 ;AN000; no keywords
623
624;
625; PARSE BLOCK FOR CHDIR, TRUENAME
626;
627
628;
629; The following parse control block can be used for any command which
630; needs only one optional file specification an operand. Returns a
631; pointer to the unverified string in PARSE1_OUTPUT. Currently used
632; for the CHDIR and TRUENAME internal commands.
633;
634
635PARSE_CHDIR LABEL BYTE ;AN000;
636 DW TRANGROUP:CHDIR_PARMS ;AN000;
637 DB 0 ;AN000; no extra delimiter
638
639CHDIR_PARMS LABEL BYTE ;AN000;
640 DB 0,1 ;AN000; 1 positional parm
641 DW TRANGROUP:FILE_OPTIONAL ;AN000;
642 DB 0 ;AN000; no switches
643 DB 0 ;AN000; no keywords
644
645;
646; PARSE BLOCK FOR ERASE
647;
648
649;
650; The following parse control block is used for the DEL/ERASE internal
651; commands. This command has one required file specification and an
652; optional switch (/p) as operands. The verified switch or unverified
653; file specification is returned in PARSE1_OUTPUT.
654;
655
656PARSE_ERASE LABEL BYTE ;AN000;
657 DW TRANGROUP:ERASE_PARMS ;AN000;
658 DB 0 ;AN000; no extra delimiter
659
660ERASE_PARMS LABEL BYTE ;AN000;
661 DB 1,1 ;AN000; 1 positional parm
662 DW TRANGROUP:FILE_REQUIRED ;AN000;
663 DB 1 ;AN000; 1 switch
664 DW TRANGROUP:SLASH_P_SWITCH;AN000;
665 DB 0 ;AN000; no keywords
666
667;
668; PARSE BLOCK FOR DIR
669;
670
671;
672; The following parse control block is used for the DIR internal command.
673; This command has one optional file specification and two optional
674; switches (/p and /w) as operands. The verified switch or unverified
675; file specification is returned in PARSE1_OUTPUT.
676;
677
678PARSE_DIR LABEL BYTE ;AN000;
679 DW TRANGROUP:DIR_PARMS ;AN000;
680 DB 0 ;AN000; no extra delimiter
681
682DIR_PARMS LABEL BYTE ;AN000;
683 DB 0,1 ;AN000; 1 positional parm
684 DW TRANGROUP:FILE_OPTIONAL2;AN000;
685 DB 2 ;AN000; 2 switches
686 DW TRANGROUP:SLASH_P_SWITCH;AN000;
687 DW TRANGROUP:DIR_SWITCH1 ;AN000;
688 DB 0 ;AN000; no keywords
689
690DIR_SWITCH1 LABEL BYTE ;AN000;
691 DW 0 ;AN000; no match flags
692 DW 2 ;AN000; capitalize by char table
693 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
694 DW TRANGROUP:NO_VALUES ;AN000;
695 DB 1 ;AN000; 1 keyword
696DIR_W_SYN DB "/W",0 ;AN000; /W switch
697
698;
699; PARSE BLOCK FOR RENAME
700;
701
702;
703; The following parse control block can be used for any command which
704; needs only two required file specifications as operands. Returns
705; pointers to the unverified string in PARSE1_OUTPUT.
706; Currently used for the RENAME internal command.
707;
708
709PARSE_RENAME LABEL BYTE ;AN000;
710 DW TRANGROUP:RENAME_PARMS ;AN000;
711 DB 0 ;AN000; no extra delimiter
712
713RENAME_PARMS LABEL BYTE ;AN000;
714 DB 2,2 ;AN000; 2 positional parms
715 DW TRANGROUP:FILE_REQUIRED ;AN000;
716 DW TRANGROUP:FILE_REQUIRED ;AN000;
717 DB 0 ;AN000; no switches
718 DB 0 ;AN000; no keywords
719
720;
721; PARSE BLOCK FOR CTTY
722;
723
724;
725; The following parse control block can be used for any command which
726; needs one required device name as an operand. Returns a pointer to
727; unverified string in PARSE1_OUTPUT. Currently used for the CTTY
728; internal command.
729;
730
731PARSE_CTTY LABEL BYTE ;AN000;
732 DW TRANGROUP:CTTY_PARMS ;AN000;
733 DB 0 ;AN000; no extra delimiter
734
735CTTY_PARMS LABEL BYTE ;AN000;
736 DB 1,1 ;AN000; 1 positional parm
737 DW TRANGROUP:CTTY_CONTROL1 ;AN000;
738 DB 0 ;AN000; no switches
739 DB 0 ;AN000; no keywords
740
741CTTY_CONTROL1 LABEL BYTE ;AN000;
742 DW 2000H ;AN000; string value - required
743 DW 11H ;AN000; capitalize - file table
744 ;AN000; remove colon at end
745 DW TRANGROUP:PARSE1_OUTPUT ;AN000; result buffer
746 DW TRANGROUP:NO_VALUES ;AN000;
747 DB 0 ;AN000; no keywords
748
749TRANDATA ENDS
750
751TRANCODE SEGMENT PUBLIC BYTE ;AN000;
752
753.xlist
754.xcref
755
756INCLUDE SYSMSG.INC ;AN000;
757
758.list
759.cref
760
761ASSUME DS:TRANGROUP,ES:TRANGROUP,CS:TRANGROUP
762
763MSG_UTILNAME <COMMAND> ;AN000; define utility name
764
765MSG_SERVICES <COMT,COMMAND.CLF,COMMAND.CL1,COMMAND.CL2> ;AN000; The transient messages
766
767include msgdcl.inc
768
769TRANCODE ENDS ;AN000;
770
771TRANDATA SEGMENT PUBLIC BYTE
772
773TRANDATAEND LABEL BYTE
774
775TRANDATA ENDS ;AN000;
776
777 END