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!