Contents of the ZENO.DOC file
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
Important: Do not change back and forth between monochrome and color displays
while ZENO is installed. Users of monochrome graphics boards: this includes
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.
(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 current 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
Changes by Glenn K. Smith CompuServe 70357,1136 12/14/88
ZENO 1.3 was just what the doctor ordered! ZENO 2.0 is basically the same as
the previous versions, however, this one has the ability to do snow checking.
I managed to get around the problem of snow by using some nifty code to put
characters on the CGA screen. The only cost in performance was a loss in
speed. ZENO 2.0 runs around 2.5 times slower with snow checking on than
without. This means that ZENOTEST on my computer went from 28 seconds to 67
seconds. Its still faster than the 147 seconds that ZENOTEST records without
ZENO being installed.
I modified the program to handle a new switch (/S) for snow checking. I also
made a couple changes to the messages and to the NO ACTION message. It now
displays the valid switches.
I have labeled this version as 2.0 in order to distinguish it from the prior
versions. I have not seen any other versions later that ver. 1.3.
Changes by Glenn K. Smith CompuServe 70357,1136 01/15/89
Oops, I guess ZENO wasn't done. I had several complaints that PROCOMM+, Turbo
Pascal and a few other programs wouldn't work right when ZENO (any version) was
installed. This turned out to be a problem on their part, not with ZENO.
Those programs modified the bios cursor without going through ZENO. The kept
track of the cursor location internally and stored the result when they were
done. As a result, ZENO was unaware that anything had happened. The change
was minor, I just used the bios cursor position and re-calculated a new screen
offset everytime a character was placed on the screen. As a result, these
programs now work, however ZENOTEST now runs about 4 seconds slower.
Good News! A played with the snow checking code and was able to speed it up
quite a bit. ZENOTEST used to give me a reading of 66 seconds at 10 mhz. The
new code returns a value of 46 seconds. Not too bad. Only 12-13 seconds
slower than without snow checking.
I have labeled this version as 2.1 in order to distinguish it from the prior
versions. I have not seen any other versions later that ver. 2.0.
P.S. I've noticed that PROCOMM+ now runs quite a bit faster than it did before.
When you have snow checking enabled, the program called bios to place the
characters on the screen. Now ZENO does that. You'll still get snow if you
disable snow checking in PROCOMM+ or with ZENO.
ZENO 2.5 Changes made by Howard Flank Jan 19, 1989 301-570-0422
ZENO 2.1 did not work at all with my AMI 386SX BIOS. Large amounts of garbage
appeared on the screen. I traced the problems to the section of code for
subfunction AH=0Eh that recalculated the cursor position (apparantly for
compatibility with some ERSO BIOS's) after a call to the BIOS. This section
was rewritten to reacalc the cursor position on the next entry to ZENO. It was
also made optional with the /E switch. I also rewrote the command line scanner
to be more general code (after all, it isn't left resident). ZENO now accepts
accepts upper and lower case characters (converting lower to upper), switches
may be preceeded by slash, dash, or space, etc. I changed the /K ('Kill')
switch to the more standard /U ('UnInstall') switch. I also added /H switch to
display a help screen, this is also added to the 'Invalid Switch' message. All
of the messages were made 'prettier' (in my opinion anyway). I made large
sections of similar code into subroutines. The 'kill' code was changed to
'F0F0' to insure compatibility with TopView. The resident code is 200 bytes