The Commodore 64 Enigma   Leave a comment

The Commodore 64 Enigma


Can anyone see a Commodore 128 computer, three electric guitars, a music keyboard,  a large satellite dish or any paintings in this builders’ mess?!

Since the destruction of my way of life by a wicked property developer and evil landlords who wouldn’t rent to me I have been considering what to do next. I think that suing the property developer is an option, due to his agreement confirmed in SMS text messages to give me a week to pick up any belongings I may not have been able to remove before the Bailiffs turned up, then the total mess shown above, which the builders caused by moving all my belongings into one of the four rooms, burying it under who knows what, as well as mixing it up in a quagmire of furniture and electrical appliances.


Normal service for this blog has now resumed, because I’m typing this post on a new (refurbished) laptop, onto which I’ve installed Linux Mint 17.3 Rosa with KDE Plasma Interface, looking quite like Mac OSX. I’m also in some better accommodation, with a WiFi connection, although the place isn’t as good as the flat I was evicted from. During the last few weeks I’ve cooked my first microwave meal since January, as well as cooking my first Chili con Carne since January and have been making cafetiere coffee for the first time since January too.


Unfortunately, the original version of this document was done on my Android phone, using the app Notes, which works fine whenever you haven’t got an Internet connection, although Microsoft Office online and Google Docs don’t always work without a connection, but then I happened to press my thumb down on the end of the document, which made it Select All then immediately Cut and the whole text was deleted without trace, so Android users should watch out for that!  


I lost most of my belongings including my Commodore 128 because of the eviction, so I ‘ve been considering how I can get another Commodore 128 or if not what I should do. The problem is that since I bought a Commodore 128 a couple of years ago this model of computer seems to have become rarer and more expensive than it used to be. I could always use a Commodore 64 emulator such as VICE, but that feels like cheating and encourages the use of development packages which simply weren’t available to bedroom programmers during the time period 1984 to 1985 when I owned a Commodore 64. I’ve just installed WinVICE onto Linux Mint and it runs under WINE.


I bought my Commodore 128 from eBay Germany. Most Commodore 128 computers which I’ve seen on eBay recently seem to be located in the United States instead of Germany or elsewhere in Europe, so this creates problems for me, due to the fact that they wouldn’t be compatible with my EU 230V 50Hz mains power supply, as well as the difficulty of finding a compatible TV or monitor, meaning an NTSC TV or a 60Hz monitor. Of course, while the Commodore 128 and Commodore 64 were being produced, the mains power supply in Britain was 240V and 220V on the Continent, but this didn’t make any real difference. This situation with it being more difficult to buy a C128 has led me to consider the possibility of buying a real Commodore 64 computer instead!


A Commodore 64G


If I bought a Commodore 64 computer it would have to be a Commodore 64C, instead of the older bread bin model which I had before. Even a Commodore 64G model wouldn’t be different enough.


A breadbin C64 with beige function keys like the one I owned

How The Enigma Machine worked


My  whole experience with the C64 makes me think of the WWII Nazi encryption machine The Enigma. Both machines produce incomprehensible code and both were created by evil people. The Commodore 64 is truly an enigma, due to Commodore manuals which hardly mention the graphics screen, online BASIC V2 courses which claim that hires graphics is beyond their scope, etc. It could be said to be a follow up to the Enigma machine, although the Enigma could be easier to understand, because it uses much older, therefore simpler technology than the Commodore 64, such as rotary wheels instead of chips, but don’t forget that lots of memory locations on the C64 can be either ROM or RAM.  Commodore left people to guess about lots of facilities. I previously wrote that it was impossible to access 64K on the C64, because that was one of the many mysteries which Commodore created, leading people to think it was impossible, as well as a big secret on how to detect the joysticks, as Sheldon Leemon wrote in a “Compute!” book. Even so, using the whole 64K on the C64 requires programmers to turn off not only the BASIC ROM, but also the Kernal, and the Character ROM to free up 16K, then they have to make up some kind of replacements for the contents of those chips in their actual program, like reinventing the wheel. For more details see


Another big problem with the Commodore 64 is that its built in BASIC V2 can’t deal with hexadecimal numbers, so that all the numbers to PEEK and POKE seem to be almost random, but when you see these numbers in hexadecimal instead of decimal, it immediately becomes clear there’s a pattern to them. Atari BASIC can’t handle hexadecimal numbers either, but doesn’t require nearly as many PEEK and POKE commands as Commodore BASIC V2.

