home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / vrac / load221.zip / LOAD.DOC < prev    next >
Text File  |  1993-11-06  |  32KB  |  629 lines

  1.         ╒════════════════════════════════════════════╕
  2.         │               LOAD & UnLOAD                │
  3.         │              Revision 2.21.0               │
  4.         │                                            │
  5.         │  Copyright (C) 1991-1993 FM de Monasterio  │
  6.         │   Licensed Material. All rights reserved   │
  7.         ╘════════════════════════════════════════════╛
  8.  
  9.     CONTENTS:    1. SUMMARY
  10.             2. REGISTRATION
  11.             3. GENERAL INFORMATION
  12.             4. PROGRAM INFORMATION
  13.             5. PROGRAM USAGE
  14.             6. LOADING IN UPPER MEMORY
  15.             7. BASIC TECHNICAL INFORMATION
  16.             8. OPERATION REQUIREMENTS & CONFLICTS
  17.             9. COPYRIGHT & LICENSE INFORMATION
  18.  
  19.  
  20.    1. SUMMARY
  21.  
  22.    LOAD permits the loading of a device driver directly from the DOS-command
  23.    line without having to edit the CONFIG.SYS file and rebooting the system.
  24.    For character (but not block) device drivers, LOAD provides the option of
  25.    installing the device drivers in the upper memory area, i.e., below 1,024
  26.    KB, the upper 086 memory limit of DOS, and above 640 KB, the IBM hardware
  27.    barrier, known as UMA, to preserve conventional memory (except for a 1-KB
  28.    resident gateway).  UMA loading requires an XMS manager 2+ and DOS 3+.
  29.  
  30.    A device driver LOADed directly from the DOS command line can be unlinked
  31.    from the driver chain and removed from memory with the associated utility
  32.    UnLOAD, or by selecting switch U of LOAD to release the allocated memory.
  33.    Hence, LOAD/UnLOAD allow for treating device drivers simply as a resident
  34.    programs that can be installed and uninstalled on the fly.
  35.  
  36.    See LOAD.NEW for a description of what is new with the current version.
  37.  
  38.  
  39.  
  40.    2. REGISTRATION
  41.  
  42.    This software is user-supported; the present release, although lacking the
  43.    options marked by asterisks, is a fully usable program.  You may test this
  44.    release for (in)compatibilities with your system, but after the testing is
  45.    completed you are requested to order a registered copy of the full release
  46.    of the software from the address at the end of this documentation.
  47.  
  48.    If you would rather use this unregistered copy, consider making a donation
  49.    to the Children's Hospital of Washington DC, for indigent children in need
  50.    of medical care.  Every year in the USA, infant mortality claims the lives
  51.    of tens of thousands of children before their first year of life, and most
  52.    of them come from families below poverty level...  Please send to the same
  53.    address a check payable to the "PATIENT CARE FUND, CHILDREN'S HOSPITAL" on
  54.    the obverse, and marked "For Deposit Only" on the reverse.  Donations will
  55.    be sent to Children's Hospital.  Please identify the program for which you
  56.    are making the donation.
  57.  
  58.        -------------------------------------------------------------------
  59.        LOAD.REG contains a form needed to register or upgrade the Software
  60.        -------------------------------------------------------------------
  61.  
  62.    See the final part of this documentation for information on the Licensing,
  63.    Distribution, and Limited Warranty of this software.
  64.  
  65.  
  66.  
  67.    3. GENERAL INFORMATION
  68.  
  69.    The computer operating system communicates with the outside world through
  70.    peripheral devices. Device drivers are programs that provide an interface
  71.    between DOS and a physical, i.e., disk hardware, or virtual device, i.e.,
  72.    RAM disk software.
  73.  
  74.    DOS distinguishes two main types of installable device drivers: BLOCK (or
  75.    disk-type) and CHARACTER (or nondisk-type) devices. A block device driver
  76.    must be able to support one or more 'logical' (viz., physical or virtual)
  77.    disks, and thus be able to transfer data in groups of characters. Whereas
  78.    character device drivers typically transfer data one character at a time,
  79.    the primary feature of this class of driver is that the peripheral device
  80.    is not a 'logical' disk, as character devices can also support group-mode
  81.    data transference. Typical examples of such types are 2 programs provided
  82.    with MS-DOS: ANSI.SYS is a character device driver for the replacement of
  83.    the standard 'console' (keyboard and video display) driver that DOS loads
  84.    when it is first started; RAMDRIVE.SYS is a block device driver to create
  85.    a RAM-disk in memory.
  86.  
  87.    Since their introduction in MS-DOS version 2, installable device drivers
  88.    are usually installed, i.e., loaded, during the DOS initialization after
  89.    after the computer boots up.  The file CONFIG.SYS specifies the names of
  90.    these devices with the 'DEVICE=' or 'DEVICEHIGH=' command.  In addition,
  91.    DOS provides no means of removing an installed driver. (Once a driver is
  92.    loaded, the system needs to be rebooted with a different CONFIG.SYS file
  93.    to remove such a driver.
  94.  
  95.    LOAD/UnLOAD allow dealing with device drivers as if they were terminate-
  96.    and-stay resident programs which can be loaded at any time from the DOS-
  97.    prompt command line and can be removed, also from the DOS prompt, at any
  98.    time.
  99.  
  100.  
  101.  
  102.    4. PROGRAM DESCRIPTION
  103.  
  104.    For character (but not block) device drivers, LOAD provides the option of
  105.    installing such device drivers in upper conventional memory, i.e. between
  106.    640 KB, the so-called 'hardware DOS barrier,' and 1024 KB, the 1-MB upper
  107.    limit of DOS-addressable memory.  This range is known as the upper memory
  108.    area (UMA), and its allocatable blocks are known as UMBs.  Loading into a
  109.    UMB preserves the amount of conventional memory used by DOS, except for a
  110.    small memory wedge described below.
  111.  
  112.    To be able to unload the driver, LOAD also installs a small memory wedge
  113.    in conventional memory, which is used both as a memory marker and a data
  114.    storage buffer, of about 1 KB.  This wedge is referred to as the 'device
  115.    driver gateway' throughout this documentation.
  116.  
  117.    LOAD has a number of 'sanity-checks' and error-trapping routines to allow
  118.    a more or less graceful exit when a driver crashes, but in some cases you
  119.    may need to reboot the system. Read the error messages listed in the file
  120.    LOAD.MSG to get an idea of the checks performed by LOAD.
  121.  
  122.  
  123.    LOADING DRIVERS
  124.  
  125.    Drivers distributed with DOS as well as many other commercial drivers can
  126.    be LOADed successfully. Due to the complexity of the operations, however,
  127.    you will have to find by trial and error which installable device drivers
  128.    can be LOADed in your system from the DOS command line.
  129.  
  130.    Erratic behavior has been detected in (some) block device drivers if they
  131.    are loaded in the upper memory area via switch /H of LOAD (see below). To
  132.    avoid this problem, only character device drivers can currently be loaded
  133.    via LOAD in the upper memory.  This safety limitation will be bypassed by
  134.    block device drivers masquerading as character device drivers, such as CD
  135.    ROM drivers. (CD-ROM manufacturers supply a device driver that makes them
  136.    look like character driver, and require a resident program such as MSCDEX
  137.    [Microsoft CD Extensions] to make the CD-ROM look like a DOS disk.)
  138.  
  139.  
  140.    UNLOADING LOADED DRIVERS
  141.  
  142.    Drivers installed from the DOS command line, either in the lower or upper
  143.    conventional memory, can be uninstalled with UnLOAD (or with LOAD /U). If
  144.    more than one driver has been LOADed, the reverse order of loading should
  145.    be used for their UnLOADing; to do otherwise may produce conflicts in the
  146.    operation of DOS or at least of some drivers.
  147.  
  148.    When uninstalling a driver, UnLOAD restores the contents of the interrupt
  149.    table maintained by the BIOS to those copied prior to the installation of
  150.    the device driver.  It then releases all (lower) memory allocated between
  151.    the resident driver (or, for a UMA-loaded driver, the driver gateway) and
  152.    UnLOAD; and then it releases the resident driver itself.  This means that
  153.    resident programs installed in lower conventional memory after the driver
  154.    (or its gateway) will be uninstalled as well, since their resident memory
  155.    blocks will be deallocated.  Also notice that expanded or extended memory
  156.    allocated by such residents is not released and does not become available
  157.    to the EMS or XMS pool.
  158.  
  159.    In contrast, resident programs installed in the upper conventional memory
  160.    after the device driver was loaded will *not* be released but will remain
  161.    orphaned in the UMA since any interrupt service they may have been hooked
  162.    to is now disconnected from them.  UnLOAD does not release the UMBs where
  163.    such programs reside, since given the vagaries of UMB allocation strategy
  164.    it would be too costly (in terms of size of the resident memory wedge) to
  165.    determine which UMB residents were installed before and after the driver.
  166.  
  167.  
  168.    UNDOCUMENTED DOS SERVICES
  169.  
  170.    LOAD uses a few undocumented services which are supported in version 2.00
  171.    through 6.00 of MS-DOS and other MS-compatible versions.  The careful use
  172.    use of undocumented functions is not a negative feature of LOAD. In fact,
  173.    many undocumented services are crucially necessary in a sizable number of
  174.    commercial programs, including MS-DOS itself.
  175.  
  176.    The manner in which undocumented DOS data are obtained by LOAD depends on
  177.    the version of DOS in use and the support it provides; whenever possible,
  178.    LOAD performs 'sanity-checks' and provides error-trapping procedures when
  179.    using undocumented DOS features.  For instance, the so-called DOS List of
  180.    Lists is obtained through a memory search in some buggy versions of DOS 4
  181.    but via an undocumented DOS service in other versions (except when such a
  182.    a service is found to be not supported, in which case the [slower] search
  183.    method is used).
  184.  
  185.  
  186.    REQUIREMENTS
  187.  
  188.    LOAD/UnLOAD require MS-DOS or PC-DOS version 2 to 6 or a fully compatible
  189.    operating system; they are incompatible with DR-DOS and OS/2-DOS. For UMA
  190.    loading/unloading, LOAD/UnLOAD require the presence of an extended memory
  191.    manager (XMM) supporting version 2.0 of the extended memory specification
  192.    (XMS).  Such XMM must be already loaded and capable of supporting XMS UMB
  193.    functions.  XMMs require DOS version 3 or later.
  194.  
  195.  
  196.    CPU VERSIONS
  197.  
  198.    The program is written in assembly language; each version consists of four
  199.    processor-type releases (086, 268, 386 and 486) in which the code has been
  200.    optimized for the CPU types of the 80x86 processor family.  This is needed
  201.    since the x86 processors differ markedly in instruction execution time and
  202.    the incorporation of a memory cache in some CPU types affects such time by
  203.    influencing the speed of instruction fetching and of memory access.  A 486
  204.    release should be used with a 586 CPU (Pentium) to minimize degradation of
  205.    performance vis-á-vis code alignment.
  206.  
  207.    In addition to standard (086) assembly language instructions, the 286, 386
  208.    and 486 releases of the program also use 286-, 386- or 486-specific opcode
  209.    instructions in "real" mode (which is the native mode for 086 processors).
  210.    The type and degree of code optimization vary with the CPU type, and yield
  211.    relatively small differences in the resident size, which is less than 1000
  212.    bytes.
  213.  
  214.  
  215.    SAFETY MEASURES
  216.  
  217.    Each time it is executed, the program verifies its code integrity through
  218.    a number of cyclic redundancy checks (CRCs). Program execution is aborted
  219.    if any check were to fail as such a failure indicates code corruption and
  220.    the program should not be used for your own protection.
  221.  
  222.    The executable program is distributed as a fully encrypted and compressed
  223.    EXE-type file in order to reduce disk storage and the possibility of code
  224.    tampering.  The file size expands on execution by a factor of 2 or less.
  225.  
  226.    NOTE    --------------------------------------------------------------------
  227.     Because both encryption and compression change the code sequences to
  228.     different values, it cannot be excluded that these processess might,
  229.     by chance, yield an encrypted data sequence which triggers a warning
  230.     from antiviral utilities that merely check disk-stored files against
  231.     a list of code 'signatures' or instructions. Though all distribution
  232.     diskettes are scanned with one such utility to avoid the possibility
  233.         of spurious warnings, the changing nature of these 'signature' lists
  234.         makes this exclusion difficult.
  235.  
  236.     If using these utilities, check the registered distribution diskette
  237.     before installing the programs in your hard disk, and please contact
  238.     the vendor (see below) if a spurious warning were triggered.
  239.     --------------------------------------------------------------------
  240.  
  241.  
  242.  
  243.    5.  USAGE
  244.  
  245.    In these descriptions, {} enclose context variables, e.g., the number {n},
  246.    while <> enclose alphanumeric characters or keys, e.g., the letter <n>.
  247.  
  248.    Program usage is very simple:
  249.  
  250.             LOAD [/H[n]] {DriverFile}
  251.          and
  252.             UNLOAD {Gateway} or LOAD /U {Gateway}
  253.  
  254.    in which {DriverFile} is the complete drive\path\file specification of the
  255.    driver file to be installed, whereas {Gateway} is the name of the resident
  256.    device gateway, name which is always provided to the user by LOAD when the
  257.    driver is loaded.
  258.  
  259.    The resident gateway name can also be determined at any time with a memory
  260.    map utility (such as MAPMEM.COM of TurboPower Software). The name consists
  261.    of 8 characters; for a block device, this string has the format 'DRIVE_d:'
  262.    (in which 'd' is the letter designator of the block device drive), whereas
  263.    for a character device, this string is the actual device name in which all
  264.    blank padding spaces (if any) have been changed to the underline character
  265.    (ASCII code 95).  For example, the driver ANSI.SYS (which has the reserved
  266.    name 'CON     ') yields the gateway name 'CON_____' upon installation.
  267.  
  268.  
  269.    SWITCHES
  270.  
  271.    The switches are not case sensitive.  They must be preceded by a slash [/]
  272.    and they must precede the specification of the driver file to be loaded or
  273.    the driver gateway to be annulled:
  274.  
  275.    --------------------------------------------------------------------------
  276.     Switches marked with asterisks are available only in the registered copy
  277.    --------------------------------------------------------------------------
  278.  
  279. *  SWITCH H[n]
  280.  
  281.      Instructs LOAD to install the (character) driver in upper memory between
  282.      640 KB and 1024 KB, i.e. below the 1 MB boundary of conventional RAM but
  283.      above the 640-KB hardware barrier.  The switch requires that an extended
  284.      memory manager (XMM) supporting the services of the XMS 2.00 or later be
  285.      installed, and that a free upper memory block (UMB) of the size required
  286.      by the driver be available. (See below 'Loading in Upper Memory').
  287.  
  288.      A lower high-memory limit for the UMB can optionally be specified by {n}
  289.      (a hexadecimal number between A000 [640 KB] and FFFF [1024 KB]) so as to
  290.      avoid specific areas of memory having a slow access time; notice that if
  291.      {n} contains less than 4 hexadecimal digits or an invalid digit (neither
  292.      0-9 nor A-F) the default minimum limit of n=A000 is used.
  293.  
  294.      Note -------------------------------------------------------------------
  295.           The address and size of available UMBs can be obtained via MEM.EXE,
  296.           when DOS controls UMB allocation, or via the memory manager itself,
  297.           when this allocation is controlled by 386-specific memory managers.
  298.  
  299.           In either case, such data can also be obtained with UMAX.EXE, a UMB
  300.           mapping utility that is distributed by the author. If memory access
  301.           time is a critical element in the selection of the UMBs, a detailed
  302.           timing access map is provided by TIMEM.EXE, a utility which is also
  303.           distributed by the author.
  304.           -------------------------------------------------------------------
  305.  
  306.      The size required by the driver is the length of code to remain resident
  307.      in memory after an initialization check in conventional memory.  Because
  308.      of such check, any driver installation banner will be displayed twice if
  309.      switch H were specified.
  310.  
  311.      UMA-loading creates a small memory resident in lower conventional memory
  312.      of about 1 KB. The resident contains a gateway to the actual driver, and
  313.      driver and UMB data needed for unloading. Block device drivers cannot be
  314.      installed in upper memory with the current version of LOAD.
  315.  
  316.      Example:            LOAD /HCC00 ANSI.SYS
  317.  
  318.      This requests that the driver ANSI.SYS, located in the default drive and
  319.      directory (no drive or path specified), be loaded in upper memory higher
  320.      than or at the (hexadecimal) address limit CC00h.
  321.  
  322.      Default: Invalid /Hn = /HA000.
  323.  
  324.  
  325. *  SWITCH U
  326.  
  327.      Uninstalls a previously loaded device driver, which is identified by the
  328.      associated {Gateway} resident name that must be given after this switch.
  329.      The same operation is provided by UnLOAD, and the following descriptions
  330.      apply to both LOAD /U and UnLOAD.
  331.  
  332.      The nullification procedure unlinks the driver from the DOS driver chain
  333.      and, for a block device, the corresponding drive from a DOS drive table.
  334.      Before attempting to release the memory being used by the device driver,
  335.      UnLOAD changes both the name and attribute of the device to those of the
  336.      NUL device, the input/output bit bucket for DOS, as a protection in case
  337.      the unlinking of the driver (or the release of its memory) were to fail.
  338.      Since the true NUL device is always the last device in the driver chain,
  339.      any other NUL device is ignored. In addition, the gateway of an annulled
  340.      device is renamed 'unLOADed' to facilitate its detection in memory maps.
  341.  
  342.      UnLOADing a device driver also uninstalls memory-resident utilities that
  343.      may have been installed after the driver was LOADed, and the contents of
  344.      a table of interrupt addresses maintained by the BIOS at absolute memory
  345.      segment 0 are changed to those values present immediately before loading
  346.      the driver.  These effects are the same as those produced by TSR-removal
  347.      utilities.
  348.  
  349.      When the same resident name is present in lower conventional memory more
  350.      than once, i.e. when the same driver has been LOADed more than once, the
  351.      first occurrence of the name is used and its associated driver annulled.
  352.  
  353.  
  354.    DOS ERRORLEVELS
  355.  
  356.    Upon completion, the program passes an errorlevel value which can be used
  357.    to check (via ERRORLEVEL commands in a batch file) the outcome of program
  358.    execution.  The following errorlevels may be passed:
  359.  
  360.         Value   Nature of Error
  361.         -----   ------------------------------------
  362.                  255    32-bit CRC failed
  363.                  255    CPU does not support code
  364.                  224    DOS does not support fxn 21/52h
  365.                  192    DOS does not support fxn 21/32h
  366.                  160    Failed to found NUL driver
  367.                  128    Invalid DOS version
  368.                  112    Critical error
  369.                   96    Removal error
  370.                   80    XMS error or XMM missing
  371.                   64    All drives assigned (maximum)
  372.                   32    All drives assigned (inc no.)
  373.                   16    Driver initialization error
  374.                    8    0-unit on block device driver
  375.                    4    0-byte driver break length
  376.                    2    Overlay driver load failed
  377.                    1    Driver name not given
  378.                    0    Successful execution
  379.  
  380.  
  381.  
  382.    6. LOADING IN UPPER MEMORY
  383.  
  384.    This section describes in more detail aspects of the installation of the
  385.    driver in the upper memory region.
  386.  
  387.    The allocation of UMA blocks (UMBs) is arbitrated by an XMS manager (XMM)
  388.    version 2.0 or higher; the XMM must be installed prior to the UMB-loading
  389.    of the resident.  Allocation also requires the remapping of UMA addresses
  390.    by a UMB provider, when such a task is not implemented by the XMM itself.
  391.  
  392.    The XMM HIMEM.SYS and the UMB-provider EMM386.EXE are distributed with MS
  393.    DOS 5+.  The allocation of UMBs is controlled by DOS when these 2 drivers
  394.    are installed, and the command <dos=umb> is added to the CONFIG.SYS file.
  395.    With DR-DOS 6+, UMB remapping and XMS support are provided by EMM386.SYS.
  396.    Other 386-specific memory managers, of course, also provide UMB remapping
  397.    and XMS support.  All XMMs require MS-DOS version 3 or later.
  398.  
  399.    Switch Hn, in which A000 ≤ {n} ≤ FFFF (hexadecimal), allows the selection
  400.    of a minimum upper-memory limit for the UMB to avoid UMA regions having a
  401.    very slow access time (or to preserve regions with a fast access time for
  402.    other utilities that require faster times, such as a disk cache or screen
  403.    accelerator), or to avoid fragmentation of the UMA when UMB allocation is
  404.    not controlled by MS-DOS 5+, but by the XMM itself. The fragmentation may
  405.    occur when the XMM allocates blocks on a first-fit basis, i.e., the first
  406.    available UMB having the lowest UMA address is allocated, irrespective of
  407.    whether or not a (smaller) block matching the requested size is available
  408.    at a higher UMA address.  Unless the size of the available UMBs increases
  409.    with increasing memory address, first-fit allocation of a small UMB leads
  410.    to the breaking of large UMA blocks into smaller ones, thus hampering the
  411.    UMB installation of larger residents.
  412.  
  413.    If MS-DOS 5+ controls UMB allocation, the program enforces the allocation
  414.    of the resident block on a best-fit basis when {n} is not specified, that
  415.    is, all available blocks are searched (by DOS), and the one matching most
  416.    closely the size requested is allocated.
  417.  
  418.    When DOS controls UMB allocation and {n} is specified, UMBs are allocated
  419.    on a first-fit basis.  While this may contribute to UMA fragmentation, it
  420.    allows for the checking of a minimum memory limit in those cases in which
  421.    the selection or avoidance of a specific UMA region is more important.
  422.  
  423.  
  424.  
  425.    7.  TECHNICAL INFORMATION
  426.  
  427.    INTERRUPTS
  428.  
  429.    Whenever certain conditions occur, either within a program or the system,
  430.    it becomes necessary for the processor to interrupt its current operation
  431.    and execute one of a group of special routines.  The action that triggers
  432.    the execution of such a routine is referred to as an interrupt; there are
  433.    internal interrupts, in response to a state of the CPU or an instruction,
  434.    and external interrupts, caused by signals sent to the CPU from elsewhere
  435.    in the system.
  436.  
  437.    When loading a driver, LOAD intercepts the following interrupts to verify
  438.    the status of the loading process:
  439.  
  440.         INT 00h - Divide Exception
  441.         INT 08h - Hardware System Timer
  442.         INT 24h - DOS Critical Error
  443.         INT 2Fh - XMS Interface
  444.         INT 67h - EMS Interface
  445.  
  446.    Because of undocumented behaviors of some device drivers (e.g., Microsoft
  447.    RAMDRIVE.SYS), this interception is done in a less traditional, but fully
  448.    transparent manner to the loaded drivers, especially with the application
  449.    program interface for XMS (INT 2Fh).  LOAD releases these interrupts once
  450.    the driver is successfully loaded.
  451.  
  452.    A brief description of the interrupts is given below:
  453.  
  454.    Interrupt 00h is triggered by conditions causing a divide overflow, as in
  455.    the case of a zero divisor, or a dividend too large for the divisor. LOAD
  456.    monitors this interrupt, assuming that its occurrence indicates a loading
  457.    incompatibility (at least for debugged drivers).
  458.  
  459.    Interrupt 08h is triggered 18.2 times per second by channel 0 of the 8253
  460.    /8254 timer chip, and is used by the system time-of-day count.  LOAD uses
  461.    this interrupt to provide a time-out safety exit in case the driver hangs
  462.    during loading.
  463.  
  464.    Interrupt 24h is triggered by a critical error during read and write file
  465.    or device operations. LOAD monitors this interrupt to determine if driver
  466.    path specification provided by the user is a correct one.
  467.  
  468.    Interrupt 2Fh is used to provide a motley of services for MS-DOS, WINDOWS
  469.    and third-party applications, including the address of the XMM interface.
  470.    LOAD monitors this interrupt to determine if the driver allocates any XMS
  471.    blocks during initialization.
  472.  
  473.    Interrupt 67h provides the EMS interface. LOAD monitors this interrupt to
  474.    determine if the driver allocates any EMS blocks during initialization.
  475.  
  476.  
  477.  
  478.    8.  OPERATION REQUIREMENTS AND CONFLICTS
  479.  
  480.    LOADed/UnLOADed require MS-DOS or IBM PC-DOS version 2-6, and other fully
  481.    compatible operating systems; LOAD/UnLOAD are not compatible with any DOS
  482.    version of OS/2 (compatibility box) or with DR-DOS.
  483.  
  484.  
  485.    LOADING LIMITATIONS
  486.  
  487.    Some device drivers cannot be loaded from the DOS command line with LOAD.
  488.    In some cases, this is because the driver needs to be installed within 64
  489.    KB from the BIOS data area (e.g., some drivers that increase the keyboard
  490.    buffer); in other cases, this is because the driver is in conflict with a
  491.    previously loaded resident; and in some other cases, this is because of a
  492.    conflict between the behavior the driver and that expected by LOAD.  Most
  493.    cases involve block device drivers.
  494.  
  495.  
  496.    UNLOADING LIMITATIONS
  497.  
  498.    During the initialization of a driver being installed, LOAD checks if the
  499.    device driver requests expanded (EMS 3.0+) or extended memory (XMS 2.0+);
  500.    the latter includes the allocation of extended memory blocks (EMB), upper
  501.    memory blocks (UMB), and the High Memory Area (HMA).  UnLOAD attempts the
  502.    release of allocated EMS or XMS memory, or both.  Neither LOAD nor UnLOAD
  503.    can determine whether the driver has released allocated EMS or XMS memory
  504.    prior to the unloading; were the release to occur, the system might crash
  505.    if the same EMS or XMS handle was assigned to a different process *after*
  506.    its release by the driver.
  507.  
  508.    EMS- or XMS-based devices having resizable capabilities, such as some RAM
  509.    disks, create the distinct possibility of the above problem when resizing
  510.    involves first deallocation and then reallocation of memory that yields a
  511.    'handle' value different to the original one.
  512.  
  513.  
  514.  
  515.    9.  COPYRIGHT & LICENSE INFORMATION
  516.  
  517.    This documentation, programs, and other files distributed in this software
  518.    package (the "Software")  are the copyrighted property of FM de Monasterio
  519.    (the "Author"), who provides the Software and licenses its use. All rights
  520.    are reserved.
  521.  
  522.    The Software is not sold.  A license fee is required to use this Software.
  523.    This license does not transfer to you either the ownership of or the title
  524.    to the Software, which remain the property of the Author.  A form required
  525.    to license the Software is provided in the enclosed file LOAD.REG.
  526.  
  527.  
  528.    SINGLE USER LICENSE.  Grants you use of this Software in a single computer
  529.    at a time; the Software may be transferred to another computer, as long as
  530.    it is used only in 1 computer at any time; under the license, the Software
  531.    may NOT be installed on a network server.
  532.  
  533.    SITE/15-PCs LICENSE.  Grants you use of this Software in a sigle site or a
  534.    set of sites, as long as the Software is not used in more than 15 machines
  535.    at a time, and that such machines are located exclusively within the site.
  536.    Licenses for more machines are available at discounted prices.
  537.  
  538.    SOFTWARE BUNDLING LICENSE.  Please write to the Author.
  539.  
  540.    REFUNDS POLICY.  If a problem notified within ninety (90) days of shipping
  541.    of the registered copy cannot be solved, the registration fee (but not the
  542.    shipping costs) will be refunded upon receiving a written request with the
  543.    original diskette(s) enclosed.
  544.  
  545.    UPGRADE POLICY.  Program upgrades are limited to licensed users.  Upgrades
  546.    within the same major version (e.g. release 4.00 through 4.99) are free of
  547.    charge when a self-addressed, stamped, 5.25" diskette mailer with a 360-KB
  548.    diskette is included with the request. Other upgrades are charged half the
  549.    (single-user/site) registration fee.  See the enclosed file LOAD.UPG.
  550.  
  551.  
  552.    U.S. GOVERNMENT INFORMATION
  553.  
  554.    The Software is Commercial Computer Software under the Federal Acquisition
  555.    Regulations of the U.S. government and the Agency Supplements to them. The
  556.    Software is provided to the Federal Government and its agencies only under
  557.    the Restricted Rights Provisions of the above noted regulations applicable
  558.    to commercial software developed at private expense, and not in the public
  559.    domain. The use, duplication, or disclosure of the Software by the Federal
  560.    Government or its agencies is subject to the restrictions set forth in the
  561.    subdivision (c.1.ii) of the Rights in Technical Data and Computer Software
  562.    clause at DFARS 252.227-7013 (October 1988) and FAR 52.227-19 (June 1987).
  563.  
  564.  
  565.    DISTRIBUTION
  566.  
  567.    You may distribute the Software, but you are specifically prohibited from:
  568.  
  569.     - Charging fees or asking donations in exchange of or payment
  570.       for copies of this Software.
  571.  
  572.     - Distributing this Software with commercial products without
  573.       the written, express permission in advance from the author.
  574.  
  575.     - Distributing this Software via a for-profit organization or
  576.       group, either alone or with other software.
  577.  
  578.     - Changing any of the contents of this Software including the
  579.       copyright notice and license information.
  580.  
  581.    You may not disassemble or otherwise reverse engineer the Software.  Other
  582.    uses of the Software are prohibited without a written authorization signed
  583.    by the Author.
  584.  
  585.    Latest program releases may be found at the Information Exchange BBS (703)
  586.    836-0748, as a compressed archive file.
  587.  
  588.  
  589.    WARRANTY DISCLAIMER FOR UNREGISTERED COPIES
  590.  
  591.    The information contained in the documentation for the Software is subject
  592.    to change without notice.
  593.  
  594.    The Author cannot and does not warrant that any functions contained in the
  595.    Software will meet your requirements, or that its operations will be error
  596.    free.  The entire risk as to the Software performance or quality, or both,
  597.    is solely with the user and not the Author.  You assume responsibility for
  598.    the selection of the Software to achieve your intended results and for the
  599.    installation, use, and results obtained from the Software.
  600.  
  601.    The Author makes no warranty, either implied or expressed, including with-
  602.    out limitation any warranty with respect to this Software documented here,
  603.    its quality, performance, or fitness for a particular purpose. In no event
  604.    shall the Author be liable to you for damages, whether direct or indirect,
  605.    incidental, special, or consequential arising out the use of or any defect
  606.    in the Software, even if the Author has been advised of the possibility of
  607.    such damages, or for any claim by any other party.
  608.  
  609.    All other warranties of any kind, either express or implied, including but
  610.    not limited to the implied warranties of merchantability and fitness for a
  611.    particular purpose, are expressly excluded.
  612.  
  613.    By using the Software, you acknowledge (1) to have read and understood all
  614.    parts of this document and (2) to have agreed with and accepted all of its
  615.    terms and provisions without any reservation.
  616.  
  617.    For information on the terms of the Limited Warranty for licensed Software
  618.    copies or any other information on this program, please write to:
  619.  
  620.                 FM de Monasterio
  621.                 P.O. Box 219
  622.                 Cabin John, MD 20818-0219
  623.                 USA
  624.  
  625.     ┌─────────────────────────────────────────────────────────────┐
  626.     │ Trademarked names are the property of the respective owners │
  627.     └─────────────────────────────────────────────────────────────┘
  628.  [End]
  629.