XVD additional technical notes: Into _XVDVisible NEVER wait for hsync or vsync, let the higher level functions do this. As far as i could see (i wear glasses :) ) Windows 3.1 tries to "virtualize" the vga status port (read: don't expect to read VSYNC exactly), and waiting for vsync with interrupts disabled is a bad thing to do (VSYNC happens with a 60..75Hz frequency, if you disable interrupts you may lose lots of irqs from a reprogrammed timer interrupt or from a fast device). You have three choices: 1) Don't wait for vsync/hsync and flip pages hoping the video card has multiple pages (this nearly zeroes the flicker caused by page flips) 2) Use a timer interrupt to simulate a vsync irq (see on x2ftp.oulu.fi for sources) but this may spell troubles if you want to use 386timer because 386timer uses the IRQ0 timer irq. To avoid problems you should use as "vsync timer irq" the RTC (realtime clock) interrupt ( IRQ8 ), it can be programmed to have a precision near to 1msec (good enough). 3) Find a better method. I choose 1), once you get a specific XVD driver for your card in 320x200 mode you get at least FOUR display buffers (256k) but more frequently SIXTEEN (1Meg), even performing page flipping at high rates you see an un-flickered screen image. By the way, REMEMBER TO LIMIT THE FRAME RATE, anything above 70 FPS is a waste of cpu time.