THE SEMI SECRET STASH OF C64 INFORMATION   2 comments

THE SEMI SECRET STASH OF C64 INFORMATION

ComputeMar84Compute! magazine March 1984. Potential C64 owner buyers would probably only have seen the masthead saying “COMPUTE!”, though

Recently, on my quest to find out more about the crappy Commodore 64 with its messed up memory map and why it was so difficult or impossible for me to program, although some people somehow managed it, I’ve been able to get access to lots of information which I didn’t manage to get my hands on back in 1984-1985. This is because some of the information is contained in back issues of magazines such as Commodore User, published before I bought a Commodore 64, which was before I KNEW which computer I’d be getting, so I didn’t bother to read those magazines, as well as in books I didn’t buy. This may have been because I could only afford to buy a certain number of books instead of other items, or because reading yet another book which failed to explain what I needed to know put me off reading any more books about the C64 at all. Recently I’ve downloaded more books about the Commodore 64 free of charge than I ever owned in 1984-1985. I confined the publication dates of these downloaded books to 1984 or earlier, though. I found one book I downloaded was published in 1985, so I haven’t read that one yet. I didn’t own a modem until 1990, when I started using computer BBS systems on my Amiga A500, before I first heard of the Internet in 1994. I recently downloaded a PDF version of an Amiga book published before 1994 which mentioned “the ARPA Internet”, but if I’ve ever read it before, then at the time I’d probably just have thought “What’s that?!”, then forgotten all about it until later hearing a lot of publicity about the Internet and reading how to start using it in .net magazine in 1994. As various people, but not everyone, knows BBS stands for Bulletin Board System, which meant a computer you could connect to, which was probably fitted with a hard drive (unlike most computers at the time) containing lots of text messages and some software for download. The display was either plain scrolling ASCII text or multicolour ANSI text. A lot of the BBS systems were part of a network such as Fidonet.

JimButterfield1Jim Butterfield (1936-2007)

A big source of this Commodore 64 “semi secret stash of information” is Jim Butterfield (1936-2007), who as I mentioned recently, got a big head start on most computer users when he first programmed a mainframe computer in 1963, the year Doctor Who started. Unfortunately, someone was inconsiderate enough to assassinate President John Fitzgerald Kennedy the day before the first episode, which distracted people from watching it, but luckily it was repeated a week later. I didn’t remember ever hearing the name Jim Butterfield or reading anything he’d written back in 1984, but I eventually found a familiar article in Commodore User magazine about “garbage collection” in Commodore BASIC V2. He also bought a KIM-1 computer by MOS before that company was taken over by Commodore, wrote a book called “The First Book of KIM” and later on bought and studied the Commodore PET in great detail. This meant that he was already an old hand at using Commodore computers before the Commodore 64 came out. He was easily able to cope with the new VIC-II graphics and SID sound chips and wrote a monitor/assembler called Supermon for the C64 which worked in the same way as the built in PET monitor. I recently found a type in listing of Supermon in a book. The fundamental way the Commodore 64 works is very similar to the Commodore PET and the VIC-20, due to their shared “Kernal” OS and PETSCII character codes, but of course PET programs in BASIC don’t contain lots of PEEKs and POKEs, because Commodore BASIC V2 was actually designed for the PET hardware.

Jim Butterfield had a series of articles in Commodore User magazine which ran from late 1983 to mid 1984, finishing not long after I got my Commodore 64. This series of articles covered subjects including high resolution graphics, sprites, and even split screen displays! However, his book “Machine Language for the Commodore 64 and other Commodore Computers” dealt with the core Commodore “Kernal” OS, using techniques and ROM based routines common to all Commodore computers. It didn’t feature colour, graphics, or sound, though.

Unfortunately, at that time Commodore User magazine seemed to be covering mainly the pathetic VIC-20 with its crappy 20-22 column display and no hires graphics, and limited sound, so that alone could have put me and other Commodore 64 owners off buying it. Unlike various other magazines, Commodore User didn’t advertise back issues or their contents, so that means I and who knows how many other people missed out on this vital information. Most Commodore computer users at the time were using it as their very first computer, they hadn’t upgraded from an earlier computer, as explained by Gail Wellington in a video clip I posted a link to not long ago.

ComputeGazetteApr84Compute!’s Gazette April 1984

One comment I had on my post “All Change at Commodore!” was from “John Borrowman”, who told me about a magazine I’d never heard of before, when he said “Perhaps you should have subscribed to Compute’s Gazette or Loadstar to learn programming instead of buying cheap dime-store books with crappy type-in programs. I have enjoyed my Commodore computers (VIC-20, C-64, and C-128) for many years and I still tinker with programming on them to this day”.

