Guess who’s back, back again

Debunking Where have I been?

Theresa May kept me busy part of the time

That, dear reader, is something that should probably be kept between the author and Theresa May.

This blog isn’t actually about current events, although I do sometimes mention them to make my posts more interesting.

The author has presumably failed to process the sarcasm in your correspondent’s post; anything outside of the author’s stated topic is irrelevant because, as he notes, his “blog isn’t actually about current events”. It was very helpful of him to debunk his own post once more.

  1. I’ve been going to meetings, demos, and a march to try and stop Brexit.

That certainly seemed to go well dear reader, doesn’t it? [1] Let us skip gently over the remaining political discussion and get back to what the author is meant to be discussing but here’s a picture of Spitting Image by Domark because it’s tangentally about politics and actually related to the C64!

Spitting Image (C64)

Now back to the Commodore 64. Of course, not all dialects of BASIC apart from Commodore BASIC V2 supported hexadecimal numbers, but Locomotive BASIC on the Amstrad CPC range, as well as MSX BASIC did support them. Even Sinclair BASIC on the Sinclair ZX Spectrum supported binary numbers, but Commodore BASIC V2 and Atari BASIC only supported decimal.

So to recap dear reader, only the minority of BASIC dialects supported hexadecimal but the author only seems to perceive it as an “issue” worth noting with the C64; this is, obviously, hypocritical of him.

And this is hexadecimal we’re talking about as well,  the author has moaned at length about being “useless at maths” but rather magically that doesn’t extend to counting and carrying out calculations in base 16 it seems! Adding, subtracting or multiplying numbers (which is why the author whine that he “understand which one of these things it’s doing or why, because [he is] useless at maths” for what is essentially a simple equation if you pay enough attention to what it’s doing and actually try to understand) doesn’t get any easier just because the calculations take place in hex.

I remember reading lots of Commodore BASIC V2 listings which assigned variables to the locations of the VIC-II and SID chips, then used two digit offsets for the different registers. In spite of this, the impression I got was that there were a lot more memory locations I needed to learn than all the registers of these chips.

Which is a mistake on the author’s part because that isn’t the case. We’ve noted on countless occasions that he fails to do research and this is merely another example; he had no information whatsoever to back the assumptionthat there were more than merely a handful of locations to worry about but made the false assumption and gave up without looking further.

That assignment of variables with two digit offsets simplifies one of the author’s long-term bugbears, that he couldn’t remember five digit numbers – apparently he was aware of this in the 1980s but for some reason chose and continues to choose to ignore his own knowledge whilst complaining about it now, demonstrably trying to mislead his readers by doing so. And since the offsets are two digit numbers there can only be a hundred possible values, the author must have spectacularly failed to notice this when falsely getting the impression ” that there were a lot more memory locations [he] needed to learn”.

 There was also the weird command sequences working on these registers using the commands AND as well as OR, without any explanation from Commodore about why this was. It was explained in a magazine article I found a few years ago as “bitwise programming”, meaning setting certain bits in the VIC-II and SID chip registers.

It’s worth pausing to note dear readers that some BASIC dialects don’t have bitwise commands despite there being situations where they would have been incredibly useful such as reading the joystick on the Atari 8-bit for example, there’s a bespoke BASIC command but it returns a value where bits are set or clear depending on the state of the joystick so having the ability to AND by individual bits significantly reduces the number of condition tests required. And that’s before we remember that Atari BASIC uses POKE commands like the C64 to handle things such as the hardware sprites where bitwise commands would have been useful to deal with expansion registers, playfield priorities, collisions and so forth.

Of course this lack of functionality is overlooked by the author, either because he doesn’t want to poke holes in BASICs that he’s championing over the C64 or due to ignorance.

Assembly Language makes things much easier, with techniques such as meaningful labels in a pre prepared text file standing for memory locations, as well as those locations in hexadecimal being more memorable, such as $D000 which I posted some time ago could stand for display block, meaning where the VIC-II chip starts.

The author has yet to write any substantially sized program for a 6502-based computer so this is supposition rather than fact. Very few native assemblers have an equivalent of “pre prepared text file standing for memory locations” with some assembling directly to RAM rather than via disk. And the vast majority of assemblers both native and cross don’t require hexadecimal at all so C64 programmers who started with BASIC could carry the knowledge of decimal locations or indeed the concept of two digit offsets from a variable over to their assembler. Setting a label like v or perhaps vic to 53248 works in exactly the same manner as assigning it as $d000 for example.

And again dear reader, we’re talking about base 16 here which most people don’t count in naturally so decimal numbers would be easier to deal with at least for beginners.  There is a reasoanble argument for understanding binary since it helps when manipulating video registers on pretty much every platform we’ve discussed rather than just the C64, but only old hands like your correspondent who learnt assembly language via hand assembling and working in a machine code monitor needed to learn hexadecimal.

As for books about Machine Code/Assembly Language which aren’t dedicated to a particular computer, before you can actually do anything with them on a specific computer, first off all you have to read up on your memory map to find the screen memory, a routine to print text on the screen, etc.

