home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / sysutl / addram10.arc / ADDRAM.DOC < prev    next >
Text File  |  1989-02-14  |  21KB  |  544 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.                                    ADDRAM 1.0
  23.                      Copyright (c) 1989 by Marty Del Vecchio
  24.  
  25.  
  26.                     Adds memory to DOS using EMS 4.0 memory.
  27.  
  28.  
  29.                            Based on the program EEMRAM
  30.                             written by Chris Dunford
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.                                 Table of Contents
  40.  
  41.  
  42.  
  43.  
  44.                I.   What You Should Have                         1
  45.  
  46.                II.  What the Program Does                        1
  47.  
  48.                III. What You Need                                2
  49.  
  50.                IV.  How to Do It                                 3
  51.  
  52.                V.   Message Reported by Programs                 4
  53.  
  54.                     A)  ADDRAM                                   4
  55.                     B)  SUBRAM                                   5
  56.                     C)  EMSDATA                                  6
  57.  
  58.                VI.  Notices/Disclaimer                           7
  59.  
  60.                VII. Questions                                    7
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                             I.  What You Should Have
  69.  
  70.  
  71.           ADDRAM consists of six files:
  72.  
  73.                1)  ADDRAM.COM      Program  that  uses  EMS  4.0  memory  to
  74.                                    extend DOS beyond 640K.
  75.                2)  ADDRAM.ASM      Assembly source for above.
  76.                3)  SUBRAM.COM      Program  that  undoes  ADDRAM--it returns
  77.                                    DOS to 640K
  78.                4)  SUBRAM.ASM      Assembly source for above.
  79.                5)  EMSDATA.EXE     Program that  gives information about the
  80.                                    EMS installed in your system.
  81.                6)  ADDRAM.DOC      This file--documentation.
  82.  
  83.  
  84.  
  85.                            II.  What the Program Does
  86.  
  87.           ADDRAM  can  increase  the  size  of  your  DOS  memory.    DOS is
  88.      restricted to  an arbitrary  limit of 640K of memory.  This is split up
  89.      into 10 segments (0 to 9) of 64K each, from  address 0000  to 9FFF hex.
  90.      DOS can  only handle  one large contiguous memory block, and ordinarily
  91.      this block is 640K large.
  92.  
  93.           This limit is arbitrary because of the placement  of video buffers
  94.      immediately after  the reserved DOS space.  The EGA/VGA graphics buffer
  95.      is located at A000.  The  monochrome text  buffer is  at B000,  and the
  96.      CGA/EGA/VGA text  buffer is  at B800.   Thus,  if you  are using a mono
  97.      card, then there is 64K of address space available right at the  end of
  98.      DOS that should be added to DOS.
  99.  
  100.           However, the DOS limit is widely known as 640K, and there are very
  101.      few memory cards designed to put memory at  these locations  for use by
  102.      DOS.  However, expanded memory cards that conform to the EEMS (Enhanced
  103.      Expanded Memory Specification) standard  from AST  have the  ability to
  104.      map memory  at virtually any location in the PC's address space.  Chris
  105.      Dunford wrote a program called EEMRAM  (EEMRAM11.ARC) that  mapped EEMS
  106.      memory at the unused video buffers and added it to DOS.
  107.  
  108.           When EMS  4.0 was introduced, it was a combination of "normal" EMS
  109.      3.2 (the type of memory provided by the Intel Above Board, for example)
  110.      and "enhanced" EMS (AST's memory cards).  Part of the EMS 4.0 spec says
  111.      that cards may be able to map memory at different  locations in  the PC
  112.      address space,  just like EEMS cards.  This program is designed for EMS
  113.      4.0 cards that can do this.
  114.  
  115.           However, it must be noted that this capability is an OPTION in the
  116.      EMS  4.0  spec.    Thus,  there  are  expanded  memory  cards  that are
  117.      advertised as "EMS 4.0" cards.  However, because they cannot map memory
  118.      wherever it  is needed,  they are insufficient for the purposes of this
  119.      program.  For this program, you need a "true" EMS  4.0 card.   For more
  120.  
  121.                                                                       Page 1
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.      particulars, see below.
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  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.  
  181.                                                                       Page 2
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.                                III.  What You Need
  189.  
  190.           ADDRAM is  designed to  extend DOS  beyond 640K whenever possible,
  191.      using EMS 4.0 memory.  It  does  this  by  addressing  EMS  memory into
  192.      unused video  buffer memory.  ADDRAM can only increase DOS' memory size
  193.      under certain conditions:
  194.  
  195.           1)   You must already have exactly 640K  of DOS  memory installed.
  196.                No more, no less.
  197.  
  198.           2)   The machine  MUST have  an EMS  4.0 memory  card that can map
  199.                expanded memory into the A000 and B000 segments,  where video
  200.                memory is  located.  The vast majority of EMS cards available
  201.                cannot do this,  because  they  were  designed  prior  to the
  202.                release of  the EMS 4.0 specification.  This program requires
  203.                functions found in EEMS  cards,  and  NEWLY-DESIGNED  EMS 4.0
  204.                cards.   Many EMS  cards are  sold today as "EMS 4.0" capable
  205.                that cannot perform all of the  EMS 4.0  functions needed for
  206.                this particular purpose.
  207.  
  208.                The following  paragraphs represent my personal experience in
  209.                working with memory cards, and their fitness for a particular
  210.                purpose.  This should not be interpreted as a general view of
  211.                the cards  discussed--this  is  only  a  discussion  of their
  212.                suitability for use by ADDRAM.
  213.  
  214.                All  of  the  AST  Rampage products (Rampage 286, Rampage 286
  215.                Plus, etc.) have the required capability, since they are true
  216.                EEMS/EMS 4.0  cards.   However, you  need to  get the EMS 4.0
  217.                driver from AST for these products--ADDRAM does not work with
  218.                a plain  EEMS driver.   If you only have the old EEMS driver,
  219.                use EEMRAM11.ARC by Chris Dunford.
  220.  
  221.                The Intel Above  Board  products  (Above  Board,  Above Board
  222.                Plus) do not have the capability needed by ADDRAM.  The Above
  223.                Board is an old-style EMS card, and the new Above  Board Plus
  224.                is  prohibited  from  addressing  memory in the A000 and B000
  225.                segments to prevent conflicts with video memory.   Thus, they
  226.                cannot be used by ADDRAM to add memory to DOS.
  227.  
  228.                The Charge  Card from  All Computers,  Inc. can be used.  Use
  229.                the device driver "ALLEMM4.SYS" included on the ALL disks.
  230.  
  231.                QEMM from Quarterdeck and  386 to  the Max  from Qualitas can
  232.                also be used, but they can automatically add memory to DOS if
  233.                requested.  This program  should be  unnecessary if  you have
  234.                either of these products or a similar product.
  235.  
  236.                The  program   EMSDATA.EXE,  included   here,  can  help  you
  237.                determine if your EMS card can be used.
  238.  
  239.           3)   There must be unused memory starting at segment A000.  If you
  240.  
  241.                                                                       Page 3
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.                have  an  EGA  or  VGA  system,  you cannot add memory to DOS
  249.                unless you use the All Charge Card.  This is  because EGA/VGA
  250.                cards use the A000 segment for high resolution graphics video
  251.                buffers, and thus the EMS card cannot address memory there. 
  252.  
  253.                If you have the Charge Card, and you do not  use your EGA/VGA
  254.                in graphics  mode, but  only in  text mode,  you can overcome
  255.                this restriction by adding "i=A000-AFFF" to the command line.
  256.                This takes  away the graphics buffer and gives it to DOS, and
  257.                thus any program that  tries  to  use  EGA/VGA  graphics will
  258.                crash your  system.  It is up to you to decide if you want to
  259.                make this tradeoff.  However, beware that some  EGA cards use
  260.                the A000  segment even  when not  in graphics mode.  You will
  261.                have to experiment with your particular  card to  see if this
  262.                space can be used.  Such results cannot be guaranteed.  
  263.  
  264.                If  you  have  a  standard  monochrome or Hercules monochrome
  265.                video card, then you can add 64K to DOS, for a total of 704K.
  266.                If you have a CGA system, you can add 96K to DOS, for a total
  267.                of 736K.
  268.  
  269.  
  270.  
  271.                                 IV.  How to Do It
  272.  
  273.           First, you have to ensure that your card  can map  memory into the
  274.      A000 and B000 segments.  Run the program EMSDATA.EXE to see if your EMS
  275.      card can currently do this.  Some EMS software drivers  (the driver you
  276.      load in CONFIG.SYS) must be explicitly told on their command lines that
  277.      they can use this memory for mapping.
  278.  
  279.           For example, if you have a  monochrome system  and an  AST Rampage
  280.      286, you  have to add the following to your 'DEVICE = REMM.SYS' command
  281.      line:  "/i=A000-AFFF".   This tells  the EMS  driver that  it is  OK to
  282.      address memory  into this  region.  If you have a CGA, you must specify
  283.      "/i=A000-B7FF".  Run the program EMSDATA.EXE  to determine  if your EMS
  284.      driver  can  map  memory  into  these  locations--the last paragraph it
  285.      prints out deals with this matter.
  286.  
  287.           Once you have ensured that the  EMS card  can map  memory into the
  288.      video buffer space, you must run the program ADDRAM.COM.  ADDRAM.COM is
  289.      the program that actually maps memory into the  video buffer  space and
  290.      tells DOS that it is there.
  291.  
  292.           To run  this program,  just type  'ADDRAM' at  the DOS prompt.  It
  293.      will automatically add as much memory as possible,  up to  96K, to DOS.
  294.      It will  report on  its success  or failure.   If you want to limit the
  295.      amount of memory added to  DOS  for  some  reason,  you  can  do  so by
  296.      specifying the  maximum number  of EMS  pages (16K each) on the command
  297.      line.  For example, to add only 32K  of memory  to DOS,  you would type
  298.      'ADDRAM /2' on the command line.
  299.  
  300.  
  301.                                                                       Page 4
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.                         V.  Messages Reported by Programs
  309.  
  310.  
  311.      A)  ADDRAM
  312.  
  313.           Here is a list of the messages reported by ADDRAM:
  314.  
  315.      "Expanded Memory Manager not found--no EMS installed."
  316.  
  317.           This message  indicates that  no expanded memory was found in your
  318.           system.  If you have an EMS card in your  machine, be  sure to add
  319.           the  device  driver  statement  in  your CONFIG.SYS file.  See the
  320.           instructions that come with your EMS card to do this.
  321.  
  322.      "Expanded Memory Manager reports an error."
  323.  
  324.           This message indicates that the EMS  software  is  in  a  state of
  325.           error.   This may be a software or hardware error--run EMSDATA.EXE
  326.           to determine the cause.  Because of this error, ADDRAM  cannot add
  327.           memory to DOS.
  328.  
  329.      "This program requires version 4.0 expanded memory."
  330.  
  331.           As discussed above, the EMS driver must be version 4.0 or above.
  332.  
  333.      "This program requires exactly 640K of installed DOS memory."
  334.  
  335.           As discussed  above, this  program cannot  be used if your machine
  336.           has more than 640K or less than 640K of DOS memory installed.   If
  337.           you have  more, then  you don't  need this  program.   If you have
  338.           less, then you should use your EMS card  to backfill  DOS to 640K.
  339.           To do this, see your EMS card's instruction manual.
  340.  
  341.      "This program's memory allocation block is not the last
  342.       in DOS' chain.  Cannot change memory of not at end."
  343.  
  344.           This message  indicates that  the memory block allocated to ADDRAM
  345.           is not at the END of DOS.  You might get this  message if  you try
  346.           to  run  ADDRAM  from  inside  of another program, such as the DOS
  347.           shell of Lotus 1-2-3.  If you get  this message,  exit the program
  348.           you are currently in and try again.
  349.  
  350.      "Expanded Memory Manager cannot map memory at segment A000."
  351.  
  352.           As discussed  above, your  EMS card  must be able to map memory at
  353.           segment A000 in order for it to be added to DOS.   This is because
  354.           DOS can only work with one large contiguous block of memory.
  355.  
  356.      "Not enough expanded memory available."
  357.  
  358.           If there  is not  enough expanded  memory free,  you will get this
  359.           error.  If you are adding 64K to DOS, then  you naturally  need to
  360.  
  361.                                                                       Page 5
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.           have  64K   of  expanded   memory  available.    Run  the  program
  369.           EMSDATA.EXE to determine the amount of free expanded memory.
  370.  
  371.      "Error while mapping expanded memory at A000."
  372.  
  373.           This message indicates that the EMS driver reported an error while
  374.           memory was  being mapped  at A000.   This  may be  a hardware or a
  375.           software error--in any case, no memory can be added to DOS.
  376.  
  377.      "Error assigning name to expanded memory handle."
  378.  
  379.           Under EMS version prior  to 4.0,  a chunk  of EMS  memory was only
  380.           known by  a number  (known as  a handle).  With EMS 4.0, a program
  381.           can identify its chunk of memory with an 8-character name.  ADDRAM
  382.           assigns the name "ADDRAM00" to its memory.  This is so that SUBRAM
  383.           can later find it and deallocate it.  This message  indicates that
  384.           an error  occurred wile assigning this name to the EMS memory.  In
  385.           this case, no memory can be added to DOS.
  386.  
  387.      "ADDRAM's name already in use by another handle."
  388.  
  389.           This message indicates that  another  program  has  used  the name
  390.           "ADDRAM00" for  its EMS  memory.  In this unlikely case, no memory
  391.           can be added to DOS.
  392.  
  393.      "XX KB memory successfully added to DOS."
  394.  
  395.           This message indicates success.  "XX" will be a number, either 16,
  396.           32, 48,  64, 80, or 96.  This specifies the amount of memory added
  397.           to DOS.  To verify  that  this  is  the  case,  run  DOS' 'CHKDSK'
  398.           program.  At the end it will report the amount of DOS memory.
  399.  
  400.  
  401.      B)  SUBRAM
  402.  
  403.           SUBRAM  can  be  used  to  un-do  the  effects of ADDRAM.  It will
  404.      restore DOS to 640K and release the expanded memory used.  Here are the
  405.      messages returned by SUBRAM:
  406.  
  407.      "Only 640KB DOS memory--no memory has been added by ADDRAM."
  408.  
  409.           This message  indicates that  DOS is  currently at  640K, and thus
  410.           ADDRAM has not been run successfully.
  411.  
  412.      "Expanded Memory Manager not found--no EMS installed."
  413.  
  414.           This message indicates that no  EMS  memory  is  installed  in the
  415.           system, and thus ADDRAM was not run successfully.
  416.  
  417.      "No memory has been added by ADDRAM."
  418.  
  419.           This  message  indicates  that,  although  EMS  memory is present,
  420.  
  421.                                                                       Page 6
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.           ADDRAM has not been run successfully to add memory to DOS.
  429.  
  430.      "This program's memory allocation block is not the last
  431.       in DOS's chain.  Cannot change memory if not at end."
  432.  
  433.           This message indicates that the memory  block allocated  to SUBRAM
  434.           is not  at the  END of DOS.  You might get this message if you try
  435.           to run SUBRAM from inside of  another  program,  such  as  the DOS
  436.           shell of  Lotus 1-2-3.   If you get this message, exit the program
  437.           you are currently in and try again.
  438.  
  439.      "Error deallocating EMS memory."
  440.  
  441.           This message indicates that an  error  occurred  while  SUBRAM was
  442.           freeing  the  EMS  memory  added  by  ADDRAM.    This  indicates a
  443.           malfunction in the EMS driver.
  444.  
  445.      "DOS memory reset to 640KB, EMS memory freed."
  446.  
  447.           This message indicates success--DOS was restored to 640KB, and the
  448.           EMS memory added by ADDRAM was freed for use by other programs.
  449.  
  450.  
  451.      C)  EMSDATA
  452.  
  453.           EMSDATA.EXE  is  designed  to  tell  you  about  your  current EMS
  454.      configuration.  Just type  'EMSDATA' at  the DOS  command prompt.   The
  455.      program's output  is generally longer than one screen--you can pause it
  456.      by hitting Ctrl-S (the Ctrl key and the S key at the  same time).   You
  457.      can resume the program by hitting any other key.
  458.  
  459.           This  program  will  tell  you  numerous  things  about  your EMS,
  460.      including the software version number, its current state,  the EMS page
  461.      frame segment  address (where application programs address EMS memory),
  462.      the total amount of EMS memory and amount of free EMS memory.
  463.  
  464.           EMSDATA will also give a list of the allocated handles  (blocks of
  465.      EMS memory  in use by programs), the pages and bytes allocated to each,
  466.      and if the EMS  is version  4.0 or  higher, the  name assigned  to each
  467.      handle.   It is  rare for  a program  to assign a name to a handle, but
  468.      ADDRAM assigns the name 'ADDRAM00' to its handle.
  469.  
  470.           EMSDATA  will  also  give  technical  information  about  your EMS
  471.      hardware,  include  the  raw  page  size (16KB is the standard EMS page
  472.      size, but some implementations have smaller sizes), total number of raw
  473.      pages, and number of free raw pages.
  474.  
  475.           EMSDATA  will  report  the  number  of "additional register sets."
  476.      This refers to the number of mappings the  EMS hardware  can keep track
  477.      of in  addition to the current mappings.  Multitasking programs such as
  478.      Desqview use alternate register  sets  for  quick  switching  of tasks.
  479.      This is  one way  to tell  if you  have a true EMS 4.0/EEMS system.  If
  480.  
  481.                                                                       Page 7
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.      this number  is 0,  then you  most likely  do not.   If  this number is
  489.      greater than 1, then you most likely do.
  490.  
  491.           The  context  save  area  size  refers  to  the amount of memory a
  492.      program must use to save the  current page  mapping context.   Resident
  493.      programs that  use EMS memory (such as Sidekick Plus, and RAM disks and
  494.      disk caches that uses EMS) must save the  current context  before using
  495.      their  EMS  memory.    The  smaller  this  area is, the faster they can
  496.      operate.
  497.  
  498.           The number of DMA channels available  on an  EMS board  can affect
  499.      its performance in copying memory from expanded to conventional memory.
  500.  
  501.           The  next  paragraph  printed  by EMSDATA discusses whether or not
  502.      your EMS card has been used to backfill DOS to 640K.   If it  has, then
  503.      programs like Desqview can use this page size to multitask programs in.
  504.      If not, then Desqview cannot easily  run multiple  programs in expanded
  505.      memory in this manner.
  506.  
  507.           The next  paragraph (and chart) discuss the exact memory locations
  508.      at which your EMS card  can  and  cannot  address  memory.    The final
  509.      paragraph discusses  whether or  not your EMS card is currently capable
  510.      of mapping memory at segment A000, and thus whether it  can potentially
  511.      be used  by ADDRAM.   Again,  these values may be changed, depending on
  512.      your EMS card, by adding parameters to the  device driver  statement in
  513.      your CONFIG.SYS file.  See your card's manual for more details.
  514.  
  515.  
  516.  
  517.                              VI.  Notices/Disclaimer
  518.  
  519.           This  program  is  released  to  the public domain for free use by
  520.      anybody.  However, it cannot be sold at any price.
  521.  
  522.           The author,  Marty Del  Vecchio, hereby  disclaims any warranties,
  523.      express or  implied.   This program  is not  guaranteed to work at all.
  524.      Its author cannot be responsible for any loss or any damage of any kind
  525.      resulting in its use.  Use at your own risk.
  526.  
  527.           All of  the brand  names used  are trademarks and/or copyrights of
  528.      the appropriate companies.  
  529.  
  530.  
  531.  
  532.                                  VII.  Questions
  533.  
  534.           If you have any questions or  bug reports,  you can  contact me at
  535.      home at (508) 820-1544.  Or you can find me at the Channel 1 BBS system
  536.      in Boston.  The number there is (617) 354-8873.  Leave a message in the
  537.      main conference for 'MARTY DEL VECCHIO'--note the space!
  538.  
  539.  
  540.  
  541.                                                                       Page 8
  542.  
  543.  
  544.