An affair with A Commodore

It wasn't long before I grew tired of the TI-99. Not only did I want to do something useful, but I also wanted to experiment with the hardware. Not easy on the TI. Fortunately the Commodore VIC-20 was just hitting the market. While we had a few PCs, DEC Rainbows, and some CPM machines by then at work, our shop decided to purchase a VIC-20 to play around with. I started applying it to testing things in the shop such as printers and telecom equipment. It was a great signal source, and we also did a bit of durability testing, using the VIC-20 to run the tests. I liked it so well, I shortly got my own. I ended up in a 'love affair' with the VIC-20. I built everything from modems to home controllers. It was, and is, a great machine for hardware types. The architecture is just made for hacking. The built in software is likewise easily modifiable. Most everything you need is in the box.

I have several VIC-20s. This is the most photogenic, although they are all suffering from the dreaded yellowing.

The VIC-20 is most certainly going to be the subject of some other technical articles on this site. I still think it has a lot to give, and they can be found dirt cheap at garage sales, thrift stores, and eBay. Not only is it valuable as a teaching tool, and fun to experiment with, but it can serve as a truly useful controller. I hope to incorporate these into some projects as I re-discover the world of Commodore. For now, this page will serve as an introduction, general description, and historical tribute to a couple of old friends, the VIC-20, & C-64.

Here is a (bad) peek inside a VIC-20. They were well heat sinked, and pretty well made. The circuit boards, especially of the ones I have seen, are very high quality. Most of the LSI chips are socketed. You can see the metal cover over the VIC Chip and associated Video circuitry. The large "U" shaped metal at the bottom is to reinforce the expansion/cartridge socket, which is under it. The smaller "L shaped heat sink above is for the DC diode bridge rectifier. Under that is another heat sink for the 5-volt TO-3 style regulator. To the left of the heat sinks is an important part. The fuse! If you experiment long enough, you will blow this fuse Here is a little better look at the VIC-20 Circuit board. I have removed the heat sink that is attached to the diode bridge. I have also removed the cover over the VIC Chip, which you will note has been robbed from this board. The two LSI Chips in the upper left are the 6522 PIAs. The 6502 processor is at the bottom, just to the right of center. At the bottom left are the eleven 2114 Ram Chips. All 3 of the 24 pin chips are ROMs.

One of the interesting things about the VIC-20 is it's power supply. It is very hefty, and the entire computer runs off of 5 volts. This makes it very easy to adapt to battery power. I have actually used modified VIC-20s in vehicles. (Note they do not work at temperatures below about 10 degrees). I have also expanded memory with Zeropower 6116 Rams, which are battery backed. The orange jumper in the photo supplies raw 9 VAC to the user port. The rectifier is a big ole' bridge seen on the right (with the white Heat sink paste on it). Amazingly the entire thing is well designed and built, and after 25 years, I see no corrosion on any of my units. This may have changed in later units, I don't know.

The cartridge slot had 14 address lines, data, and block decoding for 8k memory blocks, and 3 1k I/O blocks. The user port had one complete PIA port (8 bits plus 2 control) as well as the joystick inputs, duplicated from the joystick port, and a light pen input. The RS232 output (at 5 volts) used the lines on the user PIA port, Those PIA lines could be easily re-assigned. The cassette port was just that, for the cassette tape. It needed external circuitry to work with a standard audio machine (See below). The VIC also had a scaled down IEEE-488 serial interface. This was used to connect to printers and disk drives, and, besides it's own Floppy drive (The 1540), it was compatible with the C-64 1541 & 1571 drives as well. The kernel worked with all these devices simply by logically re-directing your basic commands to different devices (1-8). The VIC-20 handled Floppies very well, right out of the box.