And that is where a reference book comes in… like the Commodore 64 Programmer’s Reference Guide for example! This is, after all, what your correspondent has been saying for quite a while.

I’m now getting close to understanding the process of how other people managed to program the C64. In the near future, I hope to use Assembly Language to program lots of lines being drawn across the screen, then erased and replaced by some other lines, to produce simple animation, as well as to program a three channel polyphonic tune, without being dependent on specific software

The author really isn’t “understanding the process of how other people managed to program the C64” dear reader, there isn’t an actual process because different people have different motivations – not everybody has a childlike fixation with drawing lines for no practical purpose like the author does! Your correspondent learnt by setting himself achievable tasks related to the kind of games or demos he wanted to create and working out how to complete them, all that requires in the long term is a little persistence.

Other ideas of mine include a printed book based on this blog, as well as a graphic novel including my Dad with his “I know best” attitude (IKBA), the offices of “The A-Z of Personal Computers” with staff enjoying presents sent by Commodore in exchange for not mentioning that their BASIC was crap, etc. I may be setting up a crowd funder for these projects. There could even be separate crowd funders. One could be for people who want to see the book or graphic novel published, while the other could be for people who don’t want to see them published, such as the Tramiel family. Revenge is sweet!

Whilst publishing his libellous opinions and blatant lies under a pseudonym on his blog offers some degree of protection, it will be very interesting indeed to see how a print-based endeavour fares on that front since they tend to require real names and often contact details. How any of this equates to “revenge” is highly questionable, the Tramiel family will have legal options open to them to consider well before they think about essentially paying anybody off, assuming the author’s belief that anybody really cares about his writings is more than mere narcissism of course.[2]

And whilst nobody really fact checks the content of low traffic WordPress bash blogs (apart from people like your correspondent who do have better things to do with their lives but are often lacking when it comes to the mental fortitude to prioritise such matters) there’s a lot more scrutiny for published works, especially if they’re crowdfunded. The author is potentially going to draw far more attention to his lack of research, false assumptions and downright lies so how something like, for example, a negative review on Amazon will be dealth with should prove interesting; trying to tell a commenter on your blog that they’re wrong because you say so usually doesn’t go down well on its own, but if the feedback is from a paying customer it’s bad public relations.

Another thing your correspondent feels should receive emphasis is the author complaining about his father; since the entire premise of his blog and presumably the graphic novel would be the author knows best, the idea of berating other people for having pretty much the exact same attitude is just another demonstration of hypocrisy.

Not only that, but some more good news from the German “MagPi” is that the Raspberry Pi computer looks set to outsell the C64 in the near future, so then I’ll no longer have to listen to C64 fanatics crowing that their crappy computer was the largest selling “home computer” or whatever the term is.

No dear reader, the C64’s record is for the “highest-selling single computer model of all time” (the important words highlighted for the author’s benefit since he didn’t bother checking for himself) which means that every unit sold was to the same specification. Even if they’d matched the C64’s worldwide sales figures, 8-bit systems like the Sinclair Spectrum or Atari 8-bit line couldn’t hold that record because there’s a raft of different models; the Spectrum came in 16K, 48K and 128K flavours and the Atari 8-bit had even more models available with the original 400 and 800, the XL series, the XE machines and, because it has an optional keyboard, the XEGS.

The Raspberry Pi is in the same way a range of computers with different specifications rather than just one so the sales as a whole therefore don’t count towards the C64’s record because they’re not for a “single computer model”. Again, the author fails to do any actual research before posting and subsequently tries to mislead his readers…

[1] For the author’s benefit, since he struggles to recognise it, this is sarcasm.

[2] Anybody who keeps a blog is a narcissist to some degree, your correspondent included of course, but it’s one thing to believe that anybody would be interested in reading your thoughts and another to labour under the misunderstanding that a lot of people would pay for the same, especially when you’ve had a large amount of your “arguments” thoroughly debunked.

Posted in Debunking | Tagged , , , , , , | 1 Comment

Release Notes – WannaClone (Atari 8-bit)

Goodness dear reader, it’s been a very long time since the last C64CD demo release… hang on, haven’t we done this one before?! Well yes and no, because the Atari Age forum thread which inspired WannaClone for the C64 is the gift that keeps on giving, so now there’s an Atari 8-bit port as well! The music is brand new and supplied by Miker, conversion of the C64 version’s graphics was handled by José Pereira and your correspondent and a joke about the malware turning the user’s POKEY into a SID chip if they didn’t pay up was “borrowed” from Zapac in the forum thread.

WannaClone (Atari 8-bit)It’s worth noting that the Atari 8-bit’s processor is doing quite a lot of work during the picture, relying on a couple of cycle-accurate loops that change several colour registers per scanline, one of which is written to twice during each pass. This is more advanced programming would usually employ for a C64CD release, but your correspondent feels that the overall effect is worth it. The part of the code handling the decoding of text is identical to the C64 although the “magic number” used in the process has been changed from %6A to $A8 since the latter seemed appropriate.