ComputeC64FirstCompute!’s First Book of Commodore 64

Amazingly enough, I’ve recently downloaded “Compute!’s 1st Book of Commodore 64” from http://www.bombjack.org/commodore/books.htm , and these same articles by Jim Butterfield are also published in there. It says Copyright 1983 from magazine articles published in “Compute!” Magazine in 1982 and 1983, but I don’t remember ever having seen this book on sale anywhere in 1984. I wouldn’t have noticed it if I’d seen it after 1984. It didn’t even say in Commodore User magazine that Jim Butterfield was Editor of “Compute!” magazine, that the series of articles was originally published in “Compute!” magazine, have been published or will be published along with more information in“Compute!’s 1st Book of Commodore 64”, so I think that’s most strange!

“Compute!” magazine and their staff weren’t really evil, unlike Jack Tramiel and his sons Sam and Leonard who went along with his con. They’d just got used to using the Commodore PET range of computers, then when Commodore brought out the VIC-20 and the C64, they already knew most of the details about how these computers worked, including the concepts of 6502 Assembly Language, memory maps, the Commodore Kernal, etc. Brand loyalty may be the reason they stuck with Commodore computers no matter what crap Commodore unleashed onto unwitting consumers who had never owned a computer before. They were probably interested in getting their hands on a colour PET with graphics and sound, which they could soon work out how to program, although first computer buyers wouldn’t have a clue. “Compute!” planned to try and provide them with detailed explanations of this essential information.

The book “Compute!’s 1st Book of Commodore 64” is written by various authors and starts off by trying to explain the totally fracked up C64 memory map which prevents users from accessing 64K unless they can turn off the BASIC and Kernal ROMs, as well as the I/O ports. The first two chapters cover the C64 chips, as well as the crappy Commodore BASIC V2, which I recently found out was actually based on the source code of Commodore BASIC 4 for the PET series, but had all commands that weren’t in BASIC V2 deleted. I think these commands were only for using disks, such as DIRECTORY, CATALOG, DLOAD, and DSAVE, though. Obviously, they mention that users are required to use a lot of PEEKs and POKEs to access the Commodore 64’s colour, graphics and sound facilities. They quote the familiar pathetic Commodore excuse that they reused BASIC V2 on the C64 to make it possible to convert PET BASIC software for the Commodore 64, but surely this is nonsense, because they could just have added new commands to it, while keeping all the older commands complete with their tokens. Even if they’d changed the tokens, the programs could have been saved as ASCII text, then loaded or merged onto the C64 with a more advanced BASIC, similar to V3.5. I read that the SID chip designer went on to create the Ensoniq range of synthesisers, but as you may have guessed, there was no need to PEEK or POKE them to play music! It also clearly explains that the often mentioned raster interrupts, which bad spellers may have thought were a way to stop a Reggae musician from playing, but I had no real idea what they were in 1984, are a way of changing the screen display part of the way down the screen to display more than one character set, or increase the number of sprites above 8. I think this is quite crude compared with Atari computers’ “display list”, allowing users to create their own customised display modes, though. Interrupts seem to be a limited form of multitasking for 8 bit computers. Unfortunately, Orson Scott Card claims in this book that it’s easier to learn Commodore BASIC V2 on the C64 than “high school” French or Spanish, so that’s obviously false, because I speak French and can understand books and TV programmes in French, but I can’t program much in the way of graphics or sound in C64 BASIC V2. I can also read and understand more Spanish than I can speak, because it’s similar to French. Following this, there’s an explanation of the extremely tedious Commodore BASIC V2 method on how to set SID chip registers using numbers combined with logic operators such as AND, OR, EOR, or XOR to set register bits. I think this is similar to what the classic Doctor Who companion Adric was trying to do to the Cybermens’ bomb on the freighter at the end of the story “Earthshock”, but then (luckily?) a Cyberman zapped the console before his brain may have exploded from the stress this would have caused him, so at least he may have died a more peaceful death! Chapter 2 is actually called “BASIC Programming” and starts off with an explanation of the obscure command WAIT, which it turns out can be used to scan the keyboard instead of the missing Microsoft BASIC command INKEY$, or GETKEY in Commodore BASIC V7 on the C128. WAIT can even read a joystick! There’s also a method of stopping people from using LIST to see your BASIC program. Things really start getting interesting in Chapter 3 with that tutorial by Jim Butterfield, most of which was republished in Commodore User. He gives everyone a detailed description, which he calls just an “introduction”, to the 6566/VIC-II video chip, starting off by giving the easy to remember Hexadecimal addresses of $D000-$D02E. His tutorial includes details of all Commodore 64 video display modes, as well as how to use the sprites. It’s much better than the so called explanation in the crappy Commodore 64 Programmers’ Reference Guide! Unfortunately, this is done in the ancient Commodore BASIC V2, instead of Assembly Language/Machine Code. He doesn’t list a program to get Commodore BASIC V2 to accept hexadecimal numbers either, although I found one in another book. The location $D01A is the interrupt enable register, which I think is fairly easy to remember if you think it has priority 1A. All the colour data is stored in locations $D020-$D026, meaning border, four background colours, as well as two colours reserved for sprites. He explains multicolour sprites and how to detect sprite collisions. Locations $D01E/53278 and $D01F/53279 register any collisions. He tells people how to reconfigure memory to emulate a Commodore PET. There are tutorials on how to redefine character sets, and plot hires graphics. He also gives a listing for a simple game called “Lunar Lander” which actually uses the often ignored function keys! Unfortunately, this requires decimal data for sprites, as well as about 22 POKE commands and 3 PEEK commands in the space of only about 84 lines of BASIC. He also reminds us that our nosy neighbours or “curtain twitchers” keeping track of our whereabouts on the screen live at addresses $D011 and $D012. These nosy neighbours can actually help us to change display mode, character set, and/or sprite data when we get to a certain raster display line, after we tell them which line this is! In Chapter 4, entitled “Creating Games” Sheldon Leemon confesses to being a traitor to the amazing, groundbreaking Atari 800 computer, (which started with 128 colours, was upgraded to 256 colours, had custom graphics and sound chips and BASIC commands to support them) who was somehow roped in to the Commodore 64 cult. He soon confesses to being shocked by Commodore BASIC V2 on the C64 and the User Guide. He tells us how difficult it was to find out how to read input from joysticks on the C64. He gives two listings on how to move sprites using joysticks in Commodore BASIC V2 with lots of POKE commands, as well as in BASIC V2 with Machine Code in decimal POKEd into RAM, then called up with a few SYS commands. Chapter 5 is about what a pile of crap the Commodore BASIC V2 commands for disk handling are. It points out that even the simple commands CATALOG and DIRECTORY from Commodore BASIC V4 aren’t available in Commodore BASIC V2. It tries to implement these functions using some Commodore BASIC V2 programs. There are further articles about how to try and overcome the total inadequacy of how to handle disk operations under Commodore BASIC V2, including a disk menu maker and how to back up disks. Following this, we’re told how to program the User Port, which may not be any more complicated than on computers with advanced dialects of BASIC. Chapter 6 lists utilities such as a text search, music keyboard, and programmers’ alarm clock. Chapter 7 explores the memory map and architecture of the C64, including how to modify BASIC, as well as memory management. Chapter 8 has a roughly 14 page long Machine Code listing for a program called Micromon, which is a monitor less capable than Supermon, or the built in MONITOR on the C128. A few Appendices deal with how to input programs using the checksum software MLX and how to avoid any errors typing in BASIC V2 programs. All in all, it’s totally amazing and wipes the floor with the Commodore 64 Programmers’ Reference Guide!

