Category Archives: VIC-20

What ELSE can you do when you don’t have ELSE?

NOTE: I have a follow-up to this ELSE thing already written which “changes everything” for me. There’s stuff about ELSE I never knew, which makes me want to never use it. More on that in the next installment. And now back to your regularly scheduled blog post…

First, a quick BASIC memory saving tidbit.

Shaun Bebbington left a comment about my VIC-20 dissection article asking if I knew you could omit zeros from DATA statements like this:

100 DATA 128,0,0,50,239,0,123,42,0,4

If you leave them out (comma comma), READ will still get a zero! It saves a byte each time you do that, which could be important on a machine with 3584 bytes free on startup like my VIC-20.

100 DATA 128,,,50,239,,123,42,,4

Good tip, Shaun! Thanks!

Is there anything ELSE I can help you with?

And while I had his attention, I asked him a few Commodore BASIC questions. I was wondering how you did IF/THEN/ELSE without ELSE! One of the many things I liked about the BASIC in the CoCo was it had ELSE and commands like PLAY, DRAW, CIRICLE, etc. My VIC-20 had no ELSE. In my Sky-Ape-Er game, I’d see my young self doing things like this:

125 IF K=17 THEN L=L-1:M=14
130 IF K=41 THEN L=L+1:M=13
135 IF K=39 THEN 180

In that code snippet, K represented the key value that was pressed. If it was 17 (left), I’d move the player left one and change its graphic character. If it was 41 (right), I’d move the player right one and change its graphics character. If it was 39 (F1, jump), I’d go to a routine that would handle the jump.

Without ELSE, if K was 17, it would do that, then check K two more times, even though it didn’t need to. Maybe I did not “see” it back then, but If I had the bytes to spare, I probably should have done something like this:

125 IF K=17 THEN L=L-1:M=14:GOTO 140
130 IF K=41 THEN L=L+1:M=13:GOTO 140
135 IF K=39 THEN 180

That way, if K=17 was true, it would do it’s thing, then GOTO would skip over the next two lines. This could be a huge time saver if there were a bunch of conditions (up, down, left, right, diagonals, jump, fire, punch, windshield wipers, etc.)

Someone has already suggested that I may have done it my original way to get consistent timing in the game loop. Somehow I doubt my junior high self was that clever. But I digress…

With ELSE, it could have been written like this:

125 IF K=17 THEN L=L-1:M=14 ELSE IF K=41 THEN L=L+1:M=13 ELSE IF K=39 THEN 180

Less code (the ELSE token takes up less memory than an addition line number and/or the extra GOTO to skip lines), and faster execution, maybe.

Side Note: Maybe? There is still the issue of, when completing a successful IF, BASIC’s parser still having to run through the rest of the line characters to find the end and the next line. Adding a “GOTO” wouldn’t help, either, since it would have to parse that and then STILL have to scan to the end of the line. (At least on Color BASIC, which does not remember line pointers once it is parsing a line.) It may actually be faster to break up a long set of IF/ELSE into small lines with a GOTO.

But Shuan mentioned a way of using ON to simulate an ELSE. A quick search led me to a forum post discussing this very thing.

It supposedly works like this… since a compare (K=42, A$=”RED”, G>100) will return either -1 (false) or 0 (true), you can do an ON GOTO based on the result of that compare. Since it’s a -1 or 0, you can just make the result negative (thus, -1 becomes 1, and 0 becomes -0 which is still 0):

10 ON -(A=42) GOTO 20:PRINT "NOT 42":END
20 PRINT "42!"

Er… what? I thought BASIC did not execute anything after a GOTO. It doesn’t, does it?

Nothing on a line after GOTO will be executed. WIll it?

But… but… How can ON/GOTO with something after it work, then? It turns out, ON/GOTO is special since the conditions of the “ON” may not be met, and thus the GOTO part may not get executed and BASIC will continue.

ON A GOTO 100,200,300:PRINT "A WAS NOT 1, 2 or 3"

Looking at it like that makes perfect sense to me. If A is not 1, 2 or 3, it won’t GOTO anywhere and the line continues to be processed.

Thus, this odd code serves as a simple “ELSE” when you don’t have ELSE:

10 INPUT "VALUE";A
20 ON -(A=42) GOTO 30:GOTO 10
30 PRINT "YOU KNOW THE ANSWER!"

…would be like…

10 INPUT "VALUE";A
20 IF A=42 THEN 30 ELSE 10
30 PRINT "YOU KNOW THE ANSWER!"
If no ELSE, use ON GOTO?

Interesting! I have not benchmarked this to see if it’s faster than using GOTO to skip lines, but it might be smaller due to not needing another few bytes for each line number.

Would this have helped my “left, right, jump” code? Maybe not. You can string these together like this:

124 ON -(K=17) GOTO 125:ON -(K=42) GOTO 130:ON -(K=39) GOTO 180
125 L=L-1:M=14:GOTO 140
130 L=L+1:M=13:GOTO 140

Since I was doing code in response to the IF, the ON/GOTO approach would just let me GOTO a line that does that code, which then still needs a GOTO to skip the lines after it that shouldn’t be executed. Not great for that use.

But, if I were dispatching to routines based on direction (like I do with the “jump” check to line 180), it would have worked just fine. Instead of this:

125 IF K=17 THEN 200
130 IF K=41 THEN 300
135 IF K=39 THEN 400
...
200 REM Handle LEFT
...
300 REM Handle RIGHT
...
400 REM Handle JUMP
...

Those three lines could be combined into one like this:

124 ON -(K=17) GOTO 200:ON -(K=42) GOTO 300:ON -(K=39) GOTO 400

But, doing a quick test typing in JUST those lines on a VIC-20 emulator, I got 3530 bytes free after each approach. No penalty, but no savings, and all the parsing with parens and the negatives is probably slower.

Interesting, for sure. Useful? I guess I’ll find out if I get around to updating my VIC-20 code.

Bonus offer

I also saw this example in the Commodore forum:

10 rem if then else demo
20 input a
30 if a = 1 then goto 60
40 print "this is the else part"
50 goto 70
60 print "this is the if (true) part"
70 end

This is how I’d write that with ELSE:

20 INPUT A
30 IF A=1 THEN PRINT "THIS IS THE IF (TRUE) PART" ELSE PRINT "THIS IS THE ELSE PART"

So we could change the Commodore example to match this a bit closer:

20 input a
30 if a = 1 then print "this is the if (true) part":goto 70
40 print "this is the else part"
70 end

…which leads us back to just adding a GOTO at the end of each separate IF:

10 GET A$:IF A$="" THEN 10
20 IF K$="U" THEN Y=Y-1:GOTO 70
30 IF K$="D" THEN Y=Y+1:GOTO 70
40 IF K$="L" THEN X=X-1:GOTO 70
50 IF K$="R" THEN X=X+1:GOTO 70
60 GOTO 10
70 REM DRAW X,Y...
80 GOTO 10

…which on the CoCo’s Extended Color BASIC might look like:

10 GET A$:IF A$="" THEN 10
20 IF K$="U" THEN Y=Y-1 ELSE IF K$="D" THEN Y=Y+1 ELSE IF K$="L" THEN X=X-1 ELSE IF K$="R" THEN X=X+1 ELSE 10
70 REM DRAW X,Y...
80 GOTO 10

Ultimately, we are just trading “ELSE” with “GOTO xx” and a new line, with ELSE being smaller due it it just being a token, verses the overhead of a GOTO token and the line number characters after it, AND a new line for each additional “else” condition.

Until next time, ELSE maybe sooner…

VIC-20: Sky-Ape-Er code dissection – part 2

See also: part 1, part 2, part 3, part 4 or part 5 (with more coming).

Welcome to my second VIC-20 Tuesday!

Previously, I began to dissect my old VIC-20 game Sky-Ape-Er. It was made up of two BASIC programs:

  1. INSTRUCTIONS – Display instructions, set up custom character set, then load and run the main game.
  2. SKY-APE-ER – The main game.

VIC-20 custom fonts

The VIC-20 did not have a true graphics screen. Instead, it used font characters that could be dynamically changed. Each character on the 22×20 screen was 8×8. You could create custom 8×8 characters to represent anything you wanted.

I believe I used a program called Eight by Eight Create by Robert Spahitz from the January 1983 issue of Creative Computing (Vol 9, Number 1). See page 270 (or 272 of this PDF scan):

https://archive.org/details/creativecomputing-1983-01/page/n271/mode/2up

Or this text version of just the article.

This also helps me confirm that I got my VIC-20 in 1982 since I initially did not have a Commodore Datasette tape deck for it and had no way to save programs until later. By the time this issue came out, I had the tape deck.

But I digress…

VIC-20 custom fonts on the CoCo

I have screen shots of what the custom characters looked like in the VIC-20 game, but thought it would be fun to take those DATA statements and display them on my CoCo. Using lines 100 to 125 from the INSTRUCTIONS program, I created this Color BASIC program:

0 REM skychars.bas
5 POKE 65495,0
10 CLS:XO=4:YO=2
15 DIM BM(7):FOR A=0 TO 7:BM(7-A)=(2^A):NEXT
20 FOR R=0 TO 7
25   READ V:IF V=-1 THEN 99
30   FOR C=0 TO 7
35     IF V AND BM(C) THEN SET(XO+C,YO+R,8) ELSE RESET(XO+C,YO+R)
40   NEXT
45 NEXT
50 XO=XO+10:IF XO>60 THEN XO=4:YO=YO+10
55 GOTO 20
99 GOTO 99
100 DATA223,223,223,0,253,253,253,0,0,0,0,0,1,3,3,7,0,60,126,219,129,165,165,129
105 DATA0,0,0,0,128,192,192,224,31,63,127,255,252,254,127,63,0,126,126,0,255,0,231,231
110 DATA248,252,254,255,63,127,254,252,15,7,8,30,31,31,31,31,231,219,60,255,126,126
115 DATA189,195,240,224,16,120,248,248,248,248,31,31,31,15,15,63,127,0,231,129,0,0,129
120 DATA129,129,0,248,248,248,240,240,252,254,0,12,12,24,47,8,15,82,36,48,48,24,244,16
125 DATA240,74,36,28,8,28,42,8,20,20,54,12,76,40,47,40,159,82,36
130 DATA -1