“You Might Think” demo (1984)


TMR continues to post notes about demos and produce cloned versions of them, but this isn’t relevant because there were no demos in 1984 except perhaps one I’ve found called “You Might Think”, which was music only. Apart from this, he doesn’t explain how to get to that level of programming, but admits that it’s not for beginners. The only clue from him is that if you tried to program the C64 in your bedroom for long enough, then you’d succeed. Music was the very kind of thing I was hoping to do on my C64, but Commodore and Jack Tramiel made it impossible for me, although it was fairly easy to fry chicken breasts even with the pan spitting fat at me, bake cakes from pre packaged mixes with instructions on the back, etc, etc.


The same model of Toshiba microwave my family used for several years


I had a few frustrating times while learning to cook, but nothing as bad as the C64. I thought that when cracking eggs into a pan to fry it was just pure luck whether the yolks broke or not, but then I found that you have to hold them not too high up from the pan when cracking them to avoid them breaking. If you start frying two eggs within seconds of each other, then they’ll be ready at the same time, so long as you remove the first egg from the pan first, unlike trying to play polyphonic music in Commodore BASIC V2, for example, where it seemed impossible to get the different sound channels to keep time with each other. Unfortunately, my Mum’s wrong instructions about how long to wait to defrost a chicken breast from the freezer or how long to defrost it in the Toshiba microwave caused me to miss the pilot episode of the sitcom “Mr Merlin”, which was never repeated, but there were no real disasters. The microwave in question had a digital display which was actually printed on rotary wheels instead of the more modern LED displays, but this was much better than just a dial with times printed round its edge because the cooking times could be programmed very accurately. We used that Toshiba microwave for several years, instead of having to sell it ASAP. This was because the manual wasn’t gibberish and it didn’t have to be programmed in Japanese or Commodore BASIC V2! If it actually did have to be programmed in Japanese or in Commodore BASIC V2, then you can bet there would be some smart alecs out there saying they could do it, so that in some way proved that anyone could do it. BTW, I advise everyone reading this to set an alarm if you’re drinking strong alcohol while boiling some rice in a saucepan, otherwise you could fall asleep, then wake up to a burning smell, and ashes in a ruined saucepan!


One way of “fixing” the Commodore 64 could be to plug in an Assembler cartridge so that it boots into the Assembler, but then you’d need to read some articles or books about some Assembly Language/Machine Code which produces some graphics and/or sound effects, which there didn’t seem to be many examples of back in 1984 when I was struggling with this. Quickly filling the text screen with occurrences of the same character, like in “Your 64” magazine, wasn’t much use. I don’t remember ever hearing of or seeing “The Commodore 64 Machine Language Book” by author Lothar Englisch for Data Becker/Abacus, which was certainly an eye opener for me when I downloaded it last year. More about this amazing book in another post soon.

Sebastian (1968)


I think that code breaking, such as that done by Alan Turing and his team on the Enigma machine is inspiring. There have been plenty of films and documentaries about Turing recently, so above is a link to a half remembered Dirk Bogarde film called “Sebastian” I once saw, which could be a big inspiration to people trying to work out how the hell anyone could program the C64.


Alan Turing (1912-1954)

I hope I’ll be inspired by the example of Alan Turing and his team to crack the Commodore 64 enigma!




Posted May 20, 2016 by C64hater in Uncategorized

TMR CAN’T COOK!   Leave a comment



A typical Currywurst (drool!)

In one of his recent posts entitled “Where to, guvnor?” (“Guvnor” is a term used in Britain by certain people who think that their customers are totally superior or of a higher class to them) TMR, the blogger behind “C64 Crap Debunk” mentioned that he can’t cook, or hardly at all. His exact words were…

“Your correspondent is a truly appalling cook and, although he’s just about capable of the basics, would expect anybody else to simply laugh at his opinion of what they’re doing in the kitchen;”

This is an amazing revelation! Now we can assume from this that C64 programmers are not only excellent at maths, but we can look into this new revelation that they can’t cook either!

TMR then went on to say…

“so why the author, as someone with no real programming knowledge, would expect to be taken seriously when writing about said subject is a mystery.”

