Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The TMS9918 video chip is the common thread between those machines, and it's a fascinating bit of hardware.

The interface between the TMS9918 and its host system is dead simple: 8 data bits, 1 mode bit, 1 chip select bit, and nothing else. It manages its own 16 kB of VRAM and no other timing or clock signals are required between the 9918 and its host CPU.

As a result it was used in all sorts of machines of the era: TI 99/4A, Colecovision, Coleco Adam, MSX, Sega SG-1000, plus multiple different expansion cards for the TRS-80 and Apple II. It also supports genlock video input and was used in early-80s video production.

Most importantly, its programming interface is well defined and extensible. It allowed Yamaha and Sega to produce upgraded chips for the Sega Master System and MSX2 while maintaining backward compatibility, something that Commodore wasn't able to do with the VIC-II chip in the C64.



In late 1981 I built a computer around the Z80, TMS9918A (actually 9928A as I wanted PAL-M output) and the TMS5220 voice synthesis chips. I called it "Einstein" and only found out decades later that there was a computer from Tatung with the same name, processor and video chip that sold in the UK in 1984. Great minds think alike, it seems...

I was not able to get a datasheet for the 9918 and had to abandon the project. In early 1983 I did get a nice book from Texas Instruments by asking them to send it to an address in the US, but I only skimmed it. That was a huge mistake. A few months later I started a new computer project for the Logo programming language and remembered that Logo in the TI99/4 kept "running out of ink". There were only 256 different characters which could be redefined but the screen was 32x24 = 768 characters in size. So 2/3 of the screen had to be blank as the turtle moved around it. So I went with the Motorola 6883/6847 combo instead (the same as the TRS-80 Color Computer).

It so happens that the TMS9918A used in the TI99/4A has a new mode that the TMS9918 didn't: you can divide the screen in 3 with a different character set for each part. That would have given me Logo with infinite ink.


The TMS9918 is as simple as it is beautiful. A couple of years ago I wrote an MSX emulator in Java for fun. A pretty accurate TMS9918 emulator took just a couple of hours to write with the original technical handbook at hand, in 561 lines of Java code.

https://github.com/tjitze/TMSX


I am making a Youtube video series about the TMS9918A. So far, I’ve driven it with an Arduino and a 6502. The next video will get VRAM hooked up.

https://www.youtube.com/playlist?list=PL3itg4Usn3F-24qjSrlY4...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: