vgabios: Define video_save_pointer_table layout.
authorKevin O'Connor <kevin@koconnor.net>
Wed, 21 Dec 2011 14:05:32 +0000 (09:05 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Wed, 28 Dec 2011 02:39:29 +0000 (21:39 -0500)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
vgasrc/vga.c
vgasrc/vgatables.c
vgasrc/vgatables.h

index d1de5cceda91edf8efad78172703c52862174a7d..ee107043efe558d7eea9723d38f92b42d67d7521 100644 (file)
@@ -420,7 +420,7 @@ vga_set_mode(u8 mode, u8 noclearmem)
     // FIXME We nearly have the good tables. to be reworked
     SET_BDA(dcc_index, 0x08);   // 8 is VGA should be ok for now
     SET_BDA(video_savetable
-            , SEGOFF(get_global_seg(), (u32)video_save_pointer_table));
+            , SEGOFF(get_global_seg(), (u32)&video_save_pointer_table));
 
     // FIXME
     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
@@ -1586,8 +1586,8 @@ vga_post(struct bregs *regs)
     // XXX - clear screen and display info
 
     // XXX: fill it
-    SET_VGA(video_save_pointer_table[0], (u32)video_param_table);
-    SET_VGA(video_save_pointer_table[1], get_global_seg());
+    SET_VGA(video_save_pointer_table.videoparam
+            , SEGOFF(get_global_seg(), (u32)video_param_table));
 
     // Fixup checksum
     extern u8 _rom_header_size, _rom_header_checksum;
index 0587e651c613117ac8a753faf1657eca3ecf215c..17a6ca69b3e51912dcfe1b8ea20260af90fe8ac5 100644 (file)
@@ -13,6 +13,8 @@
  * Video parameter table
  ****************************************************************/
 
+struct VideoSavePointer_s video_save_pointer_table VAR16;
+
 struct VideoParam_s video_param_table[] VAR16 = {
     // index=0x00 no mode defined
     {},
@@ -414,8 +416,6 @@ find_vga_entry(u8 mode)
     return NULL;
 }
 
-u16 video_save_pointer_table[14] VAR16;
-
 
 /****************************************************************
  * Static functionality table
index d2fad8cdca14750636b003c6d9d8750fc8cf8caa..ef15b1d9c9b3d693b0f6d0434c8dc3ddda5f9214 100644 (file)
 #define SCREEN_IO_START(x,y,p) (((((x)*(y)) | 0x00ff) + 1) * (p))
 #define SCREEN_MEM_START(x,y,p) SCREEN_IO_START(((x)*2),(y),(p))
 
+// Standard Video Save Pointer Table
+struct VideoSavePointer_s {
+    struct segoff_s videoparam;
+    struct segoff_s paramdynamicsave;
+    struct segoff_s textcharset;
+    struct segoff_s graphcharset;
+    struct segoff_s secsavepointer;
+    u8 reserved[8];
+} PACKED;
+
 /* standard BIOS Video Parameter Table */
 struct VideoParam_s {
     u8 twidth;
@@ -138,7 +148,7 @@ struct saveDACcolors {
 
 // vgatables.c
 struct vgamode_s *find_vga_entry(u8 mode);
-extern u16 video_save_pointer_table[];
+extern struct VideoSavePointer_s video_save_pointer_table;
 extern struct VideoParam_s video_param_table[];
 extern u8 static_functionality[];