Task: Create a Custom Display List in BASIC
Time: 30-60 mins
When the Atari 400 and 800 were released in 1979 they were far ahead of their competitors in terms of computer graphics and sound. The advanced graphics were the result of the special ANTIC chip that is a microprocessor with its own op codes and a special program called a display list that tells the CTIA/GTIA chips what graphics modes to draw on each of the 192 lines of the display. The key advantage that the ANTIC provided was the ability to mix graphics modes to create displays that could be partitioned into different text or graphics modes. This made it easy to have some text for scoring at the top of the screen and graphics at the bottom of the screen for game play. Other computers such as the Apple II could only draw a single homogeneous screen that was read from memory.
Mixing different graphics modes is called a custom display list. This is relatively easy to do with a little planning. See the comments below for some of the caveats. I have read a number of different tutorials and summaries of custom display lists. I will mention some of these here but I must admit it takes a little time to understand all the ins and outs. I provide below what I think is the easiest custom display list example to start with along with my own commented version. This came from a chapter in Compute’s First Book of Atari and is easy to modify as you learn. Here is some background reading from De Re Atari. I would start with this before reading the others. Here is a chapter from Compute’s First Book of Atari Graphics. Here is an overview from a 1983 issue of ANTIC magazine. Here is a tutorial from the We Are the Mutants web site.
The following instructions are for running the custom display list code in the Altirra emulator. You can of course type the code in by hand and run it on original hardware with BASIC.
Open Altirra and load BASIC. I used Turbo BASIC XL.
Open the custom display list file in your PC text editor or web browser and copy the text to your clipboard. Note that the spaces between lines are necessary for Altirra to read in the code properly.
Click on the View tab of Altirra and choose the paste text option from the bottom of the list. Altirra will slowly paste the text into the BASIC command line. It is important to keep focus on the Altirra window or the paste will stop and it will lose some characters.
Once finished with the paste you can LIST to see the program and then RUN to see the result. Below is a screen shot from Altirra showing a mixture of graphics modes 2 (top), 1 (middle), and 3 (bottom).
Here is a fully commented version of the code from above. Don’t try to run this version. It is only for the comments.
Try modifying the code from above to see if you can create your own custom display list. Read the above sources I linked to for some of the caveats. It can get a little tricky depending on whether your display needs to cross a 1K memory boundary. This can happen when you use the more memory intensive graphics modes. You also need to count the number of scan lines you are using. They should total 192. Each graphics mode uses different numbers of scan lines.
Mastering the display list is a powerful thing to know how to do with the Atari. I hope to do a post later on how to do this in assembly and perhaps some of the other languages like Action!. I also plan to combine custom character sets with a custom display list to create a playfield for the game I am making. I will do a post on that when completed. Enjoy!