VOGONS


Reply 20 of 30, by Darmok

User metadata
Rank Newbie
Rank
Newbie

It is impossible to use two ISA EGA or VGA video cards at the same time because ISA videocards are not PnP, which means they cannot move their ROMs to different memory areas. Both will try to occupy area A000-AFFF. Sorry I meant C000-C7FF.

Reply 21 of 30, by mkarcher

User metadata
Rank l33t
Rank
l33t
bakemono wrote on 2024-03-05, 11:35:

Hi mkarcher, do you think this could be resolved by jumpering one of the cards to the 'alternate' 2xx I/O range?

I'm tempted to run an experiment, since I have both a Cirrus Logic GD-5x0 based card and a CHIPS 82C43x based one (although I might need to find the missing 28MHz oscillator)

Setting that jumper will solve the I/O conflict, and as long as there is no I/O conflict, the secondary card can be configured to the B000 monochrome RAM area, and the primary color card can be switched between the B800 CGA-type range and the A000 EGA-type range, so given suitable software, the RAM address conflict is also not an issue.

On the other hand, if the BIOS is mapped at C000:0000, it will conflict with the other card at the "standard I/O range". I don't know whether the "alternate I/O" jumper does something to the BIOS. Furthermore, the BIOS does not supported by the "alternate I/O range", so you would need custom BIOS software for the second card that uses these alternate ports instead of the standard ports, and find a way to get it loaded (maybe into conventional RAM?).

Reply 22 of 30, by Darmok

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2024-03-05, 12:46:

Setting that jumper will solve the I/O conflict, and as long as there is no I/O conflict, the secondary card can be configured to the B000 monochrome RAM area, and the primary color card can be switched between the B800 CGA-type range and the A000 EGA-type range, so given suitable software, the RAM address conflict is also not an issue.

On the other hand, if the BIOS is mapped at C000:0000, it will conflict with the other card at the "standard I/O range". I don't know whether the "alternate I/O" jumper does something to the BIOS. Furthermore, the BIOS does not supported by the "alternate I/O range", so you would need custom BIOS software for the second card that uses these alternate ports instead of the standard ports, and find a way to get it loaded (maybe into conventional RAM?).

In the late 80s, one of my friends really wanted to have a dual-monitor system for the purpose of debugging the programs he was writing. Since he didn't have a monochrome video card, he did the following trick. The EGA card clone was switched to alternative addresses mode, the ROM chip was removed and, using reverse engineering of the BIOS contents, he wrote a utility that switched this EGA card to monochrome emulation mode. This worked if the color card was also EGA. With a VGA video card everything is somewhat more complicated. Many VGA video cards can also use the B000 region in monochrome mode 7. Therefore, you will have to somehow “explain” to the video card that this region is occupied; for each type of graphics controller, the “explanation” method is individual. Since he did not have access to the datasheet of the VGA video card he had, and reverse engineering is a labor-intensive task, he decided to limit himself to the EGA card.
Unfortunately, he is no longer in this world and I cannot find out the details from him.

Reply 23 of 30, by Kahenraz

User metadata
Rank l33t
Rank
l33t
Darmok wrote on 2024-03-05, 14:53:

Many VGA video cards can also use the B000 region in monochrome mode 7. Therefore, you will have to somehow “explain” to the video card that this region is occupied; for each type of graphics controller, the “explanation” method is individual.

I don't understand this part. Is it so that when you send a display command to the system, only the secondary monochrome card responds and not the primary card as well?

It sounds like this is exactly the kind of thing one of problem those dual color/monochrome cards are meant to solve as an all-in-one solution.

It's too bad there probably isn't any dual-head VGA cards of the era that are capable of such a thing.

Reply 24 of 30, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

"If you do have multiple PCI video cards, there's a utility at asm32.com (in the 'Legacy' section) which allows a PCI card to emulate a secondary MDA card under DOS."
http://www.seasip.info/VintagePC/dualhead.html

edit: specific file from quoted noted as dead below, but do peruse rest of page for info pertinent to setups like these.

Last edited by BitWrangler on 2024-03-05, 16:43. Edited 1 time in total.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 25 of 30, by Shponglefan

User metadata
Rank l33t
Rank
l33t
BitWrangler wrote on 2024-03-05, 15:34:

"If you do have multiple PCI video cards, there's a utility at asm32.com (in the 'Legacy' section) which allows a PCI card to emulate a secondary MDA card under DOS."
http://www.seasip.info/VintagePC/dualhead.html

Unfortunately the link on that site doesn't work anymore.

Pentium 4 Multi-OS Build
486 DX4-100 with 6 sound cards
486 DX-33 with 5 sound cards

Reply 26 of 30, by Darmok

User metadata
Rank Newbie
Rank
Newbie
Kahenraz wrote on 2024-03-05, 15:16:

I don't understand this part. Is it so that when you send a display command to the system, only the secondary monochrome card responds and not the primary card as well?

It sounds like this is exactly the kind of thing one of problem those dual color/monochrome cards are meant to solve as an all-in-one solution.

It's too bad there probably isn't any dual-head VGA cards of the era that are capable of such a thing.

