home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / UTILITY / SYSTEM / TLB_V200.ZIP / LASTBYTE.DOC < prev    next >
Encoding:
Text File  |  1992-04-12  |  153.2 KB  |  3,782 lines

  1.  
  2.  
  3.         
  4.  
  5.  
  6.  
  7.  
  8.                         THE LAST BYTE MEMORY MANAGER (tm)
  9.  
  10.  
  11.                        An Upper Memory Manager for MS-DOS
  12.  
  13.  
  14.  
  15.  
  16.                                   Version 2.00
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                               Copyright (C) 1990-92
  24.  
  25.                                All Rights Reserved
  26.  
  27.  
  28.                                        by
  29.  
  30.  
  31.                               KEY SOFTWARE PRODUCTS
  32.  
  33.                                 440 Ninth Avenue
  34.                           Menlo Park, California 94025
  35.  
  36.                                  (415) 364-9847
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.         The Last Byte Memory Manager is a trademark of Key Software Products.
  52.          MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation.
  53.              DR-DOS is a trademark of Digital Research Incorporated.
  54.                       4DOS is a trademark of J.P. Software.
  55.                      Hyperdisk is a trademark of HyperWare.
  56.             Other company trademarks are used with the company name.
  57.  
  58.  
  59.  
  60.         
  61.  
  62.  
  63.                         THE LAST BYTE MEMORY MANAGER (tm)
  64.  
  65.  
  66.                                 Table of Contents
  67.  
  68.  
  69.         CHAPTER 1 - INTRODUCTION        ...........................    4
  70.            1.1  Important Advantages       ........................    4
  71.  
  72.         CHAPTER 2 - SYSTEM REQUIREMENTS       .....................    6
  73.            2.1  Supported Hardware       ..........................    6
  74.            2.2  Checking Compatibility Using CHIPSET     ..........    8
  75.  
  76.         CHAPTER 3 - DISTRIBUTION FILES       ......................   11
  77.  
  78.         CHAPTER 4 - GETTING STARTED       .........................   13
  79.            4.1  Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     13
  80.            4.2  Mapping Upper Memory with HIGHMEM    ..............   15
  81.            4.3  Running the LICENSE Program     ...................   16
  82.  
  83.         CHAPTER 5 - DETAILED DESCRIPTIONS       ...................   17
  84.            5.1  LASTBYTE.SYS        ...............................   17
  85.            5.2  HIGHAPND.EXE and HIGHAPND.SYS      ................   23
  86.            5.3  HIGHBFRS.EXE (MS-DOS 3 only)     ..................   25
  87.            5.4  HIGHDISK.SYS        ...............................   27
  88.            5.5  HIGHDRVR.SYS        ...............................   28
  89.            5.6  HIGHEMS3.SYS and HIGHEMS4.SYS      ................   28
  90.            5.7  HIGHENV.EXE        ................................   29
  91.            5.8  HIGHFILE.EXE        ...............................   31
  92.            5.9  HIGHHOLE.EXE        ...............................   31
  93.            5.10  HIGHINST.EXE        ..............................   32
  94.            5.11  HIGHKEY.EXE        ...............................   33
  95.               5.11.1  Options        ..............................   33
  96.               5.11.2  Editing Commands       ......................   33
  97.            5.12  HIGHMARK.EXE        ..............................   35
  98.            5.13  HIGHMEM.EXE        ...............................   36
  99.            5.14  HIGHSPLR.EXE        ..............................   36
  100.            5.15  HIGHTSR.EXE        ...............................   37
  101.               5.15.1  The /NOENV Option      ......................   38
  102.            5.16  HIGHUMM.SYS        ...............................   39
  103.            5.17  HIGHUNDO.EXE        ..............................   40
  104.  
  105.         CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    .........   41
  106.            6.1  The /SIZE Option      .............................   41
  107.               6.1.1  Measuring Load Requirements Using "/SIZE"    .   41
  108.               6.1.2  Achieving Best Fit Using "/SIZE:n1"    .......   42
  109.               6.1.3  Borrowing Initialization Memory Using "/SIZE:n   42
  110.            6.2  The /LOW Option      ..............................   42
  111.            6.3  The /RESTRICT Option      .........................   43
  112.            6.4  The /!NOPAUSE Option      .........................   43
  113.            6.5  Specifying Command Line Options with Indirect Files   43
  114.            6.6  Using the DOS=F000:32 Option     ..................   44
  115.            6.7  Video Display RAM above 640k    ...................   45
  116.            6.8  Video Adapter Bios ROMs     .......................   46
  117.  
  118.  
  119.  
  120.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  121.  
  122.  
  123.                         THE LAST BYTE MEMORY MANAGER (tm)
  124.  
  125.  
  126.            6.9  LASTBYTE.SYS and Expanded Memory     ..............   46
  127.            6.10  Fine-Tuning your Adapter Hardware Configuration      47
  128.  
  129.         CHAPTER 7 - USE WITH OTHER SOFTWARE     ...................   49
  130.            7.1  Microsoft's FASTOPEN and MODE programs    .........   49
  131.            7.2  Microsoft's SHARE program      ....................   49
  132.            7.3  Microsoft's MS-DOS 5.0      .......................   50
  133.               7.3.1  Using DEVICEHIGH and LOADHIGH     ............   51
  134.               7.3.2  Using HIGHDRVR and HIGHTSR     ...............   51
  135.            7.4  Microsoft's Windows 3.0      ......................   52
  136.               7.4.1  Modifying the Windows SYSTEM.INI File    .....   52
  137.               7.4.2  Positioning an EMS Page Frame    .............   53
  138.               7.4.3  "Unsupported Data Configuration"      ........   53
  139.               7.4.4  HIGHMEM and Windows 386 Enhanced Mode   ......   54
  140.               7.4.5  HIGHDISK and Windows 386 Enhanced Mode   .....   54
  141.            7.5  HyperWare's HyperDisk       .......................   54
  142.            7.6  J.P. Software's 4DOS      .........................   55
  143.            7.7  David Hamilton's BUFFIT      ......................   55
  144.            7.8  Charles Lazo's WAS      ...........................   56
  145.  
  146.         APPENDIX 1 - HOW TO REACH US     ..........................   57
  147.  
  148.         APPENDIX 2 - ACKNOWLEDGEMENTS        ......................   58
  149.  
  150.         APPENDIX 3 - CHIPSET LIMITATIONS       ....................   59
  151.  
  152.         APPENDIX 4 - LICENSED DISTRIBUTORS       ..................   61
  153.  
  154.         APPENDIX 5 - LIMITED WARRANTY       .......................   63
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  181.  
  182.  
  183.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               4
  184.  
  185.  
  186.                         CHAPTER 1 - INTRODUCTION        
  187.  
  188.  
  189.         The  Last  Byte  Memory  Manager is a collection of software that
  190.         can  provide  up to 384k of additional memory to your computer in
  191.         the  upper  memory  area between 640k and 1 meg.  It does this by
  192.         using  left-over  shadow  ram  memory,  existing fixed read/write
  193.         (RAM)  memory, or by mapping expanded memory (EMS) pages into the
  194.         upper area.  
  195.  
  196.         With  The Last Byte Memory Manager, device drivers, terminate and
  197.         stay  resident  (TSR)  programs,  MS-DOS  disk  buffers,  and the
  198.         master  environment  can  be  moved up into upper memory, leaving
  199.         more   conventional   memory   available   for  your  application
  200.         programs.   Depending  on  your hardware, you may also be able to
  201.         extend  the  total  conventional  memory  from 640k to as much as
  202.         736k.  
  203.  
  204.         The  Last  Byte  Memory  Manager comes with utility programs that
  205.         use  upper  memory  to  create ram disks, print spoolers, command
  206.         line  recall (history) buffers, emulated expanded memory, and TSR
  207.         "markers"  (to  facilitate  TSR removal).  But best of all, these
  208.         utilities  can  even  use  disabled  shadow  ram  memory normally
  209.         hidden  behind the display buffer, read-only memories (ROMs), and
  210.         other adapter cards.  
  211.  
  212.  
  213.         1.1 Important Advantages        
  214.  
  215.         The  Last  Byte  Memory Manager offers six significant advantages
  216.         over other MS-DOS Upper Memory Managers: 
  217.  
  218.              o  The  Last  Byte  Memory Manager uses no conventional
  219.                 memory.  
  220.  
  221.              o  The  Last  Byte  Memory  Manager  will work with any
  222.                 processor  chip,  even the 8088 used in the original
  223.                 IBM  PC.   Many memory managers require a 386 cpu or
  224.                 better.  
  225.  
  226.              o  The  Last Byte Memory Manager does not use protected
  227.                 mode  software.   This  means that unlike those that
  228.                 do,   The   Last  Byte  Memory  Manager  is  totally
  229.                 compatible  with  any  protected  mode software, not
  230.                 just Microsoft Windows.  
  231.  
  232.              o  The  Last  Byte  Memory  Manager doesn't require any
  233.                 extended  memory.   Other  memory managers depend on
  234.                 the  processor's  ability  to  remap physical memory
  235.                 from above 1MB into the upper memory area.  
  236.  
  237.  
  238.  
  239.  
  240.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  241.  
  242.  
  243.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               5
  244.  
  245.  
  246.              o  On  motherboards  that  use  one  of  the  supported
  247.                 memory   controller  chips,  The  Last  Byte  Memory
  248.                 Manager,  unlike  all  other MS-DOS memory managers,
  249.                 can  use  the unused shadow ram normally disabled by
  250.                 the  display  buffer,  ROMs  or adapter cards.  This
  251.                 gives  it  the  unique  ability  to  use all 384k of
  252.                 upper memory! 
  253.  
  254.              o  The  Last Byte Memory Manager does not slow down the
  255.                 performance  of  your computer, both because it does
  256.                 not  incur  the 5-10% execution overhead inherent in
  257.                 protected   mode,   and   because  it  uses  regular
  258.                 (full-speed)  memory.  (Some memory managers use the
  259.                 actual  EGA/VGA  graphics  buffer  as MS-DOS memory,
  260.                 but  the  display  buffer  memory  of  some  EGA/VGA
  261.                 adapter  cards  can  be  as much as six times slower
  262.                 than regular memory.)  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  301.  
  302.  
  303.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               6
  304.  
  305.  
  306.                      CHAPTER 2 - SYSTEM REQUIREMENTS       
  307.  
  308.  
  309.         Fundamentally,  The Last Byte Memory Manager requires version 3.1
  310.         or  later of MS-DOS and some method of implementing memory in the
  311.         upper  memory  area  between  640k  and  1  meg.   Any  Intel (or
  312.         Intel-compatible)  processor  will  do,  including  the  original
  313.         Intel 8088 cpu.  No extended memory is required.  
  314.  
  315.  
  316.         2.1 Supported Hardware        
  317.  
  318.         To  install The Last Byte Memory Manager, your computer must have
  319.         any one of the following: 
  320.  
  321.              o Fixed  the 32-bit "Built In Memory" installed in some
  322.                 Compaq 386 machines), or 
  323.  
  324.              o  An  expanded memory board (EEMS, LIM 3.2 EMS, or LIM
  325.                 4.0 EMS), or 
  326.  
  327.                 ┌─────────────────────────────────────────────────┐
  328.                 │ NOTE: Using a LIM 3.2 EMS board is not advised  │ 
  329.                 │ as a method of providing upper memory.  It pro- │ 
  330.                 │ vides only 64k of upper memory and prevents ap- │ 
  331.                 │ plication software from using expanded memory.  │ 
  332.                 └─────────────────────────────────────────────────┘ 
  333.  
  334.              o  A  386sx,  386,  486,  or  486sx  processor  and the
  335.                 Microsoft  Windows  3.0 or DOS 5 versions of EMM386,
  336.                 or 
  337.  
  338.              o  One of the following shadow ram controller chips: 
  339.  
  340.         Chips and Technologies:
  341.  
  342.              82C212 - From the CS8221 NEAT (tm) chipset
  343.              82C222 - From the CHIPS/250 PS/2 50/60 chipset
  344.              82C230 - The PS/2 30 Single Chip Controller
  345.              82C235 - The SCAT (tm) Single Chip AT VLSI chip
  346.              82C241 - From the CS8223 LeAPset (tm) chipset
  347.              82C302 - From the CS8230 386/AT CHIPSet (tm)
  348.              82C307 - From the CS8231 386/AT CHIPSet (tm)
  349.              82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
  350.              82C322 - From the CHIPS/280 PS/2 70/80 chipset
  351.              82C351 - From the CS82310 PEAK DM/386 AT CHIPSet (tm)
  352.              82C812 - From the CS8281 NEATsx (tm) chipset
  353.              82C836 - The SCATsx (tm) Single Chip AT VLSI chip
  354.              82C841 - From the CS8283 LeAPset-sx (tm) chipset
  355.  
  356.  
  357.  
  358.  
  359.  
  360.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  361.  
  362.  
  363.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               7
  364.  
  365.  
  366.         ETEQ Microelectronics:
  367.  
  368.              82C491 - From the Cougar 386DX/486DX chipset
  369.  
  370.         Forex Computer Corporation:
  371.  
  372.              FRX36C300 - From the FRX36C300/200 Cache chipset
  373.  
  374.         Intel Corporation:
  375.  
  376.              82343 - From the 82340SX Chip Set
  377.              82346 - From the 82340DX Chip Set
  378.              82359 - From the 82350DT EISA Chip Set
  379.  
  380.         OPTi Electronics:
  381.  
  382.              82C281 - From the Cache SX/AT chipset (w/posted write)
  383.              82C282 - From the Cache SX/AT chipset (w/o posted write)
  384.              82C283 - From the Block Interleave SX/AT chipset
  385.              82C382 - From the HiD/386 AT chipset
  386.              82C391 - From the 386WB PC/AT chipset
  387.              82C461 - From the Notebook PC/AT chipset
  388.              82C482 - From the HiB/486 AT chipset
  389.              82C493 - From the 486SXWB PC/AT chipset
  390.              82C496 - From the DXBB PC/AT chipset
  391.              82C682 - From the 386/486WB EISA chipset
  392.  
  393.         Sun Electronics (SUNTAC):
  394.  
  395.              ST62C202 - From the chipset 20 for 286
  396.              ST62C241 - From the chipset 24 for 386
  397.              ST62C251 - From the chipset 25 for 286 and 386sx
  398.  
  399.         Symphony Laboratories:
  400.  
  401.              SL82C361 - From the SL82C360 80386DX/SX chipset
  402.              SL82C461 - From the SL82C460 80486 chipset
  403.  
  404.         Texas Instruments:
  405.  
  406.              TACT82411  - The Snake Single-Chip AT Controller
  407.              TACT82S411 - The Snake+ Single-Chip AT Controller
  408.  
  409.         United Microelectronics Corporation (UMC):
  410.  
  411.              UM82C212 - From the UM82C210 386SX/286 AT Chip Set
  412.              UM82C481 - From the UM82C480 50Mhz 80486 Chip Set
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  421.  
  422.  
  423.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               8
  424.  
  425.  
  426.              ┌─────────────────────────────────────────────────┐
  427.              │ NOTE: The UM82C212 is indistinguishable from    │ 
  428.              │ the Chip & Technologies 82C212.  CHIPSET and    │ 
  429.              │ LASTBYTE.SYS will identify it as the latter.    │ 
  430.              └─────────────────────────────────────────────────┘ 
  431.  
  432.         VLSI Technology:
  433.  
  434.              VL82C202 - PC/AT-Compatible High Speed Memory Controller
  435.              VL82C320 - From the TOPCAT 286/386sx Chip Set
  436.              VL82C330 - From the TOPCAT 386 DX Chip Set
  437.              VL82C486 - Single Chip, High Performance 486 PC/AT Controller
  438.  
  439.              ┌─────────────────────────────────────────────────┐
  440.              │ NOTE: There is a pin on the VLSI VL82C202 that  │
  441.              │ controls whether or not the shadow ram memory   │
  442.              │ has been relocated above 1 meg as extended      │
  443.              │ memory.  This pin is usually connected to a     │
  444.              │ jumper or DIP switch on the motherboard.  It    │
  445.              │ may be necessary to change the jumper or DIP    │
  446.              │ switch setting to work properly with this chip. │
  447.              └─────────────────────────────────────────────────┘ 
  448.  
  449.         Not  all  memory controller chips allow use of the entire 384k of
  450.         upper  memory.  Consult the appendix on "CHIPSET LIMITATIONS" for
  451.         further information.  
  452.  
  453.  
  454.         2.2 Checking Compatibility Using CHIPSET      
  455.  
  456.         CHIPSET  is  a program that simply checks to see if your computer
  457.         has  one  of the memory controllers required to use The Last Byte
  458.         Memory Manager.  
  459.  
  460.                 A>CHIPSET 
  461.  
  462.         CHIPSET  will identify the particular memory controller you have,
  463.         if  any.   If it can't find a memory controller, it will look for
  464.         fixed  memory  in the upper area or expanded memory as a means of
  465.         installing  The  Last  Byte Memory Manager.  If it is successful,
  466.         it  will  give  you  the  option  of automatically linking to the
  467.         INSTALL  program  to  setup  for  use  of  The  Last  Byte Memory
  468.         Manager.  
  469.  
  470.         CHIPSET  and INSTALL automatically sense whether you have a color
  471.         or  monochrome  display  to  determine how to present data on the
  472.         screen.   However,  you  may  force  the mode by using one of the
  473.         /MONO, /COLOR, or /LCD command line options.  
  474.  
  475.         If  your  computer  has  one of the listed devices, then The Last
  476.         Byte  Memory  Manager  should  work  on  your  computer.  If your
  477.  
  478.  
  479.  
  480.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  481.  
  482.  
  483.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)               9
  484.  
  485.  
  486.         computer  uses  another  kind of chipset, it may not be supported
  487.         for one of the following reasons: 
  488.  
  489.  
  490.              o  Some chipsets do not provide shadow ram support.  
  491.  
  492.                 Examples: VLSI Technologies 82C100 series 
  493.                           Western Digital chipsets 
  494.                           Texas Instruments TACT82300 series 
  495.                           Early Suntac chipsets (ST62BC001-6) 
  496.                           United Microelectronics Corp. UM82C231 
  497.  
  498.  
  499.              o  Some  chipsets  have  shadow ram, but it can only be
  500.                 put  into  either  write-only  mode (for copying rom
  501.                 contents  to  ram),  or  read-only  mode (to prevent
  502.                 accidental  writes into what's supposed to be a copy
  503.                 of rom).  
  504.  
  505.                 Examples: ACC Microelectronics chipsets 
  506.                           Headland Technologies chipsets 
  507.                           G2 chipsets 
  508.  
  509.  
  510.              o  Many  device  drivers  and  TSRs  either  use Direct
  511.                 Memory  Access  (DMA)  directly, or else they employ
  512.                 disk  buffers  that  MS-DOS  accesses  via DMA.  The
  513.                 hardware  design  of  some  memory  controller chips
  514.                 prevent  DMA from accessing the shadow ram, and thus
  515.                 loading  this  kind  of  software  into  shadow  ram
  516.                 memory is pointless.  
  517.  
  518.                 Examples: VLSI Tech. VL82C286 & VL82C386 TOPCAT 
  519.  
  520.  
  521.              o  The   Last   Byte   Memory   Manager   software   is
  522.                 table-driven,  making it relatively easy to adapt to
  523.                 different   memory   controller  architectures,  but
  524.                 there are limits!   
  525.  
  526.                 Examples: Zymos chipsets 
  527.                           United Micro. Corp. UM82C384, '388, '389 
  528.                           Forex Computer Corp. FRX36C100 
  529.                           Silicon Integrated   System   Corp.  (SIS)
  530.                 chipsets 
  531.  
  532.  
  533.              o  Some  memory  controllers  are designed so that they
  534.                 can   be   "locked"   at   the   end   of   software
  535.                 initialization,   requiring   a  hardware  reset  to
  536.                 unlock,  and  thus  preventing  The Last Byte Memory
  537.  
  538.  
  539.  
  540.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  541.  
  542.  
  543.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              10
  544.  
  545.  
  546.                 Manager from accessing the controller.  
  547.  
  548.                 Examples: Intel 82335, 82335SX 
  549.  
  550.  
  551.         Some  of these chips, however, have hardware EMS support and thus
  552.         many  of  their  motherboards  come  with  an  EMS  device driver
  553.         designed  specifically  to take advantage of this capability.  So
  554.         in  many  cases,  you can install this driver first, and then The
  555.         Last  Byte  Memory  Manager can use it to manage the upper memory
  556.         area.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  601.  
  602.  
  603.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              11
  604.  
  605.  
  606.                       CHAPTER 3 - DISTRIBUTION FILES       
  607.  
  608.  
  609.         Version  2.00  of  The  Last  Byte Memory Manager consists of the
  610.         following  distribution  files.  Feel free to upload this package
  611.         to   any   bulletin  board,  but  please  be  sure  all  original
  612.         (unmodified) distribution files are included in the upload.  
  613.  
  614.         CHIPSET.EXE     A program to test your computer for compati-
  615.                         bility with The Last Byte Memory Manager.
  616.  
  617.         CLOCK.EXE       A TSR program to display the current time in the
  618.                         upper left-hand corner of the screen.  (Requires
  619.                         ANSI.SYS.)
  620.  
  621.         HIGHAPND.EXE    A program to enable/disable an extension of conven-
  622.         HIGHAPND.SYS    tional memory beyond 640k up to 704k or even 736k,
  623.                         depending on your hardware configuration.
  624.  
  625.         HIGHBFRS.EXE    A program to put the MS-DOS 3.xx disk buffers
  626.                         (i.e., as specified in the "BUFFERS=" command
  627.                         of CONFIG.SYS) in upper memory.
  628.  
  629.         HIGHDISK.SYS    A device driver that creates a ram disk in
  630.                         upper memory.
  631.  
  632.         HIGHDRVR.SYS    A device driver used to load other device 
  633.                         drivers into upper memory.
  634.  
  635.         HIGHEMS3.SYS    A pair of device drivers that emulate expanded
  636.         HIGHEMS4.SYS    memory in upper memory.
  637.  
  638.         HIGHENV.EXE     A program to move the master environment from
  639.                         conventional memory to upper memory.
  640.  
  641.         HIGHFILE.EXE    A program to implement the DOS "FILES=" option
  642.                         using upper memory rather than conventional
  643.                         memory.
  644.  
  645.         HIGHHOLE.EXE    A program to locate empty space in shadowed ROMs
  646.                         that can be converted to free High-DOS memory.
  647.  
  648.         HIGHINST.EXE    Exactly like HIGHTSR, except used with the
  649.                         "INSTALL=" command in a CONFIG.SYS file.
  650.  
  651.         HIGHKEY.EXE     A command line recall editor similar to the DOS 5
  652.                         DOSKEY program, but which can store the command
  653.                         line history in bank-switch memory.
  654.  
  655.         HIGHMARK.EXE    A program to mark TSR's so that they may be
  656.                         removed from upper memory at a later time.
  657.  
  658.  
  659.  
  660.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  661.  
  662.  
  663.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              12
  664.  
  665.  
  666.  
  667.         HIGHMEM.EXE     A program to display a map of upper memory usage.
  668.  
  669.         HIGHSPLR.EXE    A program to create a printer spooler in upper
  670.                         memory.
  671.  
  672.         HIGHTSR.EXE     A program to load TSR's into upper memory.
  673.  
  674.         HIGHUMM.DOC     A device driver that application programmers may
  675.         HIGHUMM.SYS     use to access upper memory from their own pro-
  676.                         grams.  (For a detailed specification of the soft-
  677.                         ware interface, see the information in the file
  678.                         HIGHUMM.DOC.)
  679.  
  680.         HIGHUNDO.EXE    A program to remove TSR's (and their associated
  681.                         mark) that have been previously marked with
  682.                         HIGHMARK.
  683.  
  684.         INSTALL.EXE     A program to automatically create or modify your
  685.                         CONFIG.SYS and AUTOEXEC.BAT files for use with
  686.                         The Last Byte Memory Manager.
  687.  
  688.         LASTBYTE.DOC    This text file.
  689.  
  690.         LASTBYTE.SYS    A device driver that must be loaded before any
  691.                         other software of The Last Byte Memory Manager.
  692.  
  693.         LICENSE.EXE     A program to install your name and personal
  694.                         access key for full operation of LASTBYTE.SYS.
  695.  
  696.         ORDERFRM.DOC    A text file containing individual and site
  697.                         license order forms.
  698.  
  699.         TLBMM.EXE       A program that returns a non-zero errorlevel
  700.                         if The Last Byte Memory Manager is not
  701.                         installed.  (Useful in .BAT files.)
  702.  
  703.         WHATSNEW.120    A text file describing changes since the
  704.                         previous version.
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  721.  
  722.  
  723.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              13
  724.  
  725.  
  726.                        CHAPTER 4 - GETTING STARTED       
  727.  
  728.  
  729.         The  first  thing  to  do is to be sure that The Last Byte Memory
  730.         Manager  will  work  on your computer.  You can do this by simply
  731.         running  the program called CHIPSET.  If successful, it will then
  732.         ask  you  if  you would like to run the INSTALL program to create
  733.         or  modify  your  CONFIG.SYS  and AUTOEXEC.BAT files for use with
  734.         The  Last  Byte  Memory  Manager.   If  you  prefer,  you can run
  735.         INSTALL and it will automatically run CHIPSET for you.  
  736.  
  737.  
  738.         4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     
  739.  
  740.         To  install The Last Byte Memory Manager on a floppy diskette for
  741.         testing, perform the following three steps: 
  742.  
  743.              Step 1:  Use  the  MS-DOS  FORMAT  command  with the /S
  744.                       option  to  prepare  a  bootable  floppy disk.
  745.                       You will need this in step 2.  
  746.  
  747.              Step 2:  Run  the  CHIPSET program.  If it succeeds, it
  748.                       will  ask  you "Do you want to run the INSTALL
  749.                       program  now?".  Answer yes.  When it displays
  750.                       the  first  screen  of  the  INSTALL  program,
  751.                       select   the   first   option,   "Creating   a
  752.                       demonstration   diskette"   and   follow   the
  753.                       prompts.  
  754.  
  755.              Step 3:   Once  you  have  created  your  demonstration
  756.                       diskette,  press  Ctrl-Alt-Del  to reboot your
  757.                       computer from the diskette.  
  758.  
  759.         If  everything  goes  ok,  during  the  boot you'll briefly see a
  760.         sign-on box that looks something like the following: 
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  781.  
  782.  
  783.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              14
  784.  
  785.  
  786.         ╔═══════════════════════════════════════════════════════════════════╗
  787.         ║         THE LAST BYTE MEMORY MANAGER (tm) Version 2.00a           ║
  788.         ║ Copyright (C) 1990-92, Key Software Products, All Rights Reserved ║
  789.         ║                   Licensed for EVALUATION ONLY                    ║
  790.         ╟───────────────────────────────────────────────────────────────────╢
  791.         ║         25.0 Mhz 80386 with Chips & Technologies 82C302C          ║
  792.         ╟───────────────────────────────────────────────────────────────────╢
  793.         ║  Address Range  Size    Width    Bandwidth    Description         ║
  794.         ║   00000-9FFFF  640 KB  32 bits  38.0 MB/Sec   Conventional Memory ║
  795.         ║   A0000-FFFFF  384 KB  32 bits  38.0 MB/Sec   Shadow Ram Memory   ║
  796.         ║   A0000-AFFFF   64 KB  16 bits   3.1 MB/Sec   VGA Graphics Buffer ║
  797.         ║   B8000-BFFFF   32 KB  16 bits   3.1 MB/Sec   VGA Color Text Bfr  ║
  798.         ║   C0000-C7FFF   32 KB  16 bits   3.1 MB/Sec   VGA Adapter Bios    ║
  799.         ║   C8000-CB7FF   14 KB   8 bits   1.3 MB/Sec   Fixed Disk Bios     ║
  800.         ║   CB800-CBFFF    2 KB   8 bits   1.3 MB/Sec   Fixed Disk Ram      ║
  801.         ║   F0000-FFFFF   64 KB  16 bits   3.1 MB/Sec   AMI Bios (03/01/90) ║
  802.         ╟───────────────────────────────────────────────────────────────────╢
  803.         ║ Conventional  High-DOS     Bank-Switch   Shadowed Roms  Excluded  ║
  804.         ║     640k        32k            32k            96k         224k    ║
  805.         ╟───────────────────────────────────────────────────────────────────╢
  806.         ║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
  807.         ╚═══════════════════════════════════════════════════════════════════╝
  808.  
  809.         If  your  computer  stops  before displaying the entire box shown
  810.         above,  or  if  it  fails to operate properly after booting, this
  811.         may  be  because  The Last Byte Memory Manager failed to identify
  812.         one  of  your  installed  adapters  that uses some portion of the
  813.         upper  memory  address  space.   If this happens, you'll probably
  814.         need  to  use  an  "EXCLUDE="  option on the LASTBYTE.SYS command
  815.         line  to  manually  disable  the  corresponding  region(s)  where
  816.         conflict  occurs.   To  temporarily  get around this problem, you
  817.         can  reboot  and manually bypass all The Last Byte Memory Manager
  818.         device  drivers  and  TSR's  by  simultaneously  holding down the
  819.         <alt>  key,  the  <ctrl>  key,  and  either  the  <leftshift>  or
  820.         <rightshift> key during the boot sequence.  
  821.  
  822.         After  AUTOEXEC.BAT  is  finished, the screen will be filled with
  823.         the  output  of  the HIGHMEM program and the current time will be
  824.         displayed  in  inverse  video in the upper left-hand corner.  The
  825.         latter  verifies  that HIGHTSR has successfully loaded CLOCK into
  826.         upper memory and that ANSI.SYS is installed and operating.  
  827.  
  828.         To  exit  from  HIGHMEM,  simply press the Esc key.  If you like,
  829.         you  can  run  HIGHUNDO  to remove the CLOCK program from memory,
  830.         and then HIGHMEM again to see that it has been removed.  
  831.  
  832.         Once  you  are  convinced  that  The  Last Byte Memory Manager is
  833.         working  satisfactorily,  you may install it on your hard disk by
  834.         making drive C: the current drive by entering 
  835.  
  836.                 C: 
  837.  
  838.  
  839.  
  840.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  841.  
  842.  
  843.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              15
  844.  
  845.  
  846.  
  847.         and rerunning CHIPSET or INSTALL.  
  848.  
  849.  
  850.         4.2 Mapping Upper Memory with HIGHMEM     
  851.  
  852.         Depending  on  what  adapter  cards you have installed, HIGHMEM's
  853.         output should look something like that shown below.  
  854.  
  855.  
  856.       HIGHMEM v2.00a (C) Key Software Products 1990-92. All Rights Reserved.
  857.  
  858.       MCB  Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch  Total
  859.       ──── ─────────── ───────────────────────── ──────── ───────── ───────
  860.       B000 A0000-AFFFF Reserved Memory Group:                       
  861.       B79D A0000-A042F ╠═TSR Marker          <1>             1,072  
  862.       B002 A0000-A042F ║ └─8-bit EGA Graphics Buffer                  1,072
  863.       B79B A0430-A7FFF ╠═8-bit EGA Graphics Buffer        [ 31,696] [31,696]
  864.       B004 A8000-AFFFF ╚═8-bit EGA Graphics Buffer                   32,768
  865.       B006 B0070-B10CF ANSI           [DEV]        4,192              4,192
  866.       B10D B10E0-B112F CLOCK          [ENV]  <1>      80                 80
  867.       B113 B1140-B12EF CLOCK          [TSR]  <1>     432                432
  868.       B12F B1300-B79AF [∙∙∙Free∙∙∙]             [ 26,288]           [26,288]
  869.       B79F B7A00-B7EFF LASTBYTE       [DEV]        1,280              1,280
  870.       B7FE B8000-FFFFF Reserved Memory Group:                       
  871.       B7F0 B8000-BFFFF ╠═8-bit EGA Color Text Buffer                 32,768
  872.       B7F2 C0000-C3FFF ╠═Shadowed 8-bit EGA Bios Rom                 16,384
  873.       B7F4 C4000-C7FFF ╠═Excluded Block                              16,384
  874.       B7F6 C8000-CB7FF ╠═8-bit Fixed Disk Adapter Bios               14,336
  875.       B7F8 CB800-CBFFF ╠═8-bit Fixed Disk Adapter Ram                 2,048
  876.       B7FA CC000-EFFFF ╠═Excluded Block                             147,456
  877.       B7FC F0000-FFFFF ╚═Shadowed 16-bit AMI Main Bios               65,536
  878.                                                  ───────   ───────  ───────
  879.                             Upper Memory In Use:   5,984     1,072  334,736
  880.                             [Free Upper Memory]:  26,288    31,696   57,984
  881.                                    MCB Overhead:     496       n/a      496
  882.                                                  ───────   ───────  ───────
  883.                              Total Upper Memory:  32,768    32,768  393,216
  884.  
  885.  
  886.         The  column  labelled  "Bank-Switch"  shows  which entries can be
  887.         used  as  bank-switch  memory  for  a  ram disk, a print spooler,
  888.         emulated EMS memory, or TSR markers.  
  889.  
  890.         Numbers  enclosed in brackets (e.g., "[ 26,128]") refer to memory
  891.         that  is  available for use.  Once you have licensed your copy of
  892.         The  Last  Byte  Memory Manager, the "Excluded Block" shown above
  893.         would  be  added  to the free High-DOS memory pool, and the other
  894.         entries  labelled  "EGA  ...  Buffer"  would be added to the free
  895.         bank-switch memory pool.  
  896.  
  897.  
  898.  
  899.  
  900.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  901.  
  902.  
  903.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              16
  904.  
  905.  
  906.         The  column  labelled "Mark" is used in conjunction with HIGHMARK
  907.         and HIGHUNDO.  
  908.  
  909.  
  910.         4.3 Running the LICENSE Program      
  911.  
  912.         The   Last   Byte  Memory  Manager  is  distributed  as  a  fully
  913.         functional  set  of  software.  In its original form, you will be
  914.         able to use all the features, but with three restrictions: 
  915.  
  916.  
  917.              o  The  amount of upper memory available to you will be
  918.                 limited  to  32k  of High-DOS memory and another 32k
  919.                 of Bank-Switch memory, and 
  920.  
  921.              o  The  maximum  number  of  device drivers and/or TSRs
  922.                 will be limited to 2.  
  923.  
  924.              o  The HOLE option of LASTBYTE.SYS is not available.  
  925.  
  926.  
  927.         Access  to  the rest of upper memory requires that you purchase a
  928.         personal  eight-character  access  key  and  install it using the
  929.         LICENSE  program.   The  access key may be obtained directly from
  930.         Key  Software  Products  or  one  of  the authorized distributors
  931.         listed  at the end of this document.  The LICENSE program must be
  932.         run  on the same computer on which you intend to install The Last
  933.         Byte Memory Manager.  
  934.  
  935.         LICENSE   automatically  senses  whether  you  have  a  color  or
  936.         monochrome  display  to  determine  how  to  present  data on the
  937.         screen.   However, you may force the mode using one of the /MONO,
  938.         /COLOR, or /LCD command line options.  
  939.  
  940.         Once  you  have  licensed  your  copy  of  LASTBYTE.SYS  you will
  941.         immediately  have  access  to the rest of upper memory.  No other
  942.         files,  diskettes, or manuals need to be ordered.  We do not send
  943.         out  a  new  diskette  or printed manual when you order an access
  944.         key;  otherwise  the  price  would  have  to be greater.  You may
  945.         obtain  your  access  key  by  mail by filling out the order form
  946.         (included  in  the  file  ORDERFRM.DOC)  and  mailing it with the
  947.         calculated  amount to Key Software Products, or by contacting one
  948.         of  our  distributors.   If  you  order by mail, be sure to print
  949.         your  name  clearly  - it will be displayed in the sign-on screen
  950.         of LASTBYTE.SYS and is used to determine your access key.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  961.  
  962.  
  963.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              17
  964.  
  965.  
  966.                     CHAPTER 5 - DETAILED DESCRIPTIONS       
  967.  
  968.  
  969.         A  complete  detailed  description of the command line syntax and
  970.         options  of  each  device  driver and utility program in The Last
  971.         Byte  Memory  Manager  is  provided below.  With the exception of
  972.         LASTBYTE.SYS   which   comes   first,   they   are  organized  in
  973.         alphabetical order for ease of reference.  
  974.  
  975.  
  976.         5.1 LASTBYTE.SYS         
  977.  
  978.         During  initialization,  LASTBYTE.SYS  scans upper memory looking
  979.         for  Bios  ROMs,  display  ram, and adapter cards that occupy the
  980.         upper  memory  area.   The  unoccupied  portion  of  upper memory
  981.         defaults  to  High-DOS memory (for device drivers and TSR's).  If
  982.         your  computer uses one of the supported memory controller chips,
  983.         the  occupied  portion  of  the upper memory area will default to
  984.         Bank-Switch  memory  that can be made accessible for Ram disks, a
  985.         Print Buffer, emulated EMS memory, etc.  
  986.  
  987.         These  defaults  can  be  modified  by  the  use  of command line
  988.         options.    There   are   several   command   line   options  for
  989.         LASTBYTE.SYS.  Many of these use a format like: 
  990.  
  991.                 <keyword>=<base>:<size> 
  992.  
  993.         where  "<keyword>"  is  one  of  the  option  keywords and may be
  994.         abbreviated  by  its  first  letter,  "<base>"  is  a  four-digit
  995.         hexadecimal  segment  address  in  the  range  A000  to FC00, and
  996.         "<size>" is a decimal number in kilobytes.  
  997.  
  998.         There are two restrictions on these options: 
  999.  
  1000.              o  The  base must be exactly 4 hexadecimal digits, must
  1001.                 lie  at  or  above  A000,  and must be a multiple of
  1002.                 0020  (512  bytes).   (For  APPEND,  the  base  must
  1003.                 always be A000, or may be omitted.) 
  1004.  
  1005.              o  The size must be in the range 1-384 kb.  
  1006.  
  1007.         The  "multiple  of 0020" requirement for the base is necessary to
  1008.         be  consistent  with  the  way  that The Last Byte Memory Manager
  1009.         organizes  high  memory  during  initialization.   However,  this
  1010.         requirement  is  often  affected by the coarser resolution of the
  1011.         memory controllers: 
  1012.  
  1013.         The  upper area is partitioned into blocks.  Some controllers use
  1014.         16k  blocks,  some use 32k blocks, and some use 64k blocks.  Each
  1015.         block  must  be either totally enabled or disabled.  I.e., if any
  1016.         part  of  a  block's address space is disabled by the presence of
  1017.  
  1018.  
  1019.  
  1020.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1021.  
  1022.  
  1023.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              18
  1024.  
  1025.  
  1026.         an  adapter  card,  the  entire  block  of memory is disabled and
  1027.         cannot be made available as High-DOS Memory.  
  1028.  
  1029.              APPEND=<base>:<size>  -or-  APPEND=<size> 
  1030.  
  1031.                   Allocates  a  region of upper memory for appending
  1032.                   to   the   end   of   conventional   memory,  thus
  1033.                   increasing  it  beyond  640k.   The  memory is NOT
  1034.                   added  until  it  is  enabled  with  HIGHAPND.  If
  1035.                   "<base>"   is  used,  it  must  be  A000.   (Note:
  1036.                   "<size>"  is  limited  to  16k  in  the unlicensed
  1037.                   version  so  that  some High-DOS memory will still
  1038.                   be available.) 
  1039.  
  1040.                   For  example,  to  force  the  64k  address  range
  1041.                   starting  at  segment  A000  to be appended to the
  1042.                   end  of  the  640k  of  Conventional  memory,  the
  1043.                   proper option syntax would be: 
  1044.  
  1045.                                       APPEND=64
  1046.  
  1047.              BANKSWITCH=<base>:<size> 
  1048.  
  1049.                   Forces   a  region  of  upper  memory  that  would
  1050.                   normally  be  used  as  High-DOS memory to be made
  1051.                   available as Bank-Switch memory.  
  1052.  
  1053.                   ┌─────────────────────────────────────────────────┐
  1054.                   │ This option requires a memory controller chip.  │
  1055.                   └─────────────────────────────────────────────────┘ 
  1056.  
  1057.              CACHE  -or-  CACHE=<kbytes> 
  1058.  
  1059.                   Forces  LASTBYTE.SYS  to  think  that  there  is a
  1060.                   cache  between  the CPU and main memory and to set
  1061.                   its  size.   (This  has  nothing  to  do with disk
  1062.                   caching!)   This option is not normally necessary;
  1063.                   LASTBYTE.SYS  automatically  detects  the presence
  1064.                   of  a  cache  and  its size.  If you use the CACHE
  1065.                   option   without  specifying  the  size,  it  will
  1066.                   default to 512k.  
  1067.  
  1068.                   Activating  bank-switch memory causes the contents
  1069.                   of  a  cache  (if  present) to be invalid; this is
  1070.                   known  as a "cache coherency" problem.  If a cache
  1071.                   is   detected  during  installation,  LASTBYTE.SYS
  1072.                   checks  to see if any portion of the upper address
  1073.                   space  is cached.  If not, then no cache coherency
  1074.                   problem exists.  
  1075.  
  1076.                   If  the  upper  address  space is cached, however,
  1077.  
  1078.  
  1079.  
  1080.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1081.  
  1082.  
  1083.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              19
  1084.  
  1085.  
  1086.                   LASTBYTE.SYS  will flush the cache on every access
  1087.                   to  Bank-Switch  memory  in  order  to prevent the
  1088.                   cache  from providing invalid data to the CPU.  On
  1089.                   a   486  it  does  this  by  executing  a  special
  1090.                   instruction  that  resets  the  cache.   On  other
  1091.                   processors,  the  cache  is  flushed by filling it
  1092.                   from  low  memory.   In  the latter case, the size
  1093.                   value  discussed  above  is  used to determine how
  1094.                   much to fill.  
  1095.  
  1096.              DOS=<base>:<size> 
  1097.  
  1098.                   Forces   a  region  of  upper  memory  that  would
  1099.                   normally  be used as Bank-Switch memory to be made
  1100.                   available as High-DOS memory.  
  1101.  
  1102.              EXCLUDE=<base>:<size> 
  1103.  
  1104.                   Forces  a  region  of  upper memory unavailable as
  1105.                   either High-DOS or Bank-Switch memory.  
  1106.  
  1107.              HOLE=<base>:<size> 
  1108.  
  1109.                   Creates  a  "hole"  of free High-DOS memory within
  1110.                   the  address space of a ROM that is shadowed.  Use
  1111.                   the  HIGHHOLE  program  to  determine  where these
  1112.                   holes  are  located,  and the corresponding values
  1113.                   of <base> and <size>.  
  1114.  
  1115.                   ┌─────────────────────────────────────────────────┐
  1116.                   │ NOTES: (1) The HOLE option is not available in  │
  1117.                   │ the unlicensed version of LASTBYTE.SYS. (2) The │
  1118.                   │ <base> and <size> parameters of the HOLE option │
  1119.                   │ are different from other options: <size> is in  │
  1120.                   │ bytes and must be a multiple of 16; <base> may  │
  1121.                   │ be any hexadecimal value from A000 to FFFF.     │
  1122.                   └─────────────────────────────────────────────────┘
  1123.  
  1124.              MOVE=VIDEOBIOS 
  1125.  
  1126.                   Tries  to  move  an  EGA  or  VGA bios to a better
  1127.                   location  within  the  available  upper  memory in
  1128.                   order to reduce fragmentation of free memory.  
  1129.  
  1130.              MOVE=MAINBIOS[,ADDHOLES] 
  1131.  
  1132.                   Tries  to  move the main bios to a better location
  1133.                   within  the  available  upper  memory  in order to
  1134.                   reduce     fragmentation     of    free    memory.
  1135.                   "MOVE=MAINBIOS,ADDHOLES"  will  create seven holes
  1136.                   in  the  residual  8k  left at FE00 for a total of
  1137.  
  1138.  
  1139.  
  1140.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1141.  
  1142.  
  1143.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              20
  1144.  
  1145.  
  1146.                   more than 3k.  
  1147.  
  1148.              MOVE=OVERLAY 
  1149.  
  1150.                   This  option  is  for  chipsets  in which the main
  1151.                   bios  shadow  ram  cannot be made read/write (OPTi
  1152.                   and   ETEQ).    This   option  puts  that  ram  in
  1153.                   write-only  mode,  copies the video bios on top of
  1154.                   the   main   bios   initialization   code  at  the
  1155.                   beginning  of  the  bios,  then returns the ram to
  1156.                   read-only  mode.   Then  the old video bios region
  1157.                   is converted to usable Hi-DOS memory.  
  1158.  
  1159.              MOVE=XBDA 
  1160.  
  1161.                   This  option relocates the Extended Bios Data Area
  1162.                   (XBDA),  if  it  exists,  into  Upper Memory.  The
  1163.                   XBDA   is  usually  1k  reserved  at  the  top  of
  1164.                   conventional  memory  by  the  main Bios.  Not all
  1165.                   machines   use   an   XBDA,   but  if  it  exists,
  1166.                   LASTBYTE.SYS  will  report  639k  of  Conventional
  1167.                   Memory  instead  of 640k, and HIGHAPND will refuse
  1168.                   to  append  any  memory.   Some  machines  may not
  1169.                   operate  properly  with  a  relocated XBDA, so use
  1170.                   this   option   with  caution.   (Note  that  some
  1171.                   computer  viruses  also  "steal"  the  top  1k  of
  1172.                   memory.) 
  1173.  
  1174.              PHYSICAL=<memorycontroller>[,OVERRIDE][,NOEMS] 
  1175.  
  1176.                   where  "<memorycontroller>  is  determined  by the
  1177.                   CHIPSET program.  
  1178.  
  1179.                   The "OVERRIDE" suboption: 
  1180.  
  1181.                   Many  memory  controller chips can relocate all or
  1182.                   part  of  shadow  ram  to  the  top  of (extended)
  1183.                   memory.   If  LASTBYTE.SYS  fails  to install with
  1184.                   the   error   message:   "Shadow   Ram  memory  is
  1185.                   relocated/remapped",   try   adding  the  OVERRIDE
  1186.                   suboption  to  the PHYSICAL option.  This disables
  1187.                   any  shadow  ram relocation that may be in effect,
  1188.                   regardless   of   your   CMOS  configuration  menu
  1189.                   setup.   The CMOS setup menu of your BIOS may also
  1190.                   provide  an option to disable relocation directly,
  1191.                   but  there  are  some  that  determine  whether to
  1192.                   relocate  or  not  based  on  other  configuration
  1193.                   options.   
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1201.  
  1202.  
  1203.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              21
  1204.  
  1205.  
  1206.                   The "NOEMS" suboption: 
  1207.  
  1208.                   May  be  used in conjunction with PHYSICAL=LIM4EMS
  1209.                   or  EEMS  to  use  the  64k page frame as High-DOS
  1210.                   Memory;   must   be   used   in  conjunction  with
  1211.                   PHYSICAL=LIM3EMS.    Doing   so   disables   other
  1212.                   (normal) use of all expanded memory.  
  1213.  
  1214.              RESTRICT=<ab>,<cd>,<ef> 
  1215.  
  1216.                   Address  lines  A15  and  A16  are  not latched in
  1217.                   hardware  design of the AT bus.  As a consequence,
  1218.                   some  16-bit  adapter cards do not properly decode
  1219.                   these   address   lines  within  the  narrow  time
  1220.                   constraints  imposed  by  the Address Latch Enable
  1221.                   (ALE)  signal, and will occassionally respond to a
  1222.                   memory  access  that  is  directed  at  some other
  1223.                   portion  of  the  address space.  Thinking that it
  1224.                   is  for  them, they force the transfer into 16-bit
  1225.                   mode  even  though the intended recipient requires
  1226.                   8-bit  mode,  and  thus cause erroneous data to be
  1227.                   transferred  to  the  bytes  in  the  odd-numbered
  1228.                   addresses.  
  1229.  
  1230.                   The  most  common  (and damaging) occurence occurs
  1231.                   during  the  8-bit  DMA transfers between a floppy
  1232.                   disk  drive  and  upper  memory  near  the address
  1233.                   space  occupied  by  an  offending  16-bit adapter
  1234.                   card.  
  1235.  
  1236.                   Due  to organization of the address signals on the
  1237.                   AT  bus,  this  phenomena only occurs when the two
  1238.                   address  areas  are  within  the same 128k region.
  1239.                   There  are  three  such regions in the upper area:
  1240.                   A0000-BFFFF,    C0000-DFFFF,    and   E0000-FFFFF.
  1241.                   LASTBYTE.SYS  automatically senses the presence of
  1242.                   16-bit  adapter  cards  in  each  of  these  three
  1243.                   regions  and  records  this information within its
  1244.                   resident   image   for   use   by  its  utilities.
  1245.                   LASTBYTE.SYS  skips  this  test if it detects a PC
  1246.                   with  a  Micro  Channel  bus (like the PS/2) since
  1247.                   problem was corrected in its design.  
  1248.  
  1249.                   The  RESTRICT  option is provided to override this
  1250.                   automatic  detection  of 16-bit adapters.  Each of
  1251.                   the  three  arguments (one per 128k region) should
  1252.                   be  replaced  by  either "0" (indicating no 16-bit
  1253.                   adapters),  or  "1"  (indicating the presense of a
  1254.                   16-bit adapter).  
  1255.  
  1256.                   For   example,  the  option  RESTRICT=1,1,0  would
  1257.  
  1258.  
  1259.  
  1260.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1261.  
  1262.  
  1263.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              22
  1264.  
  1265.  
  1266.                   imply   that  one  or  more  16-bit  adapters  are
  1267.                   located  in  the  first  two 128k regions of upper
  1268.                   memory  (A000-DFFF),  so  that  when the /RESTRICT
  1269.                   option  of  HIGHDRVR,  HIGHTSR, HIGHINST, HIGHUMM,
  1270.                   HIGHEMS3,  and  HIGHEMS4  is  used,  only High-DOS
  1271.                   memory   in   the   region   E000-FFFF   will   be
  1272.                   allocated.   This is the default for HIGHBFRS, but
  1273.                   may   be   disabled  by  use  of  its  /NORESTRICT
  1274.                   option.  
  1275.  
  1276.              SHADOW=<base>:<size> 
  1277.  
  1278.                   The  Last  Byte  Memory Manager will automatically
  1279.                   copy  the  video  bios and main bios to shadow ram
  1280.                   if  they  aren't  already  shadowed.   However, it
  1281.                   will  not  do  so for other adapter ROMs.  This is
  1282.                   because  some  controllers  "hide"  a small RAM by
  1283.                   overlaying  it  in  a  portion of the same address
  1284.                   space  they  declare  as  being  filled  with ROM.
  1285.                   Such  a  RAM  is no longer accessible when the ROM
  1286.                   is  shadowed,  usually causing the adapter to stop
  1287.                   functioning.  
  1288.  
  1289.                   This  option  is  for  those  who want to forces a
  1290.                   region  of  memory  (presumably  ROM) to be copied
  1291.                   into  shadow  ram.   If other hardware is detected
  1292.                   outside  the specified region, but within the same
  1293.                   memory  controller block which conflicts with this
  1294.                   request,  a  corresponding  error  message will be
  1295.                   displayed    and    LASTBYTE.SYS   will   not   be
  1296.                   installed.  
  1297.  
  1298.                   ┌─────────────────────────────────────────────────┐
  1299.                   │ This option requires a memory controller chip.  │
  1300.                   └─────────────────────────────────────────────────┘ 
  1301.  
  1302.              TEXT=n 
  1303.  
  1304.                   The  information  screen invoked by the "?" option
  1305.                   defaults  to  bright  white  on  blue  if  a color
  1306.                   display  is  active,  and  to  inverse  video if a
  1307.                   monochrome   monitor   is   active.   This  option
  1308.                   changes  the  default  to  'n',  where  n  is  the
  1309.                   hexadecimal  value  of  the attribute byte used to
  1310.                   paint the screen.  
  1311.  
  1312.              ? (A question mark) 
  1313.  
  1314.                   Causes  LASTBYTE.SYS  to erase the screen, display
  1315.                   a  summary  of  what  it finds in the upper memory
  1316.                   area,  and  pause for two seconds to give the user
  1317.  
  1318.  
  1319.  
  1320.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1321.  
  1322.  
  1323.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              23
  1324.  
  1325.  
  1326.                   an   opportunity  to  read  the  information.   To
  1327.                   freeze  this  display  for  a longer period, press
  1328.                   <Ctrl>-S;   then   to   continue  with  CONFIG.SYS
  1329.                   processing, press any key.  
  1330.  
  1331.  
  1332.         5.2 HIGHAPND.EXE and HIGHAPND.SYS       
  1333.  
  1334.         HIGHAPND.EXE  is  a  program that can only be used in conjunction
  1335.         with  the  "APPEND="  option  of LASTBYTE.SYS.  HIGHAPND.SYS is a
  1336.         device  driver  version  of  HIGHAPND.EXE.  Either can be used to
  1337.         append  some of the upper memory that begins at 640k onto the end
  1338.         of conventional memory (and also to return later to 640k).  
  1339.  
  1340.         Monochrome  (MDA),  Hercules,  and CGA display adapters don't use
  1341.         the  64k  region starting at A000, and so this memory can be used
  1342.         to  extend  conventional memory from 640k to 704k, provided there
  1343.         is  available  read/write  memory  in  this  area.   CGA  display
  1344.         adapters  also  don't  use  the next 32k either, and so CGA users
  1345.         may be able to extend conventional memory all the way to 736k.  
  1346.  
  1347.         EGA  and  VGA  display adapters have a 64k hi-resolution graphics
  1348.         display  buffer  that  is  located  at A000.  This buffer is only
  1349.         needed  when you are using only hi-resolution graphics.  When the
  1350.         display  is  in either text or low-resolution CGA graphics modes,
  1351.         this  memory  is  not  used,  and may be replaced (switched) with
  1352.         shadow  ram memory if available, or the display buffer itseld may
  1353.         be  used  to  extend conventional memory.  Since most EGA and VGA
  1354.         adapters  usually  don't use the 32k region at B000, you may even
  1355.         be able to extend conventional memory up to 736k.  
  1356.  
  1357.         You  may either use HIGHAPND.SYS during CONFIG.SYS processing, as
  1358.         in: 
  1359.  
  1360.                 DEVICE=HIGHAPND.SYS ON  {Extends conv. memory beyond 640k}
  1361.                         . . .
  1362.                 DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
  1363.  
  1364.                 ╔═════════════════════════════════════════════════╗
  1365.                 ║ WARNING: HIGHAPND.SYS may not work properly     ║ 
  1366.                 ║ with some versions of MS-DOS; in such cases,    ║ 
  1367.                 ║ use HIGHAPND.EXE instead.  There is no benefit  ║ 
  1368.                 ║ to using HIGHDRVR.SYS to load HIGHAPND.SYS      ║ 
  1369.                 ║ because it never stays resident.                ║ 
  1370.                 ╚═════════════════════════════════════════════════╝
  1371.  
  1372.         or  use  HIGHAPND.EXE  during  AUTOEXEC.BAT processing (or at any
  1373.         time after the computer is booted), as in: 
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1381.  
  1382.  
  1383.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              24
  1384.  
  1385.  
  1386.                 A>HIGHAPND ON   {Extends conv. memory beyond 640k}
  1387.                         . . .
  1388.                 A>HIGHAPND OFF  {Resets conv. memory to 640k}
  1389.  
  1390.                 ╔═════════════════════════════════════════════════╗
  1391.                 ║ WARNING: HIGHAPND.EXE may not work properly     ║ 
  1392.                 ║ with DR DOS. In such cases, use HIGHAPND.SYS.   ║ 
  1393.                 ╚═════════════════════════════════════════════════╝
  1394.  
  1395.  
  1396.         Don't  forget  -  both  HIGHAPND.SYS and HIGHAPND.EXE require the
  1397.         use of an APPEND option on the LASTBYTE command line.  
  1398.  
  1399.         HIGHAPND  can  be  used  without  any  command  line  options  to
  1400.         determine  the  current size of conventional memory and the state
  1401.         of EGA/VGA hi-resolution graphics: 
  1402.  
  1403.                 A>HIGHAPND 
  1404.  
  1405.         You  can  put  these  commands  into  a  batch  file  to simplify
  1406.         switching  back  and  forth.   For example, if you want the extra
  1407.         memory  all  the  time  except  when you need hi-res graphics for
  1408.         Microsoft Windows, create a batch file like the following: 
  1409.  
  1410.                 @ECHO OFF 
  1411.                 HIGHAPND OFF 
  1412.                 WIN %1 %2 
  1413.                 HIGHAPND ON 
  1414.  
  1415.         HIGHAPND  will automatically disable any EGA or VGA hi-resolution
  1416.         graphics   capability   whenever  conventional  memory  has  been
  1417.         extended  beyond  640k.   This  makes  software  that attempts to
  1418.         sense  what  type  of display adapter is installed think that you
  1419.         have  only  a  CGA  adapter.   Later,  when you need the graphics
  1420.         capability,   you   can   disable   the   memory   extension  and
  1421.         hi-resolution graphics will be automatically re-enabled.  
  1422.  
  1423.         If  you  have  hi-res  graphics  disabled  and run a program that
  1424.         tries  to use hi-res graphics without first sensing for an EGA or
  1425.         VGA  adapter,  LASTBYTE.SYS  will  notice  the conflict, issue an
  1426.         error   message,   and  terminate  the  program.   Some  programs
  1427.         redirect  a  few  interrupts during their initialization and then
  1428.         restore  them  before termination.  LASTBYTE.SYS's termination of
  1429.         graphics  programs  doesn't know how to restore these interrupts,
  1430.         so  in  some cases you may have to reboot the computer.  In other
  1431.         words,  if  you  experience this kind of program termination with
  1432.         an  application  program, it's best to reboot and prepare a batch
  1433.         file (as shown above) to run the program.  
  1434.  
  1435.         HIGHAPND  provides  more  detailed  control  over this protection
  1436.         through  the  /HIRESGFX  option  as described below.  This may be
  1437.  
  1438.  
  1439.  
  1440.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1441.  
  1442.  
  1443.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              25
  1444.  
  1445.  
  1446.         helpful,  for  example,  with software that uses the 43 (50) line
  1447.         text  mode of the EGA (VGA) adapter.  (The setting of this option
  1448.         is only meaningful when HIGHAPND ON is in effect.) 
  1449.  
  1450.              /HIRESGFX=TRAPPED 
  1451.  
  1452.                   Disables   all  EGA/VGA  high-resolution  graphics
  1453.                   functions  provided  by  video  BIOS interrupt 10h
  1454.                   and   makes   programs  think  a  CGA  adapter  is
  1455.                   installed.  (This is the default.) 
  1456.  
  1457.              /HIRESGFX=SENSED 
  1458.  
  1459.                   Disables   all  EGA/VGA  high-resolution  graphics
  1460.                   functions  provided  by  video BIOS interrupt 10h,
  1461.                   but  does  let  programs  sense the presence of an
  1462.                   EGA or VGA adapter.  
  1463.  
  1464.              /HIRESGFX=ALLOWED 
  1465.  
  1466.                   Allows  all  video  BIOS  interrupt  10h  function
  1467.                   calls,  even  if  they  might  use the 64k EGA/VGA
  1468.                   graphics display buffer at A000-AFFF.  
  1469.  
  1470.                               Technical Note      
  1471.  
  1472.              HIGHAPND  requires  either  a memory controller chip or
  1473.              an   EGA   or  VGA  display  adapter.   If  the  memory
  1474.              controller  chip  can enable shadow ram memory at A000,
  1475.              then   shadow   ram  memory  will  be  used  to  extend
  1476.              conventional  memory;  otherwise, HIGHAPND will convert
  1477.              the  graphics  display buffer of the EGA or VGA display
  1478.              adapter into an extension of conventional memory.  
  1479.  
  1480.  
  1481.  
  1482.         5.3 HIGHBFRS.EXE (MS-DOS 3 only)      
  1483.  
  1484.                 ╔═════════════════════════════════════════════════╗
  1485.                 ║ WARNING:  Placing MS-DOS buffers in high memory ║
  1486.                 ║ can result in the loss of data.  I.e., it can   ║
  1487.                 ║ damage the directory and file allocation tables ║
  1488.                 ║ of your disk.  Read everything in this section  ║
  1489.                 ║ before considering the use of this utility.     ║
  1490.                 ╚═════════════════════════════════════════════════╝
  1491.  
  1492.         HIGHBFRS  can  be  used  to  place  MS-DOS  3.x  buffers in upper
  1493.         memory,  but  you  must  be  careful that this does not cause DMA
  1494.         transfers  into  a  128k  region  of  memory  containing a 16-bit
  1495.         adapter,  or else you may damage the data on your disk.  (See the
  1496.         discussion  of  the  "RESTRICT" option of LASTBYTE.SYS.) HIGHBFRS
  1497.  
  1498.  
  1499.  
  1500.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1501.  
  1502.  
  1503.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              26
  1504.  
  1505.  
  1506.         offers  two  solutions  to  this problem: The first (and default)
  1507.         solution  is  to  restrict  buffer  placement  to particular 128k
  1508.         regions where there is no conflict.  
  1509.  
  1510.         If  all three 128k regions contain 16-bit adapters, then a second
  1511.         (different)  solution  may  be both necessary and sufficient.  It
  1512.         intercepts   transfers  between  floppy  disk  drives  and  upper
  1513.         memory,  and  redirects  the  transfer  through  an  intermediate
  1514.         sector  buffer  in  conventional (low) memory.  The corresponding
  1515.         command line option would be: 
  1516.  
  1517.                                 HIGHBFRS /FLOPPY
  1518.  
  1519.         Almost  all  hard  disk  controllers  use 16-bit CPU instructions
  1520.         (rather  than  DMA)  to  transfer data and thus do not incur this
  1521.         problem.   
  1522.  
  1523.         HIGHBFRS   defaults   to   the  maximum  number  of  buffers  and
  1524.         automatically  determines  the  safest  location for loading them
  1525.         into  upper memory by checking with LASTBYTE.SYS for the location
  1526.         of  16-bit  adapter  cards,  if  any.   If none of the three 128k
  1527.         segments  is  considered  "safe",  it will enable interception of
  1528.         floppy  transfers.   Any  of  these defaults can be overridden by
  1529.         one or more of the following command line options: 
  1530.  
  1531.              BUFFERS=<number> 
  1532.  
  1533.                   Changes  the number of MS-DOS buffers to the value
  1534.                   specified;  "<number>"  is  a number from 1-99, or
  1535.                   may be replaced by the word "MAXIMUM".  
  1536.  
  1537.              /NORESTRICT (Abbreviated "/N") 
  1538.  
  1539.                   Disables   the   default   restriction  on  buffer
  1540.                   placement   caused   by  the  presence  of  16-bit
  1541.                   adapter  cards  or by use of the "RESTRICT" option
  1542.                   on the LASTBYTE.SYS command line.  
  1543.  
  1544.              /FLOPPY (Abbreviated "/F") 
  1545.  
  1546.                   Enables  redirection  of  Bios  INT 13h calls that
  1547.                   attempt  to  transfer  data  between a floppy disk
  1548.                   drive  and  upper  memory.   If  redirected,  such
  1549.                   transfers   go   through  an  intermediate  buffer
  1550.                   located   in   conventional   memory.    (Disables
  1551.                   restrictions on buffer placement.) 
  1552.  
  1553.         When  HIGHBFRS  is  invoked  with  no  command line arguments, it
  1554.         simply  reports the number of MS-DOS buffers presently located in
  1555.         upper  memory  and  whether  or not transfers between floppy disk
  1556.         drives  and upper memory are redirected.  You may use the HIGHMEM
  1557.  
  1558.  
  1559.  
  1560.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1561.  
  1562.  
  1563.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              27
  1564.  
  1565.  
  1566.         program  to determine where the buffers have been placed in upper
  1567.         memory.  
  1568.  
  1569.         Microsoft  recommends setting the "BUFFERS=" option in CONFIG.SYS
  1570.         according  to  the  type  of  application  most  frequently used.
  1571.         Implicit  within  this  recommendation is the assumption that you
  1572.         won't  change  the  value  very  often  since it requires editing
  1573.         CONFIG.SYS and rebooting.  
  1574.  
  1575.         In  general, more buffers help when running programs that perform
  1576.         random  access on a relatively small number of disk records (such
  1577.         as  the  index  for a database program), or if your disk has many
  1578.         subdirectories organized on several levels.  
  1579.  
  1580.         Since  HIGHBFRS  allows you to increase or decrease the number of
  1581.         buffers  dynamically,  you  could create some batch files to tune
  1582.         the  number  of  buffers to fit the application you're running at
  1583.         the moment.  
  1584.  
  1585.  
  1586.         5.4 HIGHDISK.SYS         
  1587.  
  1588.         HIGHDISK.SYS  is  a  device  driver that implements a ram disk in
  1589.         upper  memory.   Bank-Switch  Memory  is  allocated first, and if
  1590.         that  isn't  enough, then High-DOS Memory is allocated to satisfy
  1591.         the  total request.  The device driver automatically loads itself
  1592.         into  upper  memory, putting most of itself in bank-switch memory
  1593.         if  available,  without  using  HIGHDRVR  or the DOS 5 DEVICEHIGH
  1594.         command, as in: 
  1595.  
  1596.                                DEVICE=HIGHDISK.SYS
  1597.  
  1598.         This  creates  a  ram  disk that uses all available upper memory,
  1599.         with 32 directory entries and sectors of 128 bytes each.  
  1600.  
  1601.         A  command line option may be used to specify the size of the RAM
  1602.         disk as in: 
  1603.  
  1604.                              DEVICE=HIGHDISK.SYS 100
  1605.  
  1606.         This creates a 100k byte ram disk.  
  1607.  
  1608.         Other  command  line  options may be used to change the number of
  1609.         bytes per sector and directory entries, as in: 
  1610.  
  1611.                          DEVICE=HIGHDISK.SYS 100 256 64
  1612.  
  1613.         This  creates  a  100k  RAM disk with 256 bytes per sector and 64
  1614.         root directory entries.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1621.  
  1622.  
  1623.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              28
  1624.  
  1625.  
  1626.                 ╔═════════════════════════════════════════════════╗
  1627.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1628.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1629.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1630.                 ║ how much upper memory HIGHUMM can use so that   ║
  1631.                 ║ some will be available for HIGHDISK.            ║
  1632.                 ╚═════════════════════════════════════════════════╝
  1633.  
  1634.  
  1635.         5.5 HIGHDRVR.SYS         
  1636.  
  1637.         HIGHDRVR  is  a  device  driver that is used to load other device
  1638.         drivers  into upper memory.  For a brief introduction to its use,
  1639.         see  the  section  titled  "Testing LASTBYTE.SYS HIGHDRVR.SYS and
  1640.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  1641.         of   this  manual.   Also  see  the  sections  in  the  "HINTS  /
  1642.         SUGGESTIONS   /  EXPLANATIONS"  chapter  near  the  end  of  this
  1643.         document on the /SIZE, /LOW, and /RESTRICT options.  
  1644.  
  1645.         The command line syntax of the CONFIG.SYS line for HIGHDRVR is: 
  1646.  
  1647.                 DEVICE=[path]HIGHDRVR.SYS <filespec> 
  1648.  
  1649.         where  '<filespec>'  is  the  filename of the device driver to be
  1650.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  1651.         specifcation.   The  filespec  may  be preceded by one or more of
  1652.         the  /SIZE,  /LOW, and /RESTRICT options, and followed by options
  1653.         at  the  end  of  the  command line as required by the particular
  1654.         driver to be loaded.  
  1655.  
  1656.         When  HIGHDRVR  searches  the disk for the device driver to load,
  1657.         it follows the following search strategy: 
  1658.  
  1659.              (1)  If  '<filespec>'  includes  a  drive  or directory
  1660.                   specification,  this  will  be the only place that
  1661.                   HIGHDRVR will look.  
  1662.  
  1663.         Otherwise, HIGHDRVR will search for the driver in: 
  1664.  
  1665.              (2)  The current (root) directory, and then 
  1666.  
  1667.              (3)  The same directory where HIGHDRVR was found.  
  1668.  
  1669.  
  1670.         5.6 HIGHEMS3.SYS and HIGHEMS4.SYS       
  1671.  
  1672.         Two  expanded  memory  emulators  are provided with The Last Byte
  1673.         Memory  Manager.   Both  use  upper  memory  as  expanded memory.
  1674.         HIGHEMS3.SYS  is  compliant  with  the  older  LIM  3.2 spec, and
  1675.         HIGHEMS4.SYS  with  the  newer  LIM  4.0 spec.  Both are included
  1676.         since  the  HIGHEMS3.SYS requires much less memory for the device
  1677.  
  1678.  
  1679.  
  1680.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1681.  
  1682.  
  1683.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              29
  1684.  
  1685.  
  1686.         driver  itself  than HIGHEMS4.SYS.  In many applications, you may
  1687.         find that 3.2 is all you need.  
  1688.  
  1689.         These  device  drivers  emulate expanded memory!  That means that
  1690.         they  use  software  to  copy  data  back  and  forth between the
  1691.         logical  EMS  memory (pages) and the page frame.  Obviously, this
  1692.         is  much  slower  than  the  performance  you  would realize with
  1693.         hardware  support,  or even with EMM386.  Therefore, these device
  1694.         drivers  are  provided  as  a  last  resort for those who have no
  1695.         other  way of providing EMS memory to their applications, such as
  1696.         users with only 1 meg of memory.  
  1697.  
  1698.         Both  HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
  1699.         parameter  which  is the number of 16k EMS pages to allocate.  If
  1700.         omitted,  the  maximum  allocation  will  be  used.   Bank-Switch
  1701.         memory  is  allocated  first,  and  if  that  isn't  enough, then
  1702.         High-DOS Memory is allocated to satisfy the total page request.  
  1703.  
  1704.         Use  only  one  of  these  device  drivers,  and  load  it  after
  1705.         LASTBYTE.SYS.   The  driver automatically loads itself into upper
  1706.         memory,  putting  much  of  itself  into  bank-switch  memory  if
  1707.         available,  without  the  need  for  either HIGHDRVR or the DOS 5
  1708.         DEVICEHIGH  command.   Also  see  the  section  on  the /RESTRICT
  1709.         option  in  the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
  1710.         the end of this document.  
  1711.  
  1712.                 ╔═════════════════════════════════════════════════╗
  1713.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1714.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1715.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1716.                 ║ how much upper memory HIGHUMM can use so that   ║
  1717.                 ║ some will be available for HIGHEMS3/HIGHEMS4.   ║
  1718.                 ╚═════════════════════════════════════════════════╝
  1719.  
  1720.  
  1721.         5.7 HIGHENV.EXE         
  1722.  
  1723.         HIGHENV  is  a  utility  that moves the master environment of the
  1724.         command  processor  (typically  COMMAND.COM)  out of conventional
  1725.         memory  and  into High-DOS memory.  It can also be used to change
  1726.         the size of the environment at any time.  
  1727.  
  1728.                 ╔═════════════════════════════════════════════════╗
  1729.                 ║ WARNING: HIGHENV is incompatible with Novell.   ║ 
  1730.                 ╚═════════════════════════════════════════════════╝
  1731.  
  1732.         If  used  without  a  command line option, HIGHENV simply reports
  1733.         the  location,  capacity,  and  length of the master environment.
  1734.         If  the  environment  has not been moved from low memory, it also
  1735.         examines  and  reports  potential  references  to the environment
  1736.         that  exist  within  the  command  processor.  If one or more are
  1737.  
  1738.  
  1739.  
  1740.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1741.  
  1742.  
  1743.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              30
  1744.  
  1745.  
  1746.         located, the first line(s) of output from HIGHENV will be: 
  1747.  
  1748.               "Potential command processor patch at location XXXX."
  1749.  
  1750.         where  "XXXX"  will  vary  from one command processor to another.
  1751.         HIGHENV  should  be used this way at least once to determine what
  1752.         "/PATCH" options (described below) may be required.  
  1753.  
  1754.         To  move  the  master environment into upper memory, you must use
  1755.         one  or  more  /PATCH  options  and  may use a /SIZE option.  The
  1756.         patch  options  specify  locations  in the command processor that
  1757.         must  be  modified.   (If  there  are no locations in the command
  1758.         processor  that  need  to  be  modified,  use  /PATCH=NONE.)  The
  1759.         /PATCH  option  may  only be specified once, when the environment
  1760.         is  moved  from  low  to  upper  memory.  The patch locations are
  1761.         recorded  in  upper  memory and are automatically adjusted if the
  1762.         environment  is repositioned within upper memory as the result of
  1763.         a subsequent use of HIGHENV to resize the environment.  
  1764.  
  1765.         The  size  option  is  simply  a  number that specifies the extra
  1766.         space   in   bytes  to  be  allocated  to  accomodate  additional
  1767.         environment  strings  besides  those already established.  If the
  1768.         size  option  is  omitted, the size of the environment block (and
  1769.         thus its capacity for growth) will not be changed.  
  1770.  
  1771.                 ╔═════════════════════════════════════════════════╗
  1772.                 ║ WARNING: The SET command of COMMAND.COM norm-   ║ 
  1773.                 ║ ally warns you if you run out of space in the   ║ 
  1774.                 ║ master environment.  However, if you have used  ║ 
  1775.                 ║ HIGHENV to move it into upper memory, this      ║ 
  1776.                 ║ safeguard no longer exists - you'll just write  ║ 
  1777.                 ║ over the next thing in upper memory!  Be sure   ║ 
  1778.                 ║ to check the HIGHENV report to be sure that you ║ 
  1779.                 ║ have enough extra space in the environment so   ║ 
  1780.                 ║ that this won't occur.                          ║ 
  1781.                 ╚═════════════════════════════════════════════════╝
  1782.  
  1783.         A  maximum  of four command processor locations to be patched may
  1784.         be specified in either of two ways: 
  1785.  
  1786.                 A>HIGHENV 256 /PATCH=1057 /PATCH=1536 
  1787.  
  1788.                 -or- 
  1789.  
  1790.                 A>HIGHENV 256 /PATCH=1057,1536 
  1791.  
  1792.         Each  of the patch numbers specify a location in the memory image
  1793.         of  the  command  processor;  these locations contain the segment
  1794.         address  of the master environment, and must be modified to point
  1795.         to  the  new master environment in upper memory.  Possible values
  1796.         to  be  used  are  restricted  to  those  locations reported when
  1797.  
  1798.  
  1799.  
  1800.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1801.  
  1802.  
  1803.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              31
  1804.  
  1805.  
  1806.         HIGHENV  is  run  with  no  command  line  options and before the
  1807.         environment has been moved into upper memory.  
  1808.  
  1809.         COMMAND.COM  usually  contains  only one such location that needs
  1810.         to  be  patched;  4DOS  contains  none (use /PATCH=NONE).  (Note:
  1811.         HIGHENV  always  patches  the  environment  address stored in the
  1812.         program  segment  prefix  of  the  command processor - this patch
  1813.         does not need to be specified.) 
  1814.  
  1815.                 ╔═════════════════════════════════════════════════╗
  1816.                 ║ NOTE: The /U option of 4DOS is an alternative   ║ 
  1817.                 ║ method for placing the master environment in    ║ 
  1818.                 ║ upper memory.  You don't need to use HIGHENV if ║ 
  1819.                 ║ you are already using the /U option of 4DOS.    ║ 
  1820.                 ╚═════════════════════════════════════════════════╝
  1821.  
  1822.         Once  moved into upper memory, the size of the environment may be
  1823.         changed  by  using  HIGHENV  with  simply  a  size  option.   For
  1824.         example,  to  shrink  the environment to only enough room for the
  1825.         current environment strings, use: 
  1826.  
  1827.                 A>HIGHENV 0 
  1828.  
  1829.         Or  to  change  the  growth  capacity  to  allow  for the current
  1830.         environment strings plus 100 bytes more, use: 
  1831.  
  1832.                 A>HIGHENV 100 
  1833.  
  1834.  
  1835.         5.8 HIGHFILE.EXE         
  1836.  
  1837.         This  program  is  used  to  implement  most  of  the  CONFIG.SYS
  1838.         "FILES=n"   directive   in   High-DOS   memory   rather  than  in
  1839.         Conventional  memory.   The  amount  of  memory  required  by the
  1840.         "FILE=n"  directive is approximately 'n' times 59 bytes.  Set the
  1841.         minimum  of  FILES=8  in  the CONFIG.SYS file, and then place the
  1842.         rest in High-DOS memory.  For example, the command: 
  1843.  
  1844.                                    HIGHFILE 42
  1845.  
  1846.         will  add an additional FILES=42 (2500 bytes) in High-DOS memory,
  1847.         for a total of FILES=50.  
  1848.  
  1849.                 ┌─────────────────────────────────────────────────┐
  1850.                 │ NOTE: Windows 3.0 may not run in 386 Enhanced   │
  1851.                 │ mode with FILES in upper memory.                │
  1852.                 └─────────────────────────────────────────────────┘ 
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1861.  
  1862.  
  1863.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              32
  1864.  
  1865.  
  1866.         5.9 HIGHHOLE.EXE         
  1867.  
  1868.         HIGHHOLE  is  a utility program that finds unused space ("holes")
  1869.         in  ROMs.   A  "hole"  is  defined  as a sequence of at least 256
  1870.         bytes,  all  having  the  same  value, and usually corresponds to
  1871.         unused,  left-over  space  in  the  ROM.  If the ROM is shadowed,
  1872.         this  space  can  usually  be converted into free High-DOS memory
  1873.         using the "HOLE=" option of LASTBYTE.SYS.  
  1874.  
  1875.                 ┌─────────────────────────────────────────────────┐
  1876.                 │ NOTE: The HOLE option is not available in the   │
  1877.                 │ unlicensed version of LASTBYTE.SYS.             │
  1878.                 └─────────────────────────────────────────────────┘ 
  1879.  
  1880.         These  holes  are  often  less  than 1k in size, but sometimes as
  1881.         large  as  6k.   Since  The Last Byte Memory Manager uses a "best
  1882.         fit"  strategy  when  allocating  Hi-DOS memory, even the smaller
  1883.         holes  can  become  useful to hold the master environment created
  1884.         by  HIGHENV,  the  markers  of  HIGHMARK,  or with utilities like
  1885.         HIGHDISK  and  HIGHSPLR  that  can  distribute their memory among
  1886.         several  small pieces.  In addition, The Last Byte Memory Manager
  1887.         will  use  the  smallest  holes for memory control blocks (MCB's)
  1888.         that must be allocated for Bank-Switch memory needs.  
  1889.  
  1890.         HIGHHOLE   merely   locates  probable  holes,  and  suggests  the
  1891.         corresponding  option  to be used with LASTBYTE.SYS.  To activate
  1892.         these  holes,  you must then modify your configuration to include
  1893.         these  options.   No  option  will be suggested for a hole if (1)
  1894.         the  corresponding  ROM  area is not shadowed, (2) the hole is in
  1895.         the  Bios  Data Area (FE05-FFFF), or (3) the corresponding shadow
  1896.         ram is not controlled by The Last Byte Memory Manager.   
  1897.  
  1898.         NOTE:  Use of LASTBYTE.SYS's HOLE option will cause warm boots to
  1899.         be converted into cold boots.  
  1900.  
  1901.  
  1902.         5.10 HIGHINST.EXE         
  1903.  
  1904.         HIGHINST  is simply a TSR version of HIGHTSR that is designed for
  1905.         use  with  the  MS-DOS "INSTALL=" directive of a CONFIG.SYS file.
  1906.         MS-DOS  requires  that  the program named in an INSTALL directive
  1907.         to  be the name of a TSR, and anything else (e.g., HIGHTSR, which
  1908.         is  not  a  TSR)  will produce an error message.  A small part of
  1909.         HIGHINST   (96   bytes)  will  remain  resident  in  conventional
  1910.         memory.  
  1911.  
  1912.         For  a  full  description of command line options and syntax, see
  1913.         the  description  for  HIGHTSR.   Also  see  the  sections on the
  1914.         /SIZE,  /LOW, and /RESTRICT options in the "HINTS / SUGGESTIONS /
  1915.         EXPLANATIONS" chapter near the end of this document.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1921.  
  1922.  
  1923.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              33
  1924.  
  1925.  
  1926.  
  1927.         5.11 HIGHKEY.EXE         
  1928.  
  1929.         HIGHKEY  is  a  advanced  command line editor that can recall and
  1930.         edit  previous  commands.   HIGHKEY  is  similar  to  the  DOSKEY
  1931.         program  in  DOS  5,  but with filename completion and the unique
  1932.         ability  to  store the command line history and much of itself in
  1933.         bank-switch  memory.   It  does not support DOSKEY macros, or the
  1934.         editing keys F7, F9, Alt+F7, or Alt+F10.  
  1935.  
  1936.         To install HIGHKEY, simply enter it as a command at the prompt: 
  1937.  
  1938.                 A>HIGHKEY 
  1939.  
  1940.         This  will  allocate  a  recall buffer with a default size of 512
  1941.         bytes,  but  which  can  be changed at any time with the use of a
  1942.         command line option.  
  1943.  
  1944.  
  1945.         5.11.1 Options         
  1946.  
  1947.         All of the keywords that follow may be abbreviated.  
  1948.  
  1949.         /BUFSIZE=n      Empties the recall buffer, and resizes it to 'n'
  1950.                         bytes.  If 'n' is replaced by the word "MAXIMUM",
  1951.                         the recall buffer size will use all available memory
  1952.                         up to 65535 bytes.
  1953.  
  1954.         /INSERT         Sets the default typing mode to insert.
  1955.  
  1956.         /OVERSTRIKE     Sets the default typing mode to overstike.
  1957.  
  1958.         /HISTORY        Displays the contents of the command line
  1959.                         recall buffer on the screen.
  1960.  
  1961.         filespec        A filename, optionally preceeded by a drive and
  1962.                         directory specification.  If used with the /HISTORY
  1963.                         option, causes the recall buffer to be written to
  1964.                         the specified file.  If used without the /HISTORY
  1965.                         option, it loads the recall buffer from the file.
  1966.  
  1967.  
  1968.         5.11.2 Editing Commands        
  1969.  
  1970.         Some  of  the  HIGHKEY  editing commands use what is known as the
  1971.         "template".   The  template  is  initialized  to  a  copy  of the
  1972.         previous  command line, but may be modified by one or more of the
  1973.         editing commands.  
  1974.  
  1975.         Left Arrow              Moves the cursor back one character.
  1976.  
  1977.  
  1978.  
  1979.  
  1980.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1981.  
  1982.  
  1983.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              34
  1984.  
  1985.  
  1986.         Right Arrow             Moves the cursor forward one character.
  1987.  
  1988.         Up Arrow                Recalls the previous command and stores
  1989.                                 it in the template.
  1990.  
  1991.         Down Arrow              Recalls the next command and stores it
  1992.                                 in the template.
  1993.  
  1994.         PgUp                    Recalls the oldest command and stores it
  1995.                                 in the template.
  1996.  
  1997.         PgDn                    Recalls the most recent command and stores
  1998.                                 it in the template.
  1999.  
  2000.         Ctrl+Left Arrow         Moves the cursor back one word.
  2001.  
  2002.         Ctrl+Right Arrow        Moves the cursor forward one word.
  2003.  
  2004.         Home                    Moves the cursor to the beginning of
  2005.                                 the command line.
  2006.  
  2007.         End                     Moves the cursor to the end of the
  2008.                                 command line.
  2009.  
  2010.         Esc                     Erases the command line; does not affect
  2011.                                 the template.
  2012.  
  2013.         Ins                     Toggles insert versus overwrite mode.
  2014.  
  2015.         Backspace               Deletes the character to the left of the
  2016.                                 cursor; does not affect the template.
  2017.  
  2018.         Del                     Deletes the character at the cursor; does
  2019.                                 not affect the template.
  2020.  
  2021.         Ctrl+End                Deletes from the cursor to the end of
  2022.                                 the line; does not affect the template.
  2023.  
  2024.         Ctrl+Home               Deletes from the beginning of the line
  2025.                                 up to but not including the cursor; does
  2026.                                 not affect the template.
  2027.  
  2028.         F1                      Copies one character from the template.
  2029.  
  2030.         F2                      Waits for a keypress, then inserts charac-
  2031.                                 ters from the template up to but not in-
  2032.                                 cluding the first occurrence of that key.
  2033.  
  2034.         F3                      Copies the remainder of the template to
  2035.                                 the command line.
  2036.  
  2037.  
  2038.  
  2039.  
  2040.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2041.  
  2042.  
  2043.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              35
  2044.  
  2045.  
  2046.         F4                      Waits for a keypress, then deletes charac-
  2047.                                 ters from the template up to but not in-
  2048.                                 cluding that key.  The template is then
  2049.                                 displayed on the command line.
  2050.  
  2051.         F5                      Copies the command line to the template
  2052.                                 and then erases the command line.
  2053.  
  2054.         F6                      Inserts an end-of-file character (Ctrl+Z).
  2055.  
  2056.         F8                      Searches for the next command that matches
  2057.                                 the characters in the command line up to
  2058.                                 the position of the cursor, then copies
  2059.                                 that command to the template.
  2060.  
  2061.         Tab                     Searches for a file on the disk whose name
  2062.                                 matches the partial filespec given by the
  2063.                                 text indicated by the cursor.  If found,
  2064.                                 the filespec is completed on the command
  2065.                                 line.
  2066.  
  2067.  
  2068.         5.12 HIGHMARK.EXE         
  2069.  
  2070.         Sometimes  it  can  be  useful  to  remove one or more TSR's from
  2071.         memory,  either  because  you  no longer want to use the features
  2072.         that  they  provide  or perhaps in order to make room for another
  2073.         set of TSR's.  
  2074.  
  2075.         In  order  to  be  able  to  remove  a  group of TSR's from upper
  2076.         memory,  they must be be marked.  To mark them, run HIGHMARK once
  2077.         before  you  use  HIGHTSR  to load the TSR's.  Then later, simply
  2078.         run  HIGHUNDO  - the mark and all of its associated TSR's will be
  2079.         removed.  
  2080.  
  2081.         HIGHMARK  may  be  executed  more than once to establish multiple
  2082.         levels  of  TSR's  to  be  removed.   Each  execution of HIGHMARK
  2083.         places  another  mark in memory with a unique mark number.  Every
  2084.         TSR  loaded  by HIGHTSR is automatically associated with the most
  2085.         recent  execution  of  HIGHMARK.   You can use HIGHMEM to see the
  2086.         marks,  their  mark  number, and the set of TSR's associated with
  2087.         the  mark.   Every execution of HIGHUNDO will then remove the set
  2088.         of TSR's associated with the most recent HIGHMARK.  
  2089.  
  2090.         You  may  specify  a  mark level on the command line of HIGHUNDO.
  2091.         This  will  cause it to remove all the TSR's and marks whose mark
  2092.         number  is  greater  than  or  equal to the number on the command
  2093.         line.  
  2094.  
  2095.         IMPORTANT:  When  a  mark  is  removed  using HIGHUNDO, two basic
  2096.         things  happen: (1) the interrupt vector table is restored to its
  2097.  
  2098.  
  2099.  
  2100.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2101.  
  2102.  
  2103.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              36
  2104.  
  2105.  
  2106.         state  prior  to  the  corresponding HIGHMARK, and (2) any memory
  2107.         control  blocks  marked  with  the same mark number are released.
  2108.         If  you  have  installed  one  or  more  TSR's since the mark was
  2109.         established,  but  did so without the use of HIGHTSR, these TSR's
  2110.         will  be  disabled but they will not be removed from memory.  The
  2111.         following three examples indicate this consequence: 
  2112.  
  2113.                 Disabled and            Diabled but     Disabled but
  2114.                 removed                 remains         remains
  2115.                 --------                ------------    ------------
  2116.                 A>HIGHMARK              A>HIGHMARK      A>HIGHMARK
  2117.                 A>HIGHTSR CLOCK         A>CLOCK         A>LOADHIGH CLOCK
  2118.                 A>HIGHUNDO              A>HIGHUNDO      A>HIGHUNDO
  2119.  
  2120.  
  2121.         5.13 HIGHMEM.EXE         
  2122.  
  2123.         HIGHMEM  is  a  program that provides a display of what is loaded
  2124.         into  the upper memory area.  For a detailed description on using
  2125.         the  HIGHMEM  program,  see  the  section  titled  "Mapping Upper
  2126.         Memory  with  HIGHMEM"  in  the  "GETTING STARTED" chapter at the
  2127.         beginning of this manual.  
  2128.  
  2129.         HIGHMEM   automatically  senses  whether  you  have  a  color  or
  2130.         monochrome  display  to  determine  how  to  present  data on the
  2131.         screen.   However, you may force the mode using one of the /MONO,
  2132.         /COLOR, or /LCD command line options.  
  2133.  
  2134.  
  2135.         5.14 HIGHSPLR.EXE         
  2136.  
  2137.         HIGHSPLR  is  a  interrupt-driven  print  spooler  that creates a
  2138.         print  buffer  in  upper  memory.   Once installed, programs that
  2139.         send  output to the printer are no longer held up waiting for the
  2140.         printer,  but  rather  simply  send  their  output to the buffer.
  2141.         Characters  in  the  buffer  are  then sent to the printer by the
  2142.         resident  portion  of  HIGHSPLR while your computer is free to do
  2143.         other work.  
  2144.  
  2145.         Unlike  the MS-DOS printer spooler (PRINT), HIGHSPLR is driven by
  2146.         the   printer   hardware  interrupt  line  that  signals  printer
  2147.         "ready",  rather  than  the  timer  tick (that only interrupts 18
  2148.         times   per   second).   Unlike  PRINT,  this  allows  full-speed
  2149.         transfers  (e.g.,  up  to  about  8,000  cps) to the printer even
  2150.         while executing other programs.  
  2151.  
  2152.         HIGHSPLR  tries  to  place  its buffer in Bank-Switch memory, but
  2153.         will  use  High-DOS  memory if a sufficient amount of Bank-Switch
  2154.         memory  is not available.  The size of the buffer will default to
  2155.         all  available  Bank-Switch  and  High-DOS  memory,  but  may  be
  2156.         restricted (or resized later) by a command line option.  
  2157.  
  2158.  
  2159.  
  2160.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2161.  
  2162.  
  2163.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              37
  2164.  
  2165.  
  2166.  
  2167.         HIGHSPLR   supports   both  parallel  and  serial  printers,  but
  2168.         defaults  to  LPT1.  Multiple copies of HIGHSPLR can be installed
  2169.         to  support  more  than  one  printer.   HIGHSPLR  determines the
  2170.         physical  i/o  port  address  and  interrupt vector automatically
  2171.         from  the  device  name  (e.g.,  LPT2), but these defaults can be
  2172.         altered with command line options.  
  2173.  
  2174.         HIGHSPLR  also  has  a  unique "monitor" option.  While output is
  2175.         being  sent  to  the printer, you can monitor the actual transfer
  2176.         rate by entering the command, 
  2177.  
  2178.                 A>HIGHSPLR MONITOR 
  2179.  
  2180.         The  monitor  operation may be terminated at any time by pressing
  2181.         a  key, or will automatically terminate when the print buffer has
  2182.         been   emptied.   Once  terminated,  HIGHSPLR  will  display  the
  2183.         maximum  and  average  transfer rates measured during the monitor
  2184.         operation.  
  2185.  
  2186.         The  command  line  syntax  for  HIGHSPLR  is  given  below.  All
  2187.         parameters  are  optional and may be specified in any order.  All
  2188.         of  the  options  except  LPT, COM, and IRQ may be abbreviated by
  2189.         their first letter; 
  2190.  
  2191.                 HIGHSPLR [opt] [opt] ... [opt]
  2192.  
  2193.                 where opt may be selected from:
  2194.  
  2195.                 LPT1    LPT2    LPT3    POLL    COM1    COM2    COM3    COM4
  2196.                 IRQ0    IRQ1    IRQ2    IRQ3    IRQ4    IRQ5    IRQ6    IRQ7
  2197.                 RESET   NOTEST  MONITOR         KBYTES=#        PORT=#
  2198.                 or FLOW=<type>, where <type> is selected from:
  2199.  
  2200.                 XON     DTR     RTS     NONE (default)
  2201.  
  2202.         Normally,  neither  the  "PORT"  or  "IRQ"  options are necessary
  2203.         since  they  are  automatically  derived  from the "COM" or "LPT"
  2204.         option.   Use  "POLL"  if  you don't want to use interrupt-driven
  2205.         output;  this may be necessary if another parallel port is in use
  2206.         for  some  other  purpose  (e.g., with Lantastic/Z).  The "RESET"
  2207.         option  provides a way to cancel printing from the buffer (and do
  2208.         a  form-feed) at any time.  One of the FLOW control options (XON,
  2209.         DTR,  RTS)  may  be  required  with some serial (COM) printers to
  2210.         provide  flow  control.  The "NOTEST" option disables the default
  2211.         test  for functionality of the physical port that occurs when the
  2212.         software is first installed.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2221.  
  2222.  
  2223.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              38
  2224.  
  2225.  
  2226.         5.15 HIGHTSR.EXE         
  2227.  
  2228.         HIGHTSR  is  a  program  that  is  used to load TSR programs into
  2229.         upper  memory.   For  a  brief  introduction  to its use, see the
  2230.         section    titled    "Testing   LASTBYTE.SYS   HIGHDRVR.SYS   and
  2231.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  2232.         of  this  manual.   In  addition  to  the /NOENV option described
  2233.         below,  also  see  the sections on the /SIZE, /LOW, and /RESTRICT
  2234.         options  in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
  2235.         the end of this document.  
  2236.  
  2237.         The command line syntax for HIGHTSR is: 
  2238.  
  2239.                 [path]HIGHTSR <filespec> 
  2240.  
  2241.         where  '<filespec>'  is  the  filename  of  the TSR program to be
  2242.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  2243.         specifcation.   The  filespec  may  be preceded by one or more of
  2244.         the  /SIZE,  /LOW, /NOENV, and /RESTRICT options, and followed by
  2245.         options  at  the  end  of  the  command  line  as required by the
  2246.         particular TSR to be loaded.  
  2247.  
  2248.         When  HIGHTSR searches the disk for the device driver to load, it
  2249.         follows   the   same  strategy  that  MS-DOS  uses  when  loading
  2250.         programs: 
  2251.  
  2252.              (1)  If  '<filespec>'  includes  a  drive  or directory
  2253.                   specification,  this  will  be the only place that
  2254.                   HIGHTSR will look.  
  2255.  
  2256.         Otherwise, HIGHTSR will search for the TSR program in: 
  2257.  
  2258.              (2)  The current directory, and then 
  2259.  
  2260.              (3)  Those  directories  given  by the PATH environment
  2261.                   variable.  
  2262.  
  2263.  
  2264.         5.15.1 The /NOENV Option       
  2265.  
  2266.         All  programs,  including  TSR's,  are  allocated  two regions of
  2267.         memory  when  they  are  loaded:  One is the area for the program
  2268.         itself,  and  the  other  is for a copy of the environment.  Most
  2269.         TSR's  don't  make  use  of  their environment, and some actually
  2270.         release it to the operating system rather than hanging onto it.  
  2271.  
  2272.         If  HIGHMEM  finds  an environment block, the corresponding entry
  2273.         in  the  "Description"  column will have the name of the TSR that
  2274.         it  belongs  to  (such as "CLOCK.EXE") followed by the indication
  2275.         "[Env]".    Occassionally,  you  may  see  a  similar  indication
  2276.         "[Dat]";  this  is  a  data block explicitly allocated by the TSR
  2277.  
  2278.  
  2279.  
  2280.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2281.  
  2282.  
  2283.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              39
  2284.  
  2285.  
  2286.         for some unknown purpose.  
  2287.  
  2288.                         TSRs that eliminate their PSP   
  2289.  
  2290.              The  authors  of  some  TSR's  attempt to save a little
  2291.              extra  memory  by  having  the  TSR  eliminate  its own
  2292.              Program  Segment  Prefix  (PSP)  during initialization.
  2293.              Doing  so  makes  it  impossible  to identify the TSR's
  2294.              environment    block.     However,   this   byte-saving
  2295.              mentality    will   usually   mean   that   the   TSR's
  2296.              initialization  code  also  eliminates  its environment
  2297.              block, so this is rarely a problem.  
  2298.  
  2299.  
  2300.         If  you  see  a  block labelled "[Env]" in the output of HIGHMEM,
  2301.         then  you  can  use  the /NOENV command line option of HIGHTSR to
  2302.         release this block, even if the TSR didn't: 
  2303.  
  2304.                 HIGHTSR /NOENV CLOCK 
  2305.  
  2306.         As  noted  earlier,  some  TSRs  will  release  their environment
  2307.         anyway  and  so you may be tempted to load them without using the
  2308.         /NOENV  option.   This  usually  will  create  a  "hole" in upper
  2309.         memory  since  the  TSR's  environment is almost always allocated
  2310.         just  below  the TSR itself.  Use of the /NOENV option forces the
  2311.         environment  to  be  allocated down in conventional memory (where
  2312.         it will be reclaimed later) so that the "hole" is eliminated.  
  2313.  
  2314.  
  2315.         5.16 HIGHUMM.SYS         
  2316.  
  2317.         HIGHUMM  is  a  device  driver that creates, and lets application
  2318.         software  use,  Upper  Memory  Blocks (UMB's) in the upper memory
  2319.         area  via  a  standard  protocol that is part of what is known as
  2320.         the  Extended  Memory Specification (XMS).  The number, size, and
  2321.         location  of  UMB  blocks vary widely depending upon the types of
  2322.         hardware adapter cards resident within the upper address space.  
  2323.  
  2324.         HIGHUMM may be installed in one of two ways: 
  2325.  
  2326.              o  If  an  XMS  driver  (such as HIMEM.SYS) has already
  2327.                 been  loaded,  HIGHUMM  will link into it, providing
  2328.                 an  implementation  of  the  two  XMS  functions for
  2329.                 accessing  what  the  XMS specification refers to as
  2330.                 "Upper Memory Blocks" (UMB's).  For example, 
  2331.  
  2332.                         DEVICE=LASTBYTE.SYS {and any options}
  2333.                         DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
  2334.                         DEVICE=HIGHUMM.SYS
  2335.  
  2336.                 Although  described in the XMS specification, so far
  2337.  
  2338.  
  2339.  
  2340.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2341.  
  2342.  
  2343.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              40
  2344.  
  2345.  
  2346.                 the  UMB  functions have not been implemented in any
  2347.                 version  of  HIMEM.SYS.   If your XMS driver happens
  2348.                 to  also  be a UMB provider, HIGHUMM will abort with
  2349.                 a  corresponding  error  message.   You may then use
  2350.                 the  /REPLACE option on the HIGHUMM.SYS command line
  2351.                 to   force   it  to  take  over  responsibility  for
  2352.                 providing UMBs.  
  2353.  
  2354.              o  If  an  XMS driver has not been loaded, then HIGHUMM
  2355.                 will  become a UMB-Only XMS device driver, providing
  2356.                 support  for XMS functions 00h (Get Version Number),
  2357.                 10h   (Allocate  UMB  Block),  11h  (Deallocate  UMB
  2358.                 Block).    All   other  XMS  functions  will  return
  2359.                 failure,   indicating   that  the  function  is  not
  2360.                 implemented.  For example, 
  2361.  
  2362.                         DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  2363.                         DEVICE=HIGHUMM.SYS
  2364.  
  2365.                                 Important!       
  2366.  
  2367.                 If  another  XMS  device driver is used (e.g., to
  2368.                 provide  management  of  extended  memory  or the
  2369.                 upper  memory  area),  it  must  be loaded before
  2370.                 HIGHUMM.SYS.  
  2371.  
  2372.  
  2373.         If  you  want  to limit how much upper memory can be allocated by
  2374.         HIGHUMM  as UMB's, you can specify this in kbytes as an option on
  2375.         the HIGHUMM.SYS command line, as in: 
  2376.  
  2377.                 DEVICE=HIGHUMM.SYS 60 
  2378.  
  2379.         This  provides  a guarantee that some amount of upper memory will
  2380.         never  be  allocated  by  HIGHUMM.SYS,  and  will  thus  still be
  2381.         available for other uses.  
  2382.  
  2383.         HIGHUMM  requires  that  LASTBYTE.SYS  be  installed  first.   It
  2384.         automatically  loads  itself  into  upper memory, putting much of
  2385.         itself  into  bank-switch  memory  if  available,  without  using
  2386.         either  HIGHDRVR  or  the DOS 5 DEVICEHIGH command.  Also see the
  2387.         section  on  the  /RESTRICT  option in the "HINTS / SUGGESTIONS /
  2388.         EXPLANATIONS" chapter near the end of this document.  
  2389.  
  2390.  
  2391.         5.17 HIGHUNDO.EXE         
  2392.  
  2393.         For  a complete discussion of HIGHUNDO see the description of its
  2394.         companion program, HIGHMARK in an earlier section.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2401.  
  2402.  
  2403.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              41
  2404.  
  2405.  
  2406.                CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    
  2407.  
  2408.  
  2409.         The  following  article  provides  an excellent definition of the
  2410.         various   kinds   of  memory,  such  as  conventional,  extended,
  2411.         expanded,  high,  and  upper.   More  important,  however, is its
  2412.         discussion  of  how  various  adapter cards make use of the upper
  2413.         address  space,  and  may  provide  some insight if you're having
  2414.         problems   getting  The  Last  Byte  Memory  Manager  to  install
  2415.         properly: 
  2416.  
  2417.              Barry  Simon,  "How  to Get the Most from Your System's
  2418.              High  DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
  2419.              1990), pp. 347-358.  
  2420.  
  2421.  
  2422.         6.1 The /SIZE Option       
  2423.  
  2424.         This option may be used with HIGHDRVR, HIGHINST, and HIGHTSR.  
  2425.  
  2426.         The  amount  of  High-DOS memory required to load a device driver
  2427.         or  TSR  is  the  larger  of two amounts: (1) the amount required
  2428.         during  initialization  and  (2)  the  final resident requirement
  2429.         once  installed.   Either or both of these may be greater than or
  2430.         equal to the size of the file.  
  2431.  
  2432.         Most   device   drivers   and   TSR's  require  more  memory  for
  2433.         initialization  than  when  resident,  although  there  are a few
  2434.         (such   as   SMARTDRV.SYS  and  NANSI.SYS)  which  require  extra
  2435.         resident  memory  for  buffers,  etc.   The  normal  operation of
  2436.         HIGHDRVR,  HIGHTSR,  and  HIGHINST  is  to  use  the largest free
  2437.         High-DOS  memory  block  to  load the software since the resident
  2438.         memory  requirement cannot be determined until after the software
  2439.         has been loaded and initialized.  
  2440.  
  2441.         Unfortunately,  this  can  lead  to  a  less  than optimum use of
  2442.         memory.   If  the  memory  requirements were known, then a memory
  2443.         block  could  be  selected using a "best fit" strategy; i.e., the
  2444.         smallest  free  High-DOS  memory  block  which  is larger than or
  2445.         equal  to  the  load  requirement.   This usually results in much
  2446.         better utilization of memory.  
  2447.  
  2448.         6.1.1 Measuring Load Requirements Using "/SIZE"     
  2449.  
  2450.         If  inserted  on  the  command  line  of  HIGHTSR,  HIGHINST,  or
  2451.         HIGHDRVR as shown below: 
  2452.  
  2453.                            HIGHTSR /SIZE PRINT /D:PRN
  2454.  
  2455.         then  both  the  initialization and resident requirements will be
  2456.         displayed  on  the console after the software has been loaded and
  2457.  
  2458.  
  2459.  
  2460.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2461.  
  2462.  
  2463.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              42
  2464.  
  2465.  
  2466.         initialized.  
  2467.  
  2468.         6.1.2 Achieving Best Fit Using "/SIZE:n1"     
  2469.  
  2470.         The  larger  of  the initialization and resident requirements may
  2471.         be  specified  with  the  /SIZE  option  to  force  a  "best fit"
  2472.         allocation.  For example: 
  2473.  
  2474.                       HIGHTSR /SIZE:17120 PRINT.EXE /D:PRN
  2475.  
  2476.         6.1.3 Borrowing Initialization Memory Using "/SIZE:n1 n2"    
  2477.  
  2478.         Usually  the resident requirement is less than the initialization
  2479.         requirement.   If  there  isn't  enough  free  High-DOS memory to
  2480.         satisfy  the  initialization requirement, but there is enough for
  2481.         the  resident  requirement,  then  you  may still be able to load
  2482.         your  software  by adding a second parameter to the /SIZE option,
  2483.         as in: 
  2484.  
  2485.                       HIGHTSR /SIZE:16208,5776 PRINT /D:PRN
  2486.  
  2487.         In  this  example, the initialization requirement is specified by
  2488.         the  first parameter and is 16208 bytes; the resident requirement
  2489.         is  specified  by  the  second parameter and is 5776 bytes.  Note
  2490.         that  specifying  the  second parameter is not helpful unless the
  2491.         resident    requirement   is   less   than   the   initialization
  2492.         requirement.  
  2493.  
  2494.         When  the  second  parameter  is  used, HIGHTSR first looks for a
  2495.         free  area larger than or equal to the initialization requirement
  2496.         (the  first parameter); if found, it simply loads the software in
  2497.         this  area  and  the  second  paramter  is  ignored.   Otherwise,
  2498.         HIGHTSR  searches  for  a  free  area larger than or equal to the
  2499.         resident  requirement  (the  second  parameter),  and  which  has
  2500.         "data"  allocated  immediately  above  it that can be temporarily
  2501.         moved  to create enough free memory to satisfy the initialization
  2502.         requirement.   Such  "data"  includes  High-DOS  memory  used  by
  2503.         HIGHDISK,  HIGHEMS3,  HIGHEMS4,  HIGHSPLR,  HIGHKEY,  and for TSR
  2504.         markers.  
  2505.  
  2506.  
  2507.         6.2 The /LOW Option       
  2508.  
  2509.         This option can be used with HIGHDRVR, HIGHINST, and HIGHTSR.  
  2510.  
  2511.         As  noted  earlier,  TSR's  and device drivers often require much
  2512.         more  memory  during  installation  as  compared to that required
  2513.         once  they  are  resident.   This  can  prevent loading them into
  2514.         High-DOS  memory  even  if  there's enough for the resident image
  2515.         (but not enough for initialization).  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2521.  
  2522.  
  2523.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              43
  2524.  
  2525.  
  2526.         HIGHTSR,  HIGHINST,  and  HIGHDRVR  provide an option "/LOW" that
  2527.         can  be  used  with  some  TSR's and device drivers to get around
  2528.         this problem: 
  2529.  
  2530.                 HIGHTSR /LOW APPEND 
  2531.  
  2532.                 -or- 
  2533.  
  2534.                 DEVICE=HIGHDRVR.SYS /LOW MYDRIVER.SYS 
  2535.  
  2536.         For  example,  the  first  example above loads a TSR (APPEND.EXE)
  2537.         and  initializes  it  in  low (conventional) memory where there's
  2538.         lots  of  room,  then copies the (smaller) resident image up into
  2539.         upper memory.  
  2540.  
  2541.                 ╔═════════════════════════════════════════════════╗
  2542.                 ║ WARNING: The design of some software may pre-   ║ 
  2543.                 ║ vent the /LOW option from working properly.     ║ 
  2544.                 ║ Don't use it unless necessary, and then only    ║ 
  2545.                 ║ after you have tested it to be sure everything  ║ 
  2546.                 ║ works as expected.  (For example, it will NOT   ║ 
  2547.                 ║ work with PRINT, SHARE, FASTOPEN, MODE, or      ║ 
  2548.                 ║ HyperDisk.)                                     ║ 
  2549.                 ╚═════════════════════════════════════════════════╝
  2550.  
  2551.  
  2552.         6.3 The /RESTRICT Option       
  2553.  
  2554.         This  option  can  be  used  with  HIGHDRVR,  HIGHINST,  HIGHTSR,
  2555.         HIGHUMM,  HIGHEMS3,  and HIGHEMS4.  When used, it restricts which
  2556.         128k  regions of upper memory may be allocated for use with these
  2557.         utilities.   For  a  detailed discussion of why these regions may
  2558.         need  to  be  restricted and how to control the restrictions, see
  2559.         the   discussion   of   the   RESTRICT  option  in  the  detailed
  2560.         description of LASTBYTE.SYS.  
  2561.  
  2562.  
  2563.         6.4 The /!NOPAUSE Option       
  2564.  
  2565.         All  of  the  utility  programs  (*.EXE files) that come with The
  2566.         Last   Byte  Memory  Manager  support  the  command  line  option
  2567.         "/!NOPAUSE".   This option eliminates the wait-for-keyboard pause
  2568.         after  an error message is displayed.  When one of these programs
  2569.         terminates  with  an  error  message,  it also returns a non-zero
  2570.         errorlevel  which  can be tested in batch files to make automatic
  2571.         decisions  about  how  to  proceed.  The  /!NOPAUSE option simply
  2572.         makes use of the errorlevel more practical.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2581.  
  2582.  
  2583.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              44
  2584.  
  2585.  
  2586.         6.5 Specifying Command Line Options with Indirect Files   
  2587.  
  2588.         Some  of the device drivers and utility programs in The Last Byte
  2589.         Memory  Manager  package  may  require  lots  of  options  to  be
  2590.         specified.   To  avoid  lengthly command lines, these options can
  2591.         be  placed  in  a text file if the name of that file is specified
  2592.         on  the command line preceded by the '@' character.  For example,
  2593.         you'd  probably  run  out of room if all of the following options
  2594.         were required on the LASTBYTE.SYS command line: 
  2595.  
  2596.                    APPEND=64 DOS=B000:32 DOS=F000:32 ? 82C302
  2597.  
  2598.         As  an  alternative,  create  a  corresponding  text  file called
  2599.         LASTBYTE.CFG (for example), and put the options into it: 
  2600.  
  2601.                 A000:64 
  2602.                 DOS=B000:32 DOS=F000:32 
  2603.                 ? 82C302 
  2604.  
  2605.         (Carriage returns in the indirect file are treated as blanks) 
  2606.  
  2607.         Then the CONFIG.SYS command line becomes simply: 
  2608.  
  2609.                 DEVICE=LASTBYTE.SYS @LASTBYTE.CFG 
  2610.  
  2611.         In  effect,  options  taken  from  the indirect file are inserted
  2612.         into  the  command  line,  so  that  one  or  more  indirect file
  2613.         references  may  be  placed  among  other  options on the command
  2614.         line: 
  2615.  
  2616.                 DEVICE=LASTBYTE.SYS ? @TLB.1 A=A000:32 @C:\TLB\TLB.2 
  2617.  
  2618.         Indirect  files  may  be  used  on the command line of any device
  2619.         driver  (.SYS  files) or utility program (.EXE files) in The Last
  2620.         Byte Memory Manager package.  
  2621.  
  2622.  
  2623.         6.6 Using the DOS=F000:32 Option      
  2624.  
  2625.         The  64k  region  starting  at paragraph address F000 is the Bios
  2626.         ROM.   Many  computers  use  a  Bios  ROM  developed  by  AMI  or
  2627.         Phoenix.   The  more  recent  versions  of  these ROMs devote the
  2628.         first  32k  to  initialization  code that is only used during the
  2629.         boot  sequence, and use the second 32k for that portion that must
  2630.         remain  available  at  all  times.  (This seems to be true of the
  2631.         Award Bios as well, but has not been verified.) 
  2632.  
  2633.         By  the time your computer gets to the point in its boot sequence
  2634.         where  it  is  installing  the  device  drivers (e.g., when it is
  2635.         installing  LASTBYTE.SYS),  the  Bios  initialization  code is no
  2636.         longer  needed.   If  you  have  one of these AMI or Phoenix Bios
  2637.  
  2638.  
  2639.  
  2640.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2641.  
  2642.  
  2643.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              45
  2644.  
  2645.  
  2646.         chips,  you  can  capture  another 32k of upper memory by using a
  2647.         DOS=F000:32 option on the LASTBYTE.SYS command line.  
  2648.  
  2649.         Of  course,  whenever  you  press Ctrl-Alt-Del to do a warm boot,
  2650.         the  ROM  Bios  initialization  code  needs to be executed again!
  2651.         And  that could be a problem since you've effectively disabled it
  2652.         with   the   DOS=F000:32   option!    Fortunately,   LASTBYTE.SYS
  2653.         intercepts   all   keyboard  input  and  keeps  an  eye  out  for
  2654.         Ctrl-Alt-Del.   When it sees the warm boot request, it will force
  2655.         a  cold  boot  if  you've  used  the  DOS=F000:32  option.   This
  2656.         re-enables  the  entire  64k  Bios ROM so that the initialization
  2657.         code  is  reactivated  before  the processor tries to execute it.
  2658.         Otherwise a normal warm boot is used.  
  2659.  
  2660.                 ╔═════════════════════════════════════════════════╗
  2661.                 ║ WARNING: Some TSRs intercept keyboard interrupt ║ 
  2662.                 ║ 9, and jump directly into a fixed location in   ║ 
  2663.                 ║ the Bios ROM where the Warm Boot code begins.   ║ 
  2664.                 ║ Unfortunately, this will bypass LASTBYTE.SYS's  ║ 
  2665.                 ║ attempt to turn the ROM back on.                ║ 
  2666.                 ╚═════════════════════════════════════════════════╝
  2667.  
  2668.  
  2669.         6.7 Video Display RAM above 640k     
  2670.  
  2671.         In  general,  the  region A0000-BFFFF is the video display buffer
  2672.         area.   Various  display  adapters  (MDA, Hercules, CGA, EGA, and
  2673.         VGA)  typically  use only a small subset of this space.  The Last
  2674.         Byte  Memory  Manager  automatically  senses  what  kind of video
  2675.         display adapter is installed and reserves the space it uses.  
  2676.  
  2677.         The  MDA  (monochrome)  adapter  implements  a  4k text buffer at
  2678.         B0000-B0FFF,  and  the  CGA (color) adapter implements a 16k text
  2679.         and  graphics  buffer  at B8000-BBFFF.  The Hercules adapter uses
  2680.         the  entire 64k region at B0000-BFFFF in graphics modes, although
  2681.         only  the  first  4k of this space (B0000-B0FFF) is used for text
  2682.         modes.  
  2683.  
  2684.         The  EGA  and  VGA adapters have a 64k graphics display buffer at
  2685.         A0000-AFFFF,  and a 32k text display buffer at either B0000-B7FFF
  2686.         (when  used  with  a monochrome display), or at B8000-BFFFF (when
  2687.         used with a color display).  
  2688.  
  2689.         The  following  chart summarizes these regions as well as some of
  2690.         the  DOS  and  APPEND  optons  you  may  be  able  to  use on the
  2691.         LASTBYTE.SYS  command  line  with these adapters.  Unfortunately,
  2692.         the  ROM  bios  on  a  (very)  few  PC's may write into locations
  2693.         outside  the  area reserved for a particular type of display.  If
  2694.         you  decide  this  is  happening, you may need to add one or more
  2695.         EXCLUDE  options to the LASTBYTE.SYS command line to disable that
  2696.         region.  
  2697.  
  2698.  
  2699.  
  2700.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2701.  
  2702.  
  2703.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              46
  2704.  
  2705.  
  2706.  
  2707.              LASTBYTE.SYS Command Line Options for Display Adapters
  2708.  
  2709.              Adapter         Reserved        DOS         APPEND
  2710.              -------         --------        -------     -------
  2711.              CGA             B800:16                     96
  2712.              MDA             B000:4                      64
  2713.              Hercules        B000:64         B400:48     64
  2714.  
  2715.              EGA/VGA         A000:64         BC00:16     96
  2716.              w/Color         B800:32 
  2717.              Display
  2718.  
  2719.              EGA/VGA         A000:64         B400:16     64
  2720.              w/Mono          B000:32
  2721.              Display
  2722.  
  2723.              VGA Bios        C000:32         C600:8 (see next section)
  2724.  
  2725.                   Note: Windows 3.0 may write in the region B000-BFFF.
  2726.  
  2727.         The  ability  to  use  the  DOS and APPEND options depends on the
  2728.         availability  of other memory in the indicated area.  For further
  2729.         information, consult the appendix on "CHIPSET LIMITATIONS".  
  2730.  
  2731.  
  2732.         6.8 Video Adapter Bios ROMs      
  2733.  
  2734.         MDA  and CGA use the standard ROM Bios; they have no ROM of their
  2735.         own.   EGA  and  VGA adapters, however, incorporate their own ROM
  2736.         Bios  chip  right on the adapter card.  LASTBYTE.SYS successfully
  2737.         recognizes these ROMs, but has to treat VGA in a special manner: 
  2738.  
  2739.         The  VGA  adapter  made  by  IBM  has  a  24k  ROM  installed  at
  2740.         C0000-C5FFF,  which  means  that  the 8k at C6000-C7FFF should be
  2741.         usable.   Although  almost  all  VGA  clones have a ROM signature
  2742.         that  indicates  24k,  many of them use the C6000-C7FFF space for
  2743.         ROM  Bios  or  RAM  extensions  that  provide  their  "Super VGA"
  2744.         features.    In   particular,   the  Video7  and  Paradise  VGA's
  2745.         incorporate  their  own  RAM from C6000-C7FFF.  (This may also be
  2746.         true  of  other  VGA boards that uses a VLSI chip manufactured by
  2747.         Chips   and  Technologies,  Tseng  Labs,  Paradise,  or  Headland
  2748.         Technologies.)    For   this   reason,  when  LASTBYTE.SYS  finds
  2749.         anybody's  VGA  adapter, it automatically assumes that there is a
  2750.         32k ROM at C0000-C7FFF.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2761.  
  2762.  
  2763.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              47
  2764.  
  2765.  
  2766.         6.9 LASTBYTE.SYS and Expanded Memory      
  2767.  
  2768.         Expanded  memory always has an associated device driver.  If that
  2769.         driver  is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
  2770.         if  the  hardware is enabled) LASTBYTE.SYS will recognize the 64k
  2771.         EMM  page frame of the expanded memory and do the right thing: It
  2772.         will  treat the page frame like any other adapter ram and disable
  2773.         the  motherboard RAM that falls in the same address space so that
  2774.         it  doesn't  interfere  with the page frame.  For example, if the
  2775.         EMM  driver is loaded first, LASTBYTE.SYS will report the 64k EMM
  2776.         page frame as "EMS Page Frame".  
  2777.  
  2778.         This  works  fine,  of  course,  but loading the EMM driver first
  2779.         precludes  the  possibility  of loading it into upper memory.  To
  2780.         get  the  EMM  driver  into  upper  memory  means that it must be
  2781.         loaded after LASTBYTE.SYS, but you must be careful! 
  2782.  
  2783.         If   LASTBYTE.SYS  is  loaded  first,  the  page  frame  will  be
  2784.         recognized only in two cases: 
  2785.  
  2786.              o  The   page   frame   used  by  the  expanded  memory
  2787.                 controller  built  into some memory controller chips
  2788.                 will   be  recognized  and  reported  as  "EMS  Page
  2789.                 Frame".  
  2790.  
  2791.              o  The  page  frame  of a REAL expanded memory board is
  2792.                 (if  enabled)  recognized  and  reported as "Adapter
  2793.                 RAM".  
  2794.  
  2795.         In either case, LASTBYTE.SYS will not use that memory space.  
  2796.  
  2797.                 ╔═════════════════════════════════════════════════╗
  2798.                 ║ WARNING: Some EMS boards must be enabled by     ║ 
  2799.                 ║ their device driver before they respond as      ║ 
  2800.                 ║ read/write memory.  This prevents LASTBYTE.SYS  ║ 
  2801.                 ║ from recognizing them, and you may need a       ║ 
  2802.                 ║ BANKSWITCH option to keep LASTBYTE.SYS from     ║ 
  2803.                 ║ using the page frame memory space.              ║ 
  2804.                 ╚═════════════════════════════════════════════════╝
  2805.  
  2806.         If  you  don't  have  an  expanded  memory board, but have used a
  2807.         device  driver  (like EMM386) that EMULATES expanded memory using
  2808.         extended  memory,  then LASTBYTE.SYS will not know about the page
  2809.         frame  unless  the  emulator is loaded first.  If LASTBYTE.SYS is
  2810.         loaded   first,   then   you   must   use   a   "EXCLUDE="   (not
  2811.         "BANKSWITCH="!)  command line option of LASTBYTE.SYS to reserve a
  2812.         64k  region  where  the  emulated  page frame can be placed.  For
  2813.         EMM386,  the  page  frame must be positioned at C000, C400, C800,
  2814.         CC00, D000, D400, D800, DC00, or E000.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2821.  
  2822.  
  2823.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              48
  2824.  
  2825.  
  2826.         6.10 Fine-Tuning your Adapter Hardware Configuration     
  2827.  
  2828.         Many  adapter  cards  occupy  some  portion  of the upper address
  2829.         space.   Some  of  these  cards,  such  as SCSI Disk Controllers,
  2830.         often  have  DIP  switches or jumpers that can be used to set the
  2831.         address space they occupy to one of a few alternatives.  
  2832.  
  2833.         If  the memory map displayed by HIGHMEM is fragmented because one
  2834.         of  these adapters sits between two "....DOS Free" areas, you may
  2835.         want  to  try  to  reposition  the address space occupied by that
  2836.         adapter  by  modifying  the  DIP switch or jumper settings on the
  2837.         card.  
  2838.  
  2839.         Having  one  large  free  memory block is better than two smaller
  2840.         ones  because TSR's and device drivers almost always require more
  2841.         memory  during  initialization  than  once  installed.   In other
  2842.         words,  neither of the two smaller blocks may be large enough for
  2843.         the installation, but might if they were combined.  
  2844.  
  2845.  
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2881.  
  2882.  
  2883.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              49
  2884.  
  2885.  
  2886.                     CHAPTER 7 - USE WITH OTHER SOFTWARE     
  2887.  
  2888.  
  2889.         7.1 Microsoft's FASTOPEN and MODE programs     
  2890.  
  2891.         The  FASTOPEN  and  MODE programs that come with MS-DOS are TSR's
  2892.         and  as  such may be loaded into upper memory with either HIGHTSR
  2893.         or  HIGHINST.   Once installed, each requires very little memory,
  2894.         something  on  the  order  of 10k or less.  However, neither will
  2895.         install  unless  a  lot  of  memory  is available - approximately
  2896.         50-90k.   (The  actual requirement depends partly on command line
  2897.         options;  you  can  determine  the  requirement  using  the /SIZE
  2898.         option of HIGHTSR or HIGHINST.) 
  2899.  
  2900.                 ╔═════════════════════════════════════════════════╗
  2901.                 ║ WARNING: Do NOT use the /LOW option of HIGHTSR  ║ 
  2902.                 ║ or HIGHINST with FASTOPEN or MODE - it won't    ║ 
  2903.                 ║ work and could damage data on your disk!        ║ 
  2904.                 ╚═════════════════════════════════════════════════╝
  2905.  
  2906.         The  worst  part  is  that  if  FASTOPEN  fails to install itself
  2907.         successfully,  it  doesn't  issue  any  error message - it simply
  2908.         doesn't   display   the   normal   "FASTOPEN  installed"  sign-on
  2909.         message.   Moral:  Let  FASTOPEN and MODE be the first TSR's that
  2910.         are  installed into High Memory in your AUTOEXEC.BAT file so that
  2911.         they get access to the maximum amount of memory.  
  2912.  
  2913.         The  second  hassle  with  these two TSR's is that they cannot be
  2914.         removed  by  using  HIGHMARK and HIGHUNDO.  Evidently they modify
  2915.         memory  other than that tracked by HIGHMARK (the interrupt vector
  2916.         table and that memory allocated to them).  
  2917.  
  2918.  
  2919.         7.2 Microsoft's SHARE program       
  2920.  
  2921.         MS-DOS  4  installs the SHARE program automatically if you have a
  2922.         hard  disk which is greater than 32 MB in a single partition.  It
  2923.         does  this  without  asking  because  it is otherwise possible to
  2924.         corrupt  the  data on the disk when running programs that use the
  2925.         old File Control Block (FCB) approach to access files.  
  2926.  
  2927.         Unfortunately,  some  internal parts of MS-DOS 4.0 also still use
  2928.         FCB's!   So  don't  try  to  prevent  SHARE  from being loaded by
  2929.         removing  it  from  your system!  If MS-DOS can't find it, you'll
  2930.         get  a  warning message during the boot saying that "SHARE should
  2931.         be   loaded   for   large  media".   You  could  load  it  during
  2932.         AUTOEXEC.BAT   processing,  but  you'll  still  get  the  warning
  2933.         because the check occurs during CONFIG.SYS processing.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2941.  
  2942.  
  2943.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              50
  2944.  
  2945.  
  2946.                 ╔═════════════════════════════════════════════════╗
  2947.                 ║ NOTE: Version 5 of MS-DOS has corrected this    ║ 
  2948.                 ║ problem and no longer loads SHARE automatically ║ 
  2949.                 ║ regardless of the size of your hard disk.       ║ 
  2950.                 ╚═════════════════════════════════════════════════╝
  2951.  
  2952.         So  how  can  you load this TSR into upper memory without getting
  2953.         the   warning?    MS-DOS   recently   introduced  the  "INSTALL="
  2954.         directive  that  allows  TSR's  to be installed during CONFIG.SYS
  2955.         processing.   Programs  that Microsoft suggests be loaded in this
  2956.         manner include FASTOPEN, KEYB, NLSFUNC, and SHARE.  For example: 
  2957.  
  2958.                             INSTALL=C:\DOS\SHARE.EXE
  2959.  
  2960.         The  above  command,  however,  causes SHARE to be loaded down in
  2961.         conventional memory.  to get it into upper memory, use: 
  2962.  
  2963.                       INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
  2964.  
  2965.                 ╔═════════════════════════════════════════════════╗
  2966.                 ║ WARNING: Do NOT use the /LOW option of HIGHINST ║ 
  2967.                 ║ with SHARE - it won't work and could damage     ║ 
  2968.                 ║ data on your disk!                              ║ 
  2969.                 ╚═════════════════════════════════════════════════╝
  2970.  
  2971.  
  2972.         7.3 Microsoft's MS-DOS 5.0       
  2973.  
  2974.         With   the  introduction  of  MS-DOS  5.0,  Microsoft  has  added
  2975.         extensive  support  for  loading software into high memory.  This
  2976.         includes  not  only  device drivers and TSRs, but also the MS-DOS
  2977.         disk  buffers,  the master environment, and most of the operating
  2978.         system itself.  
  2979.  
  2980.         This  capability  requires the use of an Upper Memory Block (UMB)
  2981.         server  such as Key Software Products' HIGHUMM.SYS.  Although the
  2982.         MS-DOS  5.0  version  of EMM386 has been modified to provide such
  2983.         support,  there  are several disadvantages to using it instead of
  2984.         The Last Byte Memory Manager to load software high: 
  2985.  
  2986.              o  EMM386   requires   a   386   or  better  processor.
  2987.                 (HIGHUMM does not.) 
  2988.  
  2989.              o  EMM386  requires  that  HIMEM.SYS  be  loaded first.
  2990.                 (HIGHUMM  does  not.   However, HIMEM is also needed
  2991.                 to  load  the  operating system itself into extended
  2992.                 memory;  The  Last Byte Memory Manager allows you to
  2993.                 load HIMEM into upper memory using HIGHDRVR.) 
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3001.  
  3002.  
  3003.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              51
  3004.  
  3005.  
  3006.              o  Using  HIMEM  and EMM386 as the basis of UMB support
  3007.                 requires  that  both  be  loaded  into  conventional
  3008.                 memory, where they use approximately 10k bytes.  
  3009.  
  3010.              o  EMM386  puts  the  processor  into  protected  mode,
  3011.                 adding  an  instruction  execution  time  penalty of
  3012.                 about 5%.  
  3013.  
  3014.         There  are  two  basic  approaches  that  you  can  take  to load
  3015.         software  into  upper  memory  using MS-DOS 5.0 and The Last Byte
  3016.         Memory  Manager.   The  first  of these is to install HIGHUMM and
  3017.         use  the  'DEVICEHIGH'  and  'LOADHIGH'  commands  introduced  in
  3018.         MS-DOS   5.0;   the   other   is  to  use  HIGHDRVR  and  HIGHTSR
  3019.         (HIGHINST).  
  3020.  
  3021.         We  recommend  the  latter  approach because HIGHDRVR and HIGHTSR
  3022.         provide  a  richer  set  of options for controlling the load high
  3023.         process.  
  3024.  
  3025.  
  3026.         7.3.1 Using DEVICEHIGH and LOADHIGH      
  3027.  
  3028.         To  use  this  approach,  your CONFIG.SYS file should contain the
  3029.         following lines: 
  3030.  
  3031.                 DOS=HIGH,UMB 
  3032.                 DEVICE=LASTBYTE.SYS {and any options} 
  3033.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  3034.                 DEVICE=HIGHUMM.SYS {and any options} 
  3035.  
  3036.         Then  you can use the MS-DOS 5.0 DEVICEHIGH command in additional
  3037.         lines  of  your CONFIG.SYS file to load your other device drivers
  3038.         into upper memory, as in: 
  3039.  
  3040.                 DEVICEHIGH={device driver to be loaded high} 
  3041.                 DEVICEHIGH={device driver to be loaded high} 
  3042.                         . . .  
  3043.                 DEVICEHIGH={device driver to be loaded high} 
  3044.  
  3045.         With  this  CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs
  3046.         high using the MS-DOS 5.0 LOADHIGH command as in: 
  3047.  
  3048.                 LOADHIGH C:\DOS\PRINT 
  3049.  
  3050.  
  3051.         7.3.2 Using HIGHDRVR and HIGHTSR      
  3052.  
  3053.         The  second approach is to use the HIGHDRVR and HIGHTSR utilities
  3054.         of  The  Last  Byte  Memory Manager in the normal manner.  To use
  3055.         this  approach, your CONFIG.SYS file should contain the following
  3056.         lines: 
  3057.  
  3058.  
  3059.  
  3060.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3061.  
  3062.  
  3063.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              52
  3064.  
  3065.  
  3066.  
  3067.                 DOS=HIGH 
  3068.                 DEVICE=LASTBYTE.SYS {and any options} 
  3069.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  3070.  
  3071.         Then  you can use HIGHDRVR in additional lines of your CONFIG.SYS
  3072.         file to load your other device drivers into upper memory, as in: 
  3073.  
  3074.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3075.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3076.                         . . .  
  3077.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3078.  
  3079.         With  this  CONFIG.SYS  file,  your AUTOEXEC.BAT file should load
  3080.         TSRs high using HIGHTSR as in: 
  3081.  
  3082.                 HIGHTSR C:\DOS\PRINT 
  3083.  
  3084.  
  3085.         7.4 Microsoft's Windows 3.0       
  3086.  
  3087.         In  general,  The  Last  Byte Memory Manager has a high degree of
  3088.         compatibility  with  Windows  3.0.   If  you  are  having trouble
  3089.         running  Windows,  first  be  sure  that  your system is properly
  3090.         configured  so  that it runs without The Last Byte Memory Manager
  3091.         installed.    If   you   have   isolated  the  problem  to  their
  3092.         combination,  then perhaps the following information will help to
  3093.         correct the problem: 
  3094.  
  3095.  
  3096.         7.4.1 Modifying the Windows SYSTEM.INI File     
  3097.  
  3098.         With  Windows  3.0 running in 386 enhanced mode, LASTBYTE.SYS and
  3099.         Windows  will  both  try  to  use  the  upper  memory  area, thus
  3100.         creating  a  conflict.   To  avoid  the  conflict,  you  must ask
  3101.         Windows  to  not  use  this  region.  This can be done with a few
  3102.         configuration  options  in  the  [386Enh]  section of the Windows
  3103.         SYSTEM.INI file: 
  3104.  
  3105.                   EMMExclude=A000-FFFF
  3106.                   HighFloppyReads=no
  3107.                   DualDisplay=yes
  3108.                   SystemROMBreakPoint=no
  3109.  
  3110.         If  you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
  3111.         any  region  of  the upper memory, then Windows may be told it is
  3112.         ok  to  use  that  area.   For example, if LASTBYTE.SYS is loaded
  3113.         using the line: 
  3114.  
  3115.                        DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
  3116.  
  3117.  
  3118.  
  3119.  
  3120.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3121.  
  3122.  
  3123.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              53
  3124.  
  3125.  
  3126.         then  you may use the following configuration option (in addition
  3127.         to the EMMExclude option above) in your SYSTEM.INI file: 
  3128.  
  3129.                               EMMInclude=D000-DFFF
  3130.  
  3131.         The  EMMInclude  option  will take precedence over the EMMExclude
  3132.         option when the two overlap, as above.  
  3133.  
  3134.  
  3135.         7.4.2 Positioning an EMS Page Frame     
  3136.  
  3137.         If  you  are using the Real or Standard modes of Windows, you may
  3138.         have  installed  an EMS device driver for those applications that
  3139.         need  expanded  memory.  In an attempt to reduce fragmentation of
  3140.         upper  memory, it is useful to position the EMS Page Frame either
  3141.         at  the  bottom  or  top  of  an  otherwise empty region of upper
  3142.         memory.   However,  if  you  have  used the DOS=F000:32 option to
  3143.         gain  another  32k  of  DOS  memory, don't position your EMS Page
  3144.         Frame  at  E800  -  Windows  will not run with it any higher than
  3145.         E000.  
  3146.  
  3147.         The  Enhanced  386  mode  of  Windows  will automatically emulate
  3148.         expanded   memory   for   those  applications  that  require  it.
  3149.         Unfortunately,   Windows   ignores   the  EMMExclude  option  and
  3150.         positions  the  EMS  page frame in upper memory.  If the same 64k
  3151.         area  is used by The Last Byte Memory Manager for something else,
  3152.         your   system   may   hang.   To  correct  the  problem,  add  an
  3153.         "EMSPageFrame=nnnn"  option  in  your  SYSTEM.INI  file  to  tell
  3154.         Windows   where   to   put  the  page  frame,  combined  with  an
  3155.         "EXCLUDE=nnnn:64"  option  on  the  LASTBYTE.SYS  command line to
  3156.         keep it from using this area.  
  3157.  
  3158.  
  3159.         7.4.3 "Unsupported Data Configuration"       
  3160.  
  3161.         The  386  Enhanced  mode of Windows 3.0 has a restriction that it
  3162.         cannot  run  when  certain  types  of  software  have been loaded
  3163.         high.   When this happens, Windows will terminate and display the
  3164.         error  message,  "Unsupported  Data  Configuration".   This  only
  3165.         happens  in  386  Enhanced mode, and is not related in particular
  3166.         to use of The Last Byte Memory Manager.  
  3167.  
  3168.         Device  drivers  that are known to load high without this problem
  3169.         include  HIMEM.SYS,  MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the
  3170.         Key  Software Products device drivers.  A device driver and a TSR
  3171.         known  to  cause this problem are EGA.SYS and DOSKEY.COM.  If you
  3172.         are  experiencing  this error message, you can either run Windows
  3173.         in   another   mode,   or   try  modifying  your  CONFIG.SYS  and
  3174.         AUTOEXEC.BAT files to locate and remove the offending software.  
  3175.  
  3176.         Microsoft   is  removing  this  restriction  in  version  3.1  of
  3177.  
  3178.  
  3179.  
  3180.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3181.  
  3182.  
  3183.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              54
  3184.  
  3185.  
  3186.         Windows.  
  3187.  
  3188.  
  3189.         7.4.4 HIGHMEM and Windows 386 Enhanced Mode    
  3190.  
  3191.         MS-DOS  applications  run from inside Windows 3.0 are given their
  3192.         own   "virtual"   address  space  of  640k.   Windows  tells  the
  3193.         processor   to  map  memory  references  in  this  space  to  the
  3194.         particular  640k  of  physical memory which has been allocated to
  3195.         the  application.   References  outside this range are considered
  3196.         invalid  and  thus  return  garbage.   Since HIGHMEM is a program
  3197.         that  inspects  upper  memory  between 640k and 1 meg, there's no
  3198.         way  it  can  execute  properly  in  this  context.  HIGHMEM will
  3199.         behave normally outside of Windows.  
  3200.  
  3201.  
  3202.         7.4.5 HIGHDISK and Windows 386 Enhanced Mode    
  3203.  
  3204.         HIGHDISK.SYS  also  uses memory in the 640k to 1 meg range and so
  3205.         is  susceptible  to the same problems that HIGHMEM experiences as
  3206.         discussed  above.  Outside of Windows, and in any mode other than
  3207.         386 Enhanced Mode, HIGHDISK will behave normally.  
  3208.  
  3209.  
  3210.         7.5 HyperWare's HyperDisk        
  3211.  
  3212.         HyperDisk  is  a  shareware disk caching utility.  It's too large
  3213.         to  load  high  with  HIGHDRVR  or  HIGHTSR  under  the 32K limit
  3214.         imposed  by  the  unlicensed  evaluation version of The Last Byte
  3215.         Memory  Manager.   However,  if  your  computer  uses a Chips and
  3216.         Technologies  NEAT  or  386/AT  chipset, you can work around this
  3217.         limitation  by  using HyperDisk's "XS" option to load itself into
  3218.         the  48k block starting at E400.  Be sure to exclude this area by
  3219.         using the following option on the LASTBYTE.SYS command line: 
  3220.  
  3221.                 DEVICE=LASTBYTE.SYS EXC=E400:48 
  3222.  
  3223.         If  you  have a licensed version of The Last Byte Memory Manager,
  3224.         or  if  you don't have one of the Chips and Technologies chipsets
  3225.         mentioned  above,  then  a  better  approach  is  to  use  either
  3226.         HIGHDRVR  or  HIGHTSR  (as  appropriate)  to  load HyperDisk high
  3227.         (without  HyperDisk's  "XS" option).  This method guarantees that
  3228.         the minimum amount of upper memory will be used.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3241.  
  3242.  
  3243.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              55
  3244.  
  3245.  
  3246.         HyperDisk  can  be  downloaded  from  HyperWare's  BBS  at  (615)
  3247.         864-6871, or obtained directly from: 
  3248.  
  3249.                 HyperWare 
  3250.                 RR#1, Box 91 
  3251.                 Pall Mall, TN 38577 
  3252.                 Voice: (615) 864-6868 
  3253.                 FAX: (615) 864-6870 
  3254.  
  3255.  
  3256.         7.6 J.P. Software's 4DOS       
  3257.  
  3258.         4DOS  is  a  shareware  replacement for COMMAND.COM.  HIGHUMM.SYS
  3259.         may  be  used  to  move the 4DOS command processor and its master
  3260.         environment  into  "Upper  Memory  Blocks"  (UMB's)  in the upper
  3261.         memory  area,  thus  reducing  the  amount of conventional memory
  3262.         below 640k used by 4DOS from 3.4k bytes to 256 bytes.  
  3263.  
  3264.         First  you  must install HIGHUMM.SYS as described earlier in this
  3265.         manual.   Then  add  a  "SHELL="  line  to  CONFIG.SYS  for 4DOS,
  3266.         including  the options "/U" (to place the command processor in an
  3267.         UMB)  and  "/E:512U" (to place the master environment in an UMB).
  3268.         The  value "512" is of course only an example - other environment
  3269.         sizes  may  be  specified.   You  may  also want to specify these
  3270.         options   for   secondary   shells  in  the  4DSHELL  environment
  3271.         variable.  Consult the 4DOS documentation for further details.  
  3272.  
  3273.         4DOS  may  be downloaded from Channel 1 BBS at (617) 354-8873, or
  3274.         obtained directly from: 
  3275.  
  3276.                 J.P. Software             CompuServe: 75300,210 
  3277.                 P.O. Box 1470             BIX: "trawson" 
  3278.                 E. Arlington, MA 02174    Internet, Bitnet, etc: 
  3279.                 Voice: (617) 646-3975       75300.210@compuserve.com 
  3280.                 Fax: (617) 646-0904 
  3281.  
  3282.  
  3283.         7.7 David Hamilton's BUFFIT       
  3284.  
  3285.         There's  a very nice shareware scroll-back TSR called BUFFIT that
  3286.         saves  lines  of  text that have been scrolled off the top of the
  3287.         screen  and allows you to pull them back down for review.  One of
  3288.         the  advantages  of  version  3.0  and later of BUFFIT is that it
  3289.         will  load  itself  entirely  into a UMB provided by HIGHUMM.SYS,
  3290.         thus using no conventional memory at all.  
  3291.  
  3292.         To  install  BUFFIT into upper memory, first you must install the
  3293.         HIGHUMM.SYS  device  driver  by  inserting the following lines in
  3294.         your CONFIG.SYS file: 
  3295.  
  3296.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options} 
  3297.  
  3298.  
  3299.  
  3300.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3301.  
  3302.  
  3303.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              56
  3304.  
  3305.  
  3306.                 DEVICE=HIGHUMM.SYS 
  3307.  
  3308.         Then  all  you  have to do is reboot your computer and run BUFFIT
  3309.         from  the  command  line,  or  else  add  it to your AUTOEXEC.BAT
  3310.         file.  
  3311.  
  3312.         BUFFIT  is  available  from  a number of BBS's, usually under the
  3313.         filename BUFFIT30.ZIP.  
  3314.  
  3315.  
  3316.         7.8 Charles Lazo's WAS       
  3317.  
  3318.         On  a  computer  with  no  expanded memory, you might want to use
  3319.         HIGHEMS3  to  provide  some  Expanded  Memory  for Charles Lazo's
  3320.         scroll-back  TSR, WAS.COM.  This utility saves lines of text that
  3321.         have  been  scrolled  off the top of the screen and allows you to
  3322.         pull  them  back down for review.  WAS is available from a number
  3323.         of BBS's, usually under the filename WAS062.ZIP.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3361.  
  3362.  
  3363.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              57
  3364.  
  3365.  
  3366.                         APPENDIX 1 - HOW TO REACH US     
  3367.  
  3368.  
  3369.         The  KSP  telephone  (415-364-9847)  is shared by our BBS and our
  3370.         voice  mail  answering  system.   Approximate  hours of operation
  3371.         are: 
  3372.  
  3373.                    Voice mail system: 8am - 5pm PST (weekdays)
  3374.  
  3375.                  BBS system: 5pm - 8am PST (24 hrs on weekends)
  3376.  
  3377.                BBS Parameters: 1200/2400/9600 baud (v.32, v.42bis)
  3378.                              8 data bits, No Parity
  3379.  
  3380.         If  your call is answered by the voice mail system, it can take a
  3381.         message   that will be automatically forwarded to someone who can
  3382.         return  your  call as soon as possible.  In addition, it offers a
  3383.         touch-tone driven menu of useful information about our product.  
  3384.  
  3385.         If  you have access to electronic mail, you can send us a message
  3386.         via any of the following: 
  3387.  
  3388.         On BITNET, send mail to: DLEWIS@SCU.BITNET
  3389.  
  3390.         On COMPUSERVE, send mail to: >Internet:DLEWIS@SCUACC.SCU.EDU
  3391.  
  3392.         On CONNECT, send mail to: CONNECT id "DASNET"
  3393.  
  3394.                 1st line of message: \"DLEWIS@SCUACC.SCU.EDU\"@DASNET
  3395.  
  3396.         On FIDONET, send mail to: UUCP
  3397.  
  3398.                 1st line of message: To: DLEWIS@SCUACC.SCU.EDU
  3399.  
  3400.         On INTERNET, send mail to: DLEWIS@SCUACC.SCU.EDU
  3401.  
  3402.         On MCI,
  3403.  
  3404.                  At the "To:" prompt enter: DLEWIS (EMS)
  3405.                 At the "EMS:" prompt enter: Internet
  3406.                 At the "Mbx:" prompt enter: DLEWIS@SCUACC.SCU.EDU
  3407.  
  3408.         On PRODIGY, send mail to: VGDC59A
  3409.  
  3410.         On TELENET's Telemail Service:
  3411.  
  3412.                 Send to: [INTERMAIL/USCISI]TELEMAIL/USA
  3413.                 1st line of message: Forward: ARPA
  3414.                 2nd line of message: To: DLEWIS@SCUACC.SCU.EDU
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3421.  
  3422.  
  3423.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              58
  3424.  
  3425.  
  3426.                       APPENDIX 2 - ACKNOWLEDGEMENTS        
  3427.  
  3428.  
  3429.         The  Last  Byte  Memory  Manager  wouldn't  exist without all the
  3430.         companies  that  manufacture  the  shadow  ram  memory controller
  3431.         chips,  and  who  have  provided techinical information on how to
  3432.         program  their  configuration registers.  If you know of a memory
  3433.         controller  chip  we  haven't included, please let us know and we
  3434.         will try to add it.  
  3435.  
  3436.         The  Last  Byte  Memory  Manager consists of almost a megabyte of
  3437.         source  code,  written  mostly in C with a sprinkling of assembly
  3438.         language,  and  compiled using version 3.1 of the DeSmet/C-Ware C
  3439.         compiler.   We  are grateful for the simplicity, flexibility, and
  3440.         speed  of this compiler, as well as the generous support provided
  3441.         by Joel and Susan Farley of C-Ware Corporation.  
  3442.  
  3443.         The  Last Byte Memory Manager could not have been created without
  3444.         the  gracious  support  of  many  people.   We  wish to thank the
  3445.         following  individuals  who  helped  to  test  beta  versions  or
  3446.         offered  useful  suggestions  for  new  features: Ron Cohen, J.B.
  3447.         Compton,   David   Durgee,  Mike  Hagerty,  Scott  Jordahl,  Alan
  3448.         Lambert,  Rob  Nee,  Kevin Parris, Dan Proctor, Graham Robertson,
  3449.         Ken   Sanquist,  Tony  Sheehan,  Peter  Summers,  Steve  Hodsdon,
  3450.         Anthony  Cox, My Phung, Martin Beckmann, and Prof. Timo Salmi (of
  3451.         the University of Vaasa, Finland).  
  3452.  
  3453.         Thank's  also  go to Tom Rawson of J. P. Software for providing a
  3454.         copy  of  4DOS, to Sue Nageotte of Digital Research for providing
  3455.         a  copy  of DR DOS, and to Pat Gelsinger of Intel Corporation for
  3456.         lending  his  intimate  knowledge  of the 80x86 instruction sets.
  3457.         And  finally, a special thanks to Serge Caron and Roger Cross for
  3458.         their suggestions, technical advice, patience, and friendship.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3481.  
  3482.  
  3483.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              59
  3484.  
  3485.  
  3486.                      APPENDIX 3 - CHIPSET LIMITATIONS       
  3487.  
  3488.  
  3489.         Some  of the features offered by The Last Byte Memory Manager are
  3490.         dependent  on  the  presence  of  a  shadow ram memory controller
  3491.         chip,  what  memory  it  controls,  and  the organization of that
  3492.         memory  into  regions.   Shown  below is a summary of RAM and ROM
  3493.         regions  controlled  by  each of the memory controller chips that
  3494.         we  support.   Each  entry indicates the starting segment address
  3495.         of  memory, followed by an indication of the organization of that
  3496.         memory into regions.  
  3497.  
  3498.         Part No.        Ram Range       RAM Regions             ROM Regions
  3499.         --------        ---------       ----------              -----------
  3500.         82C212          A000-FFFF       A000:24x16k             C000:4x64k
  3501.         82C222          A000-FFFF       A000:24x16k             C000:4x64k
  3502.         82C230          A000-FFFF       A000:24x16k             C000:4x64k
  3503.         82C235          A000-FFFF       A000:24x16k             C000:8x32k
  3504.         82C241          A000-FFFF       A000:24x16k             C000:4x64k
  3505.         82C281          C000-EFFF       C000:12x16k             C000:3x64k
  3506.         82C282          C000-EFFF       C000:12x16k             C000:3x64k
  3507.         82C283          C000-EFFF       C000:12x16k             C000:3x64k
  3508.         82C302          A000-FFFF       A000:24x16k             C000:4x64k
  3509.         82C302C         A000-FFFF       A000:24x16k             C000:4x64k
  3510.         82C307          A000-FFFF       A000:24x16k             C000:4x64k
  3511.         82C311          A000-FFFF       A000:24x16k             C000:4x64k
  3512.         82C322          A000-FFFF       A000:16x16k,1x128k      C000:2x64k,1x128k
  3513.         82C351          A000-FFFF       A000:24x16k             C000:4x64k
  3514.         82343           C000-EFFF       C000:12x16k             n/a
  3515.         82346           C000-EFFF       C000:12x16k             n/a
  3516.         82359           A000-FFFF       A000:24x16k             n/a
  3517.         82C382          C000-EFFF       C000:12x16k             C000:3x64k
  3518.         82C391          C000-EFFF       C000:12x16k             C000:3x64k
  3519.         82C461          C000-EFFF       C000:12x16k             C000:3x64k
  3520.         82C482          C000-EFFF       C000:12x16k             C000:3x64k
  3521.         82C491          C000-EFFF       C000:12x16k             C000:3x64k
  3522.         82C493          C000-EFFF       C000:12x16k             C000:3x64k
  3523.         82C496          C000-EFFF       C000:12x16k             C000:3x64k
  3524.         82C682          C000-FFFF       C000:8x16k,2x64k        n/a
  3525.         82C812          A000-FFFF       A000:24x16k             C000:4x64k
  3526.         82C836          A000-FFFF       A000:24x16k             C000:8x32k
  3527.         82C841          A000-FFFF       A000:24x16k             C000:4x64k
  3528.         FRX36C300       C000-FFFF       C000:6x32k,1x64k        n/a
  3529.         SL82C361        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3530.         SL82C461        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3531.         ST62C202        E000-FFFF       E000:4x32k              n/a
  3532.         ST62C241        E000-FFFF       E000:4x32k              n/a
  3533.         ST62C251        E000-FFFF       E000:4x32k              n/a
  3534.         TACT82411       A000-FFFF       A000:24x16k             C000:4x64k
  3535.         TACT82S411      A000-FFFF       A000:24x16k             C000:4x64k
  3536.         UM82C212        A000-FFFF       A000:24x16k             C000:4x64k
  3537.  
  3538.  
  3539.  
  3540.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3541.  
  3542.  
  3543.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              60
  3544.  
  3545.  
  3546.         UM82C481        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3547.         VL82C202        A000-FFFF       A000:6x64k              n/a
  3548.         VL82C320        C000-EFFF       C000:12x16k             n/a
  3549.         VL82C330        C000-EFFF       C000:12x16k             n/a
  3550.         VL82C486        A000-FFFF       A000:24x16k             n/a
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3601.  
  3602.  
  3603.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              61
  3604.  
  3605.  
  3606.                     APPENDIX 4 - LICENSED DISTRIBUTORS       
  3607.  
  3608.  
  3609.         You  can  order directly from Key Software Products or any of the
  3610.         licensed  distributors  listed  below.   Those  which  can accept
  3611.         credit  card  orders are noted.  If you order by credit card, you
  3612.         must  indicate  the  type  of  card,  the  card number, your name
  3613.         exactly as printed on the card, and the card expiration date.  
  3614.  
  3615.         Information  in  this  list  is subject to change without notice.
  3616.         Foreign  exchange rates vary and thus affect overseas pricing, so
  3617.         it   is  a  good  idea  to  check  with  the  distributor  before
  3618.         ordering.  
  3619.  
  3620.         Distributors  are  for ordering only.  For additional information
  3621.         about  dealer pricing, volume discounts, site licensing, shipping
  3622.         of  product,  returns,  latest  version number or other technical
  3623.         information, call or write Key Software Products directly.  
  3624.  
  3625.         Most  distributors  can  provide  the  access  key directly.  The
  3626.         Public   (software)  Library,  however,  accepts  your  telephone
  3627.         order,  and  then  forwards  an  E-Mail  message  to Key Software
  3628.         Products.   Delivery of this message may take one or two days. We
  3629.         will  contact you and provide the access key upon receipt of this
  3630.         purchase confirmation.  
  3631.  
  3632.         Companies  interested  in obtaining 10 or more copies of The Last
  3633.         Byte  Memory  Manager  with  discounted  pricing  should  have an
  3634.         officer  of the company (such as the president, a vice president,
  3635.         director,  etc.) complete the Site License Order Form and send it
  3636.         directly  to Key Software Products, British Software Licensing in
  3637.         the  United  Kingdom,  or  to  Eurocom  Shareware in Holland.  No
  3638.         other distributor will process a Site License request.  
  3639.  
  3640.  
  3641.         KEY SOFTWARE PRODUCTS           Phone: (415) 364-9847
  3642.         440 Ninth Avenue                Price: US $29.95 + Tax (CA)
  3643.         Menlo Park, CA 94025            Method: Check
  3644.  
  3645.  
  3646.         The Public (software) Library   Phone: (800) 242-4775, or
  3647.         P.O. Box 35705                         (713) 524-6394
  3648.         Houston, Texas 77235-5705         FAX: (713) 524-6398
  3649.                                         CompuServe: 71355,470
  3650.                                         Price: US $29.95 + Tax (TX)
  3651.                                         Method: MC, Visa, AmEx,
  3652.                                                 Discover Card
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.  
  3660.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3661.  
  3662.  
  3663.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              62
  3664.  
  3665.  
  3666.         HYPERWARE (makes HyperDisk)     Phone: (615) 864-6868
  3667.         RR#1, Box 91                      FAX: (615) 864-6870
  3668.         Pall Mall, TN 38577             CompuServe: 72230,2321
  3669.                                         Price: US $29.95 + Tax (TN)
  3670.                                         Method: Master Card, Visa
  3671.  
  3672.  
  3673.         EUROCOM SHAREWARE               Contact: Mr. Gary van Beeck
  3674.         Zwedenburg 119                  Phone: (+31.70) 347-3777
  3675.         NL-2591 BD The Hague              FAX: (+31.70) 347-7356
  3676.         HOLLAND                         Price: Hfl 74.-- (guilders only)
  3677.                                         Method: By Eurocheque, or
  3678.                                         Postbank (Giro): 188423
  3679.                                         payable to: G. van Beeck
  3680.  
  3681.  
  3682.         BRITISH SOFTWARE LICENSING      Contact: Mr. Graham Robertson
  3683.         280 (T/L) West Princes Street   Phone: (44.41) 339-8855 x5021
  3684.         Glasgow G4 9EU                         (44.41) 339-7264 (msg)
  3685.         UNITED KINGDOM                  Price: 21 pounds
  3686.                                         Method: Access, Visa, MC, Eurocard
  3687.  
  3688.         Internet E-Mail: Graham_Robertson@vme.glasgow.ac.uk
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3721.  
  3722.  
  3723.         Apr 12, 1992    THE LAST BYTE MEMORY MANAGER (tm)              63
  3724.  
  3725.  
  3726.                       APPENDIX 5 - LIMITED WARRANTY       
  3727.  
  3728.  
  3729.         This  software  is provided 'as is' without warranty of any kind,
  3730.         either  expressed  or  implied, including, but not limited to the
  3731.         implied   warranties   of   merchantability  and  fitness  for  a
  3732.         particular  purpose.   The  entire  risk  as  to  the quality and
  3733.         performance of the program is with you.  
  3734.  
  3735.         Some  states do not allow the exclusion of implied warranties, so
  3736.         the  above  exclusions may not apply to you.  This warranty gives
  3737.         you  specific  legal  rights  and  you may also have other rights
  3738.         which vary from state to state.  
  3739.  
  3740.         Key  Software  Products  has  taken  due  care  in  preparing the
  3741.         documentation  and  software  included  in  The  Last Byte Memory
  3742.         Manager   to   ascertain  their  correctness  and  effectiveness.
  3743.         However,  Key  Software  Products does not warrant that operation
  3744.         of  this  software  will  be  uninterrupted or error free.  In no
  3745.         event  shall  Key  Software  Products be liable for incidental or
  3746.         consequential  damages  in  connection with or arising out of the
  3747.         furnishing, performance, or use of this software.  
  3748.  
  3749.  
  3750.                                      LICENSE
  3751.  
  3752.         You  MAY  use  this software on any computer or computers in your
  3753.         possesion, but on no more than one computer at any given time.  
  3754.  
  3755.         You  MAY  copy this software into any machine readable or printed
  3756.         form  for  backup or modification purposes in support of your use
  3757.         of the software.  
  3758.  
  3759.         You  MAY  distribute  the original unmodified, unlicensed version
  3760.         of  this  software,  but you may not charge a fee exceeding $5.00
  3761.         to  cover  the  cost of duplicating, shipping, and handling.  You
  3762.         may NOT distribute a licensed version of this software.  
  3763.  
  3764.         You  may  NOT  use,  copy, modify, sublicense, assign or transfer
  3765.         this  software  and  its license, or any copy or modification, in
  3766.         whole  or  in  part,  except  as  expressly  provided for in this
  3767.         license.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3781.  
  3782.