*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
*								    *
*			LEGAL STUFF UP FRONT			    *
*								    *
*	NEWBASE.ASM						    *
*								    *
*	1984, 1985 (c) Copyright by				    *
*	Gene Head						    *
*	2860 NW Skyline Drive					    *
*	Corvallis, Oregon  97330    (503)  758-0279		    *
*								    *
*	All rights reserved.					    *
*								    *
*	Released for non-commercial, private use only.		    *
*	Released for no-profit use only.  If you make any money	    *
*	using this overlay or use it in your business I expect	    *
*	fair compensation to be mailed to the address above.	    *
*								    *
*	I also support the DBRUN, the dBASE II run-time		    *
*	package for a modest fee per installation.		    *
*								    *
*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*

*
*
   * * * * * * * * * *    E D I T O R I A L    * * * * * * * * * * * *
   *	This overlay is intended for the use of licensed users of    *
   *	dBASE II only.   If you 'own' a copy of dBASE II that you    *
   *	did not purchase or receive legitimately you are a thief,    *
   *	it is that simple.   Stealing software will only drive up    *
   *	prices for legal users  and dry up the sources of quality    *
   *	software products.					     *
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
***********************************************************************
*
*		PROGRAM DOCUMENTATION STUFF STARTS HERE
*
*       PROGRAM NAME -->  NEWBASEx.ASM
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*
*	07/20/85 <-- Last update (Added equates for version 2.43*)
*		 NOTE:  There is a big difference between version
*		 2.43* (notice the *) and plain 2.43.
*
*	04/22/85 <-- Last update (Partial support of version 2.3B restored)
*		 Version 2.3B will NOT support full ZCPR operation.  You
*		 CAN specify a default drive where overlays will be found.
*				-Gene Head
*
*	03/20/85 <-- Last update (tried to fix all the ASM nesting problems)
*		 ASM.COM will not consistantly recognize nested conditionals!
*		 I tried to figure out all the logic to un-nest the nested
*		 conditionals.  Also added the ESCape key disable on all
*		 supported versions.  (VERSION 2.3B NO LONGER SUPPORTED)
*				-Gene Head
*
*	03/18/85 <-- Last update (added ESCape key disable option)
*		 Added ESCape disable option so that users may
*		 not abort a program file before it has time to
*		 SET ESCAPE OFF.  SET ESCAPE OFF should still be
*		 one of the first lines in your command file.
*				-Ryan Katri		 
*
*	03/17/85 <-- Last update (added Z-80 2.43 equates)
*		Fixed a problem that ASM was having when dealing
*		with a nested IF near ZCPRFIX that caused problems
*		only when ZCPR was set FALSE.
*		 		-Ryan Katri
*
*	02/20/85 <-- Last update (added 2.43 equates for Paul Foote)
*		 Skip-sign-on will no longer skip the copyright stuff.
*		 Ashton-Tate went to some lengths to make sure it stayed
*		 in place so I decided it must be pretty important to
*		 them.  However, the long list of threats and legal
*	         mumbo-jumbo can be skipped.
*				-Gene Head
*
*	10/25/84 <-- Last update (define the label delimiter character)
*		 Gary Knapp asked for this one to make labels more
*		 readable.  THIS_LABEL instead of the old THIS:LABEL
*				-Gene Head
*
*	09/21/84 <-- Last update (added PREDEFINED option)
*		 Force dBASE II to execute a pre-defined command file.
*				-Gene Head
*
*	08/10/84 <-- Last update (added equates for Z-80 version 2.41)
*		 Re-ordered these updates to reflect most recent first.
*				-Ryan Katri
*
*	07/25/84 <-- Last update  (added version 2.41 equates)
*		Removed ELSE conditionals so this can be assembled
*		with ASM and added version 2.41 equates.
*		(Also added assembly error messages)
*				-Gene Head				
*
*	07/23/84 <-- Last update  (force command file execution)
*		Some folks want to keep un-trained users from the
*		dot-prompt.  This patch will do a warm boot if a
*		valid command file was not specified when DBASE.COM
*		was executed.
*				-Gene Head
*
*	07/18/84 <-- Last update  (skip date option installed)
*		Some folks have time and date functions available
*		and do a date and time set as part of an initiali-
*		zation command so want to skip the ENTER DATE stuff.
*				-Gene Head
*
*	06/20/84 <-- Last update
*		Some folks want to skip the sign-on messages.
*				-Gene Head
*
*	05/25/84 <-- Last update
*		Some folks run ZCPR or a ZCPR look-alike and would
*		like dBASE II to run from drive A: regardless of the
*		default drive it was executed from.
*				-Gene Head
*
*	05/01/84 <-- Last update
*		Moved the KEYIN cubby hole from low memory in
*		the screen defination area to high memory
*		so that INSTALL.COM does not disturb it.
*				-Gene Head
*
*	04/01/84 <-- Last update
*		Some folks need a way to exit a long or forever
*		DO WHILE loop from a keyboard command.  (Like the
*		INKEY$ function found in most BASIC's)
*				-Gene Head
*
*	If you happen to transport any of these features to the
*	MS-DOS version of dBASE II please let me know how you did it.
*
*       I'm also interested in supporting 2.3 and earlier versions.
*	If you have an earlier version and want this modification
*	installed please contact me at the above address or phone.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*   SKIPDATE:
*
*	SKIPDATE will skip the ENTER DATE question at sign-on.
*
*   SKIPSIGNON:
*
*	SKIPSIGNON will skip all the sign-on stuff and go directly
*	to the dot-prompt.  (To skip the sign-off message simply
*			     SET CONSOLE OFF just prior to the
*			     QUIT or QUIT TO command.
*
*   SKIPOPT:
*
*	SKIPOPT option allows a list of selected options to be
*	displayed at sign-on.
*
*   FORCE:
*
*	FORCE option forces a warm boot if a valid command file
*	was not specified when DBASE.COM was executed.  Keeps
*       undesireables from the dot-prompt.
*
*   PREDEFINED:
*
*	PREDEFINED option forces dBASE II to execute a pre-defined
*	command file.  This simulates an auto-start mode without
*	a submit file AND prevents command level operation.
*
*   KEYIN:
*
*	The KEYIN option will allow you to PEEK at the last key
*	press at the keyboard.  Useful for aborting DO WHILE loops.
*
*	PEEK(337) will hold the last key pressed.
*
*   ESCAPE:
*         
*       Disables the ESCape (abort) function so that users may
*       not break out of a .CMD file.  The problem arises even
*       with SET ESCAPE OFF, because between the time that the
*       file is being loaded and ESCAPE is SET OFF, a user could
*       hit ESCape and dBASE would recognize it and respond
*       accordingly. The ESCAPE option is available for for all
*	supported versions.
*
*   ZCPR:
*
*       ZCPR compatibility allows execution from the A: drive if
*       the program can't be located on the default drive.
*
*	NOTE:  This fixes only the access to the DBASEOVR.COM
*	       file and NOT the DBASEMSG.TXT file.  If you use
*	       the on-line HELP command the DBASEMSG.TXT file
*	       must be on the default drive.
*
*
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*     *	BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
*     *	           ATTEMPT TO USE THIS OVERLAY			*
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*  	 Simply SET the proper equates, assemble this file then
*   	 integrate it using the following DDT commands:
*
*	A>DDT DBASE.COM
*	DDT VERS 2.2
*	NEXT  PC
*	4D00 0100
*	-INEWBASE.HEX
*	-R
*	NEXT  PC
*	4D00 0000
*	-G0
*	A>SAVE 76 DBASE.COM   OR  SAVE 77 DBASE.COM if you install
*				  a forced, predefined command file
******* Note: For Vers. 2.43* the SAVE numbers are 84 or 85 ***********
*******************************************************************
*
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*     *	BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
*     *	           ATTEMPT TO USE THIS OVERLAY			*
*     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*
*		PROGRAM STUFF STARTS HERE
*
TRUE	EQU	0FFH		;'YES'
FALSE	EQU	NOT TRUE	;'NO'
*
*
*	INITIAL JUMP LIST
*	*****************
*
*	To help identify supported versions I have developed the 
*	following list of the jump instruction that must be found at
*	location 100H for each supported version.
*
*	Version		Jump instruction at location 100h
*	-------		---------------------------------
*
*	2.3B		JMP  4473
*	2.4		JMP  46C9
*	2.41		JMP  477A
*	2.41Z		JMP  467F
*	2.43		JMP  49B5	* <-- ABANDONED VERSION
*	2.43Z		JMP  5200	* <-- ABANDONED VERSION
*	2.43*		JMP  4C0F
*
*       If your version of DBASE.COM is not listed call me for help.
*
*
*  THE FOLLOWING ARE THE ONLY USER SELECTABLE OPTIONS IN THIS OVERLAY
*
*      Choose ONE AND ONLY ONE of the following versions to be
*	'TRUE'.  All others MUST be 'FALSE'.
*
VER23B	    EQU	  FALSE		;SET TO 'TRUE' IF RUNNING VERSION 2.3B
VER24	    EQU	  FALSE		;SET TO 'TRUE' IF RUNNING VERSION 2.4
VER241      EQU   FALSE		;SET TO 'TRUE' IF RUNNING VERSION 2.41
VER241Z	    EQU   FALSE		;SET TO 'TRUE' IF RUNNING Z-80 2.41
VER243	    EQU	  TRUE 		;SET TO 'TRUE' IF RUNNING VERSION 2.43*
*
*   SET THE FOLLOWING EQUATES TO TRUE OR FALSE FOR YOUR ENVIRONMENT
*
SKIPDATE    EQU	  TRUE 		;SET TO 'TRUE' TO SKIP DATE SET AT SIGN-ON
SKIPSIGNON  EQU	  TRUE  	;SET TO 'TRUE' TO SKIP SIGN-ON MESSAGE
SKIPOPT     EQU   TRUE		;SET TO 'TRUE' TO SKIP OPTIONS AT SIGN-ON
FORCE  	    EQU	  FALSE		;SET TO 'TRUE' TO FORCE A COMMAND FILE
KEYIN	    EQU	  TRUE		;SET TO 'TRUE' TO ALLOW KEY-IN FEATURE
ZCPR	    EQU	  FALSE   	;SET TO 'TRUE' IF RUNNING ZCPR OR LOOK-ALIKE
PREDEFINED  EQU   FALSE 	;SET TO 'TRUE' FOR PRE-DEFINED COMMAND FILE
ESCAPEOFF   EQU   FALSE 	;SET TO 'TRUE' TO DISABLE THE ESCape FUNCTION
DEFAULT     EQU	  'A'-40H 	;DEFAULT DRIVE IF RUNNING ZCPR
CDELIMIT    EQU	  ':'		; PUT YOUR FAVORITE DELIMIT CHARACTER HERE
*				; ie. STORE 9 TO THIS:ONE can be changed
*				;  to STORE 9 TO THIS_ONE by setting this
*				;  equate to '_'
*
* --->	* * *  NOTE:  If you set PREDEFINED to TRUE then you MUST
* --->	* * *	      put your command line at label COMMAND near the
* --->	* * *	      end of this overlay.  Currently 'MENU.CMD'
* 	
*   END OF USER SELECTED EQUATES.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

KEYPATCH	EQU	14AH	;PUT INKEY PATCH HERE FOR ALL VERSIONS
				;TO MAINTAIN TRANSPORTABILITY.  PEEK(337)
				;ON ANY NEWBASE INSTALLATION WILL NOW
				;RETURN THE LAST KEY PRESSED.
	IF	VER23B
*	DBASE II VERSION 2.3B  SIGN-ON DATE 22 FEB 1982
BEGIN	EQU	4473H		;JUMP AROUND INSTALLED PARAMETERS
SKIP1	EQU	461AH		;SKIP DATE HOOK
SKIP2	EQU	46AFH		;SKIP DATE DESTINATION
DATEFIX	EQU	00FEH		;DATE FIX FOR RE-ENTRY
CONSIO	EQU	39F0H		;KEYIN HOOK
SAVE1	EQU	39DFH		;DIRECT BIOS HOOK
MESSAGE	EQU	46BBH		;FIRST BYTE OF SIGN-ON MESSAGE
MESS1	EQU	46E1H		;NEWBASE MESSAGE HOOK
FCB1	EQU	42F3H		;FCB1 FOR DBASEOVE.COM
FCB2	EQU	4314H		;FCB2 FOR DBASEOVR.COM
BUFFERS	EQU	46C0H		;START OF BUFFERS
HELLO	EQU	47D0H		;HELLO MESSAGE
DELIMIT	EQU	2AE4H		;LOCATION OF DELIMIT CHARACTER
DISABLE	EQU	39AEH		;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
NEWREC	EQU	4B00H		;ADDED RECORD FOR PREDEFINED OPTION
				;SHOULD BE THE SAME AS NEXT LOAD
				;WHEN DDT LOADS DBASE.COM
	ENDIF	;VER23B

	IF	VER24
*	DBASE II VERSION 2.4  SIGN-ON DATE APRIL 1, 1983

BEGIN	EQU	46C9H		;JUMP AROUND INSTALLED PARAMETERS
SKIP1	EQU	4876H		;SKIP DATE HOOK
SKIP2	EQU	4892H		;SKIP DATE DESTINATION
DATEFIX	EQU	00FEH		;DATE FIX FOR RE-ENTRY
CONSIO	EQU	3A8AH		;KEYIN HOOK
SAVE1	EQU	4378H		;dBASE II CUBBY-HOLE
MESSAGE	EQU	495AH		;FIRST BYTE OF SIGN-ON MESSAGE
MESS1	EQU	46B5H		;NEWBASE MESSAGE HOOK
FCB1	EQU	4331H		;FCB1 FOR DBASEOVE.COM
FCB2	EQU	4352H		;FCB2 FOR DBASEOVR.COM
XZCPR	EQU	3BA6H		;ZCPR HOOK
ZCPRRET	EQU	3BA9H		;JUMP-BACK LOCATION
BUFFERS	EQU	497EH		;START OF BUFFERS
HELLO	EQU	4AE1H		;HELLO MESSAGE
FREE	EQU	44C9H		;UN-USED PROGRAM SPACE
ENDCODE	EQU	44FFH		;END OF SAFE AREA
DELIMIT	EQU	2B3BH		;LABEL DELIMITER POSITION
DISABLE	EQU	3A47H		;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
NEWREC	EQU	4D00H		;ADDED RECORD FOR PREDEFINED OPTION
				;SHOULD BE THE SAME AS NEXT LOAD
				;WHEN DDT LOADS DBASE.COM
	ENDIF	;VER24


	IF	VER241
*	DBASE II VERSION 2.41 SIGN-ON DATE FEBRUARY 1, 1984

BEGIN	EQU	477AH		;JUMP AROUND INSTALLED PARAMETERS
SKIP1	EQU	4927H		;SKIP DATE HOOK
SKIP2	EQU	4943H		;SKIP DATE DESTINATION
DATEFIX	EQU	00FEH		;DATE FIX FOR RE-ENTRY
CONSIO	EQU	3B25H		;KEYIN HOOK
SAVE1	EQU	4429H		;dBASE II CUBBY-HOLE
MESSAGE	EQU	4A0BH		;FIRST BYTE OF SIGN-ON MESSAGE
MESS1	EQU	4A58H		;NEWBASE MESSAGE HOOK
FCB1	EQU	43E2H		;FCB1 FOR DBASEOVE.COM
FCB2	EQU	4403H		;FCB2 FOR DBASEOVR.COM
XZCPR	EQU	3C49H		;ZCPR HOOK
ZCPRRET	EQU	3C4CH		;JUMP-BACK LOCATION
BUFFERS	EQU	4A37H		;START OF BUFFERS
HELLO	EQU	4B77H		;HELLO MESSAGE
FREE	EQU	457AH		;UN-USED PROGRAM SPACE
ENDCODE	EQU	46FFH		;END OF SAFE AREA
DEFDRV	EQU	0165H		;DEFAULT DRIVE STORAGE
DELIMIT	EQU	2B99H		;LABEL DELIMITER POSITION
DISABLE	EQU	3AE2H		;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
NEWREC	EQU	4D00H		;ADDED RECORD FOR PREDEFINED OPTION
				;SHOULD BE THE SAME AS NEXT LOAD
				;WHEN DDT LOADS DBASE.COM

	ENDIF	;VER241

	IF	VER241Z
*	Z-80 DBASE II VERSION 2.41  SIGN-ON DATE APRIL 1, 1983

BEGIN	EQU	467FH		;JUMP AROUND INSTALLED PARAMETERS
SKIP1	EQU	482CH		;SKIP DATE HOOK
SKIP2	EQU	4904H		;SKIP DATE DESTINATION
DATEFIX	EQU	00FEH		;DATE FIX FOR RE-ENTRY
CONSIO	EQU	3A75H		;KEYIN HOOK
SAVE1	EQU	3A64H		;DIRECT BIOS HOOK
MESSAGE	EQU	4910H		;FIRST BYTE OF SIGN-ON MESSAGE
MESS1	EQU	495DH		;NEWBASE MESSAGE HOOK
FCB1	EQU	42E7H		;FCB1 FOR DBASEOVE.COM
FCB2	EQU	4308H		;FCB2 FOR DBASEOVR.COM
XZCPR	EQU	3B90H		;ZCPR HOOK
ZCPRRET	EQU	3B93H		;JUMP-BACK LOCATION
BUFFERS	EQU	493CH		;START OF BUFFERS
HELLO	EQU	4A7CH		;HELLO MESSAGE
FREE	EQU	4480H		;UN-USED PROGRAM SPACE
ENDCODE	EQU	44FFH		;END OF SAFE AREA
DEFDRV	EQU	0165H		;DEFAULT DRIVE STORAGE
DELIMIT	EQU	2B25H		;LABEL DELIMITER POSITION
DISABLE	EQU	3A48H		;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
NEWREC	EQU	4D00H		;ADDED RECORD FOR PREDEFINED OPTION
				;SHOULD BE THE SAME AS NEXT LOAD
				;WHEN DDT LOADS DBASE.COM

	ENDIF	;VER241Z

	IF	VER243
*	DBASE II VERSION 2.43* SIGN-ON DATE APRIL 30, 1985

BEGIN	EQU	4C0FH		;JUMP AROUND INSTALLED PARAMETERS
SKIP1	EQU	4DD6H		;SKIP DATE HOOK
SKIP2	EQU	4DF2H		;SKIP DATE DESTINATION
DATEFIX	EQU	4941H		;DATE FIX FOR RE-ENTRY
CONSIO	EQU	3F24H		;KEYIN HOOK
SAVE1	EQU	4867H		;dBASE II CUBBY-HOLE
MESSAGE	EQU	4EC8H		;FIRST BYTE OF SIGN-ON MESSAGE 1
MESS1	EQU	4F1BH		;NEWBASE MESSAGE HOOK
MESS2	EQU	5049H		;FIRST BYTE OF SIGN-ON MESSAGE 2
FCB1	EQU	4820H		;FCB1 FOR DBASEOVE.COM
FCB2	EQU	4841H		;FCB2 FOR DBASEOVR.COM
XZCPR	EQU	404DH		;ZCPR HOOK
ZCPRRET	EQU	4050H		;JUMP-BACK LOCATION
BUFFERS	EQU	4ECDH		;START OF BUFFERS
HELLO	EQU	5339H		;HELLO MESSAGE
FREE	EQU	4A0FH		;UN-USED PROGRAM SPACE
ENDCODE	EQU	4A7FH		;END OF SAFE AREA
DEFDRV	EQU	0165H		;DEFAULT DRIVE STORAGE
DELIMIT	EQU	2E36H		;LABEL DELIMITER POSITION
DISABLE	EQU	3ED9H		;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
NEWREC	EQU	5480H		;ADDED RECORD FOR PREDEFINED OPTION
				;SHOULD BE THE SAME AS NEXT LOAD
				;WHEN DDT LOADS DBASE.COM

	ENDIF	;VER243*
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
WBOOT	EQU	0		;WARM BOOT 
BDOS	EQU	5		;BDOS ENTRY
OPEN	EQU	0FH		;OPEN FILE FUNCTION
FAILED	EQU	0FFH		;DISK I-O FAILED
*
*
	IF	CDELIMIT
	ORG	DELIMIT
	DB	CDELIMIT
	ENDIF

	IF	ESCAPEOFF
	ORG	DISABLE
	DB	0		;ZERO OUT BYTE 1 (FE=CPI INSTRUCTION)
	DB	0		;ZERO OUT BYTE 2 (1B=ASCII CODE FOR ESC)
	ENDIF	;ESCAPEOFF

*
*   Patch here if either SKIPDATE or COMMAND options are true.
*      Note COMMAND option has highest priority

	IF	SKIPDATE
	ORG	SKIP1
	LXI	H,0
	SHLD	DATEFIX
	JMP	SKIP2		;. . .  BYPASS DATE STUFF AT SIGN-ON
	ENDIF	;SKIPDATE
*					OR
	IF	FORCE
	ORG	SKIP1
	JMP	WBOOT		;. . .  FORCE A COMMAND FILE
	ENDIF	;FORCE
*
	IF	PREDEFINED
	ORG	100H
	JMP	CLINE
	ENDIF	;PREDEFINED
*
	IF	SKIPSIGNON
	ORG	MESSAGE
	DB	0		;CANCEL SIGN ON MESSAGE
	ORG	MESS1
	LXI	H,HELLO		;NEWBASE OPTIONS MESSAGE
	ENDIF	;SKIPSIGNON

	IF VER243 AND SKIPSIGNON
	ORG	MESS2		;MORE TO SKIP THE SIGN-ON
	DB	0	
	ENDIF	;  AND SKIP SIGNON

*
*  patch for new KEYIN psudo-function
	IF	KEYIN
	ORG	CONSIO
	JMP	XKEYIN
	ENDIF	;KEYIN

	IF	KEYIN AND (VER241Z OR  VER23B)
	ORG	SAVE1		;Fix direct BIOS hook
	SHLD	XKEYIN+1
	ENDIF	;KEYIN AND (VER241Z OR  VER23B)

*
*    FIX THE BUFFERS
	ORG	BUFFERS

	IF	VER24 OR VER241 OR VER243 OR VER23B
	SBB	H	;BUMP BUFFER 1 POINTER
	ADC	D	;ADD OFFSET
	XRA	M	;ADJUST BY BUFFER 1 VALUE
	ENDIF	;VER24 OR VER241 OR VER243 OR VER23B

	IF	VER241Z
	ORA	H	;FIX BUFFER OFFSET IN Z-80 VERSION
	MOV	E,M
	ENDIF	;VER241Z

	ADD	H	;  ...  BUMP AGAIN
	ADD	D	;  ...  AND AGAIN
	ANA	M	;NOW DO BUFFER 2
	ADC	D	
	DB	40H,40H
*
	IF	SKIPOPT
	ORG	HELLO
	DB	0
	ENDIF	;SKIPOPT

	IF	NOT SKIPOPT
	ORG	HELLO
	DB	0DH,0AH,0AH
	ENDIF	;NOT SKIPOPT

	IF	ZCPR AND NOT SKIPOPT
	DB	'ZCPR Compatible'
	ENDIF	;ZCPR AND NOT SKIPOPT

	IF	ZCPR AND KEYIN AND NOT SKIPOPT
	DB	' + '
	ENDIF	;ZCPR AND KEYIN AND NOT SKIPOPT

	IF	KEYIN AND NOT SKIPOPT
	DB	'KEYIN at --> 337'
	ENDIF	;KEYIN AND NOT SKIPOPT


	IF 	(KEYIN OR ZCPR) AND NOT SKIPOPT
	DB	0DH,0AH,0
	ENDIF	;(KEYIN OR ZCPR) AND NOT SKIPOPT

*  new, added code begins here and must end before 44FFH
*
	IF 	KEYIN
XKEYIN:	ORG	KEYPATCH
	ENDIF 	;KEYIN

 	IF	(VER24 OR VER241 OR VER243) AND KEYIN
 	STA	SAVE1		;SAVE FOR dBASE.COM
 	ENDIF	;(VER24 OR VER241 OR VER243) AND KEYIN

	IF	(VER241Z OR VER23B) AND KEYIN 
	CALL	0		;PATCHED BY Z-80 DBASE II
	ENDIF	;(VER241Z OR VER23B) AND KEYIN


	IF 	KEYIN
	STA	SAVE2		;SAVE FOR KEYIN
	RET
SAVE2	DS	1  		;KEYIN CUBBY-HOLE (decimal value)
	ENDIF	;KEYIN
*
	IF	ZCPR AND (NOT VER23B)
	ORG	XZCPR
	JMP	ZCPRFIX

	ORG	FREE
ZCPRFIX	CPI	FAILED
	JNZ	ZCPRRET		;FILE OPEN OK SO RETURN
	LXI	D,FCB1	
	MVI	A,DEFAULT	;SET UP FOR DEFAULT DRIVE
	STAX	D
	STA	FCB2
	ENDIF	;ZCPR AND (NOT VER23B)

	IF	(VER241 OR VER241Z OR VER243 ) AND ZCPR
	STA	DEFDRV		;DEFAULT DRIVE STORAGE
	ENDIF	;(VER241 OR VER241Z OR VER243 ) AND ZCPR

	IF	ZCPR AND (NOT VER23B)	
	MVI	C,OPEN
	CALL	BDOS		;TRY TO OPEN DBASEOVR.COM
	CPI	FAILED		; . .ON DEFAULT DRIVE
	JNZ	ZCPRRET		;GO BACK IF FOUND
	RET			;RETURN WITH ZERO SET IF
	ENDIF	;ZCPR

	IF	ZCPR AND VER23B
	ORG	FCB1
	DB	DEFAULT
	ORG	FCB2
	DB	DEFAULT
	ENDIF

BODYEND	EQU	$
*

	IF	PREDEFINED
	ORG	NEWREC
CLINE	LXI	H,COMMAND	;POINT TO PRE-DEFINED COMMAND LINE
	LXI	D,80H		;DEFAULT COMMAND LINE BUFFER
	MOV	B,M		;LENGTH OF COMMAND LINE
CLINE1	MOV	A,M		
	STAX	D		;MOVE IT TO BUFFER AS THO IT
	INX	H		;...IT HAD BEEN ENTERED FROM
	INX	D		;......THE KEYBOARD
	DCR	B
	JM	CLINE2
	JMP	CLINE1

CLINE2	LXI	H,5CH
	LXI	D,XFCB
	MVI	B,12
CLINE3	LDAX	D
	MOV	M,A
	INX	H
	INX	D
	DCR	B
	JNZ	CLINE3
	JMP	BEGIN

*
*   Try to keep the command line short as there isn't much room left
*   if all the options are installed.
*
COMMAND	DB	CMDEND-COMMAND
	DB	'MENU.CMD'	;<-- PUT COMMAND LINE HERE IN SINGLE
				;    . . .  JUST AS YOU WOULD TYPE IT.
CMDEND	EQU	$

XFCB:	DB	'@'-40H		;<-- DRIVE   '@' FOR DEFAULT DRIVE
	DB	'MENU    CMD'   ;<-- MUST BE 11 CHARACTERS EXACTLY
				;<-- LIKE  'MYFILE  CMD'  NO PERIOD
				;<-- JUST FILENAME OF EXACTLY EIGHT
				;<-- CHARACTERS FOLLOWED BY THREE FILE
				;<-- TYPE CHARACTERS.
	ENDIF	;PREDEFINED
