Ask HN: Books to learn 6502 ASM and the Apple II

Comments

aa-jv 27 January 2026
Pretty much the best resource available:

https://6502.org/

Check the books section and find something that compels you.

Also, don't forget the HUGE number of resources for 6502 assembly programming that are available in the https://archive.org/ magazine and book sections:

https://archive.org/search?query=6502

Rodney Zaks' books are great - I like especially "6502 Games", which taught me a lot back in the day:

https://archive.org/download/6502g/6502Games.pdf

I'm also especially fond of the easy6502 emulator - its a very handy tool to have while studying 6502 techniques:

https://skilldrick.github.io/easy6502/

Its not absolutely necessary to learn BASIC before Assembly, but it will definitely help you understand the resources of the machine better if you can debug BASIC ROM code. My personal 6502 platform of choice, the Oric-1/Atmos machines, has a pretty great ROM disassembly available, from which a lot of great knowledge can be obtained - but it does of course first require an undersanding of BASIC.

In case you're curious, the Oric-1 ROM Disassembly:

https://library.defence-force.org/books/content/oric_advance...

(You can get an Oric emulator named Oricutron, or you can access a virtual Oric here: https://oric.games/ ..)

Good luck!

neomantra 27 January 2026
My running joke after showing off some amazing LLM-driven work is...

if you think this is impressive, I once opened a modal dialog on an Apple IIGS in 65C816 assembly

I don't think you need to learn BASIC, if you know concepts like conditionals and looping and indexing. It is interesting to compare the higher-level language of the time with its companion assembly. And you might find yourself writing BASIC programs to complement your assembly, if you stick to that platform.

<lore> A friend dropped me a BASIC program that ran and wrote text to the Apple IIGS border. He asked me to figure it out, because it wasn't obvious what was going on. OG hacker puzzle... it was a BASIC program that jumped to hidden assembly after the apparent end of the text file (hidden chars maybe, I forget) and the assembly was changing the border at appropriate rate to "draw" on it. Those were the days... trying to find some reference to this and am failing. </lore>

I certainly credit my stack-frame debugging capability to dealing with that stuff so long ago. Oddly enough, I didn't really find it helpful for computer architecture class. Just because you know registers exists and how to manipulate them, doesn't exactly map architecting modern hardware system. But being fluent in logic operations and bit-twiddling and indexing does help a lot.

OhMeadhbh 27 January 2026
This is the book I used when I was writing serial drivers for Apple II ProDOS: https://archive.org/details/6502_Assembly_Language_Programmi...

And I have a vague memory of this book: https://archive.org/details/aiimp/mode/2up

Not sure what level you're at, but I can't remember if this is the text Jef Raskin wrote, but it's a decent backgrounder: https://archive.org/details/aiirm/mode/2up

ksherlock 27 January 2026
For Apple-II specific info, consider

The Assembly Lines book -- https://archive.org/details/AssemblyLinesCompleteWagner

Understanding the Apple IIe -- https://archive.org/details/understandingapp0000sath

Understanding the Apple II -- https://archive.org/details/understanding_the_apple_ii

billygoat 27 January 2026
Machine Language for Beginners, Charles Mansfield https://archive.org/details/ataribooks-machine-language-for-...

This book specifically targets beginners that are new to 6502 assembly. The examples cover all of the 1980s-era computers including the Apple II. It's free on archive.org and the introductory chapters are worth reading.

einr 27 January 2026
I believe one of the "standard works" to learn 6502 back in the day was Programming the 6502 by Rodnay Zaks. It's out of print, but it was printed in a lot of copies so you should be able to find one second-hand.
i_don_t_know 27 January 2026
I'm seconding the recommendation to look at Rodnay Zack's books. For example, I really enjoyed Advanced 6502 Programming. It's a project-based tutorial for a custom 6502 machine. The design and schematics are in the book.

https://archive.org/details/Advanced_6502_Programming/mode/2...

RiverCrochet 27 January 2026
> And is it absolutely necessary to learn BASIC before Assembly

If you don't have experience programming, learning BASIC before Assembly will be super helpful before you learn 6502.

If you only have experience programming in modern languages (Javascript, etc.), learning the Applesoft BASIC will also be super helpful before you learn 6502, as you'll learn how to get by without ...

A) the following language conveniences:

- function names (it's all line numbers),

- variables with more than 2 letters,

and

B) the following modern concepts:

- function calls (no stack other than for GOSUB, use subroutines with dedicated variables for passing parameters instead),

- scoped variables (everything is global),

- dynamic allocation (you have to DIM arrays with the max size upfront),

- anything object-like like structs or classes (hack it with multi-dimensional arrays)

- other fancy stuff like callbacks, promises, hashtables and any other data structure beyond arrays.

and that will nicely prepare you for 6502 assembly (or any kind of assembly really). The advantage in 6502 assembly is you can implement most of B) yourself if you do need it.

