Tell us about Jim Gerrie. Who are you? What do you do for a living?
I’m a Scots Canadian and a Cape Bretoner (I live on the Island of Cape Breton off the east coast of Canada). Cape Breton was a former centre for coal mining and steel production. My grandfather was a crane operator in a steel mill before an explosion blinded him, my father was a draftsman in the steel fabrication plant and I’m a professor of Philosophy and Religious Studies at Cape Breton University. I have a wife, Patty, and a 16 year old daughter Madeleine, 15 year old son Charlie, and a 4 year old daughter Naomi-Marisol.
Which was your first experience with a computer?
When I was 13 my mother, who was a primary school teacher, brought home a TRS-80 Model III on weekends. This was possible since it was an all-in-one computer (monitor keyboard and CPU were all one unit). I started programming by typing in programs from books and magazines. I soon moved on to trying to make some games of my own for my friends. At that time almost any computer program would enthrall us for hours, even extremely simple ones.
TRS-80 Model III – Source: Wikipedia
Since my mum couldn’t always get the machine on weekends, I began saving my money from lawn-mowing and snow shoveling to get a computer of my own. I was finally able to buy an MC-10 in 1984 when I was around 14 years old. It was a North American equivalent of the UK’s ZX81. At about $69, it was the first computer I could afford to buy. I bought it because I desperately wanted to do more programming and I was already familiar with the Microsoft Basic on the Model III. Commodores and Atari’s were still hundreds of dollars at the time, so they weren’t an option. I also didn’t like their somewhat non-standard (i.e. non Microsoft), and in the case of the Commodore very limited, versions of Basic. I think one of the first games I tried to make was probably a variation on a theme from the movie “War Games” with Mathew Broderick, which I recall as a very strong influence at the time.
Why the Tandy MC-10? Was it a popular computer in your area?
The MC-10 was not a huge success or a big seller, but I had a number of friends who had them, or 16k versions of the Tandy Color computer. My sense is that the MC-10 was more popular in Canada than in America, because of its cheaper price and the fact that it had plenty of good French documentation. The version of it sold in France was called the “Alice,” which was apparently very popular there. There is a lively forum of Alice users today who I use my pathetic school French to chat with.
TRS-80 MC-10. Source: Wikipedia
We were definitely not the “cool people” with our cheap little Radio Shack machines. Some kids had Apple II systems or Atari systems or Commodore systems, which had better graphics and a vast array of games software. By default my friends and I had to satisfy ourselves largely with our own programming efforts and with learning how to “hack” our systems. One friend, for example, hotwired his MC-10 to have a joystick. We learned how to solder so we could also do the same. We were the first to buy modems and to begin exploring some of the BBS (Computer Bulletin Board Systems) popping up at the time. Our friends with C64s and Ataris made fun of our “Trash’80s”, which was the pejorative name for computers from Radio Shack (i.e. TRS-80), but while they played games, we were writing our own games and exploring the new world of electronic communications. I still have my 300 baud modem from that time. Recently, my son and I set up a simple BBS using my phone at work and one of the Colour computers and modems I have picked up over the years. Then we “dialed” in to the system from home using my original MC-10 and modem. Sharing the high pitched modem sound with him as the two machines connected brought back some powerful memories for me of the excitement of those years.
We have noticed you have written a large collection of BASIC games. Many are inspired by commercial titles. What criteria do you use to choose your next game?
Since the MC-10 is the 8-bit machine of my heart, being my first computer (although I eventually moved on to a Colour Computer II), my programming is largely driven by a desire to complete programs that I either actually started programming, or dreamed about programming at that time. We spent a lot of time reading computer magazines in the school library, and they were filled with pictures and descriptions of games for the C64, Atari, Apple and later the IBM. Since none of these games were available for our machines, and the software base for the MC-10 was very limited, we were always looking for concepts or even actual programs that could be ported to our machines, with their limited sound and graphics capabilities.
Working within those limits, therefore, constitutes the central challenge for me, and the central criteria for game selection. The MC-10, like the Colour Computer, has a graphics chip made by Motorola called the “VDG.” In Micro Color Basic the only graphics mode easily available is an 8 colour 64 X 32 graphics screen. The pixels are extremely blocky. The challenge is to use those blocky pixels to create the best games possible using only Basic (I never mastered machine language). If a game cannot be rendered purely in text, or using those blocky 64X32 pixels, it is of no interest to me.
Why do you like to program obsolete computer systems?
Psychologically speaking, at the age of 45, I recognize that I am probably going through what is called my “mid-life-crisis.” For most men this involves buying a red Ferrari to live out the dreams of their youth. For me it involves completing programs I wish I could have completed back then so that I could brag to my friends who owned “superior” systems. What I couldn’t do then, I can do now. However, on another level it is simply a wonderful distraction and a fun hobby that I can share with my son, who shares my interest in computers.
What do you miss from the golden era of the 8-bit systems?
I miss the excitement of feeling like I was exploring a vast new territory that other people knew nothing about. We knew we were at the very front edge of a technological revolution. We were helping to develop the systems and the techniques of computing. When we left messages on BBS’s we knew that we were some of the first people who were doing that and of course this special knowledge gave us a sense of “power” (something that is very attractive for boys). My son experiences this too, but for him it is the ability to use his knowledge of the Linux operating system (which I don’t have) and of networking to use one of his computers to turn off another remotely. See dad, no hands! Be amazed!
Your son, Charlie, helps with the betatesting and development of your games. ¿How did he got interested in your hobby?
Charlie has been receiving pretty intensive “geek” training from me for some time. Of course I told him stories about our computing exploits as kids. I gave him some of my old books from that time like “The Secret Guide to Computers,” by Russ Walter which contains a best compendium of 8-bit computer knowledge and computing anecdotes (his favourite line from that book is the statement by the president of Commodore, the late Jack Tramiel, that “Business is War!”). We watched the movie War Games together. From an early age he watched me using my original 8-bit computers (I still have my original MC-10, Colour Computer 2 and Colour Computer 3 setups). These strange machines, of course, simply elicited endless questions about how things were done on them (compared to the ubiquitous computers of today). Eventually he began to make suggestions for game ideas of his own. His first was the game “Sentinel” which you can find in our collection. He sketched his concept on a piece of paper, which he gave to me.
Thank you very much for your time. Any word of advice for those who want to start programming these old computers?
Well I have developed or discovered a vast array of techniques for getting speed out of Basic. Basic is a great introduction to computer programming, because it is so forgiving, but with the right techniques it can also be very powerful.
For example my friend Neil Morrison on the Yahoo MC-10 forum taught me that it is useful to put all of the GOSUB and GOTO destinations in the first lines of the program. I also have learned that you can use the DIM statement to declare non-array variables and that by dimensioning them in the order of the most used variables you can increase the execution speed of the program. So it is best to actually put a jump to the end of the program and DIM variables there, and leave the top lines for GOSUB and GOTO subroutines, since the Basic interpreter starts searching for such routines from the top down. You want to make that search time as short as you can.
I also generally use a main set of FOR/NEXT loops occurring around line 20 instead of GOTOs for looping. And when I use FOR/NEXTs, I leave off the variable designation for the NEXT command (e.g. NEXT A), since this is unnecessary and simply slows down the interpreter. By structuring my programs using FOR/NEXT loops instead of GOTOs, and using ON/GOSUB/GOTO statements instead IF/THENs, and by packing lines as tightly as possible (which can be done completely on the MC-10 but, if I recall correctly, not on the C64 or Atari), I have managed to get quite a turn of speed out of old un-compiled Microsoft Basic.
I also, generally use memory heavily by doing as many of the repetitive calculations at initialization as possible and then store the results in arrays. This often means a long start-up delay for my programs, but much faster game play when things finally get going. I am never bothered by such preliminary delays, as we old 8-bit computer users are used to waiting for our computers while they “think.”
If I’m manipulating strings, I always try to CLEAR as much memory as possible to cut down on the garbage collection delays. This was critical for a program like my attempt at a 3D tank shooter game like KURSK, which is always cobbling together your current view from string arrays in any of the four possible directions you can turn your turret.
When I use an ON/GOSUB statement I also generally use multiple RETURNs to leap back directly into the main FOR/NEXT loop from a subroutine, rather than GOTOing to a single RETURN statement for that routine. In other words any RETURN is the same as any other. I also generally have a line like “1 RETURN” at the top of the program for use as a “null” option for any of my ON/GOSUB statements and their lists of subroutines. I also use multiple NEXTs to jump quickly back into the main loop after GOTOing subroutines.