Loud clacking of mechanical keys accompanied the static-laden broadcast sputtering from a poorly-tuned radio station as the night waxed deep into the witching hour. The WKDF 103 call-sign brushed through the hiss, bringing the distinctive voice of Ozzy Osbourne declaring, “Nashville’s best rock!”
My thirteen year-old self paused long enough to guzzle the last of another Jolt Cola, which was then carefully balanced upon the growing aluminum tower of empty cans edging the computer desk. I sighed deeply and rubbed my eyes before focusing again on the screen. It was huge: this monstrous 32-inch CRT monitor. The shelf bowed dangerously beneath its weight.
I stared at the white-on-blue code; mentally walking through the process I had just created, then stealthily inhaled from re-lit, gnarled stub of a cigarette. My other hand subconsciously waved behind me to mask the snaking tendrils of smoke – just in case one of my parents might unexpectedly wake.
I had been programming games for a while then – mostly door games and text interface role-playing adventures based upon games I frequently played, but I had recently begun to delve into making games with graphics beyond ANSI and color-coded ASCII.
Days earlier I had completed developing my very own graphic file format: *.jbs (Justin’s BASIC Sprites). It would become the basis for several games I would develop in the following years. The text-based data file contained a trio of numeric groups consisting of 625 8-digit segments; each two digits in a segment defining: cursor position, color, start, and execute. Though simplistic, the interpreter I compiled parsed each file to draw a grid of 25-pixel square images (sprites) on the screen, each with an optional cycling 3-frame animation.
The first demo I created with JBS was to recreate the first dozen screens of the Nintendo game, The Legend of Zelda. It was a success! The next step in my quest was to figure out a way to draw animations over top of that matrix of sprites to create a layer of on-screen interaction from user input – an absolute must in order to fit an entire game engine within the 64k memory limit.
The program I was writing this night was to that end. With lackluster creativity, I had named the program STARR (with two “R’s” to reflect the middle name and BBS-handle of the girl I was crushing on at school).
Leaning back, I pressed the F5 key and the screen went black as my code executed. The RNG stamped millisecond-by-millisecond and a vibrant swiping line of phasing colors swam around in lifelike luminosity. Perfection! In the dark room the monitor erupted with ever-changing rainbow light.
The radio behind me was playing Nirvana’s “Lithum”, and the lethargic refrain of the song perfectly fit the visual effect I had created. But something was amiss… There was – another – song playing at the same time, faintly penetrating the constant buzz of FM static. The mysterious tune caught my attention, so I leaned over in the technicolor-vibrant veil of dancing shadow to get nearer to the speaker.
Suddenly everything went dark. The strange song stopped. The predefined loops of STARR had completed, and the screen had reverted to lifeless black.
Blinded by the sudden shift from neon glow to total darkness, I reached over and tapped the F5 key twice to restart the routine. As soon as the colorful dancing shapes returned to the screen, so too returned the mysteriously distant song.
I quickly realized that somehow my code was causing the static to react. The electromagnetic field generated by the massive CRT was literally broadcasting to the receiver of my radio. I had inadvertently created an entirely new wireless musical instrument.
Giddy with curiosity, I immediately started dissecting my code, honing the active display of the program to determine what created each individual sound. Within half-an-hour, and influenced by another hobby – playing guitar, I had molding the effect to define the entire pentatonic scale. Soon thereafter came key assignments for each note along with the ability to shift and bend pitch.
After compiling an executable from the newly-frankensteined code (to mitigate the latency of the BASIC runtime environment), I tuned the radio to a static-only band, turned up the volume, took a deep breath, and then began.
The darkness surrounding me was split by alternating flashes of incandescence as I composed songs using my keyboard. Each generated array of animation stoked the drone of static to life as the bombardment of EMF traveled through my body and across the room.
For that brief moment in those twilight hours I was a teenage maestro casting colors and making music with the endless cosmos; wielding a bowstring of light against the still-reverberating strings of long-dead stars; dancing on memories from the beginning of time.
