Re: [SeaBIOS] [PATCH 04/15] Report stdvga modes in VBE via int10 (AX = 4F00h)
On Mon, Sep 03, 2012 at 06:59:32PM +0200, Christian Gmeiner wrote:
Am 03.09.2012 18:07 schrieb "Christian Gmeiner" <christian.gmeiner@gmail.com
:
2012/9/3 Kevin O'Connor <kevin@koconnor.net>:
On Sat, Sep 01, 2012 at 05:12:55PM +0200, Christian Gmeiner wrote:
As all supported graphic adapters are supporting VGA we should list them in int10 (AX = 4F00h). Also clext.c and bochsvga.c are haveing a function named like is_XXX_mode() which checks if its a default VGA mode or a VESA mode. If its a normal VGA mode stdvga_set_mode() gets called. [...] void stdvga_list_modes(u16 seg, u16 *dest, u16 *last) { + int i; + for (i = 0; i < ARRAY_SIZE(vga_modes); i++) { + struct stdvga_mode_s *stdmode_g = &vga_modes[i]; + u16 mode = GET_GLOBAL(stdmode_g->mode); + if (mode == 0xffff) + continue; + SET_FARVAR(seg, *dest, mode); + dest++; + } + SET_FARVAR(seg, *dest, 0xffff); }
This is a good idea. However, I don't think vbe_104f01() will correctly handle all the standard vga modes as it is coded today.
I will have a closer look at it during my following patches. If you want you can skip this patch.
Maybe it would be better to use this patch and update vga_modes array to reflect the modes we can do now.
All the modes work in the sense that one can switch to them. (I've tested that.) However, I think that some modes (eg, cga) wont be represented correctly by vbe_104f01. -Kevin
2012/9/3 Kevin O'Connor <kevin@koconnor.net>:
On Mon, Sep 03, 2012 at 06:59:32PM +0200, Christian Gmeiner wrote:
Am 03.09.2012 18:07 schrieb "Christian Gmeiner" <christian.gmeiner@gmail.com
:
2012/9/3 Kevin O'Connor <kevin@koconnor.net>:
On Sat, Sep 01, 2012 at 05:12:55PM +0200, Christian Gmeiner wrote:
As all supported graphic adapters are supporting VGA we should list them in int10 (AX = 4F00h). Also clext.c and bochsvga.c are haveing a function named like is_XXX_mode() which checks if its a default VGA mode or a VESA mode. If its a normal VGA mode stdvga_set_mode() gets called. [...] void stdvga_list_modes(u16 seg, u16 *dest, u16 *last) { + int i; + for (i = 0; i < ARRAY_SIZE(vga_modes); i++) { + struct stdvga_mode_s *stdmode_g = &vga_modes[i]; + u16 mode = GET_GLOBAL(stdmode_g->mode); + if (mode == 0xffff) + continue; + SET_FARVAR(seg, *dest, mode); + dest++; + } + SET_FARVAR(seg, *dest, 0xffff); }
This is a good idea. However, I don't think vbe_104f01() will correctly handle all the standard vga modes as it is coded today.
I will have a closer look at it during my following patches. If you want you can skip this patch.
Maybe it would be better to use this patch and update vga_modes array to reflect the modes we can do now.
All the modes work in the sense that one can switch to them. (I've tested that.) However, I think that some modes (eg, cga) wont be represented correctly by vbe_104f01.
Can you look at it? --- Christian Gmeiner, MSc
participants (2)
-
Christian Gmeiner -
Kevin O'Connor