
DIMVESA.EXE
Multi-function screen dimmer/VESA DPMS (Energy Star) supporting screen-saver.

DimVESA v3.1
(DOS version)

Alexander C. Eremeef, Douglas Boling and Jeff Prosise        February 14, 1997



See:  DIMMER.DOC for instructions, same parameters apply, except:

        CTRL-ALT-keypress  must be used instead of  ALT-keypress, such as the
        CTRL-ALT-UpArrow combination.  This was to prevent conflicts with some
        programs.


New with v3.1 (minor changes):
------------------------------
      1.  New switch added ('/R'), use '/R' or '/R+' (both have the same
          effect) if your graphics card doesn't support VESA DPMS directly, and
          you are using a driver such as SDD to simulate VESA extensions.

      2.  The documentation has been revised slightly.


New with v3.0:
--------------
      1.  I've added an interactive mode.  Simply run DimVESA from the command
          line, and answer its questions.  You don't have to understand the
          command-line options anymore, in order to use DimVESA.

      2.  DimVESA is no longer FREEWARE, it is now SHAREWARE.  This is because
          I have not yet received any donations.

          DimVESA will continue to be free for private use, however companies,
          organizations and institutions will be expected to acquire a SITE
          LICENSE to use this software.  This process is extremely economical,
          especially since this is usually a tax-deductible business expense.

          The cost for such a license depends on the approximate number of
          computers in the company, or department which is to receive the
          license.  The minimum fee is $15, this covers up to 15 computers.
          Each additional computer costs $0.75.  These fees INCLUDE shipping.

          This license will cover all future versions of the program (you can
          use any version of DimVESA, and you won't have to pay again, unless
          you need to use it on more computers than your site license allows.)

          If you order only a site license, I assume that you already have
          DimVESA, and will receive new versions of DimVESA the same (or some
          other) way you received this one.  In this case, all you get from me
          is just a receipt and a paper copy of the site license.  If you need
          a diskette with the newest version, please add $5, and include your
          mailing address.  Please understand that a site license does not
          entitle you to receive any source code, as it is handled separately.
          Please see the DONATIONS section.

          I'm sure you will consider DimVESA to be a worthwhile investment,
          considering the quantity of electricity that you can save with a
          DPMS compliant screensaver such as this one.


                                --------------
                                 HOW TO ORDER
                                --------------
Send one of the following:

US Postal Money Order,
International Money Order,
Cashiers Check, or a Personal Check (drawn on a US or Canadian bank),
Cash, in US dollars only. Please don't send coins, they're useless to us.

..with the correct amount in U.S. Dollars to:


                            Alexander C. Eremeef (Rurik)
                            P.O. BOX 393
                            Watertown, MA  02272-0393


Make sure the money is not visible through the envelope.  This is especially
important if you choose to send cash, because if someone sees it somewhere in
the mail, we may never receive it..  If at all possible ***DO NOT SEND CASH***!

Please allow 28 days for delivery.

If you can, when you send something to my P.O. box, please send a brief message
to me at the following Internet address as well:

  alex01@twinwave.net


PLEASE NOTE:

  - We do not accept EuroChecks, or other foreign checks,
     (as the banks charge us to cash those)
  - We cannot accept credit cards (VISA, AmEx, Mastercard, etc.),
     (as we have not set that up yet)
  - Send US dollars ONLY.  No other currencies are accepted.