ComputeC64SecondCompute!’s Second Book of Commodore 64

The book “Compute’s 2nd Book of Commodore 64”, which I also downloaded from http://www.bombjack.org/commodore/books.htm , explores the Commodore 64 in even more detail. It contains a word processor listing written in just over 16 pages of Machine Code, an arcade game called “Spike” listed also over 16 pages (4K) of Machine Code which can even be paused or frozen, “Martian Prisoner” a text adventure listing in just over 3 pages of BASIC V2, a mailing program listing in 3 pages of BASIC V2, and a spreadsheet listing in about 4.5 pages of BASIC V2. There are also some short educational games for school kids in BASIC V2. After this, there’s a section about the SID sound chip, with a 13 line BASIC V2 listing that actually plays a chord! There’s a sound editor in BASIC V2, as well as a BASIC/Machine Code listing called SYS Sound which is 3 pages long, that claims to enable users to create sounds that they can use in their own programs without a load of PEEKs and POKEs! There’s the Note Name Game, which teaches musical scales and is about 4 pages of BASIC V2. There’s also a chapter about how to define custom character sets and sprites. From there we move on to how to detect the function keys being pressed from BASIC V2, as well as an explanation of arrays. Starting in Chapter 5, then continuing in Chapter 6 the most impressive part of the book has two listings to extend Commodore BASIC V2, as well as an explanation of how this is done! The first article with a listing starts off by explaining how the Commodore 64 processes lines of BASIC using something called a “BASIC Indirect Vector Table”, which starts at location $300/768, and continues up to $30B/779, including the routines for error messages, line entry, tokenising, detokenising, executing commands, and evaluating functions, which I think could all be used for a replacement BASIC such as a C64 version of “Microsoft Extended BASIC”. According to this article you have to redirect BASIC away from these vectors if you write an extended BASIC, but the routines themselves are held in the ROM at addresses $A437-$BC49, so I think these routines could still be used in a replacement BASIC, not an extended BASIC. This article is limited to 5 simple commands, to fill the screen with a single character, set text colour, PEEK two adjacent addresses (often called DEEK), pause for a time defined by the number which follows, and turn off these extended commands. It doesn’t give various commands for colour, graphics, and sound which C64 owners were desperate for, but a second listing called SuperBASIC 64, which runs to about 12 pages, does give this among 41 extended commands, which all start with a [ character. Following on, there are some demo programs written in this extended BASIC. There are also listings to copy non program files, merge programs or routines together, as well as to restore a program after a NEW command. The book ends the same as the 1st book with MLX and the Automatic Proof Reader. In general this book is even more amazing and revealing than its predecessor!

