My First Program

Matt blogs about the the first program he ever wrote. His reverie has prompted me to relate the story of my own first program and early programming experiences.

My first program was written in BASIC in 1979 and executed on my brother’s Unix account on a PDP-11. He had given me some class notes he had for BASIC as part of his Chemical Engineering course. I was absorbed and wrote the progam on paper, executing it with paper virtual variables and writing it out many times. The program was, of course, a game – a ballistic cannon ball thing – enter the amount of powder and the angle to hit a target at a random distance. It took a while before I got access to the actual BASIC interpreter. It worked first go which was pretty cool.

I was hooked, then and there. My parents spent a fortune to buy a Tandy Model 1 TRS-80. Thinking of the machine’s specs now is almost funny (1 MHz 8 bit processor, 16k of RAM, 1k video RAM, 128 x 48 graphics res, cassette tape storage). Yet, as pathetic as it now seems, I would learn an immense amount from getting to know that machine.

I remember using POKE and VARPTR in a program to perform a mysterious operation called a “left shift”. I was disappointed to find it just multiplied by 2 – I could do that in BASIC already. Later I would get into hardware. through the machine’s expansion port and a 40-way edge connector. I remember slowing down programs by pulling the HALT line low for a split second. If you left it too long, it would blank the DRAM since the refresh also stopped, causing a crash.

I’m glad I started with such humble stuff because I squeezed the most I could from it. It was simple enough to understand everything about it – something which is probably not true today. I even still like to occasionally write assembler programs.

From that day I have used a variety of machines, rarely the most powerful available. The idea is to make the most of what you’ve got, not to covet the latest and greatest available. I did that once – anyone want a PowerMac 8100/80AV?

Disclaimer: I may be off on the MHz values, etc – all a bit hazy now.