diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/src/std/bda.h seabios_mine/src/std/bda.h
--- seabios_apply_patches/src/std/bda.h	Wed Feb 27 07:32:19 2019
+++ seabios_mine/src/std/bda.h	Wed Feb 27 04:44:59 2019
@@ -51,6 +51,7 @@
     // 40:60
     u16 cursor_type;
     u8 video_page;
+    u8 video_pages;
     u16 crtc_address;
     u8 video_msr;
     u8 video_pal;
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/bochsvga.c seabios_mine/vgasrc/bochsvga.c
--- seabios_apply_patches/vgasrc/bochsvga.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/bochsvga.c	Wed Feb 27 04:40:08 2019
@@ -29,77 +29,77 @@
     struct vgamode_s info;
 } bochsvga_modes[] VAR16 = {
     /* standard modes */
-    { 0x100, { MM_PACKED, 640,  400,  8,  8, 16, SEG_GRAPH } },
-    { 0x101, { MM_PACKED, 640,  480,  8,  8, 16, SEG_GRAPH } },
-    { 0x102, { MM_PLANAR, 800,  600,  4,  8, 16, SEG_GRAPH } },
-    { 0x103, { MM_PACKED, 800,  600,  8,  8, 16, SEG_GRAPH } },
-    { 0x104, { MM_PLANAR, 1024, 768,  4,  8, 16, SEG_GRAPH } },
-    { 0x105, { MM_PACKED, 1024, 768,  8,  8, 16, SEG_GRAPH } },
-    { 0x106, { MM_PLANAR, 1280, 1024, 4,  8, 16, SEG_GRAPH } },
-    { 0x107, { MM_PACKED, 1280, 1024, 8,  8, 16, SEG_GRAPH } },
-    { 0x10D, { MM_DIRECT, 320,  200,  15, 8, 16, SEG_GRAPH } },
-    { 0x10E, { MM_DIRECT, 320,  200,  16, 8, 16, SEG_GRAPH } },
-    { 0x10F, { MM_DIRECT, 320,  200,  24, 8, 16, SEG_GRAPH } },
-    { 0x110, { MM_DIRECT, 640,  480,  15, 8, 16, SEG_GRAPH } },
-    { 0x111, { MM_DIRECT, 640,  480,  16, 8, 16, SEG_GRAPH } },
-    { 0x112, { MM_DIRECT, 640,  480,  24, 8, 16, SEG_GRAPH } },
-    { 0x113, { MM_DIRECT, 800,  600,  15, 8, 16, SEG_GRAPH } },
-    { 0x114, { MM_DIRECT, 800,  600,  16, 8, 16, SEG_GRAPH } },
-    { 0x115, { MM_DIRECT, 800,  600,  24, 8, 16, SEG_GRAPH } },
-    { 0x116, { MM_DIRECT, 1024, 768,  15, 8, 16, SEG_GRAPH } },
-    { 0x117, { MM_DIRECT, 1024, 768,  16, 8, 16, SEG_GRAPH } },
-    { 0x118, { MM_DIRECT, 1024, 768,  24, 8, 16, SEG_GRAPH } },
-    { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, SEG_GRAPH } },
-    { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, SEG_GRAPH } },
-    { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, SEG_GRAPH } },
-    { 0x11C, { MM_PACKED, 1600, 1200, 8,  8, 16, SEG_GRAPH } },
-    { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
-    { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
-    { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
+    { 0x100, { MM_PACKED, 640,  400,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x101, { MM_PACKED, 640,  480,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x102, { MM_PLANAR, 800,  600,  4,  8, 16, 8, SEG_GRAPH } },
+    { 0x103, { MM_PACKED, 800,  600,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x104, { MM_PLANAR, 1024, 768,  4,  8, 16, 8, SEG_GRAPH } },
+    { 0x105, { MM_PACKED, 1024, 768,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x106, { MM_PLANAR, 1280, 1024, 4,  8, 16, 8, SEG_GRAPH } },
+    { 0x107, { MM_PACKED, 1280, 1024, 8,  8, 16, 8, SEG_GRAPH } },
+    { 0x10D, { MM_DIRECT, 320,  200,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x10E, { MM_DIRECT, 320,  200,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x10F, { MM_DIRECT, 320,  200,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x110, { MM_DIRECT, 640,  480,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x111, { MM_DIRECT, 640,  480,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x112, { MM_DIRECT, 640,  480,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x113, { MM_DIRECT, 800,  600,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x114, { MM_DIRECT, 800,  600,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x115, { MM_DIRECT, 800,  600,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x116, { MM_DIRECT, 1024, 768,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x117, { MM_DIRECT, 1024, 768,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x118, { MM_DIRECT, 1024, 768,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, 8, SEG_GRAPH } },
+    { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x11C, { MM_PACKED, 1600, 1200, 8,  8, 16, 8, SEG_GRAPH } },
+    { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, 8, SEG_GRAPH } },
+    { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, 8, SEG_GRAPH } },
     /* BOCHS modes */
-    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, SEG_GRAPH } },
-    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
-    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
-    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
-    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
-    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
-    { 0x146, { MM_PACKED, 320,  200,  8,  8, 16, SEG_GRAPH } },
-    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
-    { 0x148, { MM_PACKED, 1152, 864,  8,  8, 16, SEG_GRAPH } },
-    { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, SEG_GRAPH } },
-    { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, SEG_GRAPH } },
-    { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, SEG_GRAPH } },
-    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
-    { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, SEG_GRAPH } },
-    { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, SEG_GRAPH } },
-    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
-    { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, SEG_GRAPH } },
-    { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, SEG_GRAPH } },
-    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
-    { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, SEG_GRAPH } },
-    { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, SEG_GRAPH } },
-    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
-    { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, SEG_GRAPH } },
-    { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, SEG_GRAPH } },
-    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
-    { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
-    { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
-    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
-    { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
-    { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
-    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
-    { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
-    { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
-    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
-    { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
-    { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
-    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
-    { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, SEG_GRAPH } },
-    { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, SEG_GRAPH } },
-    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
-    { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
-    { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
-    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
+    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x146, { MM_PACKED, 320,  200,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x148, { MM_PACKED, 1152, 864,  8,  8, 16, 8, SEG_GRAPH } },
+    { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, 8, SEG_GRAPH } },
 };
 
 static int dispi_found VAR16 = 0;
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/cbvga.c seabios_mine/vgasrc/cbvga.c
--- seabios_apply_patches/vgasrc/cbvga.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/cbvga.c	Wed Feb 27 07:44:46 2019
@@ -25,62 +25,62 @@
     struct vgamode_s info;
 } cbvesa_modes[] VAR16 = {
     /* VESA 1.0 modes */
-    { 0x110, { MM_DIRECT, 640,  480,  15, 8, 16, SEG_GRAPH } },
-    { 0x111, { MM_DIRECT, 640,  480,  16, 8, 16, SEG_GRAPH } },
-    { 0x112, { MM_DIRECT, 640,  480,  24, 8, 16, SEG_GRAPH } },
-    { 0x113, { MM_DIRECT, 800,  600,  15, 8, 16, SEG_GRAPH } },
-    { 0x114, { MM_DIRECT, 800,  600,  16, 8, 16, SEG_GRAPH } },
-    { 0x115, { MM_DIRECT, 800,  600,  24, 8, 16, SEG_GRAPH } },
-    { 0x116, { MM_DIRECT, 1024, 768,  15, 8, 16, SEG_GRAPH } },
-    { 0x117, { MM_DIRECT, 1024, 768,  16, 8, 16, SEG_GRAPH } },
-    { 0x118, { MM_DIRECT, 1024, 768,  24, 8, 16, SEG_GRAPH } },
-    { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, SEG_GRAPH } },
-    { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, SEG_GRAPH } },
-    { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, SEG_GRAPH } },
-    { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
-    { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
-    { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
+    { 0x110, { MM_DIRECT, 640,  480,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x111, { MM_DIRECT, 640,  480,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x112, { MM_DIRECT, 640,  480,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x113, { MM_DIRECT, 800,  600,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x114, { MM_DIRECT, 800,  600,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x115, { MM_DIRECT, 800,  600,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x116, { MM_DIRECT, 1024, 768,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x117, { MM_DIRECT, 1024, 768,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x118, { MM_DIRECT, 1024, 768,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, 8, SEG_GRAPH } },
+    { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, 8, SEG_GRAPH } },
+    { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, 8, SEG_GRAPH } },
     /* VESA 2.0 modes */
-    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
-    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
-    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
-    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
-    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
-    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
-    { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, SEG_GRAPH } },
-    { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, SEG_GRAPH } },
-    { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, SEG_GRAPH } },
-    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
-    { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, SEG_GRAPH } },
-    { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, SEG_GRAPH } },
-    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
-    { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, SEG_GRAPH } },
-    { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, SEG_GRAPH } },
-    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
-    { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, SEG_GRAPH } },
-    { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, SEG_GRAPH } },
-    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
-    { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, SEG_GRAPH } },
-    { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, SEG_GRAPH } },
-    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
-    { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
-    { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
-    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
-    { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
-    { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
-    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
-    { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
-    { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
-    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
-    { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
-    { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
-    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
-    { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, SEG_GRAPH } },
-    { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, SEG_GRAPH } },
-    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
-    { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
-    { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
-    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
+    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, 8, SEG_GRAPH } },
+    { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, 8, SEG_GRAPH } },
+    { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, 8, SEG_GRAPH } },
+    { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, 8, SEG_GRAPH } },
+    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, 8, SEG_GRAPH } },
+    { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, 8, SEG_GRAPH } },
+    { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, 8, SEG_GRAPH } },
+    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, 8, SEG_GRAPH } },
 };
 
 struct vgamode_s *cbvga_find_mode(int mode)
