; 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