Category Archives: Programming

Try and try and…

Wherein, I outline my intention to present completely biased and unfair reviews of a few books designed to teach readers how to program in 6502 machine language, and perhaps learn a thing or two along the way.

I’ve complained at length in the past (don’t go looking for the posts here – I never bothered to restore any blog entries after that extended period of downtime) about the tendency of most 6502 assembly tutorial authors to simply throw the reader face-first at the brick wall of learning binary maths, usually within the first five to ten pages.

These “introductions” usually kick off with dire warnings in bold font of failure, destruction, and the promise of the fiery overturning of buses full of nuns and kittens, if the lessons are skipped without fully understanding them.  Following these proclamations of imminent doom, the reader is presented a paragraph or two of brief explanation and a couple of exercises one can use to show off their new-found prowess to friends.

But what if you didn’t understand something?  What if the answers you come up with to the exercises don’t match what’s in the book?  You could try to read the lesson again, but without a corrective guide, you’re probably going to end up at the same conclusions.

You could plunge ahead, but… Well, you *do* remember those warnings, don’t you?

And so over the years, I’ve accumulated a pile of books, all of which have fifteen to twenty pages of well-worn material, and are retail-shelf new that point.  As I look through them again, one thing is clear above all else: the information is presented in a nearly-identical and uniform manner: learn this binary math stuff before you proceed.  There’s a reason for this, and it’s a simple one: it works.  Or it works well enough to get budding assembly language programmers on their way to greater coding fame.  Countless Apple II programmers have followed these well-trodden paths before me and have emerged at the other end, wiser, smarter and with optimized code flowing forth from them like a river.

The inevitable conclusion is the problem must be with me.  This is a challenge I’ve been unable to overcome.  I haven’t been able to make the connection between the lesson and the problems.  The data seems to make perfect sense as I read through it, but my answers to the exercises are invariably wrong and I can’t tell you how I got there, or where the error was made.  Whether it’s that I’m not processing the lessons logically, or that this is a thing I’m simply not smart enough to learn, one of the flyrods is going out of skew on the treadle between the page and how my brain processes what I’m seeing.

One solution then is to try again, this time taking care to analyze the lessons and try to divine how I absorb what I think is being taught, and see if a single point of failure emerges.

These are the books I’ve got on my shelf and I’ll be trying each one, documenting as I go.  And who knows?  Maybe I’ll get lucky and it will just click on one day like a light-switch…  Nah, nothing is ever that easy.

  • Apple Machine Language for Beginners, Mansfield
  • Assembly Lines: The Book, Wagner
  • Programming the 6502, Zacks
  • Apple Machine Language, Inman & Inman
  • How to Program the Apple II Using 6502 Assembly Language, Hyde
  • 6502 Assembly Language Programming, Fernandez, Tabler & Ashley
  • The Visible Computer: 6502

And a few other online resources and guides, such as Nick Morgan’s Easy6502 guide. I’m going to have a go at Wagner’s book tonight, since someone recommended it in the comments of the my previous post about this topic.  I expect I’ll have more to say tomorrow.