Inside Atari
Evolution of the XL Computers
Memory and expandability tell the tale
by Robert DeWitt, Managing EditorThe 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. HEX ADDRESS REV, B USE XL USE DESCRIPTION 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