My white whale

 

I wonder if everyone has a 'white whale' that is their obsession, like Moby Dick and Captain Aheb OR is it a specific personality trait that some have and others do not (or more likely possess to a variance of degrees?)

My first "white whale" that I can recall is programming the Vic 20 in the late 1980's.  That flashing - blinking cursor edging me on to make it "do something".

The 'something' I imagined 'should have been' quite simple in my mind. The VIC20 had a very limited (3K) of memory, and although a lot of games and programs were written for it, The process of loading and starting a game was annoyingly teadious.  Sometimes, I would get up pre-breakfast, pop the tape in the datasette, hit load, and then proceed to go eat my breakfast, before the game would be ready to play.  It seemed to me there should be a simple way to have a menu of what was loaded, simply pick the item from the menu and 'GO'.  Of course the limited speed of the  datasette would still be a problem, I imagined in the future I would have an actual disk drive, and things would be so much faster...and so my quest began.


One of the first commands you learn is the "LOAD" command.. Typing at that blinking cursor the word LOAD followed by the name of the game in quotes or "*" to load the first game.  The machine would then respond with 'PRESS PLAY ON TAPE' and the loading process would begin.  In the VIC20 manual I had at the time, talked about LOADING directly (typing at the cursor vs) typing LOAD inside a BASIC program . If you used the 'LOAD' command inside a program ,it would both 'LOAD' and 'RUN' the program. AH-HA. So this is how I can make a menu that loads different programs that are on the tape. Yipee


