jblang / TMS9918A

TMS9918A video card for RC2014
https://hackaday.io/project/159057-game-boards-for-rc2014
128 stars 22 forks source link

Operation with single-row RC2014 bus ? (with possible answer...) #9

Open rwdavis3rd opened 3 years ago

rwdavis3rd commented 3 years ago

I'd looked forward to operating this TMS9918a video card as part of an SC130 (Z180) configuration. I was a little disturbed to observe that video card made some use of (some-of) the second-row of RC2014 bus pins, which suggested it was not a fit for the single-row SC130 implementation.

After some study of the video card schematic, it appears that the video card taps the 2nd row simply for access to Z80's NMI. And studying the cards jumper settings, I further learn that the use of NMI is usually only prescribed when another board on the RC2014 bus is already using the conventional (maskable) INT signal.

jblang, or real-world testing, may prove me wrong, but... it appears that others (like me) who have single-row RC2014 "Z80" busses can proceed with confidence in most cases. And for my part, if I later discover a need for the TMS9918a to tap the NMI line, I'll probably just float a wire to implement this signal path.

Sound right?

Thanks for any thoughts, and (more importantly) thanks for making the venerated TMS9981 graphics readily accessible to geeks like me.

jblang commented 3 years ago

Yes, it should work with only the single row header if you don't need NMI. ColecoVision software requires the use of NMI, but if you don't care about that, you don't need it.

The INT line can be shared as long as you have REV4 of the board or later. REV4 has a diode to convert the INT line to an open drain output that can be wire-ORed with other open drain interrupt sources. That solves the hardware issue, but software in this case has to be programmed to check the registers of every device that might generate an interrupt to determine which one it has to service. Also, it is only compatible with the Z80's interrupt mode 1.