                        Clarion DOS Extender

This file contains important information that is not contained in the
printed documentation for Clarion Database Developer.

Table of Contents:

     1. Resolving Hardware and Software Compatibility Issues
     2. Project file settings
     3. Application distribution
     4. Virtual Memory in Protected Mode
     5. Address(), Peek() and Poke() functions
     6. Protected mode Debugger


1. RESOLVING HARDWARE AND SOFTWARE COMPATIBILITY ISSUES
-------------------------------------------------------

Hardware/Software Compatibility:

     CDD Dos Extender is designed to follow memory management standards where
 they exist, to make the best possible use of your computer, and to allow
 you maximum flexibility to tune the program the way you want. When a CDD Dos
 Extender program loads, it tries to detect any EMS emulation, RAM disks, and
 caches you have, and configures itself to run optimally in that environment.

     Unfortunately, standards have been slow to evolve for memory
 management. CDD Dos Extender conforms to the major standards that do exist:
 the VDISK standard for RAM disks, the VCPI standard for EMS emulation,
 the XMS standard for extended memory, and the DPMI standard for protected
 mode. If you use software that conforms to some other standard, you may have
 to make adjustments to run CDD Dos Extender. Please check the list that
 follows for known compatibility problems.

     Some specific compatibility problems are:

     -  A 286 machine with an old BIOS might not be able to run in
        protected mode.  Run the Xstats.exe to verify the BIOS
        supports protected mode switching. (Xstats is explained below)

     -  The CDD Dos Extender will run without any memory manger
        installed.  However, executing a Clarion "RUN" command without a
        memory manager loaded will hang the system.
        Any Memory manager may be used, and the memory manager may be
        configured for either XMS or EMS support.  "RUN" is being
        changed to correct this problem.

     -  Some machines using 386MAX memory manager will need to add
        "NODPMI" to the 386Max.Pro.

     -  If you're using EMM386 with the NOEMS switch, then you need
        to add EMM386 AUTO to your autoexec.bat file.

     -  You will need the service pack for OS/2 2.0 if you want to
        run the protected mode debugger in the DOS compatibility box
        of OS/2 2.0.

 Testing a CPU's ability to switch to Protected mode.

   CDD Dos Extender includes a small program to test a machines ability to
   run in protecteted mode.  Although it cannot detect all machine problems,
   it does test machine components that Clarion Dos Extender stresses; as a
   result, it often help pinpoint problem areas.

   The program "XSTATS.EXE" is installed in your \Clarion3 directory.

   If you have any reason to suspect that your target hardware may not be
   able to run a CDD Dos Extender program, you should run the XSTATS
   program on the target system.

   XSTATS will verify that your Expanded Memory Specification (EMS) hardware
   and software are working correctly, and verify the ability to switch in
   and out of protected mode.  You should see statistics for a number of
   tests. If your system hangs or does not return any values, the system
   will not run in protected mode.

2. PROJECT SETTINGS

   CDD Dos Extender supports two types of protected mode programs:
   "Extended model"; Protected mode using Runtime Libraries (DLL's), and
   "FlatExtended Model"; Protected mode linked into a single executable (.EXE).

   The quickest way to make and test protected mode programs is to use
   RUNTIME LIBRARIES. To create a protected mode DLL program your PROJECT
   SETTINGS should be set to PROTECTED MODE (Radio button) AND
   USE RUNTIME LIBRARIES (Checkbox).

   To create a single executable program PROJECT SETTINGS should be set to
   PROTECTED MODE (Radio Button) ONLY.

3. APPLICATION DISTRIBUTION

   If you choose to distribute protected mode programs in DLL form
   (select "PROTECTED MODE" and "USE RUNTIME LIBRARIES (DLL's) ", you
   need to distribute the following:

     Myapp.exe               - your application's .EXE
     Myfuncs.DLL             - any DLL you've created of your own functions
                               that is used by your program
     DESBROWS.DLL            - if your program uses the BROWSE TEMPLATE
     DESCLA.DLL              - the CLARION standard library
                             -
                             - If your program uses one or more file drivers,
                               then you need to distribute the DLL for each
                               driver.  For example, if your program uses the
                               Clarion file driver you would distribute
                               DESCLA21.DLL.

     DESCLA21.DLL            - Clarion file driver
     DESBTRV.DLL             - Btrieve file driver
     DESASCII.DLL            - Ascii file driver
     DESBASIC.DLL            - Basic file driver
     DESDOS.DLL              - Dos file driver
     DESDB3.DLL              - DbaseIII file driver
     DESDB4.DLL              - DbaseIV file driver
     DESPDOX3.DLL            - Paradox 3.5 file driver
     DESFOX.DLL              - FoxPro file driver
     DESCLIP.DLL             - Clipper file driver


   If you choose to distribute a single executable (FlatExtended) program
   (select the  "PROTECTED MODE" RADIO BUTTON only), then you need only
   distribute:

   Myapp.exe                 - your application's .EXE
                               This .EXE will be considerably larger than the
                               .EXE produced for use with DLL's.

   In deciding which type of PROTECTED MODE program to create and distribute,
   a RULE OF THUMB is: "If your system consists of multiple applications
   (multiple .EXE's) then use DLL's".

   Distributing the DLL version saves considerable disk space when a "system"
   is comprised of more then one .EXE, this is because the library code is not
   duplicated in each .EXE file.

   Updates to your customers also become considerably easier.
   For example, if you add a new feature to your program you need only ship
   a very small .EXE.  If a file driver is updated you don't even need
   to Re-Make your application, just ship the new driver DLL.


4. VIRTUAL MEMORY IN PROTECTED MODE

   Protected mode programs do not use the CLAVM environment settings. The
   Protected Mode Virtual System supports automatic swapping of code and data.
   The system creates a SWAP file with a unique name in the form CLXSWP??.$$$
   where ?? is changed to produce a unique name.

5. ADDRESS(), PEEK() and POKE()

   PEEK and POKE must always use the ADDRESS function for memory addressing
   in Protected mode.  A new form of ADDRESS has been implemented to support
   access to system memory locations in protected mode, the new form of
   ADDRESS is:
                 ADDRESS( segment, offset )

                 For example if you wanted to PEEK at the system ClockTick
                 you would use:
                                PEEK(ADDRESS(40Ch,6Ch),clocktick#)

                 In protected mode the ADDRESS function translates the
                 segment:offset to a selector:offset address.

                 If you PEEK or POKE using standard segment:offset notation
                 you will experience spurious results and/or XTRACE.

6. PROTECTED MODE DEBUGGER

   CDD DOS Extender ships with CLAXVID.EXE, this is the protected mode
   version of the Visual Interactive Debugger (VID). CLAXVID is automatically
   invoked when debugging a protected mode program.  It can also be invoked
   from the DOS command line using the syntax:

                     CLAXVID <executable name>

