>>What would it take to get intelfb mode switching working with non-CRT
>Documentation. Or you can try googling for vesafb-tng.
Something like that should be possible even without documentation from
0: google, read X sources, etc.
1: Extend a private version of vesafb and xyz-fb with a function
that dumps all known
hardware registers. Call it at the end of the xyz-fb_set_par()
routine and while loading
2. Boot several times (without loading X) and save a vesafb register
dump for every
valid vesa mode.
3. Compare the register dumps and try to be intelligent ;-) Most
probably you will
find that only a few registers differ. Some will change with
differnt color depths,
some will change with different vertical and horizontal resolutions.
Also a clock
divider needs to be discovered.
4. Verify your assumptions and release a mode switching xyz-fb driver.
It might also be a good idea to write a little dumpreg program for DOS
If there is e.g. a utility program for DOS that allows you to change the
refresh rate, it
should be quite easy to identify the clock divider registers.
ypan and ywrap scrolling does help a lot to increase speed. Try to
identify as many
bits of the crt start address value as possible by instrumenting vesafb.
Simply call your
register dump function at the end of vesafb_pan_display() for several
times and have a close
look at the bits changed during scrolling. Don´t start displaying those
register dumps immediately,
that way you obviously would lock your pc.
PS and ONLY for the brave: Write a little DOS program that single steps
the BIOS, saves all
IO to the vga register range to a buffer and displays it after
completion of the mode switch.
If the BIOS tries to prevent single stepping in real mode, switch to
vm86. It´s even possible
(and easier to implement than a vm86 monitor) to use a memory manager
like qemm386 and
a few lines of assembly code to map a writable copy of the video bios
image at the place of
the original bios if necessary.