home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug133.arc / CCPFIX.LBR / ZCPRHDR.LZB / ZCPRHDR.LIB
Text File  |  1979-12-31  |  16KB  |  467 lines

  1. ;
  2. ;################################################################
  3. ;#                                #
  4. ;#    ZCPR2 customised for MicroBee 128k B-Shell system    #
  5. ;#    by Richard Browne    21-Feb-89            #
  6. ;#                                #
  7. ;################################################################
  8. ;
  9. ;
  10. ; set this equate to the value of your system and other addresses
  11. ; are set automatically ..
  12. bios$base    equ 0E700H    ;0xE700 is what most systems are
  13. ;
  14. ;################################################################
  15. ;
  16.  
  17. ;*************************************************************************
  18. ;*                                    *
  19. ;*  Z C P R 2 -- Z80-Based Command Processor Replacement, Version 2.0    *
  20. ;*                                    *
  21. ;*  Copyright (c) 1982 by Richard Conn                    *
  22. ;*  All Rights Reserved                            *
  23. ;*                                    *
  24. ;*  ZCPR2 is Copyright (c) 1982 by Richard Conn, who assumes no respons- *
  25. ;*  ibility or liability for its use.  ZCPR2 is released to the public   *
  26. ;*  domain for non-commercial use only.                    *
  27. ;*                                    *
  28. ;*  The public is encouraged to freely copy and use this program for    *
  29. ;*  non-commercial purposes.  Any commercial use of ZCPR2 is prohibited    *
  30. ;*  unless approved by the author, Richard Conn, in writing.        *
  31. ;*                                    *
  32. ;*  This is the RELEASE VERSION of ZCPR2.                *
  33. ;*                                    *
  34. ;*************************************************************************
  35.  
  36. ;
  37. ;  Module:  ZCPRHDR
  38. ;  Author:  Richard Conn
  39. ;  Module Used By:  ZCPR2 Version 2.x
  40. ;  Note:  ZCPRHDR contains the key customization equates for ZCPR2.  These
  41. ;    equates allow the user to select various ZCPR2 options and do an
  42. ;    extensive amount of tailoring of ZCPR2 to the user's desires.
  43. ;  Note:  This is the RELEASE VERSION of ZCPR2
  44. ;
  45.  
  46. ;
  47. ;  The following equates may be used to customize this CPR for the user's
  48. ;    system and integration technique.  The following constants are provided:
  49. ;
  50. ;    REL - TRUE if integration is to be done via MOVCPM
  51. ;        - FALSE if integration is to be done via DDT and SYSGEN
  52. ;
  53. ;    BASE - Base Address of user's CP/M system (normally 0 for DR version)
  54. ;           This equate allows easy modification by non-standard CP/M (eg,H89)
  55. ;
  56. ;    CPRLOC - Base Page Address of CPR; this value can be obtained by running
  57. ;          the BDOSLOC program on your system, or by setting the
  58. ;          MSIZE and BIOSEX equates to the system memory size in
  59. ;          K-bytes and the "extra" memory required by your BIOS
  60. ;          in K-bytes. BIOSEX is zero if your BIOS is normal size,
  61. ;          and can be negative if your BIOS is in PROM or in
  62. ;          non-contiguous memory.
  63. ;
  64. REL    EQU    FALSE    ;SET TO TRUE FOR MOVCPM INTEGRATION
  65. ;
  66. BASE    EQU    0    ;BASE OF CP/M SYSTEM (SET FOR STANDARD CP/M)
  67. ;
  68.     IF    REL
  69. CPRLOC    EQU    0    ;MOVCPM IMAGE
  70.     ELSE
  71. ;
  72. ; If REL is FALSE, the value of CPRLOC may be set in one
  73. ; of two ways.  The first way is to set MSIZE and BIOSEX
  74. ; as described above using the following three lines:
  75. ;
  76. ;MSIZE    EQU    56    ;SIZE OF MEM IN K-BYTES
  77. ;BIOSEX    EQU    0    ;EXTRA # K-BYTES IN BIOS
  78. ;CPRLOC    EQU    3400H+(MSIZE-20-BIOSEX)*1024    ;CPR ORIGIN
  79. ;
  80. ; The second way is to obtain the origin of your current
  81. ; CPR using BDSLOC or its equivalent, then merely set CPRLOC
  82. ; to that value as as in the following line:
  83. ;
  84. ;CPRLOC    EQU    0D100H    ;FILL IN WITH BDOSLOC SUPPLIED VALUE
  85. cprloc    equ    bios$base-0E00h-0800h    ;uBee
  86. ;
  87. ; Note that you should only use one method or the other.
  88. ; Do NOT define CPRLOC twice!
  89. ;
  90. ; The following gives the required offset to load the CPR into the
  91. ; CP/M SYSGEN Image through DDT (the Roffset command); Note that this
  92. ; value conforms with the standard value presented in the CP/M reference
  93. ; manuals, but it may not necessarily conform with the location of the
  94. ; CPR in YOUR CP/M system; several systems (Morrow Designs, P&T, Heath
  95. ; Org-0 to name a few) have the CPR located at a non-standard address in
  96. ; the SYSGEN Image
  97. ;
  98. ;CPRR    EQU    0980H-CPRLOC    ;DDT LOAD OFFSET
  99. ;CPRR    EQU    1100H-CPRLOC    ;DDT LOAD OFFSET FOR MORROW DESIGNS
  100. ;CPRR    EQU    1600H-CPRLOC    ;DDT LOAD OFFSET FOR BigBoard 2
  101.     ENDIF
  102.  
  103.  
  104. ;
  105. ; The following equate identifies the location of the BIOS.  This equate
  106. ; (as provided in the release copy of ZCPR2HDR) assumes the standard sizes
  107. ; of 800H for ZCPR2 and 0E00H for BDOS and does not need to be modified if
  108. ; the user is running a standard CP/M configuration.
  109. ;
  110. ;BIOS    EQU    CPRLOC+800H+0E00H    ;ADDRESS OF BIOS
  111. BIOS    equ    bios$base    ;uBee
  112.  
  113. ;
  114. ;   The following macros define the file types of the command object files
  115. ; (COM files under CP/M 2.2) to be loaded when a non-resident ZCPR2 command
  116. ; is given and of the indirect command files (SUB files under CP/M 2.2) to
  117. ; be used to extract commands from when the indirect command facility is
  118. ; invoked.
  119. ;
  120. COMTYP    MACRO
  121.     DB    'COM'        ;FILE TYPE OF COMMAND FILE
  122.     ENDM
  123.  
  124. SUBTYP    MACRO
  125.     DB    'SUB'        ;FILE TYPE OF INDIRECT COMMAND FILE
  126.     ENDM
  127.  
  128. ;
  129. ;   The following flag enables or disables the ability of ZCPR2 to process
  130. ; SUBMIT files (command files of the form $$$.SUB).  If SUBON is TRUE, then
  131. ; ZCPR2 will process such files like CP/M's CCP normally does; if SUBON is
  132. ; FALSE, ZCPR2 will not process such files (ignore them).  In such a case,
  133. ; only indirect command file facilities like ZEX will work.
  134. ;
  135. SUBON    EQU    TRUE     ;SET TO TRUE TO ENABLE PROCESSING OF $$$.SUB
  136.  
  137.  
  138. ;
  139. ;   The following flag allows ZCPR2 to accept commands of the form "du:cmnd".
  140. ; If DRVPREFIX is TRUE, this form is accepted; if FALSE, this form is not
  141. ; accepted.  This flag has the additional side effect of automatically
  142. ; selecting files in the current disk/current user if the command
  143. ; is of the form "cmnd".  The DRVPFATT determines the attributes of the
  144. ; selected files if DRVPREFIX is TRUE.
  145. ;
  146. DRVPREFIX    equ    TRUE     ;ENABLE PREFIX
  147.  
  148.  
  149.  
  150. ;
  151. ;   The following flag allows the user to select the attributes of the files
  152. ; in the current disk/current user to be examined if the DRVPREFIX flag
  153. ; is TRUE.  The following values are defined:
  154. ;
  155. ;        DRVPFATT    Files Selected
  156. ;            0        System
  157. ;           80H        Directory
  158. ;            1        Both System and Directory
  159. ;
  160. DRVPFATT    equ    1    ;SELECT BOTH SYSTEM AND DIRECTORY
  161.  
  162.  
  163.  
  164. ;
  165. ;   The following flag enables or disables the ability to switch user areas.
  166. ; For a more secure system, it is recommended that this ability be disabled and
  167. ; the CD.COM facility be employed instead.
  168. ;
  169. USERON    equ    TRUE         ;ENABLE USER SPECIFICATION
  170.  
  171.  
  172. ;
  173. ;  The following flags enable or disable various ZCPR2-resident commands.
  174. ; The user may invoke these as desired, but should keep in mind the size
  175. ; of the resulting ZCPR2 and make sure it does not exceed the required
  176. ; limits.
  177. ;
  178. DIRON    equ    TRUE     ;DIR
  179. LTON    equ    TRUE    ;LIST, TYPE
  180. GOON    equ    TRUE     ;GO
  181. ERAON    equ    TRUE     ;ERA
  182. SAVEON    equ    TRUE     ;SAVE
  183. RENON    equ    TRUE     ;REN
  184. GETON    equ    TRUE     ;GET
  185. JUMPON    equ    TRUE     ;JUMP
  186.  
  187.  
  188.  
  189. ;
  190. ;   The following equate specifies the address of the PATH to be followed
  191. ; for the PATH command-search if the PATH is to be initialized by the BIOS
  192. ; and set by the user via a PATH.COM program.  The value of PATH should
  193. ; be the address of the PATH data area in memory.  If the internal PATH
  194. ; provided by ZCPR2 is to be used, then INTPATH should be equated to TRUE,
  195. ; which selects the PATH located just after the MEMLOAD routine.  If the
  196. ; external PATH is to be used, then INTPATH should be equated to FALSE and
  197. ; and equate for the address of the PATH should be provided.
  198. ;   A PATH is a series of byte-pairs, terminated by a binary 0.  The first
  199. ; byte of each pair is the disk number (1-16 for disks A-P), and the second
  200. ; byte of each pair is the user number (0-31).  The special character '$'
  201. ; indicates the current user or current disk.  For example, the path
  202. ; from current disk/current user to current disk/user 0 to disk A/user 0
  203. ; is selected by the following sequence:
  204. ;        DB    '$$'    ;current disk/user
  205. ;        DB    '$',0    ;current disk/user 0
  206. ;        DB    1,0    ;disk A/user 0
  207. ;        DB    0    ;end of path
  208. ;    NOTE:  If DRVPREFIX is TRUE, then current disk/user is automatically
  209. ; searched, and including it in the command search path causes it to be
  210. ; searched twice, wasting time (and space in the path).  Since many environs
  211. ; will run with DRVPREFIX = TRUE, then a good command search path would not
  212. ; include the current disk/user.
  213. ;
  214. INTPATH    equ    TRUE        ;EXTERNAL ZCPR2 PATH SELECTED
  215.  
  216.     IF    NOT INTPATH    ;External Path Selected
  217. ;
  218. ;  This equate defines the base address of the external path
  219. ;
  220. PATH    equ    40H        ;External ZCPR2 PATH at CBIOS Buffer Area
  221.  
  222.     ELSE            ;Internal Path Selected
  223. ;
  224. ;  The following macro defines the n-element internal path
  225. ;
  226. IPATH    MACRO
  227.     db    '$',0        ;Current Disk, User 0
  228.     db    'A'-'@',0    ;Disk A, User 0
  229.     db    0        ;End of Path -- MUST be here
  230.     ENDM
  231. ;
  232.     ENDIF
  233.  
  234. ;
  235. ;   The following equate causes ERA to confirm on the files to be erased
  236. ; before it goes ahead and erases them.  If ERAOK is TRUE, then the user
  237. ; will be prompted each time; if it is FALSE, then the user will not be
  238. ; prompted.
  239. ;
  240. ERAOK    equ    TRUE         ;SET TO TRUE FOR PROMPT
  241.  
  242. ;
  243. ;   If ERAOK is TRUE, the following equate adds a Verify option to the
  244. ; ERA command which causes the user to be prompted only if the Verify
  245. ; option letter, defined by ERDFLG, is given after the file name.  If
  246. ; ERAV is TRUE, then the user will be asked to verify only when ERDFLG
  247. ; is contained in the command line; if ERAV is FALSE, the user will always
  248. ; be asked to verify.
  249. ;
  250. ERAV    equ    FALSE        ;ENABLE VERIFY OPTION
  251. ERDFLG    equ    'V'        ;SET OPTION LETTER
  252.  
  253. ;
  254. ;   The following equate enables the appearance of the current disk/user
  255. ; in the ZCPR2 prompt.  If set to FALSE, the prompt appears as '>' (assuming
  256. ; > is the current value of CPRMPT).  If set to TRUE, the prompt appears
  257. ; as 'd>' or 'dn>'.
  258. ;
  259. DUPRMPT    equ    TRUE         ;ENABLE D> OR DN> FORM
  260.  
  261. ;
  262. ;  The MULTCMD equate enables the feature of having more than
  263. ;  one command on the same line, separated by a separation char
  264. ;  which is defined by the CMDSEP equate.  If this feature is
  265. ;  enabled, the command line buffer and buffer pointers are
  266. ;  moved outside of ZCPR2 at the indicated address of CLBASE.
  267. ;
  268.  
  269. MULTCMD    equ    TRUE     ;Multiple Commands on one line permitted
  270.  
  271.     IF    MULTCMD
  272. CMDSEP    equ    ';'    ;Command Separator
  273. CLBASE    equ    bios$base+015CH ; this is the position in the 128k BIOS's
  274.                 ;    header block
  275. BUFLEN    equ    128    ;128 Bytes in Input Buffer
  276.     ENDIF
  277.  
  278. ;
  279. ;  The Wheel equate table enables the WHEEL facility of ZCPR2.  With this
  280. ;  facility, a WHEEL BYTE, which exists somewhere in memory, is examined
  281. ;  before a set of installer-selected commands are executed.
  282. ;  If this byte is not zero, then the command proceeds.  If it is zero,
  283. ;  then the command is not allowed to proceed and is exited with an error
  284. ;  message.
  285. ;
  286. ;  The following set of equates make each of the indicated commands
  287. ;  selectable to respond to the Wheel Byte or not.  For instance, if
  288. ;  WERA=TRUE, then it responds to the Wheel Byte; if WERA=FALSE, it does not.
  289. ;
  290. WHLADR    equ    3BH    ;Address of Byte to Examine
  291. WERA    equ    FALSE     ;Make ERA a Wheel-Oriented Command
  292. WREN    equ    FALSE     ; "   REN "   "       "       "
  293. WLT    equ    FALSE     ; "   L/T "   "       "       "  (LIST/TYPE)
  294. WGO    equ    FALSE     ; "   GO  "   "       "       "
  295. WSAVE    equ    FALSE     ; "   SAVE "  "       "       "
  296. WGET    equ    FALSE     ; "   GET "   "       "       "
  297. WJUMP    equ    FALSE     ; "   JUMP "  "       "       "
  298. WDU    equ    FALSE     ; "   DU: "   "       "       " (DU Change)
  299. WHEEL    equ    WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU
  300.  
  301. ;
  302. ;  The INTSTACK equate is used to specify if the stack is internal or
  303. ;  external to ZCPR2.  Naturally, quite a bit of space is saved if the
  304. ;  stack is placed external to ZCPR2.  If such is the case, the user
  305. ;  should set the STKBASE equate to the beginning of the stack area
  306. ;  (bottom of the stack).  NOTE:  THIS IS THE BOTTOM OF THE STACK, NOT THE
  307. ;  TOP OF THE STACK.
  308. ;
  309. ;  If INTSTACK is TRUE, the stack is internal to ZCPR2.  If INTSTACK is
  310. ;  FALSE, the stack is external to ZCPR2, and the base of the stack
  311. ;  (bottom of the stack) is located at STKBASE.
  312. ;
  313. INTSTACK    equ    TRUE    ;Enable or Disable Internal Stack
  314.  
  315.     IF    NOT INTSTACK
  316. STKBASE        equ    0f60bH        ;Address of Bottom of External Stack
  317.             ; in LINBUF used by monitor (allows 16 bytes grace)
  318. STACK        equ    STKBASE+48    ;Address of Top of Stack
  319.                     ;Stack Size should be at least 48 bytes
  320.     ENDIF    ;NOT INTSTACK
  321.  
  322. ;
  323. ;*** TERMINAL AND 'TYPE' CUSTOMIZATION EQUATES
  324. ;
  325. NLINES    EQU    24        ;NUMBER OF LINES ON CRT SCREEN
  326. WIDE    EQU    TRUE         ;TRUE IF WIDE DIR DISPLAY
  327. FENCE    EQU    '|'        ;SEP CHAR BETWEEN DIR FILES
  328. ;
  329. PGDFLT    EQU    TRUE          ;SET TO FALSE TO DISABLE PAGING BY DEFAULT
  330. PGDFLG    EQU    'P'        ;FOR TYPE COMMAND: PAGE OR NOT (DEP ON PGDFLT)
  331.                 ;  THIS FLAG REVERSES THE DEFAULT EFFECT
  332.  
  333.  
  334. ;
  335. ;*** MISCELLANEOUS EQUATES
  336. ;
  337. MAXUSR    EQU    15         ;MAXIMUM USER NUMBER ACCESSABLE
  338. MAXDISK    EQU    15        ;MAXIMUM NUMBER OF DISKS ACCESSABLE
  339. ;
  340. SYSFLG    EQU    'A'         ;FOR DIR COMMAND: LIST $SYS AND $DIR
  341. ;
  342. SOFLG    EQU    'S'        ;FOR DIR COMMAND: LIST $SYS FILES ONLY
  343. ;
  344. SUPRES    EQU    TRUE         ;SUPRESSES USER # REPORT FOR USER 0
  345. ;
  346. SPRMPT    EQU    '!'        ;CPR PROMPT INDICATING SUBMIT COMMAND
  347. CPRMPT    EQU    '>'        ;CPR PROMPT INDICATING USER COMMAND
  348.                 ;... THE MSB IS SET (+80H) FOR ZEX
  349. ;
  350. NUMBASE    EQU    'H'        ;CHARACTER USED TO SWITCH FROM DEFAULT
  351.                 ; NUMBER BASE
  352. ;
  353. SECTFLG    EQU    'S'        ;OPTION CHAR FOR SAVE COMMAND TO SAVE SECTORS
  354. ;
  355. CURIND    EQU    '$'        ;SYMBOL FOR CURRENT DISK OR USER
  356. ;
  357. COMMENT    EQU    ';'        ;LINES BEGINNING WITH THIS CHAR ARE COMMENTS
  358.  
  359.  
  360. ;
  361. ; CPR COMMAND NAME TABLE
  362. ;   EACH TABLE ENTRY IS COMPOSED OF THE 4-BYTE COMMAND AND 2-BYTE ADDRESS
  363. ;
  364. NCHARS    EQU    4        ;NUMBER OF CHARS/COMMAND
  365.  
  366. CTABLE    MACRO
  367. ;
  368.     IF    DIRON
  369. ;
  370.     DB    'DIR '
  371.     DW    DIR        ;DIRECTORY DISPLAY COMMAND
  372. ;
  373.     ENDIF
  374.     IF    LTON
  375. ;
  376.     DB    'LIST'
  377.     DW    LIST        ;LIST FILE ON PRINTER COMMAND
  378.     DB    'TYPE'
  379.     DW    TYPE        ;TYPE FILE ON CONSOLE COMMAND
  380. ;
  381.     ENDIF
  382.     IF    GOON
  383. ;
  384.     DB    'GO  '
  385.     DW    GO        ;EXECUTE CURRENT TPA COMMAND
  386. ;
  387.     ENDIF
  388.     IF    ERAON
  389. ;
  390.     DB    'ERA '
  391.     DW    ERA        ;ERASE FILES COMMAND
  392. ;
  393.     ENDIF
  394.     IF    SAVEON
  395. ;
  396.     DB    'SAVE'
  397.     DW    SAVE        ;SAVE TPA COMMAND
  398. ;
  399.     ENDIF
  400.     IF    RENON
  401. ;
  402.     DB    'REN '
  403.     DW    REN        ;RENAME FILES COMMAND
  404. ;
  405.     ENDIF
  406.     IF    GETON
  407. ;
  408.     DB    'GET '
  409.     DW    GET        ;LOAD FILE INTO TPA COMMAND
  410. ;
  411.     ENDIF
  412.     IF    JUMPON
  413. ;
  414.     DB    'JUMP'
  415.     DW    JUMP        ;JUMP TO ANY MEMORY LOCATION COMMAND
  416. ;
  417.     ENDIF
  418. ;
  419.     ENDM
  420.  
  421. ;
  422. ;  This equate determines if the ZCPR2 FCB is located internal to or external
  423. ;  to ZCPR2.  If EXTFCB is TRUE, FCBADR defines where it is located.  By
  424. ;  placing the ZCPR2 FCB external to ZCPR2, more space is freed up for other
  425. ;  uses within ZCPR2.
  426. ;
  427. EXTFCB    equ    FALSE     ; Allow External FCB
  428.  
  429.     if    EXTFCB
  430. FCBADR    equ    0ffd0H    ; Address of External FCB (above system variables)
  431.     endif
  432.  
  433. ;
  434. ;  CMDRUN -- ZCPR2 Extended Command Processing Facility
  435. ;
  436. ;  This equate enables the ZCPR2 CMDRUN facility.  If CMDRUN is TRUE, then
  437. ;  another stage of command processing is invoked should ZCPR2 fail to find
  438. ;  a COM file when the user gives a command.  This stage involves invoking
  439. ;  the COM file specified by CMDFCB and giving it the current command line
  440. ;  as an argument.  In this way, if, say, M80 PROG2 fails as a command,
  441. ;  a new command like LRUNZ M80 PROG2, SUB M80 PROG2, or ZEX M80 PROG2 may
  442. ;  be processed.  If the new command fails, an appropriate error message is
  443. ;  given.
  444. ;
  445. ;  The ROOTONLY option causes ZCPR2 to only look at the Root (bottom of
  446. ;  path) for the Extended Command Processor if it is set to TRUE.  If it
  447. ;  is set to FALSE, the path is searched for the Extended Command Processor.
  448. ;  The tradeoff here is that ROOTONLY = TRUE is less flexible but somewhat
  449. ;  faster than ROOTONLY = FALSE.
  450. ;
  451. CMDRUN    equ    FALSE     ; Enable the Facility
  452.  
  453.     if    CMDRUN
  454. ROOTONLY    equ    FALSE     ; TRUE if look at Root Only for Extended
  455.                 ; Command Processor, FALSE if look along
  456.                 ; path
  457. CMDFCB    MACRO
  458.     db    0
  459.     db    'SUBMIT  '    ;Name of Program
  460.     db    'COM'        ;File Type
  461.     ENDM
  462.     endif    ;CMDRUN
  463.  
  464. ;
  465. ; END OF CUSTOMIZATION SECTION
  466. ;
  467.