This is actually quite simple to explain. The reason is that I’m playing a role like the character Jo Grant in classic Doctor Who (Third Doctor/Jon Pertwee era)  , instead of the role of Liz Shaw from the same era. Liz Shaw was a qualified scientist, who tried to talk to the Doctor about technology on his own level, but most of the audience couldn’t understand what they were talking about. Jo Grant however, started off by telling the Doctor that she’d taken an ‘A’ Level in science, but then later admitted “I never said I passed!” This was so The Doctor would have to explain things to her to help the audience understand the technical terms The Doctor was talking about. What this means is that while TMR is just showing off as a know it all about programming the Commodore 64, I’m telling the vast majority of people how they might be able to learn to program it to do simple things, in spite of the shitty Commodore manuals.


Chili con Carne (yum yum!)

As for me, before the Commodore 64 came out, I was already cooking fried chicken breasts and baking cakes, so this explains why my brain wasn’t capable of programming the Commodore 64 in BASIC V2. Later on, I cooked potato, cheese and onion bake from a Toshiba microwave cookbook, then after abandoning the C64, I went on to creating my own BSE free recipes for Chili con Carne, and Spaghetti Bolognese, and even managed to assemble the ingredients for and cook a Currywurst, which a Danish/German woman from Flensburg said tasted quite authentic. This means I have no chance of ever coding a C64 demo, so I could only do the graphics, the music and cook the coders some of the  dishes mentioned above so they don’t have to live on fast food while coding!


The type of Commodore 64 I owned (Yuck!)

TMR has spent quite a lot of time recently posting about C64 demos, but during my time as a Commodore 64 owner, I never heard about any demos at all, so I certainly wasn’t planning to create any. There may have been some official Commodore dealer demos, as well as a kind of demo of sprites and music on an official Commodore tape, bundled with my C64 or in the Introduction to BASIC course, but that’s it. If these demos required a disk drive, then obviously I couldn’t have loaded them. As far as I’m concerned, the type of demos he’s talking about only started with the Amiga and Atari ST computers. A further revelation about this was recently made by TMR, when it turned out that the first demos he ever saw weren’t actually released until 1986. This means that he never saw any demos during the period of time when I owned a C64.


That’s all for now! Look out for another revalation from me soon!!





Posted April 2, 2016 by C64hater in Uncategorized




I was working on an amazing post explaining how to draw lines on the Commodore 64 in Assembly Language. This technique could have been used to enable people to create wire frame graphics, like in the amazing, ground breaking game Elite, created on the BBC Micro, with its beautiful BBC BASIC language, containing procedures, REPEAT…UNTIL loops, long meaningful variable names, and a built in Assembler, allowing lines of Assembly Language to be mixed with BASIC in the same program.

The article I was working on was based on a listing in “The Commodore 64 Machine Language Book” by Data Becker/Abacus. Unfortunately, this document was on my laptop which was stolen/thrown away by the same technophobic bastard I was staying with who threw me out on the streets to die after eight days. I should have kept a backup somewhere, even storing it on a cloud system. I’m now typing this on an Android phone with a 10cm screen using Microsoft Office Online and Google Docs and saving it by uploading to Outlook Microsoft Word Online as well as Google Docs. Unfortunately, Microsoft Office Online for Android doesn’t seem to have a Select All function!

Now, let’s get down to summing up why the Commodore 64’s BASIC V2 was crap and how some people managed to program the C64. I decided to write this in the form of a bulletted list, but I don’t know if I can format it like that on my Android phone.

Why The Commodore 64’s BASIC V2 Was Crap

  • It was an old BASIC available to Commodore at no extra charge under their perpetual licence from Microsoft bought FIVE YEARS PREVIOUSLY
  • Commodore founder Jack Tramiel was a miser
  • Commodore wanted to screw more money out of Commodore 64  owners by selling them cartridges,  such as “Simons’ BASIC” and “Super Expander 64”,  containing the missing commands,  but not even allowing them to create stand alone software
  • Commodore/Jack Tramiel  were too miserly to pay Microsoft any more money for an updated BASIC, unlike Tandy/Radio Shack, Dragon and the MSX Consortium
  • Jack Tramiel refused to pay a fee for BASIC for each computer sold because “I’m already married”
  • Jack Tramiel’s experience of being an Auschwitz survivor gave him the attitude business is war
  • Jack Tramiel was obsessed with destroying his rivals such as Texas instruments and Atari