It now displays what those font characters look like:

VIC-20 Sky-Ape-Er font display on a CoCo.

These custom characters would replace “@ABCDEFGHIJKLMNOP”. The “@” symbol was the brick used to make the game playfield.

Letters A-L were used to make the ape, like this:

ABC
DEF
GHJ
JLK

Letters M-O were the player’s character, facing right, left and forward.

Letter P were the small apes that were running towards the player. They never turned back, so no additional characters we needed for them.

My program was written to just put those characters on the screen, which would look like this:

My VIC-20 Sky-Ape-Er game without the custom font.

But with the custom font in use, it looks like this:

In the next installment, I’ll walk through the actual SKY-APE-ER game code and see how it works.

Until next time…

VIC-20: Sky-Ape-Er code dissection – part 1

See also: part 1, part 2, part 3, part 4 or part 5 (with more coming).

NOTE: This article was originally started on February 29, 2016, shortly after I discovered my cigar box of VIC-20 cassette. When I say “recently,” that now means “four years ago…”


Welcome to VIC-20 Tuesday!

I have slowly been importing my old VIC-20 programs in to the VICE emulator. This has been a tricky process. The tapes are over 30 years old and I no longer posses any real hardware to read them on. (I let my dad take my VIC-20 in exchange for getting me a Radio Shack TRS-80 Color Computer.) I played them on a higher end late 1990s Radio Shack dual cassette deck, and record them at 96khz stereo in Audacity on my Mac. The original tapes were mono, but some are stronger in one channel so I have been preserving both tracks as stereo audio files. I then use wav-prg to convert them to image files I can load in the VICE Commodore emulator.

My Sky-Ape-Er game has caught my attention. On the tape was a program called INSRTUCTIONS (with that typo I apparently never noticed) that will display instructions, wait for a keypress, then load the game as a second program called SKY-APE-ER. There were actually three copies of the main program, and at least two were different versions (oh, if only I had added version numbers to the file name). I also found several other copies of the main game program on other tapes in various forms of completion. I am hoping that this one is the “final” complete version.

The loading process looks like this:

vicCode-skyapeerload1
VIC-20 loading a program from tape.

…then you would type “RUN” (assuming you didn’t use the shortcut “RUN” key, which would do the “LOAD” and “RUN” automatically):

vicSkyApeEr-instructions
VIC-20 Sky-Ape-Er loader (instructions).

Then you press any key…

vicCode-skyapeerload2
VIC-20 Sky-Ape-Er loader, loading second part.

…and the program will have you “PLEASE WAIT” for a moment, then will erase itself with “NEW” and the “LOAD” the actual game.

I scanned the code to see how it did this, but I saw nothing obvious. No “NEW” or “LOAD” commands or anything. How did it work? Thanks to the Internet, I believe I figured it out.

First, let’s look at the source code of the program:

Sky-Ape-Er loader, lines -25.
Sky-Ape-Er loader, lines -25.
  • Lines 5-6 – REMarks (comments).
  • Line 10 – POKE stores a value at a memory location. But what is 36879, 808 and 775? A quick search lead me to some answers. 36879 ($900f) is “Screen color / Reverse mode / Border color”. In the VIC-20 manual, Appendix E shows that 26 would be red border, and white screen. Another search led me to a Compute magazine article showing that  808 ($328) is used to disable STOP, RESTORE and LIST (to prevent the user from BREAKing out of the program). 775  ($307) showed up in a correction article from the same magazine, stating that it is what disabled LIST. (Not sure about 808, then. Maybe there were two POKEs required and the first article had a typo or left the second one out by mistake.)
  • Line 15-25 – The Commodores allowed embedded special control characters, and the inverted heart is clear screen. The others are likely color codes and cursor movements, to position the text where I wanted it to be.
Sky-Ape-Er loader, lines 25-55.
Sky-Ape-Er loader, lines 25-55.
  • Line 25-50 – More things that print the text on the screen.
  • Line 55 – Gets a keypress then, if the keypress is nothing (“”), go back and get another keypress. This causes the program to spin in a loop until a key is pressed on the keyboard.
