home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols200 / vol221 / newbase5.asm < prev    next >
Encoding:
Assembly Source File  |  1994-07-13  |  13.4 KB  |  484 lines

  1. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
  2. *                                    *
  3. *            LEGAL STUFF UP FRONT                *
  4. *                                    *
  5. *    NEWBASE.ASM                            *
  6. *                                    *
  7. *    1984 (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. *                                    *
  20. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*
  21.  
  22. *
  23. *
  24.    * * * * * * * * * *    E D I T O R I A L    * * * * * * * * * * * *
  25.    *    This overlay is intended for the use of licensed users of    *
  26.    *    dBASE II only.   If you 'own' a copy of dBASE II that you    *
  27.    *    did not purchase or receive legitimately you are a thief,    *
  28.    *    it is that simple.   Stealing software will only drive up    *
  29.    *    prices for legal users  and dry up the sources of quality    *
  30.    *    software products.                         *
  31.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  32. *
  33. *
  34. ***********************************************************************
  35. *
  36. *        PROGRAM DOCUMENTATION STUFF STARTS HERE
  37. *
  38. *       PROGRAM NAME -->  NEWBASEx.ASM
  39.    
  40. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  41. *    
  42. *    10/25/84 <-- Last update (define the label delimiter character)
  43. *         Gary Knapp asked for this one to make labels more
  44. *         readable.  THIS_LABEL instead of the old THIS:LABEL
  45. *                -Gene Head
  46. *
  47. *    09/21/84 <-- Last update (Added PREDEFINED option)
  48. *         Force dBASE II to execute a pre-defined command file.
  49. *                -Gene Head
  50. *
  51. *    08/10/84 <-- Last update (Added equates for Z-80 dBASE II)
  52. *         Re-ordered these updates to reflect most recent first.
  53. *                -Ryan Katri
  54. *
  55. *    07/25/84 <-- Last update  (added version 2.41 equates)
  56. *        Removed ELSE conditionals so this can be assembled
  57. *        with ASM and added version 2.41 equates.
  58. *        (Also added assembly error messages)
  59. *                -Gene Head                
  60. *
  61. *    07/23/84 <-- Last update  (force command file execution)
  62. *        Some folks want to keep un-trained users from the
  63. *        dot-prompt.  This patch will do a warm boot if a
  64. *        valid command file was not specified when DBASE.COM
  65. *        was executed.
  66. *                -Gene Head
  67. *
  68. *    07/18/84 <-- Last update  (skip date option installed)
  69. *        Some folks have time and date functions available
  70. *        and do a date and time set as part of an initiali-
  71. *        zation command so want to skip the ENTER DATE stuff.
  72. *                -Gene Head
  73. *
  74. *    06/20/84 <-- Last update
  75. *        Some folks want to skip the sign-on messages.
  76. *                -Gene Head
  77. *
  78. *    05/25/84 <-- Last update
  79. *        Some folks run ZCPR or a ZCPR look-alike and would
  80. *        like dBASE II to run from drive A: regardless of the
  81. *        default drive it was executed from.
  82. *                -Gene Head
  83. *
  84. *    05/01/84 <-- Last update
  85. *        Moved the KEYIN cubby hole from low memory in
  86. *        the screen defination area to high memory
  87. *        so that INSTALL.COM does not disturb it.
  88. *                -Gene Head
  89. *
  90. *    04/01/84 <-- Last update
  91. *        Some folks need a way to exit a long or forever
  92. *        DO WHILE loop from a keyboard command.  (Like the
  93. *        INKEY$ function found in most BASIC's)
  94. *                -Gene Head
  95. *
  96. *    If you happen to transport any of these features to the
  97. *    MS-DOS version of dBASE II please let me know how you did it.
  98. *
  99. *       I'm also interested in supporting 2.3 and earlier versions.
  100. *    If you have an earlier version and want this modification
  101. *    installed please contact me at the above address or phone.
  102. *
  103. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  104. *
  105. *   SKIPDATE:
  106. *
  107. *    SKIPDATE will skip the ENTER DATE question at sign-on.
  108. *
  109. *   SKIPSIGNON:
  110. *
  111. *    SKIPSIGNON will skip all the sign-on stuff and go directly
  112. *    to the dot-prompt.  (To skip the sign-off message simply
  113. *                 SET CONSOLE OFF just prior to the
  114. *                 QUIT or QUIT TO command.
  115. *
  116. *   SKIPOPT:
  117. *
  118. *    SKIPOPT option allows a list of selected options to be
  119. *    displayed at sign-on.
  120. *
  121. *   FORCE:
  122. *
  123. *    FORCE option forces a warm boot if a valid command file
  124. *    was not specified when DBASE.COM was executed.
  125. *
  126. *   PREDEFINED:
  127. *
  128. *    PREDEFINED option forces dBASE II to execute a pre-defined
  129. *    command file.  This simulates an auto-start mode without
  130. *    a submit file AND prevents command level operation.
  131. *
  132. *   KEYIN:
  133. *
  134. *    The KEYIN option will allow you to PEEK at the last key
  135. *    press at the keyboard.  Useful for aborting DO WHILE loops.
  136. *
  137. *    PEEK(ddddd) will hold the last key pressed.
  138. *
  139. *
  140. *   ZCPR:
  141. *
  142. *       ZCPR compatibility allows execution from the A: drive if
  143. *       the program can't be located on the default drive.
  144. *
  145. *
  146. *    NOTE:  This fixes only the access to the DBASEOVR.COM
  147. *           file and NOT the DBASEMSG.TXT file.  If you use
  148. *           the on-line HELP command the DBASEMSG.TXT file
  149. *           must be on the default drive.
  150. *
  151. *
  152. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  153. *     *    BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
  154. *     *               ATTEMPT TO USE THIS OVERLAY            *
  155. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  156. *
  157. *       Simply SET the proper equates, assemble this file then
  158. *        integrate it using the following DDT commands:
  159. *
  160. *    A>DDT DBASE.COM
  161. *    DDT VERS 2.2
  162. *    NEXT  PC
  163. *    4D00 0100
  164. *    -INEWBASE.HEX
  165. *    -R
  166. *    NEXT  PC
  167. *    4D00 0000
  168. *    -G0
  169. *    A>SAVE 76 DBASE.COM   OR  SAVE 77 DBASE.COM if you install
  170. *                  a forced, predefined command file
  171. *
  172. *
  173. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  174. *     *    BE SURE YOU HAVE A BACK-UP COPY OF DBASE.COM BEFORE YOU *
  175. *     *               ATTEMPT TO USE THIS OVERLAY            *
  176. *     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  177. *
  178. *
  179. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  180. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  181. *
  182. *        PROGRAM STUFF STARTS HERE
  183. *
  184. TRUE    EQU    0FFH        ;'YES'
  185. FALSE    EQU    NOT TRUE    ;'NO'
  186. *
  187. *
  188. *  THE FOLLOWING ARE THE ONLY USER SELECTABLE OPTIONS IN THIS OVERLAY
  189. *
  190. *      Choose ONE AND ONLY ONE of the following versions to be
  191. *    'TRUE'.  All others MUST be 'FALSE'.
  192. *   
  193. VER24        EQU      FALSE        ;SET TO 'TRUE' IF RUNNING VERSION 2.4
  194. VER241      EQU   TRUE        ;SET TO 'TRUE' IF RUNNING VERSION 2.41
  195. VER241Z        EQU   FALSE        ;SET TO 'TRUE' IF RUNNING Z-80 2.41
  196. *
  197. *   SET THE FOLLOWING EQUATES TO TRUE OR FALSE FOR YOUR ENVIRONMENT
  198. *
  199. SKIPDATE    EQU      FALSE        ;SET TO 'TRUE' TO SKIP DATE SET AT SIGN-ON
  200. SKIPSIGNON  EQU      FALSE          ;SET TO 'TRUE' TO SKIP SIGN-ON MESSAGE
  201. SKIPOPT     EQU   FALSE        ;SET TO 'TRUE' TO SKIP OPTIONS AT SIGN-ON
  202. FORCE          EQU      FALSE        ;SET TO 'TRUE' TO FORCE A COMMAND FILE
  203. KEYIN        EQU      TRUE        ;SET TO 'TRUE' TO ALLOW KEY-IN FEATURE
  204. ZCPR        EQU      TRUE        ;SET TO 'TRUE' IF RUNNING ZCPR OR LOOK-ALIKE
  205. PREDEFINED  EQU   FALSE        ;SET TO 'TRUE' FOR PRE-DEFINED COMMAND FILE
  206. DEFAULT     EQU      'A'-40H    ;DEFAULT DRIVE IF RUNNING ZCPR
  207. CDELIMIT    EQU      '_'        ;PUT A ZERO HERE TO KEEP LABEL DELIMITER
  208. *                ; AS ':' OTHERWISE PUT IN YOUR CHARACTER
  209. *                ; ie. STORE 1 TO THIS:ONE can be changed
  210. *                ;  to STORE 1 TO THIS_ONE by setting this
  211. *                ;  equate to '_' 
  212. *
  213. * --->    * * *  NOTE:  If you set PREDEFINED to TRUE then you MUST
  214. * --->    * * *          put your command line at label COMMAND near the
  215. * --->    * * *          end of this overlay.  Currently 'MENU.CMD'
  216. *     
  217. *   END OF USER SELECTED EQUATES.
  218. *
  219. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  220.  
  221.  
  222.     IF    VER24
  223. *    DBASE II VERSION 2.4  SIGN-ON DATE APRIL 1, 1983
  224.  
  225. BEGIN    EQU    46C9H        ;JUMP AROUND INSTALLED PARAMETERS
  226. SKIP1    EQU    4876H        ;SKIP DATE HOOK
  227. SKIP2    EQU    4892H        ;SKIP DATE DESTINATION
  228. CONSIO    EQU    3A8AH        ;KEYIN HOOK
  229. SAVE1    EQU    4378H        ;dBASE II CUBBY-HOLE
  230. MESSAGE    EQU    495AH        ;FIRST BYTE OF SIGN-ON MESSAGE
  231. MESS1    EQU    499FH        ;NEWBASE MESSAGE HOOK
  232. FCB1    EQU    4331H        ;FCB1 FOR DBASEOVE.COM
  233. FCB2    EQU    4352H        ;FCB2 FOR DBASEOVR.COM
  234. XZCPR    EQU    3BA6H        ;ZCPR HOOK
  235. ZCPRRET    EQU    3BA9H        ;JUMP-BACK LOCATION
  236. BUFFERS    EQU    497EH        ;START OF BUFFERS
  237. HELLO    EQU    4AE1H        ;HELLO MESSAGE
  238. FREE    EQU    44C9H        ;UN-USED PROGRAM SPACE
  239. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  240. DELIMIT    EQU    2B3BH        ;LABEL DELIMITER POSITION
  241.     ENDIF    ;VER24
  242.  
  243.  
  244.     IF    VER241
  245. *    DBASE II VERSION 2.41 SIGN-ON DATE FEBRUARY 1, 1984
  246.  
  247. BEGIN    EQU    477AH        ;JUMP AROUND INSTALLED PARAMETERS
  248. SKIP1    EQU    4927H        ;SKIP DATE HOOK
  249. SKIP2    EQU    4943H        ;SKIP DATE DESTINATION
  250. CONSIO    EQU    3B25H        ;KEYIN HOOK
  251. SAVE1    EQU    4429H        ;dBASE II CUBBY-HOLE
  252. MESSAGE    EQU    4A0BH        ;FIRST BYTE OF SIGN-ON MESSAGE
  253. MESS1    EQU    4A58H        ;NEWBASE MESSAGE HOOK
  254. FCB1    EQU    43E2H        ;FCB1 FOR DBASEOVE.COM
  255. FCB2    EQU    4403H        ;FCB2 FOR DBASEOVR.COM
  256. XZCPR    EQU    3C49H        ;ZCPR HOOK
  257. ZCPRRET    EQU    3C4CH        ;JUMP-BACK LOCATION
  258. BUFFERS    EQU    4A37H        ;START OF BUFFERS
  259. HELLO    EQU    4B77H        ;HELLO MESSAGE
  260. FREE    EQU    457AH        ;UN-USED PROGRAM SPACE
  261. ENDCODE    EQU    46FFH        ;END OF SAFE AREA
  262. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  263. DELIMIT    EQU    2B99H        ;LABEL DELIMITER POSITION
  264.  
  265.     ENDIF    ;VER241
  266.  
  267.     IF    VER241Z
  268. *    Z-80 DBASE II VERSION 2.41  SIGN-ON DATE APRIL 1, 1983
  269.  
  270. BEGIN    EQU    467FH        ;JUMP AROUND INSTALLED PARAMETERS
  271. SKIP1    EQU    482CH        ;SKIP DATE HOOK
  272. SKIP2    EQU    4904H        ;SKIP DATE DESTINATION
  273. CONSIO    EQU    3A75H        ;KEYIN HOOK
  274. SAVE1    EQU    3A64H        ;DIRECT BIOS HOOK
  275. MESSAGE    EQU    4910H        ;FIRST BYTE OF SIGN-ON MESSAGE
  276. MESS1    EQU    495DH        ;NEWBASE MESSAGE HOOK
  277. FCB1    EQU    42E7H        ;FCB1 FOR DBASEOVE.COM
  278. FCB2    EQU    4308H        ;FCB2 FOR DBASEOVR.COM
  279. XZCPR    EQU    3B90H        ;ZCPR HOOK
  280. ZCPRRET    EQU    3B93H        ;JUMP-BACK LOCATION
  281. BUFFERS    EQU    493CH        ;START OF BUFFERS
  282. HELLO    EQU    4A7CH        ;HELLO MESSAGE
  283. FREE    EQU    4480H        ;UN-USED PROGRAM SPACE
  284. ENDCODE    EQU    44FFH        ;END OF SAFE AREA
  285. DEFDRV    EQU    0165H        ;DEFAULT DRIVE STORAGE
  286. DELIMIT    EQU    2B25H        ;LABEL DELIMITER POSITION
  287.     ENDIF    ;VER241Z
  288.  
  289.  
  290. *
  291. *
  292. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  293. *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  294. *
  295. *
  296. WBOOT    EQU    0        ;WARM BOOT 
  297. BDOS    EQU    5        ;BDOS ENTRY
  298. OPEN    EQU    0FH        ;OPEN FILE FUNCTION
  299. FAILED    EQU    0FFH        ;DISK I-O FAILED
  300. *
  301. *
  302. *   Patch here if either SKIPDATE or COMMAND options are true.
  303. *      Note COMMAND option has highest priority
  304.  
  305.     IF    CDELIMIT
  306.     ORG    DELIMIT
  307.     DB    CDELIMIT
  308.     ENDIF
  309.  
  310.     IF    SKIPDATE
  311.     ORG    SKIP1
  312.     JMP    SKIP2        ;. . .  BYPASS DATE STUFF AT SIGN-ON
  313.     ENDIF    ;SKIPDATE
  314. *                    OR
  315.     IF    FORCE
  316.     ORG    SKIP1
  317.     JMP    WBOOT        ;. . .  FORCE A COMMAND FILE
  318.     ENDIF    ;FORCE
  319. *
  320.     IF    PREDEFINED
  321.     ORG    100H
  322.     JMP    CLINE
  323.     ENDIF    ;PREDEFINED
  324. *
  325.     IF    SKIPSIGNON
  326.     ORG    MESSAGE
  327.     DB    0        ;CANCEL SIGN ON MESSAGE
  328.     ORG    MESS1
  329.     LXI    H,HELLO        ;NEWBASE OPTIONS MESSAGE
  330.     ENDIF    ;SKIPSIGNON
  331. *
  332. *  patch for new KEYIN psudo-function
  333.     IF    KEYIN
  334.     ORG    CONSIO
  335.     JMP    XKEYIN
  336.  
  337.     IF    VER241Z
  338.     ORG    SAVE1        ;Fix direct BIOS hook
  339.     SHLD    XKEYIN+1
  340.     ENDIF    ;VER241Z
  341.  
  342.     ENDIF    ;KEYIN
  343. *
  344. *  patch for ZCPR compatibility
  345.     IF    ZCPR
  346. *
  347.     ORG    XZCPR
  348.     JMP    ZCPRFIX
  349.     ENDIF    ;ZCPR
  350. *
  351. *    FIX THE BUFFERS
  352.     ORG    BUFFERS
  353.  
  354.     IF    NOT VER241Z
  355.     SBB    H    ;BUMP BUFFER 1 POINTER
  356.     ADC    D    ;ADD OFFSET
  357.     XRA    M    ;ADJUST BY BUFFER 1 VALUE
  358.     ENDIF    ;NOT VER241Z
  359.  
  360.     IF    VER241Z
  361.     ORA    H    ;FIX BUFFER OFFSET IN Z-90 VERSION
  362.     MOV    E,M
  363.     ENDIF    ;VER241Z
  364.  
  365.     ADD    H    ;  ...  BUMP AGAIN
  366.     ADD    D    ;  ...  AND AGAIN
  367.     ANA    M    ;NOW DO BUFFER 2
  368.     ADC    D    
  369.     DB    40H,40H
  370. *
  371.     IF    SKIPOPT
  372.     ORG    HELLO
  373.     DB    0
  374.     ENDIF    ;SKIPOPT
  375.  
  376.     IF    NOT SKIPOPT
  377.     ORG    HELLO
  378.     DB    0DH,0AH,0AH
  379.     IF    ZCPR
  380.     DB    'ZCPR Compatible'
  381.     IF    ZCPR AND KEYIN
  382.     DB    ' + '
  383.     ENDIF    ;ZCPR AND KEYIN
  384.     ENDIF    ;ZCPR
  385.     IF    KEYIN
  386.     DB    'KEYIN at --> '
  387.  
  388.     IF    VER24
  389.     DB    '17616'        ;KEYIN LOCATION FOR 2.4
  390.     ENDIF      ;VER24
  391.  
  392.     IF    VER241
  393.     DB    '17793'        ;KEYIN LOCATION FOR 2.41
  394.     ENDIF    ;VER241
  395.  
  396.     IF    VER241Z
  397.     DB    '17543'        ;KEYIN LOCATION FOR 2.41 Z-80
  398.     ENDIF    ;VER241Z
  399.  
  400.     ENDIF    ;KEYIN
  401.     DB    0DH,0AH
  402.  
  403.     ENDIF    ;NOT SKIPOPT
  404.  
  405. *  new, added code begins here and must end before 44FFH
  406.     ORG    FREE
  407. *
  408.     IF     KEYIN
  409. XKEYIN:    
  410.     IF    NOT VER241Z
  411.     STA    SAVE1        ;SAVE FOR dBASE.COM
  412.     ENDIF    ;NOT VER241Z
  413.  
  414.     IF    VER241Z
  415.     CALL    0        ;PATCHED BY Z-80 DBASE II
  416.     ENDIF    ;VER241Z
  417.  
  418.     STA    SAVE2        ;SAVE FOR KEYIN
  419.     RET
  420. SAVE2    DS    1          ;KEYIN CUBBY-HOLE (decimal value)
  421.     ENDIF    ;KEYIN
  422. *
  423.     IF    ZCPR
  424. ZCPRFIX    CPI    FAILED
  425.     JNZ    ZCPRRET        ;FILE OPEN OK SO RETURN
  426.     LXI    D,FCB1    
  427.     MVI    A,DEFAULT    ;SET UP FOR DEFAULT DRIVE
  428.     STAX    D
  429.     STA    FCB2
  430.  
  431.     IF    VER241 OR VER241Z
  432.     STA    DEFDRV        ;DEFAULT DRIVE STORAGE
  433.     ENDIF    ;VER241 OR VER241Z
  434.  
  435.     MVI    C,OPEN
  436.     CALL    BDOS        ;TRY TO OPEN DBASEOVR.COM
  437.     CPI    FAILED        ; . .ON DEFAULT DRIVE
  438.     JNZ    ZCPRRET        ;GO BACK IF FOUND
  439.     RET            ;RETURN WITH ZERO SET IF
  440.     ENDIF    ;ZCPR
  441. BODYEND    EQU    $
  442. *
  443.  
  444.     IF    PREDEFINED
  445.     ORG    4D00H
  446. CLINE    LXI    H,COMMAND    ;POINT TO PRE-DEFINED COMMAND LINE
  447.     LXI    D,80H        ;DEFAULT COMMAND LINE BUFFER
  448.     MOV    B,M        ;LENGTH OF COMMAND LINE
  449. CLINE1    MOV    A,M        
  450.     STAX    D        ;MOVE IT TO BUFFER AS THO IT
  451.     INX    H        ;...IT HAD BEEN ENTERED FROM
  452.     INX    D        ;......THE KEYBOARD
  453.     DCR    B
  454.     JM    CLINE2
  455.     JMP    CLINE1
  456.  
  457. CLINE2    LXI    H,5CH
  458.     LXI    D,XFCB
  459.     MVI    B,12
  460. CLINE3    LDAX    D
  461.     MOV    M,A
  462.     INX    H
  463.     INX    D
  464.     DCR    B
  465.     JNZ    CLINE3
  466.     JMP    BEGIN
  467.  
  468. *
  469. *   Try to keep the command line short as there isn't much room left
  470. *   if all the options are installed.
  471. *
  472. COMMAND    DB    CMDEND-COMMAND
  473.     DB    'MENU.CMD'    ;<-- PUT COMMAND LINE HERE IN SINGLE
  474.                 ;    . . .  JUST AS YOU WOULD TYPE IT.
  475. CMDEND    EQU    $
  476.  
  477. XFCB:    DB    '@'-40H        ;<-- DRIVE   '@' FOR DEFAULT DRIVE
  478.     DB    'MENU    CMD'   ;<-- MUST BE 11 CHARACTERS EXACTLY
  479.                 ;<-- LIKE  'MYFILE  CMD'  NO PERIOD
  480.                 ;<-- JUST FILENAME OF EXACTLY EIGHT
  481.                 ;<-- CHARACTERS FOLLOWED BY THREE FILE
  482.                 ;<-- TYPE CHARACTERS.
  483.     ENDIF    ;PREDEFINED
  484.