When designing an XVD driver you usually run into a BIG problem: VGA mode 13h supports only a single page and is "activated" in an "emulated vga" configuration. If you just call bios and set mode13h, on some vga cards some supervga capabilities are "shut down" and other are managed in a strange way. Usually looking into the vgadoc vga info file collection (look for vgadoc3.zip or successive releases into x2ftp.oulu.fi or in other ftp sites packed with informations about pc-compatibles) you can know what "extended vga" registers need to be set to get full access to video page mapping and full display start addressing. Sometimes some things cannot be found into vgadoc ( because of missing information or because of informations the chipset maker thinks are not useful to you ) so i included a simple program called vgareg.asm, look into it, set the BIOS graphics mode numbers to test, change the port numbers and the "internal register ranges" to check what's inside your card and then let it "run&peek" into your card's registers. Then use a text editor and look into the resulting vgareg.tbl file. For example the bios of my vga card enabled just 256k access when using mode 13h or mode 640x400x256, and some settings under mode 13h scrambled the paging conventions. Looking in the vga docs, using vgareg and then looking back in the docs what was the meaning of the different values between a mode and another (ignoring of course the CRTC video timings, just looking on the "vga functionality" bits) i got some hints of what to do, then i tested various settings and at last i found the correct setting. That's how now my chips450.xvd driver can use all ram on video card and cross bank boundaries under all video modes. Some boards do not allow you to "stretch" 'em as long as you want, if you have such card, simply include code to take care of limits (i.e. by changing the available video pages after a "restricted" mode is set, so there won't be page crossings).