Sky-Ape-Er loader, lines 60-105.
Sky-Ape-Er loader, lines 60-105.
  • Line 60 – Please wait … for what? It looks like what happens next may take a few seconds.
  • Line 65 – This is clearing out memory locations 7424 to 7432. But why? All I can tell so far is this is some memory location in RAM with other places saying it’s in the User BASIC area. A helpful forum post gave me a hint. This is actually clearing out the 8 bytes that will make up the “space” character so once I customize the character set with game graphics, that character will still be a space. More on this next…
  • Line 70 – This walks through memory locations 7168 to 7303 and POKEs them with the values read from DATA statements below. This is storing values in that range of memory. But what is 7168? According to this page, that is the start of “half RAM, half ROM of upper case normal characters since the 14-bit address space of the VIC wraps around”. I believe this is the font/character set, and the DATA statements are the custom graphics for the Sky-Ape-Er program (such as the bricks for the levels, the pieces that make up the ape, the chimps, and the player).
  • Line 80 – This is the magic! According to this page, memory location 198 is the number of characters in the keyboard buffer. The VIC-20 has a keyboard buffer from 631-640 (9 bytes?). I am stuffing the buffer with 78 (“N”), 69 (“E”), 87 (“W”), 13 (“ENTER”) and then 131 (the “RUN” key). Thus, it’s like I typed “NEW” and pressed ENTER (clearing out the BASIC memory), followed by hitting the “RUN” key, which does a “LOAD/RUN” sequence, loading the next file from tape and running it. Huzzah! The autostart with done by stuffing the keyboard buffer as if the user typed commands. This tells me just putting in “LOAD:RUN” in a line of BASIC wouldn’t have worked (probably because it would overwrite the program, and you could never get to the RUN part). Cool
Sky-Ape-Er loader, lines 110-END.
Sky-Ape-Er loader, lines 110-END.
  • Line 110-END – The rest of the code are the DATA statements that make up the custom character set. I will have to dissect them so I can see what the bitmaps look like.

I have no recollection of how this works, so I assume these POKE values were things I found in the Commodore VIC-20 manual or read in magazines such as Compute’s Gazette. There was very little information around back then. In fact, when I got this computer, I knew of only one store in all of Houston that sold software for it (other than Commodore cartridges at some places that sold the computer). I had my grandmother drive me across town to go there once, and that is the store where I bought the Krazy Kong game that inspired me to write Sky-Ape-Er.

There was a Commodore Houston’s User’s Group (CHUG) that I attended a meeting of, but that was the only time I ever met other VIC-20 users (other than going to meet the publishers of the FOX-20 cassette magazine at their house). It was a whole different world back then, and it’s amazing that I can go from from “what does this do?” to writing this article in just a few web searches.

Up next: A look at the actual Sky-Ape-Er game itself, including how it uses this custom character set for game graphics.

Converted Source Code

Here is the INSTRUCTIONS program converted from PETASCII to ASCII. I found a utility that does this thanks to this blog post. The utility is found here:

https://www.commodoreserver.com/Downloads.asp

It does a nice job of translating the PETASCII characters to {words} so I can better understand what was supposed to be there.

5 REM  ************          *SKY-APE-ER*        *******BY*******
6 REM*ALLEN  HUFFMAN*      ****************{$cc}
10 POKE36879,26:POKE808,100:POKE775,200
15 PRINT"{clear}{black}{right:2}-=<<SKY-{red}APE{black}-ER>>=-{right:5}BY:{blue}ALLEN HUFFMAN"
20 PRINT"{purple}{$a4:22}{$a5}    INSTRUCTIONS    {$a7}{$a3:22}"
25 PRINT"{black}{down}CLIMB THE BUILDINGS TO CAPTURE THE MAD APE!"
30 PRINT" JUMP OVER CHIMPS AND UP STEPS TO GET TO THETOP. YOU MUST FACE THE";
35 PRINT"  DIRECTION TO JUMP."
40 PRINT"{down}{blue}      CONTROLS :{down}"
45 PRINT"{red}<LEFT>='A'{right}<RIGHT>='S'{right:4}<JUMP>='F1 KEY'"
50 PRINT"{down}{black}{rvrs on}    PRESS ANY KEY.    "
55 GETA$:IFA$=""THEN55
60 PRINT"{clear}{right:4}PLEASE WAIT..."
65 FORA=7424TO7432:POKEA,0:NEXTA
70 FORA=7168TO7303:READB:POKEA,B:NEXTA
80 POKE198,6:POKE631,78:POKE632,69:POKE633,87:POKE634,13:POKE635,131
100 DATA223,223,223,0,253,253,253,0,0,0,0,0,1,3,3,7,0,60,126,219,129,165,165,129
105 DATA0,0,0,0,128,192,192,224,31,63,127,255,252,254,127,63,0,126,126,0,255,0,231,231
110 DATA248,252,254,255,63,127,254,252,15,7,8,30,31,31,31,31,231,219,60,255,126,126
115 DATA189,195,240,224,16,120,248,248,248,248,31,31,31,15,15,63,127,0,231,129,0,0,129
120 DATA129,129,0,248,248,248,240,240,252,254,0,12,12,24,47,8,15,82,36,48,48,24,244,16
125 DATA240,74,36,28,8,28,42,8,20,20,54,12,76,40,47,40,159,82,36

I normally just use the WordPress “preformatted text” box, but it did not like this listing. Hopefully this shows up.

Until next time…

VIC-20 Super Expander and the CHUG logo

My first computer was a Commodore VIC-20. I used it to do TV titles for my dad’s fishing videos (he shot and edited video that would run at trade shows and such). I can’t find the tape of those VIC-20 graphics, but I did find this:

VIC-20 Super Expander: CHUG Logo

This was my version of the CHUG (Commodore Houston User’s Group) logo, done on the VIC-20 Super Expander cartridge. That cartridge added 3K of extra RAM, and had a ROM that gave new commands to do things like draw lines, play music, etc.

I also found a few other things, but I don’t think I had anything to do with them. (Unless I did the face graphic. That one, and as second version of it I found later, seem very familiar.)

VIC-20 Super Expander: Kangaroo
VIC-20 Super Expander: String
VIC-20 Super Expander: Blinky

The face one would draw the circles around the eyes, then un-draw them, over and over. Not really “blinking” but…

My quest for recovering my early VIC-20 games continues…

Commodore VIC-20: My first computer.

My very first computer was a Commodore VIC-20. At the time, I think I was interested in a new video game system like an Intellivision. My dad suggested that, for about the same money, I could get a computer instead that would do more than just play games. (Second generation game systems like Intellivison or ColecoVision were around $200.)

My desired to get a home computer was also inspired by a guy I met in one of my 7th grade classes. My new friend, Jimmy J., had shared a book on BASIC computer programming with me. We would go down to a local Radio Shack and type in programs on their TRS-80 Model 3s.

My dad began researching options, and I did the same. I ended up choosing something called a VIC-20. I was disappointed when my dad told me he had chosen a different machine – something he called the Commodore. When I realized we were talking about the same machine, it seemed like the perfect choice.

The VIC-20 marketing campaign was “Why buy just a video game?” and “A real computer for the price of a toy.” This may have actually been what got my dad thinking about a home computer in the first place. It was described as “the wonder computer of the 1980s for under $300” and “the first honest-to-goodness full color computer you can buy for only $299.95”, or so claimed launch spokesman William “Captain Kirk” Shatner.

A TV commercial for it parodied the Intellivison and the Atari VCS ads with Shatner “beaming down” between the two saying “move over for my friend VIC”. How could you go wrong with the computer that the Captain of the U.S.S. Enterprise liked?

I received my new VIC-20 sometime in 1982. It was likely for my birthday in August.

I remember hooking it up to a small color TV I had, and staying up all night going through the manual and learning how to program “CBM BASIC V2” which had a whopping 3583 bytes of memory available. Since I had no way to save any programs I typed in, I had to leave the computer on all the time else I would lose all my work. The Commodore Dataset (their expensive and proprietary cassette player)  was about $75 at the time, and that was the first add-on I wanted. I still remember the problems I had with it, and that we had to exchange it at the store a few times (all with the same problem) until we figured out you just couldn’t use it on one side of the TV. There was too much electrical interference apparently.

Custom Programs Limited

My friend Jimmy also got his first computer around this time – a Timex Sinclair. Another friend of ours, whose name I forget, had access to TRS-80s at school. Somehow we got the idea that we could offer to create custom programs for people, and thus the idea of “Custom Programs Limited” was created.

CPU Software - my first "company" in 1982.
CPU Software – my first “company” in 1982.

Jimmy suggested we change it to “Unlimited” so the initials would be C.P.U. At the time, I don’t think I even knew the term “central processing unit.” And thus was born CPU Software.

I remember we came up with an idea for a horse racing game, and each of us created a version of it for our systems: VIC-20, TRS-80 and Timex Sinclair. I do not think we ever did much after that. We probably did not realize how big home computing would become. Had we seriously pursued this venture, maybe we could have all ended up rich and living on a private island somewhere.

I did write a series of games for the VIC-20, including one that was published in a newsletter called the VIC-NIC NEWS. I believe I was in the process of having some of my video games distributed through a cassette magazine called VIXEN (renamed to FOX 20 after their first issue), but I do not recall what happened with that. I know one of the programs they considered (Factory TNT, a graphically updated version of the one VIC-NIC published) they rejected after seeing my first version already published elsewhere.

I have created a special page listing more details about my VIC-20 programs.

Life After VIC

I think I only used the VIC for about a year. I had started frequenting a local Radio Shack store while my grandmother shopped next door. I was learning about their TRS-80 Color Computer. It wasn’t nearly as colorful as the VIC, but it had a better BASIC and much more RAM. I made friends with the workers there and they would let me hang out on Saturdays, writing programs or using their TRS-80 Model III and modem to dial in to local Houston bulletin board systems (BBS). I remember they would sometimes save off programs I wrote to cassette to use to demo the machine to other customers.

