Machine Language for Commodore Computers

The best 6502 Machine Language book?

In his latest pro Jack Tramiel, pro C64 propaganda, TMR on his blog “C64 Crap Debunk” made this post , which I’ll now debunk.

I had already said lots of times that I was trying to find out how anyone could have learnt to program the C64 in or before 1985. TMR has previously claimed he did this, but had consistently refused to post a little program or source code on his blog. I was shocked when he eventually posted one in September 2015. The maths obsessed, monolingual TMR then claimed that I am “mathematically challenged” because he has only been giving away source code for twenty years, but I’m trying to find out why I couldn’t learn to program the Commodore 64 about 30 years ago. It doesn’t matter to me that the source code written by TMR was done after that time period, only that he claims to have originally learnt these techniques before I sold my Commodore 64 in March or April 1985.

Of course, I’m not good at maths, meaning geometrical formulae, but I have no problems with arithmetic.

TMR then goes on to claim that a double sized standard C64 font is somehow graphics. Obviously, text isn’t graphics. I think he should consult a dictionary.

As for using development tools running on Windows, Linux, or Mac OSX, this may be OK just to save time, but if it enables the user to do something not possible on an original C64, then it’s CHEATING! TMR still hasn’t explained how he created the double sized C64 ROM font, or how this could be done using only a C64.

Even in 1984-1985 I read about development systems for some popular 8 bit computers running on “business computers” or mainframes, but I didn’t understand the point of them. If programmers preferred to use these systems to create software for the C64, then that might explain why I was having so much trouble on a real C64. I’ll never forget reading that some C64 software was created on the BBC Micro.

TMR went on to say that he first sat down with an Assembly Language book in 1984, but he doesn’t bother to mention the title of the book, which is the most important thing. The best 6502 Assembly Language book is widely believed to be “Machine Language for the Commodore 64 and other Commodore Computers” by Jim Butterfield, as I mentioned in , but as the example programs in this book are designed to run on ALL Commodore 8 bit computers, this means that the book doesn’t deal with colour, graphics, or sound.

I made the mistake of forgetting, or not fully understanding that there is a simple C64 game written in 6502 Assembler in “The Hex Files” Part 9 on the page , probably because I was tired and may have had enough to drink. In any case the full game isn’t listed and explained on that page. You have to download the source code, including game_2.asm, from the link given. Even the file game_1.asm has 235 lines, but only about 25 of these lines are shown on the web page. Reading this file with its many comments then makes it clear that this is a simple game with sprite collisions and joystick control. The end of that page talks about the next instalment and “see you again”, but there are no further instalments on that site.

Of course, this information about techniques of how people could program a simple game on the Commodore 64 has come 31 years too late for me, as well as other people studying the Commodore 64 at the same time. Apart from this, computer manufacturers themselves are responsible for providing documentation about how to program and use their computers. What I mean is that Commodore should have provided Assembly Language listings for simple games and applications in their own manuals! I think it was in about September 1984 that I started visiting lots of department stores to try out BBC, MSX, and Amstrad CPC464 computers. Obviously, most of the the information in the series “The Hex Files” didn’t come from Commodore, so where did it come from?

Don’t forget that when I owned a C64, I started by reading “An Introduction to BASIC”, the “Commodore 64 Microcomputer User Manual” (which was missing when we bought it), and the “Commodore 64 Programmer’s Reference Guide”, so that should have been enough to get me off to a good start. Unfortunately, these books all said that the way to use colour, graphics, and sound on the C64 was with lots of PEEK and POKE commands. The conman running the consumer electronics shop where we bought it gave me the totally misleading answer “It’s EASY! You just use PEEK and POKE commands”, when when I asked how to “access the synthesiser circuits”. Obviously, nothing could be more difficult than using these commands to play music.

Here’s a short, but amazing program, similar to one I wrote shortly after getting my Amstrad CPC664 computer in May 1985. I’d like to see anyone do this on a Commodore 64.





Konstantin Chernenko

Konstantin Chernenko, Leader of the USSR for most of 1984