How some people managed to program the Commodore 64

  • They had lots of experience using mainframe computers before microcomputers even came out (e.g. Jim Butterfield)
  • They had  owned an older Commodore computer which was less complicated than and partly compatible with the Commodore 64 (e.g. TMR, Jim Butterfield, Jeff Minter)
  • They didn’t pay much attention to the official Commodore 64 manuals telling them that they were supposed to program in BASIC V2 PEEKing and POKEing any numbers from 0 to 255 to five digit memory locations (most C64 programmers)
  • They were autistic (not many people like to admit they’re autistic, hence the lack of names)
  • They were excellent at maths (TMR)
  • They bought one or more really informative books by Data Becker (republished by Abacus) or Compute! instead of crappy books by Sunshine or someone else
  • They bought a Commodore 64 much later than 1984 when a lot more details of how to program it and software tools as well as cheaper disk drives were available (most Commodore 64 owners)
  • They learnt to program in BASIC, then 6502 Assembly Language on a non Commodore computer, such as the Acorn Atom, BBC Micro, Acorn Electron, Apple II, or Atari (eg Paul Roper, Dave Braben)

I hope you’ve enjoyed this post, written entirely on my Android phone*, then posted using the WordPress app. That’s all for now. I hope to make another post soon.

*Although the post above was written on an Android phone, it later had some headings emboldened, as well as bulletted lists added using the WordPress editor


Posted March 19, 2016 by C64hater in Uncategorized




I’m afraid I’ll have to keep this post fairly short, thanks to the destruction of my way of life by a property developer who evicted me, Landlords who wouldn’t rent to me, and a so called friend who took me in under his roof, but then only eight days later threw me and my belongings out on the streets to die and stole my laptop! I’m typing this in another public library, but I’ve been forced into temporary accommodation outside London now and it’s not that easy to get to the nearest library.


In a recent post on TMR of the rival blog “C64 Crap Debunk” said that I had said it was impossible to programming the Commodore 64, then posted notes about another demo, which was actually created in 1988. This demo consists of some sampled Kraftwerk (note spelling, meaning factory) music, so this means it wasn’t programmed by the demo creators. Apart from this, the demo was created in 1988, which was 3-4 years after I gave up on the C64. This was partly because I was worried that was how long it would take me to learn to program it. In the meantime I expected all kinds of things may happen, such as lots of new computers coming out, existing computers becoming more popular, etc, etc. The main thing I thought was why make life more difficult on myself than I had to by using the C64 with its recycled PET BASIC, which had no commands for colour, graphics, or sound and no alternative to that BASIC which could produce stand alone programs or was well supported by magazines articles or books giving lots of listings showing how to program in it. The vast majority of C64 listings were in Commodore BASIC V2. Also, TMR had the cheek to mention the German 64’er magazine, which he previously described as irrelevant, just because it was in German and not available in Britain in 1984-1985, when I owned a C64. What a hypocrite!


What actually happened during 1985-1988 was that the Amstrad CPC joined the Spectrum and C64 as a widely supported format, the Amiga and Atari ST were released, had different models and got cheaper then more popular, Amstrad released a cheap PC clone, then other PC manufacturers followed suit, the Sinclair QL and the Enterprise flopped, and MSX was discontinued in the English speaking World where MSX2 was never released. By “the English speaking World” I mean countries where hardly any other languages are spoken, making censorship easier. There are English language versions of MSX and MSX2 games though.


Apart from the above, the Amiga and Atari ST computers used the 68000 CPU, and there were articles in the general, non format based, computer press about how amazing 68000 Assembly Language was, with lots of additional instructions that made it easier to program in than 6502 or Z80 Assembly Language, so that was yet another reason not to bother with the Commodore 64.


That’s all for now! I’ll make another post ASAP.


Posted March 11, 2016 by C64hater in Uncategorized

DRAWING THE LINE – PART 4   Leave a comment



The first screen of this program

In this post, I finally manage to reach what you might call “The Holy Grail” of actually drawing lines from one corner to the opposite corner of the C64 hires graphics screen! There has been a long interval since the previous post in this series. This is because I couldn’t work out how to do it for myself, so the program shown here has been adapted from a listing in the “Home Computer Advanced Course”, which I found in a private club library. I was amazed that it even contained some games type ins in the language Commodore LOGO. You won’t be able to find it at your local public library. Of course, you may be able to find it online somewhere. At time of writing, one or two issues were available on


I’m actually typing this in a public library, so this will probably affect the quality of my post. I have had to rewrite this post from scratch after losing my original copy and I haven’t got the Commodore 128 with me at the moment to double check on everything.


