Monday, May 28, 2007

Ohio Scientific Challenger Series

I remember once while on a family roadtrip I found a magazine in the car. It seems to me that the front and back covers of the magazine were torn off, as can happen easily when a magazine is left on the floor of a car. I think it was an issue of BYTE Magazine, but I'm not sure.

There was an article detailing a single board computer with diagrams. The computer was an Ohio Scientific computer, probably a Superboard.

These were very cool machines, and pretty cheap. They used a 6502 processor and had BASIC and machine code monitor in ROM; sort of a poor man's Apple II. For the money it was a better machine. With better marketing and a nicer looking case perhaps they could have given Apple a run for their money.

Thursday, May 24, 2007

Summer Break - My Own Company

When I was about 14 I decided to create my own company to create video games. I didn't even own a computer, but I spent a lot of time at NEECO, and they let me use theirs. The machine I targeted was the Commodore VIC-20, and I thought I was being clever when I came up with the name VinkSoft.

The game I created was a simple simulation of flying through an asteroid field. You needed to shoot the asteroids to destroy them or else they would hit your ship. It probably took a couple of dozen hours to create this game. The graphics on the VIC-20 were all done by creating custom graphics characters. Sound was pretty easy with the computer's built-in 3 voice tone generator and white noise generator. The actual BASIC code for the program wasn't very big because it all had to fit in 3.5K of RAM. The game was fast enough in BASIC that it didn't need any machine code routines.

My plan was to sell the software at NEECO, and the sales guys there agreed to do it. The software would be in a ziplock bag with some artwork and a cassette tape. A lot of software was sold this way back then. My father helped me with the artwork. He's pretty good at drawing sharp graphics, which makes sense because he spent thousands of hours drawing things at a drafting table.

So the sales guys at NEECO put the software on the wall (2 copies) with all the rest of the stuff there. Within a couple of days they had sold one! Unfortunately the owner of the company had not cleared this clandestine operation and when he found out he had my remaining copy pulled. I don't think they even gave it back to me.

The things we kids did during summer break. ;-)

Monday, May 21, 2007

The Peacock Feather and Sinclair

I met the owner of the Peacock Feather (a gift shop in Needham, Mass that still exists today) at his store, but I don't recall his name. He was from India, and I remember getting into a discussion with him about computers. He said he had one of the new Sinclair ZX-80 computers based on the Zilog Z80.

He seemed interested that I was about his son's age and that I knew something about programming. He told me that his son played soccer, and I guess he thought that I could befriend his son and teach him about BASIC.

