home *** CD-ROM | disk | FTP | other *** search
-
- *************************************************************************
- * *
- * Z C P R 2 -- Z80-Based Command Processor Replacement, Version 2.0 *
- * *
- * Copyright (c) 1982 by Richard Conn *
- * All Rights Reserved *
- * *
- * ZCPR2 is Copyright (c) 1982 by Richard Conn, who assumes no respons- *
- * ibility or liability for its use. ZCPR2 is released to the public *
- * domain for non-commercial use only. *
- * *
- * The public is encouraged to freely copy and use this program for *
- * non-commercial purposes. Any commercial use of ZCPR2 is prohibited *
- * unless approved by the author, Richard Conn, in writing. *
- * *
- * This is the RELEASE VERSION of ZCPR2. *
- * *
- *************************************************************************
-
- ;
- ; Module: ZCPRHDR
- ; Author: Richard Conn
- ; Module Used By: ZCPR2 Version 2.x
- ; Note: ZCPRHDR contains the key customization equates for ZCPR2. These
- ; equates allow the user to select various ZCPR2 options and do an
- ; extensive amount of tailoring of ZCPR2 to the user's desires.
- ; Note: This is the RELEASE VERSION of ZCPR2
- ;
-
- ;
- ; The following equates may be used to customize this CPR for the user's
- ; system and integration technique. The following constants are provided:
- ;
- ; REL - TRUE if integration is to be done via MOVCPM
- ; - FALSE if integration is to be done via DDT and SYSGEN
- ;
- ; BASE - Base Address of user's CP/M system (normally 0 for DR version)
- ; This equate allows easy modification by non-standard CP/M (eg,H89)
- ;
- ; CPRLOC - Base Page Address of CPR; this value can be obtained by running
- ; the BDOSLOC program on your system, or by setting the
- ; MSIZE and BIOSEX equates to the system memory size in
- ; K-bytes and the "extra" memory required by your BIOS
- ; in K-bytes. BIOSEX is zero if your BIOS is normal size,
- ; and can be negative if your BIOS is in PROM or in
- ; non-contiguous memory.
- ;
- REL EQU FALSE ;SET TO TRUE FOR MOVCPM INTEGRATION
- ;
- BASE EQU 0 ;BASE OF CP/M SYSTEM (SET FOR STANDARD CP/M)
- ;
- IF REL
- CPRLOC EQU 0 ;MOVCPM IMAGE
- ELSE
- ;
- ; If REL is FALSE, the value of CPRLOC may be set in one
- ; of two ways. The first way is to set MSIZE and BIOSEX
- ; as described above using the following three lines:
- ;
- ;MSIZE EQU 56 ;SIZE OF MEM IN K-BYTES
- ;BIOSEX EQU 0 ;EXTRA # K-BYTES IN BIOS
- ;CPRLOC EQU 3400H+(MSIZE-20-BIOSEX)*1024 ;CPR ORIGIN
- ;
- ; The second way is to obtain the origin of your current
- ; CPR using BDSLOC or its equivalent, then merely set CPRLOC
- ; to that value as as in the following line:
- ;
- CPRLOC EQU 0BD00H ;FILL IN WITH BDOSLOC SUPPLIED VALUE
- ;
- ; Note that you should only use one method or the other.
- ; Do NOT define CPRLOC twice!
- ;
- ; The following gives the required offset to load the CPR into the
- ; CP/M SYSGEN Image through DDT (the Roffset command); Note that this
- ; value conforms with the standard value presented in the CP/M reference
- ; manuals, but it may not necessarily conform with the location of the
- ; CPR in YOUR CP/M system; several systems (Morrow Designs, P&T, Heath
- ; Org-0 to name a few) have the CPR located at a non-standard address in
- ; the SYSGEN Image
- ;
- ;CPRR EQU 0980H-CPRLOC ;DDT LOAD OFFSET
- CPRR EQU 1100H-CPRLOC ;DDT LOAD OFFSET FOR MORROW DESIGNS
- ENDIF
-
-
- ;
- ; The following equate identifies the location of the BIOS. This equate
- ; (as provided in the release copy of ZCPR2HDR) assumes the standard sizes
- ; of 800H for ZCPR2 and 0E00H for BDOS and does not need to be modified if
- ; the user is running a standard CP/M configuration.
- ;
- BIOS EQU CPRLOC+800H+0E00H ;ADDRESS OF BIOS
-
-
- ;
- ; 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 ZCPR2 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' ;FILE TYPE OF COMMAND FILE
- ENDM
-
- SUBTYP MACRO
- DB 'SUB' ;FILE TYPE OF INDIRECT COMMAND FILE
- ENDM
-
- ;
- ; The following flag enables or disables the ability of ZCPR2 to process
- ; SUBMIT files (command files of the form $$$.SUB). If SUBON is TRUE, then
- ; ZCPR2 will process such files like CP/M's CCP normally does; if SUBON is
- ; FALSE, ZCPR2 will not process such files (ignore them). In such a case,
- ; only indirect command file facilities like ZEX will work.
- ;
- SUBON EQU TRUE ;SET TO TRUE TO ENABLE PROCESSING OF $$$.SUB
-
-
- ;
- ; The following flag allows ZCPR2 to accept commands of the form "du:cmnd".
- ; If DRVPREFIX is TRUE, this form is accepted; if FALSE, this form is not
- ; accepted. This flag has the additional side effect of automatically
- ; selecting files in the current disk/current user if the command
- ; is of the form "cmnd". The DRVPFATT determines the attributes of the
- ; selected files if DRVPREFIX is TRUE.
- ;
- DRVPREFIX equ TRUE ;ENABLE PREFIX
-
-
-
- ;
- ; The following flag allows the user to select the attributes of the files
- ; in the current disk/current user to be examined if the DRVPREFIX flag
- ; is TRUE. The following values are defined:
- ;
- ; DRVPFATT Files Selected
- ; 0 System
- ; 80H Directory
- ; 1 Both System and Directory
- ;
- DRVPFATT equ 1 ;SELECT BOTH SYSTEM AND DIRECTORY
-
-
-
- ;
- ; The following flag enables or disables the ability to switch user areas.
- ; For a more secure system, it is recommended that this ability be disabled and
- ; the CD.COM facility be employed instead.
- ;
- USERON equ TRUE ;ENABLE USER SPECIFICATION
-
-
- ;
- ; The following flags enable or disable various ZCPR2-resident commands.
- ; The user may invoke these as desired, but should keep in mind the size
- ; of the resulting ZCPR2 and make sure it does not exceed the required
- ; limits.
- ;
- DIRON equ TRUE ;DIR
- LTON equ TRUE ;LIST, TYPE
- GOON equ TRUE ;GO
- ERAON equ TRUE ;ERA
- SAVEON equ TRUE ;SAVE
- RENON equ TRUE ;REN
- GETON equ TRUE ;GET
- JUMPON equ TRUE ;JUMP
-
-
-
- ;
- ; 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 ZCPR2 is to be used, then INTPATH should be equated to TRUE,
- ; which selects the PATH located just after the MEMLOAD routine. If the
- ; external PATH is to be used, then INTPATH should be equated to FALSE and
- ; and equate for the address of the PATH should be provided.
- ; 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
- ; NOTE: If DRVPREFIX is TRUE, then current disk/user is automatically
- ; searched, and including it in the command search path causes it to be
- ; searched twice, wasting time (and space in the path). Since many environs
- ; will run with DRVPREFIX = TRUE, then a good command search path would not
- ; include the current disk/user.
- ;
- INTPATH equ FALSE ;EXTERNAL ZCPR2 PATH SELECTED
-
- IF NOT INTPATH ;External Path Selected
- ;
- ; This equate defines the base address of the external path
- ;
- PATH equ 40H ;External ZCPR2 PATH at CBIOS Buffer Area
-
- ELSE ;Internal Path Selected
- ;
- ; The following macro defines the n-element internal path
- ;
- IPATH MACRO
- db '$',0 ;Current Disk, User 0
- 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 equate causes ERA to confirm on 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 TRUE ;SET TO TRUE FOR PROMPT
-
- ;
- ; 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.
- ;
- ERAV equ TRUE ;ENABLE VERIFY OPTION
- ERDFLG equ 'V' ;SET OPTION LETTER
-
- ;
- ; The following equate enables the appearance of the current disk/user
- ; in the ZCPR2 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>'.
- ;
- DUPRMPT equ TRUE ;ENABLE D> OR DN> FORM
-
- ;
- ; 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 ZCPR2 at the indicated address of CLBASE.
- ;
-
- MULTCMD equ TRUE ;Multiple Commands on one line permitted
-
- IF MULTCMD
- CMDSEP equ ';' ;Command Separator
- CLBASE equ 0FF00H ;Base address of buffer
- BUFLEN equ 200 ;200 Bytes in Input Buffer
- ENDIF
-
- ;
- ; The Wheel equate table enables the WHEEL facility of ZCPR2. 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.
- ;
- WHLADR equ 3BH ;Address of Byte to Examine
- 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 Change)
- WHEEL equ WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU
-
- ;
- ; The INTSTACK equate is used to specify if the stack is internal or
- ; external to ZCPR2. Naturally, quite a bit of space is saved if the
- ; stack is placed external to ZCPR2. If such is the case, the user
- ; should set the STKBASE equate to the beginning of the stack area
- ; (bottom of the stack). NOTE: THIS IS THE BOTTOM OF THE STACK, NOT THE
- ; TOP OF THE STACK.
- ;
- ; If INTSTACK is TRUE, the stack is internal to ZCPR2. If INTSTACK is
- ; FALSE, the stack is external to ZCPR2, and the base of the stack
- ; (bottom of the stack) is located at STKBASE.
- ;
- INTSTACK equ FALSE ;Enable or Disable Internal Stack
-
- IF NOT INTSTACK
- STKBASE equ 0F5D0H ;Address of Bottom of External Stack
- STACK equ STKBASE+48 ;Address of Top of Stack
- ;Stack Size should be at least 48 bytes
- ENDIF ;NOT INTSTACK
-
- ;
- ;*** TERMINAL AND 'TYPE' CUSTOMIZATION EQUATES
- ;
- NLINES EQU 24 ;NUMBER OF LINES ON CRT SCREEN
- WIDE EQU TRUE ;TRUE IF WIDE DIR DISPLAY
- FENCE EQU '|' ;SEP CHAR BETWEEN DIR FILES
- ;
- PGDFLT EQU TRUE ;SET TO FALSE TO DISABLE PAGING BY DEFAULT
- PGDFLG EQU 'P' ;FOR TYPE COMMAND: PAGE OR NOT (DEP ON PGDFLT)
- ; THIS FLAG REVERSES THE DEFAULT EFFECT
-
-
- ;
- ;*** MISCELLANEOUS EQUATES
- ;
- MAXUSR EQU 31 ;MAXIMUM USER NUMBER ACCESSABLE
- MAXDISK EQU 4 ;MAXIMUM NUMBER OF DISKS ACCESSABLE
- ;
- SYSFLG EQU 'A' ;FOR DIR COMMAND: LIST $SYS AND $DIR
- ;
- SOFLG EQU 'S' ;FOR DIR COMMAND: LIST $SYS FILES ONLY
- ;
- SUPRES EQU TRUE ;SUPRESSES USER # REPORT FOR USER 0
- ;
- SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND
- CPRMPT EQU '>'+80H ;CPR PROMPT INDICATING USER COMMAND
- ;... THE MSB IS SET (+80H) FOR ZEX
- ;
- NUMBASE EQU 'H' ;CHARACTER USED TO SWITCH FROM DEFAULT
- ; NUMBER BASE
- ;
- SECTFLG EQU 'S' ;OPTION CHAR FOR SAVE COMMAND TO SAVE SECTORS
- ;
- CURIND EQU '$' ;SYMBOL FOR CURRENT DISK OR USER
- ;
- COMMENT EQU ';' ;LINES BEGINNING WITH THIS CHAR ARE COMMENTS
-
-
- ;
- ; CPR COMMAND NAME TABLE
- ; EACH TABLE ENTRY IS COMPOSED OF THE 4-BYTE COMMAND AND 2-BYTE ADDRESS
- ;
- 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
- ;
- ENDM
-
- ;
- ; This equate determines if the ZCPR2 FCB is located internal to or external
- ; to ZCPR2. If EXTFCB is TRUE, FCBADR defines where it is located. By
- ; placing the ZCPR2 FCB external to ZCPR2, more space is freed up for other
- ; uses within ZCPR2.
- ;
- EXTFCB equ TRUE ; Allow External FCB
-
- if EXTFCB
- FCBADR equ 0FFD0H ; Address of External FCB
- endif
-
- ;
- ; CMDRUN -- ZCPR2 Extended Command Processing Facility
- ;
- ; This equate enables the ZCPR2 CMDRUN facility. If CMDRUN is TRUE, then
- ; another stage of command processing is invoked should ZCPR2 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 ZCPR2 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 TRUE ; 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
-
- ;
- ; END OF CUSTOMIZATION SECTION
- ;
-