sllabres 1 February 2026
I have seen the topic a bit late, but nevertheless:

I have learned 6502 assembler (and assembler) in general with "6502 assembly language programming by Lance A. Leventhal" (1979) [1] and "Apple Machine Language by Don Inman & Kurt Inman" (1981) [2]

For the 'internals' of the machine, I had "What's Where in the Apple: A Complete Guide to the Apple Computer by William F. Luebbert" (1985) amazon:[3]

[1] https://archive.org/details/6502-assembly-language-programmi...

[2] https://archive.org/details/a2-ml

[3] https://www.amazon.de/Whats-Where-Apple-Complete-Computer/dp...

dehrmann 27 January 2026
There are a few distinct things here. Learning 6502 assembly is straightforward, and you'd be better learning about simple (not modern) assembly languages at a high level--opcodes, registers, noop, branch, jump, compare, accumulators, program counters, and clock cycles. From there, start writing 6502 in an emulator and seeing what happens. That's where you're going to learn, and the feedback will be a lot faster. Programming for an Apple II will be more about learning how to interact with devices through memory.
eej71 27 January 2026
Two books for consideration.

Randy Hyde the creator of the Lisa assembler.

https://archive.org/details/A2_Hyde_6502_Asm_Lang/mode/1up

Ken Williams of Sierra OnLine fame.

https://vintageapple.org/apple_ii/pdf/Apple_II_Computer_Grap...

runjake 27 January 2026
6502 Assembly Language Programming by Leventhal.

This is how I learned. This book is great. I have the worn paper copy sitting 6 feet behind me as I type this. It's worth getting a paper copy if that is still possible.

https://archive.org/details/6502-assembly-language-programmi...

WillAdams 27 January 2026
No, you don't need to learn BASIC before assembly, but many books of the time went that route, e.g.,

https://www.goodreads.com/en/book/show/5011686-apple-machine...

Here is an interesting article on porting a BASIC game for the Apple II to GW BASIC:

https://nanochess.org/akalabeth.html

and it includes a link to the documented source code for Akalabeth (also known as Ultima 0)

Somewhere, there's an article discussing the assembly-language like bit-blitting used to draw the high-res graphics in a timely fashion and the variable/memory management techniques needed to drive that which I'm sure a bit of searching will turn up (or one can derive it from the source).

jsrcout 28 January 2026
The Apple II Reference Manual includes assembly listings (with full comments!) for the Monitor ROM and Autostart ROM, the mini-assembler, floating point routines, and a very nice 16-bit "pseudo machine interpreter" called SWEET 16. Most of which was written by Steve Wozniak. Learned a lot from this book back in the day.

Here's a link from archive.org. It's not the best scan, but you can easily find other copies.

https://archive.org/details/applerefjan78/page/n69/mode/2up

If you're feeling adventurous, you can find assembly listings for the AppleSoft BASIC language (though maybe only from third parties). It's pretty huge.

EvanAnderson 27 January 2026
They screen memory layout on the Apple II was a clever hardware hack but makes programming the machine more difficult. I think you'd be better off using a "trainer", like a KIM-1 simulator [0] to get your feet wet. (The KIM-1 was made by MOS Technologies, manufacturers of the 6502, as a demonstration and prototyping platform for the CPU.)

If you can do simple exercises on a machine like that and get comfortable with simple operations (loops, memory addressing modes) I think you'd have a better time grokking something more feature-filled.

[0] http://retro.hansotten.nl/6502-sbc/kim-1-manuals-and-softwar...

vparikh 27 January 2026
I recommend these two books for 6502 assembly:

https://archive.org/details/ataribooks-machine-language-for-...

and

https://archive.org/details/ataribooks-the-second-book-of-ma...

These two books will give you a good understanding of 6502 assembler - it is general but gives a good background and has a nice assembler with a full walk through of the code. I used these two books to learn 6502 on my Commodore 64 and they are highly recommended.

andreybaskov 27 January 2026
Original Apple II manuals written by Chris Espinosa and Jef Raskin are a treat to read. Would highly recommend, just to get a sense of what it was like to get onboarded on Apple II back in the day.

And then obviously Programming the 6502 by Rodnay Zaks.

8bitsrule 28 January 2026
Don't overlook (if you can find them) books made for Commodore-64 assembly coders. (Same CPU.) While they won't contain II specifics, there were several that were very helpful with 6502 tricks.
alnwlsn 27 January 2026
You don't need to learn BASIC first but it might be helpful for bootstrapping at the beginning. Since it's included in the computer you can PEEK and POKE memory locations from BASIC and get a feel for how memory and machine code works without needing to understand the whole entire hardware, bootloading process, etc. first.

In my opinion BASIC, with its line numbers and GOTO / GOSUB feels assembly-ish anyway - you'll be doing a lot of JMP / JSR to control program flow which is different to how modern high levels are normally written.