When the computer starts, the system BIOS transfers control to the video card's VGA BIOS. The video card BIOS tests region B000 for the presence of a secondary monochrome adapter. If this is detected, then two consequences occur: firstly, the VGA video card switches to 8-bit bus mode, since by default it is assumed that the monochrome adapter is 8-bit, and in accordance with the AT architecture, devices located in the A000-BFFF regions must work with the same bus width; secondly, the VGA controller is prohibited from using the B000-B7FF region since the monochrome adapter is located there.
If the BIOS does not find a monochrome adapter, then you can use the B000-B7ff region to emulate video mode 7. Otherwise, how could programs writing directly to the video card memory use this mode?

Reply 27 of 30, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++
Shponglefan wrote on 2024-03-05, 15:36:
BitWrangler wrote on 2024-03-05, 15:34:

"If you do have multiple PCI video cards, there's a utility at asm32.com (in the 'Legacy' section) which allows a PCI card to emulate a secondary MDA card under DOS."
http://www.seasip.info/VintagePC/dualhead.html

Unfortunately the link on that site doesn't work anymore.

Yeah looking like a dead end, I can't find enough of the site on archive.org to know the filename even.

Edit: more breadcrumbs https://www.dosforum.de/viewtopic.php?t=6049 ... seemed like it was only downloadable around 2010-2011, so mission now find someone into DOS retro around then that snarfed it and rehosted. Boothby the author apparently retired and in Portland Oregon if anyone wants to go knock on a door 🤣

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 28 of 30, by mkarcher

User metadata
Rank l33t
Rank
l33t
Darmok wrote on 2024-03-05, 14:53:
mkarcher wrote on 2024-03-05, 12:46:

Setting that jumper will solve the I/O conflict, and as long as there is no I/O conflict, the secondary card can be configured to the B000 monochrome RAM area, and the primary color card can be switched between the B800 CGA-type range and the A000 EGA-type range, so given suitable software, the RAM address conflict is also not an issue.

On the other hand, if the BIOS is mapped at C000:0000, it will conflict with the other card at the "standard I/O range". I don't know whether the "alternate I/O" jumper does something to the BIOS. Furthermore, the BIOS does not supported by the "alternate I/O range", so you would need custom BIOS software for the second card that uses these alternate ports instead of the standard ports, and find a way to get it loaded (maybe into conventional RAM?).

In the late 80s, one of my friends really wanted to have a dual-monitor system for the purpose of debugging the programs he was writing. Since he didn't have a monochrome video card, he did the following trick. The EGA card clone was switched to alternative addresses mode, the ROM chip was removed and, using reverse engineering of the BIOS contents, he wrote a utility that switched this EGA card to monochrome emulation mode. This worked if the color card was also EGA. With a VGA video card everything is somewhat more complicated. Many VGA video cards can also use the B000 region in monochrome mode 7. Therefore, you will have to somehow “explain” to the video card that this region is occupied; for each type of graphics controller, the “explanation” method is individual.

Yeah, this sounds mostly correct. An EGA card set to "color" never tries to serve mode 7. A VGA card detects an MDA card at the 3Bx and activates "dual-card/VGA-as-color" mode if an MDA was detected during POST in this configuration it never tries to serve mode 7 and 0Fh. It activates "dual-card/VGA-as-mono" mode (only serving mode 7 and 0Fh) if a CGA was detected during POST. If neither card was detected, a VGA enables an "auto-switch" mode in which it serves all modes, sometimes as "mono card" and sometimes as "color card".

I just checked some VGA BIOSes to find out how they choose between "auto-switch mode" and "dual-card mode":

  • The ViRGE BIOS (likely all S3 BIOSes) indicates single-card mode by 40:89h being set.
  • The same is true for the ARK1000 BIOS.
  • The GeForce 5200 BIOS seems to use the same flag.
  • The ATI Radeon 9250 BIOS has the index of the "current display combination code" at 40:8Ah and checks whether that index points to a dual-card entry

So it seems for a modern VGA card, it is likely that setting the Display Combination Code to 0801 (VGA color + MDA) and clearing bit 0 in 40:89h is enough to "explain" to the VGA BIOS that it should hand over the monochrome modes to the mainboard video BIOS (INT 42h).

Reply 29 of 30, by Kahenraz

User metadata
Rank l33t
Rank
l33t

I have been testing various DIP switch settings on my OAK OTI-037c, but haven't been able to get it to work as MDA or Hercules though the VGA port when it is not also configured as the primary video card.

The BIOS is also split into two chips, which would make any kind of flashing of alternative firmware very difficult. The chips that it comes with are also OTP. I don't know if there is a compatible EEPROM.

20240314_005327.jpg
Filename
20240314_005327.jpg
File size
244.41 KiB
Views
177 views
File license
CC-BY-4.0

Reply 30 of 30, by mkarcher

User metadata
Rank l33t
Rank
l33t
Kahenraz wrote on 2024-03-14, 04:52:

The BIOS is also split into two chips, which would make any kind of flashing of alternative firmware very difficult. The chips that it comes with are also OTP. I don't know if there is a compatible EEPROM.

Those chips are likely standard 16KB (128KBit) OTP EPROMs or 128KBit mask ROMs. The pinout is compatible to the 27c128. Finding EEPROM/flash chips at that capacity might be difficult, but you should be able to step up to 256KBit EEPROMs, which are commonly available. The split is into odd/even bytes (it says "E" and "O" on the chips). Any decent programmer should include a tool to split a 32KB BIOS image into odd/even halves.