Here are two books you need. The one on the left is the official Programmers reference and bible. It contains virtually everything you need to know. Basic commands, I/O maps, port pinouts. A detailed memory map including Basic variable locations. VIC & PIA programming, A schematic, and tons more. Fortunately Commodore was very open, and published every thing they could about their wonder machine. The book on the right is one of many along the same vein. It has the same information, but from a different perspective. It also covers more machine language. There are tons of other books on the VIC-20, but if you ant to play with a VIC, GET the programmers reference! This is an adapter to convert the 5v square wave cassette outputs into something you could record on a normal cassette recorder. There were plenty of plans for these around, as many did not want to pay for the official Commodore cassette. It is basically a 74LS14 Schmidt trigger.

One of the learning curves was the Memory Map. The kernel re-arranged some things depending on the memory configuration, most notably moving the video ram. At the lowest level, the memory map was broken into two 32k pages. The lower 32k was for the ram, video, and hardware I/O space. The upper 32k housed the system ROM, and the ROM cartridge expansion. Note the hardware I/O addresses were right in the middle. Fortunately, of the four 1k blocks of I/O, two were available for users. That was enough for the most ambitious projects. These were decoded, as well as 8k memory blocks, and supplied to the expansion connector. The VIC would check for a rom at address 0xA000, and boot there if it was present. Address lines A15 and A14 were used internally, all the rest of the address buss was available at the expansion connector, along with block memory decodes.

This is a handy expansion port expander, the Cardboard 6. Made by Cardco Inc, in Wichita Kansas. It allows more than one cartridge to be used, such as multiple ram cartridges, the programmers aid, games, etc. The ribbon cable plugged into the expansion port, and then you had six slots for things. Sometimes juggling the memory locations for all of these was a bit of a challenge. The DIP switches address some of that, but you still had to watch what you mixed. Yes, you could go online with the VIC. No, not the WEB, but there were certainly a lot of BBS's out there, Compuserve, and other online services. And, the internet was around. I don't remember exactly when I got on the internet (in the 80s). This is a modem for the VIC-20, and C64. It plugs into the user port, and was made by Westridge Communications. It came with the terminal software. As I remember this was not cheap, but I needed my Bulletin Boards.

The basic VIC comes with 5k of memory. There is 1k of System ram, a 3k "hole" then 4k of basic ram. The video memory (512bytes) was at the end of the 4k. This meant the unexpanded VIC had a total of 3.5k for programs, or about 1 page of code!. There were 3k expansion cartridges available to 'fill the hole' giving you 6.5k of program storage. Fortunately the memory could be easily expanded to a total of 27.5k available for Basic programs. You could buy memory expander cartridge, or, especially since all the decoding was done in the computer, all you needed were rams to make your own. There were some 3rd party memory expanders that would expand program ram to 64k. I don't know how they did that. In those days, I guess 27k was plenty for me.

This is the programmers aid cartridge. It added a number of editing functions to the built in basic, including auto-numbering, a find function, and some debugging commands such as step. This is a picture of a Super Expander cartridge. The first add on you would get. It added 3k of RAM to plug the 'hole. It also added a number of functions to the built in basic, notably renum, I believe it also added an else for the if/thens, some sound and graphics statements which were lacking in the limited original basic, and program editing features.

This is one of many interfaces I built for the VIC-20. I found this in the box with the rest of the VIC-20 stuff, when I was digging it out to write this. I think this was my "super-duper multi-purpose" interface. It connects to the User port, and has expansion sockets to add more expansion to the port. It has RS232 and current loop (relay) outputs, and buffers for the PIA port. If I recall, this was made for use at work, where we used current loops to drive various printers. This is an eprom programmer from Rex-Datentechnik. Called the Goliath Prommer. I actually think I got this for the C-64, and I seem to recall using it on the VIC-20, but I'm not sure. It plugged into the User Port, and came with programming software. I remember this supported a whole bunch of devices from back in the early eighties. This is an 8k memory expansion. If I recall the boards were the same in both the 8k & 16k, just the 8k was only half populated. This board has had sockets added for custom program eproms. The DIP switch selected the block the expansion resided in.

The Commodore 64 - VIC-20 on steroids

The next step up the line was the Commodore 64. I acquired my first one quite by accident.

The first Micro Center store was in the Lane Avenue Shopping center in Columbus, Ohio, where I lived. I had been a regular there since the beginning. One day, sometime in 1983, they announced to their regular customers they were going to have a big inventory clearance sale. Somehow, through a misprint, they were offering a complete C-64 system with printer for $99.00 in the flyer. Well, needless to say, I was in line Bright and early. Of course, it ends up this was a mistake. It was supposed to be a Timex Sinclair system. Fortunately (for me) the folks who opened the store were not aware of that, and started following the ad, selling many people, including myself, a Commodore 64 system for 99 bucks! Someone finally realized the error, but not before selling about half of the higher priced stock. To the stores credit, they decided to honor the ad for the rest of the C-64s they had. I have no idea what their losses were, I just knew I had a brand new C-64 with all the bells and whistles. I had me the machine, a 1541 diskdrive, a modem, and an 820 printer.

This is one of my more favorite accessories. The Commodore Magic Voice. I have long been fascinated by computer speech. This was a "canned word" synthesizer with a pretty good vocabulary. Best part was, it added voice commands to basic, so it was easy to make your programs talk. It had an RCA style output connector, which could plug into the back of the C64 console, or an external amp. Having a couple blind friends, I toyed with the idea of using this to make the C-64 easier for them to use, but I never pursued it. This is the MPS-801 printer from Commodore. It wasn't a bad printer. 7 Pin dot matrix, actually I think it was made by Epson or C.Itoh. It was sort of slow, but it made a very satisfying 'shurrump' sound as the head returned after each line., Best thing was that it used tractor feed FanFold Paper. Didn't miss that till fanfold was out of favor. I find it hard to print, or follow, a program listing on sheets of laser paper :-) This is the Commodore 1541 Disk floppy disk drive. 180k or so on 5 1/4" floppies. It was very slow, although there were third party cartridges that sped it up quite a bit by changing the serial protocols. This drive worked with either the C-64 or the VIC-20. This is a picture of the Commodore 1520 printer/plotter. It used 4 colored ball point pen cartridges, and four inch paper. Software could select which color pen to use (red, green, blue, and black). Additionally it was possible to draw lines between x & y coordinates. This made it a plotter. Many fancy drawings and designs could be drawn. It was quite fun to watch and program. When printing Text, it actually drew the text. This printer attached to the commodore IEEE serial buss.

The C-64 was truly an evolutionary product. It used the 6510 processor. The user port was the same as the VIC 20, as was the serial IEEE-488 buss and connector. The cassette connector was still there. The expansion port was completely different, and used a plug with narrower pin spacing, that was harder to find. I ended up making mine. It added an on board video modulator for direct connection to a TV. The basic was much expanded (although still limited), and contained many of the commands from the add-ons for the VIC-20. It also introduced Sprites. Better graphics and sound rounded out the features. Memory management was still an issue. It used an I/O port on the processor to map part of the memory. Since the address space was still only 64k, and there was 20k of ROM, and 4k of I/O addresses, you had to be aware of what was where. It did have a true 54k of ram that could be overlayed for any of the ROMS, and the I/O space, which really hosed things up! Plug in ROMs took over the Basic ROM space. If I recall the most memory available to basic was like 41 or 48k.

While I did not like the C-64 as well as the VIC, it was much more powerful (a relative term), and had much the same architecture. I ended up using my C-64 to do bookkeeping for our Condo association, and designed and built a couple of small building automation systems using it. The graphics were good enough (remember sprites?) that I could create a graphical (GUI) interface to the systems allowing your normal Joe, or Joan, to run them. It was nice having all that 'extra ram' to play with. You could write some pretty decent programs in it.



Epilogue

I still think these simple machines are great. The architecture was just made for experimenters and hackers. There was any kind information you could want for them, and tons of accessories and software are still available, They were affordable, and very useable. While it has been many years since I last used one of these, now that they are dusted off, I plan to re-aquaint myself. If you are into Retro, and/or want something that is fun to play with, that will teach you programming, basic computer and controller architecture, and a lot of things that are still viable in the embedded and controller world, I highly recommend checking these machines out.