home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug060.arc / CPM#006.LBR / NEWBAS11.ASM < prev    next >
Assembly Source File  |  1979-12-31  |  20KB  |  648 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. *
  228. *
  229. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  230. *     *    BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
  231. *     *               ATTEMPT TO USE THIS OVERLAY            *
  232. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  233. *
  234. *
  235. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  236. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  237. *
  238. *        PROGRAM STUFF STARTS HERE
  239. *
  240. TRUE    EQU    0FFH        ;'YES'
  241. FALSE    EQU    NOT TRUE    ;'NO'
  242. *
  243. *
  244. *    INITIAL JUMP LIST
  245. *    *****************
  246. *
  247. *    To help identify supported versions I have developed the 
  248. *    following list of the jump instruction that must be found at
  249. *    location 100H for each supported version.
  250. *
  251. *    Version        Jump instruction at location 100h
  252. *    -------        ---------------------------------
  253. *
  254. *    2.3B        JMP  4473
  255. *    2.4        JMP  46C9
  256. *    2.41        JMP  477A
  257. *    2.41Z        JMP  467F
  258. *    2.43        JMP  49B5    * <-- ABANDONED VERSION
  259. *    2.43Z        JMP  5200    * <-- ABANDONED VERSION
  260. *    2.43*        JMP  4C0F
  261. *
  262. *       If your version of DBASE.COM is not listed call me for help.
  263. *
  264. *
  265. *  THE FOLLOWING ARE THE ONLY USER SELECTABLE OPTIONS IN THIS OVERLAY
  266. *
  267. *      Choose ONE AND ONLY ONE of the following versions to be
  268. *    'TRUE'.  All others MUST be 'FALSE'.
  269. *
  270. VER23B        EQU      FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.3B
  271. VER24        EQU      FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.4
  272. VER241      EQU   FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.41
  273. VER241Z        EQU   FALSE        ;SET TO 'TRUE' IF RUNNING Z-80 2.41
  274. VER243        EQU      TRUE         ;SET TO 'TRUE' IF RUNNING VERSION 2.43*
  275. *
  276. *   SET THE FOLLOWING EQUATES TO TRUE OR FALSE FOR YOUR ENVIRONMENT
  277. *
  278. SKIPDATE    EQU      TRUE         ;SET TO 'TRUE' TO SKIP DATE SET AT SIGN-ON
  279. SKIPSIGNON  EQU      TRUE      ;SET TO 'TRUE' TO SKIP SIGN-ON MESSAGE
  280. SKIPOPT     EQU   FALSE        ;SET TO 'TRUE' TO SKIP OPTIONS AT SIGN-ON
  281. FORCE          EQU      FALSE        ;SET TO 'TRUE' TO FORCE A COMMAND FILE
  282. KEYIN        EQU      TRUE        ;SET TO 'TRUE' TO ALLOW KEY-IN FEATURE
  283. ZCPR        EQU      TRUE        ;SET TO 'TRUE' IF RUNNING ZCPR OR LOOK-ALIKE
  284. PREDEFINED  EQU   FALSE     ;SET TO 'TRUE' FOR PRE-DEFINED COMMAND FILE
  285. ESCAPEOFF   EQU   FALSE     ;SET TO 'TRUE' TO DISABLE THE ESCape FUNCTION
  286. DEFAULT     EQU      'A'-40H     ;DEFAULT DRIVE IF RUNNING ZCPR
  287. CDELIMIT    EQU      ':'        ; PUT YOUR FAVORITE DELIMIT CHARACTER HERE
  288. *                ; ie. STORE 9 TO THIS:ONE can be changed
  289. *                ;  to STORE 9 TO THIS_ONE by setting this
  290. *                ;  equate to '_'
  291. *
  292. * --->    * * *  NOTE:  If you set PREDEFINED to TRUE then you MUST
  293. * --->    * * *          put your command line at label COMMAND near the
  294. * --->    * * *          end of this overlay.  Currently 'MENU.CMD'
  295. *     
  296. *   END OF USER SELECTED EQUATES.
  297. *
  298. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  299.  
  300. KEYPATCH    EQU    14AH    ;PUT INKEY PATCH HERE FOR ALL VERSIONS
  301.                 ;TO MAINTAIN TRANSPORTABILITY.  PEEK(337)
  302.                 ;ON ANY NEWBASE INSTALLATION WILL NOW
  303.                 ;RETURN THE LAST KEY PRESSED.
  304.     IF    VER23B
  305. *    DBASE II VERSION 2.3B  SIGN-ON DATE 22 FEB 1982
  306. BEGIN    EQU    4473H        ;JUMP AROUND INSTALLED PARAMETERS
  307. SKIP1    EQU    461AH        ;SKIP DATE HOOK
  308. SKIP2    EQU    46AFH        ;SKIP DATE DESTINATION
  309. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  310. CONSIO    EQU    39F0H        ;KEYIN HOOK
  311. SAVE1    EQU    39DFH        ;DIRECT BIOS HOOK
  312. MESSAGE    EQU    46BBH        ;FIRST BYTE OF SIGN-ON MESSAGE
  313. MESS1    EQU    46E1H        ;NEWBASE MESSAGE HOOK
  314. FCB1    EQU    42F3H        ;FCB1 FOR DBASEOVE.COM
  315. FCB2    EQU    4314H        ;FCB2 FOR DBASEOVR.COM
  316. BUFFERS    EQU    46C0H        ;START OF BUFFERS
  317. HELLO    EQU    47D0H        ;HELLO MESSAGE
  318. DELIMIT    EQU    2AE4H        ;LOCATION OF DELIMIT CHARACTER
  319. DISABLE    EQU    39AEH        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  320. NEWREC    EQU    4B00H        ;ADDED RECORD FOR PREDEFINED OPTION
  321.                 ;SHOULD BE THE SAME AS NEXT LOAD
  322.                 ;WHEN DDT LOADS DBASE.COM
  323.     ENDIF    ;VER23B
  324.  
  325.     IF    VER24
  326. *    DBASE II VERSION 2.4  SIGN-ON DATE APRIL 1, 1983
  327.  
  328. BEGIN    EQU    46C9H        ;JUMP AROUND INSTALLED PARAMETERS
  329. SKIP1    EQU    4876H        ;SKIP DATE HOOK
  330. SKIP2    EQU    4892H        ;SKIP DATE DESTINATION
  331. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  332. CONSIO    EQU    3A8AH        ;KEYIN HOOK
  333. SAVE1    EQU    4378H        ;dBASE II CUBBY-HOLE
  334. MESSAGE    EQU    495AH        ;FIRST BYTE OF SIGN-ON MESSAGE
  335. MESS1    EQU    46B5H        ;NEWBASE MESSAGE HOOK
  336. FCB1    EQU    4331H        ;FCB1 FOR DBASEOVE.COM
  337. FCB2    EQU    4352H        ;FCB2 FOR DBASEOVR.COM
  338. XZCPR    EQU    3BA6H        ;ZCPR HOOK
  339. ZCPRRET    EQU    3BA9H        ;JUMP-BACK LOCATION
  340. BUFFERS    EQU    497EH        ;START OF BUFFERS
  341. HELLO    EQU    4AE1H        ;HELLO MESSAGE
  342. FREE    EQU    44C9H        ;UN-USED PROGRAM SPACE
  343. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  344. DELIMIT    EQU    2B3BH        ;LABEL DELIMITER POSITION
  345. DISABLE    EQU    3A47H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  346. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  347.                 ;SHOULD BE THE SAME AS NEXT LOAD
  348.                 ;WHEN DDT LOADS DBASE.COM
  349.     ENDIF    ;VER24
  350.  
  351.  
  352.     IF    VER241
  353. *    DBASE II VERSION 2.41 SIGN-ON DATE FEBRUARY 1, 1984
  354.  
  355. BEGIN    EQU    477AH        ;JUMP AROUND INSTALLED PARAMETERS
  356. SKIP1    EQU    4927H        ;SKIP DATE HOOK
  357. SKIP2    EQU    4943H        ;SKIP DATE DESTINATION
  358. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  359. CONSIO    EQU    3B25H        ;KEYIN HOOK
  360. SAVE1    EQU    4429H        ;dBASE II CUBBY-HOLE
  361. MESSAGE    EQU    4A0BH        ;FIRST BYTE OF SIGN-ON MESSAGE
  362. MESS1    EQU    4A58H        ;NEWBASE MESSAGE HOOK
  363. FCB1    EQU    43E2H        ;FCB1 FOR DBASEOVE.COM
  364. FCB2    EQU    4403H        ;FCB2 FOR DBASEOVR.COM
  365. XZCPR    EQU    3C49H        ;ZCPR HOOK
  366. ZCPRRET    EQU    3C4CH        ;JUMP-BACK LOCATION
  367. BUFFERS    EQU    4A37H        ;START OF BUFFERS
  368. HELLO    EQU    4B77H        ;HELLO MESSAGE
  369. FREE    EQU    457AH        ;UN-USED PROGRAM SPACE
  370. ENDCODE    EQU    46FFH        ;END OF SAFE AREA
  371. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  372. DELIMIT    EQU    2B99H        ;LABEL DELIMITER POSITION
  373. DISABLE    EQU    3AE2H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  374. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  375.                 ;SHOULD BE THE SAME AS NEXT LOAD
  376.                 ;WHEN DDT LOADS DBASE.COM
  377.  
  378.     ENDIF    ;VER241
  379.  
  380.     IF    VER241Z
  381. *    Z-80 DBASE II VERSION 2.41  SIGN-ON DATE APRIL 1, 1983
  382.  
  383. BEGIN    EQU    467FH        ;JUMP AROUND INSTALLED PARAMETERS
  384. SKIP1    EQU    482CH        ;SKIP DATE HOOK
  385. SKIP2    EQU    4904H        ;SKIP DATE DESTINATION
  386. DATEFIX    EQU    00FEH        ;DATE FIX FOR RE-ENTRY
  387. CONSIO    EQU    3A75H        ;KEYIN HOOK
  388. SAVE1    EQU    3A64H        ;DIRECT BIOS HOOK
  389. MESSAGE    EQU    4910H        ;FIRST BYTE OF SIGN-ON MESSAGE
  390. MESS1    EQU    495DH        ;NEWBASE MESSAGE HOOK
  391. FCB1    EQU    42E7H        ;FCB1 FOR DBASEOVE.COM
  392. FCB2    EQU    4308H        ;FCB2 FOR DBASEOVR.COM
  393. XZCPR    EQU    3B90H        ;ZCPR HOOK
  394. ZCPRRET    EQU    3B93H        ;JUMP-BACK LOCATION
  395. BUFFERS    EQU    493CH        ;START OF BUFFERS
  396. HELLO    EQU    4A7CH        ;HELLO MESSAGE
  397. FREE    EQU    4480H        ;UN-USED PROGRAM SPACE
  398. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  399. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  400. DELIMIT    EQU    2B25H        ;LABEL DELIMITER POSITION
  401. DISABLE    EQU    3A48H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  402. NEWREC    EQU    4D00H        ;ADDED RECORD FOR PREDEFINED OPTION
  403.                 ;SHOULD BE THE SAME AS NEXT LOAD
  404.                 ;WHEN DDT LOADS DBASE.COM
  405.  
  406.     ENDIF    ;VER241Z
  407.  
  408.     IF    VER243
  409. *    DBASE II VERSION 2.43* SIGN-ON DATE APRIL 30, 1985
  410.  
  411. BEGIN    EQU    4C0FH        ;JUMP AROUND INSTALLED PARAMETERS
  412. SKIP1    EQU    4DD6H        ;SKIP DATE HOOK
  413. SKIP2    EQU    4DF2H        ;SKIP DATE DESTINATION
  414. DATEFIX    EQU    4941H        ;DATE FIX FOR RE-ENTRY
  415. CONSIO    EQU    3F24H        ;KEYIN HOOK
  416. SAVE1    EQU    4867H        ;dBASE II CUBBY-HOLE
  417. MESSAGE    EQU    4EC8H        ;FIRST BYTE OF SIGN-ON MESSAGE 1
  418. MESS1    EQU    4F1BH        ;NEWBASE MESSAGE HOOK
  419. MESS2    EQU    5049H        ;FIRST BYTE OF SIGN-ON MESSAGE 2
  420. FCB1    EQU    4820H        ;FCB1 FOR DBASEOVE.COM
  421. FCB2    EQU    4841H        ;FCB2 FOR DBASEOVR.COM
  422. XZCPR    EQU    404DH        ;ZCPR HOOK
  423. ZCPRRET    EQU    4050H        ;JUMP-BACK LOCATION
  424. BUFFERS    EQU    4ECDH        ;START OF BUFFERS
  425. HELLO    EQU    5339H        ;HELLO MESSAGE
  426. FREE    EQU    4A0FH        ;UN-USED PROGRAM SPACE
  427. ENDCODE    EQU    4A7FH        ;END OF SAFE AREA
  428. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  429. DELIMIT    EQU    2E36H        ;LABEL DELIMITER POSITION
  430. DISABLE    EQU    3ED9H        ;ZERO OUT FOR ESCAPE DISABLE (CPI 1BH)
  431. NEWREC    EQU    5480H        ;ADDED RECORD FOR PREDEFINED OPTION
  432.                 ;SHOULD BE THE SAME AS NEXT LOAD
  433.                 ;WHEN DDT LOADS DBASE.COM
  434.  
  435.     ENDIF    ;VER243*
  436. *
  437. *
  438. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  439. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  440. *
  441. *
  442. WBOOT    EQU    0        ;WARM BOOT 
  443. BDOS    EQU    5        ;BDOS ENTRY
  444. OPEN    EQU    0FH        ;OPEN FILE FUNCTION
  445. FAILED    EQU    0FFH        ;DISK I-O FAILED
  446. *
  447. *
  448.     IF    CDELIMIT
  449.     ORG    DELIMIT
  450.     DB    CDELIMIT
  451.     ENDIF
  452.  
  453.     IF    ESCAPEOFF
  454.     ORG    DISABLE
  455.     DB    0        ;ZERO OUT BYTE 1 (FE=CPI INSTRUCTION)
  456.     DB    0        ;ZERO OUT BYTE 2 (1B=ASCII CODE FOR ESC)
  457.     ENDIF    ;ESCAPEOFF
  458.  
  459. *
  460. *   Patch here if either SKIPDATE or COMMAND options are true.
  461. *      Note COMMAND option has highest priority
  462.  
  463.     IF    SKIPDATE
  464.     ORG    SKIP1
  465.     LXI    H,0
  466.     SHLD    DATEFIX
  467.     JMP    SKIP2        ;. . .  BYPASS DATE STUFF AT SIGN-ON
  468.     ENDIF    ;SKIPDATE
  469. *                    OR
  470.     IF    FORCE
  471.     ORG    SKIP1
  472.     JMP    WBOOT        ;. . .  FORCE A COMMAND FILE
  473.     ENDIF    ;FORCE
  474. *
  475.     IF    PREDEFINED
  476.     ORG    100H
  477.     JMP    CLINE
  478.     ENDIF    ;PREDEFINED
  479. *
  480.     IF    SKIPSIGNON
  481.     ORG    MESSAGE
  482.     DB    0        ;CANCEL SIGN ON MESSAGE
  483.     ORG    MESS1
  484.     LXI    H,HELLO        ;NEWBASE OPTIONS MESSAGE
  485.     ENDIF    ;SKIPSIGNON
  486.  
  487.     IF VER243 AND SKIPSIGNON
  488.     ORG    MESS2        ;MORE TO SKIP THE SIGN-ON
  489.     DB    0    
  490.     ENDIF    ;  AND SKIP SIGNON
  491.  
  492. *
  493. *  patch for new KEYIN psudo-function
  494.     IF    KEYIN
  495.     ORG    CONSIO
  496.     JMP    XKEYIN
  497.     ENDIF    ;KEYIN
  498.  
  499.     IF    KEYIN AND (VER241Z OR  VER23B)
  500.     ORG    SAVE1        ;Fix direct BIOS hook
  501.     SHLD    XKEYIN+1
  502.     ENDIF    ;KEYIN AND (VER241Z OR  VER23B)
  503.  
  504. *
  505. *    FIX THE BUFFERS
  506.     ORG    BUFFERS
  507.  
  508.     IF    VER24 OR VER241 OR VER243 OR VER23B
  509.     SBB    H    ;BUMP BUFFER 1 POINTER
  510.     ADC    D    ;ADD OFFSET
  511.     XRA    M    ;ADJUST BY BUFFER 1 VALUE
  512.     ENDIF    ;VER24 OR VER241 OR VER243 OR VER23B
  513.  
  514.     IF    VER241Z
  515.     ORA    H    ;FIX BUFFER OFFSET IN Z-80 VERSION
  516.     MOV    E,M
  517.     ENDIF    ;VER241Z
  518.  
  519.     ADD    H    ;  ...  BUMP AGAIN
  520.     ADD    D    ;  ...  AND AGAIN
  521.     ANA    M    ;NOW DO BUFFER 2
  522.     ADC    D    
  523.     DB    40H,40H
  524. *
  525.     IF    SKIPOPT
  526.     ORG    HELLO
  527.     DB    0
  528.     ENDIF    ;SKIPOPT
  529.  
  530.     IF    NOT SKIPOPT
  531.     ORG    HELLO
  532.     DB    0DH,0AH,0AH
  533.     ENDIF    ;NOT SKIPOPT
  534.  
  535.     IF    ZCPR AND NOT SKIPOPT
  536.     DB    'ZCPR Compatible'
  537.     ENDIF    ;ZCPR AND NOT SKIPOPT
  538.  
  539.     IF    ZCPR AND KEYIN AND NOT SKIPOPT
  540.     DB    ' + '
  541.     ENDIF    ;ZCPR AND KEYIN AND NOT SKIPOPT
  542.  
  543.     IF    KEYIN AND NOT SKIPOPT
  544.     DB    'KEYIN at --> 337'
  545.     ENDIF    ;KEYIN AND NOT SKIPOPT
  546.  
  547.  
  548.     IF     (KEYIN OR ZCPR) AND NOT SKIPOPT
  549.     DB    0DH,0AH,0
  550.     ENDIF    ;(KEYIN OR ZCPR) AND NOT SKIPOPT
  551.  
  552. *  new, added code begins here and must end before 44FFH
  553. *
  554.     IF     KEYIN
  555. XKEYIN:    ORG    KEYPATCH
  556.     ENDIF     ;KEYIN
  557.  
  558.      IF    (VER24 OR VER241 OR VER243) AND KEYIN
  559.      STA    SAVE1        ;SAVE FOR dBASE.COM
  560.      ENDIF    ;(VER24 OR VER241 OR VER243) AND KEYIN
  561.  
  562.     IF    (VER241Z OR VER23B) AND KEYIN 
  563.     CALL    0        ;PATCHED BY Z-80 DBASE II
  564.     ENDIF    ;(VER241Z OR VER23B) AND KEYIN
  565.  
  566.  
  567.     IF     KEYIN
  568.     STA    SAVE2        ;SAVE FOR KEYIN
  569.     RET
  570. SAVE2    DS    1          ;KEYIN CUBBY-HOLE (decimal value)
  571.     ENDIF    ;KEYIN
  572. *
  573.     IF    ZCPR AND (NOT VER23B)
  574.     ORG    XZCPR
  575.     JMP    ZCPRFIX
  576.  
  577.     ORG    FREE
  578. ZCPRFIX    CPI    FAILED
  579.     JNZ    ZCPRRET        ;FILE OPEN OK SO RETURN
  580.     LXI    D,FCB1    
  581.     MVI    A,DEFAULT    ;SET UP FOR DEFAULT DRIVE
  582.     STAX    D
  583.     STA    FCB2
  584.     ENDIF    ;ZCPR AND (NOT VER23B)
  585.  
  586.     IF    (VER241 OR VER241Z OR VER243 ) AND ZCPR
  587.     STA    DEFDRV        ;DEFAULT DRIVE STORAGE
  588.     ENDIF    ;(VER241 OR VER241Z OR VER243 ) AND ZCPR
  589.  
  590.     IF    ZCPR AND (NOT VER23B)    
  591.     MVI    C,OPEN
  592.     CALL    BDOS        ;TRY TO OPEN DBASEOVR.COM
  593.     CPI    FAILED        ; . .ON DEFAULT DRIVE
  594.     JNZ    ZCPRRET        ;GO BACK IF FOUND
  595.     RET            ;RETURN WITH ZERO SET IF
  596.     ENDIF    ;ZCPR
  597.  
  598.     IF    ZCPR AND VER23B
  599.     ORG    FCB1
  600.     DB    DEFAULT
  601.     ORG    FCB2
  602.     DB    DEFAULT
  603.     ENDIF
  604.  
  605. BODYEND    EQU    $
  606. *
  607.  
  608.     IF    PREDEFINED
  609.     ORG    NEWREC
  610. CLINE    LXI    H,COMMAND    ;POINT TO PRE-DEFINED COMMAND LINE
  611.     LXI    D,80H        ;DEFAULT COMMAND LINE BUFFER
  612.     MOV    B,M        ;LENGTH OF COMMAND LINE
  613. CLINE1    MOV    A,M        
  614.     STAX    D        ;MOVE IT TO BUFFER AS THO IT
  615.     INX    H        ;...IT HAD BEEN ENTERED FROM
  616.     INX    D        ;......THE KEYBOARD
  617.     DCR    B
  618.     JM    CLINE2
  619.     JMP    CLINE1
  620.  
  621. CLINE2    LXI    H,5CH
  622.     LXI    D,XFCB
  623.     MVI    B,12
  624. CLINE3    LDAX    D
  625.     MOV    M,A
  626.     INX    H
  627.     INX    D
  628.     DCR    B
  629.     JNZ    CLINE3
  630.     JMP    BEGIN
  631.  
  632. *
  633. *   Try to keep the command line short as there isn't much room left
  634. *   if all the options are installed.
  635. *
  636. COMMAND    DB    CMDEND-COMMAND
  637.     DB    'MENU.CMD'    ;<-- PUT COMMAND LINE HERE IN SINGLE
  638.                 ;    . . .  JUST AS YOU WOULD TYPE IT.
  639. CMDEND    EQU    $
  640.  
  641. XFCB:    DB    '@'-40H        ;<-- DRIVE   '@' FOR DEFAULT DRIVE
  642.     DB    'MENU    CMD'   ;<-- MUST BE 11 CHARACTERS EXACTLY
  643.                 ;<-- LIKE  'MYFILE  CMD'  NO PERIOD
  644.                 ;<-- JUST FILENAME OF EXACTLY EIGHT
  645.                 ;<-- CHARACTERS FOLLOWED BY THREE FILE
  646.                 ;<-- TYPE CHARACTERS.
  647.     ENDIF    ;PREDEFINED
  648.