But not so much :( There was a problem..when running other programs from within my own program would work sometimes but not very often. After some playing around I discovered that if I was trying to load a program smaller to the one I had written it would work fine, but if I tried to load program that was larger  (and my menu program was getting large), the load would fail. Trying to 'LIST' the loaded program would seem to be all messed up, and garbled and not make any sense.. This filled me with a combined sense of curiosity and frustration, as the heart of what I wanted to do was simply load one program from another.

Looking back now, it seems many years of my life were spent experimenting about how to get around this problem. There was no internet I could look up, I did not own a modem so I could not connect (yet) to local BBS's.  There were not a lot  of people in my neighbourhood that owned VIC20's. The only way to figure it out was by experimentation, and trying to get my hands on books and magazines for ideas to try.

It was 'me against the machine', I was confident enough in myself to know I could find the answer, but not necessarily reasonable with myself about how long it would take. From an outsider point of view it would seem I was 'obsessed playing around on the computer'. Friends & Family just couldn't understand what I found so fascinating about typing at that blinking cursor.

I missed many social opportunities, turned away from events with family and friends, Even when I was out or doing something not on the VIC, I was still thinking about it. Still writing programs silently in my head, wondering if they would work. My attention was never fully on the conversation or in the moment, but daydreaming about what I would try next, how I would 'WIN' in the me vs computer battle.

It was almost 4 years later before I finally 'won' and figured out the problem. Throughout the time I had little glimpses into it.  One for example was a specific game called 'Space Escort'.  This game when loading would first load a program that brought up a series of instructions to read, and then later read the 'main program'.  However it somehow disabled the 'BREAK' key when running so that it was not possible to look and see the code that made it work.  I did eventually discover that if I stopped the tape at just the right point and hit RUN/STOP I could get the program to at least list some of the contents of the file.

What I found next however leaved me even further confused however because instead of a 'LOAD' command there was a series lf of 'POKES' and 'PEEKS' that seemed to make the LOAD happen. g a  POKEing and PEEKing at VIC memory locations were the hardest to understand when programming, basically "turning on" and 'off' specific areas of memory would make the VIC do lots of things for changing colors, to playing a sound, so while it seemed reasonable that these commands could somehow 'LOAD' a program made sense, but there was no guide on what all the registers were and how they worked. 

Many...many months later, while at a New Years Eve party held yearly by one of my aunts - I learned one of her sons also had a VIC20. His VIC20 was expanded, had more memory, and the Function Keys (which did nothing on my machine), automatically 'typed' words on his when pressed.

 Playing around this let me to discover what these specific POKE and PEEKS were doing in the Space Escort program. It seemed that you could 'POKE' into the keyboard specific keys which the VIC would 'replay' a few seconds afterwards, and these 2 statements would set the keyboard up the send out the words 'LOAD' followed by 'RU N'.  What was interesting is that directly after these statements the programmer would type the command 'END' which ended the current basic program. The VIC would then proceed to empty the keyboard and type the 'LOAD' and 'RUN' command AFTER THE PROGRAM was complete. Effectively  this  would execute the 'LOAD' command in direct mode outside of the program avoiding the problem trying to run 'LOAD' inside the program.

Now at this point, perhaps, you are shaking your head..thinking none of this makes any sense, and possibly deciding not to read any further, and I get it.  Not everyone likes 'tech talk' about these machines and how they work, and today these are so user friendly, no one any more seems to appreciate the old days of the 'command line' and simply use their mouse to click the things they want on their screen.  Suffice it to say, that the reason *** ALL THAT WORKS  *** for you today, is because people in the 1970's and 80's had to exhaust hours of effort and write the programs and spend time figuring out how to make an annoying blinking cursor turn into a beautiful set of apps and games that run with graphics, a mouse, and simply clicking an icon so that you can run your Word Processor, spreadsheet, or Minecraft game.

Now the Space Escort game, would simply load the next program on the tape, which worked well for it, but I wanted to load 'ANY' generic game, and ran into a fairly large problem.  The number of characters you 'push' onto the keyboard before END-ing your program was about nine (9) characters. The LOAD command used four, and the RUN command used another 3 PLUS the CHR(13) which emulated hitting the 'RETURN' key twice. That was 9 characters already, and I didn't even pick the program to load.  It came to me however that I could use the VIC20 shortcodes for LOAD and RUN (L+SHIFT O) and (R+SHIFT U). This would get me down to 7 characters, but the game itself would need to be in quotes which would take another 2 characters!

When the solution finally hit me, was that I could LOAD with the filename of a variable.  The final Command LO+Q$+CHR$(13)+RU+CHR$(13) would be exactly 9 characters, and I could set the value of A$ (The name of the program) just prior to using the POKE command...and VIOLA - IT WORKED, I SUCCESSFULLY GOT ONE PROGRAM TO LOAD ANOTHER.




The weeks following this I was on CLOUD-9, I WON, I FIGURED IT  OUT!!!. I was nothing short of a genius! BUT - no one around me could understand what I had accomplished and how important it was. I could not write a BLOG about it or get published in a magazine. There was no easy way to share what I had learned in the 'GEEK' community because there was no such community. From my parents perspective I was just lazily spending all my time in front of the computer', not getting any exercise, and staring at that silly screen all day.

I had been victorious no doubt - but it was a private victory - and while it was my first recall of my 'white whale' it was definitely not my last!

Reflecting back now almost 40 years later, I have watched my children grow up in the age of information, the internet and all that it had to bring.  I watch them play 'minecraft'. A game so simple and yet so popular left me for a while confounded.  You don't 'DO ANYTHING', you can build land, and structures, make new objects by crafting them from existing pieces, but in the end it doesn't seem to be a 'GAME' and it looks like just 'playing around'.

Then I think of those hours and hours spent on the VIC20 where everyone just thought I was 'playing around', and it gives me a new perspective.  Minecraft for my kids today is the 'VIC20' of my past. And the discoveries they may today might also go un-noticed and un-appreciated and 'private'. Fortunately, it is a different world, with the ability to communicate with like minded individuals all over the world. But it gives me a reminder that just because something looks like 'playing around'.  It could be they are in the battle for their 'white whale'.


For more of some of my thoughts about obsession and what to do about it check out -> 'The Obsessive Mind'

If you liked this post please consider sharing via your favorite social networks!!

and ..if you like my blogging, video, audio, and programming - please consider becoming a patron and get exclusive access @ Patreon.com/GeekWisdom

Comments

Popular posts from this blog

There's a bug in the keyboard driver...(dear liza)

Password Security Challenge - Last Pass & 1Password

What is Multi Factor Authentication (MFA / 2FA)?? and Why does it matter??

About the Book - Geek Wisdom

The Programmer's Dilemma

Despite of how it looks - I'm not part of a coup d'etat

Brad's Weekend of Coding - Day 1 - Summary

The Most Dangerous Software on the Internet!

Eco Cycle Planning Resources, Toastmasters & Unicorns

IT Security Myths & Legends