Skip to the content
PCBKitNew board
2 layers62.4 × 31.6 mmMce adapter, the printed circuit board in 3D

RGBS converter for MDA, Hercules, CGA and EGA

Size
62.4 × 31.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
35
Pads
96
Tracks, vias
90, 0
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
15 Oct 2020
Updated
9 Feb 2025

Overview

Mce adapter is an open-source printed circuit board by necroware, from the necroware/mce-adapter repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 62.4 × 31.6 mm with 21 parts on 35 nets, routed with 90 tracks and 0 vias.

Its parts include 9 resistors, 2 capacitors, 2 connectors, 1 IC and 1 diode. It belongs with the interfaces and adapters and retro computing and games boards and the FPGA and CPLD boards of this library.

README

README.md

MCE Adapter (Prototype!)

MCE Adapter

The MCA-Adapter is a device, which can convert MDA (and Hercules), EGA and CGA to analogue RGBS signal. It supports following features.

  • Converts digital MDA, Hercules, CGA and EGA to analog RGBS or RGBHV/VGA signal
  • Color DAC for 3, 4, 16 and 64 color modes
  • Switchable composite sync from H- and V-Sync
  • Loop through HV-Sync, colors conversion only mode
  • Includes IBM's "brown-hack"for CGA and 16-colors EGA modes
  • Hi/Low resolution EGA mode autodect for proper color representation
  • Switchable green, white and amber monochrome screen emulation

Youtube Videos:

Why did I make this?

Because why not? I wanted to get some practice with EDA and I needed such an adapter to test some of my old graphics cards.

Why might somebody need this?

If you want to connect your old PC with MDA, CGA or EGA graphics to a more modern VGA display, it's going to be difficult. First of all, this old graphics standards are digital, so RGB information is sent as a bunch of 1 and 0. VGA on the other hand understands only analogue signals, so f.e. the intensity of the red color is defined by some value between two voltages and not by a discrete value. So the first job of this adapter is to translates digital video signals into analogue video signals. However, this is may be not enough, since the horizontal sync signal of the old video standards is not supported by a usual VGA monitor. For this purpose, a very famous upscaler named GBS-8200 and compatible can be used to convert the sync signal to VGA compatible level. However, GBS-8200 expects such called composite sync signal, where horizontal and vertical sync signals are combined. This is, where this adapter comes into place, it doesn't only convert digital RGB signal to analogue, but also composite sync signal from incoming horizontal and vertical signals. Long story short, you will need this adapter to connect a MDA, CGA or EGA graphics card to an analogue RGB monitor, either by using GBS-8200 converter or the adapter standalone, in case your monitor supports horizontal frequencies down to 15kHz.

Why didn't I take an existing solution?

Well, first of all, I wanted to gain some experience in this. Second, I actually was heavily inspired by a YouTube video by TheRasteri, where he evaluates the output possibilities of an old PC, talks about the technical background and creates his own adapter. You can see the video here:

As I saw his solution with a ROM, I instantly thought, that the same thing can be done using a programmable logic IC, like GAL16V8. It would have some benefits in timing behaviour over a solution with ROM and be also very flexible. So, here it is.

Which modes does it support?

The adapter can convert MDA, Hercules, CGA, 16 colors EGA and 64 colors EGA to standard VGA (RGBHV) or RGBS (combined HV-sync). The sync output frequency is always the same as the input frequency. The adapter can only compose HV-sync, but doesn't actively change it. The digital color signal is converted to analogue color signal, so any analogue RGB monitor should understand it.

Jumpers and switches

ATTENTION: Jumper settings changed compared to previous revisions

Color mode selection J1:

Mode1-23-4
CGA/EGA (15kHz / 21kHz)OFFOFF
MDA/Hercules white (18kHz)ONON
MDA/Hercules green (18kHz)ONOFF
MDA/Hercules amber (18kHz)OFFON

Sync selectiom J2:

ModeSetting
HV-Sync (VGA)1-2
C-Sync (Composite)2-3

