VGA: Make use of regs->ebp - now that it is present in 'struct bregs'.
[seabios.git] / vgasrc / vga.c
index b94f9f9306d9e852b300ead7039234f6eb6c32b5..d7a5366da994be1d2d0e3b81c9776d33286e516f 100644 (file)
@@ -235,10 +235,9 @@ biosfn_set_video_mode(u8 mode)
     if (CONFIG_CIRRUS)
         cirrus_set_video_mode(mode);
 
-#ifdef VBE
-    if (vbe_has_vbe_display())
-        dispi_set_enable(VBE_DISPI_DISABLED);
-#endif
+    if (CONFIG_VBE)
+        if (vbe_has_vbe_display())
+            dispi_set_enable(VBE_DISPI_DISABLED);
 
     // The real mode
     u8 noclearmem = mode & 0x80;
@@ -798,8 +797,7 @@ biosfn_write_char_attr(u8 car, u8 page, u8 attr, u16 count)
         switch (GET_GLOBAL(vmode_g->memmodel)) {
         case PLANAR4:
         case PLANAR1:
-            write_gfx_char_pl4(car, attr, xcurs, ycurs, nbcols,
-                               cheight);
+            write_gfx_char_pl4(car, attr, xcurs, ycurs, nbcols, cheight);
             break;
         case CGA:
             write_gfx_char_cga(car, attr, xcurs, ycurs, nbcols, bpp);
@@ -849,8 +847,7 @@ biosfn_write_char_only(u8 car, u8 page, u8 attr, u16 count)
         switch (GET_GLOBAL(vmode_g->memmodel)) {
         case PLANAR4:
         case PLANAR1:
-            write_gfx_char_pl4(car, attr, xcurs, ycurs, nbcols,
-                               cheight);
+            write_gfx_char_pl4(car, attr, xcurs, ycurs, nbcols, cheight);
             break;
         case CGA:
             write_gfx_char_cga(car, attr, xcurs, ycurs, nbcols, bpp);
@@ -1762,14 +1759,10 @@ biosfn_save_video_state(u16 CX, u16 ES, u16 BX)
         SET_FARVAR(ES, *(u8*)(BX+0), GET_BDA(video_page));
         BX++;
         /* current font */
-        SET_FARVAR(ES, *(u16*)(BX+0), GET_FARVAR(0, *(u16*)(0x1f * 4)));
-        BX += 2;
-        SET_FARVAR(ES, *(u16*)(BX+0), GET_FARVAR(0, *(u16*)(0x1f * 4 + 2)));
-        BX += 2;
-        SET_FARVAR(ES, *(u16*)(BX+0), GET_FARVAR(0, *(u16*)(0x43 * 4)));
-        BX += 2;
-        SET_FARVAR(ES, *(u16*)(BX+0), GET_FARVAR(0, *(u16*)(0x43 * 4 + 2)));
-        BX += 2;
+        SET_FARVAR(ES, *(u32*)(BX+0), GET_IVT(0x1f).segoff);
+        BX += 4;
+        SET_FARVAR(ES, *(u32*)(BX+0), GET_IVT(0x43).segoff);
+        BX += 4;
     }
     if (CX & 4) {
         /* XXX: check this */
@@ -2223,7 +2216,7 @@ static void
 handle_101100(struct bregs *regs)
 {
     // XXX - inline
-    biosfn_load_text_user_pat(regs->al, regs->es, 0 // XXX - regs->bp
+    biosfn_load_text_user_pat(regs->al, regs->es, regs->bp
                               , regs->cx, regs->dx, regs->bl, regs->bh);
 }
 
@@ -2283,7 +2276,7 @@ static void
 handle_101130(struct bregs *regs)
 {
     // XXX - inline
-    biosfn_get_font_info(regs->bh, &regs->es, 0 // &regs->bp
+    biosfn_get_font_info(regs->bh, &regs->es, &regs->bp
                          , &regs->cx, &regs->dx);
 }
 
@@ -2398,7 +2391,7 @@ handle_1013(struct bregs *regs)
 {
     // XXX - inline
     biosfn_write_string(regs->al, regs->bh, regs->bl, regs->cx
-                        , regs->dh, regs->dl, regs->es, 0); // regs->bp);
+                        , regs->dh, regs->dl, regs->es, (void*)(regs->bp + 0));
 }
 
 
@@ -2558,13 +2551,11 @@ handle_104fXX(struct bregs *regs)
 static void
 handle_104f(struct bregs *regs)
 {
-    if (! CONFIG_VBE) {
+    if (! CONFIG_VBE || !vbe_has_vbe_display()) {
         handle_104fXX(regs);
         return;
     }
 
-    // XXX - check vbe_has_vbe_display()?
-
     switch (regs->al) {
     case 0x00: handle_104f00(regs); break;
     case 0x01: handle_104f01(regs); break;
@@ -2671,7 +2662,8 @@ vga_post(struct bregs *regs)
 
     init_bios_area();
 
-    // vbe_init();
+    if (CONFIG_VBE)
+        vbe_init();
 
     extern void entry_10(void);
     SET_IVT(0x10, get_global_seg(), (u32)entry_10);