Classic Computer Magazine Archive ANTIC VOL. 3, NO. 2 / JUNE 1984

Inside Atari

Evolution of the XL Computers

Memory and expandability tell the tale

by Robert DeWitt, Managing Editor

The XL line of Atari computers has hit the market. Hundreds of thousands of the gleaming machines are now in the hands of eager Atarians. Most of the new owners are new to computing, but some have bought XLs to replace or supplement an earlier unit. Everyone seems to be curious about the powers and peculiarities of these new computers.

Antic has at least one of each of the XLs in service: the 600XL, the 800XL and the 1200XL. To broaden our perspective, we also visited recently with members of the Atari engineering staff and inquired about the evolution of these computers from the 400 and 800 models with which most of us started.

The key notion for development at Atari has been "upward" compatibility. This means that old software should work with new models, but new software for new models may not work with old models. So far, all Atari computers operate in essentially the same way, based on the 6502 eight-bit microprocessor supported by several other chips including ANTIC, GTIA (CTIA in early models), POKEY, and PIA.

Software that is properly written for the Atari 400 and 800 computers will run on the XL machines. Unfortunately, some software products, including some Atari products, were not properly written and will not work with the XLs. Among the incompatible titles of which we are aware are Atari Word Processor (not AtariWriter), Text Wizard, and LJK's Letter Perfect.

One major hardware change introduced with the XL machines does create some problems. Only two joystick ports are now available, as opposed to four with the previous models. Any program that uses all four ports at once will not work properly on the XL machines, and any peripheral that uses Ports 3 and 4 cannot be connected.

It is, in fact, the deletion of these ports that made possible many of the added features of the XL machines. In all Atari computers, the PIA chip handles the joysticks. In the 400 and 800 this was accomplished through addresses 54016 (called PORTA) and 54017 (called PORTB). PORTB formerly handled joystick Ports 3 and 4. In the XLs, PORTB is devoted to other functions: switching the Operating System in and out, switching BASIC in and out, and invoking self-tests. Note that the 1200XL does not have built-in BASIC, so programmable LEDs on the console are controlled here instead.

In the XL computers, programs that call for the alternating use of four joysticks are supported by software simulation of the third and fourth sticks. Programs with four independently movable players will show Players I and 3 being moved simultaneously by Stick I and Players 2 and 4 being moved by Stick 2.

Cheap Memory

When the Atari 400 and 800 were developed, memory chips were more expensive, less capable, and required more power. Early models had as little as 2K RAM. Now 64K memory chips are widely available. This is one of the technological developments that gave rise to the XL machines. (Strangely enough, the Atari 400 was always considered complete [by Atari) at 16K RAM, even though other companies discovered ways to expand it.)

The Atari 800 was designed with accessible slots explicitly so that its memory could be expanded to 48K RAM. Atari did not forsee any of the other uses eventually made of these slots, nor did it even anticipate that full memory was possible with fewer than three RAM boards. The machine was rated at 48K not because it was incapable of using more RAM, but because 48K seemed to be "enough" at the time, and it was deemed reasonable by Atari to set aside 16K for housekeeping and future expansion.

One portion of the housekeeping area is of special importance. This is the 2K range of addresses (from $D000 through $D7FF) known as the I/O block. These addresses serve the several support chips mentioned above, and have other functions that preserve compatibility among all of the Atari computers. This area can never be used as RAM, not even when the OS is switched out.

Why would you want to switch out your Operating System? Credit the horsepower race for this concept. The Commodore 64, also a 6502-based computer and a direct Atari competitor, claimed to be a 64K machine. Of course, the Atari 800 was one, too, but it provided a maximum of only 48K RAM. Atari's solution, first implemented with the 1200XL, was to install a 64K "underlay" of RAM chips. This would be available (except for the ever-present and protected I/O block) for whatever use the programmer desired, including use of a different Operating System. This handy feature allows regression to the old "Rev. B" OS that is needed to run incompatible older software. Atari sells this OS as a "Translator Disk" for $9.95, and may soon offer it on cassette.

