8 #include <sys/farptr.h>
19 __dpmi_meminfo meminfo;
32 fb_dos_vesa_pm_info = malloc(
fb_dos.
regs.x.cx );
39 p = (
unsigned short *)((intptr_t)fb_dos_vesa_pm_info + fb_dos_vesa_pm_info->
IOPrivInfo);
40 while( *p++ != 0xFFFF )
44 meminfo.address = *(intptr_t *)p;
45 meminfo.size = *(p + 2);
47 if( __dpmi_physical_address_mapping( &meminfo ) != 0 )
52 __dpmi_lock_linear_region( &meminfo );
137 while( _farpeekw( _dos_ds, mode_ptr ) != 0xFFFF )
139 mode_list[number_of_modes] = _farpeekw( _dos_ds, mode_ptr );
148 for( c = 0; c < number_of_modes; c++ )
176 if( depth == 15 ) depth = 16;
177 if( depth == 24 ) depth = 32;
179 for( tries = 0; tries <= 2; tries++ )
188 good_bpp = (bpp == depth);
190 else if( tries == 1 )
192 good_bpp = (bpp == 24 && depth == 32) ||
193 (bpp == 15 && depth == 16);
197 good_bpp = ((bpp == 24 || bpp == 32) && depth < 24) ||
198 ((bpp == 15 || bpp == 16) && depth < 15);
243 return (success ? 0 : -1);
262 if( (bpp == depth) ||
263 (bpp == 15 && depth == 16) ||
264 (bpp == 16 && depth == 15) ||
265 (bpp == 24 && depth == 32) ||
266 (bpp == 32 && depth == 24) )
311 static void fb_dos_vesa_set_palette_pm(
void)
314 unsigned short data_sel;
320 __asm__ __volatile__ (