S3-805 cards with GENDAC enhanced BIOS

README for gendac.zip

The file gendac.zip is available from /incoming in ftp.nus.sg or in any one of a number of Singapore OS/2 BBSes (eg; Open Connection at (65)-4811345).

This document may be useful for those of you with S3-805 cards with GENDAC enhanced BIOS. I successfully got 1024 x 768 x 256 and 800 x 600 x 64k resolutions at 60 hz and 56 hz refresh rates respectively on an ordinary 14" SVGA monitor (MediaScan 3A). 64k colors looks better especially with AVI files. Jon Seymour (jon@zeta.org.au) emailed me the essence of the procedure. I have not tested the procedure for other SVGA modes but there is no reason why it should not work.

It appears that the call to pfnPMSetmonitorTimings in svgadata.pmi is at the root of the problems faced by GENDAC owners. Warp's SVGA.EXE creates a SVGADATA.PMI that uses this call. The solution is to get a 2.1 version of SVGA.EXE and create another SVGADATA.PMI. Warp's SVGADATA.PMI is then patched by commenting out the errant call and replacing it with corresponding lines from the older SVGADATA.PMI that does not make this call. The older version of SVGA.EXE was extracted from s3os232.zip (beta S3 drivers for OS/2 2.1) and is included with this document. Warp's SVGA is also included for completeness. They are named OSVGA.EXE and WSVGA.EXE respectively.

  1. Copy Warp's SVGA.EXE, the older SVGA.EXE and this document on a diskette or someplace accessible by DOS.
  2. By running "osvga on dos" and "wsvga on dos" from raw dos, you will create 2 versions of svgadata.dos, one for each version of svga.exe. You will have to rename these files so that the second version does not overwrite the first. If you want to be very careful, turn the monitor off after typing the command time and before pressing the Enter key. Wait for half a minute to be sure that the program is done before turning on the monitor.
  3. The editing is best done in split-window mode. Comment out (or delete) calls made to the pfnPMSetmonitortimings in Warp's version of svgadata.dos. Paste the corresponding lines of code from the older version of svgadata.dos. You need to make modifications only for those resolutions that you will be trying out.

    For example, here are the lines (for my card) for 1024 x 768 x 256

           
              rmwb(0x3d4, 0x3d5, 0x55, 0xfc, 0x01);
              outb(0x3c8, 0x02);
              r1    = 0x56;
              outb(0x3c9, r1);
              r1    = 0x45;
              outb(0x3c9, r1);
              rmwb(0x3d4, 0x3d5, 0x55, 0xfc, 0x00);
              r103 = 0x22; 
              boutb(1, 0x67, 0x3d4, 0x3d5);
    

    This code is very similar for other modes; seems to differ only on the r1, r1 and r103 assignments for the 2 modes I tested.

  4. Then you can install Warp or run selective install if you have already installed Warp. Choose the Video selection and most probably the install program will detect your card as an S3-805.
  5. At some point, it will ask about running some utility for setting monitor defaults. Choose the default settings and BEFORE saying OK, TURN OFF THE MONITOR.
  6. After hard disk activity has ceased, turn on the monitor and supply the program with your Windows diskettes. After this, you can actually go to the first page of the SYSTEM object and choose resolution and refresh rate that is supported by your monitor. This information is saved in a file called Video.cfg. Copy this file on a diskette or someplace for future reference. You can reset refresh rates in video.cfg.
  7. Shut down your computer and turn it off and take a deep breath. All the necessary SuperVga support for the S3 GENDAC has been installed properly. The only problem is that on your next reboot the WPS desktop will not be pretty as the SVGADATA.PMI makes these calls that GENDAC does not like.
  8. On the next boot of OS/2; Press Alt-F1 when the white rectangle appears on top left. Choose "C" for command line. Remember the SVGADATA.DOS that you patched. Rename it to SVGADATA.PMI and copy it to the OS2 directory over the buggy version.
  9. Press Alt-Ctrl-Del and everything should be ok (As long as you selected a refresh rate that your monitor can handle). If it seems your monitor is out of sync, edit video.cfg with a different rate. Although 60hz was fine for my monitor at 1024 x 768 x 256, it screwed up at 800 x 600 x 64k whereas 56hz worked fine.
Sriram

swknasri@nus.sg

Singapore OS/2 user group