💾 Archived View for tanelorn.city › ~vidak › old-blog › atari-2600-programming.gemini captured on 2020-09-24 at 01:36:02. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
---
author: bootlicker
generator: pandoc
title: Atari 2600 Programming
viewport: 'width=device-width, initial-scale=1.0, user-scalable=yes'
---
bootlicker
2017-07-20T02:43:41+00:00
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](http://www.randomterrain.com/atari-2600-memories.html). 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
asdf.
A Â Â Â *The Basics of Machine Language*
1 Â Â Â *Complete Tutorials From the AtariAge Forums*
- [Atari 2600 Programming for Newbies by Andrew
Davie]{style="text-decoration: underline;"}: Random Terrain's
reformatting
[here](http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-01.html).
The index thread on the AtariAge forums
[here](https://atariage.com/forums/topic/33233-sorted-table-of-contents/)
and
[here](https://atariage.com/forums/topic/47479-atari-programming-workshop-chapter-links/).
They're both the same. I don't know why there are two.
- [Robert M's Introduction to
Assembly]{style="text-decoration: underline;"}: Random Terrain
[here](http://www.randomterrain.com/atari-2600-memories-tutorial-robert-m-01.html).
AtariAge [at the
bottom](https://atariage.com/forums/topic/47479-atari-programming-workshop-chapter-links/)
of the first post on the thread.
- [SpiceWare's Collect Tutorial]{style="text-decoration: underline;"}:
Random Terrain
[here](http://www.randomterrain.com/atari-2600-lets-make-a-game-spiceware-00.html).
AtariAge
[here](https://atariage.com/forums/blog/148/entry-13884-collect-tutorial-index/).
Just in case something changes about the tutorial, the entire
category for the Collect Tutorial is
[here](https://atariage.com/forums/blog/blog-148/cat-188-collect).
2 Â Â *The Atari Archives*
The website's index can be found [here](http://atariarchives.org/).
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](http://www.randomterrain.com/atari-2600-lets-make-a-game-spiceware-00.html#useful_links)
of the reformatted SpiceWare tutorial.
- Nick Bensema's *How to Draw a Playfield* guide is
[here](http://www.randomterrain.com/atari-2600-memories-how-to-draw-a-playfield.html).
- Nick Bensema's *Guide to Counting Cycles* can be found
[here](http://www.randomterrain.com/atari-2600-memories-guide-to-cycle-counting.html).
4 Â Â Â *Easy 6502*
The GitHub webpage for the interactive tutorial for learning 6502
machine language can be found
[here](https://skilldrick.github.io/easy6502/).
5 Â Â Â *Nick Bensema's Atari 2600 Programming Page*
The archived version of the website from 1997-2006 is
[here](https://web.archive.org/web/20130208050106/http://www.prismnet.com:80/~nickb/atari/index.html).
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](http://www.biglist.com/lists/stella/archives/).
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](http://www.qotile.net/minidig/).
3 Â Â Â *AtariAge Links*
the Screen*
- Entire Thread
[here](https://atariage.com/forums/topic/75982-skipdraw-and-graphics/).
- Useful post from thread describing each of the various methods
[here](http://atariage.com/forums/topic/75982-skipdraw-and-graphics/?p=928232):
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:
- SwitchDraw
[here](http://www.biglist.com/lists/stella/archives/200502/msg00058.html).
(Read the whole thread).
- SkipDraw: Kirk Israel's thread
[here](http://www.biglist.com/lists/stella/archives/200309/msg00117.html).
Dennis Debro's thread
[here](http://www.biglist.com/lists/stella/archives/200309/msg00056.html).
- FlipDraw
[here](http://www.biglist.com/lists/stella/archives/200508/msg00049.html).
- DoDraw does not occur in the Stella Mailing List.
4 Â Â *6502.org*
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](http://www.6502.org/).
- If you need to examine some examples of source code in order to
learn a technique, the website provides a [long
list](http://www.6502.org/source/).
- This probably doesn't belong under this subheading, but the website
also contains a list of [tutorials](http://www.6502.org/tutorials/).
II Â Â Batari BASIC
asdf