The salesman I interacted with most there was a man named Don Burr. He had a CoCo himself, and I remember the time he called me to tell me they had just gotten Extended Color BASIC in. He said I needed to come by and see all the new graphics and sound commands it had. When I did, seeing the ability to easily draw a LINE, CIRCLE or PLAY a musical note was magic. Everything on the VIC was done using POKE commands. (I did have the Super Expander cartridge that added similar commands to the VIC, but they were very slow and no one could run any programs you wrote unless they had the cartridge as well.)

Don was able to hook me up with a “CoCo” (expanded to 64K) for $300, and I moved on from the VIC. As part of the deal of getting me a new computer, I had to give all my old VIC hardware and software to my dad. I don’t know what he did with it after that. After that, until recently, I pretty much never looked back. Only with the discovery of my old VIC-20 games am I starting to understand how much I actually did with that machine.

Good times.

Up next: Dissecting some of my very first programs. Will I even remember how they work?

In search of VIC-NIC News

  • 2020-03-17 Update: I found another reference to The Byte House in a magazine called Micro (about the 6502 and 6809). They listed a VIC-20 game called “Mojave Desert Adventure” by Dennis McCormack. Then, in an earlier search, there was an excerpt from VIC-NIC called “Ask Dennis.” Now I have a second name to try to track down in hopes of finding this old newsletter.
  • 2021-10-13: http://www.vic20listings.freeolamail.com/mag_cpowplay.html
  • 2024-02-02: Someone e-mailed me today saying they had the first issues and that my Eggs program appears in issue #6. I am hopeful they can provide scans of these issues so we can get them uploaded/archived somewhere. I’ll share details when I have them.
  • 2024-02-012: Article posted! (Also check for follow-ups as I fixed an issue with the joystick code.)

My first computer was a Commodore VIC-20. When I first received it (thanks, dad!), I stayed up all night going through the manual learning how to program it. In my short time with the VIC (I got a Radio Shack CoCo 1 about a year later), I wrote many simple games. Recently, I found a box of old VIC-20 cassettes that have these programs, and I have been trying to import them to run on an emulator.

This makes me want to find another aspect of my first computer. I had a program published in a newsletter called VIC-NIC NEWS. I cannot find my physical copy of it (but may still have it somewhere, since I still have all my old Compute’s Gazette VIC-20 magazines). I’ve done some searching for it over the years (and when I search now, I tend to find myself searching for it or talking about it).

Can anyone help me track down VIC-NIC NEWS? My game was a simple “catch the falling object” game called Eggs. I’d really like to see it again.

Online searches revealed issues of a magazine called Commander. I found this excerpt:

THE VIC-NIC NEWS , bi-monthly, $6 per year from The Byte House.

8 page newsletter consisting of several brief listings, a page of reviews, a crossword puzzle, some ads, a question column, and errata. A decent price from friendly folks, but what is a VIC-NIC?

-Commander Magazine / Also The Midnite June-July 1983 Page 50

As well as a listing under User Groups – New Hampshire:

TBH VIC·NIC CLUB
PO Box 981
Salem, NH 03079
Contact – J. Newman
Publication – VIC-NIC NEWS
Interests – VIC-20 Exclusively

-Commander Magazine (Issue 08, July 1983, Page 121 / Issue 8, Page 89)

I have had no luck tracking down J. Newman. (I also wonder if this might be a female, since I often see women go by an initial in publications and online. Anyone know who J. is?)

Any help?

UPDATE

Tada!

Before Sub-Etha Software…

Updates:

  • 2024-02-12 – Added image of Eggs, my first published program. Replaced Factory TNT screenshot with one that shows the proper graphics. Updated Meteor Clash screenshot.

…it was going to be Custom Programs Limited.

My first computer was a Commodore VIC-20 back around 1981 or 1982 (whenever it first came out for “under $300” – $299.99 is what my father paid for it, I believe).

But my buddy, Jimmy*, suggested “Unlimited” because then it would be C.P.U. (I had not even heard the term CPU yet). And thus, CPU Software  was born.

Screenshot 2016-02-23 21.57.52

The letters appeared to the musical notes of 2001, one at a time, then the title screen would come up:

Screenshot 2016-02-23 21.58.07

That was to be our startup for all our custom programs. It was going to be me writing for the VIC-20, and Jimmy writing for a Timex Sinclair ZX81, and another guy at school writing for a TRS-80 Model III (he didn’t own one, but had access to them at school). We thought we could custom write programs for people.

Our first program was a horse racing game, and it was written for each of these platforms, though I don’t seem to have a copy of it (or it’s on one of the tapes that is bad).

I don’t know why we didn’t pursue this, but I did write a bunch of small games for the VIC-20…

