I had a lot of hobbies when I was a kid. By the time I was 17, I had read a lot of books on how to build a microcomputer. This was way back in the late 70’s when only Apple II and Commodore Pet ruled the PC market. Both computers were out of my price range. So I build a single-board computer using an 8085 CPU, 4k of static RAM and an UV erasable PROM chip. I managed to get the computer working with help from an electronic engineer that was my neighbor.
He had the equipment to find timing problems that I was too green to understand. Fortunately, there was only one signal that needed a delay and the whole computer board worked just fine. I remember thirsting for knowledge about how a computer works. I thought the CPU was just magical. I couldn’t understand how it know what to do with the next instruction. Until I stumbled onto a book that explained the micro-program circuit. Suddenly it all came together and
I had my missing piece of information about computers. That was the moment I became disappointed that there was no magic involved. Darn, it was just a machine that just read signals from memory and followed commands one by one.
My disappointment wore off quick though, because there was so much I wanted to do with a computer. In those days writing a program consisted of physically writing it on paper and working out as many details as possible before typing it in. I learned 8080/8085 assembly language and performed some simple programming in that language. I also learned BASIC, from books. I still have some of those books, like: "Basic Computer Games" by David H. Ahl and the second one "More Basic Computer Games" also by David H. Ahl.
After high school, I attended college for one partial year and discovered that I had no financial means of continuing college. So I joined the Navy and entered into the Advanced Electronics program. This was a 6 year enlistment and included Basic Electricity and Electronics school (BEE) that was self-paced. I blew through that school in about 6 weeks (I could have done it much faster if I could schedule two or more tests each day). Then I attended A school, which is the standard school for all electronics technicians in the Navy.
At the end of A school, I had the highest grade in my class. The Navy provides a list of orders that students pick from starting with the person with the highest grade first. I chose orders to continue on to C school for satellite communications, automated systems and a 3-year stint on the U.S.S. Worden (CG-18) out of Pearl Harbor.
While I was stationed in Pearl, the Apple Macintosh and IBM PC became available (actually, the PC was available when I was in high school, but it was expensive then). I saved a lot of money and bought the Mac because it fit in a small space. I also bought Microsoft Basic to go with it and found out rather quickly, that 128k doesn’t do a whole lot on a computer with a graphical interface. I look back now and laugh. By the time the OS loaded and I started up MS Basic, there was probably 10k left for the source code of a program.
Fortunately, it wasn’t long before Apple offered an upgrade (one that consisted of replacing the motherboard) to a "Fat Mac" which consisted of 512k of memory. Then I got serious. So I was working on a small game when I discovered the tyranny of line numbers. Oh boy, I was spending more time trying to renumber the lines and keep track of where my procedures started than I was spending working on the actual code. So I went to the Mac store and browsed for new products. Sure enough, they had a language called Mac Pascal on the
shelf and the back of the box had some sample code on it. It looked a lot like Basic. Without the ugly line numbers. So I bought it. Mac Pascal was a run-time language, not a compiler. I learned a lot about Pascal, really fast. So I was working on a game (yup, you guessed it, I liked to program games as a hobby), and I discovered that the global memory that can be allocated for Mac Pascal was limited to 32k. Yikes! My solution? Buy a book, or two. I read about dynamic memory, linked lists, double-linked-lists, etc.
I used dynamic structures to store my playing boards, my units, etc. This solved my issues for a while until I stumbled onto Turbo Pascal by Borland. It came out a year or two later and I was excited about having the ability to compile a stand-alone executable file.
After I was honorable discharged from the Navy, I went back to school to get my degree in Computer Science. I was way ahead of my classes. Some students had prior knowledge of programming but not many. Nobody had both the hardware experience that I had and the deep programming knowledge, including pointers and dynamic structures. I had to buy my own PC to do my homework projects because it didn’t take long for the students to discover that I can solve any programming problem and explain any technical issue in a different manner from their instructor.
Entering the computer lab was hazardous business. I also got recruited to participate in the ACM regional programming contests. I didn’t hestitate to sign up for that opportunity. I love a good competition.