home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 8 / Power CD-ROM 8.iso / dos / load222 / load.doc < prev    next >
Encoding:
Text File  |  1994-05-31  |  36.4 KB  |  763 lines

  1.  
  2.         ╒══════════════════════════════════════════╕
  3.         │                   LOAD                   │
  4.         │              Version 2.22.0              │
  5.         │                                          │
  6.         │ Copyright (c) 1991-1994 FM de Monasterio │
  7.         │  Licensed Material. All rights reserved  │
  8.         ╘══════════════════════════════════════════╛
  9.  
  10.         CONTENTS:     1. SUMMARY
  11.                  2. REGISTRATION
  12.                  3. GENERAL INFORMATION
  13.                  4. PROGRAM INFORMATION
  14.                  5. PROGRAM USAGE
  15.                  6. HEXADECIMAL SEGMENTED NOTATION
  16.                  7. LOADING IN UPPER MEMORY
  17.                  8. BASIC TECHNICAL INFORMATION
  18.                  9. OPERATION REQUIREMENTS & CONFLICTS
  19.                 10. COPYRIGHT & LICENSE INFORMATION
  20.                 11. DISTRIBUTION
  21.  
  22.    1. SUMMARY
  23.  
  24.    LOAD permits loading MS-DOS device drivers directly from the command line
  25.    without having to edit the CONFIG.SYS file and rebooting the system. LOAD
  26.    also permits unloading from memory a command-line loaded driver, as if it
  27.    were a typical memory-resident utility. Load/unload parameters are stored
  28.    in a memory-resident (1-KB) driver gateway.
  29.  
  30.    For character (but not block) device drivers, LOAD provides the option of
  31.    loading a driver in the upper memory blocks (UMBs), i.e., between 640 KB,
  32.    the PC hardware barrier, and 1024 KB, the extended memory boundary. Upper
  33.    memory loading conserves the conventional memory, except for the resident
  34.    driver gateway; this loading requires the presence of MS-DOS 3.0 or later
  35.    version and of a UMB-providing, extended memory manager.
  36.  
  37.    Hence, LOAD allows for treating device drivers simply as typical resident
  38.    software that can be installed and uninstalled on the fly.
  39.  
  40.  
  41.  
  42.    2. REGISTRATION
  43.  
  44.    This Software is user-supported; the present release, although lacking the
  45.    switches indicated by asterisks below, is a working program.  You may test
  46.    this unlicensed release to evaluate the purchase of a licensed copy of the
  47.    complete Software, as it is explained at the end of this documentation.
  48.  
  49.    If you would rather keep using the unlicensed copy, please make a donation
  50.    to the Children's Hospital of Washington DC, for indigent children in need
  51.    of medical care.  Every year in the USA, infant mortality claims the lives
  52.    of tens of thousands of children before their first year of life, and most
  53.    of them come from families below poverty level...  Please send to the same
  54.    address a check payable to the "PATIENT CARE FUND, CHILDREN'S HOSPITAL" on
  55.    the obverse, and marked "For Deposit Only" on the reverse.  Donations will
  56.    be sent to Children's Hospital.  Please identify the program for which you
  57.    are making the donation; your name will not be included in the users list.
  58.    (Donations should be in US dollars.)
  59.  
  60.      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  61.      The enclosed .REG file contains a form needed to license the Software
  62.      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  63.  
  64.    See the final part of this documentation for information on the Licensing,
  65.    Distribution, and Limited Warranty of this Software.
  66.  
  67.  
  68.  
  69.    3. GENERAL INFORMATION
  70.  
  71.    The computer operating system communicates with the outside world through
  72.    peripheral devices. Device drivers are programs that provide an interface
  73.    between DOS and a physical, e.g., disk hardware, or virtual device, e.g.,
  74.    RAM disk software.
  75.  
  76.    DOS distinguishes two main types of installable device drivers: BLOCK (or
  77.    disk-type) and CHARACTER (or nondisk-type) devices. A block device driver
  78.    must be able to support one or more 'logical' (viz., physical or virtual)
  79.    disks, and thus be able to transfer data in groups of characters. Whereas
  80.    character device drivers typically transfer data one character at a time,
  81.    the primary feature of this class of driver is that the peripheral device
  82.    is not a 'logical' disk, as character devices can also support group-mode
  83.    data transference.
  84.  
  85.    Typical examples of such types are 2 programs provided with DOS: ANSI.SYS
  86.    is a character device driver for the replacement of the console (keyboard
  87.    and display) driver that DOS loads when it is first started; RAMDRIVE.SYS
  88.    is a block device driver that implements a RAM-disk in memory.
  89.  
  90.  
  91.                    Légère esquisse du chagrin que cause une
  92.                    séparation et des progrès irréguliers de
  93.                    l'oubli...
  94.                                   Marcel Proust
  95.    4. PROGRAM DESCRIPTION
  96.  
  97.    Since their introduction in version 2 of DOS, installable device drivers
  98.    are usually loaded during the initialization of MS-DOS after the machine
  99.    boots up. The file CONFIG.SYS specifies the names of the devices drivers
  100.    via the DEVICE or DEVICEHIGH command.
  101.  
  102.    MS-DOS provides no means of removing installed drivers; once a driver is
  103.    loaded, the machine needs to be rebooted after the editing of CONFIG.SYS
  104.    to remove such a driver.
  105.  
  106.    There are a few command-line device loaders available.  Except for LOAD,
  107.    however, none of them permits the direct loading in the upper memory nor
  108.    the unloading of a driver.  LOAD actually allows you to deal with device
  109.    drivers as if they were a terminate-and-stay resident programs which can
  110.    be loaded (in conventional or upper memory) from the DOS prompt whenever
  111.    you need them, and can later be unloaded--also from the DOS prompt--when
  112.    not needed anymore.  Thus, as many things in modern life, device drivers
  113.    have also become disposable.
  114.  
  115.    This program is written in assembly language for maximum efficiency. LOAD
  116.    is a processor-aware utility which modifies its internal code to maximize
  117.    operation under the various types of the 80x86 family of microprocessors.
  118.  
  119.    LOAD has a number of 'sanity-checks' and error-trapping routines to allow
  120.    a more or less graceful exit when a driver crashes, but in some cases you
  121.    may need to reboot the system. Read the error messages listed in the file
  122.    LOAD.MSG to get an idea of the checks performed by LOAD.
  123.  
  124.  
  125.    LOADING DRIVERS
  126.  
  127.    LOAD normally attempts to load the specified driver at the memory address
  128.    at which LOAD itself was loaded by DOS. To do so, the utility first moves
  129.    its own code as high as possible in memory; thus, LOAD requires a minimum
  130.    of free memory of about twice its executable size.
  131.  
  132.    Drivers distributed with DOS as well as many other commercial drivers can
  133.    be LOADed successfully. Due to the complexity of the operations, however,
  134.    you will have to find by trial and error which installable device drivers
  135.    can be LOADed from the DOS command line. (Be aware that due to the nature
  136.    of the environment on which drivers are expected to be started, i.e. when
  137.    DOS itself is not completely initialized, and only a few DOS services are
  138.    available, the initialization of some drivers uses methods which are ill-
  139.    behaved once the system is fully operational.)
  140.  
  141.    For character (but not block) device drivers, LOAD provides the option of
  142.    installing such a device driver in the upper memory blocks, i.e., between
  143.    640 KB, which is the lower limit of the device-mapped memory and ROM BIOS
  144.    (sometimes referred to as the 'IBM PC hardware barrier') and 1024 KB, the
  145.    1MB upper limit of 086-addressable memory (where extended memory starts).
  146.    Such a range is known as the upper memory area (UMA), and its allocatable
  147.    blocks are known as UMBs.  Loading drivers into UMBs conserves the amount
  148.    of conventional memory which is available to DOS, except for the resident
  149.    wedge described below.
  150.  
  151.    Erratic behavior has been detected in (some) block device drivers if they
  152.    are loaded in the upper memory area. To avoid the problem, only character
  153.    device drivers can currently be loaded via LOAD in the upper memory. This
  154.    safety limitation can be defeated by block device drivers masquerading as
  155.    a character device driver, such as CD-ROM drivers.  (CD-ROM manufacturers
  156.    supply a device driver that makes them appear like a character driver and
  157.    require another resident utility such as MSCDEX [Microsoft CD Extensions]
  158.    to make the CD-ROM appear like a DOS disk.)
  159.  
  160.  
  161.    UNLOADING LOADED DRIVERS
  162.  
  163.    Drivers loaded from the DOS command line, either in conventional or upper
  164.    memory, can also be uninstalled by LOAD. If more than one driver has been
  165.    loaded, the reverse loading order should be used for their unloading.  To
  166.    do otherwise may produce conflicts in the operation of DOS or at least of
  167.    some drivers.
  168.  
  169.    To be able to unload the drivers, LOAD also installs a small memory wedge
  170.    in conventional memory, a wedge which is used both as a memory marker and
  171.    a data storage record.  This wedge, which uses about 1 KB, is referred to
  172.    as the device driver 'gateway' throughout this documentation. The name of
  173.    the gateway assigned to a driver is provided at the time of installation;
  174.    this name is required to unload the driver (see below).
  175.  
  176.    The gateway name can also be determined at any time with a memory mapping
  177.    utility (such as MAPMEM.COM of TurboPower Software). The name consists of
  178.    8 characters. For a block device, the string has the format 'DRIVE_d:' in
  179.    which 'd' is the letter designator of the block device drive, whereas for
  180.    a character device, the string is the actual device name having all blank
  181.    padding spaces (if any) changed to the underline character ASCII code 95.
  182.    For example, the driver ANSI.SYS (which has the reserved name 'CON     ')
  183.    yields the gateway name 'CON_____' upon installation.
  184.  
  185.    When unloading drivers, LOAD restores the contents of the interrupt table
  186.    maintained by the BIOS to the contents saved prior to the installation of
  187.    the device driver.  It then releases all (lower) memory allocated between
  188.    the resident driver (or, for a UMB-loaded driver, the driver gateway) and
  189.    LOAD; it then releases the resident driver itself from memory. This means
  190.    those memory-resident programs that were installed in conventional memory
  191.    after the driver gateway will be uninstalled as well since their resident
  192.    memory blocks will be deallocated too.
  193.  
  194.    ┌──────┐     Any expanded or extended memory allocated by such residents
  195.    │ NOTE │     is not released by the unloading process, however, and does
  196.    └──────┘     not become available to the EMS or XMS pool. Therefore, you
  197.          should uninstall all subsequent memory residents before the
  198.    unloading of a preceding command-line-loaded device driver.
  199.  
  200.    In contrast, resident programs installed in the upper conventional memory
  201.    after the device driver was loaded will *not* be released but will remain
  202.    orphaned in the UMA since any interrupt service they may have been hooked
  203.    to is now disconnected from them.  LOAD does not release those UMBs where
  204.    the programs reside since, given the vagaries of UMB allocation strategy,
  205.    it would be too costly (in terms of size of the resident memory wedge) to
  206.    determine which UMB residents were installed before and after the driver.
  207.  
  208.  
  209.    UNDOCUMENTED DOS FEATURES
  210.  
  211.    LOAD uses a few undocumented services that are supported in versions 2.00
  212.    through 6.21 of MS-DOS and other MS-compatible versions.  The careful use
  213.    of undocumented services is not a negative feature; in fact, undocumented
  214.    DOS functions are crucially necessary to a number of commercial programs,
  215.    including DOS itself.
  216.  
  217.    The manner in which undocumented DOS data are obtained by LOAD depends on
  218.    the version of DOS in use and the support it provides; whenever possible,
  219.    LOAD performs 'sanity-checks' and provides error-trapping procedures when
  220.    using undocumented DOS features.  For instance, the so-called DOS List of
  221.    Lists is obtained through a memory search in some buggy versions of DOS 4
  222.    but via an undocumented DOS service in other versions (except when such a
  223.    a service is found to be not supported, in which case the [slower] search
  224.    method is used).
  225.  
  226.  
  227.    REQUIREMENTS
  228.  
  229.    LOAD requires MS-DOS or PC-DOS version 2.00 to 6.21 or a fully compatible
  230.    operating system; LOAD is incompatible with DR-DOS and OS/2-DOS.  For UMA
  231.    loading/unloading, the presence of an extended memory manager (XMM) which
  232.    supports version 2+ of the extended memory specification (XMS) is needed.
  233.    The XMM must be already installed and capable of supporting UMB services.
  234.    XMMs require DOS version 3 or later.
  235.  
  236.    The memory requirements depend on the size of the device driver to loaded
  237.    and whether the installation will be in conventional or upper memory.  In
  238.    any case a minimum of 10 KB is required.
  239.  
  240.  
  241.    SAFETY MEASURES
  242.  
  243.    Each time it is executed, the program verifies its code integrity through
  244.    a number of cyclic redundancy checks (CRCs). Program execution is aborted
  245.    if any check were to fail as such a failure indicates code corruption and
  246.    the program should not be used for your own protection.
  247.  
  248.    To decrease the possibility of code tampering, the program is distributed
  249.    as an encrypted and compressed EXE-type file that expands and decrypts on
  250.    the fly when executed. This expansion is by a factor of 2 or less.
  251.  
  252.    ┌──────┐    Because encryption and compression change the code sequences
  253.    │ NOTE │    to different values, one cannot exclude that such processess
  254.    └──────┘    might, just by chance, yield an encrypted data sequence that
  255.         triggers a false warning from those antiviral utilities that
  256.    only compare stored files against a list of 'signatures' or instructions.
  257.    Although all encrypted program files are scanned with one such utility to
  258.    minimize the possibility of a false warning, the changing nature of these
  259.    signature lists makes this exclusion difficult.
  260.  
  261.    Check the registered distribution diskette before installing    the programs
  262.    in your hard disk and please contact the vendor (see below) if a spurious
  263.    warning were triggered.
  264.  
  265.  
  266.  
  267.    5.  PROGRAM USAGE
  268.  
  269.    In the descriptions below, {} indicate context variables, e.g. the number
  270.    {n} or the character string {path}, while <> indicate specific characters
  271.    or keys, e.g., the letter <n> or the key <F1>.
  272.  
  273.    Program usage is quite simple:
  274.  
  275.     {path}LOAD [/Dn.nn] [/H[n]] {DriverFile} [driver command switches]
  276.    or
  277.       {path}LOAD /U {Gateway}
  278.  
  279.    in which {DriverFile} is the complete drive\path\file specification of the
  280.    device driver to be loaded, while {Gateway} is the 8-character name of the
  281.    gateway of the loaded device to be unloaded, name which is always provided
  282.    to the user by LOAD when the driver is installed.  If given, {path} is the
  283.    complete path specification for the file LOAD.EXE.
  284.  
  285.    Optionally, the {DriverFile} specification can be followed by any required
  286.    driver command switches, which are passed to the driver at the time of its
  287.    initialization.
  288.  
  289.  
  290.    COMMAND SWITCHES
  291.  
  292.    The program command switches are not case sensitive. They must be preceded
  293.    by a slash </>, and they must precede the specification of the driver file
  294.    to be loaded or the driver gateway to be annulled.
  295.  
  296.     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  297.      Asterisks mark switches unavailable in the unregistered copy
  298.     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  299.  
  300.  
  301.    Switch /?
  302.    ---------
  303.    Displays a brief summary of the program operation and usage.
  304.  
  305.  
  306.  
  307.    Switch /Dn.nn
  308.    -------------
  309.    Instructs LOAD to return a false DOS version via function 30h of interrupt
  310.    21h, where n.nn is the major.minor version to be returned.  Switch /D must
  311.    be used with drivers that refuse to install if the DOS version were higher
  312.    than an (obsolete) upper limit, and that are part of the SETVER clientele.
  313.    This version number deception is maintained only during the initialization
  314.    phase of the driver.
  315.  
  316.    You must use this switch in lieu of the SETVER program of MS-DOS 5+, which
  317.    is *not* accessed by LOAD.
  318.  
  319.    Example:        LOAD /D3.40 IBMCACHE.SYS
  320.    ~~~~~~~~
  321.        Deceives the driver IBMCACHE.SYS into believing that it is installing
  322.    under version 3.40 of DOS.
  323.  
  324.  
  325.  
  326. *  Switch /H[n]
  327.    ------------
  328.    Instructs LOAD to install the driver in the upper memory area, between 640
  329.    KB (hexadecimal segment A000) and 1024 KB (hexadecimal segment FFFF), when
  330.    a free block (UMB) of suitable size is available. The loading requires the
  331.    presence of an extended memory manager (XMM) implementing the UMB services
  332.    of the XMS 2 or later (see below 'Loading in Upper Memory' section).
  333.  
  334.    A minimum high-memory limit for the UMB can optionally be specified by the
  335.    number {n} which must consist of 4 hexadecimal digits in the range between
  336.    A000 and FFFF (see below 'Hexadecimal Segmented Notation'). This limit may
  337.    be selected, for example, to avoid specific a area of memory having a slow
  338.    access time.  Note that if {n} consists of less than 4 hexadecimal digits,
  339.    contains an invalid character (neither 0-9 nor A-F), or is less than A000,
  340.    the default value of n=A000 is used.
  341.  
  342.    The UMB size is the memory requested by the driver after an initialization
  343.    check in conventional memory. Due to such a check, any driver installation
  344.    banner will be displayed twice if switch /H[n] were specified.
  345.  
  346.    Example:            LOAD /HCC00 ANSI.SYS
  347.    ~~~~~~~~
  348.        Loads the driver ANSI.SYS, located in the current drive and directory
  349.   (no path was specified), in a UMB at or above the hexadecimal segment CC00h
  350.   (816 KB).
  351.  
  352.  
  353.  
  354. *  Switch /U[!]
  355.    ------------
  356.    Unloads a previously LOADed driver, identified by the associated {Gateway}
  357.    resident name that must be specified after this switch. If the exclamation
  358.    mark <!> is part of the switch, the unloading is attempted immediately; if
  359.    such mark is not present, LOAD asks for user confimation before attempting
  360.    to unload the driver.
  361.  
  362.    This procedure unlinks the driver from the DOS driver chain and, for block
  363.    device drivers, the corresponding drive from a DOS drive table.  Before it
  364.    attempts to release the memory allocated to a device driver, LOAD modifies
  365.    both the name and attributes of the device to those of the NUL device (the
  366.    input/output bit bucket for DOS), as a protection in case the unlinking of
  367.    the driver--or the release of its memory--were to fail: Since the true NUL
  368.    device is always the last device in the driver chain, any other NUL device
  369.    will be ignored. In addition, the gateway of an annulled device is renamed
  370.    'unLOADed' to facilitate its detection in memory maps.
  371.  
  372.    If driver gateways with the same name were present in conventional memory,
  373.    i.e., when the same driver has been LOADed more than once, the first found
  374.    occurrence of the name is used and its associated driver annulled.
  375.  
  376.    The unloading of a device driver also uninstalls memory-resident utilities
  377.    that may have been installed after the driver was loaded, and the contents
  378.    of the table of interrupt addresses maintained at the first memory segment
  379.    are changed to those values present immediately before loading the driver.
  380.  
  381.    Example:            LOAD /U! CON_____
  382.    ~~~~~~~~
  383.        Unloads the previously installed driver ANSI.SYS (see example above),
  384.    whose assigned {Gateway} name is always 'CON_____', without requesting the
  385.    confirmation of the unloaidng.
  386.    
  387.  
  388.  
  389.    6.  HEXADECIMAL SEGMENTED NOTATION
  390.  
  391.    The UMA extends from 640 KB to 1024 KB of memory, which corresponds to the
  392.    hexadecimal segments A000 to FFFF of real-mode address. Almost invariably,
  393.    UMA addresses (e.g., hardware-mapped memory, ROM BIOS, resident locations)
  394.    expected by most applications are expressed as hexadecimal segments, as in
  395.    the case of the INCLUDE or EXCLUDE memory switches of V86 memory managers.
  396.  
  397.    LOAD also expects such a notation for switch Hn when a minimum UMB segment
  398.    is specified:
  399.  
  400.               700         800          900        1000   UMA memory in KB
  401.                │           │            │           │
  402.        ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒       ▒ ca. 8 KB
  403.        │       │       │       │       │       │
  404.       A000    B000    C000    D000    E000    F000   hexadecimal segments
  405.                                           
  406.       640     704     768     832     896     960    kilobyte equivalence
  407.  
  408.  
  409.    The relation between UMA hexadecimal segments and kilobytes is illustrated
  410.    graphically in the above scale and the equivalences can be calculated from
  411.    the following tables:
  412.  
  413.     1st Digit    2nd Digit    3rd Digit    4th Digit
  414.     ~~~~~~~~~    ~~~~~~~~~    ~~~~~~~~~    ~~~~~~~~~
  415.     Hex   Dec    Hex   Dec    Hex   Dec    Hex   Dec
  416.     ...0  0     ..0.  0        .0..  0        0...  0
  417.     ...1  1     ..1.  16    .1..  256    1...  4096
  418.     ...2  2     ..2.  32    .2..  512    2...  8192
  419.     ...3  3     ..3.  48    .3..  768    3...  12288
  420.     ...4  4     ..4.  64    .4..  1024    4...  16384
  421.     ...5  5     ..5.  80    .5..  1280    5...  20480
  422.     ...6  6     ..6.  96    .6..  1536    6...  24576
  423.     ...7  7     ..7.  112    .7..  1792    7...  28672
  424.     ...8  8     ..8.  128    .8..  2048    8...  32768
  425.     ...9  9     ..9.  144    .9..  2304    9...  36864
  426.     ...A  10     ..A.  160    .A..  2560    A...  40960
  427.     ...B  11     ..B.  176    .B..  2816    B...  45056
  428.     ...C  12     ..C.  192    .C..  3072    C...  49152
  429.     ...D  13     ..D.  208    .D..  3328    D...  53248
  430.     ...E  14     ..E.  224    .E..  3584    E...  57344
  431.     ...F  15     ..F.  240    .F..  3840    F...  61440
  432.  
  433.  
  434.    Thus the hexadecimal segment A800h converts to 42 KB, since
  435.  
  436.                ...0  =       0
  437.                ..0.  =       0
  438.                .8..  =   2,048
  439.                A...  =  40,960
  440.  
  441.    and 43,008 bytes divided by 1024 are 42 KB. (There are several calculating
  442.    utilities available which convert hexadecimal to decimal numbers, and vice
  443.    versa.)
  444.  
  445.  
  446.  
  447.    7. LOADING IN UPPER MEMORY
  448.  
  449.    This section describes in more detail aspects of the installation of the
  450.    driver in the upper memory region.
  451.  
  452.    The allocation of UMA blocks (UMBs) is arbitrated by an XMS manager (XMM)
  453.    version 2.0 or higher; the XMM must be installed prior to the UMB-loading
  454.    of the resident.  Allocation also requires the remapping of UMA addresses
  455.    by a UMB provider, when such a task is not implemented by the XMM itself.
  456.  
  457.    The XMM HIMEM.SYS and the UMB-provider EMM386.EXE are distributed with MS
  458.    DOS 5+.  The allocation of UMBs is controlled by DOS when these 2 drivers
  459.    are installed, and the command <dos=umb> is added to the CONFIG.SYS file.
  460.    With DR-DOS 6+, UMB remapping and XMS support are provided by EMM386.SYS.
  461.    Other 386-specific memory managers, of course, also provide UMB remapping
  462.    and XMS support.  All XMMs require MS-DOS version 3 or later.
  463.  
  464.    Switch Hn, in which A000 ≤ {n} ≤ FFFF (hexadecimal), allows the selection
  465.    of a minimum upper-memory limit for the UMB to avoid UMA regions having a
  466.    very slow access time (or to preserve regions with a fast access time for
  467.    other utilities that require faster times, such as a disk cache or screen
  468.    accelerator), or to avoid fragmentation of the UMA when UMB allocation is
  469.    not controlled by MS-DOS 5+, but by the XMM itself. The fragmentation may
  470.    occur when the XMM allocates blocks on a first-fit basis, i.e., the first
  471.    available UMB having the lowest UMA address is allocated, irrespective of
  472.    whether or not a (smaller) block matching the requested size is available
  473.    at a higher UMA address.  Unless the size of the available UMBs increases
  474.    with increasing memory address, first-fit allocation of a small UMB leads
  475.    to the breaking of large UMA blocks into smaller ones, thus hampering the
  476.    UMB installation of larger residents.
  477.  
  478.    If MS-DOS 5+ controls UMB allocation, the program enforces the allocation
  479.    of the resident block on a best-fit basis when {n} is not specified, that
  480.    is, all available blocks are searched (by DOS), and the one matching most
  481.    closely the size requested is allocated.
  482.  
  483.    When DOS controls UMB allocation and {n} is specified, UMBs are allocated
  484.    on a first-fit basis.  While this may contribute to UMA fragmentation, it
  485.    allows for the checking of a minimum memory limit in those cases in which
  486.    the selection or avoidance of a specific UMA region is more important.
  487.  
  488.    ┌──────┐    The address and size of the UMBs can be obtained via MEM.EXE
  489.    │ NOTE │    when DOS controls UMB allocation, or via the XMM itself when
  490.    └──────┘    UMB allocation is controlled by V86-mode memory managers. In
  491.               either case, such data can also be obtained with UMAX.EXE, a
  492.    UMB mapping utility available from the author. If memory access time were
  493.    a critical element in UMB selection, a detailed access-time map is can be
  494.    obtained with TIMEM.EXE, a utility which also available from the author.
  495.  
  496.  
  497.  
  498.    8.  TECHNICAL INFORMATION
  499.  
  500.    INTERRUPTS
  501.  
  502.    Whenever certain conditions occur, either within a program or the system,
  503.    it becomes necessary for the processor to interrupt its current operation
  504.    and execute one of a group of special routines.  The action that triggers
  505.    the execution of such a routine is referred to as an interrupt; there are
  506.    internal interrupts, in response to a state of the CPU or an instruction,
  507.    and external interrupts, caused by signals sent to the CPU from elsewhere
  508.    in the system.
  509.  
  510.    When loading a driver, LOAD intercepts the following interrupts to verify
  511.    the status of the loading process:
  512.  
  513.         INT 00h - Divide Exception
  514.         INT 08h - Hardware System Timer
  515.         INT 24h - DOS Critical Error
  516.         INT 2Fh - XMS Interface
  517.         INT 67h - EMS Interface
  518.  
  519.    Because of undocumented behaviors of some device drivers (e.g., Microsoft
  520.    RAMDRIVE.SYS), this interception is done in a less traditional, but fully
  521.    transparent manner to the loaded drivers, especially with the application
  522.    program interface for XMS (INT 2Fh).  LOAD releases these interrupts once
  523.    the driver is successfully loaded.
  524.  
  525.    A brief description of the interrupts is given below.
  526.  
  527.    Interrupt 00h is triggered by conditions causing a divide overflow, as in
  528.    the case of a zero divisor, or a dividend too large for the divisor. LOAD
  529.    monitors this interrupt, assuming that its occurrence indicates a loading
  530.    incompatibility (at least for debugged drivers).
  531.  
  532.    Interrupt 08h is triggered 18.2 times per second by channel 0 of the 8253
  533.    /8254 timer chip, and is used by the system time-of-day count.  LOAD uses
  534.    this interrupt to provide a time-out safety exit in case the driver hangs
  535.    during loading.
  536.  
  537.    Interrupt 24h is triggered by a critical error during read and write file
  538.    or device operations. LOAD monitors this interrupt to determine if driver
  539.    path specification provided by the user is a correct one.
  540.  
  541.    Interrupt 2Fh is used to provide a motley of services for MS-DOS, WINDOWS
  542.    and third-party applications, including the address of the XMM interface.
  543.    LOAD monitors this interrupt to determine if the driver allocates any XMS
  544.    blocks during initialization.
  545.  
  546.    Interrupt 67h provides the EMS interface. LOAD monitors this interrupt to
  547.    determine if the driver allocates any EMS blocks during initialization.
  548.  
  549.  
  550.    DOS ERRORLEVELS
  551.  
  552.    Upon completion, the program passes an errorlevel value which can be used
  553.    to check (via ERRORLEVEL commands in a batch file) the outcome of program
  554.    execution.  The following errorlevels may be passed:
  555.  
  556.         Value   Nature of Error
  557.         -----   ------------------------------------
  558.                  255    32-bit CRC failed
  559.                  255    Insuficient memory available
  560.                  224    DOS does not support fxn 21/52h
  561.                  192    DOS does not support fxn 21/32h
  562.                  160    Failed to found NUL driver
  563.                  128    Invalid DOS version
  564.                  112    Critical error
  565.                   96    Removal error
  566.                   80    XMS error or XMM missing
  567.                   64    All drives assigned (maximum)
  568.                   32    All drives assigned (inc no.)
  569.                   16    Driver initialization error
  570.                    8    0-unit on block device driver
  571.                    4    0-byte driver break length
  572.                    2    Overlay driver load failed
  573.                    1    Driver name not given
  574.                    0    Successful execution
  575.  
  576.  
  577.  
  578.    9.  OPERATION REQUIREMENTS AND CONFLICTS
  579.  
  580.    LOADING LIMITATIONS
  581.  
  582.    Some device drivers cannot be loaded from the DOS command line with LOAD.
  583.    In some cases, this is because the driver needs to be installed within 64
  584.    KB from the BIOS data area (e.g., some drivers that increase the keyboard
  585.    buffer); in other cases, this is because the driver is in conflict with a
  586.    previously loaded resident; and in some other cases, this is because of a
  587.    conflict between the behavior the driver and that expected by LOAD.
  588.  
  589.    Notice that even when the driver has been successfully loaded, it may not
  590.    satisfy all requirements. For example, the arena header is not changed by
  591.    LOAD, so instancing of the driver by the DOSMGR device will fail.
  592.  
  593.  
  594.    UNLOADING LIMITATIONS
  595.  
  596.    During the initialization of a driver being installed, LOAD checks if the
  597.    device driver requests expanded (EMS 3.0+) or extended memory (XMS 2.0+);
  598.    the latter includes the allocation of extended memory blocks (EMB), upper
  599.    memory blocks (UMB), and the High Memory Area (HMA). When unloading, LOAD
  600.    attempts the release of allocated EMS or XMS memory, or both. LOAD cannot
  601.    determine whether the driver has released any allocated EMS or XMS memory
  602.    prior to the unloading; were the release to occur, the system might crash
  603.    if the same EMS or XMS handle was assigned to a different process *after*
  604.    its release by the driver.
  605.  
  606.    EMS- or XMS-based devices having resizable capabilities, such as some RAM
  607.    disks, create the distinct possibility of the above problem when resizing
  608.    involves first deallocation and then reallocation of memory that yields a
  609.    'handle' value different to the original one.
  610.  
  611.  
  612.  
  613.    10.  COPYRIGHT & LICENSE INFORMATION
  614.  
  615.    The program(s) and documentation distributed in this software package (the
  616.    SOFTWARE) are the copyrighted property of F.M. de Monasterio (the AUTHOR),
  617.    who provides the SOFTWARE and licenses its use.  All rights are reserved.
  618.  
  619.    This is an unlicensed copy of the SOFTWARE, made available for purposes of
  620.    short-term evaluation only, which does not contain all features present in
  621.    licensed copies of the SOFTWARE.
  622.  
  623.    The SOFTWARE is not sold. A license must be purchased to use the SOFTWARE.
  624.    This license does not transfer to you either the ownership of or the title
  625.    to the SOFTWARE, which remain the property of the AUTHOR.  A form required
  626.    to license the SOFTWARE is provided in the enclosed .REG file.
  627.  
  628.    User Licenses
  629.    -------------
  630.    The purchase of a User License is required to use the SOFTWARE either only
  631.    by ONE person or only on ONE computer. This License permits copying of the
  632.    SOFTWARE only for backup purposes. Distributing, repackaging, or reselling
  633.    of the SOFTWARE to third parties is not allowed.  Network server computers
  634.    are excluded from this License, requiring a Site License for the number of
  635.    users being served.
  636.  
  637.    Site Licenses
  638.    -------------
  639.    A Site License is required to use the SOFTWARE for corporate, educational,
  640.    commercial, or governmental purposes on MORE than one computer. It permits
  641.    using the SOFTWARE on up to the number of computers licensed; license fees
  642.    are based on the total number of computers.  Distributing, repackaging, or
  643.    reselling of the SOFTWARE to third parties is not permitted. A single copy
  644.    of the SOFTWARE is provided with each license; the License permits copying
  645.    the SOFTWARE for the number of computers licensed.
  646.  
  647.    Distribution Licenses
  648.    ---------------------
  649.    The purchase of a Distribution License is required to use the SOFTWARE for
  650.    corporate, commercial, educational, or governmental purposes involving its
  651.    distribution with software packages or data, or computer hardware to third
  652.    parties.  The license is non-exclusive and non-transferable.  To receive a
  653.    quotation on a Distribution License, without obligation on your part, send
  654.    a letter to the AUTHOR on your business stationery providing the following
  655.    information:
  656.  
  657.     1. Name of SOFTWARE you are interested in distributing.
  658.  
  659.     2. Number of SOFTWARE copies expected to be distributed per year
  660.        or on a one-time basis.
  661.  
  662.     3. Intended use of the SOFTWARE.
  663.  
  664.     4. Description of the software you intend to distribute with the
  665.            SOFTWARE, proving the name(s) and price range(s).
  666.  
  667.     5. State or country where your organization is incorporated.
  668.  
  669.  
  670.    Refunds Policy
  671.    --------------
  672.    If a problem notified within 90 days of shipping the licensed copy can not
  673.    be solved in 90 days after the notification, the SOFTWARE license fee (but
  674.    not the shipping & handling fee) will be refunded upon receiving a written
  675.    request with the original diskette(s) enclosed.
  676.  
  677.  
  678.    Upgrade Policy
  679.    --------------
  680.    Latest program releases may be found at the Information Exchange BBS (703)
  681.    836-0748, as a compressed archive file.
  682.  
  683.    Program upgrades are limited to licensed users. An upgrade within the same
  684.    major version (e.g. release 4.00 through 4.99) is free of charge if a self
  685.    addressed, stamped floppy mailer containing the original SOFTWARE diskette
  686.    is also enclosed with the request. All other upgrades are charged half the
  687.    current license fee and the full shipping fee. See the enclosed .UPG file.
  688.  
  689.  
  690.    U.S. GOVERNMENT INFORMATION
  691.  
  692.    The SOFTWARE is Commercial Computer Software under the Federal Acquisition
  693.    Regulations of the U.S. government and the Agency Supplements to them. The
  694.    SOFTWARE is provided to the Federal Government and its agencies only under
  695.    the Restricted Rights Provisions of the above noted regulations applicable
  696.    to commercial software developed at private expense, and not in the public
  697.    domain. The use, duplication, or disclosure of the SOFTWARE by the Federal
  698.    Government or its agencies is subject to the restrictions set forth in the
  699.    subdivision (c.1.ii) of the Rights in Technical Data and Computer Software
  700.    clause at DFARS 252.227-7013 (October 1988) and FAR 52.227-19 (June 1987).
  701.  
  702.  
  703.    11.  DISTRIBUTION
  704.  
  705.    You may distribute this unlicensed SOFTWARE copy, but you are specifically
  706.    prohibited from:
  707.  
  708.     1. Changing any of the contents of the SOFTWARE, including the
  709.        copyright notice and license information.
  710.  
  711.     2. Distributing the SOFTWARE with a commercial product without
  712.        the written, express permission from the AUTHOR.
  713.  
  714.     3. Charging fees or asking donations in exchange of or payment
  715.        for the SOFTWARE, except for shareware distributors charging
  716.        usual and customary fees.
  717.  
  718.    You may not disassemble or otherwise reverse engineer the SOFTWARE.  Other
  719.    uses of the SOFTWARE are prohibited without a written authorization signed
  720.    by the AUTHOR.
  721.  
  722.  
  723.    WARRANTY DISCLAIMER FOR UNLICENSED COPIES
  724.  
  725.    The information contained in the documentation for the SOFTWARE is subject
  726.    to change without notice.
  727.  
  728.    The AUTHOR cannot and does not warrant that any functions contained in the
  729.    SOFTWARE will meet your requirements, or that its operations will be error
  730.    free.  The entire risk as to the SOFTWARE performance or quality, or both,
  731.    is solely with the user and not the AUTHOR.  You assume responsibility for
  732.    the selection of the SOFTWARE to achieve your intended results and for the
  733.    installation, use, and results obtained from the SOFTWARE.
  734.  
  735.    The AUTHOR makes no warranty, either implied or expressed, including with-
  736.    out limitation any warranty with respect to this SOFTWARE documented here,
  737.    its quality, performance, or fitness for a particular purpose. In no event
  738.    shall the AUTHOR be liable to you for damages, whether direct or indirect,
  739.    incidental, special, or consequential arising out the use of or any defect
  740.    in the SOFTWARE, even if the AUTHOR has been advised of the possibility of
  741.    such damages, or for any claim by any other party.
  742.  
  743.    All other warranties of any kind, either express or implied, including but
  744.    not limited to the implied warranties of merchantability and fitness for a
  745.    particular purpose, are expressly excluded.
  746.  
  747.    By using the SOFTWARE, you acknowledge (1) to have read and understood all
  748.    parts of this document and (2) to have agreed with and accepted all of its
  749.    terms and provisions without any reservation.
  750.  
  751.    For information on the terms of the Limited Warranty for licensed software
  752.    copies or any other information on this program, please write to:
  753.  
  754.                 FM de Monasterio
  755.                 P.O. Box 219
  756.                 Cabin John, MD 20818-0219
  757.                 USA
  758.  
  759.     ┌─────────────────────────────────────────────────────────────┐
  760.     │ Trademarked names are the property of the respective owners │
  761.     └─────────────────────────────────────────────────────────────┘
  762.  [End]
  763.