The Need for the 1200XL

The 1200XL project offered several other opportunities. Exterior redesign of the Atari computer was urgently needed. The beige beasts of the past, attractive in their way, just didn't have the high-tech look. The XL line would shoot for elegance - it would be coffee and cream trimmed in silver, with a sleek, low profile made possible by its single-board design.

The 400 and 800 were multi-board computers. But the 1200XL needed only a single board. Technology had improved enough in just a few years to reduce the number of required integrated-circuit chips by half. With almost everything mounted on one sturdy printed-circuit board, the need for connectors and problems with connectors were reduced dramatically. Cartridges the size of Atari's standard BASIC could now carry 16K. When the old 800 was designed, a future need for 16K (for cartridge-based external programs) was provided for by the right-hand cartridge slot (which accesses the 8K of memory directly below BASIC's 8K). The new cartridge made this little-used slot completely obsolete, however, so the 1200XL included just one cartridge slot, which could access either the whole 16K at the top of RAM or only 8K, if that was all that was needed by the cartridge.

The 1200XL was considered to be a complete computer. No attempt was made to expose the parallel bus, at least in part because the engineers were wary of the "crazy" things that might be plugged in there. No extra slots were opened because the unit came with all the RAM it could ever use. Well, that concept of architecture simply foreclosed the future. The hobbyists and even the mass consumers seemed to balk at the machine's limitations, especially at its price tag.

The New Machines

The next machines, the 600XL and the 800XL, would address those grievances. Styled similarly to the 1200XL, they would expose the parallel bus for whatever uses an inventive public could devise, and would carry built-in BASIC at a price that would attract the multitudes. The 600XL and 800XL are of similar design, but the 600XL has only 16K RAM installed, and drives only a television, not a monitor. A RAM-expansion module is planned for the 60OXL. This will continue to pass the bus to other add-ons. Among these will be an expansion box from Atari that will accept, Apple IIe style, third-party boards of sundry kinds, thus opening the way for the unlimited development of the XL machines.

The power supply for the 600XL and 800XL is external. As a result, they provide, for the first time in the history of Atari computers, a single 5-volt DC current. Another distinction of the XL computers is that they feature a true hardware reset, as opposed to a software interrupt. Other XL doodads include programmable control of keystroke rate and clicks, keyboard disable, fine scrolling in text mode, programmable function keys (1200XL only), and an international character set in ROM.

The Operating System for Atari computers has gone through an evolution as well. PEEK(65527) returns a value that identifies the resident OS. The 400/800 Rev. A=221; 400/800 Rev. B=255; 1200XL Rev. A = 10; 1200XL Rev. B = 11; 600XL = 1 and 800XL = 2. The major divergence is between the OS for the 1200XL and Rev. B for the 400/800s. A gross memory map for the XL computers is shown in Table 1. A list of significant address changes is shown in Table 2. This information was derived from the recent but undated "Guidelines," a document prepared by Atari, Inc., for those seeking detailed information about recent changes.

Table 1: XL Memory Map

The following memory map assumes that DOS 2.OS is booted with a Graphics
Mode 0 screen in BASIC.

