I've created a patch for XF86_VGA16, it runs X Windows (GNOME)... here is a 
screen shot of running GNOME under bochs for windows (not plex86)...
http://members.aol.com/suboner/Bochs4win_gmc.jpg

What you don't see is that its running Redhat linux 6.0, I did that by 
commenting out (at least 3) of keyboard.cc bx_panics. This patch does not 
cover these changes, but I would think that the patchs to vga.cc would also 
work for XWindows under redhat 5.2.

I realize you guys might not care about these changes because you are more 
concerned with getting Windows under Linux then Linux under Windows, but this 
is for a more accurate duplication of the VGA then anything else I would hope.

Basicly its timing changes for the vsync under diffrent clock selects.

Index: user/plugins/bochs/iodev/vga.cc
===================================================================
RCS file: /cvsroot-plex86/plex86/user/plugins/bochs/iodev/vga.cc,v
retrieving revision 1.5
diff -u -r1.5 vga.cc
--- user/plugins/bochs/iodev/vga.cc 2000/11/22 19:56:33 1.5
+++ user/plugins/bochs/iodev/vga.cc 2000/12/03 22:01:26
@@ -352,22 +352,41 @@
 
       //      bx_printf("horiz = %d, vert = %d\n", BX_VGA_THIS s.horiz_tick, 
BX_VGA_THIS s.vert_tick);
 
-      if (BX_VGA_THIS s.horiz_tick >= 100) { // ??? bogus # 100
-        BX_VGA_THIS s.horiz_tick = 0;
-        horiz_retrace = 1;
-        }
-      else {
-        BX_VGA_THIS s.horiz_tick++;
-        horiz_retrace = 0;
-        }
-      if (BX_VGA_THIS s.vert_tick >= 100) { // ??? bogus # 100
-        BX_VGA_THIS s.vert_tick = 0;
-        vert_retrace = 1;
-        }
-      else {
-        BX_VGA_THIS s.vert_tick++;
-        vert_retrace = 0;
-        }
+      if(BX_VGA_THIS s.misc_output.clock_select == 0){ // 25.175 clock 
112.5% the length of 28.32
+        if (BX_VGA_THIS s.horiz_tick >= 112) {
+          BX_VGA_THIS s.horiz_tick = 0;
+          horiz_retrace = 1;
+          }
+        else {
+          BX_VGA_THIS s.horiz_tick++;
+          horiz_retrace = 0;
+          }
+        if (BX_VGA_THIS s.vert_tick >= 112) {
+          BX_VGA_THIS s.vert_tick = 0;
+          vert_retrace = 1;
+          }
+        else {
+          BX_VGA_THIS s.vert_tick++;
+          vert_retrace = 0;
+          }
+      }else{ // clock_select 1 is assumed to be the 28.32 clock in XF86_VGA16
+        if (BX_VGA_THIS s.horiz_tick >= 100) { // ??? bogus # 100
+          BX_VGA_THIS s.horiz_tick = 0;
+          horiz_retrace = 1;
+          }
+        else {
+          BX_VGA_THIS s.horiz_tick++;
+          horiz_retrace = 0;
+          }
+        if (BX_VGA_THIS s.vert_tick >= 100) { // ??? bogus # 100
+          BX_VGA_THIS s.vert_tick = 0;
+          vert_retrace = 1;
+          }
+        else {
+          BX_VGA_THIS s.vert_tick++;
+          vert_retrace = 0;
+          }
+      } // probably add more clock modes here for diffrent resolutions
 
       retval = 0;
       if (horiz_retrace || vert_retrace)

Reply via email to