Marcin Chwedczuk Gives an Arduino Mega a VGA Output — By Hooking Up a Vintage Trident Video Card
Bit-banging a VGA-complliant signal is one thing, but why not give an ISA add-in board a second life?
Developer and vintage computing enthusiast Marcin Chwedczuk has released a project that makes it possible to put a VGA video output on a microcontroller board — by connecting it to a vintage Trident Microsystems ISA graphics card.
"mega-iso-vga [lets you] use [an] old Trident TVGA9000I-1 (7210 REVH1) ISA VGA card with [an] Arduino Mega," Chwedczuk explains of his work, which blends modern microcontrollers with vintage graphics equipment. "This project is based on this great hack [by SECONS]. I borrowed greatly from this code, but it was not working for me out of the box."
Trident Microsystems opened its doors in 1987 and quickly made a name for itself by offering low-cost VGA and SVGA graphics chips and add-in boards for IBM compatible personal computers. The focus of Chwedczuk's attention is the Trident TVGA9000I-1 — hosted on an Industry Standard Architecture (ISA) add-in board, which is not a format immediately conducive to connection to an Arduino Mega microcontroller development board.
"Initially I tried to use 16 bit ISA mode but it was not working," Chwedczuk explains. "So had to switch to 8-bit ISA mode. I had to switch two jumpers, one to use 8-bit ISA mode and second to use legacy 8-bit BIOS mode (disable BIOS autodetection). Since I use [the] 8-bit ISA mode I disconnected all the '16-bit ISA pins' except power."
Once wired into the microcontroller, the board can be driven to generate a VGA video output in, at the time of writing, three models: Mode03H, which offers an 80×25 character text mode with 16 colors; Mode13H, a bitmap graphics mode at 320×200 with 256 colors; and Mode12H, which ups the resolution to the VGA-standard 640×480 at the cost of dropping back to 16 colors. "There are still some bugs related to VGA planes," Chwedczuk admits, "but overall the demo is working."
Source code and schematics for the project are available on GitHub under the permissive MIT license.