The second screen of this program


Of course, the point of this is to create graphics by programming, not just by using a graphics editor package. This is for a few different reasons…

• Almost every other computer already on sale when the C64 came out could do this easily
• To save RAM
• Not many people buying the Commodore 64 in the early days would have known it wasn’t straightforward doing this
• There were lots of books available exploring how to program graphics on the Commodore 64, indicating that there was a demand for it
• If you can understand how to do this, then it could lead you to do anything at all on computers


Unfortunately, due to the total disruption caused to my life by an evil property developer who evicted me, and me being blocked by evil landlords from finding anywhere else to live, I posted the video featuring the Commodore BASIC V2 program which draws these lines accompanying my last post, but now I’ll repost it here and I’m going to explain to you in great detail how this program works. Just before making the video, I found that about 9 times out of 10 the Commodore 128 I used for this wouldn’t display a picture on the screen when I turned it on. This led me to believe that particular C128 was on its last legs, or at least required some expert repair.

Drawing diagonal lines on the C64 using Commodore BASIC V2


Meanwhile, my opponent TMR, of the rival blog “C64 Crap Debunk” has been posting demos on other computers, even for the Atari 8 bit range in and other recent posts. Obviously, he’s totally lost the plot, because my blog is all about “Why the Commodore 64’s BASIC V2 was crap and how some people managed to program the Commodore 64”, which was updated from the original “Why the Commodore 64’s 30th Anniversary is Nothing To Celebrate”. Obviously, making posts about existing Atari 8 bit demos, as well as how to program a new version of these demos from scratch in 6502 Machine Code/Assembly Language has absolutely nothing at all to do with the Commodore 64 being crap or not. All it shows is that the Atari 8 bit computers are amazing, with a lot more than 16 colours, but not how people managed to learn programming on the Atari 8 bit computers. The way that people would have learnt to program on Atari 8 bit computers is by starting out programming in a high level language, probably the standard Atari BASIC, which was usually supplied with those computers and was considered to be the standard programming language for them. Atari BASIC was supplied on a cartridge included with the Atari 400 and 800 computers, although it was possible to buy an Atari 400 without this cartridge. Later on, Atari BASIC was built in on ROM in the Atari XL and XE ranges of computer. This is totally different from C64 owners buying an extended BASIC on cartridge, because that BASIC wasn’t the standard BASIC for the C64 and wasn’t featured in many books or magazine type ins.

I now need to give you a breakdown of how this Commodore BASIC V2 program for drawing diagonal lines actually works.



The third and final screen of this program


Lines 10-40 clears text screen, sets border to black
Lines 50-70 sets screen colour memory
Lines 80-100 puts graphics screen at location decimal 8192/$2000
Lines 110-130 clears graphics screen
Lines 140-160 turns on graphics screen
Lines 170-190 draw line specifying X and Y cartesian coordinates (i.e. a screen made up of numbered points on a grid) as start and finish points, as well as GOSUB 330 to achieve this
Lines 200-210 draw another line using same techniques as in lines 170-190, but with different coordinates
Lines 220-230 draw another line using same techniques as in lines 170-190, but with different coordinates
Line 240 changes part of the screen colour memory
Lines 250-260 draw another line using same techniques as in lines 170-190, but with different coordinates
Line 270 changes part of the screen colour memory
Lines 280-290 draw another line using same techniques as in lines 170-190, but with different coordinates
Lines 291-292 draw another line using same techniques as in lines 170-190, but with different coordinates
Line 293 change the whole of the screen colour memory
Line 300 is just a loop GOTO 300, marking the end of the main program, followed by the subroutines
Lines 310-400 plot line subroutine
Lines 410-490 plot point subroutine


The most important part of this program is how it plots points and draws lines. The draw line subroutine is dependent on the plot point subroutine, so let’s look at the plot point subroutine first. This contains some kind of description that the C64 hires graphics screen is 320×200 pixels, divided into character cells of 8×8 pixels, it can display only 16 colours, but only two of those colours can be contained in each 8×8 character cell, one as foreground and one as background colour. This is the way it was designed, regardless of any tricks done by demo makers and games designers years later. The whole thing is done by some mathematical equations, including division and multiplication. So there you go! How could people who aren’t good at maths make up equations or formulae like these? The answer is that they couldn’t, so f**k you Jack Tramiel!!!! The relevant equations are in lines 440-480 and are as follows…