justin66 27 January 2026
Learning BASIC isn't essential, but the thing is, you might as well just do it. It's not complicated, and you're not under any obligation to develop a big piece of software with it. Have fun!
asdefghyk 28 January 2026
[Off TOpic somewhat] This post made me immediately recall, the hours I spent playing Apple Invaders, 1979

Pinball Construction Set, by Bill Bludge

Chop Lifter, modeled on 1979–1981 Iran Hostage Crisis, Dan Gorlin, Brøderbund 1982

Castle Wolfenstein (1981) (Muse) by Silas Warner

Red Alert (1981) Olaf Lubeck, Broderbund

I still have some of these original games and the artwork in the shed.....

All classic Apple games of very early 80s

At the time, the programming was recognized as amazing, the sound and graphics. It was a marvel that it was achieved on such a low resource machine ....

waffletower 27 January 2026
I strongly recommend "What's Where in the Apple": https://archive.org/details/whatswhereinappl0000lueb I loved that book back in the day. Specific, directly addressable memory locations are mapped to system devices in a way that is quite foreign and Wild West when compared to modern computer architectures.
asdefghyk 28 January 2026
RE "....Books to learn 6502 ASM and the Apple II...."

Suggest to look at some of the archives of old Apple Magazines from around the Apple I era , cira late 70s and early 80s.

Some of them would have had assembly language programming columns. I recall one Named Softtalk , but there where many. There are other Sites than Archive.org. Some archive sites solely devoted to early apple computers like Apple 2

absynth 28 January 2026
Targeting 8-bit Apple, Computes gazette published a stack of magazines and books especially introductory. Rodney Zaks did a bunch as well.

Personally I'd approach it using a raspi + python + pygame. Learn the fundamentals there then switch to apple.

jlmcgraw 27 January 2026
There is "Apple Machine Language for Beginners" by Richard Mansfield https://archive.org/details/Apple_Machine_Language_for_Begin...

I have fond memories from the late 1980s of trying to get the assembler contained within this book working, typing line after line of the MLX listing in. Unfortunately I never did finish it back then.

A week or so ago I got the urge to complete this project and I literally just finished getting the source in it to a point where it can be compiled online and then within an emulator: https://github.com/jlmcgraw/LADS_DOS33

sloaken 27 January 2026
For learning basic, the question is: do you already know how to program?

Only reason I can think to learn basic is if you do not know any programming language. And even then there are better choices.

Do they make an C compiler for the AppleII?

jacquesm 27 January 2026
Lance Leventhal's CPU books are pretty comprehensive and make it easy to switch from one architecture to another. Learning BASIC is definitely not a requirement.
Smalltalker-80 27 January 2026
Next to a book on 6502 assembly, you can google "apple 2 original system manual" and download it. I contains ROM assembly source code and schematics.
christkv 27 January 2026
I remember looking at the way graphics work on the Apple II and it looked pretty crazy lol with how memory layout worked to generate pixels.
ajross 27 January 2026
Honestly if you want to learn retro stuff for retro reasons... maybe consider using the retro materials? Here's the MOS programming manual for the original parts, it's what Woz would have used when hand-assembling Integer BASIC:

https://archive.org/details/mos_microcomputers_programming_m...

And it's really not so complicated! The chip is simple, so the docs are simple. There's more to read about the history to come later, but there's also something to be said for understanding it in the context its designers presented it.

ThinkingGuy 27 January 2026
This one worked for me: Apple II 6502 Assembly Language Tutor (1983) Richard E Haskell
asdefghyk 27 January 2026
The answer would depend on what programming experience you have? Do you have any assembly language experience ? with other targets? ie have you used an assembler ( and maybe linker ) before. Are you familiar with hex? bytes, bits etc , You will learn this and much more ...

Id look for a book that targets Assembly programming on a Apple 2, ie not a book on general 6502 programming.

   Such a book Id expect to discuss things like Apple 2 memory map , Apple 2 hardware and how they are used in assembler language. 
Hopefully the book would also provide guidance using a particular assembler ( hopefully still available)

I googled phrase Apple 2 assembly language programming for beginners?

and lots of very good looking links popped up.

You aim is a challenging task. Much to learn. Good luck. However entirely do able these days.

My background is electronics engineer, embedded programing on in assembler (some Motorola processors and others) and C for a few years before moving on to other things ....

The book Assembly Lines: The Complete Book available as a FREE PDF download from .... site https://ct6502.org/product/assembly-lines-the-complete-book/

INCLUDES All 33 of Roger Wagner’s Assembly Lines articles from Softalk magazine, plus appendices, in one complete volume.

rustyhancock 27 January 2026
If you have absolutely no experience with assembly then I'd suggest starting very simple with a modern microcontroller.

I have a special place in my heart for the original pic16f84a the modern equivalent is the pic16F1827.

Which uses the same 35 core instructions.

AVR8 is a close second.

dmezzetti 27 January 2026
Have you considered using something like claude code / opencode?