X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=vidsys.c;h=01c8c8190021326f4c8a7eb2e89688f1ff086608;hb=75aa7ef609cbda625e6c19bc07acf744eb3bfc5a;hp=66f6811ebbd1155349c1b1ac412c5c7eeedb196a;hpb=898a618bf25182f1e3b456303c3c2613c170856e;p=vidsys diff --git a/vidsys.c b/vidsys.c index 66f6811..01c8c81 100644 --- a/vidsys.c +++ b/vidsys.c @@ -2,21 +2,24 @@ #include #include #include "vidsys.h" +#include "vga.h" #include "drv.h" #include "cdpmi.h" struct vid_driver *vid_drvlist[MAX_DRV]; int vid_numdrv; +void *vid_vmem; +int vid_vmem_size; + static struct vid_modeinfo **modes, *cur_mode; static int num_modes, max_modes; -static void *vmem; -static int vmem_size; int vid_init(void) { - int i, j; + int i, j, len; + struct vid_modeinfo *vm; vid_numdrv = 0; free(modes); @@ -24,8 +27,8 @@ int vid_init(void) cur_mode = 0; num_modes = max_modes = 0; - vmem = 0; - vmem_size = 0; + vid_vmem = 0; + vid_vmem_size = 0; if(dpmi_init() == -1) { return -1; @@ -57,9 +60,18 @@ int vid_init(void) } printf("found %d modes:\n", num_modes); - for(i=0; idrv->name, modes[i]->modeno, - modes[i]->width, modes[i]->height, modes[i]->bpp); + for(i=0; idrv->name, vm->modeno, + vm->width, vm->height, vm->bpp); + if(i + 1 >= num_modes) { + putchar('\n'); + break; + } + for(j=len; j<40; j++) putchar(' '); + vm = modes[i + 1]; + printf("[%4s] %04x: %dx%d %dbpp\n", vm->drv->name, vm->modeno, + vm->width, vm->height, vm->bpp); } return 0; @@ -73,8 +85,8 @@ void vid_cleanup(void) vid_setmode(3); } - if(vmem >= (void*)0x100000) { - dpmi_munmap(vmem); + if(vid_vmem >= (void*)0x100000) { + dpmi_munmap(vid_vmem); } for(i=0; iops->setmode(mode) == 0) { cur_mode = modes[i]; - if(vmem >= (void*)0x100000) { - assert(vmem_size); - dpmi_munmap(vmem); + if(vid_vmem >= (void*)0x100000) { + assert(vid_vmem_size); + dpmi_munmap(vid_vmem); } if(modes[i]->vmem_addr < 0x100000) { - vmem = (void*)modes[i]->vmem_addr; - vmem_size = 0; + vid_vmem = (void*)modes[i]->vmem_addr; + vid_vmem_size = 0; } else { - vmem = dpmi_mmap(modes[i]->vmem_addr, modes[i]->vmem_size); - vmem_size = modes[i]->vmem_size; + vid_vmem = dpmi_mmap(modes[i]->vmem_addr, modes[i]->vmem_size); + vid_vmem_size = modes[i]->vmem_size; } - return vmem; + return vid_vmem; } } }