Live data from Hacker News

Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

oldvcr.blogspot.com

11–20 of 49 posts

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#11
post #9

Earlier quoted context omitted.

It's a nice hack. I think this is how Woz did the Apple II paddles, too (albeit with discrete components and a timer IC). It sounds familiar.

Yes, the Apple II also uses a resistor-capacitor timing circuit to determine the paddle position. The big difference, however, is that the Apple II uses the timer and a counter to produce a paddle position 0-255. Software can then use this value to e.g. draw a paddle at a position on the screen. The game chip, on the other hand, doesn't produce a value. Instead, the timer is synchronized to the screen drawing, so whe…

How is intersection with the ball detected?

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#12
post #11
post #9

Earlier quoted context omitted.

Yes, the Apple II also uses a resistor-capacitor timing circuit to determine the paddle position. The big difference, however, is that the Apple II uses the timer and a counter to produce a paddle position 0-255. Software can then use this value to e.g. draw a paddle at a position on the screen. The game chip, on the other hand, doesn't produce a value. Instead, the timer is synchronized to the screen drawing, so whe…

How is intersection with the ball detected?

I think that the circuit at the top center of the chip detects collisions. E.g. if the paddle is being drawn at the same screen position as the ball, then you know that the paddle has hit the ball. This way, you don't need to store the paddle position and you don't need to compare the paddle and ball positions, you just check if a paddle pixel and a ball pixel happen at the same time.

I haven't figured out how the ball position is stored. It seems like they'd need a register for the X and Y position, along with an incrementer/decrementer, but I couldn't find that. Maybe there's something tricky going on. Or maybe I haven't looked in the right place.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#13
The MOS 7601 was the first CPU I learned how to write code for, circa late 1977 to early 1978. I would scour jumble sales for broken pong games and the other, more sophisticated console variants to cannibalize for parts, with one conversation about haggling with another buyer over who got what parts leading to a job.

There were several machines of the time that had pluggable cartridges, from Binatone, Telarude?/Telalude? (French or Italian company I recall, I forget), Telstra/Telstar, again, I forget, it was 45 years ago, along with many others, where the display circuitry, power and joytsticks were all on the main board, but each cartridge carried its own CPU and ROM, which was the fashion back in the day.

They were an absolute bugger to write code for, no complex ALU to speak of, no register storage, no RAM, you sort of just chased the CPU with a stream of instructions, stored stuff in decay buffers (you want a countdown from 10? charge up that cap for a brief period of time then let it leak) or on the display output circuitry that you could read back if you needed. If your code went wrong, you never knew it.

You were mostly bit-banging analogue circuits to get anything to display, same for the audio, though it could also talk to some AY audio synthesizer.

I recall the 7601 had a reasonably short lifespan in the marketplace for a variety of reasons.

There were two datasheets for it that were the bible, there might have been more but I only ever had access to bad photocopies of those two. One was the usual electrical characteristics and the other was the instruction set with the usual timings, delays and addressing modes.

The addressing modes were stupidly simple by the standards of today. There were EPROM variants (gold pin variant IIRC) available that you wiped with a strong ultraviolet light, but generally you had an off-board EEPROM and you tied two of the pins high to let it know it should use the external EEPROM.

When I tell people my first game I wrote fit in less than 500 (8-bit) bytes, they wonder how that is. The game was never released but Race Electronics and their desire to cash in on this new fad and exploit the younger, more gullible version of me, did give me my start in video game development so I am thankful for that, in a way. The next game I wrote fit in 2KBytes and I had the luxury of using a 6502 CPU and access to actual RAM on a CBM PET.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#14

"The way the paddles in particular are drawn is especially ingenious; in fact, the firmware doesn't even need to position them. The paddle controls are simple potentiometers feeding into an R-C circuit (external to the chip, not shown here) that discharges at a rate based on the pot's resistance. This then feeds into an on-chip comparator in the region marked "paddles," delaying drawing the paddle a number of scanlin…

If you want the least amount of lag possible, you now know which device to turn to. I'm thinking of the famous lag table of character entry for 80s 8-bit computers and modern PCs.

This device should be remade for a 120 Hz display to halve the maximum lag from 17 ms to 9 ms.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#15
i had a binatone pong game that sounds like it was based on this chip. It had a bunch of variants of pong you could play based on moving a couple of physical sliders -- squash (bounced off a wall), football (two bars per player), etc.

The crazy thing was that if you turned the sliders just right, you could also play "off menu" games which had combinations of the attributes of the official ganes. I guess this was down to some of the tricks described here. It certainly confused me a lot when I learnt to program: you can't just compose two games together by half-clicking on an option!

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#16
post #12
post #11

Earlier quoted context omitted.

How is intersection with the ball detected?

I think that the circuit at the top center of the chip detects collisions. E.g. if the paddle is being drawn at the same screen position as the ball, then you know that the paddle has hit the ball. This way, you don't need to store the paddle position and you don't need to compare the paddle and ball positions, you just check if a paddle pixel and a ball pixel happen at the same time. I haven't figured out how the ba…

The brilliance of this is there's no chance of bugs caused by the internal paddle position (that causes the ball to bounce) not matching the drawn position, which would make the ball either pass through the paddle or bounce off nothing. Whether that was any part of a motivation for this design or it was purely driven by technical limitations, it's just a very elegant solution.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#17

The MOS 7601 was the first CPU I learned how to write code for, circa late 1977 to early 1978. I would scour jumble sales for broken pong games and the other, more sophisticated console variants to cannibalize for parts, with one conversation about haggling with another buyer over who got what parts leading to a job. There were several machines of the time that had pluggable cartridges, from Binatone, Telarude?/Telal…

What was the game? Could you possibly run it again?

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#18
I’m reminded of that scene in Battlestar Galactica (2004) where Starbuck cuts open a crashed Cylon raider, climbs in, and finds it’s actually organic rather than robotic — instead of the neatly-organized metal and wires and computers you’d expect to see in a hi-tech starship, it’s full of messy flesh and blood and organs.

In the same way, here they cut open a microcontroller and instead of finding a neatly organized CPU with all the usual recognizable bits and software written in a straightforward ISA, there’s this weird, surprisingly analog amalgamation between hardware and software, between control and data. It’s not obvious how anything even functions because it’s so alien compared to our nice, clean, modular general-purpose CPU. Instead it feels…almost natural, like the hardware and software grew and evolved together as a single unit (which, to be fair, they probably did). It’s beautiful and terrifying at the same time.

At least, that’s how it feels to me as a (sleep-deprived) software engineer. Maybe to a hardware guy, this is just Thursday.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#19

"The way the paddles in particular are drawn is especially ingenious; in fact, the firmware doesn't even need to position them. The paddle controls are simple potentiometers feeding into an R-C circuit (external to the chip, not shown here) that discharges at a rate based on the pot's resistance. This then feeds into an on-chip comparator in the region marked "paddles," delaying drawing the paddle a number of scanlin…

If you want the least amount of lag possible, you now know which device to turn to. I'm thinking of the famous lag table of character entry for 80s 8-bit computers and modern PCs.

Using these machines on a 2022 display adds so much lag, it really makes them unplayable. On a CRT the connection between your movement and the paddle on screen is so immediate and undamped, it can be quite a powerful experience as you embody it despite its crudity. Helps to understand how simple games like this were so popular.

I have a few, but sadly I don't have the space to keep a CRT monitor too.

Re: Confirmed the MOS 7600/7601 Pong chip is a true microcontroller

#20

i had a binatone pong game that sounds like it was based on this chip. It had a bunch of variants of pong you could play based on moving a couple of physical sliders -- squash (bounced off a wall), football (two bars per player), etc. The crazy thing was that if you turned the sliders just right, you could also play "off menu" games which had combinations of the attributes of the official ganes. I guess this was down…

> you could also play "off menu" games

This is called “circuit bending” now and has quite a following.

I did it with the Atari VCS (now called 2600) quite a bit. The Spider-Man cartridge had some great weird incarnations by moving power switch half-way, as did a few other carts.

Post reply on HN