PICO9918: TMS9918A VDP drop-in replacement powered by a Pi Pico (with source) - Page 1
Forum section: electronics / general

author: visrealm
author_rank: Contributor
timestamp: June 10, 2024, 02:33:29 am
content: Hi all,I know a number of you are using (or planning to use) TMS9918A VDP in your homebrew projects (including myself). Thought I should share my new project: A drop-in replacement for the TMS9918A using a $4 Raspberry Pi Pico.Here's a couple of videos showing it in action in my TI-99/4A:It freaking works!Don't mess with Texas!The hardware supports 12-bit VGA rather than Composite or YPrPb. Currently, I'm only implementing the original TMS9918A/TMS9929A, though I could certainly look into implementing some of the awesome F18A features in the future.The PICO9918 is much easier to hook up than a TMS9918A since the VRAM and Clock is all handled in-house. I'm at an early stage hardware-wise where I'm using an off-the-shelf Pi Pico. I plan to incorporate the RP2040 directly in a future revision, further shrinking the package.I've shared all the source code on GitHub:https://github.com/visrealm/pico9918

author: SiliconWizard
author_rank: Super Contributor
timestamp: June 10, 2024, 03:15:39 am
content: Cool stuff.

author: profdc9
author_rank: Frequent Contributor
timestamp: June 11, 2024, 02:33:25 am
content: As a person who grew up with a TI 99 4A, I can only say this is amazingly cool.The way you could one-up that would be to go all the way to the Yamaha V9938https://en.wikipedia.org/wiki/Yamaha_V9938as used in the MSX 2. I could see a V9938 clone being very popular on retro computers.

author: SiliconWizard
author_rank: Super Contributor
timestamp: June 11, 2024, 03:55:36 am
content: The PIO is really great for this kind of stuff. I wish more MCUs embedded this kind of thing, and also that the RPi would release a new, upgraded version of the RP2040, possibly with a bit more RAM, a bit more performance and an updated PIO with more slots and possibly a couple more instructions.

author: visrealm
author_rank: Contributor
timestamp: June 11, 2024, 12:00:57 pm
content: Quote from: profdc9 on June 11, 2024, 02:33:25 amThanks. Could certainly look into the V9938/V9958 in the future. Would have to be a separate project as it has additional pins. I've started looking into implementing some of the F18A (FPGA TMS9918A replacement) features due to a number of requests for 80 column mode specifically.Added that this evening:Quote from: SiliconWizard on June 11, 2024, 03:55:36 am100% looking forward to the next gen RP2040.

author: westfw
author_rank: Super Contributor
timestamp: June 12, 2024, 08:51:02 am
content: QuoteSo the PIO is fast enough to implement the bus logic of the old 8-bit CPUs?Did you do any calcs to figure out exactly how fast the bus can go? I assume the limiting operation is output data on the bus after a RD strobe...

author: visrealm
author_rank: Contributor
timestamp: June 13, 2024, 12:48:54 am
content: I'm using PIOs for the VGA output and to generate two external clock signals, but I'm not using PIOs for the bus. I probably could - haven't tried, but they're more -suited to data streams (like a VGA signal for example) rather than random requests. Instead, the BUS interaction is handled by an interrupt handler on a single CPU core. I have the Pico running at 252MHz, so I have around 32 clock cycles to respond to a request on a 4MHz bus. It's not a lot, but it's enough.