NOTE:

   In the following section I refer to "High Memory" as meaning either a QEMM
   High Memory Block, or a DOS 5+ Upper Memory Block (UMB), I do not use
   it to mean the HMA (High Memory Area; the first section of XMS, just above
   1024k, which can only be used by one program at a time.)


      3.  DimVESA now has a feature that will astonish you!  The new '/A'
          switch means "AutoLoad"!  When you use this switch, DimVESA will
          detect your configuration, and load *ITSELF* into high-memory (if at
          all possible).  It currently is capable of adapting itself to
          Quarterdeck's QEMM high memory regions, DOS 5+ Upper Memory Blocks,
          and of course the normal DOS conventional memory.  It detects
          Microsoft's Windows 2+, and Quarterdeck's DESQview also.  This was
          necessary so DimVESA would (hopefully) not jam your system when
          either of these two were present.  If Windows or DESQview is
          detected, high-memory loading is switched off, even if you use the
          '/A' switch.  Windows and DESQview do not support high memory areas.

          P.S.  The UNLOAD ('/U') option now fully supports the process of
          unloading DimVESA from high-memory, which is a reason to use the
          "AutoLoad" feature instead of a program such as LOADHIGH, etc.

          Another reason to use "AutoLoad" is because it can fit DimVESA into a
          REALLY small space in high memory.   A program such as LOADHIGH on
          the other hand, has to load the COMPLETE program (with the non-
          resident portion included) into high memory, and then wait for the
          program to reduce its resident memory size.  In other words, with
          LOADHIGH, if there isn't a large enough UMB to accommodate the file
          size of the program which is being loaded high, it will require it to
          load into conventional memory instead.

          ANY program with the "AutoLoad" feature will only require a block the
          size of the ACTUAL resident portion.  In the case of DimVESA, that's
          about 1.8 kilobytes.

          Also, "AutoLoad" is thought to be an incentive for programmers and
          companies to purchase the source code.  Just think how much more
          professionalism it could add to YOUR software!!

          Plus, the "AutoLoad" source code is only $15.00 + $5.00 shipping (if
          applicable).  You pay NO ROYALTIES!  YOU CAN'T GO WRONG!!



      4.  Thanks to my "AutoLoad" modifications, the UNLOAD ('/U') feature is
          now MUCH faster and efficient (in a microsecond scale, of course!)  I
          modified it to support the "AutoLoad" method of loading DimVESA into
          high memory.  VERY few shareware programs are capable of unloading
          themselves from high memory, *THIS* is one of them!  ;-)

          Additionally, the "Auto-Unload" (or FreeMem procedure) is another
          piece of hand-written assembly language, which out-does the DOS
          int21h function 49h procedure.  It will coalesce adjacent free memory
          blocks when it de-allocates memory, unlike DOS interrupt 21h,
          function 49h.  This is important because if a user unloads a program,
          with int21h function 49h, DOS will only free the memory block, and
          not combine it with the next free block afterwards. This creates the
          problem of having two free memory blocks in a row - if another
          section of memory is allocated (in the same area, say when another
          program is loaded into an Upper Memory Block), and the new section
          request is larger than the previously freed block (which was not
          coalesced, if it was freed with DOS int21h function 49h), it will be
          loaded into the NEXT free block, leaving a "hole" in memory.  That
          is, the block freed by DOS will be avoided entirely.

          Not so with FreeMem (the companion to "AutoLoad").  This procedure
          (which is also included when you purchase the "AutoLoad" source code,
          is probably the IDEAL replacement for the DOS memory de-allocation
          procedure.



      5.  The dimmer value (from -63 to +63) after the delay value is no
          longer required.  I added a feature to make it use -63 as default.

      6.  New '/N' switch.  This tells DIMVESA to IGNORE any VESA/DPMS
          features of your graphics card, and use the normal graphics palette
          manipulation (with the dimmer value.)  This is useful if you have a
          VESA/DPMS compliant graphics card, but no DPMS compatible monitor.

      7.  I have changed DimVESA to automatically disable its Screen-Saver
          function when in a graphics mode (and re-enable itself when back in
          text mode.)  This should fix the problem of keyboard lockups when
          people run Microsoft's Windows while this program is loaded.  This
          also allowed me make the program exit out of its timer procedure
          almost immediately if the system is not in a known text mode.  This
          means that DimVESA v3.0 is less CPU-intensive in a graphics mode than
          the original DIMMER program.  The '/G' switch allows you to enable
          the Screen-Saver in all graphics modes.

      8.  The "Yellow Windows Bug" has been fixed - this was the bug that
          caused Microsoft's Windows v3.11 (and probably earlier versions also)
          to show a yellow colored title screen (instead of the normal bluish
          one.)  You can re- enable the bug with the '/Y' switch if you want to
          see it.

      9.  Added Windows 95 compatibility switch ('/W').  To make the
          Screen-Saver part of DimVESA compatible with Windows 95, use the
          '/W+' switch and adjust the properties of the DOS boxes, so that
          Win95 doesn't tell DOS applications that Windows is present.  If you
          cannot do that, then use the '/W+' switch anyway, and the
          Screen-Saver will be disabled in Windows.  If you are using Windows
          v3.xx (whatever version) on top of DOS, then always use the '/W-'
          switch.


    DIMMER.COM v1.0 is included also, for reference.


Disclaimer:
-----------
    I modified this program for myself, and am giving my modified version out
to the public, as shareware.  Since the original program which DimVESA is based
upon was freeware, I am including a complete copy of it (program,
documentation, and source code; as DIMMER.COM, DIMMER.DOC, and DIMMER.ASM)
along with DimVESA.  Only my modifications to DIMMER are shareware.  You are
free to use the original DIMMER program without paying me even a penny.
However, since I have put much effort into DimVESA, I have to make it shareware
(the previous versions were freeware).  However, I cannot accept responsibility
for your use (or misuse) of this program.  The only thing I can guarantee is
that it works for me.  In the following documentation, I will describe how the
program works on my system.  I do not guarantee that this program will work on
your system.  However, I hope it will.


Legal issues:
-------------
    Various company trademarks are mentioned in this file.  I acknowledge such
trademarks as the property of their owners.  They have been capitalized, where
appropriate.


Purpose:
--------
    I purchased a new system, with VESA DPMS (Video Electronics Standards
Association, Display Power Management Signaling) capabilities.  I was
frustrated to be unable to find a DOS screen-saver that supports these
capabilities.  So I modified one which I use frequently.

    Please note that the source code for DIMMER.COM (DIMMER.ASM) is publicly
available.  However, since most people do not program in Assembly Language, I
will not include my modified version of that source code.


Modifications:
--------------
    When a screen-saver is set (/D command-line parameter), DIMVESA.EXE will
function like DIMMER.COM, except that when the timer expires (depending on the
amount of time you set with the /D parameter), the program will check to see if
your graphics system is VESA DPMS compatible, and will utilize DPMS functions
as follows:

    After the number of minutes which you specify with the /D parameter have
elapsed (without any keystrokes), DimVESA will switch the monitor into STANDBY
mode, blanking the screen without turning off the power supply to the tube.
This saves some electricity, and allows you to turn the monitor back on real
fast (by hitting a key on the keyboard).  With the other two methods, it takes
a few seconds.

    The 2nd timer will then start.  After the same amount of time has elapsed
(again), it will switch the monitor to SUSPEND (referred to as "STAND-BY mode"
in the documentation of some monitors.)  In this condition the monitor consumes
less that 30 watts.  On a lot of monitors, the actual power consumption in this
mode is about 6 percent of maximum (about 10 watts or so).

    The 3rd timer will then start.  After the same amount of time has elapsed
(again), it will switch the monitor to OFF, in which condition the monitor
consumes about 5 to 8 watts.  In most DPMS compliant monitors, the actual power
consumption in this mode is about 4 percent of maximum.

Look at it this way (these are approximations):
With a 5 minute setting:

Time Elapsed / Monitor Condition / Power Consumption
----------------------------------------------------
  0-5 minutes         ON                 100 percent
 5-10 minutes      STANDBY          80 to 99 percent
10-15 minutes      SUSPEND           6 to 20 percent
  15+ minutes        OFF           6 percent or less
----------------------------------------------------

    You can, of course use a time setting less than 5 minutes, as in:

DIMVESA /D 3 -63

    ...for a three minute time setting (the "-63" is the dimmer setting which
the program uses if DPMS is not detected.)

    If the DPMS check fails, it will use the dimmer setting, just as DIMMER.COM
does.  When the monitor is shut off or dimmed, pressing any key will restore
the display, just as DIMMER.COM does, except that with DIMVESA.EXE, this may
(or may not) involve the software physically turning the monitor back on.
Again, this depends on whether your system supports VESA DPMS.

    The same is true for the /V switch, which causes the display to be
re-enabled when a BIOS video I/O compatible program displays something on the
screen.


Notes:
------
    This is a DOS TSR program, it stays active in memory to accomplish it's
purpose.  If it is configured properly, it will also function from within DOS
boxes in Windows v3.xx and Windows 95.  I have not had time to test it under
Windows NT or OS/2 yet.  However, it *IS* compatible with Windows v3.11 DOS
boxes, especially when loaded *BEFORE* Windows.

    To make the Screen-Saver part of DimVESA compatible with Windows 95, use
the '/W+' switch and adjust the properties of the DOS boxes, so that Win95
doesn't tell DOS applications that Windows is present.  If you cannot do that,
then use the '/W+' switch anyway, and the Screen-Saver will be disabled in
Windows.  If you are using Windows v3.xx (whatever version) on top of DOS, then
always use the '/W-' switch.

    DimVESA can be "loaded high" into DOS UMBs or QEMM's high memory.  Use the
LOADHI or LOADHIGH command from your version of DOS or memory manager.

    However, starting with v3.0 the '/A' (or "AutoLoad") switch provides the
same function, and does it all automatically.  It is recommended to use the
'/A' switch INSTEAD of any LOADHIGH utilities.

    When specifying a number of minutes for the screen-saver, you must still
specify a dimmer value (read DIMMER.DOC) if your system does not support
VESA DPMS.  For a five-minute screen-saver, the command:

DIMVESA /D 5 -63

    ..would be valid.  You may use any dimmer value between -63 and 63.  -63 is
darkest, 63 is lightest.  This value is irrelevant if your system supports VESA
DPMS.   NOTE:  DimVESA v3.0 will allow you to avoid using the dimmer value if
your system is VESA DPMS capable.  If it doesn't work, use the dimmer value.


Bugs:
-----
    The potential for bugs exists.  If you find any, send me a *detailed*
description, and I'll work on them.  Especially; some graphics cards and/or
monitors may not support the "Standby" VESA DPMS mode, to see if this is the
case, wait *TWICE* the delay value you specify (say, specify one minute, and
wait two minutes) so DimVESA can send the DPMS "Shutdown" command.

    You may contact me at:  alex01@twinwave.net
    Please give a detailed description of any programming bugs you find.

    Also check the info page at:  http://sagittarius.twinwave.net/get.html

DONATIONS:
----------
    Any donations are welcome.  Even a postcard would be welcomed, as a token
of appreciation..  :-)

    For those who donate over $5.00, if requested I will e-mail a copy of some
