vgabios: Move video_param_table definition to vgabios.c.
[seabios.git] / vgasrc / vgabios.c
index 84b112cb1483a075262c3bd8a6307ab7c0144caf..449f3c4085b23e04d45ddde8d0da0e6901ffcdb4 100644 (file)
 #define DEBUG_VGA_POST 1
 #define DEBUG_VGA_10 3
 
+// 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;
+
+static struct VideoSavePointer_s video_save_pointer_table VAR16;
+
+struct VideoParam_s video_param_table[29] VAR16;
+
 
 /****************************************************************
  * PCI Data
@@ -1010,6 +1024,22 @@ handle_101a(struct bregs *regs)
 }
 
 
+static u8 static_functionality[0x10] VAR16 = {
+ /* 0 */ 0xff,  // All modes supported #1
+ /* 1 */ 0xe0,  // All modes supported #2
+ /* 2 */ 0x0f,  // All modes supported #3
+ /* 3 */ 0x00, 0x00, 0x00, 0x00,  // reserved
+ /* 7 */ 0x07,  // 200, 350, 400 scan lines
+ /* 8 */ 0x02,  // mamimum number of visible charsets in text mode
+ /* 9 */ 0x08,  // total number of charset blocks in text mode
+ /* a */ 0xe7,  // Change to add new functions
+ /* b */ 0x0c,  // Change to add new functions
+ /* c */ 0x00,  // reserved
+ /* d */ 0x00,  // reserved
+ /* e */ 0x00,  // Change to add new functions
+ /* f */ 0x00   // reserved
+};
+
 struct funcInfo {
     struct segoff_s static_functionality;
     u8 bda_0x49[30];
@@ -1213,7 +1243,9 @@ vga_post(struct bregs *regs)
 
     init_bios_area();
 
-    build_video_param();
+    SET_VGA(video_save_pointer_table.videoparam
+            , SEGOFF(get_global_seg(), (u32)video_param_table));
+    stdvga_build_video_param();
 
     extern void entry_10(void);
     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));