“Compute!’s 3rd Book of Commodore 64”, also on http://www.bombjack.org/commodore/books.htm , follows up with some more amazing stuff. This includes an extended BASIC called 64 Paintbox listed over 7 pages, which provides Atari BASIC style commands enabling users to type in Atari graphics programs. Another program gives the C64 an 80 column display by using a special character set and a trick to position it in 80 instead of 40 columns. There’s also a turtle graphics interpreter and a section on programming graphics and sound. This includes a hires graphics editor, which is much better than David Lawrence’s effort in “The Working Commodore 64” and you can save your creations! There’s also HiSprite, a Machine Code routine to control sprites at high speed. Some more slightly useful programs are Colorfill to change the entire colour memory, and a real time clock. JEP is a Machine Language program to enable disabled people or young children to write in BASIC using a joystick instead of the keyboard. The program One Touch Keywords adds the facility to type in any of 52 BASIC commands by pressing two keys at a time, similar to the Acorn Electron, and not that different from the Sinclair and Timex/Sinclair computers. Another program is Autoload, which makes loading programs more automatic. There’s also the program Cruncher, which reduces the length of BASIC programs by removing spaces and REM statements. There’s also the program Machine Language Saver, which enables C64 users to save Machine Language from RAM onto tape or disk, like with BSAVE in MSX BASIC and Commodore BASIC V7, etc. There’s even a program called “Disk Surgeon”, which allows users to rename disks, delete and undelete files, and print out lists of disk files, like users of Commodore BASIC V4, Acorn DFS, Atari DOS, CP/M, etc could already do!

These books by “Compute!” are so much better than the official Commodore 64 Programmers’ Reference Guide and much easier to understand. In spite of this, there should have been no need for a third party publisher to print all this information to fix Commodore’s mess. Commodore should have told people how to program the Commodore 64 themselves!

The “Compute!” books contain a utility originally from “Compute!” magazine called MLX, which is a Machine Code loader that expects the user to input Machine Code in decimal numbers (because the crappy Commodore BASIC V2 can’t understand hexadecimal numbers), then provides a checksum for each line. This is a much better way of typing in programs than was used by most computer magazines of the time. I recently found out that similar system was also adopted in 1985 by some British magazine whose name escapes me now.

Of course, this information from “Compute!” should have been the basis of the Commodore 64 Programmer’s Reference Guide, or at least another book published by Commodore themselves, complete with their “chickenhead” logo, but it wasn’t. I don’t think this information is contained in that book, or at least not in a way easy enough for most people to understand. I think it’s more like ancient Greek, Latin, or Norse compared with the modern, simplified languages French, German, or Danish.

I missed out on all this information when I owned a Commodore 64 for a few simple reasons. These are as follows

1. The magazine which published it was called “Compute!” instead of Commodore something. The publisher made them cover various computers instead of just Commodore computers.
2. The magazine “Compute!” wasn’t widely available or widely publicised in Britain.
3. I don’t remember ever seeing any books by “Compute!” about the Commodore 64.
4. I don’t remember reading any reviews of these books anywhere either.

So, to sum up Compute! 10 – Commodore/Sams 2

Advertisements

Posted January 12, 2014 by C64hater in Uncategorized

2 responses to “THE SEMI SECRET STASH OF C64 INFORMATION

Subscribe to comments with RSS.

  1. Pingback: Irrelevance from the author | Commodore 64 Crap Debunk

    • I said that it wasn’t possible to use hexadecimal numbers from C64 BASIC, because it’s not usually possible. It seems that somehow, a few magazines managed to make it possible with certain programming techniques, though, so MEH!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: