; Z3HDR - Minimum Configuration
; Offset:  4100H

*************************************************************************
*                                                                       *
*  Z C P R 3 -- Z80-Based Command Processor Replacement, Version 3.0    *
*                                                                       *
*  Copyright (c) 1984 by Richard Conn                                   *
*  Copyright Pending, US Government                                     *
*  All Rights Reserved                                                  *
*                                                                       *
*  ZCPR3 was written by Richard Conn, who assumes no responsibility     *
*  or liability for its use.  ZCPR3 is released to the CP/M user        *
*  community for non-commercial use only.                               *
*                                                                       *
*  All registered users of CP/M are encouraged to freely copy and use   *
*  ZCPR3 and its associated utilities on their registered systems for   *
*  non-commercial purposes.                                             *
*                                                                       *
*  Any commercial use of ZCPR3 is prohibited unless approved by the     *
*  author, Richard Conn, or his authorized agent, Echelon, Inc, in      *
*  writing.                                                             *
*                                                                       *
*  This is the RELEASE VERSION of ZCPR3.                                *
*                                                                       *
*************************************************************************

;
;  Module:  Z3HDR
;  Author:  Richard Conn
;  Module Used By:  ZCPR3 Version 3.x
;  Note:  Z3HDR contains the key customization equates for ZCPR3.  These
;       equates allow the user to select various ZCPR3 options and do an
;       extensive amount of tailoring of ZCPR3 to the user's desires.
;

;
;  1. BASIC SYSTEM DEFINITIONS
;
;       The following equates may be used to customize this CPR for the user's
; system and integration technique.  The following equate are provided:
;
;    REL - TRUE if integration is to be done via MOVCPM
;        - FALSE if integration is to be done via DDT and SYSGEN
;
;    CPRLOC - Base Page Address of CPR; this value can be obtained by running
;             the CCPLOC program on your system, and if REL is FALSE, this
;             value is supplied through the Z3BASE.LIB CCP equate
;
REL     EQU     FALSE
;
       IF      REL
CPRLOC  EQU     0
       ELSE
CPRLOC  EQU     CCP     ;VALUE PROVIDED IN Z3BASE.LIB
       ENDIF

;
;  2. DEFAULT FILE TYPES
;
;       The following macros define the file types of the command object files
; (COM files under CP/M 2.2) to be loaded when a non-resident ZCPR3 command
; is given and of the indirect command files (SUB files under CP/M 2.2) to
; be used to extract commands from when the indirect command facility is
; invoked.
;
COMTYP  MACRO
       DB      'COM'
       ENDM

SUBTYP  MACRO
       DB      'SUB'
       ENDM

;
;  3. SUBMIT FILE PROCESSING
;
;       The following flag enables the ability of ZCPR3 to process
; SUBMIT files (command files of the form $$$.SUB).  If SUBON is TRUE, then
; ZCPR3 will process such files like CP/M's CCP normally does; if SUBON is
; FALSE, ZCPR3 will not process such files (ignore them).  In such a case,
; only indirect command file facilities like ZEX will work.  Much code is
; saved inside of the ZCPR3 Command Processor if SUBON is set to FALSE,
; but this rather useful facility is lost.
;
SUBON   EQU     TRUE


;
;  4. COMMAND PREFIX
;
;       The following flag allows ZCPR3 to accept commands of the form
; "du:command params" or "dir:command params".  If DRVPREFIX is TRUE,
; this form is accepted; if FALSE, this form is not accepted.
;
DRVPREFIX       equ     TRUE


;
;  5. COMMAND ATTRIBUTES
;
;       The following equate allows the user to select the attributes of the
; COM files which are selected for execution.  The ZCPR3 Command Processor
; can be made to execute only COM files with the System attribute set, with
; the Directory (non-System) attribute set, or with either attribute set.
; The following values are defined for this equate:
;
;                 COMATT        Files Selected
;                   0           System
;                  80H          Directory
;                   1           Both System and Directory
;
COMATT  equ     01H


;
;  6. ZCPR3 RESIDENT COMMAND ACTIVATION AND WHEEL FACILITY
;
;       The following equates enable various ZCPR3-resident commands.
; The user may invoke these as desired, but should keep in mind the size
; of the resulting ZCPR3 and make sure it does not exceed the required
; limits.
;
DIRON   equ     FALSE   ;DIR COMMAND
LTON    equ     TRUE    ;LIST, TYPE COMMANDS
GOON    equ     TRUE    ;GO COMMAND
ERAON   equ     TRUE    ;ERA COMMAND
SAVEON  equ     FALSE   ;SAVE COMMAND
RENON   equ     FALSE   ;REN COMMAND
GETON   equ     FALSE   ;GET COMMAND
JUMPON  equ     FALSE   ;JUMP COMMAND
NOTEON  equ     TRUE    ;NOTE COMMAND

;
;  The Wheel equate table enables the WHEEL facility of ZCPR3.  With this
;  facility, a WHEEL BYTE, which exists somewhere in memory, is examined
;  before a set of installer-selected commands are executed.
;  If this byte is not zero, then the command proceeds.  If it is zero,
;  then the command is not allowed to proceed and is exited with an error
;  message.
;
;  The following set of equates make each of the indicated commands
;  selectable to respond to the Wheel Byte or not.  For instance, if
;  WERA=TRUE, then it responds to the Wheel Byte; if WERA=FALSE, it does not.
;
       IF      Z3WHL NE 0      ;IF A WHEEL BYTE ADDRESS IS DEFINED
WERA    equ     FALSE   ;Make ERA a Wheel-Oriented Command
WREN    equ     FALSE   ; "   REN "   "       "       "
WLT     equ     FALSE   ; "   L/T "   "       "       "  (LIST/TYPE)
WGO     equ     FALSE   ; "   GO  "   "       "       "
WSAVE   equ     FALSE   ; "   SAVE "  "       "       "
WGET    equ     FALSE   ; "   GET "   "       "       "
WJUMP   equ     FALSE   ; "   JUMP "  "       "       "
WDU     equ     FALSE   ; "   DU: "   "       "       " (DU/DIR Change)
WHEEL   equ     WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU
       ENDIF           ;Z3WHL

;
;  7. ZCPR3 RESIDENT COMMAND TABLE
;
;       This table consists of the names of the various ZCPR3-resident
; commands and their addresses.  The NCHARS equate defines how many
; characters long each name may be, and all table entries must be exactly
; the indicated number of characters (trailing spaces are used to fill
; out shorter names).
;
;       Each table entry is structured as follows:
;
;               DB      'CMND'  ;Name of Command (NCHARS long)
;               DB      CMNDADR ;Address of Command within ZCPR3
;
;       The installer should only change the names of the commands as
; desired and should not, as a rule, touch the address definition since
; this is fixed within the body of ZCPR3.
;
NCHARS  EQU     4               ;NUMBER OF CHARS/COMMAND

CTABLE  MACRO
;
       IF      DIRON
       DB      'DIR '
       DW      DIR             ;DIRECTORY DISPLAY COMMAND
       ENDIF
;
       IF      LTON
       DB      'LIST'
       DW      LIST            ;LIST FILE ON PRINTER COMMAND
       DB      'TYPE'
       DW      TYPE            ;TYPE FILE ON CONSOLE COMMAND
       ENDIF
;
       IF      GOON
       DB      'GO  '
       DW      GO              ;EXECUTE CURRENT TPA COMMAND
       ENDIF
;
       IF      ERAON
       DB      'ERA '
       DW      ERA             ;ERASE FILES COMMAND
       ENDIF
;
       IF      SAVEON
       DB      'SAVE'
       DW      SAVE            ;SAVE TPA COMMAND
       ENDIF
;
       IF      RENON
       DB      'REN '
       DW      REN             ;RENAME FILES COMMAND
       ENDIF
;
       IF      GETON
       DB      'GET '
       DW      GET             ;LOAD FILE INTO TPA COMMAND
       ENDIF
;
       IF      JUMPON
       DB      'JUMP'
       DW      JUMP            ;JUMP TO ANY MEMORY LOCATION COMMAND
       ENDIF
;
       IF      NOTEON
       DB      'NOTE'
       DW      NOTE            ;NOTE - NULL COMMAND (NOP)
       ENDIF
;
       ENDM


;
;  8. CONTROLS ON ZCPR3 RESIDENT COMMANDS
;
;       The following sets of equates provide special controls and
; parameters on various ZCPR3-resident commands.
;

;
;       The following equates set the width of the spacing between the
; file names for the DIR command and the character used to separate file
; names from one another on the same line.
;
;       Assuming that FENCE is set to the character '|', If WIDE is TRUE,
; then the output will look like:
;
;               filename.typ__|__filename.typ ...
;
; while if WIDE is FALSE, the output will look like:
;
;               filename.typ_|_filename.typ ...
;
; (underscore represents a space)
;
WIDE    EQU     TRUE
FENCE   EQU     '|'

;
;       The following equates define two flags which are used in
; conjunction with the DIR command on the command line.  SYSFLG is
; the character used to indicate to DIR that all files, both System
; and Non-System, are to be displayed.  SOFLG is the character used
; to indicate to DIR that only the System files are to be displayed.
; By default, DIR displays non-System files.
;
;       For example, if SYSFLG is set to 'A' and SOFLG is set to
; 'S', then:
;               DIR *.COM A
;
; displays all COM files with both System and non-System attributes
; while:
;               DIR *.COM S
;
; displays only COM files with the System attribute.  Naturally:
;
;               DIR *.COM
;
; displays only COM files with the non-System attribute.
;
SYSFLG  EQU     'A'
SOFLG   EQU     'S'

;
;       The following equate causes ERA to confirm the files to be erased
; before it goes ahead and erases them.  If ERAOK is TRUE, then the user
; will be prompted each time; if it is FALSE, then the user will not be
; prompted.
;
ERAOK   equ     FALSE

;
;       If ERAOK is TRUE, the following equate adds a Verify option to the
; ERA command which causes the user to be prompted only if the Verify
; option letter, defined by ERDFLG, is given after the file name.  If
; ERAV is TRUE, then the user will be asked to verify only when ERDFLG
; is contained in the command line; if ERAV is FALSE, the user will always
; be asked to verify.
;
;       For example, if ERAOK is TRUE, ERAV is TRUE, and ERDFLG is 'V',
; then the command:
;                       ERA *.* V
; will result in the file names being displayed and the user being asked
; for verification.  If the V option were not given, the user would not
; be asked for verification.
;
ERAV    equ     FALSE
ERDFLG  equ     'V'

;
;       The following equates set the paging parameters for the TYPE
; command.
;
;       PGDFLT determines if TYPE pages by default.  If PGDFLT is TRUE,
; then:
;               TYPE FILE.TXT
;
; will be paged.  If PGDFLT is FALSE, the above command will not be paged.
;
;       PGDFLG defines the option character in the TYPE command line which
; is used to toggle the default set by PGDFLT.  Assuming that PGDFLG is set
; to 'P', then:
;               TYPE FILE.TXT P
;
; will page the file listing if PGDFLT is FALSE and not page it if PGDFLT is
; TRUE.
;
PGDFLT  EQU     TRUE
PGDFLG  EQU     'P'

;
;       The following equate defines the number of lines on the user's CRT
; screen for use by the TYPE command when it is paging.  This value is usually
; 24.
;
NLINES  EQU     24

;
;       The following equate defines the option letter used with the
; SAVE command to indicate that the associated number is 128-byte sectors
; as opposed to 256-byte pages.  For example, if SECTFLG is set to 'S', then:
;
;               SAVE 25 FILE.BIN S
;
; save 25 128-byte sectors starting at location 100H into the file named
; FILE.BIN.  IF the S option was not present, SAVE would have saved 25
; 256-byte blocks starting at location 100H into the file named FILE.BIN.
;
SECTFLG EQU     'S'

;
;  9. PATH DEFINITION
;
;       The following equate specifies the address of the PATH to be followed
; for the PATH command-search if the PATH is to be initialized by the BIOS
; and set by the user via a PATH.COM program.  The value of PATH should
; be the address of the PATH data area in memory.  If the internal PATH
; provided by ZCPR3 is to be used, then PATHBASE should be equated to 0,
; which selects the PATH located just after the MEMLOAD routine.  If the
; external PATH is to be used, then PATHBASE should be set to the address
; of the external path.
;
;       A PATH is a series of byte-pairs, terminated by a binary 0.  The first
; byte of each pair is the disk number (1-16 for disks A-P), and the second
; byte of each pair is the user number (0-31).  The special character '$'
; indicates the current user or current disk.  For example, the path
; from current disk/current user to current disk/user 0 to disk A/user 0
; is selected by the following sequence:
;
;               DB      '$$'    ;current disk/user
;               DB      '$',0   ;current disk/user 0
;               DB      1,0     ;disk A/user 0
;               DB      0       ;end of path
;
       IF      EXPATH NE 0     ;External Path Selected
