home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug133.arc
/
CCPFIX.LBR
/
ZCPRHDR.LZB
/
ZCPRHDR.LIB
Wrap
Text File
|
1979-12-31
|
16KB
|
467 lines
;
;################################################################
;# #
;# ZCPR2 customised for MicroBee 128k B-Shell system #
;# by Richard Browne 21-Feb-89 #
;# #
;################################################################
;
;
; set this equate to the value of your system and other addresses
; are set automatically ..
bios$base equ 0E700H ;0xE700 is what most systems are
;
;################################################################
;
;*************************************************************************
;* *
;* 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 0D100H ;FILL IN WITH BDOSLOC SUPPLIED VALUE
cprloc equ bios$base-0E00h-0800h ;uBee
;
; 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
;CPRR EQU 1600H-CPRLOC ;DDT LOAD OFFSET FOR BigBoard 2
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
BIOS equ bios$base ;uBee
;
; 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 TRUE ;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'-'@',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 FALSE ;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 bios$base+015CH ; this is the position in the 128k BIOS's
; header block
BUFLEN equ 128 ;128 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 TRUE ;Enable or Disable Internal Stack
IF NOT INTSTACK
STKBASE equ 0f60bH ;Address of Bottom of External Stack
; in LINBUF used by monitor (allows 16 bytes grace)
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 15 ;MAXIMUM USER NUMBER ACCESSABLE
MAXDISK EQU 15 ;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 '>' ;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 FALSE ; Allow External FCB
if EXTFCB
FCBADR equ 0ffd0H ; Address of External FCB (above system variables)
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 FALSE ; Enable the Facility
if CMDRUN
ROOTONLY equ FALSE ; TRUE if look at Root Only for Extended
; Command Processor, FALSE if look along
; path
CMDFCB MACRO
db 0
db 'SUBMIT ' ;Name of Program
db 'COM' ;File Type
ENDM
endif ;CMDRUN
;
; END OF CUSTOMIZATION SECTION
;