In this day and age, many of you are under the impression that computers are evolving at a mind-boggling rate, but really, you have no idea. Back in my day, new types of computers were being created almost DAILY. It was 1985, and I was only 10 years old, which was an exciting time, as companies all raced to be the new "standard". Amazingly, and sadly, the computers they sold were often obsolete the SECOND they hit the shelves. At that time, places like Radio Shack were offering the latest and greatest, and it was there that my parents purchased my first PC. Today's post is all about my experience with that wonderful machine: The Tandy 1000-HX.
It didn't.
It didn't.
No, my hopefully-sympathetic readers, it had Kilobytes of RAM. To be more precise, it had a whopping 256KB of memory. By today's standards, that is enough memory to store about 7% of the average MP3, which, if you're lucky, MIGHT not cut out before the first chorus. Believe it or not, this was impressive for that particular week. Like I said, computers were getting better at an insane rate, and anything purchased the week after was almost-definitely better than mine, coming out with new wonders like HARD DRIVES, whereas mine only came with a 3.5" floppy drive. That's it. Oh, and my monitor had TWO colours: black and green. These were the days of monochrome monitors, and it was a very scary time, indeed.
It came with a couple of games, which had to be run from the floppy disks, but I showed very little excitement over those. My interest was peaked when I saw a book that arrived with it. I scanned the title: BASIC Programming User's Guide and Glossary.
Now remember, everyone: the Internet was at its infancy back then, and the very first domains were being created and registered that very year. I couldn't do a quick Google search and find out how to do all of this because, well, Google didn't even EXIST. I had to figure it all out by myself. And yes, I really was only 10 years old. I spent much of my spare time on this supernatural contraption, and as I learned more about programming, I would also learn just how much I DIDN'T know about programming. This made me crave more. I kept at it, creating increasingly more complex code. I could make text do whatever I wanted, and it wasn't before long that I created what I thought was an impressive video game, using what would eventually be called Text or ASCII Art.
At this time, it was 1989, and I was just finishing grade 8. A few years had passed since I received that first computer, and given that we weren't a wealthy family, I was still using the same one. This game that I created was naturally based on one of my true loves: Star Trek. It was even more exciting to me, because their new series, Star Trek: The Next Generation, was well into its second season, and I just HAD TO make my game about that. This masterpiece of mine used keyboard characters to "draw" the main bridge of the Enterprise, ships in space, and even crew members.
Yes, the people I created for this game looked quite silly, but back then imagination was a true necessity. People were still buying games on the Atari 7800, and its tiny, pixelated characters required plenty of imagination, therefore, in my humble opinion, my characters were pretty good. So my game took the player through a story that involved ships shooting at each other, "scenes" on the main bridge, and even the Away Team beaming down. Yes folks, I was rather impressed with myself.
For months, I spent much of my time learning more functions, with the singular hope of figuring out how to make my programs DRAW on the screen. As it turned out, the concept itself eluded me during those first couple of programming years because of one problem: I hadn't even learned about the Cartesian Plane in school.
There I was. It was still 1989. Math was one of my favourite subjects and I was doing VERY well. Eventually they taught me all about coordinates, equations, and the algebra used to make lines of various types. So inevitably, I went back to reread that BASIC programming glossary, and as soon as I did, it clicked. I began to understand more of the functions. Some actually dealt with creating a point on the screen, as well as things like the start and end coordinates for drawing a line, the centre point and radius for drawing a circle, and so much more. I was one step closer to achieving my dream of creating a video game with actual graphics! But how do I use these strange functions to my advantage? The answer came to me when I saw my friend's younger brother solving a "draw by numbers" puzzle. It made me realize that almost any picture can be drawn using a series of straight lines. So to keep things simple, that's exactly how I would create my "masterpiece" of gaming technology.
Immediately following this epiphany, I realized the next major hurdle: my complete and total lack of artistic talent. At the time, I could not draw well AT ALL. Even my stick people looked weird. I did eventually learn how (in the far distant future), but at the time, I needed another solution.
As luck would have it, I was a member of the Star Trek fan club back then. With this membership I received many amazing perks, including a monthly magazine. Having about half a dozen issues by that time gave me plenty of pictures to trace, which is exactly what I proceeded to do. I searched them all looking for the perfect side view of the Enterprise D. After all, I needed it facing left or right if I were to make it "fly" across the screen. A local craft store in my home town sold me some thin paper, which made it easier to see through and trace when placed over any photo. It would also prove helpful in the next step of this time-consuming-but-totally-worth-it project.
Once I had finalized my facsimile of NCC-1701-D, I could already envision the series of straight lines that would make it possible, so I drew dots all over it to make them easier to see. My next challenge was to translate those dots into coordinates on my screen. I placed the drawing on top of a sheet of graph paper, thus showing all of them on a grid. This led me to figure out a scale. Through trial and error, I determined that my monitor had 320 pixels across and 200 pixels vertically.
My starship could not take up the entire 320 pixels across, otherwise there would be no room for anything to happen in the game, so I decided to make it about 1/4 the size of the screen. To accomplish this, I simply went to the top left of the graph paper and marked it as (0,0). I then marked the very next grid line to the RIGHT of the ship as 80, with the line at the BOTTOM of the ship being somewhere around 40. Based on that, I counted the number of grid lines between the far left and far right lines, and divided that into 80, which told me how many pixels would be between each grid line. I of course had to do the same for the lines between the top and bottom, dividing that number into 40. Then the REAL fun began. *SARCASM INTENDED*
OK. This next part was extremely monotonous, and it took forever, but was still totally worth it. For each series of lines, I had to approximate where each dot was on the graph, and write down the pair, while noting which coordinates were the beginning of a line, and which were the end. I then began the data entry portion of the project. I had to enter all of these numbers into my program as pairs of numbers in an array. This part took me the longest, since I wasn't the incredibly fast typist that I am today (another thing I learned the following year).
With the boring segment out of the way, I could finally get back to business. It was time to make use of that awesome line-drawing function, which I added to a "loop" that would simply go through each set of coordinates in the array, completing a line and starting a new one when needed. I saved my program, and was super excited to watch the computer create each line until it completed an exact copy of my traced Enterprise D. It was BEAUTIFUL, but the pride I felt was short-lived. It occurred to me that, as amazing as this powerhouse of circuitry was, my computer was slow enough to be a problem. The fact that I was watching it SLOWLY draw the ship meant that I couldn't instantly make it redraw the ship two pixels away to give it the illusion of movement. That's how I did it in my old ASCII Art based game, but it was apparent that I needed to rethink that part.
So once again, I went back to consult the programming guide. This time, I had no idea what I was even looking for. I just hoped that I would find a solution. I double and triple checked over any function that I hadn't really used or even tried thus far. The answer was found in two of them: PUT and GET. I distinctly remember the descriptions of these two commands originally being very confusing. When I had first read these pages, I had no idea how I would ever use them, or why, so I immediately ignored it all. This time, however, I had an "A-ha" moment. GET would store the contents of a rectangle that I would define myself, consisting of everything from its top-left to its bottom-right coordinates. PUT would INSTANTLY place that image anywhere on the screen. Yes, instantly. My ship could move!
Finally! The hard part was over. All I had left to do was... the exact same process for pictures of asteroids, Romulan warbirds, the Enterprise Bridge (with people at their stations), and a Borg cube, make the ships "fly" by making random pixels (stars) move across the screen, actually break up the ship into pieces so that the stars that were flying past wouldn't disappear behind the huge rectangle that I used with the PUT command (a consequence of the command itself), make it possible to "steer" the Enterprise with the arrow keys, make it possible to turn on shields, shoot phasers, fire torpedoes, and, oh ya, show each level and scene to progress the game. That's all. As it turned out, I couldn't find a decent picture of the Borg cube, which was CRITICAL to my game's plot. I was rescued by my older sister. Being quite the talented artist, she agreed to draw one for me, and it looked really impressive. It was the one aspect of my game that looked cool BECAUSE OF (not despite) my monochrome monitor. Its green glow was just PERFECT.
All of this took me just shy of year. I had a true passion for programming, and was rarely torn away from it, but don't worry! I eventually broke out of my shell sometime in 1991.
In the meantime, however, my masterpiece was still evolving. When I hit grade 10, our school had a Computer Science class, which I OBVIOUSLY joined. EVERYTHING taught in that course was stuff I already knew, so, in addition to helping other students, I spent much of class time tweaking my video game. The computers they provided contained 80386 processors. Despite their maximum speed being 40MHz (which is actually 1.4% of the speed of my current PHONE), it was still 8 times faster than my old Tandy. So my next challenge was to slow the game down a bit, otherwise the asteroids would fly by so quickly, you would have no time to react, the ship would be destroyed, and you would immediately lose the game. This was a small price to pay, and I took the extra time needed, because these machines had (wait for it) COLOUR MONITORS! That's right folks. With a few edits, my phasers and torpedoes would be RED! My asteroids would be BROWN! I all of a sudden had 16 distinct colours in my arsenal, and I was determined to use them.
So in the end, I was quite impressed with myself. The game started with a scene on the Bridge, where the Captain gave his famous "Captain's Log" to describe how the mission would start in an asteroid field. Then Level 1 would load, and the player had to navigate past and/or shoot the asteroids without getting destroyed. The next scene indicated that you made it to a planet, where you had to beam up a Romulan defector/scientist, who would give you further instructions. AFTER that, you needed to escape through the asteroid field again, but this time with Romulan warbirds chasing and shooting at you. That's Level 2. The next scene involved the defector explaining that the Borg were nearby, needed to be stopped, and only she knew how. So a course is set, and you encounter the Borg cube, to which Riker transports over in order to destroy it. The Borg drones resist, so Level 3 involves getting past them to blow up the critical console described by the defector. If you make it this far, and you manage to destroy it, you are beamed away, the Cube blows up, and you win the game!