home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / dbaseii / newbas11.asm < prev    next >
Encoding:
Assembly Source File  |  1994-07-13  |  19.6 KB  |  642 lines

  1. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
  2. *                                    *
  3. *            LEGAL STUFF UP FRONT                *
  4. *                                    *
  5. *    NEWBASE.ASM                            *
  6. *                                    *
  7. *    1984, 1985 (c) Copyright by                    *
  8. *    Gene Head                            *
  9. *    2860 NW Skyline Drive                        *
  10. *    Corvallis, Oregon  97330    (503)  758-0279            *
  11. *                                    *
  12. *    All rights reserved.                        *
  13. *                                    *
  14. *    Released for non-commercial, private use only.            *
  15. *    Released for no-profit use only.  If you make any money        *
  16. *    using this overlay or use it in your business I expect        *
  17. *    fair compensation to be mailed to the address above.        *
  18. *                                    *
  19. *    I also support the DBRUN, the dBASE II run-time            *
  20. *    package for a modest fee per installation.            *
  21. *                                    *
  22. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
  23.  
  24. *
  25. *
  26.    * * * * * * * * * *    E D I T O R I A L    * * * * * * * * * * * *
  27.    *    This overlay is intended for the use of licensed users of    *
  28.    *    dBASE II only.   If you 'own' a copy of dBASE II that you    *
  29.    *    did not purchase or receive legitimately you are a thief,    *
  30.    *    it is that simple.   Stealing software will only drive up    *
  31.    *    prices for legal users  and dry up the sources of quality    *
  32.    *    software products.                         *
  33.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  34. *
  35. *
  36. ***********************************************************************
  37. *
  38. *        PROGRAM DOCUMENTATION STUFF STARTS HERE
  39. *
  40. *       PROGRAM NAME -->  NEWBASEx.ASM
  41. *
  42. *
  43. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  44. *
  45. *    07/20/85 <-- Last update (Added equates for version 2.43*)
  46. *         NOTE:  There is a big difference between version
  47. *         2.43* (notice the *) and plain 2.43.
  48. *
  49. *    04/22/85 <-- Last update (Partial support of version 2.3B restored)
  50. *         Version 2.3B will NOT support full ZCPR operation.  You
  51. *         CAN specify a default drive where overlays will be found.
  52. *                -Gene Head
  53. *
  54. *    03/20/85 <-- Last update (tried to fix all the ASM nesting problems)
  55. *         ASM.COM will not consistantly recognize nested conditionals!
  56. *         I tried to figure out all the logic to un-nest the nested
  57. *         conditionals.  Also added the ESCape key disable on all
  58. *         supported versions.  (VERSION 2.3B NO LONGER SUPPORTED)
  59. *                -Gene Head
  60. *
  61. *    03/18/85 <-- Last update (added ESCape key disable option)
  62. *         Added ESCape disable option so that users may
  63. *         not abort a program file before it has time to
  64. *         SET ESCAPE OFF.  SET ESCAPE OFF should still be
  65. *         one of the first lines in your command file.
  66. *                -Ryan Katri         
  67. *
  68. *    03/17/85 <-- Last update (added Z-80 2.43 equates)
  69. *        Fixed a problem that ASM was having when dealing
  70. *        with a nested IF near ZCPRFIX that caused problems
  71. *        only when ZCPR was set FALSE.
  72. *                 -Ryan Katri
  73. *
  74. *    02/20/85 <-- Last update (added 2.43 equates for Paul Foote)
  75. *         Skip-sign-on will no longer skip the copyright stuff.
  76. *         Ashton-Tate went to some lengths to make sure it stayed
  77. *         in place so I decided it must be pretty important to
  78. *         them.  However, the long list of threats and legal
  79. *             mumbo-jumbo can be skipped.
  80. *                -Gene Head
  81. *
  82. *    10/25/84 <-- Last update (define the label delimiter character)
  83. *         Gary Knapp asked for this one to make labels more
  84. *         readable.  THIS_LABEL instead of the old THIS:LABEL
  85. *                -Gene Head
  86. *
  87. *    09/21/84 <-- Last update (added PREDEFINED option)
  88. *         Force dBASE II to execute a pre-defined command file.
  89. *                -Gene Head
  90. *
  91. *    08/10/84 <-- Last update (added equates for Z-80 version 2.41)
  92. *         Re-ordered these updates to reflect most recent first.
  93. *                -Ryan Katri
  94. *
  95. *    07/25/84 <-- Last update  (added version 2.41 equates)
  96. *        Removed ELSE conditionals so this can be assembled
  97. *        with ASM and added version 2.41 equates.
  98. *        (Also added assembly error messages)
  99. *                -Gene Head                
  100. *
  101. *    07/23/84 <-- Last update  (force command file execution)
  102. *        Some folks want to keep un-trained users from the
  103. *        dot-prompt.  This patch will do a warm boot if a
  104. *        valid command file was not specified when DBASE.COM
  105. *        was executed.
  106. *                -Gene Head
  107. *
  108. *    07/18/84 <-- Last update  (skip date option installed)
  109. *        Some folks have time and date functions available
  110. *        and do a date and time set as part of an initiali-
  111. *        zation command so want to skip the ENTER DATE stuff.
  112. *                -Gene Head
  113. *
  114. *    06/20/84 <-- Last update
  115. *        Some folks want to skip the sign-on messages.
  116. *                -Gene Head
  117. *
  118. *    05/25/84 <-- Last update
  119. *        Some folks run ZCPR or a ZCPR look-alike and would
  120. *        like dBASE II to run from drive A: regardless of the
  121. *        default drive it was executed from.
  122. *                -Gene Head
  123. *
  124. *    05/01/84 <-- Last update
  125. *        Moved the KEYIN cubby hole from low memory in
  126. *        the screen defination area to high memory
  127. *        so that INSTALL.COM does not disturb it.
  128. *                -Gene Head
  129. *
  130. *    04/01/84 <-- Last update
  131. *        Some folks need a way to exit a long or forever
  132. *        DO WHILE loop from a keyboard command.  (Like the
  133. *        INKEY$ function found in most BASIC's)
  134. *                -Gene Head
  135. *
  136. *    If you happen to transport any of these features to the
  137. *    MS-DOS version of dBASE II please let me know how you did it.
  138. *
  139. *       I'm also interested in supporting 2.3 and earlier versions.
  140. *    If you have an earlier version and want this modification
  141. *    installed please contact me at the above address or phone.
  142. *
  143. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  144. *
  145. *   SKIPDATE:
  146. *
  147. *    SKIPDATE will skip the ENTER DATE question at sign-on.
  148. *
  149. *   SKIPSIGNON:
  150. *
  151. *    SKIPSIGNON will skip all the sign-on stuff and go directly
  152. *    to the dot-prompt.  (To skip the sign-off message simply
  153. *                 SET CONSOLE OFF just prior to the
  154. *                 QUIT or QUIT TO command.
  155. *
  156. *   SKIPOPT:
  157. *
  158. *    SKIPOPT option allows a list of selected options to be
  159. *    displayed at sign-on.
  160. *
  161. *   FORCE:
  162. *
  163. *    FORCE option forces a warm boot if a valid command file
  164. *    was not specified when DBASE.COM was executed.  Keeps
  165. *       undesireables from the dot-prompt.
  166. *
  167. *   PREDEFINED:
  168. *
  169. *    PREDEFINED option forces dBASE II to execute a pre-defined
  170. *    command file.  This simulates an auto-start mode without
  171. *    a submit file AND prevents command level operation.
  172. *
  173. *   KEYIN:
  174. *
  175. *    The KEYIN option will allow you to PEEK at the last key
  176. *    press at the keyboard.  Useful for aborting DO WHILE loops.
  177. *
  178. *    PEEK(337) will hold the last key pressed.
  179. *
  180. *   ESCAPE:
  181. *         
  182. *       Disables the ESCape (abort) function so that users may
  183. *       not break out of a .CMD file.  The problem arises even
  184. *       with SET ESCAPE OFF, because between the time that the
  185. *       file is being loaded and ESCAPE is SET OFF, a user could
  186. *       hit ESCape and dBASE would recognize it and respond
  187. *       accordingly. The ESCAPE option is available for for all
  188. *    supported versions.
  189. *
  190. *   ZCPR:
  191. *
  192. *       ZCPR compatibility allows execution from the A: drive if
  193. *       the program can't be located on the default drive.
  194. *
  195. *    NOTE:  This fixes only the access to the DBASEOVR.COM
  196. *           file and NOT the DBASEMSG.TXT file.  If you use
  197. *           the on-line HELP command the DBASEMSG.TXT file
  198. *           must be on the default drive.
  199. *
  200. *
  201. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  202. *     *    BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
  203. *     *               ATTEMPT TO USE THIS OVERLAY            *
  204. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  205. *
  206. *       Simply SET the proper equates, assemble this file then
  207. *        integrate it using the following DDT commands:
  208. *
  209. *    A>DDT DBASE.COM
  210. *    DDT VERS 2.2
  211. *    NEXT  PC
  212. *    4D00 0100
  213. *    -INEWBASE.HEX
  214. *    -R
  215. *    NEXT  PC
  216. *    4D00 0000
  217. *    -G0
  218. *    A>SAVE 76 DBASE.COM   OR  SAVE 77 DBASE.COM if you install
  219. *                  a forced, predefined command file
  220. ******* Note: For Vers. 2.43* the SAVE numbers are 84 or 85 ***********
  221. *******************************************************************
  222. *
  223. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  224. *     *    BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
  225. *     *               ATTEMPT TO USE THIS OVERLAY            *
  226. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  227. *
  228. *
  229. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  230. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  231. *
  232. *        PROGRAM STUFF STARTS HERE
  233. *
  234. TRUE    EQU    0FFH        ;'YES'
  235. FALSE    EQU    NOT TRUE    ;'NO'
  236. *
  237. *
  238. *    INITIAL JUMP LIST
  239. *    *****************
  240. *
  241. *    To help identify supported versions I have developed the 
  242. *    following list of the jump instruction that must be found at
  243. *    location 100H for each supported version.
  244. *
  245. *    Version        Jump instruction at location 100h
  246. *    -------        ---------------------------------
  247. *
  248. *    2.3B        JMP  4473
  249. *    2.4        JMP  46C9
  250. *    2.41        JMP  477A
  251. *    2.41Z        JMP  467F
  252. *    2.43        JMP  49B5    * <-- ABANDONED VERSION
  253. *    2.43Z        JMP  5200    * <-- ABANDONED VERSION
  254. *    2.43*        JMP  4C0F
  255. *
  256. *       If your version of DBASE.COM is not listed call me for help.
  257. *
  258. *
  259. *  THE FOLLOWING ARE THE ONLY USER SELECTABLE OPTIONS IN THIS OVERLAY
  260. *
  261. *      Choose ONE AND ONLY ONE of the following versions to be
  262. *    'TRUE'.  All others MUST be 'FALSE'.
  263. *
  264. VER23B        EQU      FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.3B
  265. VER24        EQU      FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.4
  266. VER241      EQU   FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.41
  267. VER241Z        EQU   FALSE        ;SET TO 'TRUE' IF RUNNING Z-80 2.41
  268. VER243        EQU      TRUE         ;SET TO 'TRUE' IF RUNNING VERSION 2.43*
  269. *
  270. *   SET THE FOLLOWING EQUATES TO TRUE OR FALSE FOR YOUR ENVIRONMENT
  271. *
  272. SKIPDATE    EQU      TRUE         ;SET TO 'TRUE' TO SKIP DATE SET AT SIGN-ON
  273. SKIPSIGNON  EQU      TRUE      ;SET TO 'TRUE' TO SKIP SIGN-ON MESSAGE
  274. SKIPOPT     EQU   TRUE        ;SET TO 'TRUE' TO SKIP OPTIONS AT SIGN-ON
  275. FORCE          EQU      FALSE        ;SET TO 'TRUE' TO FORCE A COMMAND FILE
  276. KEYIN        EQU      TRUE        ;SET TO 'TRUE' TO ALLOW KEY-IN FEATURE
  277. ZCPR        EQU      FALSE       ;SET TO 'TRUE' IF RUNNING ZCPR OR LOOK-ALIKE
  278. PREDEFINED  EQU   FALSE     ;SET TO 'TRUE' FOR PRE-DEFINED COMMAND FILE
  279. ESCAPEOFF   EQU   FALSE     ;SET TO 'TRUE' TO DISABLE THE ESCape FUNCTION
  280. DEFAULT     EQU      'A'-40H     ;DEFAULT DRIVE IF RUNNING ZCPR
  281. CDELIMIT    EQU      ':'        ; PUT YOUR FAVORITE DELIMIT CHARACTER HERE
  282. *                ; ie. STORE 9 TO THIS:ONE can be changed
  283. *                ;  to STORE 9 TO THIS_ONE by setting this
  284. *                ;  equate to '_'
  285. *
  286. * --->    * * *  NOTE:  If you set PREDEFINED to TRUE then you MUST
  287. * --->    * * *          put your command line at label COMMAND near the
  288. * --->    * * *          end of this overlay.  Currently 'MENU.CMD'
  289. *     
  290. *   END OF USER SELECTED EQUATES.
  291. *
  292. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  293.  
  294. KEYPATCH    EQU    14AH    ;PUT INKEY PATCH HERE FOR ALL VERSIONS
  295.                 ;TO MAINTAIN TRANSPORTABILITY.  PEEK(337)
  296.                 ;ON ANY NEWBASE INSTALLATION WILL NOW
  297.                 ;RETURN THE LAST KEY PRESSED.
  298.     IF    VER23B
  299. *    DBASE II VERSION 2.3B  SIGN-ON DATE 22 FEB 1982
  300. BEGIN    EQU    4473H        ;JUMP AROUND INSTALLED PARAMETERS
  301. SKIP1    EQU    461AH        ;SKIP DATE HOOK
  302. SKIP2    EQU    46AFH        ;SKIP DATE DESTINATION
  303. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  304. CONSIO    EQU    39F0H        ;KEYIN HOOK
  305. SAVE1    EQU    39DFH        ;DIRECT BIOS HOOK
  306. MESSAGE    EQU    46BBH        ;FIRST BYTE OF SIGN-ON MESSAGE
  307. MESS1    EQU    46E1H        ;NEWBASE MESSAGE HOOK
  308. FCB1    EQU    42F3H        ;FCB1 FOR DBASEOVE.COM
  309. FCB2    EQU    4314H        ;FCB2 FOR DBASEOVR.COM
  310. BUFFERS    EQU    46C0H        ;START OF BUFFERS
  311. HELLO    EQU    47D0H        ;HELLO MESSAGE
  312. DELIMIT    EQU    2AE4H        ;LOCATION OF DELIMIT CHARACTER
  313. DISABLE    EQU    39AEH        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  314. NEWREC    EQU    4B00H        ;ADDED RECORD FOR PREDEFINED OPTION
  315.                 ;SHOULD BE THE SAME AS NEXT LOAD
  316.                 ;WHEN DDT LOADS DBASE.COM
  317.     ENDIF    ;VER23B
  318.  
  319.     IF    VER24
  320. *    DBASE II VERSION 2.4  SIGN-ON DATE APRIL 1, 1983
  321.  
  322. BEGIN    EQU    46C9H        ;JUMP AROUND INSTALLED PARAMETERS
  323. SKIP1    EQU    4876H        ;SKIP DATE HOOK
  324. SKIP2    EQU    4892H        ;SKIP DATE DESTINATION
  325. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  326. CONSIO    EQU    3A8AH        ;KEYIN HOOK
  327. SAVE1    EQU    4378H        ;dBASE II CUBBY-HOLE
  328. MESSAGE    EQU    495AH        ;FIRST BYTE OF SIGN-ON MESSAGE
  329. MESS1    EQU    46B5H        ;NEWBASE MESSAGE HOOK
  330. FCB1    EQU    4331H        ;FCB1 FOR DBASEOVE.COM
  331. FCB2    EQU    4352H        ;FCB2 FOR DBASEOVR.COM
  332. XZCPR    EQU    3BA6H        ;ZCPR HOOK
  333. ZCPRRET    EQU    3BA9H        ;JUMP-BACK LOCATION
  334. BUFFERS    EQU    497EH        ;START OF BUFFERS
  335. HELLO    EQU    4AE1H        ;HELLO MESSAGE
  336. FREE    EQU    44C9H        ;UN-USED PROGRAM SPACE
  337. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  338. DELIMIT    EQU    2B3BH        ;LABEL DELIMITER POSITION
  339. DISABLE    EQU    3A47H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  340. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  341.                 ;SHOULD BE THE SAME AS NEXT LOAD
  342.                 ;WHEN DDT LOADS DBASE.COM
  343.     ENDIF    ;VER24
  344.  
  345.  
  346.     IF    VER241
  347. *    DBASE II VERSION 2.41 SIGN-ON DATE FEBRUARY 1, 1984
  348.  
  349. BEGIN    EQU    477AH        ;JUMP AROUND INSTALLED PARAMETERS
  350. SKIP1    EQU    4927H        ;SKIP DATE HOOK
  351. SKIP2    EQU    4943H        ;SKIP DATE DESTINATION
  352. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  353. CONSIO    EQU    3B25H        ;KEYIN HOOK
  354. SAVE1    EQU    4429H        ;dBASE II CUBBY-HOLE
  355. MESSAGE    EQU    4A0BH        ;FIRST BYTE OF SIGN-ON MESSAGE
  356. MESS1    EQU    4A58H        ;NEWBASE MESSAGE HOOK
  357. FCB1    EQU    43E2H        ;FCB1 FOR DBASEOVE.COM
  358. FCB2    EQU    4403H        ;FCB2 FOR DBASEOVR.COM
  359. XZCPR    EQU    3C49H        ;ZCPR HOOK
  360. ZCPRRET    EQU    3C4CH        ;JUMP-BACK LOCATION
  361. BUFFERS    EQU    4A37H        ;START OF BUFFERS
  362. HELLO    EQU    4B77H        ;HELLO MESSAGE
  363. FREE    EQU    457AH        ;UN-USED PROGRAM SPACE
  364. ENDCODE    EQU    46FFH        ;END OF SAFE AREA
  365. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  366. DELIMIT    EQU    2B99H        ;LABEL DELIMITER POSITION
  367. DISABLE    EQU    3AE2H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  368. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  369.                 ;SHOULD BE THE SAME AS NEXT LOAD
  370.                 ;WHEN DDT LOADS DBASE.COM
  371.  
  372.     ENDIF    ;VER241
  373.  
  374.     IF    VER241Z
  375. *    Z-80 DBASE II VERSION 2.41  SIGN-ON DATE APRIL 1, 1983
  376.  
  377. BEGIN    EQU    467FH        ;JUMP AROUND INSTALLED PARAMETERS
  378. SKIP1    EQU    482CH        ;SKIP DATE HOOK
  379. SKIP2    EQU    4904H        ;SKIP DATE DESTINATION
  380. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  381. CONSIO    EQU    3A75H        ;KEYIN HOOK
  382. SAVE1    EQU    3A64H        ;DIRECT BIOS HOOK
  383. MESSAGE    EQU    4910H        ;FIRST BYTE OF SIGN-ON MESSAGE
  384. MESS1    EQU    495DH        ;NEWBASE MESSAGE HOOK
  385. FCB1    EQU    42E7H        ;FCB1 FOR DBASEOVE.COM
  386. FCB2    EQU    4308H        ;FCB2 FOR DBASEOVR.COM
  387. XZCPR    EQU    3B90H        ;ZCPR HOOK
  388. ZCPRRET    EQU    3B93H        ;JUMP-BACK LOCATION
  389. BUFFERS    EQU    493CH        ;START OF BUFFERS
  390. HELLO    EQU    4A7CH        ;HELLO MESSAGE
  391. FREE    EQU    4480H        ;UN-USED PROGRAM SPACE
  392. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  393. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  394. DELIMIT    EQU    2B25H        ;LABEL DELIMITER POSITION
  395. DISABLE    EQU    3A48H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  396. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  397.                 ;SHOULD BE THE SAME AS NEXT LOAD
  398.                 ;WHEN DDT LOADS DBASE.COM
  399.  
  400.     ENDIF    ;VER241Z
  401.  
  402.     IF    VER243
  403. *    DBASE II VERSION 2.43* SIGN-ON DATE APRIL 30, 1985
  404.  
  405. BEGIN    EQU    4C0FH        ;JUMP AROUND INSTALLED PARAMETERS
  406. SKIP1    EQU    4DD6H        ;SKIP DATE HOOK
  407. SKIP2    EQU    4DF2H        ;SKIP DATE DESTINATION
  408. DATEFIX    EQU    4941H        ;DATE FIX FOR RE-ENTRY
  409. CONSIO    EQU    3F24H        ;KEYIN HOOK
  410. SAVE1    EQU    4867H        ;dBASE II CUBBY-HOLE
  411. MESSAGE    EQU    4EC8H        ;FIRST BYTE OF SIGN-ON MESSAGE 1
  412. MESS1    EQU    4F1BH        ;NEWBASE MESSAGE HOOK
  413. MESS2    EQU    5049H        ;FIRST BYTE OF SIGN-ON MESSAGE 2
  414. FCB1    EQU    4820H        ;FCB1 FOR DBASEOVE.COM
  415. FCB2    EQU    4841H        ;FCB2 FOR DBASEOVR.COM
  416. XZCPR    EQU    404DH        ;ZCPR HOOK
  417. ZCPRRET    EQU    4050H        ;JUMP-BACK LOCATION
  418. BUFFERS    EQU    4ECDH        ;START OF BUFFERS
  419. HELLO    EQU    5339H        ;HELLO MESSAGE
  420. FREE    EQU    4A0FH        ;UN-USED PROGRAM SPACE
  421. ENDCODE    EQU    4A7FH        ;END OF SAFE AREA
  422. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  423. DELIMIT    EQU    2E36H        ;LABEL DELIMITER POSITION
  424. DISABLE    EQU    3ED9H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  425. NEWREC    EQU    5480H        ;ADDED RECORD FOR PREDEFINED OPTION
  426.                 ;SHOULD BE THE SAME AS NEXT LOAD
  427.                 ;WHEN DDT LOADS DBASE.COM
  428.  
  429.     ENDIF    ;VER243*
  430. *
  431. *
  432. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  433. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  434. *
  435. *
  436. WBOOT    EQU    0        ;WARM BOOT 
  437. BDOS    EQU    5        ;BDOS ENTRY
  438. OPEN    EQU    0FH        ;OPEN FILE FUNCTION
  439. FAILED    EQU    0FFH        ;DISK I-O FAILED
  440. *
  441. *
  442.     IF    CDELIMIT
  443.     ORG    DELIMIT
  444.     DB    CDELIMIT
  445.     ENDIF
  446.  
  447.     IF    ESCAPEOFF
  448.     ORG    DISABLE
  449.     DB    0        ;ZERO OUT BYTE 1 (FE=CPI INSTRUCTION)
  450.     DB    0        ;ZERO OUT BYTE 2 (1B=ASCII CODE FOR ESC)
  451.     ENDIF    ;ESCAPEOFF
  452.  
  453. *
  454. *   Patch here if either SKIPDATE or COMMAND options are true.
  455. *      Note COMMAND option has highest priority
  456.  
  457.     IF    SKIPDATE
  458.     ORG    SKIP1
  459.     LXI    H,0
  460.     SHLD    DATEFIX
  461.     JMP    SKIP2        ;. . .  BYPASS DATE STUFF AT SIGN-ON
  462.     ENDIF    ;SKIPDATE
  463. *                    OR
  464.     IF    FORCE
  465.     ORG    SKIP1
  466.     JMP    WBOOT        ;. . .  FORCE A COMMAND FILE
  467.     ENDIF    ;FORCE
  468. *
  469.     IF    PREDEFINED
  470.     ORG    100H
  471.     JMP    CLINE
  472.     ENDIF    ;PREDEFINED
  473. *
  474.     IF    SKIPSIGNON
  475.     ORG    MESSAGE
  476.     DB    0        ;CANCEL SIGN ON MESSAGE
  477.     ORG    MESS1
  478.     LXI    H,HELLO        ;NEWBASE OPTIONS MESSAGE
  479.     ENDIF    ;SKIPSIGNON
  480.  
  481.     IF VER243 AND SKIPSIGNON
  482.     ORG    MESS2        ;MORE TO SKIP THE SIGN-ON
  483.     DB    0    
  484.     ENDIF    ;  AND SKIP SIGNON
  485.  
  486. *
  487. *  patch for new KEYIN psudo-function
  488.     IF    KEYIN
  489.     ORG    CONSIO
  490.     JMP    XKEYIN
  491.     ENDIF    ;KEYIN
  492.  
  493.     IF    KEYIN AND (VER241Z OR  VER23B)
  494.     ORG    SAVE1        ;Fix direct BIOS hook
  495.     SHLD    XKEYIN+1
  496.     ENDIF    ;KEYIN AND (VER241Z OR  VER23B)
  497.  
  498. *
  499. *    FIX THE BUFFERS
  500.     ORG    BUFFERS
  501.  
  502.     IF    VER24 OR VER241 OR VER243 OR VER23B
  503.     SBB    H    ;BUMP BUFFER 1 POINTER
  504.     ADC    D    ;ADD OFFSET
  505.     XRA    M    ;ADJUST BY BUFFER 1 VALUE
  506.     ENDIF    ;VER24 OR VER241 OR VER243 OR VER23B
  507.  
  508.     IF    VER241Z
  509.     ORA    H    ;FIX BUFFER OFFSET IN Z-80 VERSION
  510.     MOV    E,M
  511.     ENDIF    ;VER241Z
  512.  
  513.     ADD    H    ;  ...  BUMP AGAIN
  514.     ADD    D    ;  ...  AND AGAIN
  515.     ANA    M    ;NOW DO BUFFER 2
  516.     ADC    D    
  517.     DB    40H,40H
  518. *
  519.     IF    SKIPOPT
  520.     ORG    HELLO
  521.     DB    0
  522.     ENDIF    ;SKIPOPT
  523.  
  524.     IF    NOT SKIPOPT
  525.     ORG    HELLO
  526.     DB    0DH,0AH,0AH
  527.     ENDIF    ;NOT SKIPOPT
  528.  
  529.     IF    ZCPR AND NOT SKIPOPT
  530.     DB    'ZCPR Compatible'
  531.     ENDIF    ;ZCPR AND NOT SKIPOPT
  532.  
  533.     IF    ZCPR AND KEYIN AND NOT SKIPOPT
  534.     DB    ' + '
  535.     ENDIF    ;ZCPR AND KEYIN AND NOT SKIPOPT
  536.  
  537.     IF    KEYIN AND NOT SKIPOPT
  538.     DB    'KEYIN at --> 337'
  539.     ENDIF    ;KEYIN AND NOT SKIPOPT
  540.  
  541.  
  542.     IF     (KEYIN OR ZCPR) AND NOT SKIPOPT
  543.     DB    0DH,0AH,0
  544.     ENDIF    ;(KEYIN OR ZCPR) AND NOT SKIPOPT
  545.  
  546. *  new, added code begins here and must end before 44FFH
  547. *
  548.     IF     KEYIN
  549. XKEYIN:    ORG    KEYPATCH
  550.     ENDIF     ;KEYIN
  551.  
  552.      IF    (VER24 OR VER241 OR VER243) AND KEYIN
  553.      STA    SAVE1        ;SAVE FOR dBASE.COM
  554.      ENDIF    ;(VER24 OR VER241 OR VER243) AND KEYIN
  555.  
  556.     IF    (VER241Z OR VER23B) AND KEYIN 
  557.     CALL    0        ;PATCHED BY Z-80 DBASE II
  558.     ENDIF    ;(VER241Z OR VER23B) AND KEYIN
  559.  
  560.  
  561.     IF     KEYIN
  562.     STA    SAVE2        ;SAVE FOR KEYIN
  563.     RET
  564. SAVE2    DS    1          ;KEYIN CUBBY-HOLE (decimal value)
  565.     ENDIF    ;KEYIN
  566. *
  567.     IF    ZCPR AND (NOT VER23B)
  568.     ORG    XZCPR
  569.     JMP    ZCPRFIX
  570.  
  571.     ORG    FREE
  572. ZCPRFIX    CPI    FAILED
  573.     JNZ    ZCPRRET        ;FILE OPEN OK SO RETURN
  574.     LXI    D,FCB1    
  575.     MVI    A,DEFAULT    ;SET UP FOR DEFAULT DRIVE
  576.     STAX    D
  577.     STA    FCB2
  578.     ENDIF    ;ZCPR AND (NOT VER23B)
  579.  
  580.     IF    (VER241 OR VER241Z OR VER243 ) AND ZCPR
  581.     STA    DEFDRV        ;DEFAULT DRIVE STORAGE
  582.     ENDIF    ;(VER241 OR VER241Z OR VER243 ) AND ZCPR
  583.  
  584.     IF    ZCPR AND (NOT VER23B)    
  585.     MVI    C,OPEN
  586.     CALL    BDOS        ;TRY TO OPEN DBASEOVR.COM
  587.     CPI    FAILED        ; . .ON DEFAULT DRIVE
  588.     JNZ    ZCPRRET        ;GO BACK IF FOUND
  589.     RET            ;RETURN WITH ZERO SET IF
  590.     ENDIF    ;ZCPR
  591.  
  592.     IF    ZCPR AND VER23B
  593.     ORG    FCB1
  594.     DB    DEFAULT
  595.     ORG    FCB2
  596.     DB    DEFAULT
  597.     ENDIF
  598.  
  599. BODYEND    EQU    $
  600. *
  601.  
  602.     IF    PREDEFINED
  603.     ORG    NEWREC
  604. CLINE    LXI    H,COMMAND    ;POINT TO PRE-DEFINED COMMAND LINE
  605.     LXI    D,80H        ;DEFAULT COMMAND LINE BUFFER
  606.     MOV    B,M        ;LENGTH OF COMMAND LINE
  607. CLINE1    MOV    A,M        
  608.     STAX    D        ;MOVE IT TO BUFFER AS THO IT
  609.     INX    H        ;...IT HAD BEEN ENTERED FROM
  610.     INX    D        ;......THE KEYBOARD
  611.     DCR    B
  612.     JM    CLINE2
  613.     JMP    CLINE1
  614.  
  615. CLINE2    LXI    H,5CH
  616.     LXI    D,XFCB
  617.     MVI    B,12
  618. CLINE3    LDAX    D
  619.     MOV    M,A
  620.     INX    H
  621.     INX    D
  622.     DCR    B
  623.     JNZ    CLINE3
  624.     JMP    BEGIN
  625.  
  626. *
  627. *   Try to keep the command line short as there isn't much room left
  628. *   if all the options are installed.
  629. *
  630. COMMAND    DB    CMDEND-COMMAND
  631.     DB    'MENU.CMD'    ;<-- PUT COMMAND LINE HERE IN SINGLE
  632.                 ;    . . .  JUST AS YOU WOULD TYPE IT.
  633. CMDEND    EQU    $
  634.  
  635. XFCB:    DB    '@'-40H        ;<-- DRIVE   '@' FOR DEFAULT DRIVE
  636.     DB    'MENU    CMD'   ;<-- MUST BE 11 CHARACTERS EXACTLY
  637.                 ;<-- LIKE  'MYFILE  CMD'  NO PERIOD
  638.                 ;<-- JUST FILENAME OF EXACTLY EIGHT
  639.                 ;<-- CHARACTERS FOLLOWED BY THREE FILE
  640.                 ;<-- TYPE CHARACTERS.
  641.     ENDIF    ;PREDEFINED
  642.