History

One of my first exposures to computers and video games came from the Atari VCS, also known as the Atari 2600.  I was a freshly minted teenager when they were first released in 1977, and they seemed like magic.  A few years later Atari would release their 8 bit computer system, and I would spend my summer days doing yardwork for neighbors to raise the money so I could buy my first computer.  

Fast forward a couple of decades, and I was gainfully employed as a software engineer working in the film industry, but I still enjoyed "recreational" programming.  I thought back to my first experiences with the Atari 2600, and wondered just how people had implemented many of the games on such limited hardware.  After all, the baseline Atari 2600 had very limited hardware:

  • A 1.17MHz 6507 processor, with only a 12 bit address bus (addressing just 4K of ROM)
  • It had only 128 bytes of RAM.  Less than a tweet.
  • It had no framebuffer.  A special purpose chip (the TIA or Television Interface Adapter) generated the video on the fly, assembled from a 20 bit playfield, two 8 bit player sprites, two missiles, and a ball.
  • Doing almost anything required you to compute the screen image on the fly as the phosphor was tracing out the signal.  Such programming became known as "racing the beam".

And of course, back in the day, the documentation and development hardware was essentially unobtanium. 

But by 2006, life had changed a great deal.  Everyone had development hardware which vastly exceeded the capabilities of anything at Atari in 1977, and various cycle accurate emulators such as Stella were widely available that made experimentation and learning so much easier.  The Stella Programmer's Guide provided tons of hints and background, and I had a blast experimenting and learning more about this crazy machine.

2006 The Enigma 2600

Around this time I also became obsessed with the history of codes and cryptography, resulting in a crossover of my interests.  I decided to implement a version of the three rotor German Enigma machine.  It was a nutty project, which caused me to buy an EEPROM programmer and actually manufacture a physical cartridge which I demonstrated at the very first Maker's Faire.

This was a crazy project, and frankly I wasn't even sure it would be possible.  Displaying an alphanumeric interface like this on such a limited machine was considerably difficult.  It remains one of my most hard to explain wastes of time and effort.  

2010, a "Pong Clock"

After a couple of years of recovery, I decided to do another small project. I had read about the Dutch product development firm Buro Vormkrijgers who had made a limited run of  a "pong clock".  It basically was a video display that would auto play pong, and keep time which was displayed as the score.  That was pretty much the sum total of all the research I had done, but based upon that one sentence description, I embarked upon creating a pong clock of mine, implemented on the Atari 2600. 

Compared to the Enigma 2600, this project was a walk in the park.  While the Atari 2600 hardware was primitive, pong is pretty simple, and the hardware is well suited for implementing that.   I created an implementation which I burned on a spare board that I had sourced back in 2006 for the Enigma project, and demonstrated it (to polite interest) in the demo room at conference I attended that year.

And then, I pretty much forgot about it.

2025, the 1Hz challenge

It's now just a couple of weeks to the deadline of the Hackaday 1Hz Challenge, and my mind shifted back to this old Pong Clock challenge.   Thinking to myself, it generates events a 1Hz rate, the bouncing of the ball back and forth is timed to a 1 second rate!

But that's really just software, and perhaps not very interesting.  But...

Read more »