[net.micro] Screen savers on a Zenith 151 PC

iglesias@uci-icsa.ARPA (Mike Iglesias) (03/21/85)

Some people here at UCI have Zenith 151 PCs and have tried running
screen saver programs.  They report that they don't work;  the screen
is never turned off.  I seem to remember something about this on
either info-ibmpc or info-micro.  Can someone enlighten us as
to what changes need to be made to the screen saver programs to make
them work on a Zenith?  Thanks.

Mike Iglesias
University of California, Irvine
iglesias@uci-icsa.arpa

tweten@AMES-NAS.ARPA (Dave Tweten) (03/21/85)

From: Mike Iglesias <iglesias@uci-icsa.ARPA>

	Some people here at UCI have Zenith 151 PCs and have tried
	running screen saver programs.  They report that they don't
	work;  the screen is never turned off.  I seem to remember
	something about this on either info-ibmpc or info-micro.  Can
	someone enlighten us as to what changes need to be made to the
	screen saver programs to make them work on a Zenith?  Thanks.

Funny I should get your message just this evening, while I'm trying to
make BLANK2 (from the PC World *.* column) work on my Z-151.  I'll tell
you what I know so far.

To prevent the famous IBM "blinking scroll", Zenith's color video board
has another "write-only" control register at I/O address 3DA, in
addition to IBM's register at 3D8.  Bit 3 of the IBM register is used
by screen saver programs to blank the video output.  It is also used by
the software "blinking scroll".  Zenith's 3DA register bit 0 overrides
3D8, bit 3.  To quote the Zenith board's service manual, "A logical 1
overrides the VIDEO ENABLE signal from 3D8; will eliminate display
flicker when in text mode".

Unfortunately, will also eliminate effectiveness of screen blankers
which depend upon 3D8, bit 3.  My current kludge is to write a 0 to 3DA
whenever a zero bit 3 is written to 3D8, and to write a 1 to 3DA when
3D8 bit 3 is set.  This works, but . . .

Zenith's register at 3DA also contains more useful mode setting bits,
covering such things as the font to use, and the scrolling mode to
use.  Since it is write-only, you can't just read its contents and
write it back with bit 0 changed.  The same problem with 3D8 was solved
by IBM by having PC-DOS store what it thought was in 3D8 at memory
address 0040:0065 as well.  BLANK2 uses the contents of 0040:0065 as its
starting value when setting or reseting bit 3.

Where does Zenith store the contents of 3DA?

I've looked in their "Programmer's Utility Pack" document, in the BIOS
source files that come with it, in their "Programmer's Reference
Manual", and even in the "Service Module" documentation for both the
Z-309 video board and the Z-309A board (they made two versions, early
and late).  Nothing.

I'm currently trying to find a system call which will set one of the
other bits in the register at 3DA.  My plan is to code a small MASM
program which makes the call, and use a debugger which claims to be
able to step through ROM code to find where (or maybe if) the ROM code
stores 3DA's value into memory.

In the mean time, the kludge I mentioned above works, so long as the
rest of the bits in 3DA are all zero, which seems to be the default.
If anybody knows anything more about it than this, I'm ALL ears!