2018-09-23
Atari is a registered trademark of Atari, Inc.
1. Introduction
This is a collection of source listings for all known (official) versions of the Operating System for the Atari 8-bit home computers. It was created through a two-pronged process:
-
For a few OS revisions, Atari published source listings back in the day; these listings are included in this archive in unmodified form.
-
Other versions are available only as ROM chips in existing computers; for these versions the source files have been restored by disassembling ROM contents and combining the disassemblies with source listings of other versions.
As a result, the sources contain as much of the original comments and structure as possible.
In addition to their original form, the archive also contains sources adapted for the ca65 assembler. They can be assembled into binary images that are byte-for-byte identical to the ROMs found in Atari computers. Get ca65 at http://cc65.github.io/cc65/.
2. History of the Atari OS
The Atari Operating System started its life together with the Atari 8-bit computers themselves. As newer models with more features were developed and released through the years, the OS evolved and expanded as well. Below is the chronology of all known Atari OS revisions.
2.1. Atari 400/800
Designed as both a successor to the Atari VCS console and a worthwhile competitor in the emerging home computer market, the Atari 400/800 computer system needed an adequate operating system that would act as an interface between the user and the sophisticated hardware. The OS to fulfill that role was developed in (probably) the period of 1978/79,
[[WLKSN1] pp. iv-v]
by the following people:
[[CURRNT]]
[[OSREV4] listing lines 17-18]
-
David Crane - OS design & programming
-
Alan Miller - OS design & programming
-
Larry Kaplan - OS design & programming
-
Robert "Bob" Whitehead - OS programming
-
Harry B. Stewart - OS design consultant
-
Gary Palmer - worked on the I/O portion
-
Ian Shepard - disk drive functions
The OS itself initially fitted in 8 KB of ROM space, but it was decided by Atari that it should also include the 2 KB Floating Point Package (FPP), originally part of Atari BASIC designed by Shepardson Microsystems. The Atari BASIC was specified to occupy the size of 10 KB,
[[WLKSN1] p. v]
but a cartridge of this size could not be built - the system architecture allows the cartridge size to be either 8 or 16 KB. So the excessive 2 KB of code was designed to be built in the computers along with the OS. The FPP became part of the OS ever since. It was developed by:
[wlksn1-v]
[[WLKSN2] p. ix]
[[OBRIEN] 01m43s-02m02s]
-
Bill Wilkinson - design of the floating point scheme used in Atari BASIC
-
Kathleen O’Brien - implemented the floating point routines
-
Fred Ruckdeschel - guidelines for implementing the math library routines
-
Paul Krasno - implemented the transcendental math routines
2.1.1. Operating System 255 (1979-04)
The first known version of the OS is reported to have been produced in only a few thousand pieces. Dated April 1979, it was not destined for an official release, but it was apparently installed in the earliest NTSC 400/800 demo units and/or production machines.
[[TAPES] p.8]
The differences between this version and the later Rev. A lie in the timings of the tape routines. Specifically:
[[TAPES] pp. 8-9]
-
the mark leader during writing is 9.6 s long;
-
the leader ignored during reading is 2 s long;
-
the timeout for reading of the first record is 15 s long;
-
the timeout for writing of the first record is 15 s long.
These differences required the user to position the tape in a special way before loading or saving, as described in the "410 Insert" supplement for the Atari 410 Program Recorder,
[[INS410]]
and in an article in the December 1981 issue of SoftSide.
[[ZETT] p. 70]
Curiously, comments in the sources of the XL revisions of the OS do not mention this revision at all.
This revision’s ROM hasn’t been dumped - no machine with OS 255 has surfaced yet. Presence of this OS revision can be tested, by entering in BASIC:
PRINT PEEK(65528)
If the result is 255, then you have OS 255 built in.
If you have a unit with Operating System 255, please share your find on the AtariAge forums.
2.1.2. Rev. A (1979-06)
The first revision indended for public release, this version was included in NTSC Atari 400 and 800 machines produced before November 1981,
[[ANT1N4]]
and in all PAL 400/800 units. It is dated June 1979.
[tapes-8]
[[OSMAN] listing line 2]
[[OSSRCA] listing line 2]
Compared to the earlier OS 255 it had revised timings of the tape routines:
[tapes-8-9]
-
the mark leader during writing is 19.2 s long;
-
the leader ignored during reading is 9.6 s long;
-
the timeout for reading of the first record is 25 s long;
-
the timeout for writing of the first record is 35 s long.
The changes are dated 1979-05-30/31 in the sources.
[[OSSRCA] listing lines 3171, 3206, 3355]
From now on, the timings were left unchanged in all later revisions.
The earliest known copy of the source listing was included in the internal "Confidential Atari Preliminary" documents from 1979.
[[CIO]]
[[MONIT]]
Later, small parts of the source listing (the OS equates) were included in "Atari Personal Computer System Operating System User’s Manual", published by Atari, Inc. in November 1980.
[[OSMAN]]
The full source code (bar the character set and the FPP) was published in "Operating System Source Listing" by Atari, Inc. in August 1981.
[[OSSRCA]]
Rev. A existed in two variants, one for NTSC computers and one for PAL systems. The difference was in timing coefficients used in tape and keyboard auto-repeat routines.
[See occurences of PALFLG in ca65-src/800a.s.]
The OS ROM consists of three ROM chips:
-
C012499A (NTSC) or C015199 (PAL) - 4 KB, low OS
-
C014599A (NTSC) or C015299 (PAL) - 4 KB, high OS
-
C012399B - 2 KB, FPP
2.1.3. Rev. B (1981-09)
This version was included in NTSC Atari 400 and 800 machines manufactured since November 1981;
[ant1n4]
it was also available as an upgrade for machines produced before that date. It is dated September, presumably 1981.
[[OSSRCB] listing line 2]
Developed by Michael P. Mahar and Robert Scott Scheiman,
[[OSREV4] listing lines 20-22]
it "provide[s] a higher level of system performance by improving the operating system peripheral I/O control routines. OS version B eliminates annoying pauses in disk and printer operations that sometimes occurred with OS version A."
[ant1n4]
Source listing of this revision (again without the character set and the FPP) was published in "Operating System Source Listing" by Atari, Inc. in 1982,
[[OSSRCB]]
both separately and as part of "Atari Home Computer System Technical Reference Notes".
[[REFNOT]]
Although the source contains conditional code to assemble different versions of the OS for NTSC and PAL, it is generally believed that PAL Rev. B was never shipped. This assumption is based on the following facts:
-
No unit containing a PAL rev. B OS has surfaced yet. On the contrary, PAL rev. A ROM chips have been found with production dates of December 1982, and in machines produced as late as mid-1983 - long after NTSC rev. B introduction.
[[AAGE2] post #23 (photos currently offline)]
-
Atari’s 400/800 SALT 2.05 cartridge, which is dated 1982-02-03, does not recognize PAL rev. B, although it recognizes NTSC rev. B and both NTSC and PAL rev. A.
[[AAGE1] post #35]
However, a procedure for detection of OS revision, printed in the "Atari XL Addendum" supplement, takes PAL Rev. B into account, listing specific checksum values that could only be computed from an existing ROM binary file.
[[XLADD] p. 28]
This suggests that this revision was assembled at least once for the purpose of that publication.
The OS ROM consists of three ROM chips:
-
C012499B (NTSC) - 4 KB, low OS
-
C014599B (NTSC) - 4 KB, high OS
-
C012399B - 2 KB, FPP
2.2. Atari 1200XL
After Rev. B the OS underwent a major redesign as part of the Sweet 16 project. The new computer - ultimately marketed as the Atari 1200XL - and its OS were "designed for ease, simplicity and friendliness of setup and use, while offering both the power and sophistication of a home computer."
[[S16OS] p. 2]
The OS expanded into 16 KB of ROM space including the FPP. A certain area in the ROM was reserved to store OS ROM signature: Part number, Revision number, and Revision date.
[[XLADD] p. 26]
2.2.1. AA000000 Rev. 10 (1982-10-26)
This version was included in most if not all Atari 1200XL computers. It was also called "rev. A" by Atari
[[TT18A]]
and in the Best Electronics catalog.
It was developed by:
[[OSREV4] listing lines 24-27]
-
Harry B. Stewart - External Reference Specification
-
Lane Winner - ?
-
Robert Scott Scheiman - Handler Loader
-
Y. M. (Amy) Chen - Relocating Loader; International Character Set
-
Michael Wayne Colburn - Self Test
[[SLFTST]]
Compared to the previous version, it contained many enhancements and new features, such as:
-
Support for new Help and F1-F4 keys and console LEDs
-
Support for redefinition of key codes
-
New screen modes (Graphics 12..15)
-
International character set
-
Support for fine scrolling of the text screen
-
Enhancements to the disk communication routines
-
Support for automatic loading of device handlers from peripherals - new Poll commands and relocating loader
-
Memo Pad replaced with the rainbow Atari logo power-up display
-
Self Test, accessible either by pressing Help on the logo screen, or by shorting the J1 jumper on the mainboard
and more.
[[XLADD]]
Gone were the separate versions for NTSC and PAL - there was now a single universal binary that detected the TV system at runtime and adjusted the keyboard delays and tape timings accordingly.
[[XLADD] p. 25]
The Self Test contains an easter egg - when running All Tests, during the Keyboard Test the on-screen keyboard types out the developer’s name: "Michael Colburn".
Due to the multitude of differences, the new XL OS was not 100% compatible with the earlier versions. Software that made illegal calls to OS procedures ceased to function. To make that software work again, Atari later released The Translator disk (DX5063 NTSC version and FK100807 PAL version), which switched the built-in OS off and replaced it with a (slightly modified) 400/800 rev. B system.
The OS ROM consists of two ROM chips:
-
C060616A - 8 KB, low OS
-
C060617A - 8 KB, high OS
Some early production 1200XLs contained EPROM chips instead of proper mask ROMS.
[[TT18]]
2.2.2. AA000001 Rev. 11 (1982-12-23)
A later version for the Atari 1200XL computers, it was also called "rev. B" by Atari
[tt18a]
and in the Best Electronics catalog. In the Ape Warp+ OS 32-in-1 upgrade, it is mislabeled as "1200XL (REV 5)".
[[AAGE3] post #6]
As indicated by Tech Tip 18A of the Atari 1200XL Field Service Manual, this OS revision was installed in some 1200XLs while being repaired in authorized service centers. However it is not known whether it was also mounted in new 1200XL units. In any case, rev. 11 is quite rare - so far only two examples of a 1200XL with this OS version have been reported.
[[AAGE3] post #14]
[[AAGE4] post #3]
Rev. 11 was developed by Robert Scott Scheiman,
[[OSREV4] listing lines 29-31]
, and it fixed several problems of the previous revision with function of the Reset key.
[tt18a]
The order of routines was also changed, apparently to fit in a few unofficial OS vectors for better compatibility with programs designed for the 400/800 OS revisions. The most noticeable difference is in the power-up display - in rev. 11 an ® mark was added to the Atari logo.
The OS ROM consists of two ROM chips:
-
C060616B - 8 KB, low OS
-
C060617B - 8 KB, high OS
2.3. Atari 600XL and 800XL
The follow up models in the XL line, the 600XL and 800XL, contained two new features: the Parallel Bus Interface and built-in BASIC, and the OS was modified to support them.
2.3.1. BB000000 Rev. 1 (1983-03-11)
Commonly known as Rev. 1, this version was included in most Atari 600XL and early 800XL machines.
It was developed by Robert Scott Scheiman, Richard K. Nordin and Y. M. (Amy) Chen.
[[OSREV4] listing lines 33-35]
It removed the Atari logo screen and support for the now-absent J1 jumper; and added support for two new features of the 600XL and 800XL models: the Parallel Bus Interface and on-board BASIC; and some minor fixes.
The OS ROM consists of one ROM chip:
-
C062024 - 16 KB
2.3.2. BB000001 Rev. 2 (1983-05-10)
Commonly known as Rev. 2, this version was included in most of the Atari 800XL units, including all of the European 800XLF machines, and also in many 65XE/130XE computers. The 600XL parts list also contains this OS revision,
[[FS600] p. 5-5]
suggesting that later 600XL units also contained - or were meant to contain - rev. 2. There is one report of such unit.
[[AAGE5] post #4]
Developed by Robert Scott Scheiman, it contained several bugfixes; also, the source code was reedited - by renaming labels and adding comments - by Richard K. Nordin to "bring it closer to the coding standard".
[[OSREV4] listing lines 37-41]
Compared to rev. 1, the most visible differences are:
-
The Self Test easter egg was changed so that the keyboard now types out "Copyright1983Atari".
-
When hot-plugging a cartridge, the system hangs and waits for pressing Reset instead of rebooting immediately.
Source listing of this revision was published by Atari, Inc. in 1984.
[[XLADD]]
.
This version is by far the most popular, as it was built not only in most of the 800XLs, but also in many of the XE units. This seems strange as the later version BB000001 Rev. 3, dedicated for the 130XE, was ready before the 130XE shipped (indicated by the timestamp in the OS signature). It is however possible that the Tramiels decided to initially mount rev. 2 OS in the XEs in order to liquidate the remaining backstock of parts inherited from Atari, Inc. (which was a company known for greatly overstocking their components), and started installing rev. 3 only after the rev. 2 backstock has drained.
The OS ROM consists of one ROM chip:
-
C061598B - 16 KB
2.4. Atari 1450XLD and other prototypes
Apart from the 600XL and 800XL, Atari, Inc. also intended to market other, more sophisticated models in the XL line. These included the soon-to-be-abandoned 1400XL and the 1450XLD, development of which has continued until the company’s assets were sold to Jack Tramiel. The new machines would contain additional features connected internally via the PBI: a Votrax voice synthesizer, a 300 baud modem, and in the case of the 1450XLD, a disk controller.
[[VN1400]]
[[VN1450]]
Although there are 1400/1450 units reported that contain a standard BB000001 rev. 2 OS,
[[AAGE6] post #7]
there also exists a number of prototype OS revisions that both fixed bugs and improved support for PBI devices. None of them reached the market.
2.4.1. BB000002 Rev. 3 (1984-03-23)
The first in the line of OS revisions for the 1450XLD. A copy of the ROM image was distributed on the "PoolDisk Too" CD,
[[OFFENG]]
[[PLDSK2] CD2 directory TEXT/1450]
as a file named 1540OS3.v0, but it can also be found on the Internet with the name 1450R3V0.ROM. It apparently comes from a surviving 1450XLD motherboard.
It is a preliminary version of BB000002 Rev. 3 (1984-03-27). It never reached the market.
It was developed by Richard K. Nordin and contains several bugfixes:
Fix MAXDEV, problems resulting from CRASS65 version,
initial address for RAM sizing, "Boot Error" message,
initial address for cartridge equivalence checksum,
mishandling of SIO NAK, initializing of CHKSUM, (…)
[[OSREV4] listing lines 43-49]
The most visible differences between this and rev. 2 are:
-
The "Boot Error" message is now spelled out in lower case.
-
The Self Test easter egg’s year was changed - the keyboard now types out "Copyright1984Atari".
2.4.2. BB000002 Rev. 3 (1984-03-27)
Named simply "Revision 3" in the source comments, this revision was intended for the 600XL/800XL/1450XLD computers,
[[OSREV4] listing line 43]
but it didn’t reach the market either. It was dumped by Karl Heller from a prototype 1400XL/1450XLD mainboard he owns, from a ROM chip labelled "OS REV3 VER2 4/16".
[[AAGE7] post #61]
It was developed by Richard K. Nordin and, compared to BB000002 Rev. 3 (1984-03-23), contains one additional bugfix:
Fix (…) initialization of PORTB.
[osrev4-43-49]
2.4.3. BB000002 Rev. 3 (1984-02-22)
Called "Revision 3, Version 2" in the source comments;
[[OSREV4] listing line 51]
the date given there is, quite mysteriously, earlier than that of the original Rev. 3.
[[OSREV4] listing line 62]
This was a further enhancement for the 600XL/800XL/1450XLD computers, which also never reached the market. It was developed by Olivia Ying-Tzu Jang and Vincent H. Wu, and mainly included enhancements for the PBI routines, probably to support the 1450XLD’s built-in modem, voice synthesis and disk drive:
Dedicate PDVI ($D1FF) to external parallel device IRQ status
Dedicate IPDVI ($D1CF) to internal parallel device IRQ status
Using PDIMSK ($0249) for external parallel device IRQ selection mask
Using IPDIMK ($0254) for internal parallel device IRQ selection mask
After masking (PDVI, PDIMSK) & (IPDVI, IPDIMK), OR the result
together, piror to processing parallel device IRQ
On cold start, initialize PDVI = 0, to avoid potential
checksum error.
[[OSREV4] listing lines 51-62]
No machine with this OS version has been found yet.
2.4.4. BB000002 Rev. 3 (1984-06-08)
Called "Revision 3, Version 3" in the source comments.
[[OSREV4] listing line 64]
This is another OS enhancement for the 600XL/800XL/1450XLD, which was never marketed. Developed by Michael Barall, it included the following changes:
Dedicate the 11 bytes at ACMVAR ($3ED-$3F7) for use as
a RESET routine area. On warmstart, the OS will JSR
to ACMVAR immediately after initializing hardware.
[[OSREV4] listing lines 64-69]
No machine with this OS version has been found yet.
2.4.5. BB000002 Rev. 3 (1984-06-21)
Called "Revision 3, Version 4" in the source comments.
[[OSREV4] listing line 71]
This is yet another revision for the 600XL/800XL/1450XLD that didn’t reach the market. Its source is apparently Nir Dary,
[offeng]
and it can be found on the Internet under the filename 1450R3VX.ROM. It was apparently found in a surviving 1450XLD machine.
It was developed by Michael Barall and contained the following update:
Make CIO accept device number 0 (like Rev B did).
[[OSREV4] listing lines 71-74]
2.4.6. Rev. 4 (unknown signature) (1984-07-16)
Called "Revision 4, Version 0" in the source comments.
[[OSREV4] listing line 76]
Another revision for the 600XL/800XL/1450XLD that did not go to production, it is the first one dated after Jack Tramiel bought the Consumer division of Atari, Inc. from Warner on 1 July 1984. It was developed by Michael Barall and contained the following changes:
Add support for SIO fast mode (38400 baud).
Add resident Help Text Viewer.
Remove Peripheral Handler Loading Facility.
[[OSREV4] listing lines 76-81]
No machine with this OS version has been found yet.
2.4.7. CC000001 Rev. 4 (1984-09-06)
Called "Revision 5, Version 0" and dated 1984-09-04 in the source comments, it was designed for the 800XL/800XLF/900XLF/900XLFK models.
[[OSREV4] listing line 83]
It is the last known version in the prototype branch of the OS. It was developed by Michael Barall and Vincent H. Wu, and contained the following changes:
Revert to Rev. B device handlers (E:, C:, P:, S:, K:),
(with bug fixes) to eliminate need for Translator.
Remove parallel I/O support.
Fix keyboard display in self-test.
[[OSREV4] listing lines 83-89]
Although the device handlers were reverted to 400/800 rev. B, the new XL features (such as graphics modes 12-15 and adjustable key repeat rates) are patched in so they are still available.
Compared to the previous revision, the most visible difference is the rearranged layout of keys in the Keyboard Test - the F1-F4 keys have been removed, and the Inverse Video and Break keys have been moved to their proper locations as on the 800XL’s keyboard.
The source files for this revision were published by Curt Vendel in 2005.
[[AAGE8] post #10]
No machine with this OS version has been found yet.
2.5. Atari 65XE, 130XE and XEGS
On 1 July 1984, Jack Tramiel’s company Tramel Technologies (soon to be known as Atari Corporation) bought the assets of the Consumer division of Atari, Inc. from Warner Communications. The new owners chose to discard all improvements from the prototype OS revisions starting with BB000002 Rev. 3, and to still use the BB000001 rev. 2 in the newly-introduced computer models, ie. the 65XE and the 130XE. All further OS versions evolved from this revision instead.
2.5.1. BB000001 Rev. 3 (1985-03-01)
This version was included in later 65XE and 130XE computers, and also in (probably) all 800XE units. It reached the market quite late, possibly even after the XEGS shipped (which had rev. 4 built in), when Atari Corp. started moving its focus, and production volume, to the European (especially Eastern) market instead of the dwindling U.S. one. As a result this OS revision is more common in PAL systems than in NTSC ones.
Compared to BB000001 rev. 2, this OS version contains a bugfix in CHKSUM initialization (previously fixed in the prototype BB000002 Rev. 3 (1984-03-23)), and the following changes in Self Test:
-
Memory Test: support for the additional 130XE memory, and shortening of the delay loops so that the test performs faster. (Interestingly, the XE memory test is broken, as it tests only 2 banks out of 4.
[[AAGE9] posts #10, #17, #8, #19]
) -
Keyboard Test: keyboard layout updated to reflect the XE keyboard (F1-F4 keys removed, Inverse Video and Break moved to proper locations), easter egg changed so that the keyboard now types out "Copyright1985Atari".
-
Audio-Visual Test rewritten to take less space.
The OS ROM consists of one ROM chip:
-
C300717 - 16 KB
2.5.2. BB000001 Rev. 4 (1987-05-07)
This version was built in all Atari XE Game System units. It was based on BB000001 Rev. 3 and contains the following changes:
-
Support for detachable keyboard.
-
Support for the on-board game.
-
Tape loading/saving can be now started by pressing Start in addition to a key on the keyboard - so programs can be loaded with keyboard being detached.
The OS ROM consists of one ROM chip, which also contains Atari BASIC rev. C and the Missile Command game (slightly modified from the original 1981 cartridge version, to fix direct 400/800 OS calls that prevented the level select function from working
[[AAGE10] post #9]
):
-
C101687 - 32 KB
2.5.3. BB000001 Rev. 59 (1987-07-21)
Sometimes called rev. 3B (59 dec = 3B hex), this version was included in earlier Arabic 65XE units, sold under the brand "Najm" in several Arabic countries.
It was based on BB000001 Rev. 3 and contains the following changes:
-
Added Arabic character set in place of the Original character set; the original set was moved to the location of the International set, which in turn was removed.
-
Support for right-to-left text entry in the Arabic language in the screen editor, when switching to lowercase with Caps.
The OS ROM consists of one ROM chip:
2.5.4. BB000001 Rev. 59 (1988)
Also sometimes called rev. 3B (59 dec = 3B hex), this version was included in later Arabic 65XE units; most of them are PAL,
[[AAGE11] post #14]
[[AAGE7] posts #66$#44; #68]
which is expected considering that all Arabic countries used the PAL system, but there also exists one known NTSC unit, bought by Kevin Savetz in 1999.
[[SAVETZ]]
Compared to the previous rev. 59, it contains more enhancements in the screen editor, including switching between character sets with Shift+Help and moving the screen contents between left-to-right and right-to-left layouts with Control+Caps.
The OS ROM consists of one ROM chip:
-
C101700-002C (C) ATARI 1988 - 16 KB
[aage7-68]
[[AAGE12] post #7]
In all known cases the part number and production year are printed on a label sticked onto the chip, which is a 27128 EPROM - the label covers its window. This points to the 1988 production date, and also suggests the number of units produced was too small to warrant manufacturing of proper mask ROMs. Confusingly, the part number on the label, as well as the OS revision number and date stored in the ROM signature, are identical to the earlier Arabic revision.
3. Contents of this archive
Here are the details of the archive’s contents:
3.1. original/
This directory contains digitized versions of all known source listings published by Atari, with all formatting, omissions and printing errors fully preserved.
Credits go to Bruce Tomlin, who OCR-ed the 400/800 OS source listing
[[AAGE8] post #1]
- much of this archive is based on his work.
- 800a-preliminary/
-
This directory contains the source listing of the 400/800 OS rev. A NTSC, from the printout included in the internal "Confidential Atari Preliminary" documents from Nov. 1979.
[cio]
[monit]
The printout omits the character set and the floating point package, and has no conditional code to build the PAL version.The printout has page breaks in multiple locations, but unlike the later printed source listings, it does not contain visible assembler directives such as page breaks. To mark page breaks in the source files, the ASCII Form Feed character (0x0C) has been inserted instead. (This is consistent with the source file for XL OS CC000001 rev. 4, which contains parts of Rev. B source code and indeed uses the Form Feed character for page breaks - see original/cc1r4/OS.ASM.)
The printout is missing a few lines due to bad quality of the photocopy. All missing parts are marked in the source files with comments enclosed between << and >>.
The directory contains source code split into multiple files, according to occurrences of "SYMBOL TABLE" sections in the printout. File names were taken from source code comments. Originally the source code resided in multiple files - notably, several labels (e.g. CASSET, CRNTPC) are defined multiple times with different values in the source listing, which would be erroneous inside a single source file.
Compared to the manufactured rev. A ROM, this source listing is modified for debugging purposes: WARMSV and COLDSV vectors point to page $90 (search for "HANDLE RAM VECTOR WRITING" in MONITP.SRC).
- 800a-equates.asm
-
This file contains the 400/800 OS rev. A equates, originally published in print by Atari in Nov. 1980.
[osman]
This printout is truncated to 72 columns.The printout contains visible assembler directives e.g. for page breaks, so they are incorporated into the source file.
Compared to 800a-preliminary, the listing features an additional intro on page one, and has VCTABL commented out. Otherwise, it differs only in formatting,
Notably, all occurrences of the word "Colleen" are pasted over with "Atari 400/800"; font difference indicates it was done by physical cut-&-paste, not in the original source file. This change was not incorporated into the file.
- 800-fpp.asm
-
This is the source listing of the Atari 400/800 floating point package, extracted (together with all necessary system equates) from the Atari BASIC Source Book.
[[WLKSN2] pp. 246-272]
The code was originally written in IMP-16 assembler that was modified to accept some additional syntax,
[wlksn2-ix]
remnants of which are mnemonics such as ASLA and LSRA. For the book, the source code has been edited (apparently into MAC/65 syntax) and reformatted by Mike Peters,
[[WLKSN2] p. vii]
with the aforementioned mnemonics being defined as macros.
[[WLKSN2] p. 273]
The listing in the book has width of about 60 columns. Any longer text is wrapped into the next line. In many places, comment lines have been printed with a different font to stand out more. In one place, label "FNZERO" is mistyped as "FNZER0".
- 800a.asm
-
This is the source listing of the 400/800 OS rev. A NTSC, originally published in print by Atari in Aug. 1981.
[ossrca]
The listing omits the character set and the floating point package, and has no conditional code to build the PAL version. The printout is truncated to 72 columns.The printout contains visible assembler directives e.g. ".PAGE" for page breaks, so they are incorporated into the source file. A few page breaks, however, occur without a .PAGE directive. To mark such page breaks in the source file, the ASCII Form Feed character (0x0C) has been inserted instead. (This is consistent with the sources for XL OS CC000001 rev. 4, which contain parts of Rev. B source code and indeed use the Form Feed character for page breaks - see cc1r4/OS.ASM.)
Compared to 800-preliminary/, the code has been joined into a single file, with duplicate labels renamed where necessary. As the page one intro text indicates, the listing has been modified for compatibility with the Microtec cross-assembler, resulting in overall changes in formatting. The debugging changes in WARMSV and COLDSV were removed, and several unused labels were removed or commented out. Some typos in comments were fixed, some new ones were introduced.
Locations $E40F, $E41F, and $FFF8-$FFF9, used for storing ROM checksums, are filled with correct values here, while they were zeroed in 800a-preliminary/.
- 800b.asm
-
This is the source listing of the 400/800 OS rev. B, originally published in print by Atari in 1982.
[ossrcb]
The printout omits the character set and the floating point package, and is truncated to 72 columns.Curiously, most comment typos that were fixed in the Aug. 1981 rev. A listing (800a.asm), are coming back in this listing.
- bb1r2.asm
-
This is the source listing of the XL OS BB000001 rev. 2, originally published in print by Atari in 1984.
[xladd]
The printout contains only first 60 columns of the original source file. - cc1r4/
-
This directory contians the source listing of the XL OS CC000001 rev. 4 - a verbatim copy of files originally released publicly by Curt Vendel.
[aage8-10]
3.2. restored/
This directory contains recreations of source files for all known OS revisions. As much as possible, these files incorporate all of the structure and comments found in the original source listings published by Atari.
- 800a-preliminary/
-
This directory contains a fixed version of the Nov. 1979 400/800 OS rev. A source listing. Based on original/800a-preliminary/, all missing lines were restored from the 800a.asm listing.
- 800a-equates.asm
-
This is a fixed version of the Nov. 1980 400/800 OS rev. A equates. Truncated text in original/800a-equates.asm was restored from 800a-preliminary/.
- 800-fpp.asm
-
This is a fixed version of the 400/800 floating point package sources. Based on original/800-fpp.asm, it is an attempt at restoring the original shape of the source listing before it was formatted for printing in the book. All long lines that were wrapped in the book, have been unbroken; and all lines originally printed in a different font have been changed back into source comments and .PAGE directives. When applying these changes, cues for formatting hav been taken from the source code of BASIC XE,
[[BXESRC]]
the direct descendant of Atari BASIC. - 800a.asm
-
This is a fixed version of the Aug. 1981 400/800 OS rev. A source listing. It is based on original/800a.asm, with truncated text restored from 800a-preliminary/.
- 800b.asm
-
This is a fixed version of the 1982 400/800 OS rev. B source listing. It is based on original/800b.asm, with truncated parts restored from 800a-preliminary/ and from CC000001 rev. 4 sources (which contain Rev. B device handlers).
- bb1r2.asm
-
This is a fixed version of the 1984 XL OS BB000001 rev. 2 source listing. It is based on original/bb1r2.asm, with truncated text restored (where possible) from the CC000001 rev. 4 source.
- bb0r1.asm
-
This is a restoration of the source listing for XL OS BB000000 rev. 1. It was created by comparing ROM binaries of BB000001 rev. 2 and BB000000 rev. 1, and applying the differences to rev. 2 sources from bb1r2.asm.
- aa1r11.asm
-
This is a restoration of the source listing for XL OS AA000001 rev. 11. It was created by comparing ROM binaries of BB000000 rev. 1 and AA000001 rev. 11, and applying the differences to rev. 1 sources from bb0r1.asm. Source of the rainbow boot screen is based in part on the sources published by Curt Vendel at [RAINBW] (Curt’s sources are of a later revision of the screen, never included in any OS revision).
- aa0r10.asm
-
This is a restoration of the source listing for XL OS AA000000 rev. 10. It was created by comparing ROM binaries of AA000001 rev. 11 and AA000000 rev. 10, and applying the differences to rev. 11 sources from aa1r11.asm.
- bb2r3-1984-03-23.asm
-
This is a restoration of the source listing for XL OS BB000002 rev. 3 (1984-03-23). It was created by comparing ROM binaries of BB000001 rev. 2 and BB000002 rev. 3, applying the differences to rev. 2 sources from bb1r2.asm, and adding any relevant comments from cc1r4/OS.ASM.
- bb2r3-1984-03-27.asm
-
This is a restoration of the source listing for XL OS BB000002 rev. 3 (1984-03-27). It was created by comparing ROM binaries of BB000002 rev. 3 (1984-03-23) and BB000002 rev. 3 (1984-03-17), applying the differences to rev. 3 sources from bb2r3-1984-03-23.asm, and adding any relevant comments from cc1r4/OS.ASM.
- bb2r3v4.asm
-
This is a restoration of the source listing for XL OS BB000002 rev. 3 ver. 4. It was created by comparing ROM binaries of BB000002 rev. 3 and BB000002 rev. 3 ver. 4, applying the differences to rev. 3 sources from bb2r3.asm, and adding any relevant comments from cc1r4/OS.ASM.
- bb1r3.asm
-
This is a restoration of the source listing for XL OS BB000001 rev. 3. It was created by comparing ROM binaries of BB000001 rev. 2 and BB000001 rev. 3, and applying the differences to rev. 2 sources from bb1r2.asm.
- bb1r4.asm
-
This is a restoration of the source listing for XL OS BB000001 rev. 4. It was created by comparing ROM binaries of BB000001 rev. 3 and BB000001 rev. 4, and applying the differences to rev. 3 sources from bb1r3.asm.
- bb1r59-1987.asm
-
This is a restoration of the source listing for XL OS BB000001 rev. 59 (1987-07-21). It was created by comparing ROM binaries of BB000001 rev. 3 and BB000001 rev. 59 (1987-07-21), and applying the differences to rev. 3 sources from bb1r3.asm.
New source code in this revision has not yet been fully understood and commented.
- bb1r59-1988.asm
-
This is a restoration of the source listing for XL OS BB000001 rev. 59 (1988). It was created by comparing ROM binaries of BB000001 rev. 59 (1987-07-21) and BB000001 rev. 59 (1988), and applying the differences to rev. 59 sources from bb1r59-1987.asm.
New source code in this revision has not yet been fully understood and commented.
3.3. ca65-src/
This directory contains the same source files as in original/ or restored/, but with syntax modified to allow assembling with ca65. The included Makefile allows to create binaries of all ROM revisions at once, by typing
make
In order to make it work, you will need:
-
a Make utility compatible with GNU Make,
-
the CC65 package,
-
a C compiler such as GNU GCC.
4. To do
-
Add source code comments to the additions specific to both rev. 59 OS-es.
5. References
-
[INS410] 410 Insert - Operating System 255. C015351 REV. A. Atari, Inc. <http://mcurrent.name/os255/410insert-os255.htm>
-
[AAGE5] "600XL variant I’ve never seen before". AtariAge. 2012-03-02. <http://atariage.com/forums/topic/194837-600xl-variant-ive-never-seen-before/>
-
[AAGE11] "65XE Proto sold on eBay". AtariAge. 2003-01-05. <http://atariage.com/forums/topic/18699-65xe-proto-sold-on-ebay/>
-
[TAPES] All About Cassette Tapes. Atari, Inc., 1979-11-17. <http://atariage.com/forums/index.php?app=core&module=attach§ion=attach&attach_id=264951>, via <http://atariage.com/forums/topic/204930-some-early-atari-a8-development-docs/?p=2633060>
-
[AAGE3] "anyone have a 1200XL with rev 11 OS?" AtariAge. 2012-08-04. <http://atariage.com/forums/topic/201076-anyone-have-a-1200xl-with-rev-11-os/>
-
[AAGE2] "Atari 400/800 OS B PAL - The real McCoy". AtariAge. 2013-10-18. <http://atariage.com/forums/topic/217772-atari-400800-os-b-pal-the-real-mccoy/>
-
[FS600] "Atari 600XL Computer Field Service Manual". FD100610 Rev.1. Atari, Inc. 1983-10.
-
[AAGE12] "Atari 65XE Arabic". AtariAge. 2017-09-15. <http://atariage.com/forums/topic/215997-atari-65xe-arabic/>
-
[XLADD] Atari Home Computer System Operating System Manual - XL Addendum. Atari, Inc. 1984. <http://mixinc.net/atari/books/XL-OS_Full_Searchable.pdf>, via <http://mixinc.net/atari/books/>
-
[REFNOT] Atari Home Computer System Technical Reference Notes. C016555 Rev. A. Atari, Inc., 1982. <http://www.atarimania.com/documents/atari-800-technical-reference-notes.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-technical-documents_3_8.html>
-
[OSMAN] Atari Personal Computer System Operating System User’s Manual. C016555. Atari, Inc., 1980-11. <https://archive.org/details/AtariOperatingSystemUsersManualNovember1980>
-
[AAGE1] "Atari Rev B PAL Rom file". AtariAge. 2009-03-30. <http://atariage.com/forums/topic/141632-atari-rev-b-pal-rom-file/>
-
[AAGE9] "Atari XL and XE Kernel OS ROMs". AtariAge. 2015-06-03. <http://atariage.com/forums/topic/239011-atari-xl-and-xe-kernel-os-roms/>
-
[BXESRC] Lawrow, Stephen D. "BASIC XE 4.2 sources". Optimized Systems Software, Inc.. 1985-05-16. <https://atariwiki.org/wiki/Wiki.jsp?page=Basic%20XE>
-
[SLFTST] Colburn, Mike. Sweet 16 Operating System External Reference Specification Supplement 1 - Self Test. Atari, Inc., 1982-12-01. <http://www.atarimuseum.com/ahs_archives/archives/pdf/computers/8bits/1200XL/sweet-16_OS-supplement-1_Self-Test.pdf>, via <http://www.atarimuseum.com/computers/8BITS/1200xl/1200xl.html>
-
[MONIT] Confidential Atari Preliminary 2 of 10 - Monitor. Atari, Inc., 1979-03-09. <http://www.atarimania.com/documents/Monitor.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-internal-documents_4_8.html>
-
[CIO] Confidential Atari Preliminary 5 of 10 - CIO. Atari, Inc., 1979-11-13. <http://www.atarimania.com/documents/CIO.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-internal-documents_4_8.html>
-
[CURRNT] Current, Michael. "7.1.1) What is the Atari Operating System?". Atari 8-Bit Computers: Frequently Asked Questions. Homepage. 2018-01-24. <ftp://rtfm.mit.edu/pub/faqs/atari-8-bit/faq>, via <http://mcurrent.name/>
-
[DELSRT] Delsarte, Laurent. "The Atari 65XE, najm اتارى نجم Star Arabic PAL Version". Homepage. 2010. <http://www.atari800xl.eu/hardware/computers/star-arabic-atari-65xe.html>
-
[AAGE6] "Garage Sale 1400XL OS and Handlers Dumped". AtariAge. 2018-09-13. <http://atariage.com/forums/topic/282916-garage-sale-1400xl-os-and-handlers-dumped/>
-
[OBRIEN] Kindig, Randy, Kevin Savetz and Brad Arnold. "Interview 22 - Kathleen O’Brien, OSS". ANTIC The Atari 8-bit Podcast. 2015-03-13: 01m43s-02m02s. <http://ataripodcast.libsyn.com/antic-interview-21-the-atari-8-bit-podcast-kathleen-obrien-oss>
-
"Missile Command and Bug Hunt for the XEGS-opinions/reviews?…". AtaraiAge. 2009-10-06. <http://atariage.com/forums/topic/151745-missile-command-and-bug-hunt-for-the-xegs-opinionsreviews/>
-
[OFFENG] Offenga, Freddy. "Atari 8-bit Operating Systems - Version 3.6". Pigwa. 2009-05-05. <http://www.ataripreservation.org/websites/freddy.offenga/osromv36.zip>, via <http://www.ataripreservation.org/websites/freddy.offenga/atari_dev.htm>
-
[OSSRCA] Operating System Source Listing. Rev. A C017893. Atari, Inc., 1981-08. <http://www.atarimania.com/documents/Atari%20400-800%20Operating%20System%20Source%20Listing%20Rev.%20A.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-technical-documents_3_8.html>
-
[OSSRCB] Operating System Source Listing. Rev. B. Atari, Inc., 1982. <http://chimera2010.com/atari-400800-operating-system-source-listing/> , or: <http://www.atarimania.com/documents/atari-400-800-operating-system-source-listing.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-technical-documents_3_8.html>
-
[OSREV4] Operating System v. CC000001 Rev. 4. Atari Corp., 1984-09-06. <http://atariage.com/forums/index.php?app=core&module=attach§ion=attach&attach_id=43583>, via <http://atariage.com/forums/topic/78579-a800ossrc/?p=961535>
-
[AAGE7] "OS source code - all revisions". AtariAge. 2015-06-03. <http://atariage.com/forums/topic/201133-os-source-code-all-revisions/>
-
[PALEVC] Palevich, John H. "Shoot." Compute! 16 1981-09: 86-95. <https://archive.org/details/1981-09-compute-magazine>
-
[PLDSK2] "PoolDisk Too". 1998-10-24. <http://ftp.pigwa.net/stuff/collections/PoolDisk%20Too/>
-
[SAVETZ] Savetz, Kevin. "Atari 65XE Arabic version." Homepage. 2003-11-19. <http://www.savetz.com/vintagecomputers/arabic65xe/>
-
[STAWO] Staworzyński, Arkadiusz. "Atari Allacha". AtariOnline.pl. <http://atarionline.pl/v01/index.php?subaction=showfull&id=1184283958&archive=&start_from=20&ucat=6&ct=wynalazki>
-
[S16OS] Stewart, Harry B. Sweet 16 Operating System External Reference Specification. Rev. 2. Atari, Inc., 1982-09-20. <http://www.atarimuseum.com/ahs_archives/archives/pdf/computers/8bits/1200XL/sweet-16_OS.pdf>, via <http://www.atarimuseum.com/computers/8BITS/1200xl/1200xl.html>
-
[TT18] "Tech Tip 18". 1983-07-12. In: Atari 1200XL Home Computer Field Service Manual. FD100217 Rev.01. Atari, Inc., 1983-02. <http://www.atarimania.com/documents/Atari_1200_XL_Home_Computer_Field_Service_Manual_Rev01.pdf>, via <http://www.atarimania.com/documents-atari-400-800-xl-xe-technical-documents_3_8.html>
-
[TT18A] "Tech Tip 18A". 1983-09-23. In: 1200XL Home Computer Field Service Manual. FD100217 Rev.01. Atari, Inc., 1983. <http://atariage.com/forums/index.php?app=core&module=attach§ion=attach&attach_id=218379>, via <http://atariage.com/forums/topic/179599-1200xl-field-service-manual/?p=2371406>
-
[AAGE8] "a800src". AtariAge. 2005-11-02. <http://atariage.com/forums/topic/78579-a800ossrc/>
-
[ANT1N4] "Upgrades Available." Antic vol. 1 no. 4 1982-10: p. 15. <https://archive.org/details/1982-10-anticmagazine>
-
[VN1400] Vendel, Curt. "The Atari 1400XL Computer System". AtariMuseum.com. <http://www.atarimuseum.com/computers/8bits/xl/1400xl/1400.html>
-
[VN1450] Vendel, Curt. "The Atari 1450XL Personal Computer System". AtariMuseum.com. <http://www.atarimuseum.com/computers/8bits/xl/1450xld/1450xld.html>
-
[AAGE4] "Was OS version 5 used in anything?" AtariAge. 2008-07-17. <http://atariage.com/forums/topic/128885-was-os-version-5-used-in-anything/>
-
[WLKSN1] Wilkinson, Bill. "Introduction: Being a History of Two Births: "Coleen" and "Candy"". Inside Atari DOS. ISBN 0-942386-02-7. Compute! Publications, 1982. <https://archive.org/details/Inside_Atari_DOS>
-
[WLKSN2] Wilkinson, Bill, Kathleen O’Brien and Paul Laughton. The Atari BASIC Source Book. ISBN 0-942386-15-9. Compute! Publications, 1983. <https://archive.org/details/ataribooks-the-atari-basic-source-book>
-
[RAINBW] XL1200 PLUS RAINBOW LOGO. Atari, Inc., 1983-03-21. <http://atariage.com/forums/index.php?app=core&module=attach§ion=attach&attach_id=127493>, via <http://atariage.com/forums/topic/142229-rotating-fuji-boot-up-screen/?p=1726017>
-
[ZETT] Zett, Alan J. "POKE Your Atari. Part II: The Atari Cassette". SoftSide 1981-12. <http://mcurrent.name/os255/softside.htm>