Finally, the shock news is that on September 19, 2015 I found a routine in a book which draws a line on the C64 screen from corner to corner! Just imagine you’re in a newsagent, or a book shop in 1984, when Margaret Thatcher was British Prime Minister, Helmut Kohl was West German Chancellor, Ronald Reagan was US President, Konstantin Chernenko was leader of the USSR from February 13 that year (replacing Yuri Andropov), 3.5 inch floppy disks were new on the market, and most of the World might be destroyed by a nuclear war with a 4 minute warning, or even a 30 minute warning depending on where you lived. This background almost pales into insignificance for you in your quest to draw a line across the graphics screen of your Commodore 64, something which is child’s play for owners of other popular “home computers” not made by Commodore. You look round at the selection of C64 books available from different publishers trying to find one which will enable you to succeed in your goal. I can’t transport you back to 1984 yet, but one of the books on the page contains this information. Unfortunately, the book talks about saving your files to disk, with some BASIC listings written to save to disk, without any option to save to cassette, which was all I had at the time. In that case when I read the words “save to disk”, not accompanied by “or tape”, then I may just have put the book back on the shelf. I hope someone lets me know when they find it. This quest I’ve set you may sound like mental cruelty, but it’s nothing compared to the torture Jack Tramiel and his co conspirators at Commodore, put me and millions through, even after Jack Tramiel left. My attempts in the series “Drawing The Line” failed to draw the line from the top left to the bottom right hand corner of the screen, because the line ended at a position somewhere to the left of that. Happy hunting!

This blog has no means of funding, I’m actually quite skint or broke, and my life is in danger from eviction by a property speculator, probably taking place in January 2016. If you’d like to make a donation, please send me an email on , then I’ll tell you how to do that.


Posted September 20, 2015 by C64hater in Uncategorized