So we agreed that I would come to his house to see this ZX-80. I remember that his home was absolutely filled with the smell of curry (in fact he smelled like curry even when he wasn't at home). I also remember that his son wasn't there when I visited. So much for me and his son developing a friendship.

I didn't have much time to play with his computer. It was much smaller than it looked in the ads. The keyboard was completely flat, and you just touched each "key" lightly to activate it. Each key had a letter, a graphic character, and a BASIC keyword on it. Since you couldn't touch type, the way that you would type a whole keyword in with a single keystroke help speed things up. The computer was plugged into the television set (as so many home computers did), and its plain black and white output would blank briefly between some keypresses. If your program did any computation in loops it would also blank then since the display was driven completely in software by the single Z80 processor.

It was a fun little machine to play with, but I wasn't interested in owning one after I saw it. Later on Sinclair would produce the ZX-81, a much more expandable machine. I actually recently bought a kit version of this machine unassembled which I hope to assemble at some point.

Sunday, May 20, 2007

The Coleco Telstar

When I was a kid the only video game console I can remember having in the house was mine. It was a Coleco Telstar Arcade console. I bought it used from a listing in the Want Advertiser classifieds magazine (a publication native to New England).

This was a rather strange console, with very limited game options. Unfortunately I got bored of playing with it rather quickly.

Nowadays we have three consoles in my house.
  • An Atari 7800 console
  • A Nintendo 64
  • A Nintendo Gamecube

The Atari console is the one we play most. I bought it used years ago with about 30 cartridges. I think I paid about $50 for the lot. Most of the games are Atari 2600 (they work on the 7800) but we have some 7800 cartridges too. We play Ms. Pac-Man, Donkey Kong Jr, and Space Invaders most.

Thursday, May 17, 2007

The Home Computer Era

In the early 1980s there were so many kinds of computers before IBM killed off all the diversity with their IBM PC. This was a shame, especially since the microcomputer industry was only 5 years old and there wasn't a rich computer culture yet. The PC stopped the innovation in its tracks. Before the IBM PC small computers were usually called home computers.

It was wonderful that you could usually buy a 250 page book for the computer of your choice. That book would tell you everything... EVERYTHING about the innards of the machine. You could bend the computer to your will. These days you have no idea what's going on in the machine. As a programmer you deal with the Windows API, or with the Java SDK platform.

Sometimes I wonder how hard it would be to create a new computer simple enough to master it all the way down to the bits. The operating system would be very small and simple, and the machine could be programmed in BASIC, Forth, and assembly language. The code for the whole thing could be open sourced. Perhaps there wouldn't be a way to make money with such a product, but it would be fun. :-)

To get a feel for what this time was like, watch this YouTube video of Steve Wozniak relating his experiences growing up and designing the Apple computer. Great stuff!

Tuesday, May 15, 2007

Easy A Grades

In my seventh and eighth grade years we were required to produce reports for our math class. I can't say for certain what sort of material filled the reports of other students. Since it was pretty unusual for a middle school student to know how to program computers back in 1981 I had no difficulty getting my teacher's permission to write both my 7th and 8th grade reports on programming.

For 7th grade I wrote a report that explained programming on the TI-57 calculator. I hand typed the report on a manual typewriter. I remember being up all night before it was due (I had a bad habit of doing that).

For 8th grade I wrote a report introducing the BASIC programming language. The teacher decided that I should use the blackboard to explain to the class how it all worked. If memory serves, I remember that the presentation was also attended by a trained programmer, who happened to be the father of one of my fellow students.

I knew more than the teacher about this subject, so these were easy A's. :-)

Saturday, May 12, 2007

Soldering and machine code

I should probably interject here that a year or so before I really got into programming my brother Neil bought me a kit radio for my birthday. It was a small battery powered AM radio, which did not look like a kit at all when completed. It could easily have passed for a commercial offering you would buy at a department store.

This kit was great fun to put together, and it helped me learn how to solder. I would use this skill as I got older for many purposes, some of them computer related.

I wish there was more of a kit culture today. While you can build robots with Lego Mindstorms and similar systems, it makes sense to learn things as fundamentally as possible.

In a similar way people studying computers should consider learning at least a simple machine code. For example before I had any opportunity to program in machine code I read a book on Z80 machine code. Eventually I had some chance to write 6502 assembly. I never mastered assembly language but it was valuable experience. I suspect that many young people studying computer science today are not exposed to the bare hardware of the machine these days. Universities should be held to account for this IMHO.

Thursday, May 10, 2007

Bad Cable

One day while I was hanging around at NEECO a man came in who needed a custom video cable for his VIC-20. The exact specification escapes me now, but the store didn't have what he needed. I volunteered to run down the street to You-Do-It Electronics and buy what we needed to make the cable. When I got back we tried to put the cable together, but no matter what we did the results were terrible. Creating video cables is not as simple as it would seem.

Tuesday, May 8, 2007

Star Trek, BASIC and Arrays

I think most of all my early programming ideas were advanced by writing games. When I was still a beginner I decided to create my own version of the classic Super Star Trek game that I played on the Babson College minicomputer on a dialup connection from the Needham Public Library.

I grabbed a yellow lined notepad and started writing code in BASIC. After a half page of code I began to write lots of IF THEN statements, one almost exactly the same as the next. I realized after a bit of this that my program was going to be gigantic!

So while I was walking to the library with my brother Ernie I told him what I ran into while trying to write the program. He explained to me that I needed to learn to use arrays (he called them subscripted variables). I really had no idea what he meant. I can't remember clearly how I learned about arrays, except that Ernie must have shown me how to use them. Along with arrays it was great to learn about nested loops.

With his help I was able to write a version of Star Trek in BASIC for my father's Heathkit H-89. Later I wrote a version for the VIC-20 as well.

So this was a breakthrough moment for me. Arrays make many kinds of game programming practical, and I made good use of them. It was easy to for me to see that to create a game is to craft a simulation (even if for an imagined reality). This insight served me well as I wrote more and more software.

Sunday, May 6, 2007

Teletypes and paper tape

At the Pollard Middle School in Needham, Mass they used to have a couple of old teletypes that connected by modem to the Needham High School where they had a DEC PDP-11/40.

The teletypes looked like this:

I didn't actually attend Pollard Middle School, but my brother Ernie did and he took me with him a couple of times to use these. The teletypes are pretty darn ugly (I think). They are also ridiculously slow and noisy. The only nice thing about them is that you can punch your BASIC program out on paper tape and take it home with you. Later you can come back and read it back into the PDP-11 and work on it.

I really preferred using a CRT terminal.

Saturday, May 5, 2007

The VIC-20

In 1980 Commodore introduced a new 6502 based $299 home computer called the VIC-20.

It was essentially a version of the Commodore PET that plugged into a TV set. For the price there was nothing like it. It had Commodore BASIC built-in, color and sound, a joystick port, and a cartridge expansion slot. It didn't have graphical sprites, but it was still capable of video games and it cost about half the price of an Atari 400.

I wrote a lot of software for this machine at NEECO where I hung out. It didn't have full screen graphics, but you could program the graphics characters on the fly. It did have a very low screen resolution (22x23 text mode, 176x184 graphics mode) and it only came with 3.5K of available RAM out of the box, but we were very used to limited memory back then.

Compute! magazine had some really great software listings for this machine, like a graphics character editor for example and a machine code monitor. Just type it in and go. :-)