1983's wonderful "Introduction to Machine Code for Beginners"

Usborne's 1983 classic Introduction to Machine Code for Beginners is an astounding book, written, designed and illustrated by Naomi Reed, Graham Round and Lynne Norman. It uses beautiful infographics and clear writing to provide an introduction to 6502 and Z80 assembler, and it's no wonder that used copies go for as much as $600. I was reminded of it this morning when @amanicdroid tweeted me with a link to a PDF of the book's interior. I'd love to see this book updated for modern computers and reprinted.


    1. just as Kim answered I’m dazzled that someone can earn $8934 in 4 weeks on the network.

  1. Usborne’s 1983 classic Introduction to Machine Code for Beginners
    is an astounding book, written, designed and illustrated by Naomi Reed,
    Graham Round and Lynne Norman. It uses beautiful infographics and clear
    writing to provide an introduction to 6502 and Z80 assembler, and it’s
    no wonder that used copies go for as much as $600. I was reminded of it
    this morning when @amanicdroid tweeted me with a link to a PDF of the book’s interior. I’d love to see this book updated for modern computers and reprinted.


    Spybubble gratuit

  2. I never saw that book – which is a pity, and a bit suprising, as I was learning to program 6502 machine code in my school’s computer lab at around that time. I relied on Rodney Zaks’ Programming the 6502 instead, which still seems to be doing the rounds as a good into to the subject (although the Usborne book looks a lot more accessible). Ah, I’m now having fond memories of hand-compling code to manually enter as hex into a Commodore PET; the BBC Micro’s in-line assembler made life so much easier…

    Also, You Know When You’ve Been Programming Assembler Too Long – when you watch The Terminator and spot that the T800 is running a 6502!.

    1. T800 is not only running 6502, but he’s assembling code on the fly. As geeky teenagers we surmised that he was reprogramming the microcontroller on some sub part of himself — e.g. telling his arm controller to move a certain way — as he went along.

      Although yeah, we knew in reality the movie people were simply dumping static lists of assembly code because it looked super techie and futuristic.

  3. That book, and another about computer architecture more generally with very similar illustrations were in my elementary school library. Loved the plain language descriptions of how computers did what they did. This book, having an Apple IIc at home, and having an Apple II lab at school are pretty much the reasons I’m in my career (programming, IT) today. 

    There’s also this text, more technical but try to find a programmer nerd child of the 80s who never flipped through it:

    1.  Look at that sexy airbrushed cover! Just look at it! Probably explains why I moved from programming to illustration at an early age.

  4. I *loved* that series; they had a wholeblock of books on programming games in BASIC for the various popular home computers of the time (Apple 2e, VIC-20, C64, etc).  They taught me all the basic principles of code structure.  <3

  5. Another Usborne fan here.  They were the Dorling Kindersley of their day – intelligent and visual without being patronising, and although they are still around today, I think they have lost their way a bit.  (And yes, I had this one, and several others from the series.  I wonder if they are still in my parents’ attic…?)

  6. “As with addresses, the computer always deals with the low order byte before the high order byte and you have to store them in that order in the memory” – and that’s how kids get indoctrinated to become little-endian bigots.

    Also, anyone else cringed at the cubby hole picture where the 2-byte integer isn’t word-aligned? Although I suppose alignment doesn’t matter on the Z80…

        1. The 65816 isn’t a pure 16-bit cpu; it’s a beefed-up 6502 with 16-bit extensions, ending up as a 8/16 hybrid like the z80. The data bus is still 8-bit, forcing the alignment to the same size.

      1. Word alignment is not an issue for any 80×86 that I can think of.  The original 68000, on the other hand, required word alignment.

    1. No, but I cringed when I read the bit about the high order byte always coming after the low order byte. I cut my eyeteeth on a 6800, which was big-endian. Good thing I didn’t read this book as a kid!

  7. I’m so annoyed that I can’t find where my copy of this gem has gone.  I’d forgotten that 9-year-old me didn’t see a problem with alternating machine-code flood-fill algorithms and gluing seashells on boxes.

    (Adult me doesn’t see a problem either.)

    I also loved their classic “Write Your Own Adventure Programmes”, which arguably had more influence on me as a developer – since it taught game design and data management skills.  And had a dragon on the cover.

    (Must go back to Inform now…)

    1.  Oooo! Oooo! I had that one too! Clearly I’ma have to go over & ratch thru all me mam’s bookshelves & find these two…

  8. What would an updated version of this book teach? ARM assembly for the Raspberry Pi (running under layers of Linux or RiscOS)? x86 assembly and how to do things with it on Windows or Linux? Perhaps ATMEL microcontroller assembly, which could work well with Arduino-based DIY projects. Or perhaps stick to 6502/Z80, with a foreword about emulators (or a link to a JavaScript-based one you can use without any hassle) and the amount of fun you’ll have getting an Atari 2600 doing something complicated.

    1. Microcontrollers are the best reason to learn about this stuff, because it’s both useful and necessary when working in a tiny 8 bit machine. The Z80 is dead, for all practical purposes.

      1. One use-case does support the learning of Z80 or 6502: being able to make limited 1980s computers do things beyond what is commonly held possible as a technical challenge. Though, other than as challenges, there are few cases for programming in assembly language unless you’re a kernel hacker or compiler developer. Even much embedded hardware (such as the ATMega328) is usually programmed in C or some Processing variant these days, and is often one LLVM back-end away from one being able to use almost any language at all. 

        Is it still the case that handcrafted 6502/Z80 assembly is going to be better than the state of the art in optimising compiler output would be, though?

  9. I agree that ‘assembly language’ is more formally correct, but I heard both uses back in the 1980s, with ‘assembler’ being used for both the language and the program used to translate it into machine code.

    Google shows 700,000 hits for ‘written in assembler’ and 1,400,000 hits for ‘written in assembly language’, so the former is less common but has a fair bit of currency.

    Once we’ve finished arguing over this we can move on to big-endian vs little-endian…

    1. Millions of native English speakers can’t correctly pronounce the word ‘nuclear’, either, but that doesn’t make it correct, or sound any less stupid. Just because a language is ‘living’ is no reason to murder it.

      1. I’ve heard both used by professional programmers back to the ’80’s at least.  Wikipedia says that both are used (“Assembly language or assembler language is commonly called assembly, assembler, ASM, or symbolic machine code.”), and cites no less than Stroustrup as using “assembler” in the C++ book.  When I taught myself (TMS-9900) the book I learned from used “assembly” but I was corrected in college by an old-school instructor who insisted on “assembler” and have used it ever since.


  10. Crikey, that’s a flashback! I had it – got it after exhausting the fun I could have with Spectrum Basic, no less.  It has the merit of being the first (but by no means the last) technical programming book to baffle the ever-loving fun out of me.

  11. That book was a staple of the book checkout list from the library every time we went. There’s another one I always checked out, I believe it was how a radio works by the same publisher. I never built the radio, but I would pour over that book. I did write a number of programs in assembly on my Color Computer 1 (6809 cpu)

  12. I seem to recall that I only had the Usborne Guide to Computer and Video Games , scans of which made the rounds not so long ago due to their apparent prescience:

    Not a particularly educational book, unfortunately.  It always annoyed me that often the type-in programs were given in a dialect of BASIC that was not quite compatible with whatever I had on hand.  And then there were the other ones that used an obnoxious font in which zeros, O’s, I’s, and ones could not be readily distinguished.

  13. The book I’d like to see reprinted is Ted Nelson’s Computer Lib/Dream Machines; even the inferior 1987 Microsoft Press version is going for an exorbitant price, and I’d read somewhere that Nelson doesn’t want to release a PDF of it. 

    1. My first exposure to microprocessors and the fist of freedom. Discovered it in Thorne’s University Bookshop in Newcastle upon Tyne back in the early 70s. Fabulous.

  14. I remember this book – I read it from cover to cover several times and thought I was so l33t that I could now write machine code (which was thought to put you amongst the Gods compared to coding in BASIC). The ‘screen flash’ program running on my trusty VIC20, my first computer, just blew me away.

    What impressed me the most about it was how it was targetted at exactly the right level – not too abstrusely technical but not noddy or patronising either.

  15. Ha! I had that book as a child! I spent a long time trying to write full-colour smooth scrolling sprite routines on my BBC micro. The video memory layout wasn’t very helpful.

  16. I learned assembly language in the US from “Mastering Machine Code on Your ZX81”, for the Timex Sinclair ZX81. The reason I say I was in the US is that the book had a program for “Draughts”, and I had no idea what that was or why it looked so much like Checkers.

  17. I’m nearly crying looking at that book.

    My first computer was a Sinclair ZX81, with a 16K RAM expansion (as opposed to 1K. Suck that, all my twelve year old friends!) Anyway, the instruction book gave a pretty good introduction to the ZX81’s BASIC and there was also a bit of a summary of how assembly worked. 

    I figured out the BASIC in a weekend—in fact, I got the manual on a Friday and didn’t get the computer until Monday. I wrote a couple of programmes on a sheet of paper, but I can’t remember if they actually worked when I got the machine!

    Anyway, I was intrigued by the assembly chapter. I had all sorts of fun using PEEK and POKE to make the machine do odd things, but that was just trial and error. I just couldn’t find anything to get my toe in the door with assembly. My school library had plenty to teach me about BASIC (especially the Acorn variant. I’ve never even seen a Acorn, but I could probably still programme one!) but nothing about assembly. 

    Eventually the computer died, I couldn’t get access to another one, and I ended up putting my effort into learning the trumpet instead. It was no big deal. Like any twelve year old geek my attention was continually jumping from one hobby to another. Still…

    I had a lot of books from Usborne, and I must have borrowed dozens of them from the library. I wonder what would have happened if this book was around. I’d probably be earning twice as much, but our community band would be sorely lacking in the brass section.

  18. Add to that this book:
    Understanding Digital Computers : A Self-learning Programmed Text That Will Teach You the Basics for the Microcomputer Revolution (Catalog No., 62-2027)
    Forrest M. Mims III (Author), Radio Shack

    Also an excellent introduction.

  19. I love it! I started machine code with “Programming the 6502” by Rodnay Zaks and kind of worked it out from there… then the IBM PC happened and you could get the entire BIOS as an assembly language dump (http://www.rebelshavenforum.com/sis-bin/ultimatebb.cgi?ubb=get_topic;f=52;t=000137) – this was fantastic! Before that, you had to take whatever machine it was and start writing stuff into areas of memory and watching what happened — have I hit the screen buffer yet, and so on…

Comments are closed.