Sadly 2600problems – the forum poster who inspired both the C64 version and this one by asking people to elaborate on encryption within the previously mentioned discussion thread – hasn’t acknowledged the existence of the C64 demo and probably won’t pay any attention to this Atari 8-bit conversion either.

Posted in Programming | Tagged , , , , , , , , , , , , , | Leave a comment

Learning by the book – part 3

Debunking The Machine Language Book Of The Commodore 64 – part 3

So the author’s last post was in February and your correspondent was beginning to wonder what had happened to him… article 50 has been triggered, we’ve had a general election and your correspondent has got married in that time and, whilst that third event won’t have made the author’s radar, the lack of coverage for the other two comes as a surprise. It’s presumably a strange coincidence that the author reappears just a few days after your correspondent posts something.

We’re now really getting down to understanding how the Commodore 64 works and how some people managed to program it, in spite of its totally crappy built in Commodore BASIC V2 language, which had no dedicated commands for colour, graphics, or sound, and didn’t support the Hexadecimal numbering system either

The author has forgotten once again that other BASIC dialects didn’t support hexadecimal numbers as well; this isn’t something specific to berate the C64 over since many other dialects including some the author has “championed” also omit this feature.

as well as Commodore’s crappy manuals totally leading people off track by telling them to PEEK and POKE to 5 digit decimal memory locations, instead of having the locations stored in files as hex labelled by EQU directives.

That’ll be the same C64 manual that actually assigns the variable V as 53248 and then POKEs to two digit offsets from that point[1] for its sample programs dear reader; the author is either ignorant of what the C64 manual actually says (which is fairly hard to believe since it’s been debunked previously in a post the author has replied to) or deliberately misleading his readers at this point.

And let’s just pause to reiterate dear reader, the same process of POKEing five digit numbers is required to handle hardware sprites on the Atari 8-bit but that machine’s manual doesn’t tell people to use hexadecimal (because that BASIC dialect doesn’t support it either) and in fact doesn’t actually cover the subject at all!

This year (2017) marks the 35th anniversary of the C64 being released. It also marks the 35th anniversary of me and my Mum running away from the home my Dad had turned into a slum with lots of unfinished DIY jobs and hoarding. Neither of these events is anything to celebrate, especially as my Mum and me ended up having to return to that slum after only about six months.

Only one of these events is really relevant to the stated topic of the author’s blog dear reader. Your correspondent also doesn’t want to comment on the author’s personal situation because the opportunities for cheap jokes are incredibly strong.

The book is about Assembly Language, but not on any specific computer. The Introduction/Preface mentions Commodore, Apple, and Atari computers as being 6502 based and that it applies to all those computers as well as to any other 6502 based computer, so it wouldn’t enable you to write any C64 demos.

Of course it won’t dear reader, a general purpose 6502 assembly language book won’t specifically teach a would-be programmer how to write demos, games or utilities on any of the platforms with a 6502, but saying that rather than targeting the C64 specifically a above would of course go against the author’s childish, bile-laden narrative! A book like the one described sets out to teach the base language before handing off to other works for the platform-specific information.

But it’s worth noting that, once a programmer understands the language, it isn’t particularly hard to pick up the first steps of demo programming such as moving sprites or scrolling messages and, since demos usually aren’t interactive and small ones don’t need to deal with things like I/O, demos are actually easier to program than games or utilities and just as useful as example code.

This book has a chapter called “Extending BASIC”, but actually there are no extended BASIC commands in the book. All it shows you is how to pass parameters to a SYS command.

Just because it lacks the extra programming required to add more commands to the BASIC interpreter that doesn’t mean it somehow stops being an extension dear reader; your correspondent is vaguely aware of quite a few similar examples for other 8-bits which work in a similar way whilst still being classified thus.

Finally, here’s some artwork I did in the C64 lores screen mode. No programming was required at all, I just used some software called Multipaint, which runs on Linux, Windows, and Mac OSX. I didn’t spend all that long working on it. It gives you a rough impression of the slum I grew up in, which was in stark contrast to the semi detached house next door.

The lack of detail and some rather jarring changes in perspective between the house itself and the vehicles parked around it all stand out with this particular piece; granted the author is remembering a childhood memory, but there wasn’t any requirement to draw the picture in the style of a key stage 1 student.

It is telling, however, that this picture is still the most involved graphical work that the author has produced since his blog went live nearly five years ago and significantly more substantial than anything he’s produced with any dialect of BASIC since that time as well?

I found I couldn’t convert the original graphics file from .bin or .ocp (Advanced Art Studio) to GIF, JPG, or even BMP, so in the end I had to take a pic of it with my Android phone.

It is apparently beyond the author’s wit to grab a screenshot with his PC, crop out the surrounding desktop and merely upload that to his blog…

[1] It doesn’t do the same for SID registers however; these are given as specific five digit values but, as has been noted by commenters on the Author’s posts, there aren’t that many values to actually remember.

Posted in Debunking | Tagged , , , , ,