12/10/93
y:\tech\bl3info.doc

               Initial Considerations for the Blinker 3.0
                             DOS Extender

1.  Supported compilers:

  To date Blinker's DOS extender supports the following compilers:
        compiler                     override files
        --------------------         ---------------
        Borland C 3.0 & 3.1           BLXBCP31.LIB
                                      c0lp.obj      see example below
        Microsoft C 5.1, 6.0, & 7.0   BLXMSCnn.LIB
        Microsoft Visual C 1.0        BLXMVC10.LIB
        CA-Clipper 5.01a              BLXCLP50.LIB
        CA-Clipper 5.2c               BLXCLP52.LIB

  Each of these compilers has a corresponding override library that is
  required when linking an extended or dual mode application.  These
  override libraries are provided on the Blinker distribution diskette
  and can be found in the LIB sub directory of the Blinker installation
  directory.  In addition Borland C requires a replacement startup file
  that is in the OBJ sub directory.

  As support is added for other compilers, their corresponding override
  libraries will be made available on Blink Inc.'s BBS (804-747-7333).

2.  Third party products:

  Please note that many add-on libraries written in C or Assembler will
  require updates to allow them to be used in protected mode and dual
  mode programs.

  The file 3RDPARTY.TXT on the distribution disk and on the BBS contains
  the latest information we have available. The information was supplied
  by the vendors concerned, reflecting their INTENTION to support extended
  and/or dual mode under Blinker's DOS extender.  Check with the vendors
  of the products you are using if there is a question if you have their
  Blinker extended mode version.

  The fact that a product runs in protected mode with another DOS
  extender, does not mean that it will do so with Blinker.  Many
  products make explicit calls to particular extenders, requiring that
  it be upgraded to run under Blinker's extender.  Also, running in
  Blinker's extended mode does not guarantee that the same product is
  dual mode compatible.

3.  Linking for extended/dual mode:

  The Blinker-supplied override compiler libraries are crucial. The
  following problems can arise when this library is not SEARCHed in the
  link script immediately before the compiler library:

  A. Omission will result in 1115 errors at link time or GPFs at runtime
     for smaller applications.
           For example in Clipper 5.2 omission results in:
                                GPF in VM_TEXT
                           or   1115  BLXCLP52(__EMM....).

  B. Generally these libraries should be SEARCHed after any third party
     libraries and just prior to the compiler library.
            For example in Clipper 5.2, placing BLXCLP52.LIB after
                CLIPPER.LIB causes a GPF in VM_TEXT.
                FUNCky is one known exception and there maybe others.
                Until all the FUNCky functions are converted to run in
                protected mode, place Blinker's BLX override library
                before the FUNCky libraries as well as before the
                compiler library.  Placing BLXCLP52.LIB after FUNCky II
                can cause a GPF or a Clipper internal 667 err.

  C. Using a wrong override library for the compiler will also cause
     problems.
            For example if BLXCLP52 is linked with a CA-Clipper 5.01
                application the result will be:
                1115  BLXCLP52(__EMM....).

4.  Using an older version of Blinker with one of the Blinker 3.0
    compiler override libraries will result in unresolved externals.

             EX: using BLXCLP50.LIB
                  1115 BLXCLP50.LIB(DISIBM)  'DOS........'
                  1115 BLXCLP50.LIB(OM)      '_BLIMGRSTS'
                  1115 BLXCLP50.LIB(VM)      'DOS.......'

5.  Using the CA-Clipper Debugger in protected mode:

  CLD.EXE can not be run in extended mode, nor can it run a protected
  mode Clipper program from real mode.  It must be linked into the .EXE
  with the command, ' FILE  path\CLD.LIB ',  and activated with the
  'Alt-D' key combination or adding the ALTD() function call to the
  source.

  If the debugger still does not pop up, insure that all .OBJs have been
  compiled with the /b option, and that there are no calls to the
  function ALTD(0) in the Clipper source code, as this disables the
  debugger hot-key 'Alt-D'.

  The option 'program restart' only operates when executing the debugger
  through CLD.EXE.  It is  not operational when the debugger is linked
  into the application with CLD.LIB and therefore is not available when
  debugging in protected mode.

6.  Error 1120 ".BIF file too large":   (CA-Clipper only)
  This may occur more often with Blinker 3.0 now that larger,
  incrementally-linked .EXEs can be run in protected mode.

  Work-around:  Place a number of .OBJ files, that are not being
  modified, into a library to reduce the number of file entries
  inside the .BIF file.


BorlandC example:
-----------------
        Compile options:  Do not use Borland's 'overlay' (Y) options
        and use something other than the default 'smart virtual tables'.

        BLINKER EXECUTABLE EXTENDED
        STACK  nnnn
        #MIXCASE                        #activate if needed
        BLINKER MESSAGE HOST ON

        FILE    c0lp
        FILE    main
        FILE    ......
        SEARCH  BLXBCP31
        LIB     EMU / FP87              #optional
        LIB     MATHL                   #optional
        LIB     CL
        #LIB    GRAPHICS                #optional


Clipper 5.2c example:
---------------------

        BLINKER EXECUTABLE DUAL
        BLINKER PROCEDURE DEPTH nn
        BLINKER CACHE XMS 256,75%
        BLINKER CACHE EMS 256,75%
        BLINKER MESSAGE HOST ON

        OUTPUT       name
        SECTION INTO name               # required for dual

        BEGINAREA
          FILE    main
          FILE    ......
          LIB     .....                 # overlayable libraries
        ENDAREA
        FILE    ......                  # non-overlayable files
        LIB     ......                  # non-overlayable libraries
        SEARCH  BLXCLP52                # required for extended/dual
        LIB     CLIPPER
        BEGINAREA
          LIB     EXTEND                # if other non-Clipper overlays
        ENDAREA
