- if(pgcount > 1) {
- vpgaddr[1] = (char*)vpgaddr[0] + pgsize;
- fbidx = 1;
- page_flip(FLIP_NOW); /* start with the second page visible */
+ if(vm->fb_addr) {
+ vpgaddr[0] = (void*)dpmi_mmap(vm->fb_addr, fbsize);
+ if(!vpgaddr[0]) {
+ fprintf(stderr, "failed to map framebuffer (phys: %lx, size: %d)\n",
+ (unsigned long)vm->fb_addr, fbsize);
+ set_text_mode();
+ return 0;
+ }
+ memset(vpgaddr[0], 0xaa, fbsize);
+
+ if(pgcount > 1) {
+ vpgaddr[1] = (char*)vpgaddr[0] + pgsize;
+ fbidx = 1;
+ page_flip(FLIP_NOW); /* start with the second page visible */
+ } else {
+ fbidx = 0;
+ vpgaddr[1] = 0;
+ }