440 IF X>319 OR X199 OR Y


The line above is fairly simple, checking the X and Y coordinates are actually on the C64 graphics screen, then branching to a RETURN on line 490 if they’re not. Now follows the really mind blowing, miserly crap to save paying Microsoft a fee of US$3, US$5, or perhaps even US$10 per Commodore 64 sold…

450 HB=INT(X/8):VB=INT(Y/8)

I think what the line above means is as follows, but I’m not sure. The line seems to be calculating which 8×8 pixel character cell on the C64 hires screen of 320×200 the X and Y coordinates fall into, by dividing each of them by 8. These results are then stored into the variables HB (Horizontal Byte?) and VB (Vertical Byte?). Don’t forget that in the meantime owners of Acorn, Apple, Atari, Dragon, MSX, Sinclair, Tandy, and even less popular computers such as Camputers Lynx, Colour Genie, Memotech and early Japanese computers were having a whale of a time with commands such as PLOT(X,Y), and PSET(X,Y), which could even be placed inside some FOR…NEXT loops to draw lines if no specific line drawing command was available.

460 RO=VB*320+HB*8:A=Y AND 7:B=X AND 7

The line above is somehow calculating either which row in an 8×8 character cell the pixel to be plotted lies in, or which actual line on the screen the point is in. Unfortunately, I don’t understand which one of these things it’s doing or why, because I’m useless at maths. Having calculated in the previous line 450 that VB is an integer arrived at by dividing Y by 8, why would you then want to multiply it by 320?! As for the AND commands working on the variables A and B which follow later in line 460, these are even more obscure and the meaning of the variables A and B hasn’t yet been revealed either! A lot of people out there are probably thinking now that I should shut up and be satisfied creating artwork or music which they could use in a C64 demo, then be grateful to see my name mentioned in some demos as having created the graphics or the music, but I refuse to do this!


In the line 470 above, we start to see the new variable A being used with another new variable BY, as well as RO standing for row, but it’s not yet clear what this is doing.

480 POKE BY,PEEK(BY)OR(2^(7-B))

After all the previous work setting up, it’s line 480 above, which actually plots a point! It does this by the familiar mind blowing C64 technique of using POKE and PEEK referring to the same memory location, but one of these is RAM while the other is ROM or a VIC-II graphics chip register. After this, it performs a brain burning OR calculation to somehow work out which pixel to turn on, as well as raising it to the power of two, with a bracketed 7-B to fit in with the rules of precedence, meaning which calculations will be performed in what order. You can copy it, like I did, and it works. Apart from this, I have no real idea how it works, because I’m not good at maths! My response to this is that where LT=Leonard Tramiel…


I hope this makes Leonard Tramiel’s body phase out, like “The Traveler” in Star Trek: The Next Generation Season 1 Episode “Where No One Has Gone Before”, but I hope he stays like that!

ST:TNG “Where No One Has Gone Before”

As for the line drawing routine, this is in lines 310-400. Lines 310 and 320 consist only of semicolons to space out and neaten up the Commodore BASIC V2 program a bit. Line 330 is just a REM statement pointing out that this is the line drawing subroutine. Line 340 sets the variable S to 1, using S=1. What this means in this subroutine is whether or not the start coordinate for a line is less than or greater than the end coordinate, indicating which direction it’s heading in.


350 IF X2<X1 THEN S=-1

Line 350 above checks to see if the end of line coordinate X2 is less than the start of line coodinate X1, then resets S to –1 if this condition is found, so that STEP=-1.


This increases or decreases the value of X used in drawing a line.

370 Y=(Y2-Y1)*(X-X1)/(X2-X1)+Y1

It would make sense if line 370 above said something like the value of Y varies, but can be found by calculating if Y2 is less than Y1, in which case go up the screen, otherwise go down the screen, while checking the value of X to get the horizontal position. I think this is what it means, but there’s no way I can explain how it means that, or write a similar routine, I can only copy a routine that works. This is because I’m not good at maths. If a nasty maths teacher like “Mr Wells” had said something to me in a classroom such as “Isn’t THAT it, laddie?” or “Now do you understand?”, or “I hope you’ve got it now”, then I would immediately have said “Yes”, “Oh, I SEE!”, or “Yes, I understand now”, so that I wouldn’t have had to stay in for half an hour after class staring at a page of problems. After that, I would’ve gone home and got my Dad to explain it to me, before forgetting how to do it a few weeks or months later, after this knowledge was deleted from my brain by some later maths techniques I was forced to study.


After all the complicated calculations, line 380 passes the results to the plot point subroutine at line 420.

390 NEXT X

Line 390 does it all again for the next pixel in the line.

What happens earlier on in the program before these two subroutines is more straightforward. I think we’ve already been over it all in previous installments of this series, but I’ll go over it all the same.

Line 10 is just a REM statement, while line 20 just clears the text screen with a PRINT CHR$(147) command. Line 30 just uses one of the notorious POKE commands, in this case one of the first two POKEs any C64 owner would have learnt, namely POKE 53280 to set the border colour. In this case it’s POKE 53280,0 , which turns the border black. Line 40 only contains a semicolon to neaten the program listing up.

Line 50 is just a REM statement saying “COLOUR SCREEN MEMORY AREA”, while line 60 does the job of filling the whole of colour memory with the same colour using a FOR…NEXT loop. This goes as follows…

60 FOR I=1020 TO 2023:POKE I,10:NEXT I

Line 70 is another line containing just a semicolon to break up the program a bit.

Line 80 is another REM statement, saying “SET BIT MAP POINTER”, meaning locate the hires screen at location 8192/$2000. The location seems to be the only one available to place the graphics screen at when using Commodore BASIC V2. This is done by line 90 as follows…

90 BASE=8192:POKE 53272,PEEK(53272) OR 8

Next, after another lone semicolon in line 100, it’s time to clear the bitmap of Commodore generated garbage, pointing this out with another REM statement in line 110 saying “CLEAR BIT MAP MODE”, then the real working of clearing the hires graphics screen is done as follows…


Lines 130-160 set the bit map mode, meaning turn on the graphics screen. Lines 130 and 160 only contain a single semicolon each to neaten up the listing. LIne 140 is a REM statement saying “SET BIT MAP MODE”, while line 150 does the actual work, reading as follows…

150 POKE 53265,PEEK(53265) OR 32

This sets one of the registers on the VIC-II graphics chip.

LINES 170-300 contain lots of values for the lines coordinates to draw several lines. Before a line can be drawn, the variables X1, X2, Y1, and Y2 must be assigned values, then this is always followed by a GOSUB 330. A few times during this section of the program, you’ll see lines containing commands such as FOR I=1020 TO 2023:POKE I,N:NEXT I. In these lines, N is actually a specific number, not a variable, and this changes the screen colour memory on a character cell by character cell basis, sometimes just for part of the screen, by specifying different start locations from 1020 or different end locations from 2023. I tried using this technique to change the colours of the whole of the line from the top left hand corner to the bottom left hand corner, but I found that I couldn’t get the changed colours to follow the whole line, only on a character cell by character cell basis. I assume that to get the effect I wanted, I would’ve had to adapt the mathematical equations listed above. As I don’t understand how they work, because I’m no good at maths, this means I can’t do that. There are 256 colour combinations, due to having 16 foreground colours and 16 background colours, and 16×16=256, although some of these would appear to be invisible. I’m not sure how many of the combinations would be invisible, because I’m useless at maths, but I’ll make a guess that it would be 16.

More bad news! I packed as much stuff into suitcases and a rucksack as possible before the Bailiffs turned up to evict me. My plan, agreed with the evil property developer, was to return within the next week to pick up as much of the other stuff as possible. Unfortunately, when I turned up to collect some more stuff, I found that builders working there had piled all my stuff into one room and buried it under furniture, rubbish, etc. This meant I could hardly see any individual items to grab and remove from the flat. Due to this, I lost my Commodore 128, all 3 Atari 8 bit computers, 3 electric guitars, a music keyboard, all commercial DVDs, all printed books, etc, etc. It was a total disaster! I don’t know if or when I’ll have another rented home of my own, or be able to buy another Commodore 128 to carry on producing examples of how to program a Commodore 64. I don’t want to buy an actual Commodore 64 and programming on an emulator just doesn’t feel right.

That’s all for now! In the near future I plan to do another post in the series “Oh That Would Be VERY Difficult!”

Posted February 9, 2016 by C64hater in Uncategorized

I’M STILL ALIVE!   Leave a comment


I’m posting this to let all readers of this blog know that I’m still alive! In this case,  thought I should accompany my post with a video of the same title, featuring the amazing Amiga (“Super Atari”) computer, which wasn’t designed by Jack Tramiel or Commodore, but Commodore bought the rights to the Amiga after Jack Tramiel left Commodore.

