If you have been following the ongoing saga of my CGA card, you would have seen the recent progress in repairing the extensive damage to the card, and getting the card running with Sergey’s Micro 8088. Although I haven’t yet tested the full features of the card, I’m reasonably confident that it has been successfully repaired.
Having jumped that hurdle, I am now contemplating the journey required to create an open-source video card inspired by the CGA card that I have, in an attempt at preserving the legacy of the CGA and allowing a means for future generations to create and learn about this historically significant video card.
Creating an open-source design would also absolve some of the guilt that I feel at almost destroying this important piece of computing history that I own. Over time, it is expected that these cards will become so rare as to be impractical to source and use in the context of hobby retrocomputing.
An open-source design would also allow me to “pay forward” some of the significant efforts that others have put in to the hobby of retrocomputing. I would not be able to do what I am doing today without the contributions of the likes of Sergey Kiselev and others. I wish to thank them by contributing to the hobby myself.
So, what does the journey towards a CGA-inspired design look like?
I think it’s important to set out a list of guiding principles to follow. To that end, I offer this list:
- The design needs to be undertaken using the open-source KiCad software package.
- The design needs to be held on Github to facilitate access for all and to implement version tracking.
- The design needs to use as few PCB layers as possible to enable flexibility of fabrication/printing.
- The design needs to be as historically accurate as possible. Having said that, a maximal amount of components should be used that are commercially available in this modern age.
- Where not possible to use legacy components due to lack of modern supply, modern equivalents or substitutes should be used.
- Through-hole parts should be used in preference over surface-mount parts.
- No inherent hardware bugs will be fixed, in an attempt to preserve the various quirks of the original CGA card.
Additionally, I have some specific design principles that I feel are important to achieve:
- The composite video and RGBI signals should be “broken out” to pin headers such that a daughter-card may be mounted to the board. This would allow the community to design their own daughter-cards to expand or build on the card’s functionality.
- There should be a series of mounting holes present on the board to facilitate the mounting of a daughter-card.
- The card should be designed such that its lower edge is not re-entrant. I.e. the card should be able to fit within 16-bit ISA slots without fouling with the 16-bit connector. This would allow the card to be mounted to systems such as the NuXT.
Over time, other important aspects of the design may develop and evolve organically. I’ll aim to update these lists when/if changes to the guiding principles occur.
I will endeavour to provide regular updates on my progress on this journey, and as always hope that you find it interesting and/or entertaining.