Subscribe to comments with RSS.

  1. I’m late to this debate, which is fascinating (though the personal attacks on both sides seem unfortunate).

    The complementary statement to “The C-64 is Crap” is “The Amstrad CPC isn’t”.

    I grew up in the US, and Commodore, Apple, and Atari dominated the 8-bit scene. Your blog introduced me to the Amstrad CPC, and it looks like it was a powerful, high quality machine. I’m sorry I missed out on it.

    I think there is little argument that CBM BASIC V2 is a crummy BASIC implementation, and at first glance Locomotive BASIC is much better. I would also argue the all of the line-numbered BASICs become tricky eventually. A language with named procedures and local variables, in my opinion, would be the minimal set of features to make much more readable programs. It’s one of the reasons I switched to Pascal quickly, even as a kid, and loved things like Amiga Darkbasic in the 16 bit generation.

    There is also little debate that the load times on the 1541 were inexcusably, excruciatingly long without some third party acceleration, which only worked some of the time.

    The “network effect”, at least in the US, lead to dozens of extremely high quality books, magazines, and disk magazines for the Commodore, Apple, and Atari. Bombjack’s Commodore scans and are a wealth of information.

    In defense of “The CPC isn’t crap” argument, I’d like to see your blog feature that machine more. I’d really love to learn more! What was the book, magazine, and disk magazine scene like? How did kids learn to program? Was CP/M where people ended up to do more powerful programming?And, in today’s world, is there a site with the same depth of CPC material as Bombjack’s C-64 site?

    Looking forward to learning more about programming on the CPC!

  2. Thanks for your comment! I’ll try to answer your questions.

    Unfortunately, although the Amstrad CPC6128 was shown at a CES and sold in the USA, it didn’t get much publicity and there was a lot of prejudice against foreign computer manufacturers as well as trade protectionism. This was why the CPC6128 never became popular in the USA. I don’t think any of the other Amstrad CPC models were sold in the USA at all.

    It seems that all implementations of BASIC on 8 bit computers had line numbers.

    BBC BASIC and Sinclair QL SuperBASIC both had procedures, but Amstrad’s Locomotive BASIC didn’t. It was actually a rewrite of BBC BASIC for the Z80 CPU, but Locomotive Software decided to cut out the procedures, keeping the long variable names, and adding commands for interrupts, like in MSX BASIC.

    Unfortunately, the CPC range of computers were only released in 1984, whch a lot of people thought was too late, were only produced for a period of 6 years, then replaced by the 464 Plus and 6128 Plus, which were soon discontinued. As you know, they weren’t popular in the USA. For these simple reasons there were less books and magazines written about them than for the Commodore 64.

    CP/M was a very important part of using the Amstrad CPC computers. The manuals told users that even to format a disk they had to boot into CP/M, then use the CP/M command FORMAT, possibly with the option D for a data only disk without CP/M, but with more space, or possibly the option V for vendor format, meaning that the user didn’t pass on their copy of CP/M to a CP/M Public Domain Library, but install it once they received their disks back, and the obscure I option, meaning to format a disk in the IBM CP/M format. I think the recommended way to copy files was using the CP/M command FILECOPY. Later on, software houses produced disks with programs to format disks, copy disks and files, running on the native Amstrad CPC system instead of relying on CP/M.

    A good site about the Amstrad CPC computers is with some magazine scans on and books on .

    The main magazines in Britain were the official Amstrad Computer User, Computing with the Amstrad, and the mainly games based Amstrad Action.

    Amstrad CPC users could learn Locomotive BASIC from the accompanying manual, as well as from the Amstrad dedicated magazines. Here’s a simple game written in Amstrad’s Locomotive BASIC on a CPC computer

    CP/M really took off with the CP/M Plus version on the CPC6128 and the Amstrad PCW computers, but I never really got into CP/M Plus because my CPC664 wasn’t supplied with it and it needed a RAM upgrade to 128K. I only got the RAM upgrade and a pirate copy of CP/M Plus some time later. Meanwhile, there were lots of articles about software running under CP/M Plus which there was no real point me reading.

    I first used a mouse on my Amstrad CPC664, which was an AMX mouse, complete with the software AMX Art.

    I haven’t actually done any programming on an Amstrad CPC for many years, although I fondly remember that it was the first computer I owned which allowed me to draw lines across the screen, play little tunes, and have access to a disk drive.

    Here’s a video about someone writing an amazing program on an Amstrad CPC664 doing something which wasn’t thought of while that computer was in production

  3. Thanks for your reply, I appreciate it, and will follow up on your links!

    Indeed, all of the 8-bit BASIC dialects had line numbers, but I think that lead to it being a dead end language. It’s a shame really – BASIC had a low barrier to entry, but you definitely hit the wall. You may have hit the wall faster in CBM BASIC 2.0 with two letter variable names and no graphics / sound primitives, but GOSUB 1000 or IF X > 5 THEN 50 leads to very hard to understand code in either dialect. It is why I think those BASIC implementations were a dead end (as I mentioned, I switched quickly to LOGO and Pascal and was very happy.). It’s a shame that a language like Python couldn’t have worked on an 8-bit computer (and while the Jupiter Ace tried Forth, an intriguing choice, for a beginner Forth was probably a rather rough barrier to entry.)

    I don’t know what 1984 was like in Britain. In the US, everyone expected the 16 bit computers to replace the 8-bit ones, even though they never really did. In 84 and 85, the ill-fated IBM PC jr and not so ill fated Macintosh, Amiga, and Atari ST arrived on the scene. I suspect things were a bit different in Britain, with the QL being the only 16 bit machine I know about, and the 32-bit RISC revolution of the Acorn Archimedes not landing until 1987. Amstrad competing in that market would have been tough indeed.

    The reason I brought up CP/M was that, at least as a programmer, it definitely offered some of the best tools – compiled line-number-free BASICs, Turbo Pascal, many assemblers, decent versions for Forth, even rudimentary versions of LISP and C.

    A typical CP/M program was designed for the essentially teletype systems of the 1970s (when CP/M was born), so I doubt these tools took very good advantage of the CPC’s capabilities, but it’s nice that it could run them.

    Everyone remembers their gaming experiences, but I think the non-gaming ones were just as important. My C-64 experience with Paperclip (word processor), Multiplan (spreadsheet), GEOS (plenty of applications), OCP Art studio (art), Activision’s Music Studio, and many others were very positive.

    As I explore, I will be keeping an eye out for the non-gaming aspects. How easy was advanced programming? How were the applications? How effectively could and did programmers take advantage of the CPC line’s extra RAM?

    Looking forward to learning more!

Leave a Reply

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

You are commenting using your 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: