Saturday, October 2, 2021

RetroChallenge 2021/10 Hello World

 Hi all! Time for RetroChallenge 2021/10 thrills and spills!

Summary:

My project is to control an 8x5 NeoPixel RGB LED array from an Altair 8800bt computer, with an Arduino Uno R3 gluing the two together.

Details:

A while back I received an amazing donation from a former employee of Pertec (the company who bought MITS back in the 70s). This included an Altair 8800bt (turnkey model) and lots and lots of MITS S100 boards.

The 8800bt works, and didn't actually require much restoration. I did completely disassemble it and clean everything, and tested the power supply before trying it with any boards installed. All went well with the reassembly and the system functions nicely.

It's currently equipped with an iCom 3812 dual density dual 8" drive system, the associated interface card, and a CP/M 2.2 version designed for this combination of computer and drive.

Here's a picture of the 8800bt from the front:




I don't have a top for either the 8800bt or the drive unit. (If there's a good opportunity, I'll explain that in a subsequent post.)

Here's the 8800bt from the top/side, facing the front side of the S100 cards:




The card that's in front with the rainbow cable coming out of the top is one that I'll be talking about a lot. It's a MITS 88-4PIO (manual on deramp.com here) - a 4 port parallel interface card, based on the Motorola 6820 Peripheral Interface Adapter (PIA) chip.

Here's a picture of the iCom 3812 dual drive unit:



(Sorry for the NEC monitor photobombing the 3812 on the left. New tech always trying to sneak in the picture...)

The drive system doesn't have much to do with the project, other than it's what I'll be using for program storage and running CP/M. For more info on this drive and others in the same family, check out some YouTubes from Mike Douglas:


Current Status:

Full disclosure - the Altair is already able to talk to an Arduino Uno R3 via the 88-4PIO board. I hooked this up a while back and wrote some 8080 assembly code (and C code on the Arduino) to get the two talking.

However, the code I wrote on both sides was a pretty ugly proof of concept, and there's still much more to be done:
  • Create a protocol for the Altair to send blocks of 40 (8x5) 24-bit RGB codes to the Arduino
  • Implement that protocol on the Altair and the Arduino
  • Connect the Arduino to the NeoPixel array, and test that the Arduino can control the LEDs (this should be easy - the code is already out there, and the LED array has been tested before)
  • Write a program on the Altair that lets the user select a pattern or animation for the LEDs, and then sends this pattern or animation to the Arduino using the protocol mentioned above
  • Write it all up as I go and post it here
  • Make one or more videos about the process, and also link those here
And not to mention, have fun! 

One downside is that RGB LEDs don't always come across well on camera. It's tough to get a picture or video of them that does justice. But I'll do my best.

See you in the next post!

- Earl