home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / clipper / clbbs114.arj / CLBBS114.TXT
Encoding:
Text File  |  1991-11-26  |  65.4 KB  |  1,455 lines

  1.  
  2.  
  3.          ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  4.        ░░▒▒▒░▐▐▐▐▒░▐▐▐▐▒▒▒▒░▐▐▐▐▒▒░▐▐▐▐▐▐▒░▐▐▐▐▐▐▒░▐▐▐▐▐▐▒▒░▐▐▐▐▒▒▒
  5.        ░░▒▒░▐▐░░▐▐▒░▐▐▒▒▒▒▒▒░▐▐▒▒▒▒░▐▐░░▐▐▒░▐▐░░▐▐▒░▐▐░░▐▐░▐▐░░▐▐▒▒
  6.        ░░▒░▐▐▒▒░░▒▒░▐▐▒▒▒▒▒▒░▐▐▒▒▒▒░▐▐▒░▐▐▒░▐▐▒░▐▐▒░▐▐▒░▐▐░▐▐▐▒▒▒▒▒
  7.        ░░▒░▐▐▒▒▒▒▒▒░▐▐▒▒▒▒▒▒░▐▐▒▒▒▒░▐▐▐▐▐▒▒░▐▐▐▐▐▒▒░▐▐▐▐▐▒▒░▐▐▐▒▒▒▒
  8.        ░░▒░▐▐▒▒▒▒▒▒░▐▐▒▒░▐▒▒░▐▐▒▒▒▒░▐▐░░▒▒▒░▐▐░░▐▐▒░▐▐░░▐▐▒▒▒░▐▐▐▒▒
  9.        ░░▒░░▐▐▒▒▐▐▒░▐▐▒░▐▐▒▒░▐▐▒▒▒▒░▐▐▒▒▒▒▒░▐▐▒░▐▐▒░▐▐▒░▐▐░▐▐░░▐▐▒▒
  10.        ░░▒▒░░▐▐▐▐▒░▐▐▐▐▐▐▐▒░▐▐▐▐▒▒░▐▐▐▐▒▒▒░▐▐▐▐▐▐▒░▐▐▐▐▐▐▒▒░▐▐▐▐▒▒▒
  11.        ░░▒▒▒░░░░▒▒░░░░░░░▒▒░░░░▒▒▒░░░░▒▒▒▒░░░░░░▒▒░░░░░░▒▒▒░░░░▒▒▒▒
  12.        ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  13.          ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  14.  
  15.    Volume 1, Number 14                                   26 November 1991
  16.  
  17.                   (c) Daniel Doçekal, All Rights Reserved
  18.  
  19.       The BBS Clipper magazine, published WEEKLY, every FRIDAY
  20.  
  21.       Some of the material used comes from scanning CLIPPER echoes
  22.       which are carried in various BBS throughout the World.
  23.       These Echoes are very often the source of the most often asked
  24.       Questions and Answers about Clipper.
  25.  
  26.       Other material, which is fully signed or abbreviated is the
  27.       copyright of the appropriate persons.
  28.  
  29.       The publisher is not responsible for other authors submissions....
  30.       Published material is not necessarily the opinion of the publisher.
  31.  
  32.       Redaction:
  33.          Publisher...................................Daniel Docekal
  34.          Chief editor ...............................Daniel Docekal
  35.          Language editor .................................Dave Wall
  36.  
  37.  
  38.  
  39.                                Table of Contents
  40.  
  41.  1. EDITORIAL  .............................................................  1
  42.     Second decade editorial  ...............................................  1
  43.  2. ARTICLES  ..............................................................  3
  44.     5.0 FOCUS: Memory Management, Overlay Reloading #1  ....................  3
  45.  3. SOFTWARE  ..............................................................  7
  46.     PATCH of OPTIMIZE coming with QEMM 6.0  ................................  7
  47.     QEMM 6.0 and troubles coming with STEALTH options  .....................  9
  48.  4. Q&A  ................................................................... 16
  49.     Q&A: Desqview and CACHE programs are NOT working properly together  .... 16
  50.     Q&A: Desqview and high speed communication programs  ................... 16
  51.     Q&A: File corruptions under Desqview  .................................. 16
  52.     Q&A: Hangs of system after floppy access in Desqview  .................. 17
  53.     Q&A: Desqview is repeatedly hanging  ................................... 17
  54.  5. ANOMALIES  ............................................................. 18
  55.     ANOMALIES reports and commets  ......................................... 18
  56.     MISC              Miscellaneous clarification/anomalies  ............... 18
  57.     DBCREATE() is killing existing ALIAS  .................................. 18
  58.     KEYBOARD anomaly  ...................................................... 19
  59.  6. CLIPPER NET  ........................................................... 20
  60.  CLIPBBS 1-14       Table of Contents (...)        26 Nov 1991
  61.  
  62.  
  63.     Index of described files in Clipper BBS Magazine  ...................... 20
  64.     ClipperNet - PAT2-3.ARJ  ............................................... 21
  65.     ClipperNet - CLIPPLUS.ZIP  ............................................. 21
  66.     ClipperNet - MSWIN.ARJ  ................................................ 22
  67.     ClipperNet - POSTPRNT.ARJ  ............................................. 22
  68.     ClipperNet - SHADO.ARJ  ................................................ 22
  69.     ClipperNet - BUTTON.ARJ  ............................................... 23
  70.     ClipperNet - DTF102.ARJ  ............................................... 23
  71.     ClipperNet - HOTKEY.ARJ  ............................................... 23
  72.  7. CLIPBBS  ............................................................... 25
  73.     CLIPBBS distribution  .................................................. 25
  74.     CLIPBBS, how to write an article!!!  ................................... 26
  75.  
  76.                                    - - - - -
  77.  CLIPBBS 1-14                   Page 1                   26 Nov 1991
  78.  
  79.  
  80.  ==============================================================================
  81.                                    EDITORIAL
  82.  ==============================================================================
  83.  
  84.  
  85.                            Second decade editorial
  86.  
  87.  
  88.  Hello again. Today i had really nice day, morning appointment with dentist
  89.  left me with toally 'wooden' mouth. Injection of something is very nice to
  90.  not feel paing, but then noone want to speek anymore <grin>. Actually, i'm
  91.  glad for this injection, otherwise it will follow practice from my post--
  92.  socialistic country Czechoslovakia. Just wondering, it has nothing to do
  93.  with ClipperBBS, but how may look dentist in your country? Czechoslovakian
  94.  dentist is:
  95.  
  96.  1) never using any injection of somethign to keep out of pain when making
  97.     holes
  98.  2) never giving you hand and telling you "Hello" and then "Good Bye"..
  99.  3) using seal of metal color which will after one year go to be totally
  100.     black (what a surprise, dentist here in The Netherlands is using seal
  101.     which has similar color as mine tooth)
  102.  4) making from small hole in tooth something like toilet hole <grin>
  103.  5) forbiding you to eat at least for four hours, otherwise your seal
  104.     will be lost (suprising again, i could eat and drink immediately)
  105.  6) making next appointment somewhere after few months before it is
  106.     totally busy....
  107.  7) never promising that something will be beter (here in Holland it
  108.     seems like that repaired tooth is really repaired)
  109.  8) sometime not repairing correct tooth, mostly is just one left
  110.     or one right from wrong one.
  111.  
  112.  And now, what you country? Not, stop. Let's take a look to something
  113.  different.  Can we not see any similarity with above and Nantucker/Clipper?
  114.  Do you think NOT? I will show you. Nantucket is:
  115.  
  116.  1) Never using any way of solid help to keep your pain with Internal errors
  117.     out of your mind...
  118.  
  119.  2) Will only get money, give Clipper and then chance to receive any
  120.     material from them is somewhere around zero
  121.  
  122.  3) release Clipper 5.0 which looks nice, but after using is absolutely
  123.     out of possibilites to use :-)
  124.  
  125.  4) (difficult, this point) filling your disk with millions of norton guides,
  126.     error reports, internal error reports, fixes and tricks and never giving
  127.     any paper...
  128.  
  129.  5) answering to your question with nice sentence "it is known problem, you
  130.     have to wait to next version or make some workarounds, but we don't know
  131.     which, way few days (will become weeks) and we will maybe know", or any
  132.     different view, forbiding you forever to include your Clipper between
  133.     normal programming languages and to cooperate directly from "C" to
  134.     Clipper...
  135.  
  136.  CLIPBBS 1-14                   Page 2                   26 Nov 1991
  137.  
  138.  
  139.  6) don't know if is totally busy, but time hole between Clipper 5.0 and
  140.     Clipper 5.01 was unbelievably long
  141.  
  142.  7) Never promising anything because of points 1->6
  143.  
  144.  8) not so much listening to problems and giving tips and fixes about
  145.     something different that was needed and trying to tell, that for example
  146.     INCREMENTAL linking is working, never mind than must receive thousands
  147.     of complains about /INC not working...
  148.  
  149.  And now, WARNING please, maybe in your country are difference practices, but
  150.  from here (The Netherlands) it seems like is written <grin>.
  151.  
  152.     Seriously now, it's up to you if it's fitting as was written, this
  153.     editorial is just result of one vist on Dentist. Second visit is coming
  154.     soon (next thursday :-) <grin>), because my tooths are really very bad
  155.     now, because of :
  156.  
  157.     1) i was VERY afraid to go to dentist (because of point 1 till 8)
  158.     2) repairment was very bad (because of point 1 till 8)
  159.  
  160.  Cheers
  161.     Daniel
  162.  
  163.  ------------------------------------------------------------------------------
  164.  CLIPBBS 1-14                   Page 3                   26 Nov 1991
  165.  
  166.  
  167.  ==============================================================================
  168.                                     ARTICLES
  169.  ==============================================================================
  170.  
  171.  
  172.              5.0 FOCUS: Memory Management, Overlay Reloading #1
  173.                             by Roger Donnay
  174.  
  175.  
  176.  As a long-time user of RTLINK, I feel compelled to share with you some
  177.  insights on how to get much more from this great linker than can be
  178.  derived from the Clipper documentation.   My particular area of interest
  179.  is linking technology - Why?  Because I learned long ago that time
  180.  invested in learning the "art" of linking will pay dividends equal or
  181.  greater than those derived from learning new programming techniques.
  182.  
  183.  Let me give you an example of what I mean.   Let's say you are running
  184.  into a memory wall in your application and you simply must find a way
  185.  to remove 40k from your root .EXE.   I can only guess what you are
  186.  thinking now:  "Wait a minute, what wall is he talking about?  I thought
  187.  that 5.0's VMM system and dynamic overlaying system were designed to
  188.  make Clipper work in virtually any DOS memory environment."  It is true
  189.  that 5.0 has memory management features built-in which far surpass those
  190.  in Summer 87, but that doesn't mean you will never run out of memory.
  191.  What it does mean is that you now have many more options available for the
  192.  management of memory, but even under 5.0, MEMORY STILL MUST BE MANAGED,
  193.  and you, the 5.0 programmer, have just been promoted to manager.
  194.  
  195.  Getting back to our example - The task is to manufacture 40k of memory
  196.  in an existing application.  I have been faced with this task many
  197.  times.  I could probably give you a list of a hundred changes you could
  198.  make to your code to get back this 40k of memory - but I'd much rather
  199.  show you one or two changes you can make to your link file.   The first
  200.  of such proposed changes utilizes the RELOAD feature of RTLINK.
  201.  
  202.  This article is the first in a series designed to help you manage
  203.  memory under Clipper 5.0.   Some of what I will cover is already
  204.  documented in the 5.0 manual, but most of it is not.
  205.  
  206.  
  207.  RELOADABLE OVERLAYS
  208.  
  209.  Overlay Reloading is a very important "undocumented" feature of the RTLINK
  210.  linker supplied with Clipper-5.0.  I have been RELOADING objects from the
  211.  Summer 87 Clipper libraries for years, so when I received my copy of
  212.  Clipper-5.0, the first thing I attempted to do was to overlay some of the
  213.  larger C/ASM modules in the Clipper libraries using the RELOAD command in
  214.  my linker script file.  The Nantucket development team had the foresight
  215.  to insure that their C and ASM compiler assigned a UNIQUE name to each
  216.  Clipper C/ASM object in the Clipper libraries, thus allowing, you, the
  217.  Clipper programmer to use both the "undocumented" RELOAD command and
  218.  MODULE command in your .LNK script files.
  219.  
  220.  So what are "Reloadable Overlays"?  These are a form of STATIC overlay
  221.  in which segments of code are placed into overlay sections that occupy
  222.  the same memory space at runtime, however the "calling  module" is
  223.  CLIPBBS 1-14                   Page 4                   26 Nov 1991
  224.  
  225.  
  226.  automatically "reloaded" into memory when returning from the
  227.  "called module".
  228.  
  229.  Reloadable overlay segments usually look like this in your link file:
  230.  
  231.  RELOAD FAR 200
  232.  # area 1
  233.  BEGINAREA
  234.    SECTION FILE A
  235.    SECTION FILE B
  236.    SECTION FILE C
  237.  ENDAREA
  238.  
  239.  # area 2
  240.  BEGINAREA
  241.    SECTION FILE D
  242.    SECTION FILE E
  243.    SECTION FILE F
  244.  ENDAREA
  245.  
  246.  I supposed you are now thinking: "What a waste of time.  I happen to know
  247.  that RTLINK automatically overlays all Clipper code - this guy has been
  248.  sniffing glue again."  Well, you are half right.  RTLINK does use an
  249.  automatic overlaying system called "dynamic pages" for all code which
  250.  has been compiled by the Clipper-compiler, but it does not automatically
  251.  overlay code written in C or ASM, and this is the predominant class of
  252.  code in the Clipper libraries.   Not all Clipper applications are
  253.  going to need to use these reloadable static overlays, but if your
  254.  application relies heavily on third-party libraries written in C/ASM
  255.  or you use DBEDIT(), MEMOEDIT(), TBROWSE(), Report Forms, or other
  256.  large modules from the Clipper libraries, then it is recommended that
  257.  you learn this technique.
  258.  
  259.  The main advantage of "reloadable overlays" over conventional "static
  260.  overlays" is that you are never in danger of "lockup" in the event that
  261.  a procedure or function in FILE A calls a function or procedure in FILE B
  262.  because FILE A will be reloaded into memory on return from FILE B.  If
  263.  you graduated from Summer 87 and used PLINK86's static overlaying system,
  264.  you know exactly what I am talking about.   If you use the RELOAD command
  265.  with RTLINK, and assign a large enough value to the RELOAD stack, you
  266.  will never again experience call stack corruption and computer lock-up.
  267.  Make sure when you use the RELOAD command that you always use it as
  268.  follows:
  269.  
  270.     RELOAD FAR <stack size>
  271.  
  272.  where the <stack size> is the amount of memory in hex bytes to use for
  273.  saving addresses.  My experience is that most applications will run just
  274.  fine with a stack size of 200.  If your application does recursive
  275.  nesting, however, you may need to increase the stack size.  Recursive
  276.  nesting is described as follows:  Procedure A calls Procedure B which
  277.  calls Procedure A which calls Procedure B, etc, etc, etc.  Each time
  278.  a procedure is called, its return address is "pushed" onto the stack, and
  279.  each time you return to the calling procedure the address is "popped"
  280.  from the stack.  In the above example, if this recursive condition were
  281.  allowed to continue for a large number of iterations, the stack would be
  282.  CLIPBBS 1-14                   Page 5                   26 Nov 1991
  283.  
  284.  
  285.  overrun and the program may crash.
  286.  
  287.  Although your application will not crash using RELOAD, it may slow down
  288.  a bit if overlay segments are not structured properly, because each time
  289.  an overlay is reloaded the application must go to disk.  In the above
  290.  example if a function in FILE A repetitively calls a function in FILE B
  291.  then your application will be very "disk intensive" and will run slowly.
  292.  If a function in FILE A repetitively calls a function in FILE D there will
  293.  be no slowing at all because both modules will remain in memory.
  294.  
  295.  Overlay management of C/ASM code with "reloadable overlays" is less
  296.  time-consuming and more reliable than simple conventional "static
  297.  overlays" and provides an additional advantage of allowing more modules
  298.  to be overlayed, thereby saving additional memory usage.  Overlay managers
  299.  which provide "RELOAD" commands usually limit the automatic reloading to
  300.  either "NEAR" or "FAR" calls.  The Clipper-compiler mixes both near and
  301.  far calls therefore Clipper-compiled code cannot be overlayed in this
  302.  manner.  Even if you include a Clipper-compiled object in a static
  303.  overlay it will automatically be converted to a "dynamic" overlay by
  304.  RTLINK/5.0 and the command will be ignored.
  305.  
  306.  
  307.  PLACING CLIPPER LIBRARY MODULES INTO RELOADABLE OVERLAYS
  308.  
  309.  Refer to the below script file for an example of how to use Static
  310.  reloadable overlays to reduce memory usage in your Clipper-5.0
  311.  applications.  This link file creates an overlay area for overlaying the
  312.  larger modules in the Clipper libraries which are not likely to call each
  313.  other recursively, therefore you will probably notice very little
  314.  difference in speed performance yet you will get up to 40K more memory
  315.  overhead depending on how much of the Clipper libraries your application
  316.  uses.
  317.  
  318.  You may get a "warning" message during link time if your application does
  319.  not call one of the modules referenced in an overlay area.  In the event
  320.  this happens, simply remove that module from the link file.  For example,
  321.  if you are not using any TBROWSE objects or DBEDIT() remove the following
  322.  line:
  323.  
  324.    SECTION MODULE D:\S89\EDIT\TBROWSE.C
  325.  
  326.  
  327.  # Example of using RELOADABLE overlays with the
  328.  # Clipper-5.0 version of RTLINK
  329.  
  330.  FI <my files>
  331.  LIB <my libs>
  332.  LIB \CLIPPER5\LIB\extend
  333.  LIB \CLIPPER5\LIB\clipper
  334.  LIB \CLIPPER5\LIB\terminal
  335.  LIB \CLIPPER5\LIB\dbfntx
  336.  OUTPUT <my .EXE>
  337.  VERBOSE
  338.  
  339.  # Add this portion to your existing .LNK script file
  340.  RELOAD FAR 200
  341.  CLIPBBS 1-14                   Page 6                   26 Nov 1991
  342.  
  343.  
  344.  BEGINAREA
  345.    SECTION MODULE D:\S89\EDIT\MEMOEDIT.C
  346.            MODULE D:\S89\MEMO\MEMOTRAN.C
  347.    SECTION MODULE D:\S89\MEMO\MEMOREAD.C
  348.            MODULE D:\S89\MEMO\MEMOWRIT.C
  349.            MODULE D:\S89\MEMO\MEMOLINE.C
  350.            MODULE D:\S89\MEMO\MLCOUNT.C
  351.            MODULE D:\S89\MEMO\MLPOS.C
  352.    SECTION MODULE D:\S89\EDIT\TBROWSE.C
  353.    SECTION MODULE D:\S89\EDIT\ACHOICE.C
  354.            MODULE D:\S89\ARRAY\ASCAN.C
  355.            MODULE D:\S89\ARRAY\ASORT.C
  356.            MODULE D:\S89\ARRAY\ARRAY.C
  357.            MODULE D:\S89\ARRAY\DIRECTRY.C
  358.    SECTION MODULE D:\S89\DBCMD\DBSTRUCT.C
  359.            MODULE D:\S89\DBCMD\DBCREATE.C
  360.            MODULE D:\S89\DBCMD\JOINLIST.C
  361.            MODULE D:\S89\DBF\SORTOF.C
  362.    SECTION MODULE D:\S89\TERM\GETHELP.C
  363.  ENDAREA
  364.  
  365.  Another important undocumented feature of RTLINK is the MODULE command.
  366.  
  367.  The MODULE command is very useful in that it allows RTLINK to place
  368.  "modules" from libraries into overlays.  When a compiler creates an
  369.  .OBJect file it also assigns a "module" name for the linker.  The Clipper
  370.  compiler assigns the same name as the .OBJ file, however many compilers
  371.  will assign the name of the SOURCE file as the module name including
  372.  drive letters and directories.   You can organize your projects by
  373.  placing all your C/ASM objects in libraries with a library manager such
  374.  as LIB.EXE or PLIB86.EXE then by using the SECTION MODULE <module>
  375.  command in your link file you can place any module into any overlay area.
  376.  
  377.  Example:
  378.  
  379.  LIB mylib
  380.  BEGINAREA
  381.    SECTION MODULE myfileA,myfileB
  382.    SECTION MODULE myfileC
  383.    SECTION MODULE myfileD
  384.  ENDAREA
  385.  
  386.  The MODULE <module> command in RTLINK requires that the <module> exists
  387.  in one of the declared libraries and that the name is "unique" to that
  388.  module otherwise the command will be ignored and the module will be
  389.  linked into the root memory area.  This is not a problem with Clipper-5.0
  390.  because the modules are given unique, but very long names.
  391.  
  392.  In my next article, I will show you how to use the RELOAD and MODULE
  393.  commands to overlay C/ASM code from popular third-party libraries such
  394.  as FUNCKY, PROCLIP, dGE, and FLIPPER.
  395.  
  396.  ------------------------------------------------------------------------------
  397.  CLIPBBS 1-14                   Page 7                   26 Nov 1991
  398.  
  399.  
  400.  ==============================================================================
  401.                                     SOFTWARE
  402.  ==============================================================================
  403.  
  404.  
  405.                    PATCH of OPTIMIZE coming with QEMM 6.0
  406.  
  407.  Subject:  Patching Optimize 2.0 to resolve problems where, under some
  408.  circumstances, Optimize will forget during its final phase that it required
  409.  the Squeeze feature.
  410.  
  411.  Background: Many TSRs and device drivers take up more memory when they
  412.  initialize than they require when they are resident. Optimize's Squeeze
  413.  feature allows such programs, when they do not use EMS, to load partially
  414.  into the page frame provided that they shrink down to a size that won't leave
  415.  part of the program in the page frame.  Under QEMM-386, the Squeeze feature
  416.  can also make temporary use of ROM areas for loading high, provided that
  417.  the ROM is not used while the program is initializing.
  418.  
  419.  Under some circumstances when Optimize 2.0 reaches the "ideal" result - that
  420.  is, nothing in conventional memory and nothing in the largest high RAM region
  421.  - and it required Squeeze to reach this result, Optimize will forget during
  422.  its final phase that it required Squeeze.  There is no workaround other than
  423.  running Optimize with the /NOSQF and /NOSQT parameters to disable Squeeze.
  424.  The problem should, however, not occur very often.  The symptom of this
  425.  problem is that a program that is supposed to be loaded into high memory
  426.  evokes the LOADHI message "Not enough room to load <program> high.  Loading
  427.  low:" on the final phase of OPTIMIZE.
  428.  
  429.  This patch, which resolves the above problem, only works on Optimize version
  430.  2.00, which has a date of 8/23/91 or 8/28/91 and comes with either QEMM-386
  431.  V6.00 or DESQview-386 V2.40.  Earlier and later versions of Optimize do not
  432.  exhibit this problem and do not require this patch.
  433.  
  434.  ***************************************************
  435.  1)    Change to your QEMM directory.
  436.  
  437.  2)    Copy the original OPTIMIZE.COM file so that if you make a
  438.  mistake you will be able to restore from a good copy.  Type
  439.  
  440.                    COPY OPTIMIZE.COM OPTIMIZE.OLD
  441.  
  442.  at the DOS prompt.
  443.  
  444.  3)  In order for DEBUG to process Optimize correctly, you need to
  445.  rename it.  At the DOS prompt, type
  446.  
  447.                          REN OPTIMIZE.COM X
  448.  
  449.  4)  Now, load the file called X into DEBUG by typing
  450.  
  451.                               DEBUG X
  452.  
  453.  at the DOS prompt.  Make sure that DEBUG is in your path or that
  454.  you precede DEBUG with the path where DOS can find it.  If all
  455.  works out, you should see a hyphen (-) for a prompt.  This is the DEBUG
  456.  CLIPBBS 1-14                   Page 8                   26 Nov 1991
  457.  
  458.  
  459.  prompt.
  460.  
  461.  5)  Now make sure that the registers in the microprocessor are in
  462.  the correct state by typing R at the DEBUG prompt.  You should
  463.  get something like this:
  464.  
  465.  AX=0000  BX=0001  CX=15C5  DX=0000  SP=FFEE  BP=0000  SI=0000 DI=0000
  466.  DS=xxxx  ES=xxxx  SS=xxxx  CS=xxxx  IP=0100   NV UP EI PL NZ NA PO NC
  467.  xxxx:0100 4D            DEC     BP
  468.  
  469.  Make sure that BX is equal to 0001 and that CX is equal to 15C5.
  470.  If BX and CX are not equal to these values, then you should not
  471.  continue with the patch.  Type
  472.  
  473.                                  Q
  474.  
  475.  at the DEBUG prompt to quit out of DEBUG if BX is not 0001 and CX is not
  476.  15C5.
  477.  
  478.  
  479.  6)  If the BX and CX values are correct, type
  480.  
  481.                     S CS:100 FFFF e8 e9 e3 72 05
  482.  
  483.  at the DEBUG prompt.  This will return a number with the form of xxxx:5C45.
  484.  If the number that returns does not have a 5C45 after the colon, DO
  485.  NOT APPLY THIS PATCH.  If the wrong number returns, type
  486.  
  487.                     Q
  488.  
  489.  at the DEBUG prompt to quit out of DEBUG.
  490.  
  491.  
  492.  
  493.  7)  If the number that returns is xxxx:5C45, type
  494.  
  495.                                E 5C48
  496.  
  497.  DEBUG should respond with
  498.  
  499.                            xxxx:5C48 72.
  500.  
  501.  8)  Now type
  502.  
  503.                                  EB
  504.  
  505.  at the DEBUG prompt and hit the Enter key.  This will make the only change
  506.  that you need to make in the file.
  507.  
  508.  9)  Now save your work by typing
  509.  
  510.                                  W
  511.  
  512.  at the DEBUG prompt.    It should say
  513.  
  514.                         Writing 115C5 bytes
  515.  CLIPBBS 1-14                   Page 9                   26 Nov 1991
  516.  
  517.  
  518.                                  or
  519.                          Writing 15C5 bytes
  520.  
  521.  depending on the version of DOS you are using.
  522.  
  523.  10) Now you can quit DEBUG by typing
  524.  
  525.                                  Q
  526.  
  527.  at the DEBUG prompt.  This will drop you back to the DOS prompt.
  528.  
  529.  11) Rename X back to OPTIMIZE.COM by typing
  530.  
  531.                          REN X OPTIMIZE.COM
  532.  
  533.  at the DOS prompt.
  534.  
  535.  You should be able to run Optimize successfully now.
  536.  
  537.  --------------------------------------------------
  538.  
  539.  If Optimize fails after you perform this patch, you can recover
  540.  your backup of Optimize by typing
  541.  
  542.                    COPY OPTIMIZE.OLD OPTIMIZE.COM
  543.  
  544.  at the DOS prompt.
  545.  
  546.  You may then wish to try the above procedure again, in case a mistake was
  547.  made.
  548.  
  549.  
  550.               * * *   E N D   O F   F I L E    * * *
  551.  
  552.  ------------------------------------------------------------------------------
  553.  
  554.  
  555.               QEMM 6.0 and troubles coming with STEALTH options
  556.  
  557.       This document discusses how to diagnose and cure problems
  558.  occasioned by the use of the Stealth feature of QEMM-386, version 6.
  559.  All users should review the readq.me file that comes with QEMM-386,
  560.  version 6 for additional information.
  561.  
  562.  FIRST STEP
  563.       The first step is to ascertain whether Stealth is involved with the
  564.  problem.  Remove the Stealth parameter (ST:M or ST:F) from the QEMM-386
  565.  line of the config.sys.  Reboot the computer and try to duplicate the
  566.  problem.  If the problem still happens then Stealth is not causing the
  567.  problem and you must address the problem by the means explained in the
  568.  troubleshooting section of the QEMM-386 manual.
  569.  
  570.  SECTION 1
  571.  
  572.      SECOND STEP
  573.           If Stealth is involved in the problem restore the Stealth
  574.  CLIPBBS 1-14                   Page 10                  26 Nov 1991
  575.  
  576.  
  577.      parameter (ST:M) and add XST=F000.  Reboot the computer.  If this
  578.      works, go to the third step;  if this does not work, go to Section
  579.      Two. On this step the QEMM-386 line of the config.sys should look
  580.      something like:
  581.  
  582.            device=c:\qemm\qemm386.sys ram st:m xst=f000
  583.  
  584.      THIRD STEP
  585.           If XST=F000 solves your problem replace it with X=F000-FFFF,
  586.      reboot and try again.  The QEMM-386 line of the config.sys should
  587.      look something like:
  588.  
  589.            device=c:\qemm\qemm386.sys ram st:m x=f000-ffff
  590.  
  591.           If this works, add the parameter FSTC to the qemm line, thusly:
  592.  
  593.            device=c:\qemm\qemm386.sys ram st:m x=f000-ffff fstc
  594.  
  595.      and reboot.  If this works continue;  if this does not work (and
  596.      FSTC may not work in all circumstances) then remove the FSTC
  597.      parameter and reboot with the previous QEMM-386 line.  See the
  598.      section about FSTC below for an explanation of FSTC.
  599.           In either case, enter Manifest and look at the QEMM-
  600.      386/Analysis screen.  Look at the last line:  It should look
  601.      something like this:
  602.  
  603.                      Fn00 IIII IIII IIII IIOO
  604.  
  605.      The portions of the address space with the O in them are being
  606.      accessed directly.  Some program or piece of hardware is trying to
  607.      read the contents of the ROM here directly, not merely access them
  608.      through interrupts.  This portion of the address space must be
  609.      allowed to be accessed directly.  This is done by excluding QEMM-386
  610.      from mapping this area.  In this case the target region is FE00-
  611.      FFFF.  The appropriate Exclude is X=FE00-FEFF. The correct QEMM-
  612.      386.SYS line of the config.sys is:
  613.  
  614.           device=c:\qemm\qemm386.sys ram st:m x=fe00-ffff
  615.  
  616.      This Exclude allows Stealth to do its job and costs you only 8K of
  617.      high address space.
  618.  
  619.      FOURTH STEP
  620.           If XST=F000 solves your problem while X=F000-FFFF does not then
  621.      you should try using ST:F instead of ST:M.  You may get more high
  622.      ram with ST:F than with ST:M XST=F000.
  623.  
  624.  SECTION TWO
  625.  
  626.       This section is only for users with video ROM.  Hercules-compatible
  627.  monochrome and CGA systems do not have video ROM and thus this section
  628.  does not apply.  Some machines have their video ROM elsewhere, usually
  629.  E000-E7FF.  Such users should use E000 (or wherever their video ROM
  630.  begins) instead of C000.
  631.  
  632.      FIFTH STEP
  633.  CLIPBBS 1-14                   Page 11                  26 Nov 1991
  634.  
  635.  
  636.           If XST=F000 does not solve your problem then try XST=C000. The
  637.      QEMM-386 line of the config.sys should look like:
  638.  
  639.           device=c:\qemm\qemm386.sys ram st:m xst=c000
  640.  
  641.      If XST=C000 does not work, go to Section Three.  If XST=C000 does
  642.      work, go to the next step.
  643.  
  644.      SIXTH STEP
  645.           If XST=C000 solves the problem then try placing the page frame
  646.      at C000.  Do this only if the entire C segment is available to put
  647.      the page frame in.  The QEMM-386 line of the config.sys should look
  648.      like:
  649.  
  650.           device=c:\qemm\qemm386.sys ram st:m fr=c000
  651.  
  652.      If this works then this may be acceptable solution.  All the address
  653.      space in which high ram can be created is being used in this
  654.      configuration.  If this step does not work or, if you cannot put the
  655.      page frame at C000, go to the seventh step.
  656.  
  657.      SEVENTH STEP
  658.           If XST=C000 solves the problem but you do not want to (or
  659.      cannot) put the page frame at C000 then try the parameter
  660.      FASTINT10:N, where "N" tells QEMM-386 to allow the video ROM's own
  661.      code to be used.  By default QEMM-386 replaces some of the video
  662.      ROM's code with its own video code.  This parameter tells QEMM to
  663.      use the ROM's code.  The QEMM-386 line of the config.sys should look
  664.      like:
  665.  
  666.           device=c:\qemm\qemm386.sys ram st:m fastint10:n
  667.  
  668.      If this works then all ROMs are being Stealthed.  You may choose to
  669.      try the eighth step as an alternative though.  If this does not
  670.      work, go to the next step.  There is a further discussion of
  671.      FASTINT10 below.
  672.  
  673.      EIGHTH STEP
  674.           If XST=C000 solves the problem but FR=C000 or FASTINT10:N does
  675.      not (or you cannot put the page frame at C000 or do not want to use
  676.      FASTINT10:N) then replace XST=C000 with X=C000-C7FF.  The QEMM-386
  677.      line of the config.sys should look like:
  678.  
  679.           device=c:\qemm\qemm386.sys ram st:m x=c000-c7ff
  680.  
  681.      If this works, add the parameter FSTC to the QEMM-386 line, thusly:
  682.  
  683.           device=c:\qemm\qemm386.sys ram st:m x=c000-c7ff fstc
  684.  
  685.      and reboot.  If this works continue;  if this does not work (and
  686.      FSTC may not work in all circumstances) then remove the FSTC
  687.      parameter and reboot with the previous QEMM-386 line.  See the
  688.      section about FSTC below for an explanation.
  689.           In either case, enter Manifest, go to the QEMM-386/Analysis
  690.      screen, and look at the Cn00 line.  It should look something like
  691.      this:
  692.  CLIPBBS 1-14                   Page 12                  26 Nov 1991
  693.  
  694.  
  695.                         Cn00 OIII IIII OOOO OOOO
  696.  
  697.      This indicates that the first 4K region of the C segment, in the
  698.      video ROM, is being accessed directly.  This portion of the address
  699.      space must be Excluded when QEMM-386 is Stealthing.  The appropriate
  700.      QEMM-386 line in the config.sys is:
  701.  
  702.           device=c:\qemm\qemm386.sys ram st:m x=c000-c0ff
  703.  
  704.  SECTION THREE
  705.  
  706.       NINTH STEP
  707.            On some machines there are other ROMs that can be Stealthed;
  708.      often these are disk ROMs.  The same procedure:  trying XST=??00,
  709.      then replacing it with the appropriate Exclude of the old kind
  710.      (X=??00-!!FF) to see if the problem is related to Stealthing or just
  711.      not having some portion of the ROM's address space directly
  712.      accessible, can be used.  The trick of making the page frame begin
  713.      at the beginning of the disk ROM may also work here as well.  If
  714.      XST=??00 solves your problem, try replacing it with FR=??00,
  715.      presuming that there is a 64K portion of the address space free
  716.      beginning at ??00 and that ?? is a multiple of 16.  If some portion
  717.      of the address space must be Excluded for Stealth to work you should
  718.      check Analysis with the FSTC and X=??00-!!FF parameters on the QEMM
  719.      line.
  720.  
  721.      TENTH STEP
  722.            Use XST=F000, XST=C000, XST=??00, and simultaneously for all
  723.      ROMs being Stealthed.  Then replace the XSTs one by one with the
  724.      appropriate regular Exclude (X=F000-FFFF, X=C000-C7FF, X=??00-
  725.      !!FF...), look at the QEMM-386/Analysis screen of Manifest and
  726.      discover what portions of the address space need to be directly
  727.      available.
  728.  
  729.      ELEVENTH STEP
  730.           If ST:M does not work try ST:F instead.  If ST:F does not work
  731.      you should try ST:F XST=C000 (and XST=??00) for other Stealthed ROMs
  732.      other than the one(s) overlain by the page frame.
  733.  
  734.      TWELFTH STEP
  735.           If none of these steps solve the problem please pin down
  736.      exactly what program is failing (and at what point), and file a
  737.      report with Quarterdeck.
  738.  
  739.  INTERESTING QUESTIONS
  740.  
  741.  WHAT IS FASTINT10:N?
  742.       QEMM-386, when Stealthing a video ROM, replaces some of the video
  743.  ROM's code with replacement code written by Quarterdeck.  This
  744.  replacement code is suitable for most video cards.  The FASTINT10:N
  745.  (which may be abbreviated F10:N) parameter tells QEMM-386 not to use its
  746.  own replacement code but the literal code of the video ROM.  This in no
  747.  way limits the amount of high RAM Stealth creates and may be acceptable
  748.  solution for those users who need it.  It should only be necessary on
  749.  unusual video cards.  If placing the page frame at the beginning of the
  750.  video card's ROM works or if a small regular Exclude also solves the
  751.  CLIPBBS 1-14                   Page 13                  26 Nov 1991
  752.  
  753.  
  754.  problem you may choose to use this solution instead.
  755.  
  756.  WHAT IS FSTC?
  757.       The purpose of the FSTC parameter is to make the Analysis procedure
  758.  accurate.  Some system and video ROMs may not function properly with the
  759.  FSTC parameter.  If this is the case on your system you will have to
  760.  perform the Analysis procedure without the FSTC parameter. However, you
  761.  should be aware in this case that some of the Exclude statements that
  762.  Analysis prompts you to use may not be necessary.  You can try reducing
  763.  these Excludes on a trial-and-error basis if you wish.
  764.       When QEMM-386 Stealths a ROM certain tables may have to be stored
  765.  by QEMM-386 in its own data area.  This uses a few kilobytes of high
  766.  RAM.  When a ROM is being Stealthed but the address in which the ROM
  767.  resides is Excluded (as with X=C000-C7FF) then QEMM-386 cleverly figures
  768.  out that it does not need to make copies of these tables in its own data
  769.  area so it saves this memory by not making copies of the tables.  This
  770.  means that when you do Exclude the portion(s) of the ROM where these
  771.  tables are stored the ROM will be accessed directly though it would not
  772.  be if it were not Excluded.  This will cause Analysis to report that a
  773.  portion of the address space is OK when Excluded even though it would
  774.  not be accessed directly were it not Excluded.
  775.       FSTC (FORCESTEALTHTABLECOPY) forces QEMM-386 to make copies of
  776.  these tables so that inappropriate Excludes are not recommended for the
  777.  above reason.  FSTC should only be used when you are testing a portion
  778.  of a ROMs address space for direct access by Excluding the whole ROM.
  779.  It is not an appropriate parameter for a final configuration.
  780.  
  781.  WHAT ARE ADVANCED DISK FEATURES?
  782.       The BIOS has a set of function calls intended for use by
  783.  multitasking programs.  These are Int 15, functions 90 and 91.  The
  784.  system ROM or disk ROM may issue the Int 15, fn 90 call while it is
  785.  waiting for the disk controller to read or write a sector, allowing
  786.  other programs to execute during this wait.  When the sector is
  787.  ready, the disk interrupt handler issues an Int 15, Fn 91, signaling
  788.  the multitasking program that the disk information is ready to be
  789.  processed by the system or disk ROM.  Some disk caches hook this call to
  790.  allow your system to go ahead and execute your current program while the
  791.  system or disk ROM is waiting for its requested sector.  Whereas these
  792.  caches preserve the stack and register state for the BIOS and the
  793.  application when doing this pseudo-multitasking, they do not preserve
  794.  the mapping of the page frame.  Therefore, if the BIOS uses the page
  795.  frame itself (as does Stealth), this could generate conflicts and system
  796.  failures.  Since no known disk cache does the proper page frame
  797.  preservation, QEMM automatically suppresses INT 15, function 90 calls
  798.  from the BIOS, effectively disabling advanced disk features.  Caches
  799.  that save and restore the page frame when using advanced disk features
  800.  can use a programming interface to QEMM-386 to reenable advanced disk
  801.  features.
  802.       You may defeat QEMM-386's defeating of this feature with the
  803.  VIRTUALHDIRQ:N (VHI:N) parameter on the QEMM-386 line of the config.sys.
  804.  If your cache has these "Advanced Features" and does not save and
  805.  restore the page frame you will crash or corrupt data on the cached
  806.  drive(s).
  807.  
  808.  WHAT IF I LOAD A DRIVER THAT USES ROM BEFORE QEMM-386?
  809.       If you want to load a device driver before QEMM-386 and it uses a
  810.  CLIPBBS 1-14                   Page 14                  26 Nov 1991
  811.  
  812.  
  813.  ROM then QEMM-386 can still Stealth this ROM if you load the driver
  814.  HOOKROM.SYS before this driver.  Here is an example:
  815.  
  816.       device=c:\qemm\hookrom.sys
  817.       device=c:\????????.sys
  818.       device=c:\qemm\qemm386.sys ram st:m
  819.  
  820.  WHY DOES MY SYSTEM SETUP NO LONGER COME UP WITH ST:M?
  821.       On machines with a built-in system setup program in the BIOS ROM
  822.  that can be popped up at any time Stealth may make this feature
  823.  inaccessible after you have booted.  This is because the setup program
  824.  accesses the ROM directly.  In order for it to work after QEMM-386 has
  825.  been loaded you must Exclude the portion of the address space where it
  826.  is stored.  On most machines this is in F000-F7FF or thereabouts.  You
  827.  may decide that it is better to use the system setup only on boot and be
  828.  able to use this portion of the address space for high RAM when you are
  829.  running.  This is the way many systems are these days and you must
  830.  reboot to implement the changes anyway so you may consider this a fair
  831.  trade.
  832.       Machines with a setup program that loads as a regular program may
  833.  not present this problem.
  834.  
  835.  WHAT IS GOING ON?
  836.       With ST:M Stealth is moving out of the address space all ROMs
  837.  accessed by means of interrupts (you can see what interrupts are being
  838.  handled by what ROMs in the First Meg/Interrupts screen of Manifest when
  839.  you are not Stealthing.)  When these interrupts are asserted, QEMM-386
  840.  puts the ROM code that services the interrupt into the page frame. With
  841.  ST:F Stealth is allowing the page frame to share the address space used
  842.  by the ROM, making the underlying ROM code available in the page frame
  843.  when an interrupt pointing into the ROM is asserted.
  844.  
  845.  HOW CAN IT FAIL?
  846.        The Stealth technology relies on the practice of using the code in
  847.  ROMs only by means of interrupts.  With the exceptions listed below when
  848.  the code in a ROM is accessed directly the program or hardware using
  849.  this code (or information) will find high RAM there instead with ST:M
  850.  and will malfunction.  Although this is not common it does happen.
  851.  Sometimes programs look for identification information:  For video cards
  852.  this usually happens in the bottom 4K; for system BIOSes this usually
  853.  happens in FE00-FEFF.  Most users for whom Stealth fails can recover
  854.  almost all the high RAM Stealth can create with small Excludes of this
  855.  kind.
  856.       Exceptions:
  857.  
  858.      1) QEMM-386 does not map High RAM into the last 64 bytes of the
  859.      system BIOS ROM because they are commonly accessed directly.
  860.      Accesses here do not cause Stealth a problem.
  861.  
  862.      2)  When a ROM accesses itself directly then it should work IF the page
  863.      frame begins at this ROM's beginning address.  There are some video cards
  864.      and disk controllers that fail because the video ROM (disk ROM) does not
  865.      tolerate relocation.  The ready cure for this symptom is to put the page
  866.      frame at C000 (or whatever is the beginning of the appropriate video or
  867.      disk ROM) so that when an interrupt that points into the video ROM (disk
  868.      ROM) is asserted, and QEMM restores the contents of the video ROM (disk
  869.  CLIPBBS 1-14                   Page 15                  26 Nov 1991
  870.  
  871.  
  872.      ROM) into the page frame, the ROM code can access itself where it expects
  873.      to find itself; this is the purpose of step 6 of this method.
  874.  
  875.      3) Direct accesses of one ROM to another work with ST:F.
  876.  
  877.  Disk caches that write directly to and read directly from the page frame
  878.  cause Stealth to fail unless the DISKBUFFRAME=?? (DBF=??) is used.
  879.  
  880.  Stealth relies on there being interrupts pointing into a ROM in order to
  881.  make it a target for Stealthing.  If there is a ROM in the address space
  882.  that QEMM-386 cannot detect as being used then it will not be Stealthed.
  883.  This may happen for some disk ROMs and for devices that use the ROM only
  884.  upon initialization.  If there is a ROM without an interrupt pointing
  885.  into it it is a suspect for being unused.  You should use the Analysis
  886.  feature of QEMM-386 to discover if this ROM is being used at all.  If it
  887.  is not then the address space it occupies may be reclaimed with an
  888.  INCLUDE.
  889.  
  890.  SUMMARY
  891.       The Stealth technology has been exhaustively tested but the wide
  892.  variety of software and hardware in the PC world has surprises in it for
  893.  every program.  The actual Stealthing of interrupts is very successful.
  894.  The most common failure is due to programs (or other ROMs) trying to
  895.  access a portion of the ROM directly, rather than by means of interrupt.
  896.   For this to work the target region of this access must be in the
  897.  address space at the time of access. This can be achieved by an
  898.  appropriate exclude of the old kind, usually at a cost of only 4K or 8K
  899.  of the additional high RAM Stealth is creating; see steps 3 through 11
  900.  for a procedure to figure these Excludes out.  If the video ROM or
  901.  adaptor ROM is the target ROM of a problem then placing the page frame
  902.  over the video ROM or adaptor ROM may work; see step 6.  The "Advanced
  903.  disk features" that some disk caches use are incompatible with Stealth.
  904.  QEMM-386 disables these by default whenever possible if Stealth is used.
  905.  Some disk caches write directly to the page frame. Such caches should be
  906.  told to use extended memory or the DISKBUFFRAME=?? (DBF=??) should be
  907.  used with QEMM-386; see step 2.  If you have a problem intractable by
  908.  any of these means Quarterdeck would like to hear about it.
  909.  
  910.  
  911.  ------------------------------------------------------------------------------
  912.  CLIPBBS 1-14                   Page 16                  26 Nov 1991
  913.  
  914.  
  915.  ==============================================================================
  916.                                       Q&A
  917.  ==============================================================================
  918.  
  919.  
  920.  PROBLEM:   I can't get a caching program to work properly with DesqView.
  921.  
  922.  SYMPTOMS:  After loading PC-Cache version 6, the cache does not work if you
  923.             enter DesqView directly.  If you use manifest to look at First Meg
  924.             Programs, PC-CACHE is not listed.
  925.  
  926.  SOLUTION:  I was not able to get PC-Cache version 6 to work correctly on my
  927.             system.  Either switch back to version 5.5 or get a shareware copy
  928.             of ADCACHE.  ADCACHE was written with QEMM, 386-to-the-max, and
  929.             DesqView in mind.  It is fast, small, and compatible.
  930.  
  931.             NOTE 1:  I have also used Super PC-Kwik with success.  It is larger
  932.                      than ADCACHE, but it is somewhat faster.
  933.  
  934.             NOTE 2:  Central Point has released a new version of PC-Cache.
  935.                      This file is available on The Bertha BBS as PCTOL6UD.ZIP.
  936.                      I have not tried the new version because I had previously
  937.                      switched to Super PC-Kwik.
  938.  
  939.             NOTE 3:  The current version of PC-Cache is 6.04.  To find out what
  940.                      version you have, look at the time stamp of the file.
  941.  
  942.  ------------------------------------------------------------------------------
  943.  
  944.  
  945.  PROBLEM:   System hangs when using high speed communications within DesqView.
  946.  
  947.  SYMPTOMS:  When running high speed (>9600 baud) communications, the system
  948.             will hang intermittently.
  949.  
  950.  SOLUTION:  Switch to buffered (16550) serial ports.  On my system, I was able
  951.             to move to 19200 baud with no hangs by switching to the buffered
  952.             ports.  You may also try setting "Optimize Communications" to Y in
  953.             the DesqView Setup area.  Be cautious with this setting as it can
  954.             cause some problems as well.  It is also helpful to upgrade to
  955.             DesqView 2.26 as there is better support for high speed
  956.             communications.
  957.  
  958.             NOTE 1:  I have now gone to 38400 baud on my system using the X00
  959.                      FOSSIL driver.  Things seem to be operating smoothly.
  960.  
  961.             NOTE 2:  Please note that not all 16550 chips are created equal.
  962.                      The preferred chip is a National Semiconductor NS16550AFN.
  963.                      This is a 40-pin dip.  Be wary of Western Digital WD16C550
  964.                      chips which reportedly have FIFO problems with low-speed
  965.                      communications (2400 baud or less).
  966.  
  967.  ------------------------------------------------------------------------------
  968.  
  969.  
  970.  PROBLEM:   System hangs and file corruption occur when running under DesqView.
  971.  CLIPBBS 1-14                   Page 17                  26 Nov 1991
  972.  
  973.  
  974.  SYMPTOMS:  Intermittent system hangs when operating with DesqView.  Sometimes
  975.             files will be corrupted.  Usually unable to reproduce the problem
  976.             consistently.
  977.  
  978.  SOLUTION:  Check your interrupts!  Interrupt conflicts can cause all sorts of
  979.             strange problems.  I still see people recommend using IRQ2 on an AT
  980.             class machine.  IRQ2 is a cascaded interrupt for IRQ8 through IRQ15
  981.             and cannot be used.  A lot of us upgraded from an XT and are used
  982.             to setting our systems up to use IRQ2.  I moved my bus mouse card
  983.             from an XT to an AT and had all sorts of problems until I changed
  984.             the interrupt from IRQ2 to something that was not being used.
  985.  
  986.  ------------------------------------------------------------------------------
  987.  
  988.  
  989.  PROBLEM:   System hangs after doing floppy access.
  990.  
  991.  SYMPTOMS:  The system will lock up after doing floppy access.  This is not
  992.             consistent, but usually occurs after writing to the floppy.  Floppy
  993.             reads do not seem to be a problem.
  994.  
  995.  SOLUTION:  I noticed this problem with some regularity on my system.  I got to
  996.             the point where I realized that the hang was only occurring after a
  997.             write to the floppy.  Reads did not appear to trigger the hang.  I
  998.             was using PCTools 6.0 to move files from the floppy to the hard
  999.             drive.  After a file is copied, it is deleted from the floppy in
  1000.             order to complete the move.  During this process, a hang would
  1001.             sometimes occur.  This could be exacerbated by ejecting the floppy
  1002.             prematurely to cause an error.  My system would hang in the middle
  1003.             of this error message.
  1004.  
  1005.             The solution to this problem was to be found in the command line
  1006.             for my cache.  I use Super PC-Kwik.  I had set up the cache to
  1007.             ignore drives A and B with the /-A and /-B switches.  But when I
  1008.             looked at the parameters for the cache I realized that diskette
  1009.             writes were still enabled (/D+).  I changed the command line to
  1010.             disable diskette writes (/D-) and the problem has not occurred
  1011.             since.  It is unclear whether this is a problem on other caches.
  1012.  
  1013.  ------------------------------------------------------------------------------
  1014.  
  1015.  
  1016.  PROBLEM:   Repeated system hangs when using DesqView.
  1017.  
  1018.  SYMPTOMS:  System will hang intermittently and with no warning.
  1019.  
  1020.  SOLUTION:  Check the setting of "Manage Printer Contention" in the DesqView
  1021.             Setup area.  Numerous hangs are caused by having this set to "Y".
  1022.             Set it to "N".  You must make sure not to have two applications
  1023.             printing at the same time.
  1024.  
  1025.             NOTE 1:  The solution that I use for this problem is to use a
  1026.                      buffer on the printer.  Mine is 512K.  That way I can
  1027.                      print and the buffer takes all the data.  Then I can close
  1028.                      the window and print something else from another
  1029.                      application immediately.
  1030.  
  1031.  ------------------------------------------------------------------------------
  1032.  CLIPBBS 1-14                   Page 18                  26 Nov 1991
  1033.  
  1034.  
  1035.  ==============================================================================
  1036.                                    ANOMALIES
  1037.  ==============================================================================
  1038.  
  1039.  
  1040.                       ANOMALIES and their comments
  1041.  
  1042.  This part of Clipper BBS Magazine is dedicated to all discovered 
  1043.  anomalies and comments about them in Clipper products. Because 
  1044.  Nantucket is still unable to give own bug and anomalies reports (as 
  1045.  actually did in past with Summer 87 version) is very handy to have 
  1046.  results of many investigations done on many user places. I'm also
  1047.  doing my own investigatings, because i'm always very good when someting 
  1048.  has hidden problems. Everything what i buy will first show all problems 
  1049.  and then all normal things. This amazing part of my live is sometime 
  1050.  making me crazy, but for testing of programs it's great <grin>.
  1051.  
  1052.  Daniel
  1053.  
  1054.  
  1055.  
  1056.  ------------------------------------------------------------------------------
  1057.  
  1058.  
  1059.           MISC              Miscellaneous clarification/anomalies.
  1060.  
  1061.    2) MEMVARBLOCK() (NG Function Description)
  1062.       MEMVARBLOCK() cannot be used to create set-get blocks for LOCAL
  1063.       or STATIC variables.
  1064.  
  1065.  ------ COMMENT -------
  1066.  
  1067.       MEMVARBLOCK() cannot be really used for LOCAL or STATIC, because THEY
  1068.       CANNOT EXIST ON RUNTIME LIKE a _NAME_. Names are exist ONLY from
  1069.       PRIVATEs, PUBLICs and from Functions. STATIC or LOCAL are just Memory
  1070.       Address and NOT a NAME (SYMBOL). It's very often mistake of beginners
  1071.       in Clipper that they are mixuping a terms. This is also enough
  1072.       documented in coming .NGuides for Clipper!
  1073.  
  1074.  .DD.
  1075.  
  1076.  ------------------------------------------------------------------------------
  1077.  
  1078.  
  1079.  DBCREATE() is killing existing ALIAS
  1080.  
  1081.  
  1082.  DBCREATE() is killing existing alias in case when database created with
  1083.  this function has the same name as existing alias. IT's ONLY killing of
  1084.  ALIAS, because database stays opened and can be accessed by number of
  1085.  area, but not by ALIAS.
  1086.  
  1087.  Test program:
  1088.  
  1089.      SELECT 6
  1090.      USE ( "\ncom\a\qbase.dbf" ) ALIAS QUEUE
  1091.  CLIPBBS 1-14                   Page 19                  26 Nov 1991
  1092.  
  1093.  
  1094.      ? QUEUE->PRIORITIES
  1095.      SELECT 2
  1096.      dbcreate( "QUEUE.dbf", { {"FELD1","C",18,0} } )
  1097.      ? ""
  1098.      ? QUEUE->PRIORITIES
  1099.  
  1100.  Second "? QUEUE->PRIORITIES" is giving error because alias QUEUE doesn't
  1101.  exist longer. CLD is showing opened database, but all QUEUE-> aliased
  1102.  operation are UNDEFINED.
  1103.  
  1104.  ------------------------------------------------------------------------------
  1105.  
  1106.  
  1107.  KEYBOARD anomaly
  1108.  
  1109.  
  1110.  String passed to keyboard and contains ";" character is transfered correctly
  1111.  with exception of ";" character which is transfered to CR (ENTER).
  1112.  
  1113.  Easily it can be demonstrated by using:
  1114.  
  1115.  KEYBOARD "Hello;boys"
  1116.  Memoedit of some string.....
  1117.  
  1118.  .DD.
  1119.  
  1120.  ------------------------------------------------------------------------------
  1121.  CLIPBBS 1-14                   Page 20                  26 Nov 1991
  1122.  
  1123.  
  1124.  ==============================================================================
  1125.                                   CLIPPER NET
  1126.  ==============================================================================
  1127.  
  1128.  
  1129.  
  1130.  Following is COMPLETE list of all published file descriptions in Clipper
  1131.  BBS magazine in previous numbers. Purpose of this index list is to allow
  1132.  anybody find needed file descriptions in growing number of described files.
  1133.  Short description after name will give first possible close image about
  1134.  file. Number enclosed in "[]" will mean number of Clipper BBS magazine.
  1135.  
  1136.  ┌─────────────┬────┬────────────────────────────────────────────────┬──────┐
  1137.  │FileName     │Src │Description                                     │Where │
  1138.  ├─────────────┼────┼────────────────────────────────────────────────┼──────┤
  1139.  │ACCESS.ARJ   │Cln │Source of speed testing program                 │[1-06]│
  1140.  │ACH2TB.ARJ   │Cln │Convert ACHOICE to TBROWSE                      │[1-05]│
  1141.  │ACHOO2.ARJ   │Cln │Replacement of ACHOICE with GET possibilites    │[1-06]│
  1142.  │ADHOC302.ARJ │Cln │Summer 87 inteligent report program             │[1-04]│
  1143.  │ASCPOS.ARJ   │Cln │replacement of ASC(substr(cString,nPosition,1)) │[1-11]│
  1144.  │CALC14.ARJ   │Cln │PoPup Calculator                                │[1-08]│
  1145.  │CL5103.ARJ   │Cln │Report of 5.01 anomaly number 3                 │[1-04]│
  1146.  │CL5REP6.ARJ  │Cln │5.01 replacement of REPORT command              │[1-04]│
  1147.  │CLIP110.ARJ  │Cln │Clipper Documentor program                      │[1-05]│
  1148.  │CLIPLINK.ARJ │Cbs │Complete text of R.Donnay about linkers         │[1-04]│
  1149.  │CLIPSQL.ARJ  │Cln │Demo of complete SQL library for CLipper        │[1-05]│
  1150.  │CLIPWARN.AJ  │Cln │Semaphore for convert WARNING: into ERRORLEVEL  │[1-11]│
  1151.  │CLPFON.ARJ   │Cln │Set of fonts for EXPAND.LIB from author         │[1-03]│
  1152.  │COND.ARJ     │Cln │Builder of conditional indexes like SUBNTX      │[1-03]│
  1153.  │DBSCN2.ARJ   │Cln │Screen designer generator                       │[1-05]│
  1154.  │DIAL.CLN     │Cln │Dialer with using of FOPEN()                    │[1-07]│
  1155.  │DOC111.ARJ   │Cln │Documentor, newer version                       │[1-08]│
  1156.  │ENDADD.ARJ   │Cln │replacement of incrementing last char of string │[1-11]│
  1157.  │GETKEY.ARJ   │Cln │Input oriented library, wordprocessing          │[1-12]│
  1158.  │GSR151.ARJ   │Cln │Global Search and replace for programmers       │[1-07]│
  1159.  │HGLASS.ZIP   │Cln │Hour glass for indication of index progression  │[1-04]│
  1160.  │INDXSL.ARJ   │Cln │User Fields selection builder for index generate│[1-03]│
  1161.  │IOBASYS9.ARJ │Cln │Demo of S87 library and calling Clipper from C  │[1-03]│
  1162.  │IS.ARJ       │Cln │Several c sources of ISxxxx functions           │[1-11]│
  1163.  │JG2.ARJ      │Cln │Jumping between GET statements in READ          │[1-08]│
  1164.  │KF_LOKUP.ARJ │Cln │Set of program for database relations           │[1-07]│
  1165.  │LUTLIB.ARJ   │Cln │Another Clipper library                         │[1-08]│
  1166.  │MK30.ARJ     │Cln │Mouse library demo version                      │[1-03]│
  1167.  │MOVEGETS.ARJ │Cln │GETSYS change for moving between gets via VALID │[1-03]│
  1168.  │NFDESC2.ARJ  │Cln │NanForum library description list               │[1-06]│
  1169.  │NFLIB2.ARJ   │Cln │NanForum library main file                      │[1-06]│
  1170.  │NFSRC2.ARJ   │Cln │NanForum library Source files                   │[1-06]│
  1171.  │NOTATION.ARJ │Cln │Complete text of article about hungarian notat. │[1-04]│
  1172.  │OCLIP.ARJ    │Cln │Object extension, real (not #define/command)    │[1-12]│
  1173.  │OOPSCL5.ARJ  │Cln │Another version of pseudo objects               │[1-07]│
  1174.  │PACKUP.ARJ   │Cln │ASM source of PACK/UNPACK replacement SCRSAVE.. │[1-04]│
  1175.  │PARTIDX3.ARJ │Cln │Partial indexing                                │[1-12]│
  1176.  │PAT1.ARJ     │Cln │CIX NanForum Libraryy PATCH                     │[1-07]│
  1177.  │POPUPCAL.ARJ │Cln │Popup calender                                  │[1-05]│
  1178.  │POWER10.ARJ  │Cln │French library                                  │[1-07]│
  1179.  │PRINTSUP.AJR │Cln │Low level BIOS routines for printing            │[1-11]│
  1180.  CLIPBBS 1-14                   Page 21                  26 Nov 1991
  1181.  
  1182.  
  1183.  │QS20F.ARJ    │Cln │Screen designer, demo, looks very good          │[1-11]│
  1184.  │READPW.ARJ   │Cln │GETSYS change for password invisible reader     │[1-03]│
  1185.  │SCANCODE.ARJ │Cln │Database with scan codes                        │[1-07]│
  1186.  │SCRSAVE.ARJ  │Cln │Screen AntiBurning utility (inactivity snake)   │[1-05]│
  1187.  │SHELP50A.ARJ │Cln │SuperHelp for Clipper                           │[1-07]│
  1188.  │SNAP497.ARJ  │Cln │Beta version of SNAP, partially compatible to 5 │[1-12]│
  1189.  │SOUND.ARJ    │Cln │Multiple TONE() used as one SOUND function      │[1-06]│
  1190.  │STATUS.ARJ   │Cln │Timer interrupt hooked status indicator         │[1-12]│
  1191.  │SYMBOL.ARJ   │Cln │Dumper of symbol tables of Summer87 .EXE        │[1-03]│
  1192.  │TBUNIQUE.ARJ │Cln │Browsing unique without unique index            │[1-12]│
  1193.  │TBWHL4.ARJ   │Cln │WHILE browsing using TBROWSE, well commented    │[1-06]│
  1194.  │TICKER.ARJ   │Cln │Real Time Clock, interrupt driven on screen     │[1-12]│
  1195.  │VSIX711.ARJ  │Cln │Vernon Six Clipper utilities and library        │[1-05]│
  1196.  │VSIX800.ARJ  │Cln │Vernon's library, lot of functions              │[1-12]│
  1197.  │WIPEV11.EXE  │Cln │VERY good screen manipulation library           │[1-11]│
  1198.  └─────────────┴────┴────────────────────────────────────────────────┴──────┘
  1199.  
  1200.  Src can be:
  1201.      Cln     File is accesible on ClipperNet
  1202.      Cbs     File is accesible in HQ BBS of CLipper BBS Magazine
  1203.  
  1204.  
  1205.  ------------------------------------------------------------------------------
  1206.  
  1207.  
  1208.                             ClipperNet - CLPFON.ARJ
  1209.  
  1210.  File Name:      PAT2-3.ARJ
  1211.  Other Names:
  1212.  
  1213.  File Size:      8,973 bytes
  1214.  File Contents:
  1215.                  PAT3.DOC           1808
  1216.                  TBWHILE.PRG       16129
  1217.                  TBWHILE.OBJ        3438
  1218.  
  1219.  Patch for NanForum Library number THREE, this time it's improvement of
  1220.  TBWHILE, Tbrowsing with While function.
  1221.  
  1222.  ------------------------------------------------------------------------------
  1223.  
  1224.  
  1225.                             ClipperNet - CLIPPLUS.ZIP
  1226.  
  1227.  File Name:      CLIPPLUS.ZIP
  1228.  Other Names:
  1229.  
  1230.  File Size:      106,223 bytes
  1231.  File Contents:
  1232.                  README.1ST           2994       STACK.PRG            1162
  1233.                  CLIPEXTN.NG        190244       QUEUE.PRG            1426
  1234.                  CLIPEXTN.LIB        29777       TEMPTURE.PRG         3148
  1235.                  CLASSDEF.CH           919       TBROWSE.PRG          2444
  1236.                  CLIP_USR.CH          4540       Z_DIGIT.PRG           762
  1237.                  CLIP_DEV.CH          4927       Z_ODOMET.PRG         3743
  1238.                  DIGIT.PRG            1092       Z_MENU.PRG           5152
  1239.  CLIPBBS 1-14                   Page 22                  26 Nov 1991
  1240.  
  1241.  
  1242.                  ODOMETER.PRG          802       Z_MENUO.PRG           777
  1243.                  MENU.PRG             4374       Z_STACK.PRG          1293
  1244.                  INHERIT.PRG          4050       Z_QUEUE.PRG          1232
  1245.                  MINHERIT.PRG         1997       Z_TBROWS.PRG         8761
  1246.                                                  TITLMSTR.DBF          997
  1247.  
  1248.  Clipper 5.0 (NO really not 5.01) version of Clipper/++ extension. This one
  1249.  is another object extension of Clipper with some unique features. I'm
  1250.  really wondering which one from all of is better, or more standard or has
  1251.  future. Getting tires of many versions of object extensions (which are
  1252.  TOTALLY different in ways of use at all!) i'm thinking about wait till
  1253.  Nantucket will give up normalized and stabile Objects for Clipper.
  1254.  
  1255.  ------------------------------------------------------------------------------
  1256.  
  1257.  
  1258.                             ClipperNet - MSWIN.ARJ
  1259.  
  1260.  File Name:      MSWIN.ARJ
  1261.  Other Names:
  1262.  
  1263.  File Size:      3,297 bytes
  1264.  File Contents:
  1265.                  MSWINDOW.LST       4235
  1266.                  MSWINDOW.OBJ        191
  1267.                  MSWINDOW.ASM       1989
  1268.                  WTEST.PRG            69
  1269.                  MSWINDOW.DOC        436
  1270.  
  1271.  Function for Clipper 5.0 and Summer87 for returning current state of
  1272.  Microsoft Windows (also of course detect if program is working under
  1273.  Windows or in DOS session).
  1274.  
  1275.  ------------------------------------------------------------------------------
  1276.  
  1277.  
  1278.                             ClipperNet - POSTPRNT.ARJ
  1279.  
  1280.  File Name:      POSTPRNT.ARJ
  1281.  Other Names:
  1282.  
  1283.  File Size:      3,022 bytes
  1284.  File Contents:
  1285.                  POSTPRNT.DOC       1155
  1286.                  POSTPRNT.OBJ       4302
  1287.  
  1288.  Likable PostScript (tm) emulation function. It will send ASCII text file
  1289.  into PS printer with possibility to set some parameters as Font, sizes...
  1290.  
  1291.  ------------------------------------------------------------------------------
  1292.  
  1293.  
  1294.                             ClipperNet - SHADO.ARJ
  1295.  
  1296.  File Name:      SHADO.ARJ
  1297.  Other Names:
  1298.  CLIPBBS 1-14                   Page 23                  26 Nov 1991
  1299.  
  1300.  
  1301.  File Size:      1,779 bytes
  1302.  File Contents:
  1303.                  SHADOW.OBJ          989
  1304.                  SHADOW.TXT          886
  1305.                  DEMO.PRG            962
  1306.  
  1307.  Another from millions of SHADOW functions. As usual they are creating
  1308.  a shadow on screen which is used for making shadow of windows and boxes.
  1309.  
  1310.  ------------------------------------------------------------------------------
  1311.  
  1312.  
  1313.                             ClipperNet - BUTTON.ARJ
  1314.  
  1315.  File Name:      BUTTON.ARJ
  1316.  Other Names:
  1317.  
  1318.  File Size:      3,118 bytes
  1319.  File Contents:
  1320.                  PE.PRG             2918
  1321.                  PE.CH              2129
  1322.                  TEST.RMK            156
  1323.                  TEST.PRG            534
  1324.                  README.TXT          889
  1325.  
  1326.  Enhacement of get system for allowing to have sime @GET in form of button.
  1327.  On the moment when @GET with button is activated, then it will just change
  1328.  between 'on' and 'of' values.
  1329.  
  1330.  ------------------------------------------------------------------------------
  1331.  
  1332.  
  1333.                             ClipperNet - CLPFON.ARJ
  1334.  
  1335.  File Name:      DTF102.ARJ
  1336.  Other Names:
  1337.  
  1338.  File Size:      11,181 bytes
  1339.  File Contents:
  1340.                  DEMO.BAT             57
  1341.                  DTF.DOC           10891
  1342.                  DTF.LIB            8719
  1343.                  DTFDEMO.PRG        8171
  1344.                  PHONE.DBF           326
  1345.                  SYSOP.1ST           809
  1346.                  PHONE.DTF           199
  1347.                  README.1ST          481
  1348.  
  1349.  Fully functional version of .DBT files replacement. It's very nice to have
  1350.  this i guess, because it can save much of disk space, because DTF is
  1351.  replacing .DBT files with ofn .DTF files which are MUCH smaller, FASTER and
  1352.  effective for using.
  1353.  
  1354.  ------------------------------------------------------------------------------
  1355.  
  1356.  
  1357.  CLIPBBS 1-14                   Page 24                  26 Nov 1991
  1358.  
  1359.  
  1360.                             ClipperNet - HOTKEY.ARJ
  1361.  
  1362.  File Name:      HOTKEY.ARJ
  1363.  Other Names:
  1364.  
  1365.  File Size:      1,708 bytes
  1366.  File Contents:
  1367.                  MAKEHOTS.PRG       2669
  1368.  
  1369.  Small program for trying to make unique hot key letter for every array
  1370.  element.
  1371.  
  1372.  ------------------------------------------------------------------------------
  1373.  CLIPBBS 1-14                   Page 25                  26 Nov 1991
  1374.  
  1375.  
  1376.  ==============================================================================
  1377.                                     CLIPBBS
  1378.  ==============================================================================
  1379.  
  1380.  
  1381.                               CLIPBBS Distribution
  1382.  
  1383.    CLIPBBS is special magazine about CLIPPER and CLIPPERing (or about
  1384.    another related problems and xBASE languages). This magazine is for
  1385.    free and articles aren't honored. Nobody can make a profit from the
  1386.    distribution of this magazine.
  1387.  
  1388.    CLIPBBS can be freely downloaded and uploaded to any BBS or any other
  1389.    public system without changes of original contents or number of files
  1390.    in original archive (kind of archive can be changed, but we are sup-
  1391.    porting ARJ archive because is best and smallest).
  1392.  
  1393.    If you are interested in CLIPBBS and would like to become a DISTRIBUTION
  1394.    site, contact publisher on 2:285/608@fidonet or 27:1331/4412@signet
  1395.    or just call to 31-10-4157141 (BBS, working 18:00->08:00, top is V32b) or
  1396.    voice to 31-10-4843870 in both cases asking for DANIEL (Docekal).
  1397.  
  1398.    Distribution sites:
  1399.  
  1400.    Clipper BBS Home system
  1401.        NETCONSULT BBS, SYSOP Daniel Docekal, phone 31-10-4157141
  1402.        Daily 18:00 till 08:00 (GMT+1), sat+sun whole day
  1403.        Modem speed 1200, 2400, 9600, 12000, 14400 (V32b)
  1404.  
  1405.    United Kingdom
  1406.        Welsh Wizard, SYSOP Dave Wall, phone 44-656-79477
  1407.        Daily whole day, modem speed HST
  1408.  
  1409.    United States of America
  1410.        The Southern Clipper, SYSOP Jerry Pults, phone 1-405-789-2078
  1411.        Daily whole day, modem speed HST
  1412.  
  1413.    Clipper File Distrubution Network (ClipperNet, area CL-DOC))
  1414.        Various systems around whole world
  1415.  
  1416.    Programmers Distribution Network (PDN, area PDNDBASE)
  1417.        Various systems around whole world
  1418.  
  1419.  ------------------------------------------------------------------------------
  1420.  CLIPBBS 1-14                   Page 26                  26 Nov 1991
  1421.  
  1422.  
  1423.                       How to write articles in CLIPBBS?
  1424.    
  1425.    
  1426.    Submission of articles to CLIPBBS is really easy:
  1427.      Maximum of 78 characters per line, as long or as short as you like
  1428.      ASCII text.
  1429.      Choose from the list of extension which most describes your text, or
  1430.      just name it .ART as ARTicle and send it to publisher or to any
  1431.      distribution site via modem to BBS or with mailer as file attach.
  1432.      Article will come automatically appear in the next free issue.
  1433.    
  1434.    Extensions are:
  1435.    
  1436.            Articles (anything)             .ART
  1437.            Software                        .SOF
  1438.            News                            .NEW
  1439.            Question and Answers            .Q&A
  1440.            ANOMALIES and their comments    .ANO
  1441.            Letters to editors              .LET
  1442.            Advertisement                   .ADV
  1443.            Wanted                          .WAN
  1444.            Comments                        .CMS
  1445.            DUMP from conferences           .DMP
  1446.            Clipper Net                     .CLN
  1447.            
  1448.    That's all at the moment, there will probably be changes later, as the
  1449.    magazine evolves. If you have any ideas for a new section of CLIPBBS,
  1450.    please tell us, or just write an article about it.
  1451.    
  1452.    Daniel, publisher
  1453.  
  1454.  ------------------------------------------------------------------------------
  1455.