My book of choice this week is not a book in the conventional sense of most. The MOS MCS6500 Family Programming Manual (PDF) is tome of processor architecture, instruction behavior, and programming at one of the lowest levels to which you can still apply the term ‘software’. The book makes a number of assumptions about the reader, namely that he or she is a comfortable and competent in the realm of assembly language and understanding CPU behavior at an electrical, hardware level.
The manual continues to draw a line between the readers who meet that prerequisite.
“Eric, What the Hell Man?”
I realize this is a strange choice for a Book of the Week. A blunt, dry technical manual—which is precisely this text—does not make for entertaining reading even for most programmers (in my experience). But allow me to open up personally with a little secret:
I love this kind of stuff.
Years ago I remember a comment by Bill Clinton, who at the time was President of the United States. Someone in the press asked him why he tasked his Vice President, Al Gore, with reading through a collection of tax reform proposals that amounted to well over 1,500 pages in length. Clinton’s responded by saying because he knew Gore was the only person that would actually read through it from cover-to-cover.
I have the same borderline-masochistic pleasure with technical manuals. I will read the driest standards and manuals fully engrossed in the content. I’m well aware of why such books bore other programmers, and I do not fault or criticize them in any way for not being interested in reading a near two-hundred page book on the MOS 6500 microcomputers family. But there are some ‘weirdos’ out there who eat this stuff up, and I am one of them.
All that said, I must admit I have little comment to make on the manual itself. For a technical manual it is well-written, by which I mean straight-forward and lacking any redundancy. The content is comprehensive and efficiently laid out so that reading from cover to cover leaves you with a firm understanding of the microprocessors. The diagrams along the way do a great job of explaining the relationship between processor instructions and the physical behavior of hardware, the kind of thing a programmer needs to understand when operating at such low levels.
This MOS family, particular the MOS 6502—which I love unabashedly—fuels a lot of important hardware. Or at least in my opinion. As a game developer I also like to think of myself as a student of game history, and the 6502 plays am important role in that history. It powered the Atari 2600, the Nintendo Entertainment System, the Apple IIe, the Amiga, and more. If you were a game developer of that era then you knew the 6502. You had to know it. The Terminator ran on a 6502 for God’s sake.
To sum it up: If you want to understand the 6500 family then this book is a terrific reference. But I stress it is a reference. Many readers will want some additional information, so here is a list of useful resources and tools, particularly for the 6502:
- 6502 Assembly Optimisations
- 6502 Instruction Reference
- 6502 Introduction
- David A. Wheeler’s 6502 Language Implementation Approaches
- Easy 6502
- MOS 6502 Opcodes and Instructions
- Tricks and Tips for the 64/6502 Programmer
- cc65 – A Freeware C Compiler for 6502 Based Systems
- xa (xa65): A Portable 6502 Cross Assembler
- xasm 6502 Cross-Assembler for Atari 8-bit Computers
Next Book of the Week
My next book will be “Beginning Game Audio Programming” by Mason McCuskey. Audio programming is not a topic I am terribly familiar with and so I look forward to a great and relevant learning experience for my own current game development.