home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / windows / lb_v114.zip / LASTBYTE.DOC < prev    next >
Text File  |  1990-10-24  |  65KB  |  1,442 lines

  1.  
  2.  
  3.         
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                                THE LAST BYTE (tm)
  12.  
  13.  
  14.            A DOS Memory Manager for Chips & Technologies Motherboards
  15.  
  16.  
  17.  
  18.  
  19.                                   Version 1.14
  20.  
  21.                             Revised: October 24, 1990
  22.  
  23.  
  24.  
  25.  
  26.  
  27.                                Copyright (C) 1990
  28.                                All Rights Reserved
  29.  
  30.  
  31.  
  32.  
  33.                                        by
  34.  
  35.  
  36.                               KEY SOFTWARE PRODUCTS
  37.                                 440 Ninth Avenue
  38.                           Menlo Park, California 94025
  39.                                  (415) 364-9847
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.                          Prodigy E-Mail Address: VGDC59A
  54.                E-Mail on Internet, Bitnet, etc: DLEWIS@SCU.BITNET
  55.              CompuServe E-Mail Address: >Internet:DLEWIS@SCU.BITNET
  56.  
  57.  
  58.  
  59.  
  60.         
  61.  
  62.  
  63.         Oct 24, 1990           The LAST BYTE (tm)                       1
  64.  
  65.  
  66.         _1_.__I_n_t_r_o_d_u_c_t_i_o_n________ 
  67.  
  68.         LASTBYTE  is  a  collection  of software that can make up to 384k
  69.         more  memory  available  to  your  286,  386, or 386SX machine by
  70.         taking  advantage  of  those  motherboards  that  use  one of the
  71.         following  memory  controller  chips  manufactured  by  Chips and
  72.         Technologies: 
  73.  
  74.                 82C302 - Used with 386 Systems without a Cache 
  75.                 82C307 - Used with 386 Systems with a Cache 
  76.                 82C212 - Part of the NEAT Chipset for 286 and 386 
  77.                 82C812 - Part of the NEAT Chipset for 386SX 
  78.  
  79.         LASTBYTE  does  this  by  using  the  384k of high memory (in the
  80.         640k-1MB  range)  that  is  on  your  motherboard  but  which  is
  81.         normally only used for Shadow RAM.  
  82.  
  83.         With  LASTBYTE,  this  memory  can  also  be  used for TSR's, TSR
  84.         markers   (to   facilitate  TSR  removal),  device  drivers,  DOS
  85.         Buffers,  RAM  disks,  and  Emulated  Expanded Memory rather than
  86.         loading  all  of  these  into  conventional memory (0-640k) where
  87.         they  use  precious  DOS  memory space needed by your application
  88.         programs.   If  you don't have an EGA or VGA, or if you don't use
  89.         graphics,  then  conventional  memory  (available  to application
  90.         programs) can be extended from 640k to as much as 736k.  
  91.  
  92.         Other  system  requirements:  DOS  3.0  or  higher, 1M or more of
  93.         (physical) memory.  
  94.  
  95.                               Important Differences
  96.  
  97.         LASTBYTE  has  five  significant advantages over other DOS Memory
  98.         Managers: 
  99.  
  100.              o  LASTBYTE  doesn't  require  a  386.   Most other DOS
  101.                 memory  managers  won't  work  on  286 systems.  The
  102.                 only  hardware required by LASTBYTE is the Chips and
  103.                 Technology chipset and 1MB of hardware.  
  104.  
  105.              o  LASTBYTE   doesn't   use   any  386  protected  mode
  106.                 software.   This  means  that  unlike some other DOS
  107.                 memory  managers, LASTBYTE works well with Microsoft
  108.                 Windows/386 and Windows 3.0.  
  109.  
  110.              o  LASTBYTE  doesn't require any extended memory (above
  111.                 1MB).   Other  DOS memory managers depend on the 386
  112.                 processor's  ability  to  remap physical memory from
  113.                 above  1MB  into  high  memory,  but  of course that
  114.                 memory  is  no  longer available as extended memory.
  115.                 LASTBYTE  uses  the  memory you already have sitting
  116.                 between 640k and 1Meg.  
  117.  
  118.  
  119.  
  120.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  121.  
  122.  
  123.         Oct 24, 1990           The LAST BYTE (tm)                       2
  124.  
  125.  
  126.              o  LASTBYTE,  unlike all other DOS memory managers, can
  127.                 use  the  high  memory  addresses that coincide with
  128.                 the  Display  Buffer,  Bios  ROM or any adapter that
  129.                 you     have    installed.     LASTBYTE    uses    a
  130.                 "Bank-Switching"  technique  to use this memory as a
  131.                 Ram  Disk,  as  Expanded  Memory,  and  to  hold TSR
  132.                 "markers"  to  facilitate  TSR  removal.  This gives
  133.                 LASTBYTE  the  unique  ability  to use *ALL* 384k of
  134.                 high memory! 
  135.  
  136.              o  LASTBYTE  does not slow down the performance of your
  137.                 computer,   both  because  it  does  not  incur  the
  138.                 instruction  execution  inherent  in  386  protected
  139.                 mode,  and  because  it  uses  regular  (full-speed)
  140.                 memory.    (Some  memory  managers  use  the  actual
  141.                 EGA/VGA  graphics  buffer  as  DOS  memory,  but the
  142.                 display  buffer memory of some EGA/VGA adapter cards
  143.                 can  be  as  much  as  six times slower than regular
  144.                 memory.)  
  145.  
  146.  
  147.         _2_.__I_n_s_t_a_l_l_a_t_i_o_n________ 
  148.  
  149.         You  should first install LASTBYTE on a floppy to verify that you
  150.         can boot and operate your PC reliably with LASTBYTE installed: 
  151.  
  152.              Step 1:  Use  the  FORMAT command with the /S option to
  153.                       prepare a bootable floppy disk.  
  154.  
  155.              Step 2:  Copy  all  (it's easier) of the LASTBYTE files
  156.                       onto  the  diskette.   (Actually, all you need
  157.                       are  LASTBYTE.SYS,  HIGHDRVR.SYS, HIGHTSR.EXE,
  158.                       HIGHMEM.EXE,    HIGHMARK.EXE,    HIGHUNDO.EXE,
  159.                       CLOCK.EXE, COLS.40, and COLS.80.) 
  160.  
  161.              Step 3:  Copy  the DOS device driver file ANSI.SYS onto
  162.                       the diskette.  
  163.  
  164.              Step 4:  Create  a  CONFIG.SYS  file on the floppy that
  165.                       contains the lines: 
  166.  
  167.                               DEVICE=LASTBYTE.SYS ? 
  168.                               DEVICE=HIGHDRVR.SYS ANSI.SYS 
  169.  
  170.                       The  "?" in the first line is intentional - it
  171.                       directs  LASTBYTE  to display what it finds in
  172.                       the high memory address space.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  181.  
  182.  
  183.         Oct 24, 1990           The LAST BYTE (tm)                       3
  184.  
  185.  
  186.  
  187.              Step 5:  Create an AUTOEXEC.BAT file on the floppy that
  188.                       contains the lines: 
  189.  
  190.                               HIGHMARK 
  191.                               HIGHTSR CLOCK 
  192.  
  193.              Step 6:  Boot from the floppy.  (Note: NEAT chipsets on
  194.                       286  and 386sx motherboards with only 1 Meg of
  195.                       physical  memory provide a setup option to use
  196.                       the  384k  as Extended Memory by relocating it
  197.                       just  above  the  1 Meg boundary.  This option
  198.                       is  incompatible  with  LASTBYTE  and  must be
  199.                       disabled   in  the  CMOS  Setup  Configuration
  200.                       Menu.) 
  201.  
  202.  
  203.         If  everything  goes  ok,  you'll  see  a  sign-on box that looks
  204.         something like the following: 
  205.  
  206.         ╔═══════════════════════════════════════════════════════════════════╗
  207.         ║        The Last Byte v1.14f - Licensed for EVALUATION ONLY        ║
  208.         ║   Copyright (C) 1990, Key Software Products, All Rights Reserved  ║
  209.         ╟───────────────────────────────────────────────────────────────────╢
  210.         ║      Memory locations A0000-BFFFF (128k) are VGA Display RAM.     ║
  211.         ║      Memory locations C0000-C7FFF ( 32k) are ROM Bios Code.       ║
  212.         ║      Memory locations C8000-CB7FF ( 14k) are Adapter Rom.         ║
  213.         ║      Memory locations CB800-CBFFF (  2k) are Adapter Ram.         ║
  214.         ║      Memory locations F0000-FFFFF ( 64k) are ROM Bios Code.       ║
  215.         ╟───────────────────────────────────────────────────────────────────╢
  216.         ║ Conventional  High-DOS     Bank-Switch   Shadow-Ram     Excluded  ║
  217.         ║     640k        32k            32k          96k           224k    ║
  218.         ╚═══════════════════════════════════════════════════════════════════╝
  219.  
  220.         If  your  PC  stops before displaying the entire box shown above,
  221.         or  if  it  fails  to  operate  properly  after  booting, this is
  222.         because  LASTBYTE  failed  to  identify  one  of  your  installed
  223.         adapters  that  uses  some  portion  of  the  high-memory address
  224.         space.   If  this  happens,  you'll  probably  need  to  use  the
  225.         "EXCLUDE="  command  line  option  (discussed  below) to manually
  226.         disable  the  corresponding  region(s) where conflict occurs.  To
  227.         temporarily  get  around this problem, you can manually abort all
  228.         LASTBYTE  device drivers and TSR's by simultaneously holding down
  229.         the  <left  shift>,  <alt>,  and  <ctrl>  keys  during  the  boot
  230.         sequence.  
  231.  
  232.         After  AUTOEXEC.BAT  is  finished,  you'll  see  the current time
  233.         displayed  in inverse video in the upper left-hand corner of your
  234.         screen.   This  verifies  that HIGHTSR has succesfully loaded the
  235.         CLOCK.EXE  into  high  memory.   You  can verify that ANSI.SYS is
  236.         installed and operating by using the commands: 
  237.  
  238.  
  239.  
  240.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  241.  
  242.  
  243.         Oct 24, 1990           The LAST BYTE (tm)                       4
  244.  
  245.  
  246.  
  247.                 TYPE COLS.40 
  248.  
  249.                         {switches display to 25 rows by 40 columns}, or 
  250.  
  251.                 TYPE COLS.80 
  252.  
  253.                         {switches display to 25 rows by 80 columns}.  
  254.  
  255.         (These  commands  will  display garbage on the screen if ANSI.SYS
  256.         has not been installed.) 
  257.  
  258.         Now  run  HIGHMEM to get a map of high memory.  Depending on what
  259.         adapter  cards  you  have installed, HIGHMEM's output should look
  260.         something like this: 
  261.  
  262.         HIGHMEM v1.14e (C) Key Software Products 1990.  All Rights Reserved.
  263.  
  264.         MCB    Address Range   Description     High-DOS Bnk-Swtch  Total  Mark
  265.         ────   ───────────── ────────────────  ──────── ───────── ─────── ────
  266.         C400 ┌ A0000-C3FFF  <Wrap Block>                                
  267.         C402 ├─ A0000-A7FFF  VGA Display Ram            [ 32,768]  32,768
  268.         C404 ├─ A8000-BFFFF  VGA Display Ram                       98,304
  269.         C406 └─ C0000-C3FFF  Shadow Ram                   16,384   16,384
  270.         C408    C4090-C467F  LASTBYTE.SYS         1,520             1,520
  271.         C468    C4690-C46CF  CLOCK.EXE [Env]         64                64
  272.         C46D    C46E0-C488F  CLOCK.EXE              432               432
  273.         C489    C48A0-C7FDF  ....DOS Free      [ 14,144]           14,144
  274.         C7FE ┌ C8000-CBFFF  <Wrap Block>                                
  275.         CC00 ├─ C8000-C97FF  Adapter Rom                            6,144
  276.         CC02 ├─ C9800-C9FFF  Adapter Ram                            2,048
  277.         CC04 └─ CA000-CBFFF  DOS Unusable                           8,192
  278.         CC06    CC070-CD1EF  ANSI.SYS             4,480             4,480
  279.         CD1F    CD200-CFF9F  ....DOS Free      [ 11,680]           11,680
  280.         CFFE ┌ D0000-FFFFF  <Wrap Block>                                
  281.         CFFA ├─ D0000-EFFFF  Excluded Block                       131,072
  282.         CFFC └─ F0000-FFFFF  Shadow Ram                   65,536   65,536
  283.                                                 ───────  ───────  ───────
  284.                             High Memory In Use:   6,496   81,920  334,176
  285.                             [Free High Memory]:  25,824   32,768   58,592
  286.                                   MCB Overhead:     192      256      448
  287.                                                 ───────  ───────  ───────
  288.                              Total High Memory:  32,512  114,944  393,216
  289.  
  290.  
  291.                          Paging the output of HIGHMEM   
  292.  
  293.              You  may  use  the  "/Page"  (or simply "/P") option of
  294.              HIGHMEM  to force the output to pause after each screen
  295.              full.  
  296.  
  297.  
  298.  
  299.  
  300.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  301.  
  302.  
  303.         Oct 24, 1990           The LAST BYTE (tm)                       5
  304.  
  305.  
  306.  
  307.         This  listing  is  for a PC that has an EGA display adapter and a
  308.         SCSI  hard  disk adapter.  The "Shadow Ram" at C0000-C3FFF is the
  309.         EGA  Bios and the "Adapter Rom" and "Adapter Ram" are on the SCSI
  310.         adapter  card.   The  "DOS Unusable" region exists because of the
  311.         16k  resolution  of the Chips and Technologies memory controller.
  312.         On  a more typical machine (without a SCSI hard disk), the entire
  313.         16k  region  from  C8000-CBFFF  would  be  available  for  device
  314.         drivers and TSR's.  
  315.  
  316.         The  column  labelled "Bnk-Swtch" shows which entries can be used
  317.         as  Bank-Switch  memory  for Ramdisk, emulated EMS memory, or TSR
  318.         markers.  
  319.  
  320.         Numbers  enclosed in brackets (e.g., "[ 14,144]") refer to memory
  321.         that  is  available for use.  Once you have licensed your copy of
  322.         LASTBYTE,  the "Excluded Block" shown above would be added to the
  323.         free  High-DOS  memory  pool,  and the second entry labelled "EGA
  324.         Display  Ram"  would  be  added  to  the  free Bank-Switch memory
  325.         pool.   That  means  a  total  of  approximately  160k  of memory
  326.         available  for  device drivers and TSR's and another 128k for Ram
  327.         Disks,  TSR  markers,  or emulated EMS memory.  (Sections 11, 12,
  328.         and  14  explain  how  you  may even be able to increase the 160k
  329.         figure to 224k or even 288k.) 
  330.  
  331.         The  column  labelled "Mark" is used in conjunction with HIGHMARK
  332.         and  HIGHUNDO.   In  particular,  you  may  have wondered why the
  333.         command  HIGHMARK  was  included in the AUTOEXEC.BAT file.  Since
  334.         it  was  executed  before running HIGHTSR CLOCK, you are now able
  335.         to  remove the clock from memory by simply running HIGHUNDO.  Try
  336.         it! 
  337.  
  338.  
  339.         _3_.__C_o_m_m_a_n_d__L_i_n_e__O_p_t_i_o_n_s__F_o_r__L_A_S_T_B_Y_T_E_._S_Y_S____ 
  340.  
  341.         During  initialization,  LASTBYTE.SYS  scans  high memory looking
  342.         for  Bios  ROMs,  Display  Ram, and Adapter Cards that occupy the
  343.         640k-1M  address  space.   The  unoccupied portion of high memory
  344.         defaults  to  High-DOS  memory  (for  device  drivers and TSR's),
  345.         while  the  occupied  portion defaults to Bank-Switch memory that
  346.         can be made accessible for Ram disks, emulated EMS memory, etc.  
  347.  
  348.         These  defaults  can  be  modified  by  the  use  of command line
  349.         options.   There  are  four command line options for LASTBYTE.SYS
  350.         (you  may  abbreviate  any  of  these  by  using  only  the first
  351.         letter): 
  352.  
  353.              DOS (Abbreviated "D") 
  354.  
  355.                   Forces   a   region  of  high  memory  that  would
  356.                   normally  be used as Bank-Switch memory to be made
  357.  
  358.  
  359.  
  360.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  361.  
  362.  
  363.         Oct 24, 1990           The LAST BYTE (tm)                       6
  364.  
  365.  
  366.                   available as High-DOS memory.  
  367.  
  368.              BSW (Abbreviated "B") 
  369.  
  370.                   Forces   a   region  of  high  memory  that  would
  371.                   normally  be  used  as  High-DOS memory to be made
  372.                   available as Bank-Switch memory.  
  373.  
  374.              EXCLUDE (Abbreviated "E") 
  375.  
  376.                   Forces   a   region  of  high  memory  to  not  be
  377.                   available  either  as  High-DOS  or as Bank-Switch
  378.                   memory.  
  379.  
  380.              APPEND (Abbreviated "A") 
  381.  
  382.                   Reserves  a region of high memory for appending to
  383.                   the  end  of  DOS  low (conventional) memory, thus
  384.                   increasing  it  beyond  640k.   The  memory is NOT
  385.                   added   until   it   is   enabled  with  HIGHAPND.
  386.                   Requires  setting  "<base>"  (see  below) to A000,
  387.                   and   "<size>"  to  a  multiple  of  16k.   (Note:
  388.                   "<size>"  is  limited  to  16k  in  the unlicensed
  389.                   version  so  that  some High DOS memory will still
  390.                   be available.) 
  391.  
  392.              ? (A question mark) 
  393.  
  394.                   Causes  LASTBYTE.SYS  to display a summary of what
  395.                   it finds in the High Memory address space.  
  396.  
  397.         The format of the APPEND, DOS, BSW, and EXCLUDE options is: 
  398.  
  399.                              <keyword>=<base>:<size>
  400.  
  401.         where  "<base>"  is  a base paragraph (segment) address expressed
  402.         as  four  hexadecimal digits, and "<size>" is kilobytes expressed
  403.         in  decimal.   For  example,  to  force  the  64k  address  range
  404.         starting  at  segment  A000 to be used as Bank-Switch memory, the
  405.         proper option syntax would be: 
  406.  
  407.                                    BSW=A000:64
  408.  
  409.         (Examples  of  why this option can be useful are found in Section
  410.         12, "Video Display RAM above 640k".) 
  411.  
  412.         In  a  similar  manner,  to  force LASTBYTE to use the 32k region
  413.         starting  at  segment  F000 as High-DOS Memory, the proper option
  414.         syntax would be: 
  415.  
  416.                                    DOS=F000:32
  417.  
  418.  
  419.  
  420.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  421.  
  422.  
  423.         Oct 24, 1990           The LAST BYTE (tm)                       7
  424.  
  425.  
  426.  
  427.         (Examples  of  why this option can be useful are found in Section
  428.         11, "Using the DOS=F000:32 Option with AMI Bios Chips".) 
  429.  
  430.         There are two restrictions on these options: 
  431.  
  432.              o  The  base must be exactly 4 hexadecimal digits, must
  433.                 lie  at  or  above  A000,  and must be a multiple of
  434.                 0080  (2k).   (For  APPEND,  the base must always be
  435.                 A000.) 
  436.  
  437.              o  The  size must be in the range 2-384 kb, and must be
  438.                 a multiple of 2.  
  439.  
  440.  
  441.         The  reason  for  the  "multiple  of  2 (kb)" requirement is that
  442.         LASTBYTE   tries   to   allocate   memory   in   2k   increments,
  443.         corresponding  to  the  IBM  spec  that  Bios  ROM's are sized in
  444.         multiples  of  2kb.  However, this is somewhat complicated by the
  445.         coarse   16k  resolution  of  the  Chips  and  Technology  memory
  446.         controllers: 
  447.  
  448.         The  Chips  and  Technologies  memory controller chips divide the
  449.         640k-1M  area into 24 blocks of 16k each.  Each 16k block must be
  450.         either  totally  enabled or disabled.  I.e., if any part of a 16k
  451.         address  space  is  occupied  by  an adapter card, the entire 16k
  452.         block  of memory must be disabled and cannot be made available as
  453.         High  DOS  Memory.   Thus the "DOS=" option restricts "<size>" to
  454.         multiples  of  16,  and  "<base>"  to addresses that begin on 16k
  455.         boundaries.  
  456.  
  457.         Once  you  are convinced that LASTBYTE is working satisfactorily,
  458.         you  may  copy it to your hard disk and modify the CONFIG.SYS and
  459.         AUTOEXEC.BAT files there accordingly.  
  460.  
  461.  
  462.         _4_.__H_I_G_H_M_A_R_K__a_n_d__H_I_G_H_U_N_D_O_:__U_n_l_o_a_d_i_n_g__T_S_R_s__f_r_o_m__M_e_m_o_r_y__ 
  463.  
  464.         Sometimes  it  can  be  useful  to  remove one or more TSR's from
  465.         memory,  either  because  you  no longer want to use the features
  466.         that  they  provide  or perhaps in order to make room for another
  467.         set of TSR's.  
  468.  
  469.         In  order to be able to remove a group of TSR's from high memory,
  470.         they  must  be be marked.  To mark them, run HIGHMARK once before
  471.         you  use  HIGHTSR  to  load  the  TSR's.   Then later, simply run
  472.         HIGHUNDO  -  the  mark  and  all  of its assoicated TSR's will be
  473.         removed.  
  474.  
  475.         HIGHMARK  may  be  executed more than once to establish levels of
  476.         TSR's  to  be removed.  Each execution of HIGHMARK places another
  477.  
  478.  
  479.  
  480.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  481.  
  482.  
  483.         Oct 24, 1990           The LAST BYTE (tm)                       8
  484.  
  485.  
  486.         mark  in  memory  with a unique mark number.  Every TSR loaded by
  487.         HIGHTSR   is   automatically  associated  with  the  most  recent
  488.         execution  of  HIGHMARK.   You  can use HIGHMEM to see the marks,
  489.         their  mark  number,  and  the  set  of TSR's associated with the
  490.         mark.   Every  execution  of HIGHUNDO will then remove the set of
  491.         TSR's associated with the most recent HIGHMARK.  
  492.  
  493.         You  may  specify  a  mark level on the command line of HIGHMARK.
  494.         This  will  cause it to remove all the TSR's and marks whose mark
  495.         number  is  greater  than  or  equal to the number on the command
  496.         line.  
  497.  
  498.  
  499.         _5_.__H_I_G_H_I_N_S_T_:__L_o_a_d_i_n_g__S_H_A_R_E_._E_X_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y___ 
  500.  
  501.         DOS  4 now installs the SHARE program automatically if you have a
  502.         hard  disk which is greater than 32 MB in a single partition.  It
  503.         does  this  without  asking  because  otherwise it is possible to
  504.         corrupt  the  data on the disk when running programs that use the
  505.         old File Control Block (FCB) approach to access files.  
  506.  
  507.         Unfortunately,  some  internal  parts of DOS still use FCB's!  So
  508.         don't  try to prevent SHARE from being loaded by removing it from
  509.         your  system!  If DOS can't find it, you'll get a warning message
  510.         during  the  boot  saying  that "SHARE should be loaded for large
  511.         media".   You  could  load it during AUTOEXEC.BAT processing, but
  512.         you'll  still  get  the  warning  because the check occurs during
  513.         CONFIG.SYS processing.  
  514.  
  515.         So  how  can  you  load this TSR into High Memory without getting
  516.         the  warning?   DOS  recently introduced the "INSTALL=" directive
  517.         that  allows  TSR's to be installed during CONFIG.SYS processing.
  518.         Programs  that  Microsoft  suggests  be  loaded  in  this  manner
  519.         include FASTOPEN, KEYB, NLSFUNC, and SHARE.  For example: 
  520.  
  521.                             INSTALL=C:\DOS\SHARE.EXE
  522.  
  523.         However,  the  above  command  causes  SHARE to be loaded down in
  524.         Conventional Memory.  To get it into High Memory, use: 
  525.  
  526.                       INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
  527.  
  528.         HIGHTSR  works  too, but you get an error message about the above
  529.         line  in  CONFIG.SYS.   This  is because the DOS expects the name
  530.         that  immediately  follows  the  equals  sign  to  be  a TSR, and
  531.         anything else (e.g., HIGHTSR) will cause the error message.  
  532.  
  533.         HIGHINST  is a copy of HIGHTSR that has been modified to be a TSR
  534.         so  that  this  error  message  can  be  avoided.  Since HIGHINST
  535.         itself  is a TSR, a small part of it will remain resident down in
  536.         Conventional Memory, but only 96 bytes.  
  537.  
  538.  
  539.  
  540.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  541.  
  542.  
  543.         Oct 24, 1990           The LAST BYTE (tm)                       9
  544.  
  545.  
  546.  
  547.  
  548.         _6_.__T_h_e__/_S_I_Z_E__o_p_t_i_o_n__o_f__H_I_G_H_D_R_V_R__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T_ 
  549.  
  550.         The  amount  of  High-DOS memory required to load a device driver
  551.         or  TSR  (hereafter  called the "load requirement") is the larger
  552.         of  two  amounts:  (1)  the amount required during initialization
  553.         (greater  than  or  equal  to  the  size of the file) and (2) the
  554.         amount required when finally resident.  
  555.  
  556.         Although  the  final  resident  requirement  of  any  high-loaded
  557.         software  may  be obtained from the HIGHMEM output, remember that
  558.         the  initialization  (and  thus  the  load)  requirement  may  be
  559.         greater than EITHER the file size or the HIGHMEM listing! 
  560.  
  561.         Most   device   drivers   and   TSR's  require  more  memory  for
  562.         initialization  than  when  resident,  although  there  are a few
  563.         (such   as   SMARTDRV.SYS  and  NANSI.SYS)  which  require  extra
  564.         resident  memory  for  buffers,  etc.  And then there's the weird
  565.         behavior  of  FASTOPEN and MODE that require even more than this!
  566.         (See   section   8,  "Installing  FASTOPEN  and  MODE  into  High
  567.         Memory".)  Thus  the  normal  operation of HIGHDRVR, HIGHTSR, and
  568.         HIGHINST  is  to  use  the  largest free High-DOS memory block to
  569.         load  the  driver since the resident memory requirement cannot be
  570.         determined   until   after  the  software  has  been  loaded  and
  571.         initialized.  
  572.  
  573.         Unfortunately,  this  can  lead  to  a  less  than optimum use of
  574.         memory.   If  the  memory  requirements were known, then a memory
  575.         block  could  be  selected using a "best fit" strategy; i.e., the
  576.         smallest  free  High-DOS  memory  block  which  is larger than or
  577.         equal  to  the  load  requirement.   This usually results in much
  578.         better utilization of memory.  
  579.  
  580.         HIGHDRVR,  HIGHTSR, and HIGHINST have a special option /SIZE that
  581.         can be used to report the load requirement: 
  582.  
  583.                         DEVICE=HIGHDRVR.SYS /SIZE SMARTDRV.SYS 2048 512
  584.                 or:     INSTALL=HIGHINST.EXE /SIZE SHARE.EXE
  585.                 or:     HIGHTSR /SIZE PRINT.COM /D:PRN
  586.  
  587.         The  load requirement will then be displayed on the console after
  588.         the  software  has been loaded and initialized.  This information
  589.         can  then be used to specify the value (expressed in bytes) to be
  590.         used  with  the  /SIZE  option  to force a "best fit" allocation.
  591.         For example: 
  592.  
  593.                         DEVICE=HIGHDRVR.SYS /SIZE:16240 SMARTDRV.SYS 2048 512
  594.                 or:     INSTALL=HIGHINST.EXE /SIZE:13616 SHARE.EXE
  595.                 or:     HIGHTSR /SIZE:17120 PRINT.COM /D:PRN
  596.  
  597.  
  598.  
  599.  
  600.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  601.  
  602.  
  603.         Oct 24, 1990           The LAST BYTE (tm)                      10
  604.  
  605.  
  606.  
  607.         _7_.__T_h_e__/_N_O_E_N_V__o_p_t_i_o_n__o_f__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T__ 
  608.  
  609.         All  programs,  including  TSR's,  are  allocated  two regions of
  610.         memory  when  they  are  loaded:  One is the area for the program
  611.         itself,  and  the  other  is for a copy of the environment.  Most
  612.         TSR's  don't  make  use  of  their environment, and some actually
  613.         release it to the operating system rather than hanging onto it.  
  614.  
  615.         If  HIGHMEM  finds  an environment block, the corresponding entry
  616.         in  the  "Description"  column will have the name of the TSR that
  617.         it  belongs  to  (such as "CLOCK.EXE") followed by the indication
  618.         "[Env]".    Occassionally,  you  may  see  a  similar  indication
  619.         "[Dat]";  this  is  a  data block explicitly allocated by the TSR
  620.         for some unknown purpose.  
  621.  
  622.  
  623.                         TSRs that eliminate their PSP   
  624.  
  625.              The  authors  of  some  TSR's  attempt to save a little
  626.              extra  memory  by  having  the  TSR  eliminate  its own
  627.              Program  Segment  Prefix  (PSP)  during initialization.
  628.              Doing  so makes it impossible for HIGHTSR, HIGHINST, or
  629.              HIGHMEM   to  identify  the  TSR's  environment  block.
  630.              However,  this  byte-saving mentality will usually mean
  631.              that  the TSR's initialization code also eliminates its
  632.              environment block, so this is rarely a problem.  
  633.  
  634.  
  635.         If  you  see  a  block labelled "[Env]" in the output of HIGHMEM,
  636.         then  you can use the following command line option of HIGHTSR or
  637.         HIGHINST to release this memory, even if the TSR didn't: 
  638.  
  639.                         INSTALL=HIGHINST.EXE /NOENV CLOCK.EXE 
  640.                 or:     HIGHTSR /NOENV CLOCK 
  641.  
  642.         The  /NOENV  (and /SIZE) options must PRECEDE the name of the TSR
  643.         that  is  to  be loaded high by HIGHTSR or HIGHINST.  Case of the
  644.         option is insignificant.  
  645.  
  646.  
  647.         _8_.__I_n_s_t_a_l_l_i_n_g__F_A_S_T_O_P_E_N__a_n_d__M_O_D_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y__ 
  648.  
  649.         The  FASTOPEN and MODE programs that comes with DOS are TSR's and
  650.         as  such  may  be  loaded into high memory with either HIGHTSR or
  651.         HIGHINST.   Once  installed,  each  requires  very little memory,
  652.         something  on  the  order  of 10k or less.  However, neither will
  653.         install  unless  a  LOT  of  memory  is  available,  like  around
  654.         50-90k.   (The  actual requirement depends partly on command line
  655.         options;  you  can  determine  the  requirement  using  the /SIZE
  656.         option of HIGHTSR or HIGHINST.) 
  657.  
  658.  
  659.  
  660.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  661.  
  662.  
  663.         Oct 24, 1990           The LAST BYTE (tm)                      11
  664.  
  665.  
  666.  
  667.         The  worst  part  is  that  if  FASTOPEN  fails to install itself
  668.         successfully,  it  doesn't  issue  any  error message - it simply
  669.         doesn't   display   the   normal   "FASTOPEN  installed"  sign-on
  670.         message.   Moral:  Let  FASTOPEN and MODE be the first TSR's that
  671.         are  installed into High Memory in your AUTOEXEC.BAT file so that
  672.         they get access to the maximum amount of memory.  
  673.  
  674.         The  second  hassle  with  these two TSR's is that they cannot be
  675.         removed  by  using  HIGHMARK and HIGHUNDO.  Evidently they modify
  676.         memory  other  than  that  tracked by the LASTBYTE utilities: the
  677.         interrupt vector table and that memory allocated to them.  
  678.  
  679.  
  680.         _9_.__H_I_G_H_D_I_S_K_:__A__R_a_m__D_i_s_k__i_n__B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y__ 
  681.  
  682.         HIGHDISK.SYS  is  a  device  driver  that  uses  high  memory  to
  683.         implement  a  Ram  Disk.   Bank-Switch Memory is allocated first,
  684.         and  if  that  isn't enough, then High-DOS Memory is allocated to
  685.         satisfy  the total page request.  The device driver itself may be
  686.         loaded   into   high   memory   by  using  HIGHDRVR.SYS  to  load
  687.         HIGHDISK.SYS.  
  688.  
  689.  
  690.                             Minimum Requirement      
  691.  
  692.              The  amount  of  available  Bank-Switch  memory must be
  693.              sufficient  to  hold  the  Ram  Disk's boot sector, one
  694.              copy  of  the FAT, and the directory.  Normally this is
  695.              not  a problem, but may require that HIGHDISK be loaded
  696.              before HIGHEMS3 (or HIGHEMS4).  
  697.  
  698.  
  699.         A typical command in CONFIG.SYS might be: 
  700.  
  701.                         DEVICE=HIGHDRVR.SYS HIGHDISK.SYS
  702.  
  703.         This  creates  a  RAM  disk  that uses all available High Memory,
  704.         with 32 directory entries and sectors of 128 bytes each.  
  705.  
  706.         A  command  line option may be used to change the size of the RAM
  707.         disk as in: 
  708.  
  709.                       DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100
  710.  
  711.         This creates a 100k byte RAM disk.  
  712.  
  713.         Other  command  line  options may be used to change the number of
  714.         bytes per sector and directory entries, as in: 
  715.  
  716.                    DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100 256 64
  717.  
  718.  
  719.  
  720.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  721.  
  722.  
  723.         Oct 24, 1990           The LAST BYTE (tm)                      12
  724.  
  725.  
  726.  
  727.         This  creates  a  100k  RAM disk with 256 bytes per sector and 64
  728.         root directory entries.  
  729.  
  730.  
  731.         _1_0_.__W_i_n_d_o_w_s__3_._0__C_o_m_p_a_t_i_b_i_l_i_t_y______ 
  732.  
  733.         In  general,  LASTBYTE  has  a  high degree of compatibility with
  734.         Windows  3.0.   However,  if  you  use  the  386 Enhanced Mode of
  735.         Windows 3.0, there are some fine points that need clarification: 
  736.  
  737.  
  738.         10.1 Modifying the Windows SYSTEM.INI File     
  739.  
  740.         On  a 386 or 386sx with Windows 3.0 running in 386 enhanced mode,
  741.         LASTBYTE  and  WINDOWS  will both try to use the high memory area
  742.         between   640k-1M,  thus  creating  a  conflict.   To  avoid  the
  743.         conflict,  you must ask WINDOWS not to use this region.  This can
  744.         be  done  with  a configuration option in the [386Enh] section of
  745.         the Windows SYSTEM.INI file: 
  746.  
  747.                               EMMExclude=A000-FFFF
  748.  
  749.         If  you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
  750.         any  region of the high memory, then Windows may be told it is ok
  751.         to  use  that area.  For example, if LASTBYTE is loaded using the
  752.         line: 
  753.  
  754.                        DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
  755.  
  756.         then  you may use the following configuration option (in addition
  757.         to the EMMExclude option above) in your SYSTEM.INI file: 
  758.  
  759.                               EMMInclude=D000-DFFF
  760.  
  761.         The  EMMInclude  option  will take precedence over the EMMExclude
  762.         option when the two overlap, as above.  
  763.  
  764.  
  765.         10.2 HIGHMEM and Windows 386 Enhanced Mode    
  766.  
  767.         DOS  applications  (such  as HIGHMEM) run from inside Windows 3.0
  768.         are  given  their  own  "virtual" address space of 640k.  Windows
  769.         tells  the  386  processor to map memory references in this space
  770.         to  the  particular  640k  of  physical  memory  which  has  been
  771.         allocated  to the application.  References outside this range are
  772.         considered  invalid  and thus return garbage.  Since HIGHMEM is a
  773.         program  that  inspects memory between 640k-1M, there's no way it
  774.         can  execute  properly  in this context.  Outside of Windows, and
  775.         in  any  mode  other  than 386 Enhanced Mode, HIGHMEM will behave
  776.         normally.  
  777.  
  778.  
  779.  
  780.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  781.  
  782.  
  783.         Oct 24, 1990           The LAST BYTE (tm)                      13
  784.  
  785.  
  786.  
  787.  
  788.         10.3 HIGHDISK and Windows 386 Enhanced Mode    
  789.  
  790.         HIGHDISK.SYS  also  uses  memory  in  the 640k-1M range and so is
  791.         susceptible  to  the  same  problems  that HIGHMEM experiences as
  792.         discussed  above in Section 10.2.  Outside of Windows, and in any
  793.         mode   other   than  386  Enhanced  Mode,  HIGHDISK  will  behave
  794.         normally.  
  795.  
  796.  
  797.         _1_1_.__U_s_i_n_g__t_h_e__D_O_S_=_F_0_0_0_:_3_2__O_p_t_i_o_n__w_i_t_h__A_M_I__B_i_o_s__C_h_i_p_s_ 
  798.  
  799.         The  64k  region  starting  at paragraph address F000 is the Bios
  800.         ROM.   Many  of the popular 286, 386, and 386sx clones use a Bios
  801.         ROM  developed  by  AMI.   The more recent versions of these ROMs
  802.         devote  the  first  32k  to initialization code that is only used
  803.         during  the  boot  sequence,  and  use  the  second  32k for that
  804.         portion that must remain available at all times.  
  805.  
  806.         By  the time your PC gets to the point in its boot sequence where
  807.         it  is setting up the device drivers (e.g., when it is installing
  808.         LASTBYTE.SYS),   the   Bios  initialization  code  is  no  longer
  809.         needed.   If  you  have  one  of  these  AMI  Bios chips, you can
  810.         capture  another 32k of high memory by using a DOS=F000:32 option
  811.         (see Section 3, "Command Line Options For LASTBYTE.SYS").  
  812.  
  813.         Of  course,  whenever  you  press Ctrl-Alt-Del to do a warm boot,
  814.         the  ROM  Bios  initialization  code  needs to be executed again!
  815.         And  that could be a problem since you've effectively disabled it
  816.         with   the   DOS=F000:32   option!    Fortunately,   LASTBYTE.SYS
  817.         intercepts   all   keyboard  input  and  keeps  an  eye  out  for
  818.         Ctrl-Alt-Del.   When it sees the warm boot request, it will force
  819.         a  COLD  BOOT  if  you've  used  the  DOS=F000:32  option.   This
  820.         re-enables  the  entire  64k  Bios ROM so that the initialization
  821.         code  is  reactivated  before  the processor tries to execute it.
  822.         Otherwise a normal warm boot is used.  
  823.  
  824.  
  825.                                Keyboard TSRs      
  826.  
  827.              Some  TSRs intercept the keyboard hardware interrupt 9,
  828.              and  will  jump  directly  into a fixed location in the
  829.              Bios   ROM   where   the   Warm   Boot   code   begins.
  830.              Unfortunately,  this  will bypass LASTBYTE's attempt to
  831.              turn the ROM back on.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  841.  
  842.  
  843.         Oct 24, 1990           The LAST BYTE (tm)                      14
  844.  
  845.  
  846.         _1_2_.__V_i_d_e_o__D_i_s_p_l_a_y__R_A_M__a_b_o_v_e__6_4_0_k____ 
  847.  
  848.         In  general,  the  region A0000-BFFFF is the video display buffer
  849.         area.   Various  display  adapters  (MDA, Hercules, CGA, EGA, and
  850.         VGA)  typically  use only a small subset of this space.  LASTBYTE
  851.         automatically  senses  what  kind  of  video  display  adapter is
  852.         installed  and  reserves  that portion of this address space that
  853.         might  POTENTIALLY  be  used  by  the adapter.  You can determine
  854.         where  these  areas  are with the HIGHMEM command or with the "?"
  855.         option on the command line of LASTBYTE.SYS.  
  856.  
  857.         Theoretically,  neither  the  EGA  or  VGA  should  use  the  32k
  858.         monochrome  region  (B0000-B7FFF),  and only use the 64k graphics
  859.         buffer   (A0000-AFFFF)   in   high-resolution   graphics   modes.
  860.         However,  the  ROM  Bios  of  a few EGA or VGA adapters have been
  861.         known  to  write  into  one  or  more of these areas even if they
  862.         aren't  in  monochrome  or  graphics  mode.   Thus  when LASTBYTE
  863.         detects  an  EGA  or  VGA  adapter,  it  reserves the entire 128k
  864.         display buffer between A0000-BFFFF.  
  865.  
  866.         If  a Hercules adapter is found, LASTBYTE reserves the entire 64k
  867.         range   B0000-BFFFF   as  Bank-Switch  memory  in  case  Hercules
  868.         graphics  modes are used although only the first 4k of this space
  869.         is used for text modes.  
  870.  
  871.         Like  the  text-only  mode  of  a  Hercules  card, an MDA adapter
  872.         should  use  only  the  4k  range  B0000-B0FFF,  and clearing the
  873.         screen  with  a  DOS  "CLS"  command  should  erase the screen by
  874.         writing  (only)  in  this  region.  However, the ROM BIOS on some
  875.         clones  assumes  that the MDA display buffer fills a larger (16k)
  876.         region  between  B0000-B3FFF and may write into memory beyond the
  877.         first 4k.  
  878.  
  879.         Similarly,  the  four  video  text pages of the CGA, EGA, and VGA
  880.         adapters   occupy  only  the  16k  range  B8000-BBFFF,  but  some
  881.         software will write to the second 16k between BC000-BFFFF.  
  882.  
  883.         Therefore,  if  any  (monochrome)  Display Buffer RAM is found at
  884.         B0000,  LASTBYTE  reserves  the entire 32k range B0000-B7FFF.  If
  885.         any  (CGA,  EGA  or  VGA)  Display  Buffer RAM is found at B8000,
  886.         LASTBYTE reserves the entire 32k range B8000-BFFFF.  
  887.  
  888.         You  may  choose  to  override these rather conservative defaults
  889.         with  the  "DOS="  command  line  option  as described below.  In
  890.         addition  to  the  constraints  imposed  by your particular video
  891.         display   adapter,   the   16k   resolution   of  the  Chips  and
  892.         Technologies  memory  controller limit what you can do.  For more
  893.         information,  review  the  discussion in Section 3, "Command Line
  894.         Options For LASTBYTE.SYS".  
  895.  
  896.         The  following  chart  summarizes the conservative approach taken
  897.  
  898.  
  899.  
  900.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  901.  
  902.  
  903.         Oct 24, 1990           The LAST BYTE (tm)                      15
  904.  
  905.  
  906.         by  LASTBYTE  as  well  as what "DOS=" options you may be able to
  907.         use: 
  908.  
  909.         Display         Reserved        "DOS="                  "APPEND="
  910.         Adapter         by default      Options                 Options
  911.         -------         -----------     --------                ---------
  912.         Monochrome      B0000-B7FFF     A000:64         or      A000:64
  913.                                         B400:16         and     A000:64
  914.  
  915.         Hercules        B0000-BFFFF     A000:64         or      A000:64
  916.                                         B400:48 (1)     and     A000:64
  917.  
  918.         CGA             B8000-BFFFF     A000:96         or      A000:96
  919.                                         BC00:16 (2)     and     A000:96
  920.  
  921.         EGA and VGA     A0000-BFFFF     A000:64 (1)     or      A000:96
  922.                                         B000:32         and     A000:64
  923.                                         BC00:16 (2,3)   and     A000:96
  924.  
  925.         VGA Bios Rom    C0000-C7FFF     C600:8 (4)
  926.  
  927.                   Notes:  (1) Cannot be used with graphics modes.
  928.                           (2) WINDOWS 3.0 may write in this area!
  929.                           (3) May be combined with DOS=B000:32.
  930.                           (4) See section 13, "Video Adapter Bios ROMs"
  931.  
  932.         _1_3_.__V_i_d_e_o__A_d_a_p_t_e_r__B_i_o_s__R_O_M_s_____ 
  933.  
  934.         MDA  and CGA use the standard ROM Bios; they have no ROM of their
  935.         own.   Hercules,  EGA,  and  VGA  adapters,  however, incorporate
  936.         their  own  ROM  Bios  chip  right on the adapter card.  LASTBYTE
  937.         successfully  recognizes  these  ROMs,  but has to treat VGA in a
  938.         special manner: 
  939.  
  940.         The  VGA  adapter  made  by  IBM  has  a  24k  ROM  installed  at
  941.         C0000-C5FFF,  which  means  that  the 8k at C6000-C7FFF should be
  942.         usable.   Although  almost  all  VGA  clones have a ROM signature
  943.         that  indicates  24k,  many of them use the C6000-C7FFF space for
  944.         ROM  Bios  or  RAM  extensions  that  provide  their  "Super VGA"
  945.         features.    In   particular,   the  Video7  and  Paradise  VGA's
  946.         incorporate  their  own  RAM  from C6000-C7FFF.  For this reason,
  947.         when  LASTBYTE  finds  anybody's  VGA  adapter,  it automatically
  948.         assumes that there is a 32k ROM at C0000-C7FFF.  
  949.  
  950.  
  951.         _1_4_.__H_I_G_H_A_P_N_D_:__S_t_r_e_t_c_h_i_n_g__C_o_n_v_e_n_t_i_o_n_a_l__M_e_m_o_r_y__b_e_y_o_n_d__6_4_0_k___ 
  952.  
  953.         HIGHAPND.EXE  is  a  program that can only be used in conjunction
  954.         with  the  "APPEND="  option  of LASTBYTE.SYS.  HIGHAPND.SYS is a
  955.         device  driver  version  of  HIGHAPND.EXE.  Either can be used to
  956.         append  some  of  the  memory that begins at 640k onto the end of
  957.  
  958.  
  959.  
  960.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  961.  
  962.  
  963.         Oct 24, 1990           The LAST BYTE (tm)                      16
  964.  
  965.  
  966.         DOS  Conventional  (low)  memory  (and  also  to  return later to
  967.         640k).  
  968.  
  969.         Monochrome  (MDA),  Hercules,  and CGA display adapters don't use
  970.         the  64k  region starting at A000, and so this memory can be used
  971.         to  extend  conventional  memory  from 640k to 704k.  CGA display
  972.         adapters  also  don't  use  the next 32k either, and so CGA users
  973.         may extend conventional memory all the way to 736k.  
  974.  
  975.         EGA  and  VGA  display adapters have a 64k hi-resolution graphics
  976.         display  buffer  that  is  located  at A000.  This buffer is only
  977.         needed  when you are using only hi-resolution graphics.  When the
  978.         display  is  in either text or low-resolution CGA graphics modes,
  979.         this  memory  is not used, and may be used to extend conventional
  980.         memory.   Since  most  EGA and VGA adapters usually don't use the
  981.         32k  region  at B000, you may even be able to extend conventional
  982.         memory up to 736k.  
  983.  
  984.         HIGHAPND  will automatically disable any EGA or VGA hi-resolution
  985.         graphics   capability   whenever  conventional  memory  has  been
  986.         extended  beyond  640k.   This  makes  software  that attempts to
  987.         sense  what  type  of display adapter is installed think that you
  988.         have  only  a  CGA  adapter.   Later,  when you need the graphics
  989.         capability,   you   can   disable   the   memory   extension  and
  990.         hi-resolution graphics will be automatically re-enabled.  
  991.  
  992.         HIGHAPND.SYS can be used during CONFIG.SYS processing: 
  993.  
  994.                 DEVICE=HIGHAPND.SYS ON  {Extends conv. memory beyond 640k}
  995.  
  996.                 DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
  997.  
  998.                 Note:   HIGHAPND.SYS may not work properly with some versions
  999.                         of DOS; in such cases, use HIGHAPND.EXE instead.
  1000.  
  1001.         or  HIGHAPND.EXE can be used during AUTOEXEC.BAT processing or at
  1002.         any time after the computer is booted: 
  1003.  
  1004.                 A>HIGHAPND ON   {Extends conv. memory beyond 640k}
  1005.  
  1006.                 A>HIGHAPND OFF  {Resets conv. memory to 640k}
  1007.  
  1008.                 Note:   HIGHAPND.EXE may not work properly with DR DOS;
  1009.                         in such cases, use HIGHAPND.SYS instead.
  1010.  
  1011.         HIGHAPND  (or  HIGHMEM)  can  be  used  without  any command line
  1012.         options  to determine the current size of conventional memory and
  1013.         the state of EGA/VGA hi-resolution graphics: 
  1014.  
  1015.                 A>HIGHAPND 
  1016.  
  1017.  
  1018.  
  1019.  
  1020.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1021.  
  1022.  
  1023.         Oct 24, 1990           The LAST BYTE (tm)                      17
  1024.  
  1025.  
  1026.         You  can  put  these  commands  into  a  batch  file  to simplify
  1027.         switching  back  and  forth.   For example, if you want the extra
  1028.         memory  all  the  time  except  when you need hi-res graphics for
  1029.         WINDOWS, create a batch file like the following to run windows: 
  1030.  
  1031.                 @ECHO OFF 
  1032.                 HIGHAPND OFF 
  1033.                 WIN %1 %2 
  1034.                 HIGHAPND ON 
  1035.  
  1036.         If  you  have  hi-res  graphics  disabled  and run a program that
  1037.         tries  to use hi-res graphics without first sensing for an EGA or
  1038.         VGA  adapter,  LASTBYTE  will notice the conflict, issue an error
  1039.         message,  and  terminate  the  program.  Some programs redirect a
  1040.         few  interrupts during their initialization and then restore them
  1041.         before  termination.  LASTBYTE's termination of graphics programs
  1042.         doesn't  know  how  to restore these interrupts, so in some cases
  1043.         you  may  have  to  reboot  the computer.  In other words, if you
  1044.         experience  this  kind of program termination with an application
  1045.         program,  it's  best  to prepare a batch file (as shown above) to
  1046.         run the program.  
  1047.  
  1048.                                       Notes
  1049.  
  1050.              o  The  use  of  HIGHAPND.EXE  requires  the  use of an
  1051.                 APPEND=A000:??   option   on  the  LASTBYTE  command
  1052.                 line.  
  1053.  
  1054.              o  There  is  no  benefit to using HIGHDRVR.SYS to load
  1055.                 HIGHAPND.SYS  into  high  memory  because  it  never
  1056.                 stays resident.  
  1057.  
  1058.  
  1059.         _1_5_.__U_s_i_n_g__T_h_e__L_a_s_t__B_y_t_e__w_i_t_h__E_x_p_a_n_d_e_d__M_e_m_o_r_y__ 
  1060.  
  1061.         Expanded  memory always has an associated device driver.  If that
  1062.         driver  is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
  1063.         if  the  hardware is enabled) LASTBYTE will recognize the 64k EMM
  1064.         Page  Frame  of  the  expanded  memory and do the right thing: It
  1065.         will  treat the Page Frame like any other Adapter Ram and disable
  1066.         the  motherboard RAM that falls in the same address space so that
  1067.         it  doesn't  interfere  with the Page Frame.  For example, if the
  1068.         EMM  driver  is  loaded first (as described above), LASTBYTE will
  1069.         report the 64k EMM Page Frame as "EMS Page Frame".  
  1070.  
  1071.         This  works  fine,  of  course,  but loading the EMM driver first
  1072.         precludes  the  possibility  of  loading it into High Memory.  To
  1073.         get  the  EMM  driver  in  to  High  Memory means that it must be
  1074.         loaded after LASTBYTE.SYS, but you must be careful! 
  1075.  
  1076.         If   LASTBYTE.SYS  is  loaded  first,  the  Page  Frame  will  be
  1077.  
  1078.  
  1079.  
  1080.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1081.  
  1082.  
  1083.         Oct 24, 1990           The LAST BYTE (tm)                      18
  1084.  
  1085.  
  1086.         recognized  only  in  two  cases:  (1) The Page Frame used by the
  1087.         Expanded  Memory controller built into the Chips and Technologies
  1088.         NEAT  chipsets  will  be  recognized  and  reported  as "EMS Page
  1089.         Frame".   (2)  The  Page Frame of a REAL expanded memory board is
  1090.         (if  enabled)  recognized  and  reported  as  "Adapter  RAM".  In
  1091.         either case, LASTBYTE will not use that memory space.  
  1092.  
  1093.  
  1094.                            Recognizing EMS Boards     
  1095.  
  1096.              Some  EMS boards must be enabled by their device driver
  1097.              before   they   respond  as  read/write  memory.   This
  1098.              prevents  LASTBYTE  from recognizing them, and you will
  1099.              have  to  use  a  "BSW="  option  to keep LASTBYTE from
  1100.              using the Page Frame memory space.  
  1101.  
  1102.  
  1103.         If  you  don't  have  an  expanded  memory board, but have used a
  1104.         device  driver  (like  EMM386.SYS)  that EMULATES expanded memory
  1105.         using  extended memory, then LASTBYTE.SYS will not know about the
  1106.         page  frame unless the emulator is loaded first.  If LASTBYTE.SYS
  1107.         is  loaded  first,  then  you must use a "EXCLUDE=" (not "BSW="!)
  1108.         command  line  option  of  LASTBYTE.SYS  to  reserve a 64k region
  1109.         where  the  emulated  Page  Frame  can  be placed.  (Do NOT use a
  1110.         corresponding  EMMInclude  option  in  the SYSTEM.INI file.)  For
  1111.         EMM386.SYS,  this  64k region must lie at C000, C400, C800, CC00,
  1112.         D000, D400, D800, DC00, or E000.  
  1113.  
  1114.  
  1115.         _1_6_.__H_I_G_H_E_M_S_:__E_m_u_l_a_t_i_n_g__E_x_p_a_n_d_e_d__M_e_m_o_r_y__w_/_B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y___ 
  1116.  
  1117.         Two  Expanded  Memory Emulators are provided with LASTBYTE.  Both
  1118.         use  high  memory  as Expanded Memory.  HIGHEMS3.SYS is compliant
  1119.         with  the older LIM 3.2 spec, and HIGHEMS4.SYS with the newer LIM
  1120.         4.0  spec.   Both  are  included  since the HIGHEMS3.SYS requires
  1121.         much   less   memory   for   the   device   driver   itself  than
  1122.         HIGHEMS4.SYS.   In  many  applications,  you may find that 3.2 is
  1123.         all you need.  
  1124.  
  1125.         These  device  drivers  EMULATE Expanded Memory!  That means that
  1126.         they  use  software  to  copy  data  back  and  forth between the
  1127.         logical  EMS  memory (pages) and the Page Frame.  Obviously, this
  1128.         is  MUCH  slower  than  the  performance  you  would realize with
  1129.         hardware  support,  or  even  with  EMM386.SYS.  Therefore, these
  1130.         device  drivers  are  provided for those who have no other way of
  1131.         providing  EMS  memory  to their applications, such as users with
  1132.         only 1Meg of memory.  
  1133.  
  1134.         Both  HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
  1135.         parameter  which  is the number of 16k EMS pages to allocate.  If
  1136.         omitted,  the  maximum  allocation  will  be  used.   Bank-Switch
  1137.  
  1138.  
  1139.  
  1140.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1141.  
  1142.  
  1143.         Oct 24, 1990           The LAST BYTE (tm)                      19
  1144.  
  1145.  
  1146.         Memory  is  allocated first, and if that isn't enough, then other
  1147.         High Memory is allocated to satisfy the total page request.  
  1148.  
  1149.         Use  only  one  of  these  device  drivers,  and  load  it  AFTER
  1150.         LASTBYTE.SYS.   The  driver itself may be loaded into high memory
  1151.         using HIGHDRVR.SYS.  
  1152.  
  1153.  
  1154.                                 Suggestion       
  1155.  
  1156.              On  a  machine  with no expanded memory, you might want
  1157.              to  use  HIGHEMS3  to  provide some Expanded Memory for
  1158.              Charles  Lazo's scroll-back TSR, WAS.COM.  This utility
  1159.              saves  lines  of  text  that have been scrolled off the
  1160.              top  of  the  screen  and  allows you to pull them back
  1161.              down  for  review.   WAS  is available from a number of
  1162.              BBS's,   usually   under  the  filename  WAS050.ZIP  or
  1163.              WAS050.ARC.  
  1164.  
  1165.  
  1166.         _1_7_.__F_i_n_e_-_T_u_n_i_n_g__y_o_u_r__A_d_a_p_t_e_r__H_a_r_d_w_a_r_e__C_o_n_f_i_g_u_r_a_t_i_o_n____ 
  1167.  
  1168.         Many  adapter  cards occupy some portion of the 640k-1Meg address
  1169.         space.   Some  of  these  cards,  such  as SCSI Disk Controllers,
  1170.         often  have  DIP  switches or jumpers that can be used to set the
  1171.         address space they occupy to one of a few chioces.  
  1172.  
  1173.         If  the memory map displayed by HIGHMEM is fragmented because one
  1174.         of  these adapters sits between two "....DOS Free" areas, you may
  1175.         want  to  try  to  reposition  the address space occupied by that
  1176.         adapter  by  modifying  the  DIP switch or jumper settings on the
  1177.         card.  
  1178.  
  1179.         Having  one  large  free  memory block is better than two smaller
  1180.         ones  because TSR's and device drivers almost always require more
  1181.         memory  during  initialization  than  once  installed.   In other
  1182.         words,  neither of the two smaller blocks may be large enough for
  1183.         the installation, but might if they were combined.  
  1184.  
  1185.  
  1186.         _1_8_.__U_s_i_n_g__H_I_G_H_U_M_M_._S_Y_S__w_i_t_h__4_D_O_S_____ 
  1187.  
  1188.         4DOS  is  a  shareware  replacement for COMMAND.COM.  HIGHUMM.SYS
  1189.         may  be  used in conjunction with the DOS device driver HIMEM.SYS
  1190.         to  move  the  4DOS  command processor and its master environment
  1191.         into  "Upper  Memory  Blocks"  (UMB's)  between 640k and 1M, thus
  1192.         reducing  the  amount  of  conventional memory below 640k used by
  1193.         4DOS from 3.4k bytes to 256 bytes.  
  1194.  
  1195.         First  you  must  be  sure that your CONFIG.SYS file contains the
  1196.         following three lines: 
  1197.  
  1198.  
  1199.  
  1200.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1201.  
  1202.  
  1203.         Oct 24, 1990           The LAST BYTE (tm)                      20
  1204.  
  1205.  
  1206.  
  1207.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  1208.                 DEVICE=HIGHDRVR.SYS HIMEM.SYS {and any HIMEM options}
  1209.                 DEVICE=HIGHDRVR.SYS HIGHUMM.SYS
  1210.  
  1211.         Then  you  must  add  a  "SHELL="  line  to  CONFIG.SYS for 4DOS,
  1212.         including  the options "/U" (to place the command processor in an
  1213.         UMB)  and  "/E:512U" (to place the master environment in an UMB).
  1214.         The  value "512" is of course only an example - other environment
  1215.         sizes  may  be  specified.   You  may  also want to specify these
  1216.         options   for   secondary   shells  in  the  4DSHELL  environment
  1217.         variable.  Consult the 4DOS documentation for further details.  
  1218.  
  1219.         4DOS  may  be  downloaded from The Future Technology BBS at (617)
  1220.         720-3600.  
  1221.  
  1222.  
  1223.         _1_9_.__H_I_G_H_B_F_R_S_:__L_o_a_d_i_n_g__D_O_S__B_u_f_f_e_r_s__i_n_t_o__H_i_g_h__M_e_m_o_r_y__ 
  1224.  
  1225.         NOTE:  HIGHBFRS  *ONLY*  works  for DOS 3.xx.  It does *NOT* work
  1226.         for DOS 4.  
  1227.  
  1228.                 ╔═════════════════════════════════════════════════╗
  1229.                 ║ WARNING!  PLACING DOS BUFFERS IN HIGH MEMORY    ║
  1230.                 ║ CAN RESULT IN THE LOSS OF DATA.  I.E., IT CAN   ║
  1231.                 ║ DAMAGE THE DIRECTORY AND FILE ALLOCATION TABLES ║
  1232.                 ║ OF YOUR DISK.  READ EVERYTHING IN THIS SECTION  ║
  1233.                 ║ BEFORE CONSIDERING THE USE OF THIS UTILITY.     ║
  1234.                 ╚═════════════════════════════════════════════════╝
  1235.  
  1236.         Some  16-bit  adapter  cards  do  not properly decode the address
  1237.         lines  within  the narrow time constraints imposed by the Address
  1238.         Latch  Enable  (ALE)  signal.   As  a  result,  such  cards  will
  1239.         occassionally  respond  to  a  memory  access that is directed at
  1240.         some  other  portion  of  the address space.  Thinking that it is
  1241.         for  them,  they  force the transfer into 16-bit mode even though
  1242.         the  intended  recipient  requires  8-bit  mode,  and  thus cause
  1243.         erroneous   data   to   be   transferred  to  the  bytes  in  the
  1244.         odd-numbered  addresses.   The most common and damaging occurence
  1245.         occurs  during  the  8-bit  DMA  transfers  between a floppy disk
  1246.         drive  and  high  memory  near  the  address space occupied by an
  1247.         offending  16-bit  adapter  card.   Due  to  organization  of the
  1248.         address  signals  on  the AT bus, this phenomena only occurs when
  1249.         the  two  address  areas  are within the same 128k region.  There
  1250.         are  three  such  regions  in  the high memory area: A0000-BFFFF,
  1251.         C0000-DFFFF, and E0000-FFFFF.  
  1252.  
  1253.         Evidence  of  this  hardware  problem has been exhibited by other
  1254.         memory  managers  that  also offer software to locate DOS buffers
  1255.         in high memory.  The problem is NOT unique to LASTBYTE.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1261.  
  1262.  
  1263.         Oct 24, 1990           The LAST BYTE (tm)                      21
  1264.  
  1265.  
  1266.         HIGHBFRS  offers  two  solutions to this problem.  The first (and
  1267.         preferred  solution)  is to restrict the placement of DOS buffers
  1268.         to  particular  128k regions in high memory.  For example, if you
  1269.         have  an  offending  16-bit VGA card, you would want to place the
  1270.         DOS  buffers  in  only the last 128k region since the VGA display
  1271.         buffer  occupies  A0000-AFFFF and B8000-BFFFF and because the VGA
  1272.         Bios  Rom  occupies  C0000-C7FFF.  The corresponding command line
  1273.         options (explained in more detail later) would be: 
  1274.  
  1275.                    HIGHBFRS A000-BFFF=0 C000-DFFF=0 BUFFERS=20
  1276.  
  1277.         If  you  have  16-bit  adapter  cards in all three 128k segments,
  1278.         then  a  second  (different)  solution  may be both necessary and
  1279.         sufficient.   It  intercepts transfers between floppy disk drives
  1280.         (an  8-bit  DMA  interface)  and  high  memory, and redirects the
  1281.         transfer  through  an  intermediate sector buffer in conventional
  1282.         (low)  memory.   Almost  all hard disk controllers use 16-bit CPU
  1283.         instructions   to  transfer  data  and  thus  do  not  incur  the
  1284.         problem.  The corresponding command line options would be: 
  1285.  
  1286.                           HIGHBFRS FLOPPY=1 BUFFERS=20
  1287.  
  1288.         To  use  HIGHBFRS,  you  MUST  set "BUFFERS=1" in your CONFIG.SYS
  1289.         file.   This  one buffer in Conventional (low) memory is required
  1290.         by  the  FLOPPY  option  as the intermediate buffer for transfers
  1291.         between floppy disk drives and high memory.  
  1292.  
  1293.         The command line options of HIGHBFRS are as follows: 
  1294.  
  1295.  
  1296.              BUFFERS=<number> (Abbreviated "B=<number>") 
  1297.  
  1298.                   Changes  the  number  of  DOS buffers to the value
  1299.                   specified.  (Note:  "<number>"  is  a  number from
  1300.                   1-99.) 
  1301.  
  1302.              BUFFERS=MAXIMUM (Abbreviated "B=M") 
  1303.  
  1304.                   Changes  the  number of DOS buffers to the maximum
  1305.                   permitted  by the amount of available unrestricted
  1306.                   memory, but no more than the DOS limit of 99.  
  1307.  
  1308.              FLOPPY=<switch> (Abbreviated "F=<switch>") 
  1309.  
  1310.                   Enables  (1)  or  disables (0) redirection of Bios
  1311.                   INT  13h  calls  that  attempt  to  transfer  data
  1312.                   between  a  floppy disk drive and high memory.  If
  1313.                   redirected,   such   transfers   go   through   an
  1314.                   intermediate  buffer located in Conventional (low)
  1315.                   memory.  (Note: "<switch>" is either 0 or 1.) 
  1316.  
  1317.  
  1318.  
  1319.  
  1320.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1321.  
  1322.  
  1323.         Oct 24, 1990           The LAST BYTE (tm)                      22
  1324.  
  1325.  
  1326.              A000-BFFF=<switch> (Abbreviated "A=<switch>") 
  1327.              C000-DFFF=<switch> (Abbreviated "C=<switch>") 
  1328.              E000-FFFF=<switch> (Abbreviated "E=<switch>") 
  1329.  
  1330.                   where  "<switch>"  is  0  or  1.   Enables  (1) or
  1331.                   disables  (0)  the placement of DOS buffers in the
  1332.                   corresponding  128k  region  of  the  high  memory
  1333.                   address space.  
  1334.  
  1335.         All  of these are optional, may be combined at random, and may be
  1336.         abbreviated  by  their  first letter (e.g., A=<switch> instead of
  1337.         A000-BFFF=<switch>).   The  first  time you run HIGHBFRS, all the
  1338.         options   default   to   1  unless  overridden  by  command  line
  1339.         arguments.   Each  successive  time HIGHBFRS is run, the defaults
  1340.         are whatever the last setting of each option happens to be.  
  1341.  
  1342.         When  HIGHBFRS  is  invoked  with  no  command line arguments, it
  1343.         simply  reports  the  number  of DOS buffers presently located in
  1344.         High  Memory  and  whether  or  not transfers between floppy disk
  1345.         drives  and  high memory are redirected.  You may use the HIGHMEM
  1346.         program  to  determine where the buffers have been placed in high
  1347.         memory.  
  1348.  
  1349.         MicroSoft  recommends setting the "BUFFERS=" option in CONFIG.SYS
  1350.         according  to  the  type  of  application  most  frequently used.
  1351.         Implicit  within  this  recommendation is the assumption that you
  1352.         won't  change  the  value  very  often  since it requires editing
  1353.         CONFIG.SYS and rebooting.  
  1354.  
  1355.         However,  since  HIGHBFRS  allows you to increase or decrease the
  1356.         number  of buffers dynamically, you could create some batch files
  1357.         to invoke your applications with the optimum number.  
  1358.  
  1359.         In  general, more buffers help when running programs that perform
  1360.         random  access on a relatively small number of disk records (such
  1361.         as  the  index  for a database program), or if your disk has many
  1362.         subdirectories organized on several levels.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1381.  
  1382.  
  1383.                                The LAST BYTE (tm)
  1384.  
  1385.  
  1386.                                 Table of Contents
  1387.  
  1388.  
  1389.         1. Introduction        ....................................    1
  1390.  
  1391.         2. Installation        ....................................    2
  1392.  
  1393.         3. Command Line Options For LASTBYTE.SYS    ...............    5
  1394.  
  1395.         4. HIGHMARK and HIGHUNDO: Unloading TSRs from Memory  .....    7
  1396.  
  1397.         5. HIGHINST: Loading SHARE.EXE into High Memory   .........    8
  1398.  
  1399.         6. The /SIZE option of HIGHDRVR HIGHTSR and HIGHINST ......    9
  1400.  
  1401.         7. The /NOENV option of HIGHTSR and HIGHINST  .............   10
  1402.  
  1403.         8. Installing FASTOPEN and MODE into High Memory  .........   10
  1404.  
  1405.         9. HIGHDISK: A Ram Disk in Bank-Switch Memory  ............   11
  1406.  
  1407.         10. Windows 3.0 Compatibility      ........................   12
  1408.            10.1  Modifying the Windows SYSTEM.INI File    .........   12
  1409.            10.2  HIGHMEM and Windows 386 Enhanced Mode   ..........   12
  1410.            10.3  HIGHDISK and Windows 386 Enhanced Mode   .........   13
  1411.  
  1412.         11. Using the DOS=F000:32 Option with AMI Bios Chips ......   13
  1413.  
  1414.         12. Video Display RAM above 640k    .......................   13
  1415.  
  1416.         13. Video Adapter Bios ROMs     ...........................   15
  1417.  
  1418.         14. HIGHAPND: Stretching Conventional Memory beyond 640k      15
  1419.  
  1420.         15. Using The Last Byte with Expanded Memory  .............   17
  1421.  
  1422.         16. HIGHEMS: Emulating Expanded Memory w/Bank-Switch Memory   18
  1423.  
  1424.         17. Fine-Tuning your Adapter Hardware Configuration    ....   19
  1425.  
  1426.         18. Using HIGHUMM.SYS with 4DOS     .......................   19
  1427.  
  1428.         19. HIGHBFRS: Loading DOS Buffers into High Memory  .......   20
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1441.  
  1442.