What happened to me as a result of my eviction was quite disastrous and although I’m still alive my whole way of life has been suspended.

I had taken some pics of a listing for the “Drawing The Line” series and was going to upload them, but unfortunately, I never got round to that, due to the pressures of trying to get all my belongings into safe storage or take some of them away. I posted a video to accompany the planned post on YouTube, which some of you may have noticed, but I didn’t want to make a post and link to that video on here, before I’d written an explanation of which part of the Commodore BASIC V2 program did what and how it worked. At the moment, all I can do is post a link to that video here, then you can have all the fun of trying to work out what’s going on. I hope to make a detailed post about it on this blog in the near future, but I am officially homeless and haven’t got access to lots of basic facilities. I’m typing this in a public library at the moment and have been forced to use Microsoft Internet Explorer to do it!

Meanwhile, here’s that video about drawing lines on the C64, which is one of the most basic things. Spectrum, BBC Micro/Acorn Electron, Atari 8 bit, Oric, Dragon/Tandy, and MSX users could have been doing stuff like this on the same day as they got their computers!

Drawing a few diagonal lines and changing background colour on the C64

That’s all for now! Another post will follow ASAP, but don’t hold your breath.




Posted February 1, 2016 by C64hater in Uncategorized

WHERE TO NEXT?!   Leave a comment



Map of the county of Greater London

I’m just posting this to let everyone know about the future or even the end of this blog.

I’m currently finishing up another post in the series “Drawing The Line”, which is in Commodore BASIC V2 and includes what seems to be a bug with the technique used. After this, I hope to make another post about how to draw a line on the C64 in 6502 Assembly Language/Machine Code, but it’s from a book which included a listing for its own Assembler. I couldn’t find a copy of this Assembler to download, so I spent a lot of time typing it in, then debugging it, because there were no checksums, but unfortunately I still haven’t managed to get it working. Due to this, I’ve been looking at how to get the code to run on another Assembler, but I haven’t succeeded yet. I could also make a few changes in the program accompanying the series “Oh, That Would Be Very Difficult!”, so that the path of the sprite is different, the missile actually hits the sprite, and the advanced MSX BASIC sprite collision detection and interrupt commands are used, but that requires more work than the “Drawing The Line” posts. I may be too late now, for the following reasons.

It seems my search for a new home has now run out of time. I’m less than a week away from eviction and haven’t got any appointments to view anywhere. This means that I could attempt suicide when I’ve got three days left to the eviction, so that if I fail I can have another chance to get it right, or I could agree to become homeless, then face being ground down into the shit, which is the fate that property developers and landlords have prepared for me. It may be that if I agree to abandon London, so they can transform it into whatever they like, then they’ll let me have a new home. This may include depriving me of my votes in the upcoming London Mayoral and Greater London Assembly (GLA) elections in May 2016, which I hope will result in more powers for the GLA, better housing, and even the reform of London’s postal addresses, so that everywhere in London will be called London, instead of the counties where parts of it used to be.

I was just thinking what David Bowie (RIP) would have done if he’d started out in recent years. He might have been told to “stop dreaming”, adopt a “smart appearance” and get a “proper job”. Bowie started his life living in Brixton, in central south London, but at age 6, he moved with his parents out to Bromley, which was then officially outside London, although it became part of London in 1965 when David Bowie was 18. This isn’t recognised in postal addresses even now. He later lived at a few addresses in central London, before moving out to Beckenham near Bromley aged 22, although he was only lodging for 6-7 months, instead of having a self contained flat, but then moved into a nearby flat also in Beckenham and lived there for 3 years 7 months, before spending about 11 months at 2 central London addresses. After this, he lived at lots of addresses round the World. You can read the full list of addresses on

As for me, I started out in London Borough of Bexley, just north of where Bowie lived, but my family never moved because my Dad turned the house into a slum with unfinished DIY jobs and he was a hoarder. While there, I started playing electric guitar and bass, and I owned a Commodore 64. After my Dad died, my music and a lead from a singer whose classified ad I answered led me to a flat somewhere in northeast London and on the tube network, then to some other flats in central London, so I don’t think my situation has been caused by wanting to live in central London instead of the suburbs.

That’s all for now!

Posted January 13, 2016 by C64hater in Uncategorized