When 16 documented graphic modes become 56 graphic mode

A brilliant article, written by Paul Chabot and published in "Antic" magazine, Vol. 3 No. 5, entitled "Unlocking the 56 graphic modes — Instant exploration of Atari's display styles" makes an incredible revelation: The Atari 8-bit computers actually have many more graphic modes than those listed and documented in the computer manuals.

Let's start at the beginning. When you take a closer look at the list of available graphic modes, you realise that all the modes we know today actually came about in 3 phases.

Phase 1: Atari 400/800 & CTIA (1979-1982)

When the Atari 400/800 were initially launched at the end of 1979, with the CTIA graphics chip, the following graphics modes were available:

ANTIC mode
(hexadecimal)
BASIC modeMode typeColumns x Rows# of colours
2GR.0TEXT40 x 242 {1}
3/TEXT40 x 192 {1}
4/TEXT40 x 245
5/TEXT40 x 125
6GR.1TEXT20 x 245
7GR.2TEXT20 x 125
8GR.3GRAPH40 x 244
9GR.4GRAPH80 x 482
AGR.5GRAPH80 x 484
BGR.6GRAPH160 x 962
C/GRAPH160 x 1922
DGR.7GRAPH160 x 964
E/GRAPH160 x 1924
FGR.8GRAPH320 x 1922 {1}

{1} 1 colour, 2 luminances

Phase 2: Atari 400/800 & GTIA (1982-1983)

When the GTIA chip replaced the CTIA chip in 1982, 3 new graphics modes were added (GR.9-10-11):

ANTIC mode
(hexadecimal)
GTIA modeBASIC modeMode typeColumns x Rows# of colours
20GR.0TEXT40 x 242 {1}
30/TEXT40 x 192 {1}
40/TEXT40 x 245
50/TEXT40 x 125
60GR.1TEXT20 x 245
70GR.2TEXT20 x 125
80GR.3GRAPH40 x 244
90GR.4GRAPH80 x 482
A0GR.5GRAPH80 x 484
B0GR.6GRAPH160 x 962
C0/GRAPH160 x 1922
D0GR.7GRAPH160 x 964
E0/GRAPH160 x 1924
F0GR.8GRAPH320 x 1922 {1}
F1GR.9GRAPH80 x 19216 {2}
F2GR.10GRAPH80 x 1929
F3GR.11GRAPH80 x 19216 {3}

{1} 1 colour, 2 luminances
{2} 1 colour, 16 luminances
{3} 16 colours of the same luminance

Phase 3: From Atari 1200XL and later (1983-)

Finally, from the Atari 1200XL onwards, additional graphics modes that were available with ANTIC have become accessible directly in Atari BASIC (GR.12-15). In fact, only ANTIC mode 3 — a variation of ANTIC mode 2 (GR.0 in Atari BASIC) but with a 2-pixel descender — remains unavailable directly in Atari BASIC.

This is the complete list of all the graphics modes we know today:

ANTIC mode
(hexadecimal)
GTIA modeBASIC modeMode typeColumns x Rows# of colours
20GR.0TEXT40 x 242 {1}
30/TEXT40 x 192 {1}
40GR.12TEXT40 x 245
50GR.13TEXT40 x 125
60GR.1TEXT20 x 245
70GR.2TEXT20 x 125
80GR.3GRAPH40 x 244
90GR.4GRAPH80 x 482
A0GR.5GRAPH80 x 484
B0GR.6GRAPH160 x 962
C0GR.14GRAPH160 x 1922
D0GR.7GRAPH160 x 964
E0GR.15GRAPH160 x 1924
F0GR.8GRAPH320 x 1922 {1}
F1GR.9GRAPH80 x 19216 {2}
F2GR.10GRAPH80 x 1929
F3GR.11GRAPH80 x 19216 {3}

{1} 1 colour, 2 luminances
{2} 1 colour, 16 luminances
{3} 16 colours of the same luminance

What happens if?

Paul Chabot, the author of the article, points out that the Atari BASIC GR.9-10-11 modes are in fact variations of the Atari BASIC GR.8 mode. These 4 modes are based on the same ANTIC F mode, with the variations offered by the GTIA 0-1-2-3 modes.

Hence the legitimate question: apart from ANTIC F, all the other graphics modes we know only use GTIA mode 0. But what happens if we explore GTIA modes 1-2-3 for all ANTIC modes, not just ANTIC F?

ANTIC mode
(hexadecimal)
GTIA modeBASIC modeMode typeColumns x Rows# of colours
20GR.0TEXT40 x 242 {1}
21/TEXT40 x 248 ???
22/TEXT40 x 248 ???
23/TEXT40 x 248 ???

etc...

{1} 1 colour, 2 luminances

ANTIC mode 2. GTIA modes 0-1-2-3

ANTIC mode 2
GTIA modes 0-1-2-3

To see GTIA modes 0-1-2-3, simply use the classic GRAPHICS instruction (abbreviated as GR.) in Atari BASIC, followed by a POKE instruction.