;
;  This equate defines the base address of the external path
;
PATH    equ     EXPATH          ;External ZCPR3 PATH at CBIOS Buffer Area

       ELSE                    ;Internal Path Selected
;
;  The following macro defines the n-element internal path
;
IPATH   MACRO
       db      'A'-'@','$'     ;Disk A, Current User
       db      'A'-'@',0       ;Disk A, User 0
       db      0               ;End of Path -- MUST be here
       ENDM
;
       ENDIF

;
;       The following flag enables ZCPR3 to perform an optimized path
; search when it is searching along a path for a file.  If this equate
; is TRUE, ZCPR3 will build a path in memory of absolute entries (A1, B7, etc)
; from the symbolic path (one containing '$') which is the path it would
; otherwise use.  This new path would contain no duplicate path elements,
; where a symbolic path analysis may.  For example, if the path is:
;
;               db      'A'-'@','$'     ;disk A, current user
;               db      'A'-'@',15      ;disk A, user 15
;               db      0
;
; then if the user is logged into A15, setting the below equate to TRUE
; would allow ZCPR3 to build the path:
;
;               db      'A'-'@',15      ;only one entry
;               db      0
;
; in the analysis of this symbolic path, while with this equate FALSE,
; ZCPR3 may log into A15 as many as three times (once for the default
; and twice more for the symbolic path) in looking for a file which is
; not found before it gives up.  Using this minimum path facility costs
; some code in ZCPR3, but it speeds up processing noticably in some cases.
;
;       Enable this equate if MINIMUM PATH SEARCH is to be employed.
;
MINPATH EQU     TRUE

;
;       In searching for a file along a path, ZCPR3 can be commanded
; to always look in the current logged-in directory before beginning
; the path search.  This equate controls this feature.  If SCANCUR
; is set to TRUE, the current directory need never be referenced in
; a symbolic path expression (DB '$','$') since SCANCUR insures that
; the current directory is scanned.
;
;       Enable this equate if the current DU is always to be scanned.
;
SCANCUR EQU     TRUE


;
; 10. DU AND DIR CONTROLS
;

;
;       The following equate enables the appearance of the current disk/user
; in the ZCPR3 prompt.  If set to FALSE, the prompt appears as '>' (assuming
; > is the current value of CPRMPT).  If set to TRUE, the prompt appears
; as 'd>' or 'dn>'.  (see INCLNDR below)
;
INCLDU  equ     TRUE

;
;       The following equate allows ZCPR3 to accept the DU: prefix or
; login form for input.  Set this to TRUE if DU: prefix is to be allowed.
;
;       Setting this equate to TRUE allows the following forms:
;
;               A>B1:
;               A>TYPE B4:FILE.TXT
;               A>B:
;               A>1:
;
ACCPTDU EQU     TRUE

;
;       This equate enables ZCPR3 to process DIR: forms internally
; through the memory-based named directory buffer.  This equate and
; the NDBASE address should be TRUE (non-zero) in order to enable
; ZCPR3 to process named directories.
;
;       If NDINCP is TRUE, the following forms are allowed:
;
;               A>ROOT:
;               A>TYPE TEXT:FILE.TXT
;
; if the other associated equates (below) are set correctly.
;
NDINCP  EQU     TRUE

;
;       The following equate will cause the name of the current directory
; to be displayed as part of the prompt along with the DU form if enabled.
; (see INCLDU above)
;
;       For example, if INCLNDR is TRUE, the prompt would look like:
;
;               B7:TEXT>        -- if INCLDU is also TRUE
;               TEXT>           -- if INCLDU is FALSE
;
INCLNDR EQU     TRUE

;
;       The following equate allows ZCPR3 to accept the DIR: prefix or
; login form for input.  Set this to TRUE if DIR: prefix is to be allowed.
;
;       Setting this equate to TRUE allows the following forms:
;
;               A>ROOT:
;               A>TYPE TEXT:FILE.TXT
;
ACCPTND EQU     TRUE

