I attach the final patch.
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
_______________________________________________
SeaBIOS mailing list -- [email protected]
To unsubscribe send an email to [email protected]