PhilC wrote: 23 May 2025 19:00
The Raven uses the Nova drivers at the mo, do is limited to the ET4Ks and Mach32&64 at the mo. The W32 s are hard to get hard of in ISA only, the cheapest on eBay being around £150.
Yep, in practice you really want to use an ET4K or Mach with the Nova driver.
Other VGA compatible cards will give you a 640x480 mono screen (go into the bios settings and deselect the nova driver)
That's pretty much the state of things right now.
The ideas for some kind of non-nova driver framework was to support most cards in their basic form. And an easy-ish way to implement device specific drivers where you could plug away at implementing the card specific stuff to get the most out of it.
Each driver wouldn't need to provide
that much in terms of functionality. It's mostly about querying modes, settings modes, save/restore state, providing the framebuffer. And then hardware acceleration functions too would be custom for each driver of course.
Similar in thinking to VESA, or any of old DOS or even Linux gfx driver frameworks from old.
With the caveat for acceleration, a device driver wouldn't need to implement any primitive drawing since it's all the same regardless of card. fVDI or NVDI can take care of that with a single VDI driver part that talks to the driver framework which delegates to the specific device driver -- or something like that was the thinking anyway.
The framework would aid making device drivers by supplying basic VGA support functions, which is also helped by being able to directly execute x86 vgabios. I had VESA feature detection and calls there too to some degree, but keeping in mind that the cards of this era are VESA1.2 at best and some cards don't even have VESA bios implemented in rom.
And while VESA1.2 provides a standard for mode numbers, linear modes was not added to the standard until VESA2.0 so the ones exposed are bank-switched modes.
This means you wouldn't want to use them for anything but placeholder until card specific code was written to set a linear mode.
(Bank switching is terrible and slow, especially so on Atari since VDI does not know of that concept and can optimise for them like Windows could. I did have bank-switched mode running here in my wip stuff by using the MMU to provide a virtual linear space with auto bank-switch on access like how you normally would for virtual memory. This was fun to do, and more so than any practical use for it)
For user-facing API I thought it would provide a nova-compatible interface so existing programs wouldn't need to do anything special.
As well as an xbios API a'la Falcon, same as how it's done on SuperVidel and V4SA.
That was my thinking anyway. But it's only in my head + disorganised experimentation code which means it'll likely not be a practical option in a long while or maybe more realistic, ever :)
It's mostly been for the fun of playing around with gfxcards more so than trying to replace Nova which is already there and works well.
And while doing so I think it makes sense designing for the common stuff, which is 90% of the code, to be common and so that the relatively small parts which are hardware specific are the only things one would need to care about when deciding to play around with some other card.
Wow, that turned long, sorry for the wall of text :)