2 ; SCCSID = @(#)tdata.asm 4.3 85/05/17
3 ; SCCSID = @(#)tdata.asm 4.3 85/05/17
4 TITLE COMMAND Transient Initialized
DATA
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
13 fmt
macro name
,string
,args
17 name dw offset trangroup
:a
19 dw offset trangroup
:val
25 dw offset trangroup
:sym
30 INCLUDE comsw
.asm
;AC000;
32 INCLUDE EA
.inc ;AN030;
33 INCLUDE dirent
.inc ;AN042;
43 ; WARNING: DO NOT INCLUDE DOSSYM.INC BECAUSE IT DESTROYS THE MACRO 'FMT' THAT
44 ; has been defined above - RS.
51 TRANSPACE
SEGMENT PUBLIC BYTE ;AC000;
58 EXTRN DATE_OUTPUT
:BYTE ;AC000;
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;
68 EXTRN string_ptr_2
:WORD
69 EXTRN system_cpage
:word
70 EXTRN TIME_OUTPUT
:BYTE ;AC000;
72 EXTRN vol_serial
:dword ;AN000;
75 TRANCODE
SEGMENT PUBLIC BYTE ;AC000;
83 EXTRN ADD_NAME_TO_ENVIRONMENT
:NEAR
85 EXTRN build_dir_for_prompt
:near
105 EXTRN PRINT_BACK
:NEAR
106 EXTRN PRINT_DATE
:NEAR
107 EXTRN PRINT_CHAR
:NEAR
108 EXTRN PRINT_DRIVE
:NEAR
113 EXTRN PRINT_TIME
:NEAR
114 EXTRN PRINT_VERSION
:NEAR
117 EXTRN TRUENAME
:NEAR ;AN000;
123 ; WARNING!!! No code may appear after this label!!!!
126 TranCodeLast
LABEL BYTE
129 ; Data for transient portion
131 TRANDATA
SEGMENT PUBLIC BYTE
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;
151 PUBLIC bytmes_ptr
;AN000;
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;
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;
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;
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;
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;
239 PUBLIC syntmes_ptr
;AN000;
240 PUBLIC tab_ptr
;AN000;
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;
253 CLSSTRING
DB 4,01BH,"[2J" ; ANSI Clear screen
255 PROMPT_TABLE
LABEL BYTE
263 btab
"P",build_dir_for_prompt
266 btab
"V",PRINT_VERSION
269 DB 0 ; NUL TERMINATED
271 IFTAB
LABEL BYTE ; Table of IF conditionals
272 DB 3,"NOT" ; First byte is count
273 DW OFFSET TRANGROUP
:IFNOT
275 DW OFFSET TRANGROUP
:IFERLEV
277 DW OFFSET TRANGROUP
:IFEXISTS
280 ; Table for internal command names
281 COMTAB
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
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
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
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
358 switch_list
DB "VBAPW" ; flags we can recognize
361 XA_cp
Label byte ;AN030; list for one extended attribute
363 DB EAISBINARY
;AN030; type
364 DW EASYSTEM
;AN030; flags
365 DB 2 ;AN030; name length
374 ; *****************************************************
376 ; DATA STARTING HERE WAS ADDED BY EMG FOR 4.00
377 ; FOR IMPLEMENTATION OF COMMON PARSE ROUTINE
378 ; *****************************************************
381 ; COMMON PARSE BLOCKS
385 ; Indicates no value list for PARSE.
388 NO_VALUES
DW 0 ;AN000; no values
391 ; PARSE control block for a required file specification (upper cased)
394 FILE_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
402 ; PARSE control block for an optional file specification (upper cased)
406 FILE_OPTIONAL
LABEL BYTE ;AN000;
407 DW 0301H ;AN000; filespec or drive number
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
415 ; PARSE control block for an optional file specification (upper cased)
418 FILE_OPTIONAL2
LABEL BYTE ;AN000;
419 DW 0201H ;AN000; filespec or drive number
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
427 ; PARSE control block for an optional /P switch
430 SLASH_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
436 SLASH_P_SYN
DB "/P",0 ;AN000; /P switch
440 ; PARSE BLOCK FOR BREAK, VERIFY, ECHO
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
450 PARSE_BREAK
LABEL BYTE ;AN000;
451 DW TRANGROUP
:BREAK_PARMS
;AN000;
452 DB 0 ;AN032; no extra delimiter
454 BREAK_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
460 BREAK_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
467 BREAK_VALUES
LABEL BYTE ;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
477 BREAK_ON
DB "ON",0 ;AN000;
478 BREAK_OFF
DB "OFF",0 ;AN000;
481 ; PARSE BLOCK FOR CHCP
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.
490 CHCP_MINVAL EQU
100 ;AN000;
491 CHCP_MAXVAL EQU
999 ;AN000;
493 PARSE_CHCP
LABEL BYTE ;AN000;
494 DW TRANGROUP
:CHCP_PARMS
;AN000;
495 DB 0 ;AN000; no extra delimiter
497 CHCP_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
503 CHCP_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
510 CHCP_VALUES
LABEL BYTE ;AN000;
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
520 ; PARSE BLOCK FOR DATE
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.
529 PARSE_DATE
LABEL BYTE ;AN000;
530 DW TRANGROUP
:DATE_PARMS
;AN000;
531 DB 0 ;AN000; no extra delimiter
533 DATE_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
539 DATE_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
547 ; PARSE BLOCK FOR TIME
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.
556 PARSE_TIME
LABEL BYTE ;AN000;
557 DW TRANGROUP
:TIME_PARMS
;AN000;
558 DB 0 ;AN000; no extra delimiter
560 TIME_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
566 TIME_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
575 ; PARSE BLOCK FOR VOL
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
585 PARSE_VOL
LABEL BYTE ;AN000;
586 DW TRANGROUP
:VOL_PARMS
;AN000;
587 DB 0 ;AN000; no extra delimiter
589 VOL_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
595 DRIVE_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
604 ; PARSE BLOCK FOR MKDIR, RMDIR, TYPE
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.
614 PARSE_MRDIR
LABEL BYTE ;AN000;
615 DW TRANGROUP
:MRDIR_PARMS
;AN000;
616 DB 0 ;AN000; no extra delimiter
618 MRDIR_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
625 ; PARSE BLOCK FOR CHDIR, TRUENAME
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.
635 PARSE_CHDIR
LABEL BYTE ;AN000;
636 DW TRANGROUP
:CHDIR_PARMS
;AN000;
637 DB 0 ;AN000; no extra delimiter
639 CHDIR_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
646 ; PARSE BLOCK FOR ERASE
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.
656 PARSE_ERASE
LABEL BYTE ;AN000;
657 DW TRANGROUP
:ERASE_PARMS
;AN000;
658 DB 0 ;AN000; no extra delimiter
660 ERASE_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
668 ; PARSE BLOCK FOR DIR
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.
678 PARSE_DIR
LABEL BYTE ;AN000;
679 DW TRANGROUP
:DIR_PARMS
;AN000;
680 DB 0 ;AN000; no extra delimiter
682 DIR_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
690 DIR_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
696 DIR_W_SYN
DB "/W",0 ;AN000; /W switch
699 ; PARSE BLOCK FOR RENAME
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.
709 PARSE_RENAME
LABEL BYTE ;AN000;
710 DW TRANGROUP
:RENAME_PARMS
;AN000;
711 DB 0 ;AN000; no extra delimiter
713 RENAME_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
721 ; PARSE BLOCK FOR CTTY
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
731 PARSE_CTTY
LABEL BYTE ;AN000;
732 DW TRANGROUP
:CTTY_PARMS
;AN000;
733 DB 0 ;AN000; no extra delimiter
735 CTTY_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
741 CTTY_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
751 TRANCODE
SEGMENT PUBLIC BYTE ;AN000;
756 INCLUDE SYSMSG
.INC ;AN000;
761 ASSUME
DS:TRANGROUP
,ES:TRANGROUP
,CS:TRANGROUP
763 MSG_UTILNAME
<COMMAND
> ;AN000; define utility name
765 MSG_SERVICES
<COMT
,COMMAND
.CLF
,COMMAND
.CL1
,COMMAND
.CL2
> ;AN000; The transient messages
769 TRANCODE ENDS
;AN000;
771 TRANDATA
SEGMENT PUBLIC BYTE
773 TRANDATAEND
LABEL BYTE
775 TRANDATA ENDS
;AN000;