ZENO 
Author's Documentation:

ZENO.COM:  M. Lazarus, June 11, 1986

          ZENO is a small, fast, core-resident program that
speeds up certain screen writes.  The actual increase in speed is
almost three-fold, but the increase you see on the screen depends
on the application program in use.  An example:  with BCOMM
operating at 9600 bps, the increase is approximately 20-30
percent.  Only certain programs take advantage of ZENO; but those
that don't (including PC-Write) are usually fast enough without
it.

          ZENO reduces available memory by about 900 bytes.

          ZENO operates with all screens.  On some color screens,
however, it may cause snow -- harmless but annoying.  If that
happens, remove ZENO with the instructions below.

          Important:  Do not change back and forth between
monochrome and color displays while ZENO is installed.  Users of
monochrome graphics boards:  this includes you.

          To load:  At the DOS prompt, type ZENO.  A message will
appear.

          To remove:  At the DOS prompt, type ZENO/K (use no
spaces; must be capital K).  A message will appear.  Important:
First remove all core-resident programs loaded after ZENO.

Additional Comments:

          (1)  ZENO, like many other fast screen programs,
eliminates the wait for the retrace.  But ZENO also trys to speed
up the BIOS routines in other ways as well.  For details, see the ASM
listing.  Roughly speaking, ZENO assumes that the underlying
program is trying to use the BIOS call in the most likely manner;
it tests for that, and if the assumption is right, uses a faster
method.  If ZENO's assumptions are wrong, the test of the
assumption slows down ZENO's performance in comparison to a
program that only eliminates the retrace delay.  Therefore, if
the underlying program's use of INT 10 is extremely unusual,
there may well be faster screen speedup programs faster than
ZENO.  But that is likely to be true only of very rare programs.

          (2)  TEST.COM does nothing but a series of BIOS screen
writes, counting timer interrupts.  It then writes out the number
of timer interrupts that have elapsed.  Useful for comparing fast
screen programs, although, obviously, it does not test them under
all conditions.

          (3)  Comments and suggestions are best addressed to me,
David Seidman, on Bob Blacher's bulletin board, 202-547-2008.
CHANGES by Ron Tansky:
Fixes: ZENO would hang the computer if 40-character mode was used.  I
modified the program to bypass the speed-up in 40-character mode.
I also modified the program to accept /k or /K on the command line
to kill ZENO.
   Also changed message to say 'may cause snow', as the other message
('may cause interference') really worried some users.

Second set of changes by Ron Tansky:
The first set of changes fixed the hang if 40-character mode turned on,
but I later discovered that the ZENO speed-improvement was permanently
turned off afterwards ('til next boot).  I also found out that the same
was true for graphics mode with the original ZENO; i.e.  if you ever
go into graphics mode, ZENO won't come back to speed afterwards.
This set of changes fixes both of these problems.  ZENO goes to sleep
during modes that it can't handle, but wakes back up and again
speeds up 'normal' screen output.  I put a version number into the startup
message (version 1.1), so that you can recognize this latest fix.

P.S.  I've tried to send the changed ZENO back to David Seidman,
on Bob Blacher's bulletin board, 202-547-2008.  I've never been able to
get anything but a busy signal.  If anyone knows another way to get these
fixes back to the original author, we'd both appreciate it.

Changes by Chris Blum - CompuServe 76625,1041     1/28/87

     Added code to support TTY mode output ( AH = 0EH ). Needed because
some clone BIOSs ( mine is DTK/ERSO ), do not update cursor position
through BIOS call in this mode. Without the changes, ZENO loses its
place in the display memory and the display goes out to lunch with some
BIOS configurations. I tried to follow the technique and spirit of the
existing code as much as possible. Updated version number ( now 1.2 ).

Changes by Lynn Ransdell                          5/29/87

     As written, ZENO versions 1.1 & 1.2 worked with all my software
except KEDIT 3.51 (Mansfield Software Group, Storrs, CT).  I managed
to circumvent the problem by changing the values loaded/tested in the
AX register.  Former values were 00F0h,,, replacement values were
FEFEh.  I made the assumption that KEDIT was sending the former values
(for reasons unknown to me) and that ZENO was misinterpreting them as
its signal to KILL itself.  I further assumed that the AX values might
have been arrbitrarily chosen, and thus could be arbitrarily changed.
So far, this has proven (with the software that I use) to be satis-
factory, but may conflict with someone else's software.

     I have labeled this version as 1.3 in order to distinguish it
from the prior versions.  I have not seen any other versions later
that ver. 1.2.

     The program, ZENOTEST.COM, is included in the archive for
comparing screen I/O speed before/after installing ZENO.  It is also
useful for benchmarking different "ansi"-type video drivers.  The
best combo I've found is NANSI286.SYS with ZENO13.

Changes by Elviro Mirko (v1.41)                   6/25/98
     ZENO version 1.3 had problems with output under DOS 7.0 (Win95),
because cursor position (0040:0050) changed but ZENO wasn't aware of
it. I fixed it with a little routine. I have also added the '/Q'
parameter, to start ZENO in quiet mode (useful if you put it in your
AUTOEXEC.BAT). Now, between 'ZENO' and parameters, THERE MUST BE A
SPACE. If the command line is incorrect, a little help appears.
Added credit screen. Added check to control if it is already installed.
Freed up environment memory block to reduce memory consumption.

Changes by Elviro Mirko (v1.42)                   7/12/99
Code compacted to reduce TSR memory (only 704 bytes). The message 'Warning:
may cause snow' was removed (obsolete).

Changes by Elviro Mirko (v1.50)                   9/15/99
Implemented read char/attr function (08h). Many parts totally rewritten
and optimized. Variables reorganized. Increased TTY output speed.
Added multiple pages support. Added routines for line-feed (0Ah),
carriage return (0Dh), backspace (08h) and video scrolling. Added /N
switch to install ZENO even if it's already installed in memory. This
function works in quiet mode. ZENO v1.50 has partial support for
80x43, 80x50 and 80x60 text modes (only page 0). Added support for
modes 82h and 83h (AT&T VDC overlay modes, color and B/W) used by Windows.
(to contact me, please write to beast2@freemail.it)

Changes by Elviro Mirko (v1.51)                   3/31/2000
Reduced TSR memory (from 1072 to 1040 bytes). Removed /N option (useless).
A little bug corrected (bad-written programs which write beyond the 25th
line of the screen could change the char attribute, now it's much more
difficult). Now test utilities (TEST09.EXE, TEST0A.EXE and TESTTTY.EXE)
should work with fast machines (P200 and over).

Changes by Elviro Mirko (v1.6)                    4/28/2000
TTY output increased. Now Zeno works only on 386+ machines.

Changes by Elviro Mirko (v1.62)                    5/2/2000
Write char+attr (09h) output increased. Added a new test program (VTEST.EXE).

Changes by Elviro Mirko (v1.63)                    5/6/2000
Corrected a little bug introduced in v1.62. Added clear screen speed-up
routine (06h). Thanks to Javier Gutirrez Chamorro for some code optimization.
Updated VTEST.EXE (v1.01).

Changes by Elviro Mirko (v1.7)                     5/9/2000
Optimized scrolling routine. Now Zeno may be loaded in CONFIG.SYS with the
command DEVICEHIGH=zeno17.exe /q. In this way required memory is only
864 bytes. Zeno v1.7 can't be uninstalled from memory (who wants anyway?:). 
General code optimization (thanks to Javier Gutirrez Chamorro). General
speed-up of all routines.

Changes by Elviro Mirko (v1.71).                  5/14/2000
Optimized code. Speeded-up video mode check (different method).

Changes by Elviro Mirko (v1.72).                  5/15/2000
Added 386+ CPU checking to avoid system crashes in 8086 and 80286 machines.
Re-enabled 'Invalid command line' error message, erroneously removed in Zeno
v1.7 and v1.71. Corrected a bug (Zeno could be installed more than
once in memory if current video mode was different from 03h,83h,02h,82h,07h).

Changes by Elviro Mirko (v1.73).                  5/19/2000
Added full support for 80x43 and 80x50 modes (4 pages) - if a program crashes
in a page different from 0 , it's only due to the fact it was made to run
only on page 0 (it's not a Zeno bug! Try the same program with and without
Zeno!). Added speed up routine for scroll-up function (06h) - output is a
lot faster. A bug corrected (sometimes the high part of EAX register was
overwritten by Zeno). Updated VTEST.EXE (v1.03).

Changes by Elviro Mirko (v1.74).                  5/22/2000
Fixed a bug: when out-of-screen coordinates were passed to Zeno using
function 06h it drew nothing, now it sets coords to the max and draws the
window. Fixed a bug: now char attribute is obtained using the same method
of the BIOS (and now 80x50 page 3 works perfectly). Scroll-up routine
optimized.



BENCHMARKS (see BENCH.TXT for a more complete speed test)

Times are expressed in hundredths of second. TTY test prints 131072
chars on screen, other two tests print 30 Million (!!!) chars.
Tests were run in real DOS (not in DOS shell!) on a P133 with SiS6202.
Test programs (TEST09.EXE, TEST0A.EXE and TESTTTY.EXE) are included in the
package and are written by Elviro Mirko

                    ZENO ZENO ZENO VGASPEEDZENO   ZENO  THEFAST BIOS 
                    v1.74v1.63v1.6  v1.0(*)v1.50v1.3(**) v1.06 INTERR
TTY output (0Eh)     324  335  335    406   417    439    961    939 
Write char+attr(09h) 488  483  543    543   543    587    582    615 
Write char (0Ah)     543  543  544    544   544   2576   2576   2604 

(*)  VGASPEED v1.0 had many bugs and crashed frequently due to the fact it
     didn't implement any type of check for video modes. Besides it didn't
     run correctly on newer computers (partial cursor update).
(**) ZENO v1.3 didn't run correctly on newer machines (same problem of
     VGASPEED v1.0); corrections were introduced in ZENO v1.42.

NOTE: Zeno may be used under Windows 95/98: to use it, simply add to
      your CONFIG.SYS the line

      DEVICEHIGH=C:\installdir\ZENO174.EXE /Q

      where "installdir" is the directory in which you copied Zeno v1.74.
      In this way Zeno will be invisibly loaded every time you turn
      on your computer, giving you an extra-fast output even under
      Windows 95/98.
      You can also load Zeno using AUTOEXEC.BAT, adding the line

      LH C:\installdir\ZENO174 /Q

      but with this method Zeno will require more memory.
      