GTIA modePOKE
0POKE 623,0
1POKE 623,64
2POKE 623,128
3POKE 623,192

What do these additional graphics modes look like? The program initially proposed in Paul Chabot's article provides a visual answer to this question. Some modes are usable, others hardly at all, but they're all worth exploring.

For the video: Altirra emulator, Atari 1200XL, NTSC, 1982 OS rev. A, Atari BASIC Rev C. cartridge.

 

Download Paul-Chabot-56-modes-ALLMODES.BAS.zip to get: a textual .TXT version of the listing, to be printed on your current computer and retyped on the Atari. If you have a SIDE3, a FujiNet or any "SIO-to-<something>" device, you'll also find a .LST version NEW:ENTER "D1:ALLMODES.LST":RUN, a .BAS version RUN "D1:ALLMODES.BAS" and an .ATR diskette version (in Atari DOS 2.5 format, 130 KiB).

How to use the program:

Follow-up question #1: What about ANTIC modes 0 and 1?

Very attentive readers will have noticed that these lists of graphic modes never rely on ANTIC modes 0 and 1. Why is it so? Do they even exist?

In fact, these "ANTIC modes" are simply instructions executed by ANTIC to build an image, with an internal program called the "Display List".

A "Display List" really describes how to build the image to display line by line, where to find in RAM the data to be displayed, if a scrolling feature should be enabled, etc. A "Display List" is automatically generated by Atari BASIC for all the text and graphic modes available in Atari BASIC. You can blissfully ignore its existence when you use the regular graphics modes available in Atari BASIC (GR.0 to GR.15). But a "Display List" can also be built/modified by the user.

A "Display List" allows you to do extraordinary things, such as:

By asking the "Display List" to execute a very short machine language program after drawing a line, you can also:

By asking the "Display List" to execute a short machine language program after drawing a complete image, you can also:

To come back to the original question, the ANTIC 2 instruction is actually used to display a line (just one) in classic text mode (GR.0) with 40 columns. To obtain the Atari BASIC GR.0 text mode we are familiar with (TEXT, 40 x 24), a "Display List" created by the computer displays 24 times one line. 24 times the ANTIC 2 instruction to get the usual 24 lines of text.

But the ANTIC 0 and 1 instructions are not used to display a particular text or graphics mode.
The ANTIC 0 instruction requests to draw a black line, a blank line.
The ANTIC 1 instruction, "jump to location", warns that the next 2 digits of the "Display List" represent a RAM address that the "Display List" must branch to because it contains the rest of this "Display List".

Follow-up question #2: Why is there no text window option in the Atari BASIC GR.9-10-11 graphics modes?

Why don't the Atari BASIC GR.9-10-11 graphics modes offer variants with a 4-line text window as standard, like all the other Atari BASIC graphics modes?

Because the Atari BASIC GR.9-10-11 graphics modes rely on ANTIC mode F with GTIA modes 1-2-3 respectively whilst a text window in Atari BASIC GR.0 mode is based on ANTIC mode 2 and GTIA mode 0, not 1-2-3.

To obtain this 4-line text window, you have to use ANTIC mode F with GTIA modes 1-2-3 for the upper part of the display — depending on whether you want to be in GR.9-10-11 graphics mode — and then suddenly switch to ANTIC mode 2 and GTIA mode 0 exactly when you intend to display the 4-line text window.

A simple POKE instruction in Atari BASIC is not enough. You have no way of synchronising the execution of this POKE instruction in Atari BASIC at the same time as displaying the 4-line text window.

For this purpose, you need a specific Display List, including a Display List Interrupt with a few machine language instructions that switches to GTIA mode 0 just before requesting the display of 4 lines in ANTIC mode 2 in the rest of the Display List.

Follow-up question #3: Can I get a text window in the Atari BASIC GR.0 text mode too?

The Atari BASIC GR.0 text mode is a large 24-line window. Is it also possible to obtain a small "4-line text window" at the bottom of the screen in this mode?

Yes, it is possible. A POKE 703,4 instruction will create this 4-line text window at the bottom of the screen.

There are two things to note:
First, how to use these two different text windows? The PRINT instruction will display text in this 4-line text window at the bottom of the screen, whereas a PRINT #6 instruction will display text in the top 20 lines.
Then, it is not possible to create a window of any size simply with a POKE 703,x. The 3 possible values are 0, 4 and 24.

It can be useful and interesting to create such a 4-line text window. For example, in a text adventure game, to display the description at the top of the screen, and process the player's commands in the small 4-line text window, without disturbing or causing the description to disappear. Or to display a detailed menu at the top of the screen in utility software, and process user requests in the small 4-line text window, while still leaving the full menu on the screen.

Resources

If you want to learn more about Display Lists, I suggest this article:

If you want to learn more about Display List Interrupts, I suggest these 2 articles:


Knowledge base article: kb-hardware-0005-atari-8bit-56-graphic-modes
REV. 007.

Back to the Knowledge base index Knowledge base