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 -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org