home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR4 / VIZ431.ZIP / VIZ.DOC < prev    next >
Text File  |  1993-10-28  |  64KB  |  1,299 lines

  1.         ╒════════════════════════════════════════════╕
  2.         │                    VIz                     │
  3.         │              Revision 4.31.0               │
  4.         │                                            │
  5.         │  Copyright (C) 1989-1993 FM de Monasterio  │
  6.         │   Licensed Material. All rights reserved   │
  7.         ╘════════════════════════════════════════════╛
  8.    CONTENTS:
  9.              1.  SUMMARY
  10.              2.  REGISTRATION
  11.              3.  PROGRAM INFORMATION
  12.              4.  ACCELERATION MODULE
  13.              5.  CURSOR ALTERNATION MODULE
  14.              6.  ANSI-COMPATIBLE FILTER MODULE
  15.              7.  INSTALLATION & USAGE
  16.              8.  INSTALLATION IN UPPER MEMORY
  17.              9.  BASIC TECHNICAL INFORMATION
  18.             10.  COPYRIGHT & LICENSE INFORMATION
  19.  
  20.    1. SUMMARY
  21.  
  22.    VIz is a small resident program that accelerates BIOS (and DOS) video input
  23.    and output in text mode; it can be used with IBM-compatible MDA, EGA or VGA
  24.    adapter cards and Hercules HGC and HGC+ cards.  In its present release, VIz
  25.    produces video interference ("snow") in old CGA cards.
  26.  
  27.    In addition, VIz includes an independent, resident component for displaying
  28.    a block cursor, either continuously or alternating with a line cursor at an
  29.    adjustable rate of alternation.  The latter display is well suited for easy
  30.    localization of the cursor in some laptop screens.
  31.  
  32.    Finally, VIz also contains an independent, resident ANSI-filter driver that
  33.    mediates a subset of the ANSI escape sequences to control the console. This
  34.    filter can be used, instead of ANSI.SYS, to implement ANSI escape sequences
  35.    to control video display, with the advantage that can be turned off and on,
  36.    and removed from memory without rebooting.
  37.  
  38.    All 3 resident modules occupy a total of less than about 1800 bytes of RAM.
  39.    Depending on the system configuration and BIOS version, video accelerations
  40.    by a factor of between 2 and 10 have been obtained.
  41.  
  42.  
  43.    2. REGISTRATION
  44.  
  45.    This software is user-supported; the present release, although lacking the
  46.    options marked by asterisks, is a fully usable program.  You may test this
  47.    release for (in)compatibilities with your system, but after the testing is
  48.    completed you are requested to order a registered copy of the full release
  49.    of the software from the address at the end of this documentation.
  50.  
  51.    If you would rather use this unregistered copy, consider making a donation
  52.    to the Children's Hospital of Washington DC, for indigent children in need
  53.    of medical care.  Every year in the USA, infant mortality claims the lives
  54.    of tens of thousands of children before their first year of life, and most
  55.    of them come from families below poverty level...  Please send to the same
  56.    address a check payable to the "PATIENT CARE FUND, CHILDREN'S HOSPITAL" on
  57.    the obverse, and marked "For Deposit Only" on the reverse.  Donations will
  58.    be sent to Children's Hospital.  Please identify the program for which you
  59.    are making the donation.
  60.  
  61.     ------------------------------------------------------------------
  62.     VIZ.REG contains a form needed to register or upgrade the Software
  63.     ------------------------------------------------------------------
  64.  
  65.    See the final part of this documentation for information on the Licensing,
  66.    Distribution, and Limited Warranty of this software.
  67.  
  68.  
  69.    3. PROGRAM INFORMATION
  70.  
  71.    VIz is a utility that accelerates many of the basic text-video services and
  72.    allows changing the video mode, page and font of the display as well as the
  73.    raw or normal mode of DOS video output.  When used in a VGA/EGA system, VIz
  74.    also permits control of the red, green and blue mixture that determines the
  75.    color of each of the 16 registers of the color palette, and the RGB mixture
  76.    can be modified to suit user preferences.  VIz also permits controlling the
  77.    frequency (pitch) of the bell's tone.
  78.  
  79.  
  80.    HARDWARE COMMANDS
  81.  
  82.    VIz updates cursor position through direct hardware commands. In most video
  83.    systems, such commands can be sent out as one 16-bit (Word) value or as two
  84.    successive 8-bit (Byte) values. The word-out method of addressing, which is
  85.    used by other programs (e.g., Microsoft WINDOWS), yields faster positioning
  86.    of the cursor but may not work in some older video systems.
  87.  
  88.    Registered VIz releases use cursor word-out addressing; to verify that your
  89.    system can handle this method, you can enter the command 'VIZ ?H' to see if
  90.    the cursor appears at the indicated position. If not, the video system only
  91.    allows byte-out addressing, and registered users need to contact the vendor
  92.    for a byte-out program release free of charge.
  93.  
  94.  
  95.    CPU VERSIONS
  96.  
  97.    The program is written in assembly language; each version consists of four
  98.    processor-type releases (086, 268, 386 and 486) in which the code has been
  99.    optimized for the CPU types of the 80x86 processor family.  This is needed
  100.    since the x86 processors differ markedly in instruction execution time and
  101.    the incorporation of a memory cache in some CPU types affects such time by
  102.    influencing the speed of instruction fetching and of memory access.  A 486
  103.    release should be used with a 586 CPU (Pentium) to minimize degradation of
  104.    performance vis-á-vis code alignment.
  105.  
  106.    In addition to standard (086) assembly language instructions, the 286, 386
  107.    and 486 releases of the program also use 286-, 386- or 486-specific opcode
  108.    instructions in "real" mode (which is the native mode for 086 processors).
  109.    The type and degree of code optimization vary with the CPU type, and yield
  110.    relatively small differences in the resident size, which is less than 1000
  111.    bytes.
  112.  
  113.  
  114.    REQUIREMENTS
  115.  
  116.    The program requires MS-DOS version 2 or later (or compatible DOS system)
  117.    and an IBM-compatible SVGA, VGA, EGA, MCGA/CGA, or MDA video adapter or a
  118.    HERCULES video card.  With old CGA adapters, VIz produces a little bit of
  119.    video interference ('snow').
  120.  
  121.  
  122.    SAFETY MEASURES
  123.  
  124.    Each time it is executed, the program verifies its code integrity through
  125.    a number of cyclic redundancy checks (CRCs). Program execution is aborted
  126.    if any check were to fail as such a failure indicates code corruption and
  127.    the program should not be used for your own protection.
  128.  
  129.    The executable program is distributed as a fully encrypted and compressed
  130.    EXE-type file in order to reduce the possibility of code tampering.
  131.  
  132.    NOTE    --------------------------------------------------------------------
  133.     Because both encryption and compression change the code sequences to
  134.     different values, it cannot be excluded that these processess might,
  135.     by chance, yield an encrypted data sequence which triggers a warning
  136.     from antiviral utilities that merely check disk-stored files against
  137.     a list of code 'signatures' or instructions. Though all distribution
  138.     diskettes are scanned with one such utility to avoid the possibility
  139.         of spurious warnings, the changing nature of these 'signature' lists
  140.         makes this exclusion difficult.
  141.  
  142.     If using these utilities, check the registered distribution diskette
  143.     before installing the programs in your hard disk, and please contact
  144.     the vendor (see below) if a spurious warning were triggered.
  145.     --------------------------------------------------------------------
  146.  
  147.  
  148.    4. ACCELERATION MODULE
  149.  
  150.    VIz installs itself as a resident program that can be invoked repeatedly for
  151.    modification of its parameters, without producing multiple copies on memory;
  152.    the accelerator module of the resident uses less than 1,000 bytes of RAM. To
  153.    maximize speed of code, but minimize resident size, acceleration only occurs
  154.    for video page 0 in a text mode (1-3, color; 7, monochrome).  In other pages
  155.    or graphic modes, VIz becomes inactive and is automatically reactivated by a
  156.    change to page 0 in text mode.
  157.  
  158.    VIz updates relevant parameters in the BIOS data area (segment 40h), such as
  159.    cursor position (page 0 only) and type, video mode, page, and font, that are
  160.    also processed by VIz.
  161.  
  162.  
  163.    5. CURSOR ALTERNATION MODULE
  164.  
  165.    To help cursor visualization in screens where the cursor is not easily seen,
  166.    as in some laptop displays, VIz provides a small resident module that allows
  167.    for the display of a (full-)block cursor, either continuously or alternating
  168.    with a line cursor. The alternation rate can be adjusted in steps of 54.9 ms
  169.    between about 0.055 s (/V1) and 5.5 s (/V99).  A zero alternation rate (/V0)
  170.    produces a continuously present block cursor. For the module to be loaded in
  171.    memory, VIz must be installed with any /V switch (see below), and it adds an
  172.    additional 100 bytes to the resident size of VIz.
  173.  
  174.    Very short or very long alternation rates are distracting or hard to follow.
  175.    When selecting a rate for laptop displays, start with a value of n=9 (.50 s)
  176.    or so.
  177.  
  178.    Block cursor alternation can be turned off by making this resident quiescent
  179.    with the switch /V+ (until its reactivation with /Vn). All cursor operations
  180.    use direct commands to the hardware, and assume register-level compatibility
  181.    with the Motorola 6845 CRT controller. This chip is present in MDA, CGA, and
  182.    HGC cards, while a 6845-compatible CRTC is a custom LSI chip in the IBM-EGA,
  183.    part of the Memory Controller Gate Array on the MCGA, or a part of the Video
  184.    Graphics Array on the VGA.
  185.  
  186.    The normal (hardware-controlled) blinking of the cursor is not eliminated by
  187.    VIz; hence, depending on the alternation rate selected, a two-beat frequency
  188.    may be noticeable.
  189.  
  190.  
  191.    6. ANSI-COMPATIBLE FILTER MODULE
  192.  
  193.    The DOS files includes the filter ANSI.SYS, a console character driver that
  194.    mediates a subset of the standard escape sequences of the American National
  195.    Standards Institute (ANSI) for video services.  This filter also mediates a
  196.    supplementary subset for keyboard services (such as key reprogramming).
  197.  
  198.    VIz has a second, independently installable resident module that implements
  199.    standard ANSI escape sequences to control the console video functions. This
  200.    ANSI-compatible filter uses less than some 800 additional bytes of RAM when
  201.    installed.  Once installed, this ANSI filter module can be turned off or on
  202.    independently of the other modules, or jointly uninstalled from memory.
  203.  
  204.    The filter does not provide by itself much acceleration of DOS video input/
  205.    output as far as ANSI instructions are concerned.  Its advantages are small
  206.    resident size, the capability of being turned on or off, and its harmonious
  207.    working with the acceleration module of VIz.
  208.  
  209.  
  210.    COEXISTENCE WITH OTHER ANSI FILTERS
  211.  
  212.    The installation of the ANSI filter can be made contingent on not detecting
  213.    the presence of ANSI.SYS or another ANSI-like utility intercepting the FAST
  214.    CONSOLE interrupt (29h) of DOS, such as ANSI.COM (Copyright 1989 Ziff-Davis
  215.    Corp.), or the potential presence of these utilities may be ignored and the
  216.    filter installation forced.
  217.  
  218.    The presence of an installed ANSI-like utility can be ascertained using the
  219.    Status panel displayed when the command <VIZ ?> is entered; 2 types of ANSI
  220.    drivers are recognized:
  221.  
  222.     ANSI.SYS    Indicates that interrupt 29h (see below) points to a
  223.             resident code containing a device driver header with
  224.             the attributes of a character device servicing calls
  225.             to INT 29h and the device name 'CON.' This is likely
  226.             to be ANSI.SYS or an ANSI-compatible device driver.
  227.  
  228.     ANSI.COM    Indicates that interrupt 29h (see below) points to a
  229.             resident code containing the string 'CON    ' at the
  230.             place where the device driver name should be, but it
  231.             does not contain other elements of the device driver
  232.             header.  This is an ANSI-compatible resident utility
  233.             of the type of ANSI.COM.
  234.  
  235.    ANSI IMPLEMENTATIONS
  236.  
  237.    The ANSI-compatible filter supports the following subset of ANSI 3.64-1979,
  238.    standard escape sequences, to control console video functions (see your DOS
  239.    documentation of the ANSI.SYS commands):
  240.  
  241.     Selection of the foreground and background colors on a color display or
  242.     the text attributes on a monochrome display system. The sequence syntax
  243.     is <Esc>[#;...;#m, where # is 30-37 to select a foreground color, 40-47
  244.     47 to select a background color, and 0-1, 4-5 or 7-8 to select the text
  245.     attributes.
  246.  
  247.     Selection of the video mode (similar to using the MODE command of DOS).
  248.     The sequence syntax is <Esc>[=#h or <Esc>[=#l, where # is 0-6 or higher
  249.     (depending on the adapter card in use).
  250.  
  251.     Selection of word wrapping, i.e. whether lines longer than the width of
  252.     the screen are truncated. The sequence syntax is <Esc>[?7h or <Esc>[?7l
  253.     to turn word wrapping ON or OFF, respectively.
  254.  
  255.     Cursor positioning for the following sequences:
  256.     <Esc>[r#;c#H    Move to specified row (r#) and column (c#)
  257.     <Esc>[r#;c#f    Same as previous sequence
  258.     <Esc>[r#A    Move cursor up by specified number of rows
  259.     <Esc>[r#B    Move cursor down by specified number of rows
  260.     <Esc>[c#C    Move forward the specified number of columns
  261.     <Esc>[c#D    Move backward the specified number of columns
  262.     <Esc>[s     Store current position of the cursor
  263.     <Esc>[u     Restore to the position stored by <Esc>[s
  264.     <Esc>[K     Erase from the cursor to end of the line
  265.     <Esc>[2J    Clear all rows and home cursor (this sequence
  266.             preserves current color attribute)
  267.  
  268.    Not supported by the filter are the cursor-position-reporting ANSI sequence
  269.    (<Esc>[r#;c#R), and the supplementary set of escape sequences used by ANSI.
  270.    SYS to permit the reprogramming of the keyboard (i.e. <Esc>[#;'string';3p),
  271.    a set which is not part of the 1979 ANSI video standard.
  272.  
  273.  
  274.    7. INSTALLATION & USAGE
  275.  
  276.    The enclosed utility INSTALL.EXE may be used to copy the program files to
  277.    a user-defined drive and directory, and--if so desired--to add statements
  278.    to the file AUTOEXEC.BAT so that the program is loaded automatically upon
  279.    booting and to append the user-defined directory to the PATH statement.
  280.  
  281.    To install the program manually, copy the program files to a subdirectory
  282.    of your choice, and add the following command to AUTOEXEC.BAT:
  283.  
  284.             <path>VIZ [/switches] [;comments]
  285.  
  286.    where <path> is the full path specification for the file VIZ.EXE; command
  287.    switches and comments are described below.
  288.  
  289.    It is recommended that VIz be installed before other residents also using
  290.    the BIOS interrupt 10h (video input/output).  Due to the intrinsic nature
  291.    of the implementation, VIz does not chain some the interrupt-10h calls to
  292.    residents located down the intercepted interrupt chain. In order for such
  293.    residents to have access to these data, they need to be loaded after VIz.
  294.    Thus, it may be convenient to install VIz early in AUTOEXEC.BAT.
  295.  
  296.    When the ANSI filter is to be used in a permanent manner, VIz may also be
  297.    installed as described above; if you want to remove the ANSI filter after
  298.    a given ANSI-oriented task, however, then VIz should be the last resident
  299.    to be installed.
  300.  
  301.    The driver ANSI.SYS needs not to be loaded or, if loaded, removed, to use
  302.    the ANSI resident of VIz.  However, if any ANSI-like utility were already
  303.    installed and active, and VIz were switched to its 'fast DOS' mode (/Z+),
  304.    such utility might be unable to process ANSI escape sequences unless they
  305.    were sent directly to the CON device via INT-29h calls (instead INT 21h).
  306.  
  307.  
  308.    COMMAND SWITCHES
  309.  
  310.    These switches allow for the modification of the default (preselected) or
  311.    of an already selected resident configuration, or the execution of one of
  312.    the nonresident services provided by the utility. Command switches can be
  313.    issued from:
  314.  
  315.     (1) the DOS command line
  316.     (2) a batch file
  317.     (3) a DOS environment string with the format VIZ=/SWITCH1.../SWITCHn
  318.  
  319.    The switches are not case sensitive, and can be separated by any character
  320.    between the ASCII space and backslash.  The effects of some switches, e.g.
  321.    /N, are command-order sensitive.  Switches /A, /B, /C, /D, /I, /M, /P, /R,
  322.    and /S produce "sticky" video changes that remain in effect even if VIz is
  323.    quiescent or uninstalled.
  324.  
  325.     ----------------------------------------------------------------
  326.     Asterisks indicate switches unavailable in the unregistered copy
  327.     ----------------------------------------------------------------
  328.  
  329.     SWITCH /?
  330.  
  331.     This switch displays the Status/Usage/Help panels, which are described in
  332.     more detail in the section below.  If a VGA or EGA is the active adapter,
  333.     the program saves the contents of the palette registers prior to changing
  334.     the video attributes for its various displays.  See section STATUS/USAGE/
  335.     HELP PANELS below.
  336.  
  337.     EGA users:  The default MS-DOS palette attributes are restored if the EGA
  338.         BIOS fails to store the original video data.
  339.  
  340.  
  341.     * SWITCH /A[±]
  342.  
  343.     Installs a resident filter to implement (the video subset of) ANSI escape
  344.     sequences; the installation may be made contingent upon failure to detect
  345.     the presence of the DOS driver ANSI.SYS or some ANSI-like residents (/A),
  346.     or to ignore their potential presence (/A+).
  347.  
  348.     The ANSI module does not become resident unless switch /A[+] is specified
  349.     at the time VIz is being installed and cannot be added after installation
  350.     of the resident(s).
  351.  
  352.     Although the filter can take advantage of VIz acceleration, its operation
  353.     does not require the enabling of the resident accelerator module, and its
  354.     activity can be controlled independently with the following switches:
  355.  
  356.       /A    If VIz is not yet installed, adds the ANSI filter module
  357.         to the resident code to be installed (provided that ANSI
  358.         SYS or another logical device named 'CON     ' mediating
  359.         INT 29h also has not been installed) and inactivates the
  360.         remapping of the EGA/VGA palette via /C+, /Cn:n, or /Cm.
  361.  
  362.  
  363.       /A+   If VIz is not yet installed, adds the ANSI filter module
  364.         to the resident code to be installed, even when ANSI.SYS
  365.         or a similar CON utility has already been installed, and
  366.         inactivates the remapping of the EGA/VGA palette via /C+
  367.         /Cn:n, or /Cm.
  368.  
  369.         If VIz is already installed, and the resident filter was
  370.         made inactive with /A-, /A+ reactivates the ANSI filter.
  371.  
  372.  
  373.       /A-   Inactivates the filter, if installed and active. It also
  374.         reactivates a previously active remapping of the EGA/VGA
  375.         palette.
  376.  
  377.     Defaults: /A = /A+; null switch = no resident on installation.
  378.  
  379.     Switch /A or /A+ automatically turns switch /Z off (/Z-) to insure that
  380.     all the DOS video output is directed to the console driver so that ANSI
  381.     escape sequences via StdOut can also be implemented by the ANSI filter.
  382.     In those cases where the ANSI escape sequences are directly sent by the
  383.     application to INT 29h, a faster DOS output may be achieved with switch
  384.     /Z+ after selecting switch /A[+].
  385.  
  386.  
  387.     * SWITCH /Bn
  388.  
  389.     Selects the color for the screen border in text modes, and the background
  390.     and border color in graphic modes.  This color is specified by <n>, a one
  391.     or two digit number representing the Red-Green-Blue mixture for the color
  392.     using an octal (base 8) format ranging from 0 to 77 (see Switch C below).
  393.  
  394.     Switch /C+ also sets the screen border; the default border for the EGA is
  395.     black, and the screen background attribute for other color adapters.
  396.  
  397.  
  398.     * SWITCH /Cn:m±?
  399.  
  400.     Allows for color changes in the EGA/VGA color palette, which consists of
  401.     16 registers, and is used to map video memory data into colors.  Both in
  402.     (the EGA-compatible modes of) the VGA and the EGA, the value in each one
  403.     of these registers determines the amount of Red, Green, and Blue mixture
  404.     in the displayed color.
  405.  
  406.     This amount can be represented by the data bits <RGBrgb>, where <000rgb>
  407.     shows the color at 33%, <RGB000> at 66%, and <RGBrgb> at 100% intensity.
  408.     These bits, and their resultant color, are shown below using both binary
  409.     (base 1) and octal (base 8) number formats:
  410.  
  411.       Binary    Octal     Color
  412.     ┌─────────┬──────┬─────────────┐
  413.     │ 000 000 │  00 +│ 100% black  │    Since the binary format takes up a
  414.     │ 000 001 │  01  │  33% blue   │    lot of space it is more convenient
  415.     │ 000 010 │  02  │  33% green  │    to use the 2-digit octal format to
  416.     │ 000 011 │  03  │  33% cyan   │    represent an RGB value. The binary
  417.     │ 000 100 │  04  │  33% red    │    equivalence of octal numbers is:
  418.     │ 000 101 │  05  │  33% magenta│
  419.     │ 000 110 │  06  │  33% yellow │         0o = 00000b
  420.     │ 000 111 │  07  │  33% white  │         1o = 00001b
  421.     ├─────────┼──────┼─────────────┤         2o = 00010b
  422.     │ 001 000 │  10 +│  66% blue   │         3o = 00011b
  423.     │ 010 000 │  20 +│  66% green  │         4o = 00100b
  424.     │ 011 000 │  30 +│  66% cyan   │         5o = 00101b
  425.     │ 100 000 │  40 +│  66% red    │         6o = 00110b
  426.     │ 101 000 │  50 +│  66% magenta│         7o = 00111b
  427.     │ 110 000 │  60 +│  66% yellow │        10o = 01000b
  428.     │ 111 000 │  70 +│  66% white  │        11o = 01001b
  429.     ├─────────┼──────┼─────────────┤        12o = 01010b
  430.     │ 001 001 │  11 +│ 100% blue   │        13o = 01011b
  431.     │ 010 010 │  22 +│ 100% green  │        14o = 01100b
  432.     │ 011 011 │  33 +│ 100% cyan   │        15o = 01101b
  433.     │ 100 100 │  44 +│ 100% red    │        16o = 01110b
  434.     │ 101 101 │  55 +│ 100% magenta│        17o = 01111b
  435.     │ 110 110 │  66 +│ 100% yellow │        20o = 10000b
  436.     │ 111 111 │  77 +│ 100% white  │        etc
  437.     └─────────┴──────┴─────────────┘
  438.       (+) IBM default color palette
  439.  
  440.     Of course, other colors can also be generated when using a different RGB
  441.     mixture value.  For instance, a desaturated (i.e., whitish) RGB sequence
  442.     is obtained in the octal range 71o through 76o.
  443.  
  444.     This palette control is also enabled (revision 2.42+) for the monochrome
  445.     mode of VGA and MCGA video adapters to remap color codes into gray-scale
  446.     values.  The following services are available:
  447.  
  448.       /C:n  The RGB values of the palette registers is set by a 16-
  449.         number sequence in which these two-digit, octal numbers
  450.         are separated by colons (:) as in the following example
  451.  
  452.            /C03:00:20:30:40:50:01:77:70:11:22:33:44:55:66:76
  453.  
  454.         which shows the default palette colors used by VIz when
  455.         switch /C? is used.  If less than 16 numbers are given,
  456.         their RGB values are loaded into the respective palette
  457.         registers starting from register 0.  When a non-numeric
  458.         value is provided, the palette is not changed.
  459.  
  460.       /Cm±  The VGA and MCGA adapters emulates a 16-color text mode
  461.         for a monochrome display, and the palette consists of 4
  462.         groups of four shades of gray. In MONOCHROME modes, /Cm
  463.         loads a palette in which the gray-scale value increases
  464.         uniformly with increasing attribute values; the palette
  465.         corresponds to the following command
  466.  
  467.            /C00:50:01:31:61:12:42:03:43:04:44:05:55:26:07:77
  468.  
  469.         Switch /Cm can also be used with CGA monochrome systems
  470.         (e.g., laptops) to translate color attributes into gray
  471.         scale values.
  472.  
  473.         In COLOR modes, switch /Cm± enables [+] or disables [-]
  474.         the gray-scale summing of the RGB mixture. The summing,
  475.         carried out by the BIOS, sets the gray-scale equivalent
  476.         of a given color to 30%, 50%, and 11% of the Red, Green
  477.         and Blue value in the video digital-to-analog registers
  478.         (these percentages are close to the relative brightness
  479.         of the displayed 'pure' red, green, and blue).
  480.  
  481.       /C?   This service provides a display of the palette registers
  482.         and the corresponding RGB mixture in octal format. It is
  483.         possible to alter the RGB mixture of any register simply
  484.         by pressing <R>, <G>, or <B> and then <> or <>.  These
  485.         arrows cycle through 0%, 33%, 66%, and 100% intensity of
  486.         the respective RGB component.  The actual RGB mixture of
  487.         the selection is also shown on a graph.  Press the right
  488.         or left arrow to cycle through the registers, and <HOME>
  489.         to go to register 0 or <END> to go to register 15.
  490.  
  491.         Press <ENTER> to save the current palette, <ESC> to quit
  492.         the service without any palette changes, <DEL> to reject
  493.         any change and to restart the service, and the indicated
  494.         function keys to load several available palettes.
  495.  
  496.       /C-   Use to inactivate the implementation of EGA/VGA palette
  497.         changes via VIz.  The video attributes remain unchanged
  498.         until the a video operation reloads the palette, e.g. a
  499.         video mode change.  Switch /A+ also turns off remapping
  500.         of the palette.
  501.  
  502.       /C+   Use to reactivate the implementation of EGA/VGA palette
  503.         changes via VIz; it reloads the last color palette that
  504.         was selected via VIz.  Switch /A- reactivates remapping
  505.         if remapping was in effect prior to an /A+ request.
  506.  
  507.     Defaults: /C = /C+.
  508.  
  509.     The selected EGA/VGA color palette changes are asserted (i.e. the palette
  510.     is loaded with the selected RGB values) each time a video mode change, or
  511.     a video font change, is requested and VIz is enabled (i.e., no /Q switch,
  512.     no graphics mode, and no video page other than 0).
  513.  
  514.     To preserve the small size of Viz, there is no hotkey pop-up service.  If
  515.     during the execution of an application the color palette changes, the RGB
  516.     values selected via VIz cannot be asserted except by shelling to DOS (and
  517.     executing VIz with the switch /C+ to reload the palette) or by triggering
  518.     a video mode/font change.
  519.  
  520.  
  521.     SWITCH /D[±n]
  522.  
  523.     Adjusts brightness of screen (VGA card only); the brightness change step
  524.     is specified by the sign and value of <±n>, which is a decimal number of
  525.     1 or 2 digits, with or without a sign, in the range from -63 to +63. Use
  526.     of high negative or positive numbers can result in an unreadable screen.
  527.     Selection of /D0 results in the restoration of the screen to its default
  528.     settings (as dictated by the manual controls of the monitor).
  529.  
  530.     Defaults: /D = /D+2; /D1 = /D+1; /D- = /D-2.
  531.  
  532.  
  533.     * SWITCH /E
  534.  
  535.     Creates or updates the variable VIZ=/SWITCH1.../SWITCHn in the DOS global
  536.     environment, where /SWITCH1.../SWITCHn are the switches to be implemented
  537.     when VIz is executed from the DOS command line without any arguments.  If
  538.     the 'VIZ' variable already exists, switch /E updates the contents of this
  539.     variable.  Although switch /E is incorporated into the variable contents,
  540.     its presence is ignored when VIz uses this variable as input.
  541.  
  542.     Switch /E modifies the DOS global environment irrespective of whether the
  543.     resident shell is the initial copy of COMMAND.COM (global environment) or
  544.     a secondary copy (local environment).  See the INSTALLATION section below
  545.     for more details.  No defaults.
  546.  
  547.  
  548.     * SWITCH /F[Htg][n±]
  549.  
  550.     If VIz detects a HERCULES card adapter (HGC or HGC+), switch /FHt changes
  551.     the card to text mode (80x25) whereas switch /FHg changes the card to its
  552.     default (page 0) 720x348 graphics mode.
  553.  
  554.     If VIz detects an EGA or VGA adapter, switch /Fn permits the selection of
  555.     the number of screen rows to be displayed.  The following video fonts are
  556.     supported: 12 or 14 (EGA or VGA), 25 (EGA and VGA), 28 (VGA), 35 (EGA and
  557.     VGA) and 43 or 50 (EGA or VGA) screen rows.  Except for the 12/14 and 35-
  558.     row fonts, implementation of the selected font is maintained until switch
  559.     /F-, which disables font implementation, or another font is selected; the
  560.     font implementation can be reenabled with /F+.
  561.  
  562.     If a number <n> is not specified, switch /F toggles between 25-row and 43
  563.     (EGA) or 50-row (VGA) screens.  (If an EGA/VGA adapter is found, VIz also
  564.     selects the alternate BIOS print-screen service to avoid the default BIOS
  565.     print-screen routine that works with 25 rows only.)  For a 25-row screen,
  566.     an 8x14 font is used in an EGA and a 9x16 font in a VGA.  Fonts with more
  567.     than 25 rows can be loaded only if the video page is between 0 and 3.
  568.  
  569.     No defaults.
  570.  
  571.  
  572.     * SWITCH /G[n]
  573.  
  574.     The frequency in Hz (cycles per second) of 55-ms bell tones is specified
  575.     by <n>, a decimal number of up to 4 digits, in the range from 25 to 5000
  576.     Hz.  Values below 25 become 25 Hz and above 5000 become 5000 Hz; if more
  577.     than 4 digits are given only the four least-significant digits are used,
  578.     e.g., 50,000 Hz is read as 0000, triggering the use of 25 Hz.
  579.  
  580.     The bell tones always last 55 ms (one tick of the 8253/8254 timer chip).
  581.     Since the tones are forced to begin at the start of a 55-ms tick period,
  582.     stacked bell rings will result in a distinctive, staccato-like burst due
  583.     to the intervening silent 55-ms tick periods.
  584.  
  585.     Most computer speakers seem to work properly within the range from about
  586.     100 Hz to about 3,000 Hz.  Frequencies for the octave starting at middle
  587.     are C=523 Hz, D=587 Hz, E=659 Hz, F=699 Hz, A=880 Hz, and B=988 Hz.  The
  588.     frequencies for higher [lower] octaves increase [decrease] approximately
  589.     by a factor of 2 per octave change from the above values.
  590.  
  591.     Defaults: /G = /G440.
  592.  
  593.  
  594.     * SWITCH /H[n][@]
  595.  
  596.     Loads the resident in the Upper Memory Area (UMA), between addresses 640
  597.     KB and 1,024 KB of memory; this is the region below the 1-MB boundary of
  598.     the memory accessible by 086 CPUs, but above the 640-KB hardware barrier
  599.     of DOS. The switch requires an available upper memory block (UMB) of ca.
  600.     1 to 2 KB (depending on the number of modules to be installed), which is
  601.     allocated by the program itself either via a direct XMS request or, when
  602.     MS-DOS 5+ controls UMB allocation (i.e., UMA linkage through the command
  603.     DOS=UMB in CONFIG.SYS), via a DOS call.  Allocation of UMBs requires the
  604.     presence of an XMS manager (XMM) which supports the UMB services 10h-11h
  605.     of XMS 2+, and (if the XMM lacks the capability of remapping memory) the
  606.     presence of an UMB provider.
  607.  
  608.     A lower upper-memory limit for the UMB loading can also be requested via
  609.     switch /Hn, in which <n> is a four-digit hexadecimal number between A000
  610.     (640 KB) and FF80 (1,022 KB), in order to avoid or select specific areas
  611.     of upper memory.
  612.  
  613.     A lower-memory resident marker can also be installed along with the UMB
  614.     resident via switch /H@ or /Hn@; the marker occupies 144 bytes of lower
  615.     conventional memory, can be identified in some memory mapping utilities
  616.     by the name
  617.                    VIz @ UMB
  618.  
  619.     and is released from memory when the UMB resident is uninstalled.  This
  620.     marker may be used (1) to remind that the resident is already installed
  621.     in upper memory, (2) to help locate the UMB installation address in the
  622.     case of some mapping utilities, and (3) to help avoid removal conflicts
  623.     when lower and upper-memory residents are interspersed.
  624.  
  625.     Defaults:  Low-memory installation if any error is found during the UMB
  626.     loading; high-memory installation below lower-address limit if UMBs are
  627.     not available above such limit.
  628.  
  629.  
  630.     * SWITCH /I±
  631.  
  632.     Selects how background color attributes with a hexadecimal value in the
  633.     range from 8h to Fh (bit 7=1) are displayed in text modes.
  634.  
  635.       /I-   High-bit attributes produce a blinking character on a
  636.         background of normal (medium) intensity.
  637.  
  638.       /I+   High-bit attributes result in a steady character on an
  639.         intense background.
  640.  
  641.     Defaults: Null switch = /I- on installation.
  642.  
  643.  
  644.     * SWITCH /K±
  645.  
  646.     Disables [+] or enables [-] access of the CPU to video RAM in VGA/MCGA.
  647.     It can be used to kill BIOS-mediated displays that cannot be redirected
  648.     to the NUL device.
  649.  
  650.       /K-   Enable CPU access to video RAM (normal display).
  651.  
  652.       /K+   Disable CPU access to video RAM (blanked display).
  653.  
  654.     Defaults: /K = /K+; null switch = /K- on installation.
  655.  
  656.  
  657.     SWITCH /Mxn
  658.  
  659.     Selects the video mode specified by <Hn>, in which <n> is a hexadecimal
  660.     number between 0 and FF, or <Dn>, where <n> is a decimal number between
  661.     0 and 255. The program does not check that the selected mode is a valid
  662.     one for the adapter in use.  No defaults.
  663.  
  664.  
  665.     * SWITCH /N±
  666.  
  667.     Determines whether or not program messages are displayed (after loading
  668.     of the resident):
  669.  
  670.       /N-   Messages are displayed via the redirectable StdOut device of
  671.         DOS (messages may be avoided by ending the command line with
  672.         the '> NUL' redirection request).
  673.  
  674.       /N+   Messages are not displayed (after program loading), in which
  675.         case a brief bell tone is sounded when a error has occurred.
  676.  
  677.     Defaults: /N = /N+; null switch = /N- on installation.
  678.  
  679.     Since VIz beeps when a command error is detected, /N- should need to be
  680.     used only after such beep to display the error message again; the final
  681.     status of the operation can also be monitored (in batch files) with the
  682.     ERRORLEVEL command.  (To help avoid installation problems, all messages
  683.     are displayed if the resident is not yet installed.)
  684.  
  685.  
  686.     SWITCH /Pn
  687.  
  688.     Selects the video page specified by a number <n> in the range of 0 to 7
  689.     for 25-row display EGA/VGA, 0 to 3 for 43/50-row display EGA/VGA, and 0
  690.     to 3 for CGA.  No defaults.
  691.  
  692.  
  693.     SWITCH /Q
  694.  
  695.     Forces the video accelerator into a quiescent mode; if loaded, the ANSI
  696.     filter and the Cursor blink resident are NOT inactivated.  The overhead
  697.     video time for having VIz quiescent is an additional 2% or less of that
  698.     without VIz.  (Even when it is quiescent or during graphic video modes,
  699.     the accelerator still monitors the video interrupt to check for page or
  700.     mode change requests.)  A quiescent mode lasts until the next execution
  701.     of the program, unless switch /Q or /? has been selected.  No defaults.
  702.  
  703.  
  704.     * SWITCH /R±
  705.  
  706.     Selects the mode of processing text output that is used by DOS.  In the
  707.     normal ('cooked') mode, the kernel builds a device request for a single
  708.     character output, makes a Ctrl-C check, and then passes this request to
  709.     the StdOut console device; if no error is found, the buffer pointer and
  710.     character count are updated.  This process is repeated until either the
  711.     end-of-file character (ASCII 26, Ctrl-Z) is found or all characters are
  712.     processed.  Tabs (ASCII 9) are expanded to 8 spaces.
  713.  
  714.     In the binary ('raw') mode, instead of filtering the stream for control
  715.     characters, DOS passes a single request header to the device.  Control-
  716.     C, Control-P, and Control-S keyboard entries are not checked during I/O
  717.     operations.  Depending on the DOS version, DOS-mediated video output in
  718.     binary mode is faster by factor of about 1.40 or so.
  719.  
  720.       /R-   Changes DOS processing to the normal or 'cooked' mode.
  721.  
  722.       /R+   Changes DOS processing to a binary or 'raw' mode.
  723.  
  724.  
  725.     Defaults: Null switch = /R- on installation.
  726.  
  727.     When executed, some utilities set the DOS processing mode to 'raw,' and
  728.     then change it to normal when they finish, irrespective of the original
  729.     mode.  Other utilities set the mode to 'raw' and leave it on.  Repeated
  730.     use of switch /R+ may be necessary to maintain the binary DOS mode.
  731.  
  732.     NOTE: If the DOS binary mode is selected, the 'BREAK=ON' command should
  733.       also be issued to facilitate the detection of 'Control-C' entries
  734.       during disk and other DOS operations.
  735.  
  736.  
  737.     * SWITCH /S[n±]
  738.  
  739.     Enables [Sn+] or disables [Sn-] special services triggered by some keys
  740.     that can have untoward effects under some circumstances, especially for
  741.     LAN servers.
  742.  
  743.       /S1±  Enables [+] or disables [-] the printing of the screen
  744.         triggered by the <PrtSc> key.  /S1- is useful when the
  745.         number-pad keys are used often, and the possibility of
  746.         triggering unwanted prints is commensurably high. More
  747.         importantly, if the machine is not connected to an on-
  748.         line printer, <PrtSc> will freeze the system.
  749.  
  750.       /S2±  Enables [+] or disables [-] the dynamic halt, which is
  751.         triggered by the <Pause> key (PS/2s and COMPAQs) or by
  752.         the <Ctrl><NumLock> combination (in PCs).  The halt is
  753.         maintained until another key is pressed.  This service
  754.         is available only if the Cursor module is also loaded.
  755.  
  756.     Defaults: /S = /S1+; /S = /S1+; /S2 = /S2+; null switch = /Sn+ on
  757.               installation.
  758.  
  759.  
  760.     If /S1± (or /S± or simply /S) is requested at the time of installation,
  761.     VIz also selects the alternate BIOS print-screen service if the adapter
  762.     is an EGA or VGA, in order to handle screen lengths longer than 25 rows
  763.     (this alternate service is needed if other screen fonts are to be used,
  764.     since the BIOS default service only prints 25 lines.
  765.  
  766.     Some EGAs do not work properly when this alternate print-screen service
  767.     is enabled.  If the selection of switch /S1± during installation yields
  768.     a print-screen malfunction, install VIz without selecting /S1±, /S±, or
  769.     /S±, and only then select switch /S1 in a subsequent execution.
  770.  
  771.  
  772.     SWITCH /U
  773.  
  774.     Uninstalls the resident from memory.  The request is not honored if any
  775.     of the interrupt vectors intercepted by the program do not point to the
  776.     resident, indicating subsequent installation of other resident(s) using
  777.     the same interrupt(s) or the revectoring of such interrupts by a prior,
  778.     ill-behaved resident. Hence, the program cannot be uninstalled, because
  779.     it would leave such interrupts pointing to empty memory, and the system
  780.     would then crash.
  781.  
  782.     In general, the program should be uninstalled only when it was the last
  783.     resident to be loaded; in practice, however, it can also be uninstalled
  784.     if subsequently loaded residents do not hook the same interrupts as the
  785.     program. Even though this increases memory fragmentation, the resulting
  786.     "hole" is innocuous, and may be used by DOS for other purposes (such as
  787.     local environment blocks).  No defaults.
  788.  
  789.  
  790.     SWITCH /V±n
  791.  
  792.     Selects the loading of the resident cursor module. This module does not
  793.     become resident unless /V+ or /Vn is specified at the time VIz is being
  794.     loaded; this module cannot be added to the resident after installation.
  795.  
  796.       /Vn   Enforces a cursor whose shape alternates between a full
  797.         block and a thin line, in which <n> is a decimal number
  798.         (of 1 or 2 digits) specifying the alternation rate from
  799.         0.055 s [/V1] to 5.5 s [/V99].
  800.  
  801.       /V0   Forces the display of a continuous, full block cursor.
  802.  
  803.       /V-   Disables the display of the cursor.  Due to a potential
  804.         BIOS conflict, switch /V- is ignored at the time of VIz
  805.         loading; to make the cursor invisible, first use /V+ or
  806.         /Vn and then /V-.
  807.  
  808.       /V+   Reverses the cursor changes produced by /Vn and /V-.
  809.  
  810.     Defaults: /V = /V+; null switch = no resident on installation.
  811.  
  812.  
  813.     * SWITCH /X±
  814.  
  815.     If the DOS video output to the Standard Output device (StdOut) is being
  816.     mediated by VIz (see switch /Z±), switch /X controls whether the StdOut
  817.     can or cannot be redirected to a file or another device (such as NUL or
  818.     PRN) by the commands '>' or '>>' from the DOS command line.
  819.  
  820.       /X+   The INT-21/40h/1 DOS video output can be redirected to
  821.         a file or another device.
  822.  
  823.       /X-   The INT-21/40h/1 DOS video output is always displayed,
  824.         i.e. it cannot be redirected.  This provides a further
  825.         acceleration of DOS video output but at the price of a
  826.         less-than-transparent operation.
  827.  
  828.     Defaults: /X = /X+; null switch = /X+ on installation.
  829.  
  830.     NOTE:   If switch X is not enabled, the acceleration of DOS video output
  831.         via switch /Z+ (see below) conflicts with the redirection of DOS
  832.         output to another device or to a file.  If such a redirection is
  833.         needed, either enable switch X (/X+) or disable switch Z (/Z-).
  834.  
  835.  
  836.     SWITCH /Z±
  837.  
  838.     Directs the video output through INT 21h, function 40h, device handle 1
  839.     ('write to StdOut device') to the DOS console driver or the accelerator
  840.     module of VIz.  Mediation of the INT 21h/40h/1-output to VIz produces a
  841.     considerable acceleration of DOS text output in MS-DOS versions 2 to 5.
  842.  
  843.       /Z-   INT-21/40h/1 video output is allowed to be processed by
  844.         the installed CON driver.
  845.  
  846.       /Z+   INT-21/40h/1 video output is redirected to the teletype
  847.         subservice of VIz.
  848.  
  849.     Defaults: /Z = /Z+; null switch = /Z+ on installation.
  850.  
  851.  
  852.    COMMENTS
  853.  
  854.    The comments may be added in the DOS command line after the specification
  855.    of the switches.  These comments, which may be useful in clarifying batch
  856.    files, must be preceded by a semicolon (;), and are ignored by VIz.
  857.  
  858.    Do not use the DOS redirection and pipe characters in the comments as DOS
  859.    will attempt to implement the implied redirection or pipe request.
  860.  
  861.  
  862.    STATUS/USAGE/HELP PANELS
  863.  
  864.    Executing the program with switch /? selected allows access to the Status/
  865.    Usage and Help panels. (If a Mouse pointing device driver, compatible with
  866.    the Microsoft Mouse driver version 6.0 or higher is loaded and active, all
  867.    of the services provided by these panels can also be activated by pointing
  868.    the mouse to specific areas of the screen and clicking either button.  The
  869.    mouse driver state is saved prior to the display, to be restored later, if
  870.    sufficient memory is available for the panel display.)
  871.  
  872.    The STATUS/USAGE panel, which is shown first, describes status information
  873.    for the resident and some video services, such as the status of the StdOut
  874.    stream redirection, ANSI filter, DOS text processing and the current value
  875.    of the video page and video mode.  The video mode number shown is followed
  876.    by an asterisk if a mode higher than n+128 is detected; hence, mode 131 is
  877.    displayed as 3*.
  878.  
  879.    The USAGE subpanel shows a menu for the command switches: To cycle between
  880.    the main and the auxiliary menu, press key <F2> or <M>, or click the mouse
  881.    upon the screen button labelled <Menu>.  If the resident is installed, the
  882.    status of some 'on/off' command switches is displayed by '+' or '-' before
  883.    a given menu entry.
  884.  
  885.    Press key <F7>, or <X>, or click the mouse upon the screen button labelled
  886.    <Exit> to return to the DOS-prompt command line.
  887.  
  888.    Press the key <F3> or click the mouse on the screen button labelled <Test>
  889.    to run brief video benchmarks for BIOS and DOS-mediated text scrolling and
  890.    for direct screen writes.  Exit the benchmark panel by pressing key <Esc>.
  891.  
  892.    The HELP panel provides a summary description of the program and commands,
  893.    and is displayed if key <F1> or <H> is pressed from the Status/Usage panel
  894.    (or if the mouse is clicked upon the screen button labelled <Help>). Press
  895.    the keypad cursor keys (Home/End, PgUp/PgDn, arrows) to scroll the display
  896.    down or up or the key <S> to scroll in a closed loop; alternatively, click
  897.    the mouse upon the Up/Down arrows at the top right corner of the screen to
  898.    scroll.  Press key <F1> to skip the brief program summary and position the
  899.    text on the Usage section directly.
  900.  
  901.    A beating icon to the left of the preceding USAGE panel controls the speed
  902.    of screen scrolling of the HELP panel via key <S> or the mouse arrows.  By
  903.    positioning the mouse pointer over the beating heart and clicking the left
  904.    or right mouse button, the rate of scrolling can be respectively increased
  905.    or decreased.
  906.  
  907.    Press key <Esc> or <F2>, or click the mouse upon the rightmost icon at the
  908.    top left corner of the screen, to return to the Status/Usage panel.  Press
  909.    key <F7> or <X>, or click the mouse upon the leftmost icon, to exit to the
  910.    DOS-prompt command line.
  911.  
  912.  
  913.    ENVIRONMENT VARIABLE VIZ
  914.  
  915.    When the program is executed without arguments from the DOS command line
  916.    (or a batch file), it searches the DOS environment for a variable having
  917.    the format:
  918.             VIZ=/SWITCH1 ... /SWITCHn
  919.  
  920.    Up to 128 characters are allowed after the equal sign. This string can be
  921.    incorporated to the environment block via the 'SET' command of DOS or via
  922.    switch /E of the program (see below).  Program releases prior to revision
  923.    3.63 lack this feature.
  924.  
  925.    While the SET command modifies the current DOS environment block, whether
  926.    it is the global or a local one, switch /E only modifies the global block
  927.    (even when the program is executed via a secondary COMMAND.COM, as in the
  928.    case of shelling out to DOS from an application).   Notice that the local
  929.    environment block is only a copy of the global block and lacks sufficient
  930.    room to increase significantly the length of a variable, and that changes
  931.    made to a local environment are not inherited by the global one.
  932.  
  933.    When searching for the environment variable, the program uses the current
  934.    DOS environment block, whether it is the global or a local one.
  935.  
  936.    A recommended use of the environment string is to specify a default state
  937.    for the resident which can be restored just by executing the program with
  938.    no command switches. An example would be a user default /Cn:n...n setting
  939.    after the color palette has been changed by another utility.
  940.  
  941.  
  942.    8. INSTALLATION IN UPPER MEMORY
  943.  
  944.    This section describes in more detail aspects of the active (i.e., self-
  945.    loading) or passive (e.g. via DOS LOADHIGH) installation of the resident
  946.    in the upper memory region.
  947.  
  948.  
  949.    UMA SELF-LOADING
  950.  
  951.    The utility can self-install the resident in the upper memory area (UMA),
  952.    that is, RAM addresses between 640 KB and 1,024 KB, via switch /H (or its
  953.    subfunctions /Hn, /H@, and /Hn@). Program releases prior to revision 4.02
  954.    lack this feature.
  955.  
  956.    The allocation of UMA blocks (UMBs) is arbitrated by an XMS manager (XMM)
  957.    version 2.0 or higher; the XMM must be installed prior to the UMB-loading
  958.    of the resident.  Allocation also requires the remapping of UMA addresses
  959.    by a UMB provider, when such a task is not implemented by the XMM itself.
  960.  
  961.    The XMM HIMEM.SYS and the UMB-provider EMM386.EXE are distributed with MS
  962.    DOS 5+.  The allocation of UMBs is controlled by DOS when these 2 drivers
  963.    are installed, and the command 'DOS=UMB' is added to the CONFIG.SYS file.
  964.    With DR-DOS 6+, UMB remapping and XMS support are provided by EMM386.SYS.
  965.    Of course, other 386-specific memory managers, such as 386MAX or QEMM386,
  966.    also provide UMB remapping and XMS support.  All XMMs require DOS version
  967.    3 or later
  968.  
  969.    Switch /Hn, where A000 ≤ n ≤ FFFF (hexadecimal), allows the specification
  970.    of a minimum upper-memory limit for the UMB to avoid UMA regions having a
  971.    very slow access time (or to preserve regions with a fast access time for
  972.    other utilities that require faster times, such as a disk cache or screen
  973.    accelerator), or to avoid fragmentation of the UMA when UMB allocation is
  974.    not controlled by MS-DOS 5+, but by the XMM itself. The fragmentation may
  975.    occur when the XMM allocates blocks on a first-fit basis, i.e., the first
  976.    available UMB having the lowest UMA address is allocated, irrespective of
  977.    whether or not a (smaller) block matching the requested size is available
  978.    at a higher UMA address.  Unless the size of the available UMBs increases
  979.    with increasing memory address, first-fit allocation of a small UMB leads
  980.    to the breaking of large UMA blocks into smaller ones, thus hampering the
  981.    UMB installation of larger residents.
  982.  
  983.    If MS-DOS 5+ controls UMB allocation, the program enforces the allocation
  984.    of the resident block on a best-fit basis when <n> is not specified, that
  985.    is, all available blocks are searched (by DOS), and the one matching most
  986.    closely the size requested is allocated.
  987.  
  988.    When DOS controls UMB allocation and <n> is specified, UMBs are allocated
  989.    on a first-fit basis.  While this may contribute to UMA fragmentation, it
  990.    allows for the checking of a minimum memory limit in those cases in which
  991.    the selection or avoidance of a specific UMA region is more important.
  992.  
  993.    Hence, compared to the upper-memory loading provided by the LH command of
  994.    MS-DOS 5+, the HILOAD command of DR-DOS 5+, or a similar service provided
  995.    by other memory managers, self-loading into a UMB has several advantages,
  996.    including: (1) it does not require an initial free UMB of the size of the
  997.    entire program (as opposed to the size of its resident only), (2) it does
  998.    allow user control on the selection of the upper-memory block, and (3) it
  999.    can help reduce UMA fragmentation.
  1000.  
  1001.    NOTE: The address and size of available UMBs can be obtained with MEM.EXE
  1002.      (when DOS controls UMB allocation) or via the memory manager itself
  1003.      (when the allocation is controlled by 386-specific memory managers.
  1004.      In either case, such data can also be obtained with UMAX.EXE, a UMA
  1005.      mapping utility that is distributed by the author.
  1006.  
  1007.  
  1008.    UMA LOADING VIA MEMORY MANAGERS, DR-DOS 5+, or MS-DOS 5+
  1009.  
  1010.    Of course, the resident can also be installed in the UMA via a 386-memory
  1011.    manager or via UMB-linked DOS (DR-DOS 5+, MS-DOS 5+), provided that there
  1012.    is sufficient memory for the actual size of the complete program, and any
  1013.    additional memory that may be needed by the loading utility.
  1014.  
  1015.    To minimize disk storage, the program is distributed as a compressed file
  1016.    that expands upon its execution. The difference between the actual loaded
  1017.    size and the nominal directory size may create conflicts with high-memory
  1018.    loading programs that fail to measure the actual size: When the available
  1019.    high memory is not sufficient to permit the file expansion, but is larger
  1020.    than the nominal directory size, such programs will load the (compressed)
  1021.    utility. The subsequent expansion will then overwrite adjacent memory and
  1022.    likely crash the memory manager or DOS.  The executable file expands by a
  1023.    factor of less than 2.
  1024.  
  1025.    An additional 8,288 bytes of free memory are required to restore contents
  1026.    of the screen and the status of mouse, if a Microsoft/Logitech-compatible
  1027.    mouse driver is installed, after switch /? or /C?.  Also, a minimum 2,600
  1028.    bytes of additional memory are required to implement switch /F14 or /F35.
  1029.  
  1030.    WARNING  Because the manner in which the program determines the amount of
  1031.         free memory may be incompatible with the extended memory manager
  1032.         UMA-loading process, do _NOT_ use the above switches in the same
  1033.         program execution that installs the resident in upper memory via
  1034.         a memory manager or MS-DOS 5+.
  1035.  
  1036.  
  1037.    MEMORY MAPPING UTILITIES
  1038.  
  1039.    Although the program releases its own copy of the environment at the time
  1040.    of installation (to reduce resident size), the resident can be identified
  1041.    in memory maps by the label
  1042.                 VIzxxx
  1043.  
  1044.    that appears in the command-line listing of most memory mapping utilities
  1045.    irrespective of the actual contents of the command line if the program is
  1046.    loaded in conventional memory; 'xxx' in the label represents the revision
  1047.    number (e.g., 431).
  1048.  
  1049.    Starting with VIz revision 4.30.2, if the program is self-loaded in a UMB
  1050.    via switch /Hn (see above), the resident can be identified in memory maps
  1051.    by the label
  1052.                 UMB VIz
  1053.  
  1054.    in memory mapping utilities having access to the upper memory.  If such a
  1055.    label is not displayed by a given mapping utility, and the identification
  1056.    of the UMB resident is required, use switch /H[n]@ to load in lower RAM a
  1057.    small resident marker that shows up in all memory maps (see above).
  1058.  
  1059.  
  1060.    9. TECHNICAL INFORMATION
  1061.  
  1062.    Channel 0 of the 8253/8254 timer chip produces a hardware interrupt (IRQ0),
  1063.    interrupt 8h, about 18.2 times a second that is used by the system time-of-
  1064.    day clock. When the cursor module is installed, switch /Vn (n=0 or 1 to 99)
  1065.    forces the display of the block cursor, either in continuous or alternating
  1066.    manner. Cursor shape is implemented via commands using either 16-bit (word)
  1067.    or 8-bit (byte) output, depending on the VIz release that was selected.
  1068.  
  1069.    When the program is waiting for keyboard or mouse input during the display
  1070.    of the above panels, it calls repeatedly the 'IDLE' interrupts of DOS: INT
  1071.    28h and (if MS-DOS or IBM PC-DOS 5+ is being used) INT 2Fh function 1680h.
  1072.    INT 28h allows a potential background activation of (some) other residents
  1073.    while INT 2Fh/1680h allows DOS to suspend the idle program temporarily and
  1074.    transfer control to another program.
  1075.  
  1076.    The accelerator module of VIz intercepts the ROM BIOS video interrupt, 10h.
  1077.    When the system is in page 0 and a text mode, video acceleration occurs for
  1078.    subfunctions 0h through Eh, except for subfunctions 4h, 7h, Bh, and Ch.
  1079.  
  1080.    Starting with version 2.0, DOS allows the redirection of the Standard Input
  1081.    (StdIn) and Standard Output (StdOut) console device, permitting programs to
  1082.    send input to or to receive output from other programs.  Unless redirected,
  1083.    the StdIn comes from the keyboard and the StdOut goes to the screen.  These
  1084.    and some other devices can be addressed by predefined DOS 'file handles' as
  1085.    if they were disk files.  A common DOS-mediated technique to send output to
  1086.    the screen is to write to the handle 1 (StdOut) via interrupt 21h, function
  1087.    40h; in fact, this is the preferred method of DOS-mediated video output for
  1088.    MS-DOS version 2.0 or higher.
  1089.  
  1090.    The accelerator module of VIz also intercepts interrupt 21h. Switch /Z+ re-
  1091.    directs to VIz the INT-21h/40h/1 video stream to the StdOut, resulting in a
  1092.    significant acceleration of DOS-mediated video output. This acceleration is
  1093.    not increased by setting the DOS mode to binary (see switch /R). Switch /Z-
  1094.    restores the INT-21h/40h/1 stream to the current StdOut device.
  1095.  
  1096.    If switch /X+ has been selected (the default condition), the implementation
  1097.    of the INT-21h/40h/1 video stream by VIz is fully transparent.  Switch /X-,
  1098.    however, avoids a DOS-mediated redirection of the StdOut (i.e. the commands
  1099.    '>' and '>>' at the DOS command line are no longer able to redirect the DOS
  1100.    video output, such as '> NUL' to avoid some messages). Under switch /X- VIz
  1101.    provides an even faster acceleration of DOS video output, since it does not
  1102.    have to check whether the output is being redirected to the printer or to a
  1103.    file.
  1104.  
  1105.    Switch /Z selection is not disregarded when ANSI.SYS, ANSI.COM, or the ANSI
  1106.    filter of VIz is active.  The redirection of StdOut to VIz by /Z+, however,
  1107.    will conflict with ANSI commands sent to the CON device via standard-output
  1108.    calls to INT 21h, function 40h/1.  In contrast, ANSI commands using INT 29h
  1109.    are not affected by switch /Z+ (see above).
  1110.  
  1111.    The ANSI-compatible module of VIz intercepts interrupt 29h, an undocumented
  1112.    feature present in all recent versions of DOS. INT 29h is normally provided
  1113.    by the built-in console device driver of DOS, and consists of a call to the
  1114.    BIOS interrupt 10h.  DOS uses INT 29h instead of the normal request-passing
  1115.    mechanism to accelerate output to the current 'CON' device. The ANSI module
  1116.    filters this output.
  1117.  
  1118.    If a request to inactivate the installed ANSI filter is encountered (switch
  1119.    /A-), VIz checks whether the INT 29h can be restored to its original memory
  1120.    address.  If the revectoring is not possible (i.e., if another resident has
  1121.    also intercepted INT 29h), this filter remains partially active in order to
  1122.    handle an ANSI escape sequence generated by COMMAND.COM to clear the screen
  1123.    when a CLS command is detected (see below); other ANSI escape sequences are
  1124.    ignored by the filter and passed to the screen.  Hence, when revectoring is
  1125.    possible, switch /A- has the same effect as installing VIz without a switch
  1126.    /A, except that the memory occupied by the ANSI filter is not released; the
  1127.    filter is reactivated by a subsequent call to execute VIz with switch /A+.
  1128.  
  1129.  
  1130.    CLS COMMAND & INT 29h
  1131.  
  1132.    The internal console device driver installed during booting handles the CLS
  1133.    as well as INT-29h service. The CLS procedure of COMMAND.COM first tests to
  1134.    see if (1) the standard-output handle is associated with a character device
  1135.    driver (bit 7=1), and (2) the driver services INT 29h (bit 4=1).  If one or
  1136.    both tests fail, or if both tests are successful but the vector for INT 29h
  1137.    does not point to the memory segment of the DOS kernel, COMMAND.COM outputs
  1138.    the ANSI escape sequence <Esc>[2J to INT 29h; otherwise, it makes a call to
  1139.    INT 10h, subfunction 6 of the BIOS to clear the screen.
  1140.  
  1141.    If INT 29h cannot be revectored upon /A-, the partial driver activity slows
  1142.    down slightly the DOS video output whenever the ASCII character 27 (Esc) is
  1143.    found in the character stream.  The partial activity is needed, however, as
  1144.    DOS issues an ANSI escape sequence to clear the screen whenever INT 29h has
  1145.    been revectored.  Thus, if VIz were not to retain its ANSI driver partially
  1146.    active when revectoring of INT 29h is not possible, the DOS escape sequence
  1147.    would be displayed (without clearing the screen) whenever a CLS command was
  1148.    issued.
  1149.  
  1150.  
  1151.    DOS ERRORLEVELS
  1152.  
  1153.    Upon exit its to DOS, the program passes execution status values that can
  1154.    be tested via ERRORLEVEL commands in a batch file.  The following are the
  1155.    values for revision 4.30 or higher:
  1156.  
  1157.           Value   Condition
  1158.           -----   --------------------------------------
  1159.         255   Failure of cyclical redundancy check
  1160.         255   CPU type cannot execute version code
  1161.         255   Invalid DOS version
  1162.  
  1163.         254   Unknown/incompatible video adapter
  1164.         253   <BREAK> keypress during display
  1165.         252   Unable to add ANSI module to installed TSR
  1166.         251   Unable to add Cursor module to installed TSR
  1167.         250   Not additional RAM for screen font change
  1168.  
  1169.         128   XMM not installed or UMB load/unload error
  1170.          64   DOS environment error
  1171.          32   Invalid video font for adapter and/or page
  1172.          16   Invalid video page for adapter and/or font
  1173.           8   Invalid video mode request
  1174.           4   Unable to uninstall resident
  1175.           2   Unrecognized or invalid command switch request
  1176.           1   Error/incomplete RGB list in switch Cn:n...n
  1177.           0   Successful execution
  1178.  
  1179.    Since some error conditions in the range from 1 through 128 do not cancel
  1180.    program execution (nonfatal) and the error values are additive, the final
  1181.    ERRORLEVEL value may represent more than a single error. Program releases
  1182.    prior to revision 3.10 lack this feature.
  1183.  
  1184.  
  1185.    10. COPYRIGHT & LICENSE INFORMATION
  1186.  
  1187.    This documentation, programs, and other files distributed in this software
  1188.    package (the "Software")  are the copyrighted property of FM de Monasterio
  1189.    (the "Author"), who provides the Software and licenses its use. All rights
  1190.    are reserved.
  1191.  
  1192.    The Software is not sold.  A license fee is required to use this Software.
  1193.    This license does not transfer to you either the ownership of or the title
  1194.    to the Software, which remain the property of the Author.  A form required
  1195.    to license the Software is provided in the enclosed file VIZ.REG.
  1196.  
  1197.  
  1198.    SINGLE USER LICENSE.  Grants you use of this Software in a single computer
  1199.    at a time; the Software may be transferred to another computer, as long as
  1200.    it is used only in 1 computer at any time; under the license, the Software
  1201.    may NOT be installed on a network server.
  1202.  
  1203.    SITE/15-PCs LICENSE.  Grants you use of this Software in a sigle site or a
  1204.    set of sites, as long as the Software is not used in more than 15 machines
  1205.    at a time, and that such machines are located exclusively within the site.
  1206.    Licenses for more machines are available at discounted prices.
  1207.  
  1208.    SOFTWARE BUNDLING LICENSE.  Please write to the Author.
  1209.  
  1210.    REFUNDS POLICY.  If a problem notified within ninety (90) days of shipping
  1211.    of the registered copy cannot be solved, the registration fee (but not the
  1212.    shipping costs) will be refunded upon receiving a written request with the
  1213.    original diskette(s) enclosed.
  1214.  
  1215.    UPGRADE POLICY.  Program upgrades are limited to licensed users.  Upgrades
  1216.    within the same major version (e.g. release 4.00 through 4.99) are free of
  1217.    charge when a self-addressed, stamped, 5.25" diskette mailer with a 360-KB
  1218.    diskette is included with the request. Other upgrades are charged half the
  1219.    (single-user/site) registration fee.  See the enclosed file VIZ.UPG.
  1220.  
  1221.  
  1222.    U.S. GOVERNMENT INFORMATION
  1223.  
  1224.    The Software is Commercial Computer Software under the Federal Acquisition
  1225.    Regulations of the U.S. government and the Agency Supplements to them. The
  1226.    Software is provided to the Federal Government and its agencies only under
  1227.    the Restricted Rights Provisions of the above noted regulations applicable
  1228.    to commercial software developed at private expense, and not in the public
  1229.    domain. The use, duplication, or disclosure of the Software by the Federal
  1230.    Government or its agencies is subject to the restrictions set forth in the
  1231.    subdivision (c.1.ii) of the Rights in Technical Data and Computer Software
  1232.    clause at DFARS 252.227-7013 (October 1988) and FAR 52.227-19 (June 1987).
  1233.  
  1234.  
  1235.    DISTRIBUTION
  1236.  
  1237.    You may distribute the Software, but you are specifically prohibited from:
  1238.  
  1239.     - Charging fees or asking donations in exchange of or payment
  1240.       for copies of this Software.
  1241.  
  1242.     - Distributing this Software with commercial products without
  1243.       the written, express permission in advance from the author.
  1244.  
  1245.     - Distributing this Software via a for-profit organization or
  1246.       group, either alone or with other software.
  1247.  
  1248.     - Changing any of the contents of this Software including the
  1249.       copyright notice and license information.
  1250.  
  1251.    You may not disassemble or otherwise reverse engineer the Software.  Other
  1252.    uses of the Software are prohibited without a written authorization signed
  1253.    by the Author.
  1254.  
  1255.    Latest program releases may be found at the Information Exchange BBS (703)
  1256.    836-0748, as a compressed archive file.
  1257.  
  1258.  
  1259.    WARRANTY DISCLAIMER FOR UNREGISTERED COPIES
  1260.  
  1261.    The information contained in the documentation for the Software is subject
  1262.    to change without notice.
  1263.  
  1264.    The Author cannot and does not warrant that any functions contained in the
  1265.    Software will meet your requirements, or that its operations will be error
  1266.    free.  The entire risk as to the Software performance or quality, or both,
  1267.    is solely with the user and not the Author.  You assume responsibility for
  1268.    the selection of the Software to achieve your intended results and for the
  1269.    installation, use, and results obtained from the Software.
  1270.  
  1271.    The Author makes no warranty, either implied or expressed, including with-
  1272.    out limitation any warranty with respect to this Software documented here,
  1273.    its quality, performance, or fitness for a particular purpose. In no event
  1274.    shall the Author be liable to you for damages, whether direct or indirect,
  1275.    incidental, special, or consequential arising out the use of or any defect
  1276.    in the Software, even if the Author has been advised of the possibility of
  1277.    such damages, or for any claim by any other party.
  1278.  
  1279.    All other warranties of any kind, either express or implied, including but
  1280.    not limited to the implied warranties of merchantability and fitness for a
  1281.    particular purpose, are expressly excluded.
  1282.  
  1283.    By using the Software, you acknowledge (1) to have read and understood all
  1284.    parts of this document and (2) to have agreed with and accepted all of its
  1285.    terms and provisions without any reservation.
  1286.  
  1287.    For information on the terms of the Limited Warranty for licensed Software
  1288.    copies or any other information on this program, please write to:
  1289.  
  1290.                 FM de Monasterio
  1291.                 P.O. Box 219
  1292.                 Cabin John, MD 20818-0219
  1293.                 USA
  1294.  
  1295.     ┌─────────────────────────────────────────────────────────────┐
  1296.     │ Trademarked names are the property of the respective owners │
  1297.     └─────────────────────────────────────────────────────────────┘
  1298.  [END]
  1299.