48
Ask HN: Books to learn 6502 ASM and the Apple II
I want to learn Assembly to make games on the Apple II. What are the old books to learn 6502 Assembly and the Apple II itself (memory, screen management) ? And is it absolutely necessary to learn BASIC before Assembly ?
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
I don't have any programming experience.
Google can be very helpful for these types of queries:
https://www.google.com/search?q=apple+2+game+programming+tut...
Formulating questions is a valuable skill as is finding existing resources.
As some one from that era, it is truly amazing how much information there is online about all aspects of 8 bit computers
I don't think online tutorials are a good ressources to learn programming. We just have to look at what juniors can do nowadays (they can't even write a simple program, and I'm from that generation). That's why I asked for books.
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!
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.
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'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...
Seconded. I bought the first edition of "Programming the 6502" way back in the neolithic, and I enjoyed it greatly. I even read parts of it again now and then these days too, just because I like it. I used to write assembly on, at first, the AIM-65, and later the Apple II.
Is Programming the 6502 enough to learn Assembly on the Apple II ? But it doesn't explain the memory and screen management, right ? So how can we learn that ?
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
Assembly Lines is the one I came to recommend. Great book to sit down with and work your way through.
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!
Have you considered using something like claude code / opencode?
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.
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.
I have litteraly no programming experience, that's partly why I want to learn 6502 Assembly.
Much easier to start with BASIC. After all, why not?
I respectfully disagree, BASIC/Java/Arduino hides too much about how the CPU works from users.
Getting a 6502 kit from Ben Eater, and walking though how the CPU works will implicitly show how languages abstracted away whats actually happening. And more importantly, the skills necessary to understand how to write efficient programs.
https://www.youtube.com/watch?v=LnzuMJLZRdU&list=PLowKtXNTBy...
https://eater.net/6502
Starting with a simple architecture is highly recommended. =3
Starting with the 6502 is going to bring you up hard against its addressing modes. Better IMHO to learn about memory and how to access it using arrays in BASIC first.
Depends on learning goals, as BASIC teaches people some really bad habits.
They say "one always ends up coding in whatever your first language was... regardless of what language you are using".
People could always bring up the BASIC software Rom at the end of the build if interest arises after learning how a simple computer works. =3
https://github.com/chelsea6502/BeebEater
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...
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.