---

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