First post, by cleansugar

User metadata
Rank Newbie

Is it possible to make EGA's partial screen area pixels emulation?
Is it possible to read A000~AFFF with TSR program without EGA card, and TSR copies A000~AFFFF to RAM, and copies that RAM address to Hercules card area?
Someone says it is impossible cause of memory bank swithing. then are there someone describe what it is in detail?

Reply 1 of 5, by vstrakh

User metadata
Rank Member

It's not possible to "read A000-AFFF" because there is no physical ram there, not on Hercules, and not in the system ram.
I can imagine such TSR being written for 386+ CPUs, relying on EMM386/VCPI to trap the access to non-existent EGA/VGA ports, and to map the virtual ram pages as color planes into segment A000.
But normally this also means you already have VGA/SVGA card and monitor, so don't need such emulation in the first place.

Reply 2 of 5, by Tiido

User metadata
Rank l33t

I think it it should be possible to set up Axxxx range to trigger a segfault (need 386 for that) which then is trapped by emulation software which then passes it on to Hercules in a way it will understand.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 3 of 5, by mr.cat

User metadata
Rank Member

I guess you could patch the binary to force it to use some different memory region.
(but that doesn't help with the EGA/VGA I/O ports...)
Naturally, any implementation that requires copying stuff around (using 80s hardware) is going to be dog slow.

My thinking is that if this kind of thing was practical to do in software, we'd already seen it in the eighties. Like how it is with CGA emulation.
What we saw instead was Hercules support in applications, sometimes, if we were lucky.
So the right way to do it then, is to add Hercules support to the application itself.
Now that's probably not that easy to do, especially if you don't have the source. Maybe in the future we can just ask ChatGPT to write the patch for us, but we're not there yet.

Did you have some specific app in mind?

Reply 4 of 5, by Benedikt

User metadata
Rank Oldbie

The only somewhat efficient pseudo emulation of EGA on Hercules that I can think of would patch the binary and then use a LUT for address lookups.
However, this approach would only be feasible with a 640x350 2-color EGA mode and most such software has native Hercules support, already.

With driver-based software it's a different story, entirely. One could e.g. write a fake EGAVGA.BGI and use all sorts of BGI-based "EGA-only" software with a Hercules card.

Reply 5 of 5, by Jo22

User metadata
Rank l33t++

Here's a list of the popular BGIs..
They're around since TP 4.0 or so (mid-late 80s).

ATT BGI - AT&T 6300 driver
CGA BGI - CGA and MCGA driver
EGAVGA BGI - EGA and VGA driver
HERC BGI - Hercules mono driver
IBM8514 BGI - IBM 8514 driver
PC3270 BGI - 3270 PC driver

However, many Turbo Pascal programs from the late 80s/eary 90s also have a Super VGA library (SVGA.BGI).

Inside the main executables, BGI headers can sometimes be found, too.

For detection purposes, I always recommended loading MSHERC or MSHERC /HALF.
Programs like CheckIt need it to correctly detect the presence of Hercules. Otherwise, it's just MDA.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//