Signed-off-by: Kevin O'Connor kevin@koconnor.net --- vgasrc/clext.c | 64 +++++++++---------------------------------------------- vgasrc/vbe.c | 21 ++++++++++++++++++ 2 files changed, 32 insertions(+), 53 deletions(-)
diff --git a/vgasrc/clext.c b/vgasrc/clext.c index 0640752..45fab80 100644 --- a/vgasrc/clext.c +++ b/vgasrc/clext.c @@ -315,6 +315,17 @@ is_cirrus_mode(struct vgamode_s *vmode_g) && vmode_g <= &cirrus_modes[ARRAY_SIZE(cirrus_modes)-1].info); }
+void +clext_list_modes(u16 seg, u16 *dest, u16 *last) +{ + int i; + for (i=0; i<ARRAY_SIZE(cirrus_vesa_modelist) && dest<last; i++) { + SET_FARVAR(seg, *dest, GET_GLOBAL(cirrus_vesa_modelist[i].vesamode)); + dest++; + } + stdvga_list_modes(seg, dest, last); +} + static u16 cirrus_vesamode_to_mode(u16 vesamode) { @@ -613,59 +624,6 @@ clext_1012(struct bregs *regs)
/**************************************************************** - * vesa calls - ****************************************************************/ - -void -clext_list_modes(u16 seg, u16 *dest, u16 *last) -{ - int i; - for (i=0; i<ARRAY_SIZE(cirrus_vesa_modelist) && dest<last; i++) { - SET_FARVAR(seg, *dest, GET_GLOBAL(cirrus_vesa_modelist[i].vesamode)); - dest++; - } - stdvga_list_modes(seg, dest, last); -} - -static void -cirrus_vesa_10h(struct bregs *regs) -{ - if (regs->bl == 0x00) { - regs->bx = 0x0f30; - regs->ax = 0x004f; - return; - } - if (regs->bl == 0x01) { - SET_BDA(vbe_flag, regs->bh); - regs->ax = 0x004f; - return; - } - if (regs->bl == 0x02) { - regs->bh = GET_BDA(vbe_flag); - regs->ax = 0x004f; - return; - } - regs->ax = 0x014f; -} - -static void -cirrus_vesa_not_handled(struct bregs *regs) -{ - debug_stub(regs); - regs->ax = 0x014f; -} - -void -cirrus_vesa(struct bregs *regs) -{ - switch (regs->al) { - case 0x10: cirrus_vesa_10h(regs); break; - default: cirrus_vesa_not_handled(regs); break; - } -} - - -/**************************************************************** * init ****************************************************************/
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c index 9e1fe1c..c1b03f0 100644 --- a/vgasrc/vbe.c +++ b/vgasrc/vbe.c @@ -321,6 +321,26 @@ vbe_104f0a(struct bregs *regs) }
static void +vbe_104f10(struct bregs *regs) +{ + switch (regs->bl) { + case 0x00: + regs->bx = 0x0f30; + break; + case 0x01: + SET_BDA(vbe_flag, regs->bh); + break; + case 0x02: + regs->bh = GET_BDA(vbe_flag); + break; + default: + regs->ax = 0x014f; + return; + } + regs->ax = 0x004f; +} + +static void vbe_104fXX(struct bregs *regs) { debug_stub(regs); @@ -346,6 +366,7 @@ handle_104f(struct bregs *regs) case 0x07: vbe_104f07(regs); break; case 0x08: vbe_104f08(regs); break; case 0x0a: vbe_104f0a(regs); break; + case 0x10: vbe_104f10(regs); break; default: vbe_104fXX(regs); break; } }