home *** CD-ROM | disk | FTP | other *** search
- *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
- * *
- * LEGAL STUFF UP FRONT *
- * *
- * NEWBASE.ASM *
- * *
- * 1984 (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. *
- * *
- * *
- *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
-
- *
- *
- * * * * * * * * * * 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
-
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * 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 dBASE II)
- * 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.
- *
- * 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(ddddd) will hold the last key pressed.
- *
- *
- * 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
- *
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * * 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'
- *
- *
- * 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'.
- *
- VER24 EQU FALSE ;SET TO 'TRUE' IF RUNNING VERSION 2.4
- VER241 EQU TRUE ;SET TO 'TRUE' IF RUNNING VERSION 2.41
- VER241Z EQU FALSE ;SET TO 'TRUE' IF RUNNING Z-80 2.41
- *
- * SET THE FOLLOWING EQUATES TO TRUE OR FALSE FOR YOUR ENVIRONMENT
- *
- SKIPDATE EQU FALSE ;SET TO 'TRUE' TO SKIP DATE SET AT SIGN-ON
- SKIPSIGNON EQU FALSE ;SET TO 'TRUE' TO SKIP SIGN-ON MESSAGE
- SKIPOPT EQU FALSE ;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 TRUE ;SET TO 'TRUE' IF RUNNING ZCPR OR LOOK-ALIKE
- PREDEFINED EQU FALSE ;SET TO 'TRUE' FOR PRE-DEFINED COMMAND FILE
- DEFAULT EQU 'A'-40H ;DEFAULT DRIVE IF RUNNING ZCPR
- CDELIMIT EQU '_' ;PUT A ZERO HERE TO KEEP LABEL DELIMITER
- * ; AS ':' OTHERWISE PUT IN YOUR CHARACTER
- * ; ie. STORE 1 TO THIS:ONE can be changed
- * ; to STORE 1 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.
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-
- 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
- CONSIO EQU 3A8AH ;KEYIN HOOK
- SAVE1 EQU 4378H ;dBASE II CUBBY-HOLE
- MESSAGE EQU 495AH ;FIRST BYTE OF SIGN-ON MESSAGE
- MESS1 EQU 499FH ;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
- 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
- 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
-
- 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
- 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
- ENDIF ;VER241Z
-
-
- *
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- *
- WBOOT EQU 0 ;WARM BOOT
- BDOS EQU 5 ;BDOS ENTRY
- OPEN EQU 0FH ;OPEN FILE FUNCTION
- FAILED EQU 0FFH ;DISK I-O FAILED
- *
- *
- * Patch here if either SKIPDATE or COMMAND options are true.
- * Note COMMAND option has highest priority
-
- IF CDELIMIT
- ORG DELIMIT
- DB CDELIMIT
- ENDIF
-
- IF SKIPDATE
- ORG SKIP1
- 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
- *
- * patch for new KEYIN psudo-function
- IF KEYIN
- ORG CONSIO
- JMP XKEYIN
-
- IF VER241Z
- ORG SAVE1 ;Fix direct BIOS hook
- SHLD XKEYIN+1
- ENDIF ;VER241Z
-
- ENDIF ;KEYIN
- *
- * patch for ZCPR compatibility
- IF ZCPR
- *
- ORG XZCPR
- JMP ZCPRFIX
- ENDIF ;ZCPR
- *
- * FIX THE BUFFERS
- ORG BUFFERS
-
- IF NOT VER241Z
- SBB H ;BUMP BUFFER 1 POINTER
- ADC D ;ADD OFFSET
- XRA M ;ADJUST BY BUFFER 1 VALUE
- ENDIF ;NOT VER241Z
-
- IF VER241Z
- ORA H ;FIX BUFFER OFFSET IN Z-90 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
- IF ZCPR
- DB 'ZCPR Compatible'
- IF ZCPR AND KEYIN
- DB ' + '
- ENDIF ;ZCPR AND KEYIN
- ENDIF ;ZCPR
- IF KEYIN
- DB 'KEYIN at --> '
-
- IF VER24
- DB '17616' ;KEYIN LOCATION FOR 2.4
- ENDIF ;VER24
-
- IF VER241
- DB '17793' ;KEYIN LOCATION FOR 2.41
- ENDIF ;VER241
-
- IF VER241Z
- DB '17543' ;KEYIN LOCATION FOR 2.41 Z-80
- ENDIF ;VER241Z
-
- ENDIF ;KEYIN
- DB 0DH,0AH
-
- ENDIF ;NOT SKIPOPT
-
- * new, added code begins here and must end before 44FFH
- ORG FREE
- *
- IF KEYIN
- XKEYIN:
- IF NOT VER241Z
- STA SAVE1 ;SAVE FOR dBASE.COM
- ENDIF ;NOT VER241Z
-
- IF VER241Z
- CALL 0 ;PATCHED BY Z-80 DBASE II
- ENDIF ;VER241Z
-
- STA SAVE2 ;SAVE FOR KEYIN
- RET
- SAVE2 DS 1 ;KEYIN CUBBY-HOLE (decimal value)
- ENDIF ;KEYIN
- *
- IF ZCPR
- 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
-
- IF VER241 OR VER241Z
- STA DEFDRV ;DEFAULT DRIVE STORAGE
- ENDIF ;VER241 OR VER241Z
-
- 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
- BODYEND EQU $
- *
-
- IF PREDEFINED
- ORG 4D00H
- 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