;
;       The following equate determines the hierarchy of DU:/DIR: evaluation.
; Set this to TRUE if DU: is to be tested for before DIR: or set this to
; FALSE if DIR: is to be tested for before DU:.  If this is FALSE, named
; directories like C: (standing for C work area - NOT disk C) are permitted.
;
;       Assuming that a directory for C programs, named 'C', and a root
; directory, named 'ROOT', exist, then if DUFIRST is set to FALSE:
;
;               A>C:    -- logs the user into the directory named 'C'
;               A>ROOT: -- logs the user into the directory named 'ROOT'
;
; while if DUFIRST is set to TRUE:
;
;               A>C:    -- logs the user into disk C: (dir C can't be accessed)
;               A>ROOT: -- logs the user into the directory named 'ROOT'
;
DUFIRST EQU     FALSE

;
;       Enable password check on named directory references.  If a named
; directory is referenced and has a password associated with it, ZCPR3
; will ask the user for this password and approve the reference only
; if he gives a valid response.  One and only one try is permitted.
; Setting this equate to TRUE will enab
le the password check facility.
;
PWCHECK EQU     FALSE


;
; 11. COMMAND LINE BUFFER CONTROL
;
;       The MULTCMD equate enables the feature of having more than
; one command on the same line, separated by a separation char
; which is defined by the CMDSEP equate.  If this feature is
; enabled, the command line buffer and buffer pointers are
; moved outside of ZCPR3 at the indicated address of Z3CL.
;
;       MULTCMD indicates if the ability to have more than one command
; on a line is to be enabled, and CMDSEP is the character used to separate
; these commands.  For example, if CMDSEP is ';' and MULTCMD is TRUE, then
; commands like this are possible:
;
;               ERA *.BAK;DIR
;
       IF      Z3CL NE 0
MULTCMD equ     TRUE
       ELSE
MULTCMD equ     FALSE
       ENDIF
CMDSEP  equ     ';'


;
; 12. CMDRUN -- ZCPR3 EXTENDED COMMAND PROCESSING FACILITY
;
;       This equate enables the ZCPR3 CMDRUN facility.  If CMDRUN is TRUE, then
; another stage of command processing is invoked should ZCPR3 fail to find
; a COM file when the user gives a command.  This stage involves invoking
; the COM file specified by CMDFCB and giving it the current command line
; as an argument.  In this way, if, say, M80 PROG2 fails as a command,
; a new command like LRUNZ M80 PROG2, SUB M80 PROG2, or ZEX M80 PROG2 may
; be processed.  If the new command fails, an appropriate error message is
; given.
;
;       The ROOTONLY option causes ZCPR3 to only look at the Root (bottom of
; path) for the Extended Command Processor if it is set to TRUE.  If it
; is set to FALSE, the path is searched for the Extended Command Processor.
; The tradeoff here is that ROOTONLY = TRUE is less flexible but somewhat
; faster than ROOTONLY = FALSE.
;
CMDRUN  equ     FALSE   ; Enable the Facility

       if      CMDRUN
ROOTONLY        equ     TRUE    ; TRUE if look at Root Only for Extended
                               ; Command Processor, FALSE if look along
                               ; path
CMDFCB  MACRO
       db      0
       db      'CMDRUN  '      ;Name of Program
       db      'COM'           ;File Type
       ENDM
       endif   ;CMDRUN


;
; 13. FLOW COMMAND FACILITY
;
;       This equate enables ZCPR3 to respond to IF processing.
; ZCPR3 simply flushes commands if a FALSE IF is currently engaged.
; FCPs must be enabled for IFON to work correctly.
;
IFON    EQU     FALSE


;
; 14. MISCELLANEOUS EQUATES
;
MAXUSR  EQU     31              ;MAXIMUM USER NUMBER ACCESSABLE
MAXDISK EQU     4               ;MAXIMUM NUMBER OF DISKS ACCESSABLE

SUPRES  EQU     TRUE            ;SUPRESSES USER # REPORT FOR USER 0

SPRMPT  EQU     '$'             ;CPR PROMPT INDICATING SUBMIT COMMAND
CPRMPT  EQU     '>'             ;CPR PROMPT INDICATING USER COMMAND

NUMBASE EQU     'H'             ;CHAR USED TO SWITCH FROM DEFAULT NUMBER BASE

CURIND  EQU     '$'             ;SYMBOL FOR CURRENT DISK OR USER

COMMENT EQU     ';'             ;LINES BEGINNING WITH THIS CHAR ARE COMMENTS

;
; END OF ZCPR3 CUSTOMIZATION SECTION
;