I am currently learning how to program video games for the Atari 2600 in machine code. There is a large amount of resources for amateurs and beginners online, but they are frequently not collected in one place. For example, there is an enormous wealth of information for learning how to program the Atari 2600 on the Atariage forums, but there is only a small amount of centralised organisation of the total amount of information you can read on the forums. Another example of the difficulty of finding information for programming the Atari 2600 is Random Terrain’s website. Random Terrain collects a lot of incredibly useful resources for Atari 2600 programming, but almost all of the information is only relevant for learning batari BASIC, the high-level programming language for the 2600. It is very difficult to find information about machine language on Random Terrain’s website. I also disagree with the formatting and delivery of the information on the website. Much of the information on batari BASIC is located on one very big web page. The page is also somewhat out of date. For example, if you didn’t pay attention to completely all of the text on the page, you would be fooled into thinking that the 2007 version 1.0 of batari BASIC was the latest version, when in fact there is a much more current version which was released in 2013. Even this version of batari BASIC may be old.
The purpose of this page on my blog is to collect as much information about learning how to program the Atari 2600 as possible. The first section deals with machine language. The second section deals with batari BASIC.
I Machine Language
A The Basics of Machine Language
1 Complete Tutorials From the AtariAge Forums
- Atari 2600 Programming for Newbies by Andrew Davie: Random Terrain’s reformatting here. The index thread on the AtariAge forums here and here. They’re both the same. I don’t know why there are two.
- Robert M’s Introduction to Assembly: Random Terrain here. AtariAge at the bottom of the first post on the thread.
- SpiceWare’s Collect Tutorial: Random Terrain here. AtariAge here. Just in case something changes about the tutorial, the entire category for the Collect Tutorial is here.
2 The Atari Archives
The website’s index can be found here. There are many good books for beginners on 6502 machine language on this website. They really break the issue down into simple elements.
3 Random Terrain’s Assembly Language Links
- The “Useful Links” section can be found at the bottom of the index page of the reformatted SpiceWare tutorial.
- Nick Bensema’s How to Draw a Playfield guide is here.
- Nick Bensema’s Guide to Counting Cycles can be found here.
4 Easy 6502
The GitHub webpage for the interactive tutorial for learning 6502 machine language can be found here.
5 Nick Bensema’s Atari 2600 Programming Page
The archived version of the website from 1997-2006 is here.
B Advanced Machine Language Techniques
1 The Stella Mailing List
The Stella Mailing List was (or is?) a mailing list set up by the people who programmed and maintained the Stella Atari emulator. Many people who worked on the emulator conducted many important technical discussions on this mailing list. Spending a lot of time reading this mailing list will teach you many important lessons about how the Atari 2600 works, and how to get the most out of the system. You can browse or search the mailing list here.
2 The MiniDig
This webpage contains an incomplete list of all the commented/annotated decompilations of Atari 2600 ROMs conducted through the Stella Mailing List. You can find the MiniDig here.
3 AtariAge Links
(a) Discussion About Various Ways of Using the Kernel to Draw to the Screen
- Entire Thread here.
- Useful post from thread describing each of the various methods here: SwitchDraw, SkipDraw, FlipDraw, DoDraw.
- The links in the thread to the Stella Mailing List discussion of each of the methods are broken. Find repaired links to the discussion on the topic here:
This is an entire website dedicated to documenting and teaching machine language for the MOS 6502 processor. The 6502 is the CPU of the Atari 2600.
- Please find the index of the website here.
- If you need to examine some examples of source code in order to learn a technique, the website provides a long list.
- This probably doesn’t belong under this subheading, but the website also contains a list of tutorials.
II Batari BASIC