Friday, April 11, 2014

Dates with KIM

In 1982 as a junior at KSU, I took one of the more advanced classes in computer science. There were six of us in the class, but I forget its name. The class was for 6502 assembly language, and was held in an attic lab of one of the oldest of the computer science building, Fairchild Hall. It was my first computer science class is such an intimate setting. No lecture hall, no classroom, just the professor and us six students up in an attic. Us and KIM.

The KIM-1 was a 6502 kit computer with a hexadecimal, calculator-style keypad, 6-character 7-segment LED display, and a whopping 1 KB of RAM. There was no mainframe and no compiler, just coder and machine working together in absolute real-time. You would write your program on paper, compile it into hexadecimal numbers, then punch the numbers in to the KIM using the keypad. It was a tedious process, but it felt like peeking behind the computer curtain, and I loved that. After several weeks I had the entire op-code set for the 6502 memorized so I could compile programs in my head and just punch them in to the KIM. The sense of power it gave me to be able to do that - not even the professor could do it - was more than just gratifying. It was empowering, it was like freedom to me.

Debugging was another story for most of the students in the lab. All you had was that 6-digit 7-segment LED display. It was like an old digital clock display. If your program didn't work properly, more often than not there were simply no clues. You could step through your program one instruction at a time, and then use the keypad and display to show values in memory. It was like the most complex puzzle I'd ever known, and I loved it.

The KIM also had two input/output ports, and the lab was full of miscellaneous equipment you could interface to the KIM for one of your projects. Equipment like analog printers that had no buffer and required that your program start the print head moving, and then send it one character at a time at just the right intervals in order to form text coherently. You would have to calculate how much time each instruction in your program required, so that you could perform the printing correctly according to the print head movement speed. It was glorious. Or equipment like an old rotary phone dialer where your application had to read the numbers dialed as the voltages spiked and waned, accounting for signal bounce as you went, as your evil professor would half-dial repeatedly to mess with your program. All the equipment in the lab worked this way, and I was in heaven with the myriad of challenges. I completed twice the number of projects as required, I just couldn't get enough.

But my new obsession with assembly language programming with the KIM and all the wonderful equipment in the lab started to eat into all the extra time I normally spent in the big computer labs helping students outside my normal TA hours. And they let me know it every time they saw me! Instead of heading to the big labs when I had free time, I found myself heading up to that little attic lab to discover some new piece of equipment to interface. The challenge of helping students debug their own programs was becoming replaced with the challenge of discovering how far I could take my own skills. I had taken courses in all kinds of higher level languages like Pascal and PL/1, but those now seemed like just variations on a theme. What I could do with a KIM felt more real, it felt more intimate and more limitless. This passion would consume me for the next decade - the decade of the personal computer revolution.

No comments:

Post a Comment