This book is intended to serve as a source and a reference for the assembly language programmer. It contains an overview of assembly language programming for a particular microprocessor and a collection of useful routines. In writing the routines, we have used a standard format, documentation package, and parameter passing techniques. We have followed the rules of the original manufacturer's assembler and have described the purpose, procedure, parameters, results, execution time, and memory usage of each routine.
This overview of assembly language programming provides a summary for those who do not have the time or need for a complete textbook such as is provided already in the Assembly Language Programming series. Chapter 1 contains an introduction to assembly language programming for the particular processor and a brief summary of the major features that differentiate this processor from other microprocessors and minicomputers. Chapter 2 describes how to implement instructions and addressing modes that are not explicitly available. Chapter 3 discusses common errors that the programmer is likely to encounter.
The collection of routines emphasizes common tasks that occur in many applications such as code conversion, array manipulation, arithmetic, bit manipulation, shifting functions, string manipulation, summation, sorting, and searching. We have also provided examples of I/O routines, interrupt service routines, and initialization routines for common family chips such as parallel interfaces, serial interfaces, and timers. You should be able to use these routines as subroutines in actual applications and as guidelines for more complex programs.
Huh... there's mostly positive reviews for this book here on goodreads. But boy, I'm glad I didn't try to learn from it back in the day.
The first 155 pages are a review of 6502 machine language. Usually, an ML book allows concepts to gradually build, but instead, the authors introduce the instructions around common aspects, like a grocery store that decides to put the cinnamon, maple syrup, and avocados next to each other because they all happen to come from trees.
The book spends a lot of time on array/table lookups. When moving an index pointer across records on the 6502, it's all about creating/maintaining the 16-bit base, then doing the tiny amount of varying indexing that the 8-bit registers allow before adjusting the base again. But not once does the book mention self-modifying code, which is frequently the go-to indexing approach in many trade-off spaces. None of their examples are assuming ROM code that would preclude such an approach.
Anyway, the book might have been useful for suggestions on how to design multi-precision math operations back in '82, but I don't think it's a "must have" for today's retro programmer.