@@ -208,7 +208,7 @@
         }
         if (extra_stack || flags & MF_LEGACY) {
             struct gfx_op op;
-            init_gfx_op(&op, &CBmodeinfo);
+            init_gfx_op(&op, GET_BDA(video_page), &CBmodeinfo);
             op.x = op.y = 0;
             op.xlen = GET_GLOBAL(CBmodeinfo.width);
             op.ylen = GET_GLOBAL(CBmodeinfo.height);
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/clext.c seabios_mine/vgasrc/clext.c
--- seabios_apply_patches/vgasrc/clext.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/clext.c	Wed Feb 27 04:41:22 2019
@@ -227,42 +227,42 @@
 };
 
 static struct cirrus_mode_s cirrus_modes[] VAR16 = {
-    {0x5f,0x101,{MM_PACKED,640,480,8,8,16,SEG_GRAPH},0x00,
+    {0x5f,0x101,{MM_PACKED,640,480,8,8,16,8,SEG_GRAPH},0x00,
      cseq_640x480x8,cgraph_svgacolor,ccrtc_640x480x8},
-    {0x64,0x111,{MM_DIRECT,640,480,16,8,16,SEG_GRAPH},0xe1,
+    {0x64,0x111,{MM_DIRECT,640,480,16,8,16,8,SEG_GRAPH},0xe1,
      cseq_640x480x16,cgraph_svgacolor,ccrtc_640x480x16},
-    {0x66,0x110,{MM_DIRECT,640,480,15,8,16,SEG_GRAPH},0xf0,
+    {0x66,0x110,{MM_DIRECT,640,480,15,8,16,8,SEG_GRAPH},0xf0,
      cseq_640x480x16,cgraph_svgacolor,ccrtc_640x480x16},
-    {0x71,0x112,{MM_DIRECT,640,480,24,8,16,SEG_GRAPH},0xe5,
+    {0x71,0x112,{MM_DIRECT,640,480,24,8,16,8,SEG_GRAPH},0xe5,
      cseq_640x480x24,cgraph_svgacolor,ccrtc_640x480x24},
 
-    {0x5c,0x103,{MM_PACKED,800,600,8,8,16,SEG_GRAPH},0x00,
+    {0x5c,0x103,{MM_PACKED,800,600,8,8,16,8,SEG_GRAPH},0x00,
      cseq_800x600x8,cgraph_svgacolor,ccrtc_800x600x8},
-    {0x65,0x114,{MM_DIRECT,800,600,16,8,16,SEG_GRAPH},0xe1,
+    {0x65,0x114,{MM_DIRECT,800,600,16,8,16,8,SEG_GRAPH},0xe1,
      cseq_800x600x16,cgraph_svgacolor,ccrtc_800x600x16},
-    {0x67,0x113,{MM_DIRECT,800,600,15,8,16,SEG_GRAPH},0xf0,
+    {0x67,0x113,{MM_DIRECT,800,600,15,8,16,8,SEG_GRAPH},0xf0,
      cseq_800x600x16,cgraph_svgacolor,ccrtc_800x600x16},
 
-    {0x60,0x105,{MM_PACKED,1024,768,8,8,16,SEG_GRAPH},0x00,
+    {0x60,0x105,{MM_PACKED,1024,768,8,8,16,8,SEG_GRAPH},0x00,
      cseq_1024x768x8,cgraph_svgacolor,ccrtc_1024x768x8},
-    {0x74,0x117,{MM_DIRECT,1024,768,16,8,16,SEG_GRAPH},0xe1,
+    {0x74,0x117,{MM_DIRECT,1024,768,16,8,16,8,SEG_GRAPH},0xe1,
      cseq_1024x768x16,cgraph_svgacolor,ccrtc_1024x768x16},
-    {0x68,0x116,{MM_DIRECT,1024,768,15,8,16,SEG_GRAPH},0xf0,
+    {0x68,0x116,{MM_DIRECT,1024,768,15,8,16,8,SEG_GRAPH},0xf0,
      cseq_1024x768x16,cgraph_svgacolor,ccrtc_1024x768x16},
 
-    {0x78,0x115,{MM_DIRECT,800,600,24,8,16,SEG_GRAPH},0xe5,
+    {0x78,0x115,{MM_DIRECT,800,600,24,8,16,8,SEG_GRAPH},0xe5,
      cseq_800x600x24,cgraph_svgacolor,ccrtc_800x600x24},
-    {0x79,0x118,{MM_DIRECT,1024,768,24,8,16,SEG_GRAPH},0xe5,
+    {0x79,0x118,{MM_DIRECT,1024,768,24,8,16,8,SEG_GRAPH},0xe5,
      cseq_1024x768x24,cgraph_svgacolor,ccrtc_1024x768x24},
 
-    {0x6d,0x107,{MM_PACKED,1280,1024,8,8,16,SEG_GRAPH},0x00,
+    {0x6d,0x107,{MM_PACKED,1280,1024,8,8,16,8,SEG_GRAPH},0x00,
      cseq_1280x1024x8,cgraph_svgacolor,ccrtc_1280x1024x8},
-    {0x69,0x119,{MM_DIRECT,1280,1024,15,8,16,SEG_GRAPH},0xf0,
+    {0x69,0x119,{MM_DIRECT,1280,1024,15,8,16,8,SEG_GRAPH},0xf0,
      cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16},
-    {0x75,0x11a,{MM_DIRECT,1280,1024,16,8,16,SEG_GRAPH},0xe1,
+    {0x75,0x11a,{MM_DIRECT,1280,1024,16,8,16,8,SEG_GRAPH},0xe1,
      cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16},
 
-    {0x7b,0xffff,{MM_PACKED,1600,1200,8,8,16,SEG_GRAPH},0x00,
+    {0x7b,0xffff,{MM_PACKED,1600,1200,8,8,16,8,SEG_GRAPH},0x00,
      cseq_1600x1200x8,cgraph_svgacolor,ccrtc_1600x1200x8},
 };
 
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/stdvgamodes.c seabios_mine/vgasrc/stdvgamodes.c
--- seabios_apply_patches/vgasrc/stdvgamodes.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/stdvgamodes.c	Wed Feb 27 04:56:27 2019
@@ -276,37 +276,37 @@
 static struct stdvga_mode_s vga_modes[] VAR16 = {
     //mode { model       tx   ty bpp cw ch  sstart    }
     // pelm  dac            sequ     misc  crtc     actl     grdc
-    {0x00, { MM_TEXT,    40,  25, 4, 9, 16, SEG_CTEXT }
+    {0x00, { MM_TEXT,    40,  25, 4, 9, 16, 8, SEG_CTEXT }
      , 0xFF, PAL(palette2), sequ_01, 0x67, crtc_01, actl_01, grdc_01},
-    {0x01, { MM_TEXT,    40,  25, 4, 9, 16, SEG_CTEXT }
+    {0x01, { MM_TEXT,    40,  25, 4, 9, 16, 8, SEG_CTEXT }
      , 0xFF, PAL(palette2), sequ_01, 0x67, crtc_01, actl_01, grdc_01},
-    {0x02, { MM_TEXT,    80,  25, 4, 9, 16, SEG_CTEXT }
+    {0x02, { MM_TEXT,    80,  25, 4, 9, 16, 8, SEG_CTEXT }
      , 0xFF, PAL(palette2), sequ_03, 0x67, crtc_03, actl_01, grdc_01},
-    {0x03, { MM_TEXT,    80,  25, 4, 9, 16, SEG_CTEXT }
+    {0x03, { MM_TEXT,    80,  25, 4, 9, 16, 8, SEG_CTEXT }
      , 0xFF, PAL(palette2), sequ_03, 0x67, crtc_03, actl_01, grdc_01},
-    {0x04, { MM_CGA,    320, 200, 2, 8,  8, SEG_CTEXT }
+    {0x04, { MM_CGA,    320, 200, 2, 8,  8, 8, SEG_CTEXT }
      , 0xFF, PAL(palette1), sequ_04, 0x63, crtc_04, actl_04, grdc_04},
-    {0x05, { MM_CGA,    320, 200, 2, 8,  8, SEG_CTEXT }
+    {0x05, { MM_CGA,    320, 200, 2, 8,  8, 8, SEG_CTEXT }
      , 0xFF, PAL(palette1), sequ_04, 0x63, crtc_04, actl_04, grdc_04},
-    {0x06, { MM_CGA,    640, 200, 1, 8,  8, SEG_CTEXT }
+    {0x06, { MM_CGA,    640, 200, 1, 8,  8, 8, SEG_CTEXT }
      , 0xFF, PAL(palette1), sequ_06, 0x63, crtc_06, actl_06, grdc_06},
-    {0x07, { MM_TEXT,    80,  25, 4, 9, 16, SEG_MTEXT }
+    {0x07, { MM_TEXT,    80,  25, 4, 9, 16, 8, SEG_MTEXT }
      , 0xFF, PAL(palette0), sequ_03, 0x66, crtc_07, actl_07, grdc_07},
-    {0x0D, { MM_PLANAR, 320, 200, 4, 8,  8, SEG_GRAPH }
+    {0x0D, { MM_PLANAR, 320, 200, 4, 8,  8, 8, SEG_GRAPH }
      , 0xFF, PAL(palette1), sequ_0d, 0x63, crtc_0d, actl_0d, grdc_0d},
-    {0x0E, { MM_PLANAR, 640, 200, 4, 8,  8, SEG_GRAPH }
+    {0x0E, { MM_PLANAR, 640, 200, 4, 8,  8, 4, SEG_GRAPH }
      , 0xFF, PAL(palette1), sequ_0e, 0x63, crtc_0e, actl_0d, grdc_0d},
-    {0x0F, { MM_PLANAR, 640, 350, 1, 8, 14, SEG_GRAPH }
+    {0x0F, { MM_PLANAR, 640, 350, 1, 8, 14, 4, SEG_GRAPH }
      , 0xFF, PAL(palette0), sequ_0e, 0xa3, crtc_0f, actl_0f, grdc_0d},
-    {0x10, { MM_PLANAR, 640, 350, 4, 8, 14, SEG_GRAPH }
+    {0x10, { MM_PLANAR, 640, 350, 4, 8, 14, 8, SEG_GRAPH }
      , 0xFF, PAL(palette2), sequ_0e, 0xa3, crtc_0f, actl_10, grdc_0d},
-    {0x11, { MM_PLANAR, 640, 480, 1, 8, 16, SEG_GRAPH }
+    {0x11, { MM_PLANAR, 640, 480, 1, 8, 16, 8, SEG_GRAPH }
      , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_11, actl_11, grdc_0d},
-    {0x12, { MM_PLANAR, 640, 480, 4, 8, 16, SEG_GRAPH }
+    {0x12, { MM_PLANAR, 640, 480, 4, 8, 16, 8, SEG_GRAPH }
      , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_11, actl_10, grdc_0d},
-    {0x13, { MM_PACKED, 320, 200, 8, 8,  8, SEG_GRAPH }
+    {0x13, { MM_PACKED, 320, 200, 8, 8,  8, 8, SEG_GRAPH }
      , 0xFF, PAL(palette3), sequ_13, 0x63, crtc_13, actl_13, grdc_13},
-    {0x6A, { MM_PLANAR, 800, 600, 4, 8, 16, SEG_GRAPH }
+    {0x6A, { MM_PLANAR, 800, 600, 4, 8, 16, 8, SEG_GRAPH }
      , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_6A, actl_10, grdc_0d},
 };
 
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/swcursor.c seabios_mine/vgasrc/swcursor.c
--- seabios_apply_patches/vgasrc/swcursor.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/swcursor.c	Wed Feb 27 04:02:13 2019
@@ -17,7 +17,7 @@
     u16 cursor_type = get_cursor_shape();
     u8 start = cursor_type >> 8, end = cursor_type & 0xff;
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, cp.page, vmode_g);
     op.x = cp.x * 8;
     int cheight = GET_BDA(char_height);
     op.y = cp.y * cheight + start;
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/vgabios.c seabios_mine/vgasrc/vgabios.c
--- seabios_apply_patches/vgasrc/vgabios.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/vgabios.c	Wed Feb 27 04:51:42 2019
@@ -84,9 +84,7 @@
 static void
 set_cursor_pos(struct cursorpos cp)
 {
-    if (cp.page > 7)
-        // Should not happen...
-        return;
+    cp.page %= GET_BDA(video_pages);
 
     if (cp.page == GET_BDA(video_page)) {
         // Update cursor in hardware
@@ -101,8 +99,7 @@
 struct cursorpos
 get_cursor_pos(u8 page)
 {
-    if (page > 7)
-        return (struct cursorpos) { 0, 0, 0 };
+    page %= GET_BDA(video_pages);
     u16 xy = GET_BDA(cursor_pos[page]);
     return (struct cursorpos) { xy, xy>>8, page };
 }
@@ -110,8 +107,7 @@
 static void
 set_active_page(u8 page)
 {
-    if (page > 7)
-        return;
+    page %= GET_BDA(video_pages);
 
     // Get the mode
     struct vgamode_s *vmode_g = get_current_mode();
@@ -308,6 +304,7 @@
         SET_BDA(cursor_pos[i], 0x0000);
     SET_BDA(video_pagestart, 0x0000);
     SET_BDA(video_page, 0x00);
+    SET_BDA(video_pages, GET_GLOBAL(vmode_g->pages));
 
     // Set the ints 0x1F and 0x43
     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
@@ -492,14 +489,14 @@
 handle_100c(struct bregs *regs)
 {
     // XXX - page (regs->bh) is unused
-    vgafb_write_pixel(regs->al, regs->cx, regs->dx);
+    vgafb_write_pixel(regs->al, regs->cx, regs->dx, regs->bh);
 }
 
 static void
 handle_100d(struct bregs *regs)
 {
     // XXX - page (regs->bh) is unused
-    regs->al = vgafb_read_pixel(regs->cx, regs->dx);
+    regs->al = vgafb_read_pixel(regs->cx, regs->dx, regs->bh);
 }
 
 static void noinline
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/vgabios.h seabios_mine/vgasrc/vgabios.h
--- seabios_apply_patches/vgasrc/vgabios.h	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/vgabios.h	Wed Feb 27 04:31:14 2019
@@ -39,6 +39,7 @@
     u8 depth;
     u8 cwidth;
     u8 cheight;
+    u8 pages;
     u16 sstart;
 };
 
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/vgafb.c seabios_mine/vgasrc/vgafb.c
--- seabios_apply_patches/vgasrc/vgafb.c	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/vgafb.c	Wed Feb 27 07:48:17 2019
@@ -51,7 +51,8 @@
 {
     if (!CONFIG_VGA_STDVGA_PORTS)
         return;
-    void *dest_far = (void*)(op->y * op->linelength + op->x / 8);
+    void *dest_far = (void*)(op->y * op->linelength + op->x / 8)
+        + op->displaystart;
     int plane;
     switch (op->op) {
     default:
@@ -99,7 +100,8 @@
 gfx_cga(struct gfx_op *op)
 {
     int bpp = GET_GLOBAL(op->vmode_g->depth);
-    void *dest_far = (void*)(op->y / 2 * op->linelength + op->x / 8 * bpp);
+    void *dest_far = (void*)(op->y / 2 * op->linelength + op->x / 8 * bpp)
+	+ op->displaystart;
     switch (op->op) {
     default:
     case GO_READ8:
@@ -160,7 +162,8 @@
 static void
 gfx_packed(struct gfx_op *op)
 {
-    void *dest_far = (void*)(op->y * op->linelength + op->x);
+    void *dest_far = (void*)(op->y * op->linelength + op->x)
+        + op->displaystart;
     switch (op->op) {
     default:
     case GO_READ8:
@@ -315,12 +318,19 @@
 
 // Prepare a struct gfx_op for use.
 void
-init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g)
+init_gfx_op(struct gfx_op *op, u8 page, struct vgamode_s *vmode_g)
 {
     memset(op, 0, sizeof(*op));
     op->vmode_g = vmode_g;
     op->linelength = vgahw_get_linelength(vmode_g);
-    op->displaystart = vgahw_get_displaystart(vmode_g);
+    struct cursorpos cp = {
+        .x = 0,
+        .y = 0,
+        .page = page,
+        .pad = 0
+     };
+
+     op->displaystart = (int) text_address (cp);
 }
 
 // Issue a graphics operation.
@@ -351,7 +361,7 @@
                , struct cursorpos movesize, int lines)
 {
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, GET_BDA(video_page), vmode_g);
     op.x = dest.x * 8;
     op.xlen = movesize.x * 8;
     int cheight = GET_BDA(char_height);
@@ -368,7 +378,7 @@
                 , struct cursorpos winsize, struct carattr ca)
 {
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, GET_BDA(video_page), vmode_g);
     op.x = win.x * 8;
     op.xlen = winsize.x * 8;
     int cheight = GET_BDA(char_height);
@@ -407,7 +417,7 @@
 
     struct segoff_s font = get_font_data(ca.car);
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, cp.page, vmode_g);
     op.x = cp.x * 8;
     int cheight = GET_BDA(char_height);
     op.y = cp.y * cheight;
@@ -460,7 +470,7 @@
 
     // Read cell from screen
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, cp.page, vmode_g);
     op.op = GO_READ8;
     op.x = cp.x * 8;
     op.y = cp.y * cheight;
@@ -501,14 +511,14 @@
 
 // Set the pixel at the given position.
 void
-vgafb_write_pixel(u8 color, u16 x, u16 y)
+vgafb_write_pixel(u8 color, u16 x, u16 y, u8 page)
 {
     struct vgamode_s *vmode_g = get_current_mode();
     if (!vmode_g)
         return;
 
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, page, vmode_g);
     op.x = ALIGN_DOWN(x, 8);
     op.y = y;
     op.op = GO_READ8;
@@ -525,14 +535,14 @@
 
 // Return the pixel at the given position.
 u8
-vgafb_read_pixel(u16 x, u16 y)
+vgafb_read_pixel(u16 x, u16 y, u8 page)
 {
     struct vgamode_s *vmode_g = get_current_mode();
     if (!vmode_g)
         return 0;
 
     struct gfx_op op;
-    init_gfx_op(&op, vmode_g);
+    init_gfx_op(&op, page, vmode_g);
     op.x = ALIGN_DOWN(x, 8);
     op.y = y;
     op.op = GO_READ8;
diff -Naur -x out -x .git -x __pycache__ -x .config* seabios_apply_patches/vgasrc/vgafb.h seabios_mine/vgasrc/vgafb.h
--- seabios_apply_patches/vgasrc/vgafb.h	Wed Feb 27 07:32:19 2019
+++ seabios_mine/vgasrc/vgafb.h	Wed Feb 27 04:36:12 2019
@@ -29,14 +29,15 @@
 };
 
 // vgafb.c
-void init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g);
+void init_gfx_op(struct gfx_op *op, u8 page, struct 
+	vgamode_s *vmode_g);
 void handle_gfx_op(struct gfx_op *op);
 void *text_address(struct cursorpos cp);
 void vgafb_scroll(struct cursorpos win, struct cursorpos winsize
                   , int lines, struct carattr ca);
 void vgafb_write_char(struct cursorpos cp, struct carattr ca);
 struct carattr vgafb_read_char(struct cursorpos cp);
-void vgafb_write_pixel(u8 color, u16 x, u16 y);
-u8 vgafb_read_pixel(u16 x, u16 y);
+void vgafb_write_pixel(u8 color, u16 x, u16 y, u8 page);
+u8 vgafb_read_pixel(u16 x, u16 y, u8 page);
 
 #endif // vgafb.h