Eggs

I wrote a simple BASIC game called Eggs and it was published in the June/July 1983 issue of VIC-NIC News (issue #6).

It was a very simple “catch the falling object” game that used joystick.

Brick Layer

Bricklayer was a simple game based on the Atari VCS cartridge Surround. I apparently wasn’t date-aware back then, and the comments inside the program only list the title and author. Bummer. I really would like to know when I wrote these.

Bricklayer for the VIC-20
Bricklayer for the VIC-20

The game screen animated as it drew the black walls (with sounds), then the game began. Using a joystick (I think), you started “laying bricks” around the screen, trying to cover as much area as you could without running out of room or crashing.

Screenshot 2016-02-23 20.56.14

If you got over 200, it would congratulate you. If you crashed, it would summarize your accomplishment.

Bricklayer for the VIC-20
Bricklayer for the VIC-20

Yeah. There was a time when this would have been considered a game. Interestingly enough, the movie TRON would come out a year later, taking the “draw lines” concept to a new level with the Light Cycles. The TRON arcade game featured Light Cycles as one of the four games it had, and this became my favorite arcade game of all-time.

I guess I had a thing for drawing lines.

Gold Grabber

Next up was a chase game.

Screenshot 2016-02-23 21.26.39

You moved around the screen (you were the clubs symbol) trying to catch the gold (the diamond) while avoiding the bad guy (the +).

Screenshot 2016-02-23 21.27.05
Screenshot 2016-02-23 21.27.43
Screenshot 2016-02-23 21.29.30

I have no idea what the “+” represented, and the game logic just had it wandering around randomly so I had to actually try to run in to it to see what it did.

Factory TNT

In my mind, this was called Factory TNT, but for some reason, the cassette was just labeled as TNT. This was a “Kaboom” catch the falling objects game. I had previously written a text version of the same type of game and called it Eggs. In it, you were catching falling eggs. This game was printed out in the VIC-NIC NEWS newsletter.

I almost had this program distributed by a company, but due to my very similar Eggs game being printed in a newsletter (which they also subscribed to), they decided to pass on it. (I belive this was the “FOX 20: the magazine for VIC 20 users” cassette-tape newsletter, published out of Pasadena/Deer Park, TX. (I lived in both those towns at one point, and recall going over to the house of the publisher – it was a home run operation – and meeting them once.)

The tape is bad, so the custom graphics are not loading, but it should look like a conveyor belt on the bottom, and pipes on the top. Classic round bombs would fall from the top and you moved your cup along the conveyor to catch them. If they hit the ground, they would turn in to a mushroom cloud. It has decent sound effects.

VIC-20 Factory TNT.

Apparently, it tracked high score (not saved to tape or anything, so it would reset any time you reloaded).

Factory TNT for the VIC-20
Factory TNT for the VIC-20
Factory TNT for the VIC-20
Factory TNT for the VIC-20

Apparently I had different rankings! Cool. I need to check the listing and see what all they were.

Thick Brush

For some reason, I did a blocky drawing program.

Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20
Thick Brush for the VIC-20

What in the world was this good for? There didn’t seem to be a way to save the “artwork” either. I guess I was, yet again, inspired by the Atari VCS Surround cartridge, which had a simple drawing mode (but the Atari version didn’t let you draw in colors – take that, Atari!).

Sky-Ape-Er

In a previous post, I mentioned my Donkey Kong inspired game, Sky-Ape-Er. Actually, it was really inspired by a VIC-20 game I bought that was inspired by Donkey Kong. I remember seeing it at the only VIC-20 store in Houston (I had my grandmother drive me across town to go to it), and they were out of stock, but they made a copy and sold it to me, and said I could get the real tape when they got more (I never did). On the label, they hand wrote “Krazy Kong”, so it might have been this one, or this Super Kong one. They appear to be the same game, but with different colors.

The important breakthrough was that they solved the problem of ladders and such by just making the level wrap around and go up. I had been working on a Donkey Kong style game and planned to use teleporters so you would stand on a spot and it a button and be teleported to the level above (I guess I had no idea how to make the climbing work then). When I saw the Krazy Kong approach, I knew I could do that, and make it better.

I worked on a few versions of this, with some graphics that looked like Donkey Kong girders, and some that looked like bricks. I think the brike

Later versions had instructions!
Unlike one I bought, my version had instructions!
The graphics were more Kong-like here. Sorta.
I think mine looked better than the one I bought.

It turns out to be a very difficult game! I finally cleared the first screen and found out there were multiple levels! I wonder how many are in there??? This is level 2 (using the prototype graphics):

Sky-Ape-Er for the VIC-20
Sky-Ape-Er for the VIC-20

And the “continue” screen was kind of snarky. I seem to have put some work in to these things.

Sky-Ape-Er for the VIC-20
Sky-Ape-Er for the VIC-20

I don’t know what my intentions were with this game, but I expect I was trying to sell it as well. I had no idea that an individual could just make tapes and put ads in newsletters and sell copies back then. I wish I did — I probably could have made some money in those early days.

Maze Gobbler

I was annoyed with Pac-Man games not looking like Pac-Man (I’m looking’ at YOU, Atari VCS), so I started working on my own. I replicated the Pac-Man maze very accurately, but by the time I had done that, I was out of memory on this 3.5K computer. Nothing exists from that maze except a title screen, as far as I have found:

Maze Gobbler for the VIC-20
Maze Gobbler for the VIC-20

Meteor Clash

My attempt at a Defender-style game (maybe – I’m not sure that game even existed yet) was Meteor Clash. You moved a spaceship up and down and dodged endless meteors that headed to you.

Meters Clash for the VIC-20
Meters Clash for the VIC-20

This game had an intro that printed out text letter-by-letter like a typewriter, with beeping sounds! Fancy.

Meteor Clash for the VIC-20
Meteor Clash for the VIC-20

Spell checkers did not exist for the VIC-20, apparently.

Meteor Clash for the VIC-20
Meteor Clash for the VIC-20

I don’t know how to use those cursor control keys on the emulator yet, so I wasn’t able to play it. I was able to fly for a bit until a meteor hit me.

Oops. This screen shot was taken when the meteors were being redrawn, so it’s just the ship. It wasn’t much of a game yet, anyway. It did have sounds, and an explosion, though! Maybe that would have been enough to be a game, but I hadn’t even customized the graphics yet. (Maybe that’s “Meteor Storm” I keep remembering.)

Rover

I seem to recall that this was going to be a Moon Patrol style game, but all I can find is a test of the title screen.

Rover for the VIC-20
Rover for the VIC-20

I found a few other things, too, including stuff written for the Super Expander cartridge which I cannot run on the emulator I am using. I need to figure out if that is possible in another emulator, since I have some games I wrote for it (enhanced graphics commands and such).

I also did a bunch of video titles for a booth at the Houston Boat Show for my father. I remember having an animated fish that swam back and forth on the screen in one of them, and drawing blue water waves. I later did graphics using my TRS-80 CoCo 1, and my dad was never impressed with it since the colors were so much worse than the VIC-20.

Interesting stuff, even if most of the tapes won’t load in 2016.

Man… I was, like, 12 years old when I was doing this. I really should have done more with it, but who knew computers were going to become such a part of life!

To be continued…

*Jimmy J was a kid I met in 7th grade. I had seen a listing in TV guide for “The Hitchhiker’s Guide to the Galaxy” on PBS and had watched it. In English (?) class, I quoted a line from the show, and he turned around and said something like “you watched that to?” We became friends, and I think he’s the one that let me know about Douglas Adams and the book versions of Hitchhikers. He also introduced me to computers. He had a book on programming and we would go down to Radio Shack to type things in on the TRS-80 Model III. He’s likely the one that introduced me to BBSes too (again, we’d go down and get online at Radio Shack before we had our own computers and modems), and he was also the one that introduced me to the concept of hacking and phone phreaking. Fun times! Beyond my parents, I can’t think of any other person that had such an impact on the direction of my life at an early age. Thanks, James!

My first programs!

Allen's first computer programs for the VIC-20.
Allen’s first computer programs for the VIC-20.

Tonight, I made an amazing discovery. I finally located a cigar box full of cassettes tapes containing VIC-20 programs I wrote in 1982 (when I was just 13 years old). I am eager to see what is on them!

Amazingly, not only where the games I remember writing here, but also a number of others I had completely forgotten about (and some I am not sure what they were). The list of programs I wrote includes:

  1. Brick Layer – likely a Surround type game (like TRON light cycles, which was not out yet).
  2. Factory TNT – the tape just calls it TNT, though. This was a Kaboom “catch the falling bombs” game.
  3. Gold Grabber – ???
  4. Meteor Clash – maybe this is the one I have been calling Meteor Storm all these years. If so, it’s a side scrolling spaceship dodging game.
  5. Sky-Ape-Er – a Donkey Kong style platform game, based on one I purchased and knew I could write better.
  6. Space Shot – ???
  7. Thick Brush – likely a drawing program.

I am very excited to see what these programs were. I also have (very faded) thermal printouts of some of them, though I don’t think I could scan them and OCR them or even read them enough to type them in these days.

Off to find a VIC-20 emulator, and figure out how to digitize these tapes and get them loaded in to it…

Sky-Ape-Er Lives!

Update: I managed to load a few files so far, but most have errors. But, I found two versions of Sky-Ape-Er!

This must have been an early prototype.
This must have been an early prototype.
Pinwheels where the original enemy. For some reason.
Pinwheels where the original enemy. For some reason.
Later versions had instructions!
Later versions had instructions!
The graphics were more Kong-like here. Sorta.
The graphics were more Kong-like here. Sorta.