 
 
         
       ޱޱޱޱޱޱޱ
       ްޱޱޱްޱްޱްްްޱ
       ޱޱޱޱޱޱޱޱްޱ
       ޱޱޱޱޱޱޱ
       ޱޱޱޱްްޱްޱޱ
       ޱޱޱޱޱޱޱޱޱްްޱ
       ޱޱޱޱޱޱޱ
       
       
         
 
   Volume 1, Number 14                                   26 November 1991
 
                  (c) Daniel Doekal, All Rights Reserved
 
      The BBS Clipper magazine, published WEEKLY, every FRIDAY
 
      Some of the material used comes from scanning CLIPPER echoes
      which are carried in various BBS throughout the World.
      These Echoes are very often the source of the most often asked
      Questions and Answers about Clipper.
 
      Other material, which is fully signed or abbreviated is the
      copyright of the appropriate persons.
 
      The publisher is not responsible for other authors submissions....
      Published material is not necessarily the opinion of the publisher.
 
      Redaction:
         Publisher...................................Daniel Docekal
         Chief editor ...............................Daniel Docekal
         Language editor .................................Dave Wall
 


                               Table of Contents

 1. EDITORIAL  .............................................................  1
    Second decade editorial  ...............................................  1
 2. ARTICLES  ..............................................................  3
    5.0 FOCUS: Memory Management, Overlay Reloading #1  ....................  3
 3. SOFTWARE  ..............................................................  7
    PATCH of OPTIMIZE coming with QEMM 6.0  ................................  7
    QEMM 6.0 and troubles coming with STEALTH options  .....................  9
 4. Q&A  ................................................................... 16
    Q&A: Desqview and CACHE programs are NOT working properly together  .... 16
    Q&A: Desqview and high speed communication programs  ................... 16
    Q&A: File corruptions under Desqview  .................................. 16
    Q&A: Hangs of system after floppy access in Desqview  .................. 17
    Q&A: Desqview is repeatedly hanging  ................................... 17
 5. ANOMALIES  ............................................................. 18
    ANOMALIES reports and commets  ......................................... 18
    MISC              Miscellaneous clarification/anomalies  ............... 18
    DBCREATE() is killing existing ALIAS  .................................. 18
    KEYBOARD anomaly  ...................................................... 19
 6. CLIPPER NET  ........................................................... 20
 CLIPBBS 1-14       Table of Contents (...)        26 Nov 1991


    Index of described files in Clipper BBS Magazine  ...................... 20
    ClipperNet - PAT2-3.ARJ  ............................................... 21
    ClipperNet - CLIPPLUS.ZIP  ............................................. 21
    ClipperNet - MSWIN.ARJ  ................................................ 22
    ClipperNet - POSTPRNT.ARJ  ............................................. 22
    ClipperNet - SHADO.ARJ  ................................................ 22
    ClipperNet - BUTTON.ARJ  ............................................... 23
    ClipperNet - DTF102.ARJ  ............................................... 23
    ClipperNet - HOTKEY.ARJ  ............................................... 23
 7. CLIPBBS  ............................................................... 25
    CLIPBBS distribution  .................................................. 25
    CLIPBBS, how to write an article!!!  ................................... 26

                                   - - - - -
 CLIPBBS 1-14                   Page 1                   26 Nov 1991


 ==============================================================================
                                   EDITORIAL
 ==============================================================================


                           Second decade editorial
 
 
 Hello again. Today i had really nice day, morning appointment with dentist
 left me with toally 'wooden' mouth. Injection of something is very nice to
 not feel paing, but then noone want to speek anymore <grin>. Actually, i'm
 glad for this injection, otherwise it will follow practice from my post--
 socialistic country Czechoslovakia. Just wondering, it has nothing to do
 with ClipperBBS, but how may look dentist in your country? Czechoslovakian
 dentist is:
 
 1) never using any injection of somethign to keep out of pain when making
    holes
 2) never giving you hand and telling you "Hello" and then "Good Bye"..
 3) using seal of metal color which will after one year go to be totally
    black (what a surprise, dentist here in The Netherlands is using seal
    which has similar color as mine tooth)
 4) making from small hole in tooth something like toilet hole <grin>
 5) forbiding you to eat at least for four hours, otherwise your seal
    will be lost (suprising again, i could eat and drink immediately)
 6) making next appointment somewhere after few months before it is
    totally busy....
 7) never promising that something will be beter (here in Holland it
    seems like that repaired tooth is really repaired)
 8) sometime not repairing correct tooth, mostly is just one left
    or one right from wrong one.
 
 And now, what you country? Not, stop. Let's take a look to something
 different.  Can we not see any similarity with above and Nantucker/Clipper?
 Do you think NOT? I will show you. Nantucket is:
 
 1) Never using any way of solid help to keep your pain with Internal errors
    out of your mind...
 
 2) Will only get money, give Clipper and then chance to receive any
    material from them is somewhere around zero
 
 3) release Clipper 5.0 which looks nice, but after using is absolutely
    out of possibilites to use :-)
 
 4) (difficult, this point) filling your disk with millions of norton guides,
    error reports, internal error reports, fixes and tricks and never giving
    any paper...
 
 5) answering to your question with nice sentence "it is known problem, you
    have to wait to next version or make some workarounds, but we don't know
    which, way few days (will become weeks) and we will maybe know", or any
    different view, forbiding you forever to include your Clipper between
    normal programming languages and to cooperate directly from "C" to
    Clipper...
 
 CLIPBBS 1-14                   Page 2                   26 Nov 1991


 6) don't know if is totally busy, but time hole between Clipper 5.0 and
    Clipper 5.01 was unbelievably long
 
 7) Never promising anything because of points 1->6
 
 8) not so much listening to problems and giving tips and fixes about
    something different that was needed and trying to tell, that for example
    INCREMENTAL linking is working, never mind than must receive thousands
    of complains about /INC not working...
 
 And now, WARNING please, maybe in your country are difference practices, but
 from here (The Netherlands) it seems like is written <grin>.
 
    Seriously now, it's up to you if it's fitting as was written, this
    editorial is just result of one vist on Dentist. Second visit is coming
    soon (next thursday :-) <grin>), because my tooths are really very bad
    now, because of :
 
    1) i was VERY afraid to go to dentist (because of point 1 till 8)
    2) repairment was very bad (because of point 1 till 8)
 
 Cheers
    Daniel

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 3                   26 Nov 1991


 ==============================================================================
                                    ARTICLES
 ==============================================================================


             5.0 FOCUS: Memory Management, Overlay Reloading #1
                            by Roger Donnay
 
 
 As a long-time user of RTLINK, I feel compelled to share with you some
 insights on how to get much more from this great linker than can be
 derived from the Clipper documentation.   My particular area of interest
 is linking technology - Why?  Because I learned long ago that time
 invested in learning the "art" of linking will pay dividends equal or
 greater than those derived from learning new programming techniques.
 
 Let me give you an example of what I mean.   Let's say you are running
 into a memory wall in your application and you simply must find a way
 to remove 40k from your root .EXE.   I can only guess what you are
 thinking now:  "Wait a minute, what wall is he talking about?  I thought
 that 5.0's VMM system and dynamic overlaying system were designed to
 make Clipper work in virtually any DOS memory environment."  It is true
 that 5.0 has memory management features built-in which far surpass those
 in Summer 87, but that doesn't mean you will never run out of memory.
 What it does mean is that you now have many more options available for the
 management of memory, but even under 5.0, MEMORY STILL MUST BE MANAGED,
 and you, the 5.0 programmer, have just been promoted to manager.
 
 Getting back to our example - The task is to manufacture 40k of memory
 in an existing application.  I have been faced with this task many
 times.  I could probably give you a list of a hundred changes you could
 make to your code to get back this 40k of memory - but I'd much rather
 show you one or two changes you can make to your link file.   The first
 of such proposed changes utilizes the RELOAD feature of RTLINK.
 
 This article is the first in a series designed to help you manage
 memory under Clipper 5.0.   Some of what I will cover is already
 documented in the 5.0 manual, but most of it is not.
 
 
 RELOADABLE OVERLAYS
 
 Overlay Reloading is a very important "undocumented" feature of the RTLINK
 linker supplied with Clipper-5.0.  I have been RELOADING objects from the
 Summer 87 Clipper libraries for years, so when I received my copy of
 Clipper-5.0, the first thing I attempted to do was to overlay some of the
 larger C/ASM modules in the Clipper libraries using the RELOAD command in
 my linker script file.  The Nantucket development team had the foresight
 to insure that their C and ASM compiler assigned a UNIQUE name to each
 Clipper C/ASM object in the Clipper libraries, thus allowing, you, the
 Clipper programmer to use both the "undocumented" RELOAD command and
 MODULE command in your .LNK script files.
 
 So what are "Reloadable Overlays"?  These are a form of STATIC overlay
 in which segments of code are placed into overlay sections that occupy
 the same memory space at runtime, however the "calling  module" is
 CLIPBBS 1-14                   Page 4                   26 Nov 1991


 automatically "reloaded" into memory when returning from the
 "called module".
 
 Reloadable overlay segments usually look like this in your link file:
 
 RELOAD FAR 200
 # area 1
 BEGINAREA
   SECTION FILE A
   SECTION FILE B
   SECTION FILE C
 ENDAREA
 
 # area 2
 BEGINAREA
   SECTION FILE D
   SECTION FILE E
   SECTION FILE F
 ENDAREA
 
 I supposed you are now thinking: "What a waste of time.  I happen to know
 that RTLINK automatically overlays all Clipper code - this guy has been
 sniffing glue again."  Well, you are half right.  RTLINK does use an
 automatic overlaying system called "dynamic pages" for all code which
 has been compiled by the Clipper-compiler, but it does not automatically
 overlay code written in C or ASM, and this is the predominant class of
 code in the Clipper libraries.   Not all Clipper applications are
 going to need to use these reloadable static overlays, but if your
 application relies heavily on third-party libraries written in C/ASM
 or you use DBEDIT(), MEMOEDIT(), TBROWSE(), Report Forms, or other
 large modules from the Clipper libraries, then it is recommended that
 you learn this technique.
 
 The main advantage of "reloadable overlays" over conventional "static
 overlays" is that you are never in danger of "lockup" in the event that
 a procedure or function in FILE A calls a function or procedure in FILE B
 because FILE A will be reloaded into memory on return from FILE B.  If
 you graduated from Summer 87 and used PLINK86's static overlaying system,
 you know exactly what I am talking about.   If you use the RELOAD command
 with RTLINK, and assign a large enough value to the RELOAD stack, you
 will never again experience call stack corruption and computer lock-up.
 Make sure when you use the RELOAD command that you always use it as
 follows:
 
    RELOAD FAR <stack size>
 
 where the <stack size> is the amount of memory in hex bytes to use for
 saving addresses.  My experience is that most applications will run just
 fine with a stack size of 200.  If your application does recursive
 nesting, however, you may need to increase the stack size.  Recursive
 nesting is described as follows:  Procedure A calls Procedure B which
 calls Procedure A which calls Procedure B, etc, etc, etc.  Each time
 a procedure is called, its return address is "pushed" onto the stack, and
 each time you return to the calling procedure the address is "popped"
 from the stack.  In the above example, if this recursive condition were
 allowed to continue for a large number of iterations, the stack would be
 CLIPBBS 1-14                   Page 5                   26 Nov 1991


 overrun and the program may crash.
 
 Although your application will not crash using RELOAD, it may slow down
 a bit if overlay segments are not structured properly, because each time
 an overlay is reloaded the application must go to disk.  In the above
 example if a function in FILE A repetitively calls a function in FILE B
 then your application will be very "disk intensive" and will run slowly.
 If a function in FILE A repetitively calls a function in FILE D there will
 be no slowing at all because both modules will remain in memory.
 
 Overlay management of C/ASM code with "reloadable overlays" is less
 time-consuming and more reliable than simple conventional "static
 overlays" and provides an additional advantage of allowing more modules
 to be overlayed, thereby saving additional memory usage.  Overlay managers
 which provide "RELOAD" commands usually limit the automatic reloading to
 either "NEAR" or "FAR" calls.  The Clipper-compiler mixes both near and
 far calls therefore Clipper-compiled code cannot be overlayed in this
 manner.  Even if you include a Clipper-compiled object in a static
 overlay it will automatically be converted to a "dynamic" overlay by
 RTLINK/5.0 and the command will be ignored.
 
 
 PLACING CLIPPER LIBRARY MODULES INTO RELOADABLE OVERLAYS
 
 Refer to the below script file for an example of how to use Static
 reloadable overlays to reduce memory usage in your Clipper-5.0
 applications.  This link file creates an overlay area for overlaying the
 larger modules in the Clipper libraries which are not likely to call each
 other recursively, therefore you will probably notice very little
 difference in speed performance yet you will get up to 40K more memory
 overhead depending on how much of the Clipper libraries your application
 uses.
 
 You may get a "warning" message during link time if your application does
 not call one of the modules referenced in an overlay area.  In the event
 this happens, simply remove that module from the link file.  For example,
 if you are not using any TBROWSE objects or DBEDIT() remove the following
 line:
 
   SECTION MODULE D:\S89\EDIT\TBROWSE.C
 
 
 # Example of using RELOADABLE overlays with the
 # Clipper-5.0 version of RTLINK
 
 FI <my files>
 LIB <my libs>
 LIB \CLIPPER5\LIB\extend
 LIB \CLIPPER5\LIB\clipper
 LIB \CLIPPER5\LIB\terminal
 LIB \CLIPPER5\LIB\dbfntx
 OUTPUT <my .EXE>
 VERBOSE
 
 # Add this portion to your existing .LNK script file
 RELOAD FAR 200
 CLIPBBS 1-14                   Page 6                   26 Nov 1991


 BEGINAREA
   SECTION MODULE D:\S89\EDIT\MEMOEDIT.C
           MODULE D:\S89\MEMO\MEMOTRAN.C
   SECTION MODULE D:\S89\MEMO\MEMOREAD.C
           MODULE D:\S89\MEMO\MEMOWRIT.C
           MODULE D:\S89\MEMO\MEMOLINE.C
           MODULE D:\S89\MEMO\MLCOUNT.C
           MODULE D:\S89\MEMO\MLPOS.C
   SECTION MODULE D:\S89\EDIT\TBROWSE.C
   SECTION MODULE D:\S89\EDIT\ACHOICE.C
           MODULE D:\S89\ARRAY\ASCAN.C
           MODULE D:\S89\ARRAY\ASORT.C
           MODULE D:\S89\ARRAY\ARRAY.C
           MODULE D:\S89\ARRAY\DIRECTRY.C
   SECTION MODULE D:\S89\DBCMD\DBSTRUCT.C
           MODULE D:\S89\DBCMD\DBCREATE.C
           MODULE D:\S89\DBCMD\JOINLIST.C
           MODULE D:\S89\DBF\SORTOF.C
   SECTION MODULE D:\S89\TERM\GETHELP.C
 ENDAREA
 
 Another important undocumented feature of RTLINK is the MODULE command.
 
 The MODULE command is very useful in that it allows RTLINK to place
 "modules" from libraries into overlays.  When a compiler creates an
 .OBJect file it also assigns a "module" name for the linker.  The Clipper
 compiler assigns the same name as the .OBJ file, however many compilers
 will assign the name of the SOURCE file as the module name including
 drive letters and directories.   You can organize your projects by
 placing all your C/ASM objects in libraries with a library manager such
 as LIB.EXE or PLIB86.EXE then by using the SECTION MODULE <module>
 command in your link file you can place any module into any overlay area.
 
 Example:
 
 LIB mylib
 BEGINAREA
   SECTION MODULE myfileA,myfileB
   SECTION MODULE myfileC
   SECTION MODULE myfileD
 ENDAREA
 
 The MODULE <module> command in RTLINK requires that the <module> exists
 in one of the declared libraries and that the name is "unique" to that
 module otherwise the command will be ignored and the module will be
 linked into the root memory area.  This is not a problem with Clipper-5.0
 because the modules are given unique, but very long names.
 
 In my next article, I will show you how to use the RELOAD and MODULE
 commands to overlay C/ASM code from popular third-party libraries such
 as FUNCKY, PROCLIP, dGE, and FLIPPER.

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 7                   26 Nov 1991


 ==============================================================================
                                    SOFTWARE
 ==============================================================================


                   PATCH of OPTIMIZE coming with QEMM 6.0
 
 Subject:  Patching Optimize 2.0 to resolve problems where, under some
 circumstances, Optimize will forget during its final phase that it required
 the Squeeze feature.
 
 Background: Many TSRs and device drivers take up more memory when they
 initialize than they require when they are resident. Optimize's Squeeze
 feature allows such programs, when they do not use EMS, to load partially
 into the page frame provided that they shrink down to a size that won't leave
 part of the program in the page frame.  Under QEMM-386, the Squeeze feature
 can also make temporary use of ROM areas for loading high, provided that
 the ROM is not used while the program is initializing.
 
 Under some circumstances when Optimize 2.0 reaches the "ideal" result - that
 is, nothing in conventional memory and nothing in the largest high RAM region
 - and it required Squeeze to reach this result, Optimize will forget during
 its final phase that it required Squeeze.  There is no workaround other than
 running Optimize with the /NOSQF and /NOSQT parameters to disable Squeeze.
 The problem should, however, not occur very often.  The symptom of this
 problem is that a program that is supposed to be loaded into high memory
 evokes the LOADHI message "Not enough room to load <program> high.  Loading
 low:" on the final phase of OPTIMIZE.
 
 This patch, which resolves the above problem, only works on Optimize version
 2.00, which has a date of 8/23/91 or 8/28/91 and comes with either QEMM-386
 V6.00 or DESQview-386 V2.40.  Earlier and later versions of Optimize do not
 exhibit this problem and do not require this patch.
 
 ***************************************************
 1)    Change to your QEMM directory.
 
 2)    Copy the original OPTIMIZE.COM file so that if you make a
 mistake you will be able to restore from a good copy.  Type
 
                   COPY OPTIMIZE.COM OPTIMIZE.OLD
 
 at the DOS prompt.
 
 3)  In order for DEBUG to process Optimize correctly, you need to
 rename it.  At the DOS prompt, type
 
                         REN OPTIMIZE.COM X
 
 4)  Now, load the file called X into DEBUG by typing
 
                              DEBUG X
 
 at the DOS prompt.  Make sure that DEBUG is in your path or that
 you precede DEBUG with the path where DOS can find it.  If all
 works out, you should see a hyphen (-) for a prompt.  This is the DEBUG
 CLIPBBS 1-14                   Page 8                   26 Nov 1991


 prompt.
 
 5)  Now make sure that the registers in the microprocessor are in
 the correct state by typing R at the DEBUG prompt.  You should
 get something like this:
 
 AX=0000  BX=0001  CX=15C5  DX=0000  SP=FFEE  BP=0000  SI=0000 DI=0000
 DS=xxxx  ES=xxxx  SS=xxxx  CS=xxxx  IP=0100   NV UP EI PL NZ NA PO NC
 xxxx:0100 4D            DEC     BP
 
 Make sure that BX is equal to 0001 and that CX is equal to 15C5.
 If BX and CX are not equal to these values, then you should not
 continue with the patch.  Type
 
                                 Q
 
 at the DEBUG prompt to quit out of DEBUG if BX is not 0001 and CX is not
 15C5.
 
 
 6)  If the BX and CX values are correct, type
 
                    S CS:100 FFFF e8 e9 e3 72 05
 
 at the DEBUG prompt.  This will return a number with the form of xxxx:5C45.
 If the number that returns does not have a 5C45 after the colon, DO
 NOT APPLY THIS PATCH.  If the wrong number returns, type
 
                    Q
 
 at the DEBUG prompt to quit out of DEBUG.
 
 
 
 7)  If the number that returns is xxxx:5C45, type
 
                               E 5C48
 
 DEBUG should respond with
 
                           xxxx:5C48 72.
 
 8)  Now type
 
                                 EB
 
 at the DEBUG prompt and hit the Enter key.  This will make the only change
 that you need to make in the file.
 
 9)  Now save your work by typing
 
                                 W
 
 at the DEBUG prompt.    It should say
 
                        Writing 115C5 bytes
 CLIPBBS 1-14                   Page 9                   26 Nov 1991


                                 or
                         Writing 15C5 bytes
 
 depending on the version of DOS you are using.
 
 10) Now you can quit DEBUG by typing
 
                                 Q
 
 at the DEBUG prompt.  This will drop you back to the DOS prompt.
 
 11) Rename X back to OPTIMIZE.COM by typing
 
                         REN X OPTIMIZE.COM
 
 at the DOS prompt.
 
 You should be able to run Optimize successfully now.
 
 --------------------------------------------------
 
 If Optimize fails after you perform this patch, you can recover
 your backup of Optimize by typing
 
                   COPY OPTIMIZE.OLD OPTIMIZE.COM
 
 at the DOS prompt.
 
 You may then wish to try the above procedure again, in case a mistake was
 made.
 
 
              * * *   E N D   O F   F I L E    * * *

 ------------------------------------------------------------------------------


              QEMM 6.0 and troubles coming with STEALTH options
 
      This document discusses how to diagnose and cure problems
 occasioned by the use of the Stealth feature of QEMM-386, version 6.
 All users should review the readq.me file that comes with QEMM-386,
 version 6 for additional information.
 
 FIRST STEP
      The first step is to ascertain whether Stealth is involved with the
 problem.  Remove the Stealth parameter (ST:M or ST:F) from the QEMM-386
 line of the config.sys.  Reboot the computer and try to duplicate the
 problem.  If the problem still happens then Stealth is not causing the
 problem and you must address the problem by the means explained in the
 troubleshooting section of the QEMM-386 manual.
 
 SECTION 1
 
     SECOND STEP
          If Stealth is involved in the problem restore the Stealth
 CLIPBBS 1-14                   Page 10                  26 Nov 1991


     parameter (ST:M) and add XST=F000.  Reboot the computer.  If this
     works, go to the third step;  if this does not work, go to Section
     Two. On this step the QEMM-386 line of the config.sys should look
     something like:
 
           device=c:\qemm\qemm386.sys ram st:m xst=f000
 
     THIRD STEP
          If XST=F000 solves your problem replace it with X=F000-FFFF,
     reboot and try again.  The QEMM-386 line of the config.sys should
     look something like:
 
           device=c:\qemm\qemm386.sys ram st:m x=f000-ffff
 
          If this works, add the parameter FSTC to the qemm line, thusly:
 
           device=c:\qemm\qemm386.sys ram st:m x=f000-ffff fstc
 
     and reboot.  If this works continue;  if this does not work (and
     FSTC may not work in all circumstances) then remove the FSTC
     parameter and reboot with the previous QEMM-386 line.  See the
     section about FSTC below for an explanation of FSTC.
          In either case, enter Manifest and look at the QEMM-
     386/Analysis screen.  Look at the last line:  It should look
     something like this:
 
                     Fn00 IIII IIII IIII IIOO
 
     The portions of the address space with the O in them are being
     accessed directly.  Some program or piece of hardware is trying to
     read the contents of the ROM here directly, not merely access them
     through interrupts.  This portion of the address space must be
     allowed to be accessed directly.  This is done by excluding QEMM-386
     from mapping this area.  In this case the target region is FE00-
     FFFF.  The appropriate Exclude is X=FE00-FEFF. The correct QEMM-
     386.SYS line of the config.sys is:
 
          device=c:\qemm\qemm386.sys ram st:m x=fe00-ffff
 
     This Exclude allows Stealth to do its job and costs you only 8K of
     high address space.
 
     FOURTH STEP
          If XST=F000 solves your problem while X=F000-FFFF does not then
     you should try using ST:F instead of ST:M.  You may get more high
     ram with ST:F than with ST:M XST=F000.
 
 SECTION TWO
 
      This section is only for users with video ROM.  Hercules-compatible
 monochrome and CGA systems do not have video ROM and thus this section
 does not apply.  Some machines have their video ROM elsewhere, usually
 E000-E7FF.  Such users should use E000 (or wherever their video ROM
 begins) instead of C000.
 
     FIFTH STEP
 CLIPBBS 1-14                   Page 11                  26 Nov 1991


          If XST=F000 does not solve your problem then try XST=C000. The
     QEMM-386 line of the config.sys should look like:
 
          device=c:\qemm\qemm386.sys ram st:m xst=c000
 
     If XST=C000 does not work, go to Section Three.  If XST=C000 does
     work, go to the next step.
 
     SIXTH STEP
          If XST=C000 solves the problem then try placing the page frame
     at C000.  Do this only if the entire C segment is available to put
     the page frame in.  The QEMM-386 line of the config.sys should look
     like:
 
          device=c:\qemm\qemm386.sys ram st:m fr=c000
 
     If this works then this may be acceptable solution.  All the address
     space in which high ram can be created is being used in this
     configuration.  If this step does not work or, if you cannot put the
     page frame at C000, go to the seventh step.
 
     SEVENTH STEP
          If XST=C000 solves the problem but you do not want to (or
     cannot) put the page frame at C000 then try the parameter
     FASTINT10:N, where "N" tells QEMM-386 to allow the video ROM's own
     code to be used.  By default QEMM-386 replaces some of the video
     ROM's code with its own video code.  This parameter tells QEMM to
     use the ROM's code.  The QEMM-386 line of the config.sys should look
     like:
 
          device=c:\qemm\qemm386.sys ram st:m fastint10:n
 
     If this works then all ROMs are being Stealthed.  You may choose to
     try the eighth step as an alternative though.  If this does not
     work, go to the next step.  There is a further discussion of
     FASTINT10 below.
 
     EIGHTH STEP
          If XST=C000 solves the problem but FR=C000 or FASTINT10:N does
     not (or you cannot put the page frame at C000 or do not want to use
     FASTINT10:N) then replace XST=C000 with X=C000-C7FF.  The QEMM-386
     line of the config.sys should look like:
 
          device=c:\qemm\qemm386.sys ram st:m x=c000-c7ff
 
     If this works, add the parameter FSTC to the QEMM-386 line, thusly:
 
          device=c:\qemm\qemm386.sys ram st:m x=c000-c7ff fstc
 
     and reboot.  If this works continue;  if this does not work (and
     FSTC may not work in all circumstances) then remove the FSTC
     parameter and reboot with the previous QEMM-386 line.  See the
     section about FSTC below for an explanation.
          In either case, enter Manifest, go to the QEMM-386/Analysis
     screen, and look at the Cn00 line.  It should look something like
     this:
 CLIPBBS 1-14                   Page 12                  26 Nov 1991


                        Cn00 OIII IIII OOOO OOOO
 
     This indicates that the first 4K region of the C segment, in the
     video ROM, is being accessed directly.  This portion of the address
     space must be Excluded when QEMM-386 is Stealthing.  The appropriate
     QEMM-386 line in the config.sys is:
 
          device=c:\qemm\qemm386.sys ram st:m x=c000-c0ff
 
 SECTION THREE
 
      NINTH STEP
           On some machines there are other ROMs that can be Stealthed;
     often these are disk ROMs.  The same procedure:  trying XST=??00,
     then replacing it with the appropriate Exclude of the old kind
     (X=??00-!!FF) to see if the problem is related to Stealthing or just
     not having some portion of the ROM's address space directly
     accessible, can be used.  The trick of making the page frame begin
     at the beginning of the disk ROM may also work here as well.  If
     XST=??00 solves your problem, try replacing it with FR=??00,
     presuming that there is a 64K portion of the address space free
     beginning at ??00 and that ?? is a multiple of 16.  If some portion
     of the address space must be Excluded for Stealth to work you should
     check Analysis with the FSTC and X=??00-!!FF parameters on the QEMM
     line.
 
     TENTH STEP
           Use XST=F000, XST=C000, XST=??00, and simultaneously for all
     ROMs being Stealthed.  Then replace the XSTs one by one with the
     appropriate regular Exclude (X=F000-FFFF, X=C000-C7FF, X=??00-
     !!FF...), look at the QEMM-386/Analysis screen of Manifest and
     discover what portions of the address space need to be directly
     available.
 
     ELEVENTH STEP
          If ST:M does not work try ST:F instead.  If ST:F does not work
     you should try ST:F XST=C000 (and XST=??00) for other Stealthed ROMs
     other than the one(s) overlain by the page frame.
 
     TWELFTH STEP
          If none of these steps solve the problem please pin down
     exactly what program is failing (and at what point), and file a
     report with Quarterdeck.
 
 INTERESTING QUESTIONS
 
 WHAT IS FASTINT10:N?
      QEMM-386, when Stealthing a video ROM, replaces some of the video
 ROM's code with replacement code written by Quarterdeck.  This
 replacement code is suitable for most video cards.  The FASTINT10:N
 (which may be abbreviated F10:N) parameter tells QEMM-386 not to use its
 own replacement code but the literal code of the video ROM.  This in no
 way limits the amount of high RAM Stealth creates and may be acceptable
 solution for those users who need it.  It should only be necessary on
 unusual video cards.  If placing the page frame at the beginning of the
 video card's ROM works or if a small regular Exclude also solves the
 CLIPBBS 1-14                   Page 13                  26 Nov 1991


 problem you may choose to use this solution instead.
 
 WHAT IS FSTC?
      The purpose of the FSTC parameter is to make the Analysis procedure
 accurate.  Some system and video ROMs may not function properly with the
 FSTC parameter.  If this is the case on your system you will have to
 perform the Analysis procedure without the FSTC parameter. However, you
 should be aware in this case that some of the Exclude statements that
 Analysis prompts you to use may not be necessary.  You can try reducing
 these Excludes on a trial-and-error basis if you wish.
      When QEMM-386 Stealths a ROM certain tables may have to be stored
 by QEMM-386 in its own data area.  This uses a few kilobytes of high
 RAM.  When a ROM is being Stealthed but the address in which the ROM
 resides is Excluded (as with X=C000-C7FF) then QEMM-386 cleverly figures
 out that it does not need to make copies of these tables in its own data
 area so it saves this memory by not making copies of the tables.  This
 means that when you do Exclude the portion(s) of the ROM where these
 tables are stored the ROM will be accessed directly though it would not
 be if it were not Excluded.  This will cause Analysis to report that a
 portion of the address space is OK when Excluded even though it would
 not be accessed directly were it not Excluded.
      FSTC (FORCESTEALTHTABLECOPY) forces QEMM-386 to make copies of
 these tables so that inappropriate Excludes are not recommended for the
 above reason.  FSTC should only be used when you are testing a portion
 of a ROMs address space for direct access by Excluding the whole ROM.
 It is not an appropriate parameter for a final configuration.
 
 WHAT ARE ADVANCED DISK FEATURES?
      The BIOS has a set of function calls intended for use by
 multitasking programs.  These are Int 15, functions 90 and 91.  The
 system ROM or disk ROM may issue the Int 15, fn 90 call while it is
 waiting for the disk controller to read or write a sector, allowing
 other programs to execute during this wait.  When the sector is
 ready, the disk interrupt handler issues an Int 15, Fn 91, signaling
 the multitasking program that the disk information is ready to be
 processed by the system or disk ROM.  Some disk caches hook this call to
 allow your system to go ahead and execute your current program while the
 system or disk ROM is waiting for its requested sector.  Whereas these
 caches preserve the stack and register state for the BIOS and the
 application when doing this pseudo-multitasking, they do not preserve
 the mapping of the page frame.  Therefore, if the BIOS uses the page
 frame itself (as does Stealth), this could generate conflicts and system
 failures.  Since no known disk cache does the proper page frame
 preservation, QEMM automatically suppresses INT 15, function 90 calls
 from the BIOS, effectively disabling advanced disk features.  Caches
 that save and restore the page frame when using advanced disk features
 can use a programming interface to QEMM-386 to reenable advanced disk
 features.
      You may defeat QEMM-386's defeating of this feature with the
 VIRTUALHDIRQ:N (VHI:N) parameter on the QEMM-386 line of the config.sys.
 If your cache has these "Advanced Features" and does not save and
 restore the page frame you will crash or corrupt data on the cached
 drive(s).
 
 WHAT IF I LOAD A DRIVER THAT USES ROM BEFORE QEMM-386?
      If you want to load a device driver before QEMM-386 and it uses a
 CLIPBBS 1-14                   Page 14                  26 Nov 1991


 ROM then QEMM-386 can still Stealth this ROM if you load the driver
 HOOKROM.SYS before this driver.  Here is an example:
 
      device=c:\qemm\hookrom.sys
      device=c:\????????.sys
      device=c:\qemm\qemm386.sys ram st:m
 
 WHY DOES MY SYSTEM SETUP NO LONGER COME UP WITH ST:M?
      On machines with a built-in system setup program in the BIOS ROM
 that can be popped up at any time Stealth may make this feature
 inaccessible after you have booted.  This is because the setup program
 accesses the ROM directly.  In order for it to work after QEMM-386 has
 been loaded you must Exclude the portion of the address space where it
 is stored.  On most machines this is in F000-F7FF or thereabouts.  You
 may decide that it is better to use the system setup only on boot and be
 able to use this portion of the address space for high RAM when you are
 running.  This is the way many systems are these days and you must
 reboot to implement the changes anyway so you may consider this a fair
 trade.
      Machines with a setup program that loads as a regular program may
 not present this problem.
 
 WHAT IS GOING ON?
      With ST:M Stealth is moving out of the address space all ROMs
 accessed by means of interrupts (you can see what interrupts are being
 handled by what ROMs in the First Meg/Interrupts screen of Manifest when
 you are not Stealthing.)  When these interrupts are asserted, QEMM-386
 puts the ROM code that services the interrupt into the page frame. With
 ST:F Stealth is allowing the page frame to share the address space used
 by the ROM, making the underlying ROM code available in the page frame
 when an interrupt pointing into the ROM is asserted.
 
 HOW CAN IT FAIL?
       The Stealth technology relies on the practice of using the code in
 ROMs only by means of interrupts.  With the exceptions listed below when
 the code in a ROM is accessed directly the program or hardware using
 this code (or information) will find high RAM there instead with ST:M
 and will malfunction.  Although this is not common it does happen.
 Sometimes programs look for identification information:  For video cards
 this usually happens in the bottom 4K; for system BIOSes this usually
 happens in FE00-FEFF.  Most users for whom Stealth fails can recover
 almost all the high RAM Stealth can create with small Excludes of this
 kind.
      Exceptions:
 
     1) QEMM-386 does not map High RAM into the last 64 bytes of the
     system BIOS ROM because they are commonly accessed directly.
     Accesses here do not cause Stealth a problem.
 
     2)  When a ROM accesses itself directly then it should work IF the page
     frame begins at this ROM's beginning address.  There are some video cards
     and disk controllers that fail because the video ROM (disk ROM) does not
     tolerate relocation.  The ready cure for this symptom is to put the page
     frame at C000 (or whatever is the beginning of the appropriate video or
     disk ROM) so that when an interrupt that points into the video ROM (disk
     ROM) is asserted, and QEMM restores the contents of the video ROM (disk
 CLIPBBS 1-14                   Page 15                  26 Nov 1991


     ROM) into the page frame, the ROM code can access itself where it expects
     to find itself; this is the purpose of step 6 of this method.
 
     3) Direct accesses of one ROM to another work with ST:F.
 
 Disk caches that write directly to and read directly from the page frame
 cause Stealth to fail unless the DISKBUFFRAME=?? (DBF=??) is used.
 
 Stealth relies on there being interrupts pointing into a ROM in order to
 make it a target for Stealthing.  If there is a ROM in the address space
 that QEMM-386 cannot detect as being used then it will not be Stealthed.
 This may happen for some disk ROMs and for devices that use the ROM only
 upon initialization.  If there is a ROM without an interrupt pointing
 into it it is a suspect for being unused.  You should use the Analysis
 feature of QEMM-386 to discover if this ROM is being used at all.  If it
 is not then the address space it occupies may be reclaimed with an
 INCLUDE.
 
 SUMMARY
      The Stealth technology has been exhaustively tested but the wide
 variety of software and hardware in the PC world has surprises in it for
 every program.  The actual Stealthing of interrupts is very successful.
 The most common failure is due to programs (or other ROMs) trying to
 access a portion of the ROM directly, rather than by means of interrupt.
  For this to work the target region of this access must be in the
 address space at the time of access. This can be achieved by an
 appropriate exclude of the old kind, usually at a cost of only 4K or 8K
 of the additional high RAM Stealth is creating; see steps 3 through 11
 for a procedure to figure these Excludes out.  If the video ROM or
 adaptor ROM is the target ROM of a problem then placing the page frame
 over the video ROM or adaptor ROM may work; see step 6.  The "Advanced
 disk features" that some disk caches use are incompatible with Stealth.
 QEMM-386 disables these by default whenever possible if Stealth is used.
 Some disk caches write directly to the page frame. Such caches should be
 told to use extended memory or the DISKBUFFRAME=?? (DBF=??) should be
 used with QEMM-386; see step 2.  If you have a problem intractable by
 any of these means Quarterdeck would like to hear about it.
 

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 16                  26 Nov 1991


 ==============================================================================
                                      Q&A
 ==============================================================================


 PROBLEM:   I can't get a caching program to work properly with DesqView.
 
 SYMPTOMS:  After loading PC-Cache version 6, the cache does not work if you
            enter DesqView directly.  If you use manifest to look at First Meg
            Programs, PC-CACHE is not listed.
 
 SOLUTION:  I was not able to get PC-Cache version 6 to work correctly on my
            system.  Either switch back to version 5.5 or get a shareware copy
            of ADCACHE.  ADCACHE was written with QEMM, 386-to-the-max, and
            DesqView in mind.  It is fast, small, and compatible.
 
            NOTE 1:  I have also used Super PC-Kwik with success.  It is larger
                     than ADCACHE, but it is somewhat faster.
 
            NOTE 2:  Central Point has released a new version of PC-Cache.
                     This file is available on The Bertha BBS as PCTOL6UD.ZIP.
                     I have not tried the new version because I had previously
                     switched to Super PC-Kwik.
 
            NOTE 3:  The current version of PC-Cache is 6.04.  To find out what
                     version you have, look at the time stamp of the file.

 ------------------------------------------------------------------------------


 PROBLEM:   System hangs when using high speed communications within DesqView.
 
 SYMPTOMS:  When running high speed (>9600 baud) communications, the system
            will hang intermittently.
 
 SOLUTION:  Switch to buffered (16550) serial ports.  On my system, I was able
            to move to 19200 baud with no hangs by switching to the buffered
            ports.  You may also try setting "Optimize Communications" to Y in
            the DesqView Setup area.  Be cautious with this setting as it can
            cause some problems as well.  It is also helpful to upgrade to
            DesqView 2.26 as there is better support for high speed
            communications.
 
            NOTE 1:  I have now gone to 38400 baud on my system using the X00
                     FOSSIL driver.  Things seem to be operating smoothly.
 
            NOTE 2:  Please note that not all 16550 chips are created equal.
                     The preferred chip is a National Semiconductor NS16550AFN.
                     This is a 40-pin dip.  Be wary of Western Digital WD16C550
                     chips which reportedly have FIFO problems with low-speed
                     communications (2400 baud or less).

 ------------------------------------------------------------------------------


 PROBLEM:   System hangs and file corruption occur when running under DesqView.
 CLIPBBS 1-14                   Page 17                  26 Nov 1991


 SYMPTOMS:  Intermittent system hangs when operating with DesqView.  Sometimes
            files will be corrupted.  Usually unable to reproduce the problem
            consistently.
 
 SOLUTION:  Check your interrupts!  Interrupt conflicts can cause all sorts of
            strange problems.  I still see people recommend using IRQ2 on an AT
            class machine.  IRQ2 is a cascaded interrupt for IRQ8 through IRQ15
            and cannot be used.  A lot of us upgraded from an XT and are used
            to setting our systems up to use IRQ2.  I moved my bus mouse card
            from an XT to an AT and had all sorts of problems until I changed
            the interrupt from IRQ2 to something that was not being used.

 ------------------------------------------------------------------------------


 PROBLEM:   System hangs after doing floppy access.
 
 SYMPTOMS:  The system will lock up after doing floppy access.  This is not
            consistent, but usually occurs after writing to the floppy.  Floppy
            reads do not seem to be a problem.
 
 SOLUTION:  I noticed this problem with some regularity on my system.  I got to
            the point where I realized that the hang was only occurring after a
            write to the floppy.  Reads did not appear to trigger the hang.  I
            was using PCTools 6.0 to move files from the floppy to the hard
            drive.  After a file is copied, it is deleted from the floppy in
            order to complete the move.  During this process, a hang would
            sometimes occur.  This could be exacerbated by ejecting the floppy
            prematurely to cause an error.  My system would hang in the middle
            of this error message.
 
            The solution to this problem was to be found in the command line
            for my cache.  I use Super PC-Kwik.  I had set up the cache to
            ignore drives A and B with the /-A and /-B switches.  But when I
            looked at the parameters for the cache I realized that diskette
            writes were still enabled (/D+).  I changed the command line to
            disable diskette writes (/D-) and the problem has not occurred
            since.  It is unclear whether this is a problem on other caches.

 ------------------------------------------------------------------------------


 PROBLEM:   Repeated system hangs when using DesqView.
 
 SYMPTOMS:  System will hang intermittently and with no warning.
 
 SOLUTION:  Check the setting of "Manage Printer Contention" in the DesqView
            Setup area.  Numerous hangs are caused by having this set to "Y".
            Set it to "N".  You must make sure not to have two applications
            printing at the same time.
 
            NOTE 1:  The solution that I use for this problem is to use a
                     buffer on the printer.  Mine is 512K.  That way I can
                     print and the buffer takes all the data.  Then I can close
                     the window and print something else from another
                     application immediately.

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 18                  26 Nov 1991


 ==============================================================================
                                   ANOMALIES
 ==============================================================================


                      ANOMALIES and their comments
 
 This part of Clipper BBS Magazine is dedicated to all discovered 
 anomalies and comments about them in Clipper products. Because 
 Nantucket is still unable to give own bug and anomalies reports (as 
 actually did in past with Summer 87 version) is very handy to have 
 results of many investigations done on many user places. I'm also
 doing my own investigatings, because i'm always very good when someting 
 has hidden problems. Everything what i buy will first show all problems 
 and then all normal things. This amazing part of my live is sometime 
 making me crazy, but for testing of programs it's great <grin>.
 
 Daniel
 
 

 ------------------------------------------------------------------------------


          MISC              Miscellaneous clarification/anomalies.
 
   2) MEMVARBLOCK() (NG Function Description)
      MEMVARBLOCK() cannot be used to create set-get blocks for LOCAL
      or STATIC variables.
 
 ------ COMMENT -------
 
      MEMVARBLOCK() cannot be really used for LOCAL or STATIC, because THEY
      CANNOT EXIST ON RUNTIME LIKE a _NAME_. Names are exist ONLY from
      PRIVATEs, PUBLICs and from Functions. STATIC or LOCAL are just Memory
      Address and NOT a NAME (SYMBOL). It's very often mistake of beginners
      in Clipper that they are mixuping a terms. This is also enough
      documented in coming .NGuides for Clipper!
 
 .DD.

 ------------------------------------------------------------------------------


 DBCREATE() is killing existing ALIAS
 
 
 DBCREATE() is killing existing alias in case when database created with
 this function has the same name as existing alias. IT's ONLY killing of
 ALIAS, because database stays opened and can be accessed by number of
 area, but not by ALIAS.
 
 Test program:
 
     SELECT 6
     USE ( "\ncom\a\qbase.dbf" ) ALIAS QUEUE
 CLIPBBS 1-14                   Page 19                  26 Nov 1991


     ? QUEUE->PRIORITIES
     SELECT 2
     dbcreate( "QUEUE.dbf", { {"FELD1","C",18,0} } )
     ? ""
     ? QUEUE->PRIORITIES
 
 Second "? QUEUE->PRIORITIES" is giving error because alias QUEUE doesn't
 exist longer. CLD is showing opened database, but all QUEUE-> aliased
 operation are UNDEFINED.

 ------------------------------------------------------------------------------


 KEYBOARD anomaly
 
 
 String passed to keyboard and contains ";" character is transfered correctly
 with exception of ";" character which is transfered to CR (ENTER).
 
 Easily it can be demonstrated by using:
 
 KEYBOARD "Hello;boys"
 Memoedit of some string.....
 
 .DD.

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 20                  26 Nov 1991


 ==============================================================================
                                  CLIPPER NET
 ==============================================================================


 
 Following is COMPLETE list of all published file descriptions in Clipper
 BBS magazine in previous numbers. Purpose of this index list is to allow
 anybody find needed file descriptions in growing number of described files.
 Short description after name will give first possible close image about
 file. Number enclosed in "[]" will mean number of Clipper BBS magazine.
 
 Ŀ
 FileName     Src Description                                     Where 
 Ĵ
 ACCESS.ARJ   Cln Source of speed testing program                 [1-06]
 ACH2TB.ARJ   Cln Convert ACHOICE to TBROWSE                      [1-05]
 ACHOO2.ARJ   Cln Replacement of ACHOICE with GET possibilites    [1-06]
 ADHOC302.ARJ Cln Summer 87 inteligent report program             [1-04]
 ASCPOS.ARJ   Cln replacement of ASC(substr(cString,nPosition,1)) [1-11]
 CALC14.ARJ   Cln PoPup Calculator                                [1-08]
 CL5103.ARJ   Cln Report of 5.01 anomaly number 3                 [1-04]
 CL5REP6.ARJ  Cln 5.01 replacement of REPORT command              [1-04]
 CLIP110.ARJ  Cln Clipper Documentor program                      [1-05]
 CLIPLINK.ARJ Cbs Complete text of R.Donnay about linkers         [1-04]
 CLIPSQL.ARJ  Cln Demo of complete SQL library for CLipper        [1-05]
 CLIPWARN.AJ  Cln Semaphore for convert WARNING: into ERRORLEVEL  [1-11]
 CLPFON.ARJ   Cln Set of fonts for EXPAND.LIB from author         [1-03]
 COND.ARJ     Cln Builder of conditional indexes like SUBNTX      [1-03]
 DBSCN2.ARJ   Cln Screen designer generator                       [1-05]
 DIAL.CLN     Cln Dialer with using of FOPEN()                    [1-07]
 DOC111.ARJ   Cln Documentor, newer version                       [1-08]
 ENDADD.ARJ   Cln replacement of incrementing last char of string [1-11]
 GETKEY.ARJ   Cln Input oriented library, wordprocessing          [1-12]
 GSR151.ARJ   Cln Global Search and replace for programmers       [1-07]
 HGLASS.ZIP   Cln Hour glass for indication of index progression  [1-04]
 INDXSL.ARJ   Cln User Fields selection builder for index generate[1-03]
 IOBASYS9.ARJ Cln Demo of S87 library and calling Clipper from C  [1-03]
 IS.ARJ       Cln Several c sources of ISxxxx functions           [1-11]
 JG2.ARJ      Cln Jumping between GET statements in READ          [1-08]
 KF_LOKUP.ARJ Cln Set of program for database relations           [1-07]
 LUTLIB.ARJ   Cln Another Clipper library                         [1-08]
 MK30.ARJ     Cln Mouse library demo version                      [1-03]
 MOVEGETS.ARJ Cln GETSYS change for moving between gets via VALID [1-03]
 NFDESC2.ARJ  Cln NanForum library description list               [1-06]
 NFLIB2.ARJ   Cln NanForum library main file                      [1-06]
 NFSRC2.ARJ   Cln NanForum library Source files                   [1-06]
 NOTATION.ARJ Cln Complete text of article about hungarian notat. [1-04]
 OCLIP.ARJ    Cln Object extension, real (not #define/command)    [1-12]
 OOPSCL5.ARJ  Cln Another version of pseudo objects               [1-07]
 PACKUP.ARJ   Cln ASM source of PACK/UNPACK replacement SCRSAVE.. [1-04]
 PARTIDX3.ARJ Cln Partial indexing                                [1-12]
 PAT1.ARJ     Cln CIX NanForum Libraryy PATCH                     [1-07]
 POPUPCAL.ARJ Cln Popup calender                                  [1-05]
 POWER10.ARJ  Cln French library                                  [1-07]
 PRINTSUP.AJR Cln Low level BIOS routines for printing            [1-11]
 CLIPBBS 1-14                   Page 21                  26 Nov 1991


 QS20F.ARJ    Cln Screen designer, demo, looks very good          [1-11]
 READPW.ARJ   Cln GETSYS change for password invisible reader     [1-03]
 SCANCODE.ARJ Cln Database with scan codes                        [1-07]
 SCRSAVE.ARJ  Cln Screen AntiBurning utility (inactivity snake)   [1-05]
 SHELP50A.ARJ Cln SuperHelp for Clipper                           [1-07]
 SNAP497.ARJ  Cln Beta version of SNAP, partially compatible to 5 [1-12]
 SOUND.ARJ    Cln Multiple TONE() used as one SOUND function      [1-06]
 STATUS.ARJ   Cln Timer interrupt hooked status indicator         [1-12]
 SYMBOL.ARJ   Cln Dumper of symbol tables of Summer87 .EXE        [1-03]
 TBUNIQUE.ARJ Cln Browsing unique without unique index            [1-12]
 TBWHL4.ARJ   Cln WHILE browsing using TBROWSE, well commented    [1-06]
 TICKER.ARJ   Cln Real Time Clock, interrupt driven on screen     [1-12]
 VSIX711.ARJ  Cln Vernon Six Clipper utilities and library        [1-05]
 VSIX800.ARJ  Cln Vernon's library, lot of functions              [1-12]
 WIPEV11.EXE  Cln VERY good screen manipulation library           [1-11]
 
 
 Src can be:
     Cln     File is accesible on ClipperNet
     Cbs     File is accesible in HQ BBS of CLipper BBS Magazine
 

 ------------------------------------------------------------------------------


                            ClipperNet - CLPFON.ARJ
 
 File Name:      PAT2-3.ARJ
 Other Names:
 
 File Size:      8,973 bytes
 File Contents:
                 PAT3.DOC           1808
                 TBWHILE.PRG       16129
                 TBWHILE.OBJ        3438
 
 Patch for NanForum Library number THREE, this time it's improvement of
 TBWHILE, Tbrowsing with While function.

 ------------------------------------------------------------------------------


                            ClipperNet - CLIPPLUS.ZIP
 
 File Name:      CLIPPLUS.ZIP
 Other Names:
 
 File Size:      106,223 bytes
 File Contents:
                 README.1ST           2994       STACK.PRG            1162
                 CLIPEXTN.NG        190244       QUEUE.PRG            1426
                 CLIPEXTN.LIB        29777       TEMPTURE.PRG         3148
                 CLASSDEF.CH           919       TBROWSE.PRG          2444
                 CLIP_USR.CH          4540       Z_DIGIT.PRG           762
                 CLIP_DEV.CH          4927       Z_ODOMET.PRG         3743
                 DIGIT.PRG            1092       Z_MENU.PRG           5152
 CLIPBBS 1-14                   Page 22                  26 Nov 1991


                 ODOMETER.PRG          802       Z_MENUO.PRG           777
                 MENU.PRG             4374       Z_STACK.PRG          1293
                 INHERIT.PRG          4050       Z_QUEUE.PRG          1232
                 MINHERIT.PRG         1997       Z_TBROWS.PRG         8761
                                                 TITLMSTR.DBF          997
 
 Clipper 5.0 (NO really not 5.01) version of Clipper/++ extension. This one
 is another object extension of Clipper with some unique features. I'm
 really wondering which one from all of is better, or more standard or has
 future. Getting tires of many versions of object extensions (which are
 TOTALLY different in ways of use at all!) i'm thinking about wait till
 Nantucket will give up normalized and stabile Objects for Clipper.

 ------------------------------------------------------------------------------


                            ClipperNet - MSWIN.ARJ
 
 File Name:      MSWIN.ARJ
 Other Names:
 
 File Size:      3,297 bytes
 File Contents:
                 MSWINDOW.LST       4235
                 MSWINDOW.OBJ        191
                 MSWINDOW.ASM       1989
                 WTEST.PRG            69
                 MSWINDOW.DOC        436
 
 Function for Clipper 5.0 and Summer87 for returning current state of
 Microsoft Windows (also of course detect if program is working under
 Windows or in DOS session).

 ------------------------------------------------------------------------------


                            ClipperNet - POSTPRNT.ARJ
 
 File Name:      POSTPRNT.ARJ
 Other Names:
 
 File Size:      3,022 bytes
 File Contents:
                 POSTPRNT.DOC       1155
                 POSTPRNT.OBJ       4302
 
 Likable PostScript (tm) emulation function. It will send ASCII text file
 into PS printer with possibility to set some parameters as Font, sizes...

 ------------------------------------------------------------------------------


                            ClipperNet - SHADO.ARJ
 
 File Name:      SHADO.ARJ
 Other Names:
 CLIPBBS 1-14                   Page 23                  26 Nov 1991


 File Size:      1,779 bytes
 File Contents:
                 SHADOW.OBJ          989
                 SHADOW.TXT          886
                 DEMO.PRG            962
 
 Another from millions of SHADOW functions. As usual they are creating
 a shadow on screen which is used for making shadow of windows and boxes.

 ------------------------------------------------------------------------------


                            ClipperNet - BUTTON.ARJ
 
 File Name:      BUTTON.ARJ
 Other Names:
 
 File Size:      3,118 bytes
 File Contents:
                 PE.PRG             2918
                 PE.CH              2129
                 TEST.RMK            156
                 TEST.PRG            534
                 README.TXT          889
 
 Enhacement of get system for allowing to have sime @GET in form of button.
 On the moment when @GET with button is activated, then it will just change
 between 'on' and 'of' values.

 ------------------------------------------------------------------------------


                            ClipperNet - CLPFON.ARJ
 
 File Name:      DTF102.ARJ
 Other Names:
 
 File Size:      11,181 bytes
 File Contents:
                 DEMO.BAT             57
                 DTF.DOC           10891
                 DTF.LIB            8719
                 DTFDEMO.PRG        8171
                 PHONE.DBF           326
                 SYSOP.1ST           809
                 PHONE.DTF           199
                 README.1ST          481
 
 Fully functional version of .DBT files replacement. It's very nice to have
 this i guess, because it can save much of disk space, because DTF is
 replacing .DBT files with ofn .DTF files which are MUCH smaller, FASTER and
 effective for using.

 ------------------------------------------------------------------------------


 CLIPBBS 1-14                   Page 24                  26 Nov 1991


                            ClipperNet - HOTKEY.ARJ
 
 File Name:      HOTKEY.ARJ
 Other Names:
 
 File Size:      1,708 bytes
 File Contents:
                 MAKEHOTS.PRG       2669
 
 Small program for trying to make unique hot key letter for every array
 element.

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 25                  26 Nov 1991


 ==============================================================================
                                    CLIPBBS
 ==============================================================================


                              CLIPBBS Distribution
 
   CLIPBBS is special magazine about CLIPPER and CLIPPERing (or about
   another related problems and xBASE languages). This magazine is for
   free and articles aren't honored. Nobody can make a profit from the
   distribution of this magazine.
 
   CLIPBBS can be freely downloaded and uploaded to any BBS or any other
   public system without changes of original contents or number of files
   in original archive (kind of archive can be changed, but we are sup-
   porting ARJ archive because is best and smallest).
 
   If you are interested in CLIPBBS and would like to become a DISTRIBUTION
   site, contact publisher on 2:285/608@fidonet or 27:1331/4412@signet
   or just call to 31-10-4157141 (BBS, working 18:00->08:00, top is V32b) or
   voice to 31-10-4843870 in both cases asking for DANIEL (Docekal).
 
   Distribution sites:
 
   Clipper BBS Home system
       NETCONSULT BBS, SYSOP Daniel Docekal, phone 31-10-4157141
       Daily 18:00 till 08:00 (GMT+1), sat+sun whole day
       Modem speed 1200, 2400, 9600, 12000, 14400 (V32b)
 
   United Kingdom
       Welsh Wizard, SYSOP Dave Wall, phone 44-656-79477
       Daily whole day, modem speed HST
 
   United States of America
       The Southern Clipper, SYSOP Jerry Pults, phone 1-405-789-2078
       Daily whole day, modem speed HST
 
   Clipper File Distrubution Network (ClipperNet, area CL-DOC))
       Various systems around whole world
 
   Programmers Distribution Network (PDN, area PDNDBASE)
       Various systems around whole world

 ------------------------------------------------------------------------------
 CLIPBBS 1-14                   Page 26                  26 Nov 1991


                      How to write articles in CLIPBBS?
   
   
   Submission of articles to CLIPBBS is really easy:
     Maximum of 78 characters per line, as long or as short as you like
     ASCII text.
     Choose from the list of extension which most describes your text, or
     just name it .ART as ARTicle and send it to publisher or to any
     distribution site via modem to BBS or with mailer as file attach.
     Article will come automatically appear in the next free issue.
   
   Extensions are:
   
           Articles (anything)             .ART
           Software                        .SOF
           News                            .NEW
           Question and Answers            .Q&A
           ANOMALIES and their comments    .ANO
           Letters to editors              .LET
           Advertisement                   .ADV
           Wanted                          .WAN
           Comments                        .CMS
           DUMP from conferences           .DMP
           Clipper Net                     .CLN
           
   That's all at the moment, there will probably be changes later, as the
   magazine evolves. If you have any ideas for a new section of CLIPBBS,
   please tell us, or just write an article about it.
   
   Daniel, publisher

 ------------------------------------------------------------------------------
