// FIXME We nearly have the good tables. to be reworked
SET_BDA(dcc_index, 0x08); // 8 is VGA should be ok for now
SET_BDA(video_savetable
- , SEGOFF(get_global_seg(), (u32)video_save_pointer_table));
+ , SEGOFF(get_global_seg(), (u32)&video_save_pointer_table));
// FIXME
SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
else
regs->al = 0x30;
- if (CONFIG_VGA_CIRRUS)
- cirrus_set_video_mode(mode);
+ if (CONFIG_VGA_CIRRUS) {
+ int ret = cirrus_set_video_mode(mode, noclearmem);
+ if (ret)
+ return;
+ }
if (vbe_enabled())
vbe_hires_enable(0);
struct funcInfo {
- u16 static_functionality_off;
- u16 static_functionality_seg;
+ struct segoff_s static_functionality;
u8 bda_0x49[30];
u8 bda_0x84[3];
u8 dcc_index;
struct funcInfo *info = (void*)(regs->di+0);
memset_far(seg, info, 0, sizeof(*info));
// Address of static functionality table
- SET_FARVAR(seg, info->static_functionality_off, (u32)static_functionality);
- SET_FARVAR(seg, info->static_functionality_seg, get_global_seg());
+ SET_FARVAR(seg, info->static_functionality
+ , SEGOFF(get_global_seg(), (u32)static_functionality));
// Hard coded copy from BIOS area. Should it be cleaner ?
memcpy_far(seg, info->bda_0x49, SEG_BDA, (void*)0x49
// XXX - clear screen and display info
// XXX: fill it
- SET_VGA(video_save_pointer_table[0], (u32)video_param_table);
- SET_VGA(video_save_pointer_table[1], get_global_seg());
+ SET_VGA(video_save_pointer_table.videoparam
+ , SEGOFF(get_global_seg(), (u32)video_param_table));
// Fixup checksum
extern u8 _rom_header_size, _rom_header_checksum;