Menu

#513 Could you add Hercules text and optional graphics mode support?

nice_to_have
open
nobody
hercules (1)
1
2025-10-17
2025-10-17
Oliver
No

Hercules text and graphics modes use a distinct memory area from 0xB0000 to 0xB07FF for text and up to 0xB7FFF for graphics. Thus, they can be used simultaneously with VGA and EGA cards, and to some extent also with CGA cards in dual monitor setups, provided the software targets the proper memory range for each card.

Especially some DOS software and real mode applications made use of this. For example, it was possible to display the Microsoft CodeView debugger in the Hercules text mode while showing the application under investigation on the VGA display. Similarly, Borland's Turbo Debugger and D86 also supported dual-monitor setups using Hercules and VGA cards.

This approach allowed developers to have the debugger interface on the monochrome Hercules monitor while running the graphical or color output of the program on the VGA monitor. It was a common setup in the DOS era for debugging and software development before protected mode multitasking and modern multi-monitor support became widespread. In protected mode and thus modern operating systems, it was no longer necessary because graphics cards supported multiple monitors in higher memory address ranges.

+---------------+---------------+------------------------+-------------+-------------------------------------------------------+
| Graphics Card | Mode Type     | Memory Range (From-To) | Memory Size | Remarks                                               |
+---------------+---------------+------------------------+-------------+-------------------------------------------------------+
| CGA           | Text Mode     | 0xB8000 – 0xB8FFF      | 8 KB        | 80x25 text, 16 colors                                 |
| CGA           | Graphics Mode | 0xB8000 – 0xBBFFF      | 16 KB       | 320x200 (4 colors), 640x200 (monochrome), 4 colors    |
| Hercules      | Text Mode     | 0xB0000 – 0xB07FF      | 8 KB        | 80x25 text, monochrome, 9x14 font                     |
| Hercules      | Graphics Mode | 0xB0000 – 0xB7FFF      | 32 KB       | 720x348 monochrome graphics, 4 interleaved 8 KB banks |
| EGA           | Text Mode     | 0xB8000 – 0xB8FFF      | 8 KB        | Compatible with CGA text modes                        |
| EGA           | Graphics Mode | 0xA0000 – 0xAFFFF      | 64 KB       | Up to 640x350, 16 colors                              |
| VGA           | Text Mode     | 0xB8000 – 0xB8FFF      | 8 KB        | 80x25 text, 16 colors                                 |
| VGA           | Graphics Mode | 0xA0000 – 0xAFFFF      | 64+ KB      | Multiple modes, up to 640x480, 256 colors             |
+---------------+---------------+------------------------+-------------+-------------------------------------------------------+

Note that the address start for Hercules has a 0 after the 0xB, whereas the text modes of CGA, EGA, and VGA have an 8 instead of a 0 there.

It would be great if you could support the Hercules text mode, and if possible also the graphics mode, in Bochs and direct the output to a second window. This way, applications that support this could make use of the Hercules modes, and users with a proper multi-monitor setup on the host system could, for example, move this window to the second screen.

Discussion


Log in to post a comment.

MongoDB Logo MongoDB