How to use this stuff?

  1. Take the gerber files and make a PCB.
  2. Assemble the board
  3. Compile code/mceplug.eqn using EQN2JED tool
  4. Write the compiled jed file to a GAL16V8 IC
  5. Put it into the board and connect the cables f.e. CGA -> MCE Adapter -> GBS-8200 -> Analog RGB Monitor

Bill of materials

Reference#LCSCDescription
C1 C22C2839237capacitor 1µF
D11C402218diode 1N5819
H11C492405pin header 1x6
J11C492419pin header 2x2
J21C429954pin header 1x3
PWR11C46398USB-B mini port
PWR21C152154pin header 1x2 (+5V connector)
R1 R22C119317resistor 470 Ohm
R3 R5 R73C2848597resistor 1.3k Ohm
R4 R6 R83C119320resistor 680 Ohm
R91C173139resistor 10k Ohm
U11C6509GAL16V8B (or compatible)
VIDEO_IN11C141882DB9 female connector (MDA/EGA/CGA)
VIDEO_OUT11C75754DIB15 female connector (VGA)

Tested with following monitors

  • GBS-8200 with original hardware (only 15kHz modes work)
  • GBS-8200 with gbs-control firmaware (Hercules and hi-res EGA sync unstable)
  • NEC Multisync LCD1970NX 19" TFT (everything works fine, Hercules is not in full screen, but works stable)
  • EIZO L365 15" TFT (only Hi-Res EGA works, doesn't support 15kHz CGA nor 50Hz Hercules)
  • Benq BL702A

Parts

21
QtyValueFootprintReferences
31.3KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR3, R5, R7
3680Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR4, R6, R8
21uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2
2470Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1, R2
1+5VConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalPWR2
110KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR9
11N5819Diode_THT:D_DO-34_SOD68_P7.62mm_HorizontalD1
1Conn_01x03_MaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1Conn_01x06_MaleConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalH1
1Conn_02x02_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ1
1DB15_Female_HighDensity_MountingHolesConnector_Dsub:DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mmVIDEO_OUT1
1DB9_Female_MountingHolesConnector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmVIDEO_IN1
1GAL16V8BPackage_DIP:DIP-20_W7.62mm_SocketU1
1USB_B_MiniNecroware:USB_Mini-B-Jing_Extension_LSCS_C46398PWR1

The 20 most common of 21 parts.

Questions

How big is the Mce adapter PCB?

It measures 62.4 × 31.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mce adapter use?

21 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Mce adapter KiCad files?

From the necroware/mce-adapter repository on GitHub, at the commit this page was made from: the board is kicad/mce-adapter.kicad_pcb and its schematic kicad/mce-adapter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mce adapter design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers28.3 × 39.8 mmLevelShifter, the printed circuit board in 3D

    LevelShifter

    gusmanb/logicanalyzer

    24 channel, 100Msps logic analyzer hardware and software

    21 parts5.1kGPL-3.0
  • 2 layers171.2 × 72.9 mmAmiga gfxcard before pour, the printed circuit board in 3D

    Amiga gfxcard before pour

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    21 parts1k
  • 2 layers93.9 × 46 mmRectifier, the printed circuit board in 3D

    Rectifier

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    21 parts990GPL-3.0
  • 2 layers45.5 × 42.9 mmEsphome han reader, the printed circuit board in 3D

    Esphome han reader

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    21 parts915
  • 2 layers31.8 × 14.5 mmEsp prog, the printed circuit board in 3D

    Esp prog

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    21 parts744MIT
  • 2 layers23.5 × 15.8 mmQuiverAttachPCB, the printed circuit board in 3D

    QuiverAttachPCB

    Arrow-air/project-quiver

    Project Quiver documentation, designs, and project artifacts.

    21 parts617CERN-OHL-S-2.0
  • 2 layers69.9 × 41.3 mmHeaterMeterLCD, the printed circuit board in 3D

    HeaterMeterLCD

    CapnBry/HeaterMeter

    HeaterMeter and LinkMeter Arduino BBQ Controller

    21 parts557MIT
  • 2 layers161.3 × 111.8 mmDoj, the printed circuit board in 3D

    Doj

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    21 parts463