Earlier in the year I went through disassembled VEGA VGA BIOS code with the aim of being able to initialize the card from non-x86 code (ie. my Z280 board). I also did an experiment in my 286 where I jumpered the card to use 0x2xx I/O range instead of the usual 0x3xx, disabled the ROM, and tried to initialize it after booting with a second card active. In other words, there were two VGA cards and two monitors connected. (The second card was WD90C00.) I succeeded in displaying mode 13h on one monitor while the other was in text mode. Unfortunately, any mode switch on the main card would try to re-enable its 0xA0000 window, producing an address conflict and crash 
As for the Z280 board, I switched to using a Trident 8900D. I got text mode and mode 13h working a while ago and am now picking through the video BIOS for this card looking for SVGA modes. I don't have a datasheet for the chip, but I have one for the TKD8001 DAC, and user's manual with a mode list. (There is also a text file online somewhere with info about proprietary registers on Trident chips.) The user's manual says it can reach a pixel clock of 75MHz, which is good for 640x480 with 24-bit color.
General info on intializing a VGA/SVGA card:
some I/O ports can exist at either $3Bx or $3Dx. The normal range is $3Dx and this should be selected by setting bit 0 of the Misc Output register.
the Misc Output register is set by writing port $3C2.
Attribute Controller registers are set by writing the index to port $3C0 followed by data to port $3C0.
(how do you know if it is currently expecting an index or data? You can reset it to the 'index' state by reading from port $3DA)
(IMPORTANT: the attribute controller index needs to be set back to $20 for anything other than background color to display)
Sequencer registers are set by writing an index to port $3C4 followed by data to port $3C5.
Graphics Controller registers are set by writing an index to port $3CE followed by data to port $3CF.
CRT Controller registers are set by writing an index to port $3D4 followed by data to port $3D5.
CRTC register index $11 contains a 'protect' bit which should be cleared before attempting to write the other registers.
VGA DAC color palette registers can be set by writing an index to port $3C8 followed by three bytes of RGB data to port $3C9.
In nearly all cases, port $3C6 (palette data mask) should be written with $FF, and ports $3CA/$3CC (graphics controller position) should be written with 1 and 0, respectively.
On a given card, there may be extended registers (not part of the original IBM VGA) which also need to be set. Disassembling the VGA BIOS may be the only way to find out about these. (I can post more info about Trident or CL-GD5x0 extended registers later.)
There are some cases where the order matters, when setting registers. For instance, some registers should only be modified while the sequencer is in the 'reset' state.
Sequence used by the Trident BIOS to change screen modes:
These are the values used for mode 13h:
I've now managed to set 640x400x8bpp from the Z280 board as well. It uses a 50MHz pixel clock instead of 25MHz, which requires Trident extended reg 3C4/0D to be set to 1.
It's not necessary to use the 'mode X' planar layout to access beyond the first 64KB because the Trident card has several methods of bank switching. In this case I just write a bank number XOR 2 to 3C4/0E. On the Z280 I can load a 256KB image from disk with a CP/M program.
I think it would be useful to build a small database of register settings for different screenmodes, with resolution and pixel clock. (Until now I've only seen scattered pieces of info such as on OSDev Wiki or buried in some source code.) Standard VGA only includes 25MHz and 28MHz clocks, but most cards have additional options. The VEGA VGA card has 32.5MHz. The WD90C00 has 36 and 44.9MHz. The Trident 8900 card uses a clock generator rather than discrete oscillators. Higher than 28MHz means you can exceed 360x480x8bpp, without even getting into other potentially undocumented registers.

As for the Z280 board, I switched to using a Trident 8900D. I got text mode and mode 13h working a while ago and am now picking through the video BIOS for this card looking for SVGA modes. I don't have a datasheet for the chip, but I have one for the TKD8001 DAC, and user's manual with a mode list. (There is also a text file online somewhere with info about proprietary registers on Trident chips.) The user's manual says it can reach a pixel clock of 75MHz, which is good for 640x480 with 24-bit color.
General info on intializing a VGA/SVGA card:
some I/O ports can exist at either $3Bx or $3Dx. The normal range is $3Dx and this should be selected by setting bit 0 of the Misc Output register.
the Misc Output register is set by writing port $3C2.
Attribute Controller registers are set by writing the index to port $3C0 followed by data to port $3C0.
(how do you know if it is currently expecting an index or data? You can reset it to the 'index' state by reading from port $3DA)
(IMPORTANT: the attribute controller index needs to be set back to $20 for anything other than background color to display)
Sequencer registers are set by writing an index to port $3C4 followed by data to port $3C5.
Graphics Controller registers are set by writing an index to port $3CE followed by data to port $3CF.
CRT Controller registers are set by writing an index to port $3D4 followed by data to port $3D5.
CRTC register index $11 contains a 'protect' bit which should be cleared before attempting to write the other registers.
VGA DAC color palette registers can be set by writing an index to port $3C8 followed by three bytes of RGB data to port $3C9.
In nearly all cases, port $3C6 (palette data mask) should be written with $FF, and ports $3CA/$3CC (graphics controller position) should be written with 1 and 0, respectively.
On a given card, there may be extended registers (not part of the original IBM VGA) which also need to be set. Disassembling the VGA BIOS may be the only way to find out about these. (I can post more info about Trident or CL-GD5x0 extended registers later.)
There are some cases where the order matters, when setting registers. For instance, some registers should only be modified while the sequencer is in the 'reset' state.
Sequence used by the Trident BIOS to change screen modes:
Code:
; write 1 to 3C4/00 (reset the sequencer)
; write 4x bytes from table to 3C4/01 ~ 3C4/04
; write value to 3C2
; write 25x bytes from table to CRTC
; write 9x bytes from table to gfx controller
; write 3 to 3C4/00 (un-reset sequencer)
; optionally write 16x bytes from table to attribute controller (color table)
; write 5 more bytes from table to remaining attribute controller registers
; write 0 to 3CC
; write 1 to 3CA
Code:
; sequencer regs (1~4): 01 0F 00 0E
; misc output reg (3C2): 63
; CRTC regs: 5F 4F 50 82 54 80 BF 1F 00 41 00 00 00 00 00 00 9C 8E 8F 28 40 96 B9 A3 FF
; attribute regs: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 41 00 0F 00 00
; gfx controller regs 00 00 00 00 00 40 05 0F FF
Code:
; CRTC regs: C3 9F A1 84 A6 00 BF 1F 00 40 00 00 00 00 00 00 9C 8E 8F 50 40 96 B9 A3 FF
I think it would be useful to build a small database of register settings for different screenmodes, with resolution and pixel clock. (Until now I've only seen scattered pieces of info such as on OSDev Wiki or buried in some source code.) Standard VGA only includes 25MHz and 28MHz clocks, but most cards have additional options. The VEGA VGA card has 32.5MHz. The WD90C00 has 36 and 44.9MHz. The Trident 8900 card uses a clock generator rather than discrete oscillators. Higher than 28MHz means you can exceed 360x480x8bpp, without even getting into other potentially undocumented registers.