Traditionally, the first program anyone writes in a new language or on a new computer is Hello world!, so it is only fitting that I kept the default post title of the first WordPress post Hello world!
I am on a mission to learn Assembly Language specifically for the 6502 8-bit microprocessor. My programming background started in 1997 with web development that involved ASP, ColdFusion, and Oracle. For 27 years, I have never taken the time to learn the lower-level language that makes a computer work…until now.
Teaming up with ChatGPT, I’ll organize a plan for reading, studying, and practicing. I plan on using this blog to share my progress and to keep myself accountable. I’m starting from the very beginning of learning Assembly Language, and I think it would be fascinating if today I could see the steps and hoops I jumped through to learn what I needed to build websites over the last 25+ years.
If you join me on this journey, great! Just be nice. If you are a pro at Assembly Language, then posts I make on here might be obvious, but for me it is part of the learning process. We all have to learn and start somewhere.
I know there on online emulators on which I can code Assembly Language, but I also have a decent collection of retro computers I plan on using. I have a TI-99/4A, Commodore VIC-20, Atari 400, and Atari 800XL. I plan on using the Atari 800XL most of the time because one of my goals is to create some home-brew games for the Atari.
Earlier, I mentioned ChatGPT helping me. I strongly believe it can enhance my learning and prevent roadblocks along the way. I 100% respect those before me who had to learn Assembly Language with limited resources. At this point in my life, I need a little bit of acceleration and can’t spend a bunch of time running around in dead-end circles if something isn’t working. But, my enthusiasm and desire to learn Assembly Language will keep me motivated to move forward until I have completed some of my home-brew Atari games.
I found five books that are recommended reading for Assembly Language, and I asked ChatGPT (moving forward, let’s agree to give ChatGPT a name [Roger] and refer to “it” as “he”) what reading order I should follow. I also included how I should fit in Ben Eater’s tutorials (I have Ben Eater’s kits). Here is Roger’s (ChatGPT) response:
“Machine Language for Beginners” by Richard Mansfield — Start here if you’re a beginner.
Ben Eater’s 6502 Tutorials (First Pass) — Work through Ben Eater’s initial tutorials while learning the fundamentals. His visual, step-by-step approach complements the basics and solidifies your understanding of how the processor works in hardware.
“6502 Machine & Assembly Language Programming” by Mike Smith (this is not ME Mike Smith…I was a kid when this book was written) — Expands on fundamentals and introduces practical assembly programming techniques. It’s slightly more advanced than Mansfield’s beginner book but still accessible.
“Programming the 6502” by Rodnay Zaks — Learn the theory and fundamentals of the processor.
Ben Eater’s Tutorials (Advanced Sections) — Revisit Ben Eater’s more complex tutorials involving interrupts, memory-mapped IO, and other advanced topics. These will now resonate more because you’ve seen the theory and practical examples from books like Zaks’ and Smith’s.
“The Second Book of Machine Language” by Richard Mansfield — Take your programming skills to the next level with advanced techniques.
“6502 Software Design” by Leo J. Scanlon — Apply your programming knowledge to real-world projects.
“6502 Applications Book” by Rodnay Zaks — Explore diverse use cases, including hardware and interfacing.
I have the Ben Eater kits and all the books except Scanlon’s, but I have my eye on one on eBay. Also, I have the system(s) that I need (I believe) to begin this journey. Will you go on this journey with me? Let’s learn My 6502 bit by bit.