I was going to ask you eventually about how you handle this on REV3E especially because I was curious about it.
Right, and I normally handle this type of thing in the same way as the 5170 since it set the standard.
Keeping with that design seems to me the safest choice for the sake of compatibility.
Interesting, is this how the "0WS" jumpers work? It makes sense because you would need to use LA17-LA19 in conjunction with MEMCS16. But then since the address is still <1MB you could use SMEMR/SMEMW.
Right. The 0WS jumpers in addition change how the VGA controller internally handles the VGA RAM cycles from the CPU.
So it may change the timing of how the cycles are being terminated, so that would mean to do the data transfers on the first command cycle after the status cycle.
The VGA controller will then assume that the transfers will always want to occur right after the status cycle.
Of course, it can still assert IOCH_RDY whenever this is not possible due to other VGA RAM access internally for the display system on the card.
Absolutely if below 1MB the /SMEMR and /SMEMW could be used.
/MEMCS16 is used here by the VGA controller to set the bit width of the memory access cycles to be the faster 16 bit type of transfer.
The 0ws jumper is not necessarily a means to get faster VGA access. In my tests with the SCAT system I found the normal VGA transfers just as fast as with the 0ws jumper enabled.
Same with the REV3E, I have done experiments with 0ws however this never yielded faster cycles.
If a card is truly capable of 0ws operation, then that will make a bigger difference of course.
The card would then be as fast or faster than the internal system RAM of the particular system, if the 0ws operation is possible.
This situation would yield a super fast VGA operation, about as fast as we can hope for with a PC/AT type system.
there is another feature called "linear frame buffer" (LFB)
Okay, cool, nice to know. I imagined such a mode would also become possible as long as software operating in protected mode is used.
It seems this should be treated as very optional and require the software in question to be aware of this so it can handle the transfers through this alternate window.
This reminds me that this should be considered with 286 systems where the RAM capacity is larger or even maxed out.
So this mode of operation should not be using any card with a LFB feature. Otherwise also the memory decoder needs to be altered as not to enable the memory data bus on the mainboard in these LFB areas.
Basically in the REV3E we can mostly do anything we want and adapt the logic for these types of situations.
If we could detect the VGA controller activity we could even create some kind of interaction between the VGA controller and the REV3E memory systems if a situation would call for such an adaptation.
Basically, VGA memory can be mapped in a high memory address like the 3MB-4MB range, or 15-16 MB range, so that processors can access it all in one big range of memory without having to paginate it via VGA registers. I think this was probably more common on VLB, PCI, etc and on 386/486 class machines. Because of this the higher address pins (LA20 and LA21 in this case) are actually in use, and of course MEMW/MEMR must be present.
Right, I see how this can yield many advantages for example also for windows type GUI software where you would want to move windows with contents around in the memory area.
So transferring the data linearly will be substantially faster.
One thing I want to note is that it seems MEMW/MEMR pins are not present in earlier 0WS cards (like the cirrus I sent you for example). They still use SMEMW/SMEMR because they are exclusively used with A000-BFFF mapped video memory. So its just these few cards with LFB support which have MEMW/MEMR present.
I see, indeed it's good to be aware of this. It seems that these designs may aim for supporting 8 bit systems optionally where the system doesn't even have a /MEMR and /MEMW available. So in those cases the card still at least can be able to function.
So, the problem was that it seemed like the VBIOS in the commercial cards with MEMW/MEMR was 'invisible' to most 286 systems except very late chipsets (SCAT, SCAMP, perhaps TOPCAT). So the card simply did not initialize and VGA bios didn't run. I could confirm with a monochrome card in ms-dos that the vbios was not visible at C000 hence using a second card with a BIOS copy at C000 to get around this.
This seems still weird to occur really, something may be off and non standard according to the design of the PC/AT.
So possibly the chipset will only assert /SMEMR and /SMEMW and not /MEMR and /MEMW in the VGA window? It seems so.
That would be a not so standard design choice, but it's possible.
I mean, if no /MEMR and /MEMW activity occurs it would explain that some card designs will not enable the ROM.
You also can verify the ROM on the card design to see the connectivity of the output enable pin of the ROM. Is it connected to the VGA controller, letting the VGA controller be in charge of the memory command passing or not passing tot the ROM, or does the ROM simply take the memory output enable command from either /SMEMR or /MEMR, combined with the chip select input of the ROM to actually decode the BIOS address range to be valid. If certain systems don't see the BIOS, this should be checked. If the ROM is hard wired to either /SMEMR or /MEMR, this could be a clue to a failure to see the ROM.
I need to look at this card really.
Okay is it this project?
CL-GD5434-based ISA VGA card. Contribute to Leshak-pcb/Pine-CL-GD5434 development by creating an account on GitHub.
github.com
I checked the schematic and it's using /SMEMW and /SMEMR.
The ROM is always outputting data and the card uses a transceiver to enable the data onto the slot.
Probably they do this to speed up the ROM output when using slower type of ROM chips.
So from the ROM perspective it is always in full operation outputting data.
So the enable speed onto the bus per cycle is then determined by the speed of the external transceiver.
The VGA controller enables the transceiver in the design as if it's the actual ROM OE pin.
Anyway, let's not overlook the fact that /SMEMW and /SMEMR are used here in this particular card design.
And the original card it's derived from may be doing the same thing as well, it probably is.
This seems to be the issue with the VGA ROM not loading in certain systems.
So those systems could look at moving the pins going to /SMEMW and /SMEMR onto the /MEMW and /MEMR pins of the slot to see if this could provide a solution. It depends on the system how it handles the activity of /MEMR and /MEMW to possibly be a better choice to drive the card. Of course, if the PCB didn't create the card pad on /MEMW and /MEMR to save some gold plating that would not be an option either.
Well, it is what it is once the card is manufactured of course.
Maybe I should design one of these cards in the future and add some design features where the user can choose to rewire stuff according to their system to accommodate how the system works and then be able to use the card. Or just design the card in a way that I feel would be better. This type of card design has a lot of considerations for power planes etc which is described in the datasheets. A lot of things need to be considered according to the datasheets.
And since the card(if I am looking at the right GitHub project) is wired this way, it won't work with any LFB feature if present.
The GD5434 only has a single set of /MEMR and /MEMW inputs so the designer must make the choice.
So a card design should be able to use /MEMR and /MEMW from the slot and this is also mentioned in the datasheet.
I don't know if the BIOS could then be functional in those cases where it is failing.
Maybe more is going on in those system designs and it won't help either.
Anyway if the BIOS is not loaded, it must be a command issue and this would indicate that possibly using the /MEMW and /MEMR in those systems could help.
In the REV3E we could do a lot of things the way we want for a particular configuration.
We can even move the VGA BIOS into the 8 bit mode ROM and supply it ourselves, if we disable the external ROM on the card.
There it is really easy to do because we can desolder the transceiver for the ROM.
Card users could opt to design a small decoder of themselves and cut the EROM trace to the GD5434 and supply the signal with their own decoder circuit.
That should also enable loading the VGA ROM.
Anyway it's a roundabout way then since possibly using /MEMW and /MEMR could do the trick already.
I will look at the PCB design and his GitHub as well, we could possibly make an updated layout and use /MEMW and /MEMR for our particular application types where we want to use the latest types of chipsets anyway. The decoding is not the problem since the GD5434 uses LA17-LA23 anyway.
Kind regards,
Rodney