HEXADECIMAL*         DECIMAL            USE
0000-007F            0-127              OS page zero RAM
0080-OOFF            128-255            user page zero RAM (BASIC)
0100-OlFF            256-511            6502 stack
0200-05FF            512-1535           OS RAM
0600-06FF            1536-1791          FREE RAM
0700-lCFB            1792-7419          DOS
1CFC-9ClE            7420-39966         user RAM (BASIC)
9ClF-9FFF            39967-40959        display list and screen RAM
A000-BFFF            40960-49151        BASIC cartridge
C000-CBFF            49152-52223        OS ROM
CC00-CFFF            52224-53247        OS ROM (intn'l character set)
D000-D0FF            53248-53503        GTIA registers
D100-DlFF            53504-53759        reserved for future use
D200-D2FF            53760-54015        POKEY registers
D300-D3FF            54016-54271        PIA registers
D400-D4FF            54272-54527        ANTIC registers
D500-D7FF            54528-55295        reserved for future use
D800-DFFF            55296-57343        OS ROM (floating point package)
E000-E3FF            57344-58367        OS ROM (domestic character set)
E400-FFFF            58368-65535        OS ROM
*The Hexadecimal number system uses 16 as its base.

Table 2: OS Changes from Rev. B to the XL

This is a list of memory differences between the Rev.  B Operating System of the 400/800s and 
the Operating System developed for the XL computers.

0000         reserved              LNFLAG       -  for inhouse debugger
0001         reserved              NGFLAG       -  for power-up selftest
001C         PITIMOT moved (0314)  ABUFPT       -  reserved
0010         PBPNT moved (02DE)     "
001E         PBUFSZ moved (02DF)    "
001F         PTEMP (deleted)        "
0036         CRETRY moved (029C)   LTEMP         -  loader temp.
0037         DRETRY moved (02BD)    "
004A         CKEY moved (03E9)     ZCHAIN        -  handler-loader temp.
004B         CASSBT moved (03E9)    "
0060         NEWROW moved (02F5)   FKDEF         -  func key def ptr.
0061         NEWCOL moved (02F6)    "
0062            "         (02F7)   PALNTS        -  PAL/NTSC flag.
0079         ROWINC moved (02F8)   KEYDEF        -  key def pointer
007A         CLINC moved (02F9)     "
0233         reserved              LCOUNT        -  loader temp
0238-0239       "                  RELADR        -  loader
0245            "                  RECLEN        -    "
0247         LINBUF (deleted)      reserved
0248-026A       "                  reserved
026B            "                  CHSALT         -  character set ptr
026C            "                  VSFLAG         -  fine scroll temp
026D            "                  KEYDIS         -  keyboard disable
026E            "                  FINE           -  fine scroll flag
0288          CSTAT (deleted)      HIBYTE         -  loader
028E          reserved             NEWADR         -  loader
029C          TMPXL (deleted)      CRETRY         -  from 0036
02BD          HOLD5 (deleted)      DRETRY         -  from 0037
02C9-02CA     reserved             RUNADR         -  loader
02CB-02CC        "                 HIUSED         -  loader
02CD-02CE        "                 ZHIUSE         -  loader
02CF-02D0        "                 GBYTEA         -  loader
02Dl-O2D2        "                 LOADAD         -  loader
02D3-02D4        "                 ZLOADA         -  loader
02D5-02D6        "                 DSCTLN         -  disk sector size
02D7-02D8        "                 ACMISR         -  reserved
02D9             "                 KRPDEL         -  auto key delay
02DA             "                 KEYREP         -  auto key rate
02DB             "                 NOCLIK         -  key click disable
02DC             "                 HELPFG         -  HELP key flag
02DD             "                 DMASAV         -  DMA state save
02DE             "                 PBPNT          -  from 001D
02DF             "                 PBUFSZ         -  from 001E
02E9             "                 HNDLOD         -  handler loader flag
02F5             "                 NEWROW         -  from 0060
02F6-02F7        "                 NEWCOL         -  from 0061
02F8             "                 ROWINC         -  from 0079
02F9             "                 COLINC         -  from 007A
030E           ADDCOR (deleted)    JMPERS         -  option jumpers
0314           TEMP2 moved (0313)  PTIMOT         -  from 001C
033D           reserved            PUPBT1         -  power-up/reset
033E             "                 PUPBT2              "
033F             "                 PUPBT3              "
03E8             "                 SUPERF         -  screen editor
03E9             "                 CKEY           -  from 004A
03EA             "                 CASSBT         -  from 004B
03EB             "                 CARTCK         -  cart checksum
03ED-03F8        "                 ACMVAR         -  reserved
03F9             "                 MINTLK               "
03FA             "                 GINTLK         -  cart interlock
033FB-03FC       "                 CHLINK         -  handler chain