home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG104.ARC / NEWBAS11.AQM / NEWBAS11.ASM
Assembly Source File  |  1979-12-31  |  20KB  |  649 lines

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