Introduction
In the spring of 1984, I got my first
computer, a Radio Shack TRS-80 Color Computer 2 with 64K of
memory. This narrative material was adopted from a package I
created for my web site which had both text and reproductions
of artifacts. The text was an extended piece of
autobiographical writing I felt belonged among my essays, so
along with one page of photos from the web package, I present
it here.
My first computer has always occupied a
sentimental spot in my memory, because it launched me into a
lifetime career with computers. The story is also interesting
because I am from a generation at the crossroads of the
industrial and information age, and this era deserves a
first-hand account. My narrative blends my life, the computer,
and the general sitz em leben of rural America in the
early 1980s.
The computer was both primitive and
limitless. Based on the Motorola 6809 8-bit processor, the
Radio Shack TRS-80 Color Computer 2 (called the CoCo 2 for
short) came in both 16KB and 64KB models. The computer had no
secondary storage at all, other than cassette tape; the
computer booted off of a ROM chip with a BASIC interpreter.
Despite its limitations, this little machine was ahead of its
time and possessed an elegant design. Radio Shack targeted it
to the home user, and continued to develop the machine into a
self-contained home information appliance similar to the ones
which would be seen in 1999-2000. Later models of the CoCo
would come with disk drives, and (what was for the time)
sophisticated applications software, but my more primitive
computer ran a few games and invited BASIC programming. By
introducing me to programming, the computer was a limitless
source of imagination for me. In the long years since, I have
gone on to own computers more powerful than I could have
imagined even while in college, but the CoCo 2s green
background and blinking cursor under the OK prompt, cycling
through all the colors, will always be my entry into the world
of programming and imagination, the foundation of my life with
computers.
The First Connected Generation
My
generation grew up at a turning point in human history: when
future historians draw the line between the industrial and
information ages, I am convinced that it will cut directly
through my generation, which was the first time an individual
could own a useful personal computer. To previous generations,
computers were not part of daily life, and existed off in a
separate world of machine rooms in the bowels of business,
government, and university buildings; people could come into
contact with computers, but these machines did not contribute
much to change peoples attitudes about the world they lived
in. Computers automated much of the drone work of grinding out
payroll checks and reports, and analyzing data. People could,
of course, learn about computers and learn programming. Yet it
was not until my generation that the personal computer became
easily available as a tool (not a kit), and could be a daily
part of life, that any monumental change occurred in the way
humans approached their work, creativity, and lives.
My
generation is particularly significant because not only did
personal computers become part of our lives in the 1980s, when
we were going through adolescence and high school, but we also
seamlessly made the transition to the Internet as we graduated
from college. I do not think it is possible to underestimate,
or even understand, what difference this made to my generation
and all generations to come this had never before happened
in history. My generation went to college where Internet
access was becoming common, and then graduated and went into
the work force in the late 1990s when the Internet became a
part of daily life. In the past, college students had Internet
access which disappeared when they graduated: the yearly
ritual was the graduates losing their college Internet access,
as well as the annual September flood of new freshmen to the
Internet. The Internet was not a dependable part of everyday
life when access was transient and hard to come by. (Those
with constant access were a small population of college
professors, researchers, etc who remained in institutions
which allowed them to have uninterrupted Internet access. This
was not a large enough population for the Internet to even be known
to the general population, let alone used by them.)
My generation was the first to ever have seamless continuity
of computer use and familiarity in childhood, Internet use in
college, and then for the rest of life staying connected to
the global, instantaneous information network.
First Use Of A Computer
My
road to the connected Internet world started in apple country,
in Hendersonville, NC. The rural county was farming country,
with farm laborers, migrant workers, and about the smallest
core of a professional class the population could sustain to
perform the functions of medicine, government, law, and so
forth. Literacy was still a concern here, beyond the minimum
functional literacy needed to survive in the world, and
computer literacy almost unheard of. Yet computers trickled in
slowly. The school system started by getting each school a
computer, usually an Apple II. Stores generally had one model
of a computer which was intended for home and consumer use,
such as the Commodore 64. The machines were incredibly
expensive, both compared to the amount of money people had at
the time and comparing their limited abilities to todays
powerful commodity machines.
I
cant remember the first time I saw a computer, or became
aware of what a computer was. We would go over to my
grandmothers apartment in nearby Asheville, where she had
cable television (something Hendersonville did not have at the
time), and I remember sometimes watching reruns of the old
1960s television show Star Trek which had fictional
computers so far beyond what actual computers could do that,
if my idea of a computer came from the show, I had a wrong
idea of what computers could do. The computer, though, became
for me a ticket out of the poverty in which I lived in
Hendersonville. Computers unlocked a new world of
possibilities for me. I grew and learned about computers,
which began a process of using computers as a way to better my
position in life; while at the same time I watched computers
go from being curiosities to essential tools in the world.
Perhaps
most interestingly, computers, and what they enable people to
do, have permeated every aspect of my existence from the time
I was old enough to understand the world around me. I do not
think I could imagine a world without computers,
because they have been part of my life since I was old enough
to understand them. My education, starting in high school and
more importantly in college, was with computers. My entire
working life has been with computers. The only two talents, or
abilities, I possess are writing and programming, and I doubt
I could have made much of a living with writing. Without
computers, I would most likely have gone into journalism, but
I likely would not have gotten far because I most likely would
not have gone to college without the lure of computers to pull
me. I am not sure I could even conceive of what I would be
without computers, especially considering the limitations of
having a chronic illness. I doubt much of anything was
available for me in Hendersonville. Whatever ability I have to
write and to program, in both cases its completely innate
and something I can do without thinking. Ive gotten better
at both over the years, through practice, but whatever spark
makes me good at these two activities has remained constant.
The year is extremely hard to recall, but the first time I
ever used a computer was in elementary school. I want to say
in the sixth grade, sometime in late 1983 or early 1984, but
cant date it accurately. Computers were still, at that
time, so expensive that the rural elementary school only had
one. These machines, especially by todays standards, were
so underpowered that they couldnt be used for much yet
the cost, not the capabilities, was the limiting factor. In
rural Hendersonville, personal computers were a high-end,
novel specialty item that most people did not know what to
make of. I did not, either: I had little concept or
imagination about the possibilities of what a computer could
do, and how it could be used. If youd asked me, then, what
a computer was, I could probably have given you an
answer, but I could not have told you what could be
done with one. If I had even seen a personal computer
anywhere, before using the one at the elementary school, it
did not make an impression on me, but I was so young that I
had plenty of other things to learn about besides computers.
The
elementary school had one computer, an Apple II, which stayed
in a special room in the library where the librarian worked so
it could be kept under watch all the time. (The photo is of an
Apple II from the Flat Rock Junior High 1984 yearbook.) Saying
the computer meant the Apple II: all of the schools I
ever attended, until up into the late 1980s, had Apple II
computers. (If I ever knew which model it was, I no longer
remember, but I suspect I never knew that there were different
models of Apple II computers.) The computer itself was a long,
rectangular box with a keyboard sticking out at one end. Apple
computers then were a uniformly drab brown color. A monitor
sat on top, and usually two 5- floppy disk drives were
attached to the side. The letters on the screen were big,
green, and blocky, and were at such a low resolution it was
possible to count the dots that made them up.
The
IBM PC (and its compatibles) was almost totally unknown to
schools. I did not see one in person until 1985 or later. The
high school got one because they wanted to run a special
application, which used special hardware, that only ran on the
IBM PC, so they did not have any choice. This computer was so
special and sacred that no one was allowed to use it for any
reason other than the people authorized to run this special
application, certainly not a then-junior high student who came
over in the afternoon to the high school where his mother
worked. I looked, but did not touch, and would not get to
touch an IBM PC until I was in high school.
What
the elementary school did was let each student, over the
course of a school year, have a few minutes in the morning to
use the computer before class began. The school wanted to get
us to sit down, use the computer, and become familiar with it.
Exposure to computers, in any form, was the key. I do remember
the day my turn came very clearly. I remember the event itself
more than anything I did that day: it was significant just to
use the computer, no matter what I did on it. I think I played
a game, something about leading a rabbit through a maze. In a
way, this was an element of Joy: awakened in me was a longing
for something I simply could not satisfy. Even if I could use
the computer more, which I could not really do, there wasnt
much to do on it. Although the machine had a BASIC
interpreter, the elementary school had no information on how
to program in BASIC and I was so young I could not have
learned it if there was because I was not old enough for
algebraic thinking. Yet I knew there was this new element in
my universe, a computer, which could do things.
I did not even know what it could do, but some vague
conception of the computer as a limitless expanse of potential
seeped into my young mind. At the time, it is most notable
that I had no real reaction: I do not remember being
fascinated or enthralled by the computer. My imagination was
not immediately unlocked and I did not have a compelling
desire to use the computer more and more. I was probably just
too young: at that time in my life, computers were novel and
different, but I was too young to have my interest piqued by
them.
The Impact Of Video Games
Before
I got my own computer, I played video games, and the video
games are probably as important to the story as the computers
themselves at that time in my life. Video games were the only
real application of personal computer technology that I had
ever encountered, to the point where a light bulb lit up in my
young mind and I realized I could make my computer do what the
video games did, if only I learned how. Without video games to
stimulate my imagination, my reaction to personal computers
was one of indifference, because I didnt have any
conception of what a computer could do. By playing video
games, I had a key to bring to the computer to unlock its
potential. Without this critical key, I most likely would
never have become interested in programming at all.
Video
games in the 1980s were part of a magical and wondrous time
which will most likely never been seen again. When I was
growing up, video game consoles were a staple of entertainment
and could be found everywhere: Department stores, movie
theatres, and other places all had them tucked away in odd
corners, ready to suck up idle time and loose change from
anyone who passed by. No wonder they were everywhere, since at
one quarter per game, anyone with a console could make a lot
of money without having to do anything but provide
electricity. The most special places were video arcades,
shortened to just arcades, which were businesses that
had rooms with nothing but games and usually a huge
selection of them open to the public. Games cost one
quarter per play, and some gave more play for the quarter than
others.
These
video game consoles were primitive, and that led to their
eventual demise. The consoles were cabinets decorated with
artwork, and about five feet high with the controls at a
comfortable height for most people. The cabinet housed a
dedicated computer system consisting of display screen,
controls, and some sort of microprocessor (such as the Zilog
Z-80), and the game itself permanently burned onto a ROM chip.
Personal computers at the time were little different; they had
the same core parts with a BASIC interpreter on a ROM chip.
Consoles typically had much better sound than a personal
computer: The typical video game console had a stereo system
inside of it which produced a high quality of sound; and the
machines always had to be loud: no din has ever been like that
of a video arcade full of machines competing with each other
for attention. (One military adventure game called Operation
Wolf was almost totally silent, except at random intervals
when no one was playing it a frequent occurrence since the
game wasnt that great the console would let out a
blood-curdling scream OPERATION WOLF!!!! at an
incredibly high volume. Old consoles of this game found their
way into all sorts of places like coin-operated laundries, etc
over the years. Occasionally, as I walk by some place, I will
hear OPERATION WOLF!!!! and have a flashback of
panic which I suppose is similar to that of a combat veteran.)
Many
of these games were vector based (the images on the screen
were composed of a series of lines which were drawn using
algorithms), and did not use the bitmaps and sprites that
would come to dominate later computer games. On the primitive
hardware, vector graphics were much more realistic. Tempest
and Asteroids were the most well-known examples of this vector
style. In all cases, the primitive hardware limited what the
game could do, so all of the consoles were simple in their
graphics and their style of play. To compensate for their
simplicity, the games had to be interesting and playable to
get people to put quarters into them. The designers of the
games went all-out to make them fun and playable so the
limitations of the hardware would be less important.
Video
games began their long, slow demise when computer graphics got
better, and computers got cheaper. Once the overall level of
computer graphics improved, games started being about cool
graphics, and that usually had a strongly detrimental effect
on the games playability. For me, having played the
original arcade games, the newer games seemed so different and
so much less interesting.
The
best game of the 1980s, in fact the game, was Galaga.
It was not a vector game, but a sprite-based one. The sprites
and the sounds of Galaga were unique and inimitable. The main
reason why Galaga was so appealing was the fact that it
started at an easy pace and allowed the player to have a
fighting chance to learn the game. Many of the games
circulating at that time were so complex that to play one was
to put a quarter in and wonder what just happened; often the
game would be over before the player could figure out how to
work the controls. These types of games were frustrating and a
waste of money. Although there were people who had the means
and time to play games for hours on end to master them, for
those who had only a few quarters and played infrequently,
complex games were a frustration and not a challenge. Galaga
started off by giving any player a good chance of getting to
the fourth level. A player would have to be completely
uncoordinated to not be able to make it to Stage 4 by a few
tries. The first three levels were simple enough that it was
possible to use them to learn skills and techniques, too:
instead of breezing through the lower levels, a player would
be able to practice certain maneuvers with a relatively low
chance of committing a costly mistake. Galaga was not
simplistic: Galaga is a game of ultimate nuances and
strategies. The longer I played it, the more nuances I
noticed. Although it was simple for beginners to pick up the
basics, like any good game it constantly challenged the
player.
Hendersonville
did get a shopping mall, its first and only, which opened in
the early 1980s, most likely in 1983 or early 1984. Besides
containing a bookstore that would play an important role in
expanding my reading horizons, it also had a video arcade. The
arcade had a lot of great games, including some no other
arcades I visited had. One of these unique games was the one
singular influence on my computer programming career: Star
Trek. Tucked off in a corner over to the left in the dim and
noisy video arcade the arcade always reminded me of the
bar in Mos Eisley in Star Wars for some reason I saw Star
Trek sitting there, and decided to play it. Something just
clicked. I knew that this was the game I had been
looking for. This was what computers were supposed to do. This
game inspired my first and biggest computer program that I
wrote on my first computer, and most likely was what gave me
the impetus I needed to become a computer programmer I
learned programming by implementing one feature of this game
after another on my first computer. Elements from the game
became one of my longest and most involved programs. I
borrowed the two-dimensional tactical view from Star Trek, and
the star field backdrop from its first-person view (as well as
the star field from Galaga). I wanted to do all these things
on my own computer, so I learned more and more about how to
program it.
The
games premise is based on the simulation which opens the
second Star Trek movie, The Wrath Of Kahn, where cadets
are in a simulation of a starship going through a mission. The
game takes this idea and allows the player to control a
starship as it goes on simulated missions. I had a lot of
trouble learning to play Star Trek, because it had too many
controls and views. It had a joystick actually a wheel
which took up one hand, and four buttons that took up the
other hand. Added to this were three views, two of which had
to be monitored simultaneously to play successfully. I became
extremely frustrated that I could not get a grasp of the game,
since from the beginning I knew it was the game Id been
waiting for. After a point, I began to click with the machine
and learned to play it. The first key was to learn when to
switch from the tactical view to the first-person view. I had
to watch the tactical view until the ship was close enough to
be in visual range of the enemy, and then look at the
first-person view to bring the enemy into the targeting
crosshairs. Then, I had to learn to concentrate on the main
thrust and fire buttons, which were adequate in almost all
situations, and leave the other two (warp speed and torpedo,
which were both available only in limited amounts) alone until
I desperately needed them.
My First Computer
In
the spring of 1984, even though at the time our family was
extremely poor, my mother spent what was for us a significant
amount of money to get me a computer. The lump sum came from
the estate of my grandfather. Sometimes I cant help but
wonder if the worlds transition from analogue to digital
did not have some role in his death. For all that my
grandfather B.D. taught me about electronics and electricity,
he had never really made the paradigm shift from tubes to
solid-state electronics. He had not even begun to learn
digital electronics, and in all that he taught me I cant
remember him even mentioning any concepts of digital
electronics. By the early 1980s, the field of electronics was
moving away from analogue towards digital, and it was clear
even then that digital electronics were going to completely
replace analogue. Everything B.D. knew, all of his lifes
skills and work, were soon to be totally obsolete. How could
anyone exist in a world which had changed that much? He knew
that I was entering a world he could never share with me, but
he somehow found a way to give me one final gift: he gave me
the ticket to my future, even though it was along a road he
knew he could not travel.
I
dont remember what, exactly, prompted us to get a computer
at this time. Perhaps my mother saw it as an investment in my
future and a way for me to learn something that might, some
day, get me out of the poverty we experienced in
Hendersonville; perhaps I had some sixth sense or intuition
about what was coming in the future for me. The timing was
perfect: if I had gotten the computer much earlier, I would
not have been old enough to have the intellectual development
to learn BASIC, and likely would not have gotten much out of
the computer; but if I had gotten the computer much later, I
would have been sick and likely unable to devote the energy to
programming that I did in the few years I had available. This
was the one perfect time for a computer to come into my life.
Deciding
to get a computer and actually buying one in Hendersonville,
NC in 1984 were two entirely different things. Personal
computers (preassembled and for sale as products, instead of
kits) were still new in retail stores, at least in
Hendersonvilles backwater retail setting. I had no
experience with computers, being a young kid in a rural
farming town known for its apples. I am astounded that I would
wind up buying what was a perfect computer for me; having a
computer at this age was part of my destiny that I could not
escape.
I
suppose the most ironic thing is that none of the stores had
Apple computers: if they had, I would most likely have gotten
one just because it was the only type of computer I had
actually used. But I didnt know that Apple did not sell its
computers through retail stores, and I had no idea how someone
would buy an Apple computer. Hendersonville had no computer
magazines of any sort that I can remember (indeed, I remember
buying a computer magazine many years later in Ashevilles
mall bookstore and marveling that such magazines existed). The
whole personal computer culture was worlds away from me,
because I was so isolated. I knew nothing of the
homebrew scene, with users sharing information.
I
remember the day we bought the computer very clearly. We went
shopping first at Kings department store. Kings was one of the
old regional chain stores such as Roses, or Sky City, which
did not survive the move towards huge, national chains like
Wal-Mart. Kings was the only department store which had a
personal computer for sale, and I remember it was carefully
locked up behind glass. I do not remember which computer they
sold, but seem to recall it was a Commodore of some sort. (I
knew little about which brands were available.) The main
reason we did not get the machine at Kings was that it cost
more than we could afford. We passed on it and decided to shop
around some more.
In
the same shopping center with Kings was a Radio Shack, where I
had been frequently to get parts for various electronics
projects. There, they had a TSR-80 Color Computer 2. (I am
using the short name CoCo, although I did not know this
was its nickname until much later in my life.) It was much
more affordable than the one in Kings, so we wound up getting
it. For some reason we splurged and got the deluxe model, with
a huge 64K of RAM. The other model had only 16K of RAM, so the
difference was one where even in my inexperience I could sense
that the fourfold increase would be better. (If memory serves,
the 64K model was on sale that day, such that the difference
in price between it and the 16K model made it almost no
decision to get the 64K model.)
(Comparison
to current computers is difficult, because computers change
faster than I can finish writing about them. When I began
writing this material, I used a computer with 96 megabytes
of main memory, plus extra memory for graphics and other
specialized areas. 64 kilobytes is around half a megabyte. And
that 64K had to be shared among all the components of the
system: for example, there was no separate graphics memory.
The CoCo had no real secondary storage, other than saving data
to cassette tape, while my current computer has around 10 gigabytes
of it. By the time I had brought this material to draft from,
I had another computer with 256 megabytes of memory, an over
500% increase in less than twenty years. Incidentally, the
processing speed of the CoCo is almost a rounding error
compared to modern processors.)
As
it happened, the CoCo was the perfect computer for me. It came
with two superb manuals on BASIC programming, which were
well-written and friendly. I soaked up BASIC programming,
learning by reading the books, trying examples, and
elaborating on my own, until the CoCos BASIC became
second-nature to me.
(The
high school library discarded a BASIC programming book which
had been damaged, with a chunk of the first part of the book
missing, and my mother who worked at the high school
saved it for me. The book has the distinction of being the
first programming book I ever encountered, outside of the CoCo
manuals themselves. I later found a book on adventure game
programming for the CoCo at a book liquidation, but it mostly
concerned machine language routines in which I had no
interest, instead of BASIC programming. I did not read any
other programming books until college.)
On
the afternoon after we bought the computer, we went back to
Radio Shack. The CoCo was supposed to read and write data to
cassette tapes. I had a monaural tape recorder, and thought
that was all I needed. One of the first things I ever tried to
do on the computer was to load and run a game we had purchased
at the same time, and I could not. After calling Radio Shack,
they informed us that wed need a better tape recorder
because reading and writing to tapes was a difficult and error
prone activity. We got a top-of-the-line Radio Shack tape
recorder, which worked better. As my programming experience
grew, I realized that reading and writing data to cassette
tapes was definitely one of the most difficult things that
could be done: it failed as often as it worked. I spent many
long hours trying to commit my programs to tape, and even now
have tapes full of programs I couldnt ever use again.
Stories
circulated at the time of kids who were given computers, and
after an initial flurry of interest, the computers were
abandoned to a dusty shelf when the novelty wore off. That did
not happen to me. I took to programming like a fish to water,
and completely on my own I mastered the CoCos BASIC by
typing in and then modifying one example program at a time.
There was not much else to do with the CoCo. The machine did
have a slot into which a ROM cartridge would plug in, and it
could run commercial games. But they were quite beyond my
price range. I had two ROM games, and a couple on cassette,
but that was all. If any application programs, other than
games, existed for the CoCo, I do not remember seeing any in
Radio Shack.
Perhaps
the lack of software was part of the computers appeal to
me: I had to find out what the computer was capable of doing,
and if I wanted the computer to do anything, I would have to
program it myself. The appeal lay in the ability to turn on
the computer, see the OK and the blinking cursor, and start
programming. I enjoyed learning about each new feature of the
computer as I discovered it in the manuals.
(Sadly,
although Microsoft built its early success on its BASIC
interpreter, a version of which ran on my CoCo, they have
gotten completely away from their original mission of
unlocking the computers potential for people who could
become the next generation of hackers. Their BASIC interpreter
diminished in importance over the years, but was always there
in MS-DOS and Windows, until it was removed from Windows 95.
Until it was removed, someone who had the inclination to be a
programmer would simply start the BASIC interpreter and begin
programming. The only place left anymore with this spirit of
openness and unlimited potential is in the free software
movement. Im encouraged by new, free languages like Python
which recapture the feeling of the original BASIC interpreters
I used, allowing for unbounded exploration and creativity in a
friendly programming environment. My strong belief is that all
commercial software companies, even those which oppose the
philosophy of the GNU project, should still support it with
generous donations; free software is where new software
development talent will be encouraged. The new generations of
programmers will download free software development tools and
learn how to program from them. Thats where people like me
will come from, who go from being incredibly curious about
what the computer can do to creating the next generation of
new software.)
Although
I certainly spent a lot of time learning BASIC and programming
on the CoCo, I never developed the monomaniacal fixation on
the computer which I have read is typical for hackers. For me,
the computer was always one of a million other things I had
going on. I had every factor aligned perfectly to become
obsessed: I had no friends at all in Hendersonville, and I
spent huge amounts of time alone, usually going the entire
summer without seeing any children my own age. In spite of
this, my personality was not suited for fixation. I had a
million interests and a million things going on at once. I was
extremely artistic, and spent a lot of time with modeling
clay, drawing, and other things. I read everything in sight. I
listened to music. I played a lot outside, especially riding
my bike.
I
spent about three years learning the CoCo and programming in
BASIC, from when I got the computer in 1984 until I moved to
Asheville in 1986 and got so sick that my excitement about and
energy towards computers (and everything else) waned
dramatically. These years were the only real time I had to
dedicate myself to learning programming which I had, and I
suppose it was my larval stage of hacking. During this
time, I learned the built-in BASIC of the CoCo inside and out,
finally mounting what was to me its steepest hurdle: the
high-resolution graphics capabilities. (High-resolution only
in comparison to the CoCos own low-resolution graphics, of
course. High resolution was 255x191 pixels, and of the
16 colors the CoCo was capable of displaying, only two could
be used in high-resolution mode. Using more colors meant using
a lower resolution. For the time, this was fairly advanced
graphics for a personal computer. The IBM PC had not begun to
exhibit the graphics capabilities that the adoption of the VGA
card would later allow; the Apple II computers I used were all
monochromatic.)
For
some reason, I had trouble with high-resolution graphics, I
believe because I tried to use them before I had learned
enough BASIC: they were hard at first, so I set them
aside until I had more experience. The fact that I though
high-resolution graphics were hard was because I
didnt have enough programming experience to understand
them; when I did learn how to use them, they were not
significantly harder than anything else I had learned. I just
attached hard to them early on when I got in over my
head with them and had to back off.
My
biggest and best program was what I called the Star Trek
Simulator, a high-resolution graphics based program which
allowed piloting a ship around the galaxy. It got to be quite
sophisticated at the end, as feature after feature accreted: I
basically added anything to this program I could think of.
When it ran, I had a ship on the screen which could be piloted
in any of eight cardinal directions on a two-dimensional star
field, moving at any of three speeds. I had made a picture of
the ship moving in each of the eight directions (the diagonals
were the hardest to draw) and as the ship moved in different
ways, the picture of the ship changed so it was pointing the
way it was moving. The ship could shoot torpedoes, and destroy
planets (a planet was just a pixel, and so was a torpedo), and
it had various other things like shields and flashing grid
lines. Towards the end, I added fuel constraints to the ship
(and a way around them!) and a starbase at which the ship
could refuel. It was possible to navigate to different
quadrants of the universe, which was accomplished by switching
among the four pages of video memory. The ship could even go
to other weird universes, by changing the screen resolution.
At the end, I remember there was a text screen, but not what
it did. The programs code, by necessity a mass of gotos and
gosubs by nature of the unstructured BASIC language, got to be
as big as a program of that nature could be. The only feature
I could not add was logic for an enemy ship to appear, move
around, and shoot at the ship I piloted; such AI logic was
simply beyond my abilities.
This
first computer, combined with my exposure to video games,
started me upon the lifelong path that would lead to becoming
a computer programmer and being part of the software
development industry.
Epilogue: A Funny Story About Graphing
In
the fall of 1984, I entered junior high. The math class I was
in that year devoted the last month or so to
pre-algebra, which allowed students used to dealing with
concrete numbers used to the idea of variables. I remember
almost trembling in anticipation, thinking I had finally found
something in school that was interesting, until the harsh
reality sank in that algebra was mostly just busy-work and
rote mechanics, much like the arithmetic I had already burned
out on. I am, perhaps, one of the only students who never
asked what algebra was for. I immediately saw that
variables and equations carried over to computers very nicely.
That
year, or more likely in the 1985-6 school year in my Algebra I
class, we began to graph the usual functions: lines,
parabolas, and so on. We graphed functions the hard way, by
manually plotting points on a section of graph paper. Since I
had been learning a lot about computer graphics, and was now
learning some math, I decided to combine the two by writing a
BASIC program which would graph equations on my computer
screen. To me, it seemed like the perfect application for a
computer. Remember that I had never been exposed to graphics
workstations or Mathematica at that point in my life. I
thought that it was a curiosity, applying the computer to 8th
grade algebra, and not something that anyone would seriously
do with a computer. I did it just because I could.
My
Extended Color BASIC had every math function available that I
had ever heard of (and also many I was yet to encounter), and high-resolution
graphics, so I went to work, and wrote a little program which
I kept enhancing with new features. The only equation I was
unable to graph successfully was the circle, which had two
simultaneous variables being juggled: my algorithm was
strictly plugging a series of values of x into an
equation to get a value of y and plotting the point (x,
y) on the screen. I was so thrilled with the pretty
pictures I saw on the screen, which did indeed look like
graphs, that I was unable to realize one important fact.
The
high-resolution (for the time) graphics screen was 256 by 192
pixels. I wanted to put the origin (0,0) in the center of the
screen, so I was very clever: I divided the screen into half,
both in the x and y direction, and plotted a
point, and then shifted the value forward by adding to
it. I would compute x over the interval [-128, 128] (I
was extremely imprecise about the end points, and the computer
was extremely forgiving about out of range values) and get a y
value. Then Id add 128 to the x value, and 96 to
the resulting y value, and plot that point. I
discovered this trick all by myself, with no formal computer
or mathematical training, so I thought I was doing pretty
good.
Most
equations, over the interval [-128, 128] for x are
simply not very interesting, because the graph doesnt even
show the major features of the equation. To zoom out, I
created a scale factor: I had 128 values of x in each
direction, so I would take 128 samples by multiplying each x
by some scale factor, and dividing the resulting y to
fit it back to scale. Since I was dealing with a 256 by 192
screen, the blurry approximation didnt really matter much,
since the graph was imprecise to begin with, even at a 1:1
scale. I had the scale factor and the equation at certain
BASIC line numbers, so I could easily change them and run the
program again. The program was made fancier by allowing me to
graph more than one equation at a time in different colors. Of
course, the TP-10 printer was unable to print graphics, so I
couldnt show anyone my output.
Just
as well: I had overlooked the fact that on graph paper, the
origin (0,0) was at the lower left of the quadrant where both x
and y were positive. The variable x increased
from left to right on graph paper, which is the same direction
as on the computer screen. But the variable y increased
from bottom to top, while on the computer screen the y coordinate
started at the top of the screen and increased towards
the bottom. So all my graphs were upside down.
|