other shareware and public-domain utilities which I find useful.

          NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW
  ---------------------------------------------------------------------------
     The "AutoLoad" (Automatic high-memory resident Loading) source code is
available for a donation of $15.00, assuming you have an e-mail address where I
                                  can send it.

If you buy the source code, you can include the "AutoLoad" and FreeMem portions
 in any programs you (or your company) write, without paying me any royalties.
   This $15.00 includes the above mentioned $5.00 offer, with a collection of
                               useful utilities.

  Please include your e-mail address, and whether your e-mail program supports
     MIME, BinHex or UU-encode/UU-decode e-mail file transmission formats.)

For an additional $5.00 ($20 total), I'll send you a 3.5 inch diskette with all
  the stuff.  Sorry if this shipping charge (the $5.00) seems somewhat much, I
  just wanted to standardize it worldwide.  Considering that I'm currently in
   Germany (with most customers in the U.S.A.), that shipping charge is quite
                                   accurate.

NOTE:  For your convenience, I have a P.O. BOX in the U.S.A. (see below),
-----  so people living in the U.S. will not have to pay enormous quantities
       of money for an international money order.

  ---------------------------------------------------------------------------
          NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW NEW

    Remember that by donating, you are showing me that you appreciate my work.
After all, I did not have to release this to the public.  Also, you are funding
the development of additional shareware and public domain software.

    Send donations to:

            Alexander C. Eremeef (Rurik)
            P.O. BOX 393
            Watertown, MA  02272-0393
    -----
    NOTE:  If you send anything to this address, please inform me by e-mail at
    -----  alex01@twinwave.net  as well.

    Thanks!


Feature requests:
-----------------
    If you want a feature added to this program, you can send your request in a
letter, along with a small donation (let's say, at least $5.00), and when I do
the modifications, I'll e-mail you a copy of the modified version.  If you
can't receive files by e-mail, send an additional $5 for postage if you want a
copy.

    If applicable, include your e-mail address, and whether your e-mail program
supports MIME, BinHex or UU-encode/UU-decode e-mail file transmission formats.)

    If you order a site license, you may also send a list of feature requests
(at no additional cost to you), your site license will cover the future
versions of DimVESA as well.

Over and out.


Alexander C. Eremeef
Greater Enhancement Technologies  (TM)
G.E.T. the Power  (TM)

