forked from MirrorRepos/RomWBW
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
539 lines
22 KiB
539 lines
22 KiB
|
|
; Z33HDR.LIB
|
|
|
|
; This is the configuration file for the ZCPR Version 3.3 command processor.
|
|
; You should read through this file and set the equates according to the
|
|
; features you want to implement. Since the command processor is limited to
|
|
; no more than 2K (2048 bytes), it is impossible to include all features.
|
|
|
|
; Basic definitions
|
|
|
|
no equ 0
|
|
yes equ not no
|
|
off equ no
|
|
on equ yes
|
|
|
|
rel equ yes ; This equate MUST be set to YES if assembling
|
|
; to a REL file, and it MUST be set to NO if
|
|
; assembling to a HEX or COM file.
|
|
|
|
|
|
;=============================================================================
|
|
;
|
|
; R E S I D E N T C O M M A N D S S E L E C T I O N
|
|
;
|
|
;=============================================================================
|
|
|
|
; Commands to include in the command processor
|
|
|
|
; The primary function of the command processor is to interpret user commands.
|
|
; Providing resident command functions is secondary. As the command processor
|
|
; has evolved to provide ever more advanced command processing functions, there
|
|
; has been correspondingly less room for resident command code in the
|
|
; processor. We recommend that you opt for most if not all of the advanced
|
|
; processing features and leave the resident command code to the resident
|
|
; command processor (RCP) module and to transient programs (COM files).
|
|
;
|
|
; There are some interrelations between a number of the possible resident
|
|
; commands. Some are so close (LIST and TYPE) that a single equate controls
|
|
; both functions. Others like DIR and ERA share code (both display file
|
|
; listings). It is efficient to select or deselect them together. The RCP
|
|
; has the room to provide more elaborate capabilities. Therefore, it makes
|
|
; sense to choose for the CPR those resident commands that are intrinsically
|
|
; simple, (e.g., NOTE) or which depend on intrinsic command processing code
|
|
; (e.g., GET, GO, JUMP).
|
|
|
|
|
|
diron equ no ; DIR command to display disk directory
|
|
eraon equ no ; ERA command for deleting files
|
|
geton equ yes ; GET command for loading a file to a general address
|
|
goon equ yes ; GO command to execute code in TPA (at 100h)
|
|
jumpon equ yes ; JUMP command to execute code at a general address
|
|
lton equ no ; LIST and TYPE commands for file printing and display
|
|
noteon equ no ; NOTE command for comments in multiple command lines
|
|
renon equ no ; REN command for changing names of files
|
|
saveon equ no ; SAVE command for saving TPA to files
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Wheel control over accessibility of commands
|
|
|
|
; To prevent unauthorized users from performing certain dangerous or sensitive
|
|
; operations on the computer, ZCPR33 provides the capability of disabling the
|
|
; operation of certain commands when the wheel byte is off. In ZCPR30, an
|
|
; attempt to use one of these wheel-protected commands when the wheel byte was
|
|
; off resulted in an error message. In ZCPR33 things work differently. In the
|
|
; same situation, the command simply disappears. In this way a transient
|
|
; program or extended command processor function can take over and deal with
|
|
; the attempt to use the command in a much more flexible way.
|
|
;
|
|
; Wheel-protected commands in ZCPR30 had extra code to intercept the function
|
|
; and disable it. In ZCPR33, wheel protection is enabled and disabled in a
|
|
; different way. To wheel-protect a command the high bit of the first
|
|
; character in the command name is set. The command table scanner in ZCPR33
|
|
; will not recognize these commands when the wheel byte is off. Since the same
|
|
; command scanner is used to scan the commands in the RCP and FCP (flow control
|
|
; package), commands there can be wheel protected in the same way. For skilled
|
|
; computer operators it is very easy to use a debugger, file patcher, or disk
|
|
; utility to enable and disable wheel protection without having to reassemble
|
|
; the CPR, RCP, or FCP.
|
|
;
|
|
; Because of the way the command scanner works, once one command is wheel
|
|
; protected, there is no further code penalty in protecting other commands.
|
|
; Therefore, we recommend protecting all possibly sensitive commands or none.
|
|
|
|
|
|
wdir equ no ; Wheel-protect DIR
|
|
wera equ yes ; " " ERA
|
|
wget equ yes ; " " GET
|
|
wgo equ yes ; " " GO
|
|
wjump equ yes ; " " JUMP
|
|
wren equ yes ; " " REN
|
|
wsave equ yes ; " " SAVE
|
|
wlt equ yes ; " " LIST and TYPE
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Command names
|
|
|
|
; The CTABLE macro, which constructs the command dispatch table, includes a
|
|
; line for each command, the first parameter of which is the name of the
|
|
; command. These names may be changed if you wish. But make sure that you
|
|
; do not use a name that is longer than the maximum allowed length. If you
|
|
; do, the name will be truncated and a nonfatal error will occur during
|
|
; assembly. DO NOT CHANGE ANY PARAMETER OTHER THAN THE COMMAND NAME. Lower
|
|
; case letters will be converted to upper case. The macro COMMAND is defined
|
|
; in Z33MAC.LIB.
|
|
|
|
cmdsize equ 4 ; Maximum length of command names
|
|
|
|
; Command table name, enable, wheel, jump_addr
|
|
; [ DO NOT CHANGE THESE PARAMETERS ]
|
|
ctable macro
|
|
command DIR, diron, wdir, dir
|
|
command ERA, eraon, wera, era
|
|
command GET, geton, wget, get
|
|
command GO, goon, wgo, go
|
|
command JUMP, jumpon, wjump, jump
|
|
command LIST, lton, wlt, list
|
|
command NOTE, noteon, false, note
|
|
command REN, renon, wren, ren
|
|
command SAVE, saveon, wsave, save
|
|
command TYPE, lton, wlt, type
|
|
endm
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; DIR command options
|
|
|
|
wide equ yes ; Wide display for 80-column terminals
|
|
fence equ '|' ; Separator to use between columns of names
|
|
allchar equ 'A' ; Option letter (must be upper case) for
|
|
; showing SYS and DIR files
|
|
syschar equ 'S' ; Option letter (must be upper case) for
|
|
; showing only SYS files
|
|
slashfl equ yes ; Allow forms "DIR /S" and "DIR /A"?
|
|
whldir equ yes ; Allow display of SYS files only if wheel set
|
|
|
|
; Do not change
|
|
|
|
whldir defl whldir and diron
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; ERA command options
|
|
|
|
; There are options that control whether or not and in what way the user will
|
|
; be prompted before files are erased. If ERAOK is off, then there will never
|
|
; by any prompting. If ERAOK is on and INSPFL is off, then the user will be
|
|
; prompted before all deletions. If INSPFL is also on, then the user will be
|
|
; prompted only when the prompt option character is included on the command
|
|
; line. If this character is defined to be a blank space, then any character
|
|
; will turn on prompting.
|
|
|
|
eraok equ on ; Enable prompting before files are erased
|
|
inspfl equ on ; Enable command-line inspection flag
|
|
inspch equ ' ' ; Character to use (must be upper case) to
|
|
; invoke inspection. If this is set to
|
|
; ' ' (space character), then any character
|
|
; after the files spec will turn on the
|
|
; inspect option.
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; GET command options
|
|
|
|
fullget equ yes ; If yes, no memory checks are performed with
|
|
; the GET command (files can even overwrite the
|
|
; command processor or page 0).
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; SAVE command options
|
|
|
|
sectch equ ' ' ; Option character (must be upper case) to
|
|
; select saving of sectors. If set to ' '
|
|
; (space), then any character will select the
|
|
; sector-save option.
|
|
|
|
bellfl equ yes ; If yes, bell will ring for SAVE and REN
|
|
; commands when the file already exists.
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; TYPE command options
|
|
|
|
pagefl equ yes ; If enabled, normally page the output. If not
|
|
; enabled, page output only when paging toggle
|
|
; character is present.
|
|
pagech equ 'P' ; Option character (must be upper case) to
|
|
; toggle paging. If it is set to ' '
|
|
; (space), then any character will toggle
|
|
; the paging mode
|
|
|
|
|
|
;=============================================================================
|
|
;
|
|
; C O M M A N D P R O C E S S I N G O P T I O N S
|
|
;
|
|
;=============================================================================
|
|
|
|
; ZCPR33 has many more command processing options than did ZCPR30. These are
|
|
; controlled by the following equates.
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Environment access
|
|
|
|
; In ZCPR30 the command processor knew about its environment only at the time
|
|
; it was assembled. Therefore, all aspects of the environment were fixed.
|
|
; Loading a new ENV module might change the way a transient program would
|
|
; function (for example by changing the maximum drive and user values that
|
|
; would be accepted), but the command processor would not recognize these
|
|
; changes. ZCPR33 can be made to recognize dynamically several possible
|
|
; changes in the environment.
|
|
|
|
duenv equ yes ; If enabled, the CPR will get the values of
|
|
; the maximum drive and user to recognize from
|
|
; the environment descriptor
|
|
|
|
aduenv equ yes ; If enabled, the CPR will use the DUOK flag
|
|
; byte in the environment to determine
|
|
; whether or not to accept DU: references
|
|
|
|
inclenv equ no ; If enabled, inclusion of the DU in the
|
|
; prompt will be controlled by the DUOK flag
|
|
|
|
; The following three functions, if enabled, allow one to dynamically trade off
|
|
; buffer space between named directories, resident commands, and flow control.
|
|
; By executing a command like "LDR NEW.ENV,NEW.RCP,NEW.FCP,NEW.NDR" one can
|
|
; temporarily expand the capabilities of one module at the expense of another.
|
|
; To use these capabilities, the three buffers must be contiguous in memory.
|
|
; Since making such changes can be risky, it is recommended that it be done
|
|
; only with aliases, so that all necessary changes get made automatically and
|
|
; at the same time.
|
|
|
|
fcpenv equ yes ; If enabled, the CPR will determine the address
|
|
; of the FCP (flow command package) from the
|
|
; environment descriptor.
|
|
|
|
rcpenv equ yes ; If enabled, the CPR will determine the address
|
|
; of the RCP (resident command package) from
|
|
; the environment descriptor.
|
|
|
|
ndrenv equ yes ; If enabled, the CPR will determine the address
|
|
; of the NDR (named directory registers) from
|
|
; the environment descriptor.
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Control over types of files to load and run as transient programs.
|
|
|
|
comtyp macro ; The file type for executable files (this will
|
|
db 'COM' ; be changed only in the most unusual
|
|
endm ; situtations). This file type will also apply
|
|
; to the extended command processor.
|
|
|
|
attchk equ no ; If enabled, the command processor can be made
|
|
; to recognize as executable files only those
|
|
; with particular attributes (defined by the
|
|
; COMATT equate below).
|
|
|
|
comatt equ 0 ; 0 = system, 80h = DIR (01h will give both,
|
|
; but in that case setting ATTCHK to false will
|
|
; give the same result with less code).
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Batch processing using the submit facility. This takes up quite a bit of
|
|
; space in the command processor, and you may wish to omit it. Most of the
|
|
; type of processing that submit can do can be accomplished using either the
|
|
; the memory-based ZEX batch processor or command-line scripts (aliases).
|
|
|
|
subon equ yes ; If enabled, the command processor will
|
|
; process submit files.
|
|
|
|
subnoise equ 0 ; If 0, submit lines, like command lines
|
|
; generated by aliases, will not be echoed
|
|
; to the screen. If 1, then echoing will
|
|
; be controlled by the ENV QUIET flag. If more
|
|
; than 1, submit command lines will always
|
|
; be echoed.
|
|
|
|
subclue equ no ; If yes, use the flag returned by the DOS
|
|
; as a clue to the existence of a submit file
|
|
; (some versions of ZRDOS -- including 1.7 --
|
|
; do not return the correct value, in which
|
|
; case 'no' should be used here). The speed
|
|
; advantage to using 'yes' is probably not
|
|
; great.
|
|
|
|
sprmpt equ ']' ; CPR prompt indicating submit command
|
|
|
|
subtyp macro ; The file type for the '$$$' file used by the
|
|
db 'SUB' ; submit processor (this will very rarely be
|
|
endm ; changed)
|
|
|
|
; WARNING -- the following equate should not be changed from 'A' unless you
|
|
; know what you are doing!
|
|
|
|
subdrv equ 'A' ; Drive to use for submit file (normally this
|
|
; will be 'A', but in special cases, such as
|
|
; when there is a RAM disk, you might want to
|
|
; specify another drive)
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; PATH options -- ZCPR searches for user programs along a path of directories
|
|
; specified in the path buffer. Because of the efficiency it adds, the
|
|
; minpath (minimum path) is not an option in ZCPR33 but is always in effect.
|
|
; This minimum path eliminates duplicate references that can arise in several
|
|
; ways and otherwise cause a useless search of a directory a second or third
|
|
; time.
|
|
|
|
drvprefix equ yes ; If enabled, an explicit DU: or DIR: prefix on
|
|
; a command verb will be recognized and made
|
|
; the first element of the command search path.
|
|
|
|
scancur equ no ; If enabled, the currently logged directory
|
|
; will always be added to the beginning of the
|
|
; symbolic path (we advise disabling this
|
|
; option -- you can always include '$$' in the
|
|
; path, but then you can omit it when you wish
|
|
; and you can control its position in the path,
|
|
; searching your main directories first). See
|
|
; the Z33 User Guide for special precautions
|
|
; required when SCANCUR is off.
|
|
|
|
; In order to save space in the CPR for valuable code, the minpath can be
|
|
; built in a memory buffer external to the CPR. If your symbolic path has
|
|
; no more than 10 elements, the minpath will automatically be built at the
|
|
; bottom of the external stack. Otherwise, if you want an external minpath,
|
|
; you must set the EXTMPATH symbol to yes and supply the address of the memory
|
|
; to use. The memory requirement is twice the length of the symbolic path
|
|
; (see Z3BASE.LIB or run SHOW to get this value) plus 2 if SCANCUR is enabled
|
|
; plus 2 if DRVPREFIX is enabled, plus 1 for the ending null.
|
|
|
|
extmpath equ no ; If yes, the minpath will be built in a buffer
|
|
; external to the command processor at an
|
|
; address supplied in the next definition.
|
|
|
|
extmpathadr equ 0 ; If EXPMPATH is enabled, provide the address
|
|
; of the external buffer here.
|
|
|
|
; Do not change the following code
|
|
|
|
if [ expaths le 10 ]
|
|
extmpath defl yes ; Automatic placement of minpath
|
|
extmpathadr defl extstk ; ..at bottom of external stack
|
|
endif
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Control over the acceptance and display of drive/user and named directory
|
|
; forms. With the options provided in ZCPR33 it is quite easy to provide a
|
|
; fully secure system with the DU form enabled. The DU form is often the only
|
|
; one recognized by non-ZCPR programs and is often more convenient and natural
|
|
; to use. We, therefore, recommend that both DU and DIR forms be allowed and
|
|
; displayed. Processing of DIR forms will not be carried out, obviously, if
|
|
; the named directory register (NDR) is not implemented in the system.
|
|
|
|
accptdu equ yes ; Accept DU: form in command lines
|
|
accptdir equ yes ; Accept DIR: form in command lines
|
|
dufirst equ no ; If enabled, the DU form will be checked
|
|
; before the DIR form.
|
|
|
|
incldu equ yes ; Include DU in prompt
|
|
incldir equ yes ; Include DIR in prompt
|
|
|
|
|
|
; Do not change the following
|
|
|
|
incldir defl incldir and [z3ndir ne 0]
|
|
accptdir defl accptdir and [z3ndir ne 0]
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Security matters
|
|
|
|
|
|
pwcheck equ yes ; If enabled, passwords on named directories
|
|
; will be checked for DIR forms in the command
|
|
; verb and the first two command-line tokens.
|
|
; If disabled, passwords will not be checked
|
|
; even if a directory has a password defined.
|
|
|
|
pwnoecho equ yes ; If yes, the BIOS conout routine will be
|
|
; disabled during password input so that the
|
|
; password will not be echoed to the screen.
|
|
; This does involves poking in the BIOS and
|
|
; could in rare instances cause problems.
|
|
|
|
wdu equ no ; If enabled, the DU: and DIR: forms will not
|
|
; be allowed for changing the logged directory
|
|
; unless the wheel byte is set.
|
|
|
|
wpass equ yes ; If enabled, password checking of named
|
|
; directories is bypassed when the wheel byte
|
|
; is set.
|
|
|
|
wprefix equ no ; If set, this option will effectively turn
|
|
; off DRVPREFIX when the wheel byte is off.
|
|
; Explicit drive prefixes will then be allowed
|
|
; only when the wheel byte is set. Otherwise
|
|
; they will be ignored except that ECPs will
|
|
; not be invoked if a prefix was present.
|
|
|
|
; Do not change the next lines
|
|
|
|
pwcheck defl pwcheck and [ z3ndir ne 0 ]
|
|
pwnoecho defl pwnoecho and pwcheck
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Advanced command processing options
|
|
|
|
highuser equ no ; If yes, the command processor will log into
|
|
; user numbers higher than 15 (up to 31).
|
|
; WARNING: BECAUSE CP/M USES A SINGLE BYTE AT
|
|
; ADDRESS 0004H TO KEEP BOTH DRIVE AND USER,
|
|
; PROGRAMS THAT USE THAT BYTE TO DETERMINE
|
|
; THE DEFAULT DU MAY NOT RUN PROPERLY WHEN ONE
|
|
; IS LOGGED INTO A USER NUMBER ABOVE 15.
|
|
|
|
skippath equ yes ; If yes, command verbs with an explicit DU: or
|
|
; DIR: prefix will not use the search path; if
|
|
; the command is not found in the specified
|
|
; directory, the error handler will be invoked
|
|
; immediately (no path and no ECP).
|
|
|
|
fastecp equ yes ; If yes, command verbs with leading spaces will
|
|
; be executed directly by the ECP (saves the
|
|
; time of searching the path for a COM file
|
|
; when one knows the command is for the ECP).
|
|
|
|
altspace equ yes ; If yes, the alternate character, ECPCHAR, can
|
|
; also be used to invoke ECP processing
|
|
; immediately (FASTECP must be enabled).
|
|
|
|
altonly equ no ; If ALTSPACE is on, then if ALTONLY is also
|
|
; on, the alternate character the only one that
|
|
; will invoke fast ECP processing (spaces will
|
|
; not).
|
|
|
|
ecpchar equ '/' ; Alternate (or required) character for fast ECP
|
|
; invocation.
|
|
|
|
altcolon equ yes ; If enabled, an alternate character (period
|
|
; recommended) can be used in place of a colon
|
|
; to make the CPR skip resident commands and
|
|
; add the current directory to the search path.
|
|
|
|
altchar equ '.' ; Character that serves as an alias for leading
|
|
; colon if it is the first non-blank character
|
|
; in the command.
|
|
|
|
badduecp equ yes ; If yes, pass commands that try to log into a
|
|
; bad directory to the ECP for processing; if
|
|
; set to NO, invoke the error handler
|
|
; immediately under these circumstances.
|
|
|
|
; WARNING -- do not change the following equate from 'no' unless you
|
|
; know what you are doing!
|
|
|
|
shellif equ no ; If yes, flow control processing can take
|
|
; place in shell aliases (complex command
|
|
; sequences being used as a shell). The
|
|
; penalty is that each time the shell runs,
|
|
; the entire flow control system is
|
|
; reinitialized. Flow control information
|
|
; will not persist across shell invocations.
|
|
; If SHELLIF is off, flow commands in shell
|
|
; aliases will not be recognized as FCP
|
|
; commands (they will be flushed) and,
|
|
; therefore, should not be used.
|
|
|
|
; Do not change the following
|
|
|
|
skippath defl skippath and drvprefix
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Extended command processing
|
|
|
|
; The extended command processor comes into effect when a way to process a
|
|
; command verb has still not been found after the entire search path for a
|
|
; COM file has been exhausted. The entire user command is taken as the
|
|
; command tail on the extended command processor. In ZCPR30 one could either
|
|
; have extended command processing OR error handling. In ZCPR33 one can, and
|
|
; should, have both.
|
|
|
|
rootonly equ yes ; If yes, the command processor looks for the
|
|
; ECP only in the directory specified as the
|
|
; last one in the path instead of scanning the
|
|
; entire path for the ECP.
|
|
|
|
; The following macro defines the name of the ECP. Rename your favorite
|
|
; ECP (ours is ARUNZ) to CMDRUN.COM or whatever name you put in below.
|
|
|
|
ecpname macro
|
|
db 0 ; Drive (do not change this from 0)
|
|
db 'CMDRUN ' ; Name of ECP program (exactly 8 characters)
|
|
; '--------' ; (Eight-character space marker)
|
|
endm
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
; Miscellaneous equates
|
|
|
|
|
|
cmdsep equ ';' ; Separator between multiple commands
|
|
|
|
; The following two equates are used only if the equates to get this
|
|
; information from the environment descriptor are not enabled.
|
|
|
|
maxusr equ 31 ; Maximum user number accessible
|
|
maxdisk equ 4 ; Maximum number of disks accessible
|
|
|
|
supres equ false ; Supresses user number in prompt for user 0
|
|
|
|
cprmpt equ '>' ; CPR prompt indicating user command
|
|
|
|
numbase equ 'H' ; Character used to designate a hexadecimal
|
|
; number in the SAVE command
|
|
|
|
curind equ '$' ; Symbol in symbolic path for current disk
|
|
; or user
|
|
|
|
comment equ ';' ; Lines beginning with this character are
|
|
; treated as comments
|
|
|
|
; Definition equates
|
|
|
|
wheel defl wera or wren or wlt or wgo or wsave or wget or wjump or wdir
|
|
|
|
path equ expath ; Definition from Z3BASE.LIB
|
|
|
|
; End of Z33HDR.LIB
|
|
|
|
|