• Atari 8-Bit Computers: Frequently Asked Questions (17/29)

    From Michael Current@21:1/5 to Marc G. Frank on Mon Apr 8 21:54:58 2019
    [continued from previous message]

    - 80 column text mode using a Graphics 8 screen

    XOS/Ultimon!, by Computer Support, 1985
    - 600XL/800XL and 130XE separate versions
    - XL OS modified to be highly compatible with the 400/800 OS, plus 820 baud
    cassette saves
    - Machine code monitor/disassembler, mini-DOS, disk sector editor http://ultimon.com/

    XOS/Fix, by Computer Support, 1985
    - 400/800 OS translator in ROM

    Superchip / Super-Chip, by Computer Support, 1986
    - 600XL/800XL and 130XE separate versions
    - XL OS with fast floating point math routines ?????

    Ultra Speed OS, by Computer Software Services (CSS), 1986
    - Universal support for high speed read/write with upgraded disk drives
    including Klone/Happy, Duplicator, and US Doubler
    - Numerous other OS enhancements
    - Chip shipped with piggyback socket and switch for hardware toggle between
    Ultra Speed OS and standard Atari XL OS

    Omniview 256, by CDY Consulting, 1986
    - Omniview XL/XE (see OmniviewXL above) with added 192KiB RAMdisk
    - Marketed for use with 800XL with Newell Industries 256KXL upgrade

    16K-Bibomon, by Erwin Reuss for Compy-Shop, 1986
    - Add on board includes:
    - Bibomon 16K machine language monitor ROM
    (occupies 4KiB address space at $C000)
    - Oldrunner 400/800 OS ROM chip
    - Socket for standard XL OS ROM chip
    - Hardware clock
    - Centronics compatible printer port
    - Hardcopy Routine: Epson FX-80 and Okidata Microline compatible
    - mini-DOS: DOS 2.5 and OSS DOS XL compatible, plus Speedy 1050 high speed
    - Hardware switches used to select between XL OS / Oldrunner, between
    BASIC On / BASIC Off under Oldrunner, and between Bibomon or
    International character set under Oldrunner

    Qmeg-OS, by Stefan Dorndorf, 1987
    - "Quarter-Mega OS" - intended for machines with minimum 256KiB RAM
    - Highly compatible with standard XL OS
    - Removed: PBI/ECI support, Self Test, International character set
    - Adds monitor OS, mini DOS, machine language monitor with disassembler
    - 130XE-type RAMdisks, configured as two standard single density disks,
    two enhanced density disks, or one standard double density disk
    - Universal high speed SIO support for Happy 1050, Speedy 1050, 1050 Turbo
    - P2: and P3: Epson printer drivers
    - Internal Centronics parallel printer interface support (at $D6xx)
    - Must be attached directly to PIA

    Expander, by Syngery Concepts, 1987
    - XL OS with added Executive Program for managing up to four RAMdisks of up to
    512KiB; boot from any RAMdisk or any floppy disk drive; built-in mini-DOS

    Ultra Speed Plus! Operating System Package, CSS, 1988
    - Module replaces OS ROM chip, with several lines soldered to points on
    the motherboard as well. Three operating systems, switch-selectable:
    - Standard Atari XL OS
    - XL-Fix Plus
    - 400/800 OS translator, with enhancements
    - Mach-Ten binary file loader, with Mach Menu writer
    - Ultra Speed Plus (US+)
    - Universal support for high speed read/write with upgraded disk drives
    including Super Archiver, Happy, US Doubler, Duplicator, Klone, Density
    Doubler, and XF551
    - RAMdisk handler can emulate single or double density floppy disks, and
    supports 128KiB to 2MiB XE-type upgrades. Can boot from RAMdisk.
    - Fastchip floating point routines
    - Comprehensive memory test routine pinpoints defective RAM chips

    Turbo-OS, by DataQue Software (Chuck Steinman), 1989
    - Shipped with DataQue Software Turbo-816 65C816 board (both 600XL/800XL/65XE/
    130XE and 1200XL versions)
    - Compatible with software that uses the published, legal entry points into
    the Atari XL OS and legal RAM locations
    - Recommended to install both the Atari XL OS and the Turbo-OS ROMs, and a
    toggle switch used to select which is active ("Dual Prom" Option).

    TurBoss, by Integrated Logic Systems (ILS), 1990
    - Enhances the screen display list speed in Graphics Mode 0
    - Charles Marslett's high speed math routine (Fastchip)
    - D.E.Mon real-time monitor built in
    - Chip contains standard Atari XL OS as well, hardware switch selectable http://www.realdos.net/prodturboss.html

    25K Bibomon, by Klaus Peters / Elektronik und Software, 1992
    - Add-on board is marked: Supermon V1.1
    - Single chip includes two operating systems: Old OS (Oldrunner?) and XL OS
    - Board also includes Bibomon machine language monitor and optional
    Bibo-Assembler
    - Board includes socket for second XL/XE OS chip
    - Firmware allows software control of combinations of OS (Old OS / XL OS /
    Optional OS), with choices of international character set, Bibomon with
    Bibomon DOS, Bibo-Assembler, and internal BASIC enabled
    - Universal Speedy 1050 high speed support

    APE Warp+ OS, by Atarimax (Steven J. Tucker), 1996
    - Universal high speed SIO (3x), US Doubler emulation, other enhancements
    - Shipped 1996-2005 as part of APE Warp+ Quad OS Upgrade Module, containing
    APE Warp+ OS, standard XL OS, a public domain Atari 800 compatible OS,
    and standard XL OS with Reverse BASIC
    - Includes chip and 2 toggle switches
    - Beginning 2005 shipped as part of APE Warp+ 32-in-1 OS Upgrade Module
    - Module replaces OS ROM chip, with 3 other connections necessary
    - OS Selection Menu in ROM

    QMEG+OS 4.04, by Stefan Dorndorf, 1997
    - "Quarter-Mega Plus OS" - intended for machines with minimum 256KiB RAM
    - Can be installed in 64KiB or 128KiB computers (no RAMdisks supported)
    - Highly compatible with standard XL OS
    - Removed: Self Test, International character set, full cassette support
    - Adds monitor OS, mini DOS, machine language monitor with disassembler and
    disk sector editor, Freezer
    - Full support for large Bibo-DOS, Turbo-DOS, and MYDOS floppy disks, and
    MYDOS subdirectories
    - RAMdisk for 130XE, Atari magazine 256KiB, Copy-Shop 256KiB, and Newell 1MiB;
    RAMdisks configured as two standard single density disks, two enhanced
    density disks, or one standard double density disk
    - Universal high speed SIO support for Happy 1050, Speedy 1050, 1050 Turbo,
    XF551. Drive types automatically detected.

    MyBIOS ROM versions, by Sijmen Schouten (Mr. Atari), 2002-
    - ROM versions are a complete replacement OS for the computer
    - "The most compatible Atari XL/XE + 400/800 Operating system known"
    - For all types of MyIDE interface
    - 'E' version for external MyIDE; 'I' version for internal MyIDE http://www.mr-atari.com/myidehome.htm

    65C816 XL OS (DracOS), by Konrad M. Kokoszkiewicz, 2004-
    Top project goals:
    - Make possible to use the 65C816 native mode on Atari XL/XE computers without
    problems and with interrupts enabled.
    - Make the memory mapped at extra addresses ($010000-$FFFFFF) accessible and
    usable for programs.
    - Provide some more extra services related to the 65C816 such as new interrupt
    vectors, basic memory management routines etc.
    - Develop new system of entry points: current mechanism of making ROM calls is
    difficult to use, when the code resides above the address $FFFF. http://drac030.krap.pl/en-specyfikacja.php

    ------------------------------

    Subject: 7.1.3) What is the ATASCII (Atari ASCII) encoding standard?

    ASCII is an acronym for the American Standard Code for Information
    Interchange. Pronounced ask-ee, ASCII is a character and control code
    encoding standard used by computers, telecommunications equipment, and other devices. There are 128 valid codes in ASCII, including 95 printable
    characters (including the "space" character) and 33 control codes.

    The 8-bit Atari computers use a modified version of ASCII called Atari ASCII, or ATASCII. The ATASCII character set, contained in Operating System (OS)
    ROM, includes 256 printable characters. Each character is a matrix of 8 x 8 pixels.

    The XL OS contains both the standard ATASCII character set (as found in the 400/800 OS) and an alternate International Character Set, where 29 ATASCII standard "graphics characters" are replaced primarily with characters with European accent marks.

    ATASCII printable characters are a functional superset of ASCII, with a few exceptions: ATASCII lacks the left curly bracket, right curly bracket, tilde, and grave accent printable ASCII characters. The similarity between ATASCII and ASCII character coding facilitates exchange of text between the Atari and other computers or devices also using character encodings based on ASCII.

    16 of the ATASCII character codes also have control code functions when processed by the E: Screen Editor device of the Atari OS. ATASCII control codes are quite different from ASCII control codes. The most important functional difference between ATASCII and other variations of ASCII is how a "newline" (line ending, end of line (EOL), line break) is coded. The Atari's ATASCII uniquely uses the single decimal character code 155 to indicate a newline. Thus, when exchanging text files between the Atari and other computing devices a "text conversion" is necessary in order for newlines to be recognized as expected both before and after transmission.

    The Wikipedia article on ATASCII provides links to several ATASCII/ASCII character tables, and a list of the ATASCII control codes. https://en.wikipedia.org/wiki/ATASCII

    ------------------------------

    Subject: 7.1.4) How is the Input/Output subsystem of the Atari OS organized?

    Derived primarily from the Operating System User's Manual and De Re Atari.

    The Input/Output (I/O) subsystem of the Atari Operating System (OS) comprises
    a collection of software utilities/routines, offered at three different levels of abstraction (CIO, Device Handlers, SIO), that allow for user communication with local system and peripheral devices. Communications between adjacent levels of the I/O subsystem are carried via one of the three types of I/O system control blocks (IOCB, ZIOCB, DCB).

    Presented in order from the highest level to the lowest level:

    USER PROGRAM

    INPUT/OUTPUT CONTROL BLOCK (IOCB)
    Carries communications between a user program and Central I/O (CIO)
    - 8 IOCBs (#0-#7) are provided by the OS.
    - Each IOCB can be assigned to control any device/file.
    - IOCB #0 is assigned by the OS to the E: Screen Editor at power-up and
    system reset.
    - Software programming environments may reserve other IOCBs for internal
    use. For example, Atari BASIC uses IOCB #6 to interact with the S:
    device when using graphics modes other than zero, and uses IOCB #7 for
    I/O with the printer, disk drive, and cassette. (Patchett/Sherer,
    Master Memory Map, http://www.atariarchives.org/mmm/iocbs.php)

    CENTRAL I/O (CIO) utility/routine
    Intended for user program access to system and peripheral devices. A device consists of one or more "files" where each file consists of a sequential collection of data bytes. Files are optionally organized into "records" which are delineated by the End Of Line character/byte ($9B). 8 basic functions provided by CIO: OPEN, CLOSE, GET CHARACTERS, PUT CHARACTERS, GET RECORD,
    PUT RECORD, GET STATUS, Special (handler-specific)
    Additional CIO features:
    - Device independence
    - Single entry point for all devices (and for all operations)
    - Device-independent calling sequence
    - Uniform rules for data transfers, regardless of actual device storage
    block sizes
    - Data access methods
    - Byte-aligned. Any number of bytes can be read or written, and the
    next operation will continue where the prior one left off.
    - Record-aligned. A single record of bytes can be read or written, and
    the next operation will continue at the beginning of the next record.
    - Multiple device/file concurrency
    - Up to 8 device/files can be accessed concurrently, each operating
    independently of the others.
    - Unified error handling
    - Device expansion: while the OS supplies several device handlers in ROM,
    CIO also supports the loading of additional CIO-compatible device
    handlers into RAM.

    ZERO-PAGE I/O CONTROL BLOCK (ZIOCB)
    Carries communications between higher-level CIO and lower-level device handlers. There is a single ZIOCB only.

    DEVICE HANDLERS
    Device-specific communication. Handlers provided by the Atari OS:
    - K: Keyboard Handler (read only)
    - S: Display Handler (read/write)
    Offers the special CIO commands DRAW and FILL.
    - E: Screen Editor (read/write)
    - Uses the K: Keyboard Handler and the S: Display Handler to provide
    "line-at-a-time" input with interactive editing functions, as well as
    formatted output.
    - C: Cassette Handler (read/write)
    - P: Printer (write only)
    - 400/800 OS: Supports a single printer device; any
    device number is ignored. All powered printers attached via SIO or
    the 850 parallel port respond to all print commands.
    - XL OS: Supports 8 different printer devices: P1:-P8:
    P: (no device number) is interpreted to mean: P1:
    Printer devices are associated with specific models of Atari printers as follows:
    P1: All printers attached via SIO or the 850 parallel port
    P2: 850 Interface Module parallel port (e.g., Atari 825)
    P3: 1025 Printer
    P4: 1020 Color Plotter
    P5: 1027 Printer
    P6: 1029 Printer
    P7: XMM801 Printer
    P8: XDM121 Printer
    Tomasz Krasuski contributes (May 2011):
    This feature is buggy in XL OS Rev.A/Rev.B/Rev.1. Behavior was
    fixed to reliable operation as of XL OS Rev.2.
    - Diskette Handler, Resident
    - Not a full device handler; not CIO-compatible
    - Except for Atari DOS I, normally only used to load a full File
    Management System from disk
    Nonresident Handlers can be added to the system environment in several ways:
    - Loaded from diskette or cassette
    - Loaded from the ROM of an SIO device (850 interface, 1030 modem). May be
    loaded at system startup without disk drive ("bootstrap without disk
    drive"), may be loaded as part of a Disk Boot ("bootstrap with disk
    drive"), or may be loaded afterward.
    - XL OS Rev.1+: Loaded from a New Device attached via PBI or Cartridge+ECI

    DEVICE CONTROL BLOCK (DCB)
    Carries communications between higher-level device handlers and lower-level Serial I/O (SIO). There is a single DCB only.
    - Also used by the OS-resident Diskette Handler

    SERIAL I/O (SIO) utility/routine
    Low-level communication with serial bus peripherals
    - Control of all Serial bus I/O, conforming to the bus protocol
    - Bus operation retries on errors
    - Return of unified error statuses on error conditions
    - Used by the OS-resident P: handler
    - Not used by the OS-resident K: S: and E: handlers (non-SIO devices)
    - While the OS-resident C: handler uses the SIO bus hardware, it does not use
    the SIO utility/routine.

    Any lower level (lower than CIO) access to a device by a user program involves the direct reading and writing of the hardware registers associated with the device.

    ------------------------------

    Subject: 7.1.5) What is attract mode?

    From the Atari Operating System User's Manual (1982) p. 215:

    Attract mode is a mechanism that protects the television screen from having
    patterns "burned into" the phosphors due to a fixed display being left on
    the screen for extended periods of time. When the computer is left
    unattended for more than 9 minutes, the color intensities are limited to 50
    percent of maximum and the hues are continually varied every 8.3 seconds.
    Pressing any keyboard data key will be sufficient to remove the attract mode
    for 9 more minutes.

    Laurent Delsarte contributes:

    To launch the attract mode from BASIC, use a "POKE 77,128"
    To disable the attract mode from BASIC, use a "POKE 77,0"

    ------------------------------

    Subject: 7.1.6) What is the Atari cassette utilization/filesystem?

    (Section sources include: De Re Atari, OS Users Manual, XL Addendum)

    The following are characteristics of the cassette utilization/filesystem
    as implemented by the Atari Operating System.

    - Mark = 5327Hz (audible sound frequency)
    - Space = 3995Hz (audible sound frequency)
    - Bit = space(0) or mark(1)
    - Byte = 10 bits:
    - 1 start bit (space)
    - 8 data bits
    - 1 stop bit (mark)
    - Record = 6-132 bytes, as follows:
    - Speed measurement byte, first of two. Marker character = $55 (hex)
    - Speed measurement byte, second of two. Marker character = $55 (hex)
    - Control byte. One of three values:
    1) $FC = Record is a full data record.
    2) $FA = Record is a partially full data record, and the next record
    should be an end-of-file record.
    3) $FE = Record is an end-of-file record.
    - Data bytes. 128 bytes for a full data record or an end-of-file record,
    or 2-128 bytes if a partially full data record, where the last byte is
    not really a data byte, but rather contains the number of actual data
    bytes (1-127).
    - Checksum byte
    - Pre-Record Write Tone (PRWT) = pure mark tone
    - Post-Record Gap (PRG)
    - Record Frame = PRWT + Record + PRG
    - Inter-Record Gap (IRG) = PRG + PRWT
    - Normal IRG Mode: Tape comes to stop after each record frame
    - Short IRG Mode: Tape is not stopped between record frames.
    (Short IRG Mode is supported by the Atari BASIC commands CSAVE and CLOAD.)
    - Normal IRG PRWT = 3 seconds of mark tone
    - Short IRG PRWT = 0.25 second of mark tone
    - Normal IRG PRG = Up to 1 second of unknown tones (motor stop/start time)
    - Short IRG PRG = pure mark tone, duration set by user program (may be zero)
    - File consists of:
    1) 20-second leader of mark tone
    2) Any number of data record frames (each frame contains one data record)
    3) End-Of-File record frame (contains an end-of-file record)

    ------------------------------

    Subject: 7.1.7) What programs run only on the 400/800 (not the XL/XE) and why?

    Fandal site search for games requiring 400/800 OS Rev.B: http://a8.fandal.cz/search.php?search=os-b&butt_details_x=x

    Fandal site search for games requiring 400/800 OS Rev.A: http://a8.fandal.cz/search.php?search=os-a&butt_details_x=x

    Utilities reported to require the 400/800 OS:
    Atari Word Processor Atari
    File Manager 800+ Synapse
    Letter Perfect (before v6) LJK (all version 6.x releases OK on XL/XE) Mac/65 [ver. 1.00, orange] OSS (all releases after 1.00 OK on XL/XE)
    Monkey Wrench Eastern House
    Synassembler Synapse
    Text Wizard Datasoft
    VT-10-Squared Dave Bailey

    Note that while some 400/800 programs fail to run on the XL/XE at all, others, such as Atari's own Missile Command and Space Invaders cartridges, run on the XL/XE with only minor problems such as sound glitches.

    Many 400/800 programs incompatible with XL/XE computers can nevertheless be made to run flawlessly on the XL/XE using the Atari Translator (or equivalent) which is described in another section of this FAQ list.

    Also, modern programmers have hacked many of the above titles and released fixed versions for use with XL/XE computers.

    Thomas Richter contributes the following (16 Jan 2004):

    There are a couple of reasons why some games don't run on the XL/XE
    models. I try to order them by "likeliness", of course biased by my
    personal observations:

    1) The printer buffer of the XL Operating System in page 3 is a couple
    of bytes shorter. The additional bytes are used for extended OS
    variables not available in the 800 series. Most prominent is the $3FA location, holding a shadow register of GTIA's TRIG3 signal. While a
    true joystick trigger line in the 400/800 series, this signal is used
    as "cartridge inserted" signal for XL/XE models. Unfortunately, the OS compares GTIA TRIG3 with the shadow register at $3FA in each vertical
    blank, running into an endless loop if the register contents don't
    match. This causes hangs for games using page 3 either as copy-buffer
    or for player-missile graphics. (Hangs by Ms. Pac-Man and
    Bacterion! are caused by this, and many others...) This is "fixable"
    either by the translator disk, or by a quick hack into the game,
    replacing the OS vertical blank or poking TRIG3 frequently into its
    shadow. The reason for the OS behavior might be that Atari wanted to
    prevent crashes if the cartridge is inserted or removed while the
    machine is running. The 400/800 is powered down when a cartridge is
    inserted, the XL/XE lacks the cover of the older models that triggered
    a little switch to interrupt the power line.

    2) Similar to the above, writes to $3F8. This OS equate defines
    whether on a warm start, the BASIC ROM shall be mapped back in. If
    its contents are altered, a program triggering a reset as part of its initialization will find itself then with 8KiB less RAM occupied by
    a BASIC ROM, making it crash. Similarly, writes to the cartridge checksum
    $3EB could cause a cold-start on a "reset initialization". This is
    fixable by the translator disk.

    3) Some games use a four-joystick setup, or at least initialize
    PIA itself. If this happens inadequately, PIA Port B, bit 0 gets changed, disabling the ROM, and thus crashing the machine. This is not fixable
    by the translator since it is a hardware issue.

    4) Direct jumps into the OS ROM, not using the documented vectors in
    the $E450 area. Interestingly, this fault is not as common as it may
    sound since games hardly ever use the OS. It causes failures of
    some "serious applications", most notably "QS Forth" and applications
    compiled by it. This is fixable by the translator disk.

    ------------------------------

    Subject: 7.1.8) Why do some programs run only on the XL/XE (not the 400/800)?

    Section started by Konrad M. Kokoszkiewicz.

    Software designed for the Atari XL/XE won't work on the 400/800 if:

    1) It uses shadow RAM at $C000-$CFFF (4KiB) or $D800-$FFFF (10KiB). In other
    words, it requires 64KiB RAM.
    2) It uses RAM expansions at $4000-$7FFF controlled by PORTB $D301. In other
    words, it requires at least 128KiB total RAM, 130XE compatible.
    3) It uses XL OS vectors (routines) not present in the 400/800 OS. Some of
    these correspond to XL/XE specific hardware, such as the [HELP] key or the
    PBI/ECI interface.
    4) Rather than using documented OS vectors, it "illegally" uses OS routines
    directly for routines that were located at different memory addresses in
    the 400/800 OS.
    5) It uses the International Character Set.

    ------------------------------

    Subject: 7.1.9) How can I run older programs using the Atari Translator?

    While each later revision of the Atari Operating System (OS) was designed to
    be backward compatible with earlier versions, software incompatibilities were sometimes introduced. In particular, a number of programs written for the 400/800 OS versions do not run correctly or at all under the XL OS
    versions. In order to allow many "400/800-only" programs to be run on an
    XL (or later, XE) computer, Atari sold the Atari Translator on disk.

    The auto-booting Translator diskette installs the 400/800 OS in RAM "under"
    the ROM-based XL OS in an XL/XE Atari computer. Once this disk has been loaded, the user is prompted to remove it and insert the application diskette (or cassette) and press the [SELECT] key. When this occurs the system undertakes a COLD START in the new, RAM-based 400/800 OS environment.

    The Translator disk is a two-sided disk, providing two slightly different versions of the Translator. The Side A Translator provides a version of the 400/800 OS that is slightly modified to allow the [RESET] key to be pressed without reverting to the XL OS on ROM. The Side B Translator provides an
    even higher degree of compatibility, including support for programs that boot the 850 interface, but the 400/800 OS in RAM would be disabled if the [RESET] key is pressed.

    Atari shipped two versions of the Translator disk:
    - Atari Translator DX5063 NTSC version: 400/800 OS Rev.B/NTSC
    - Atari Translator FK100807 PAL version: 400/800 OS Rev.A/PAL

    Translator programmers at Atari:
    - Greg Riker: Original version 83-03-20
    - Joe Miller: Added graphics and code for [RESET] 83-09-15

    Atari Translator partial source code: http://www.atariage.com/forums/topic/78381-xl-translator-source/

    Similar "translator" programs from 3rd parties include:
    - XL Fix by Computer Software Services (CSS), 1983 (ad Antic Apr84p102)
    - Commercial program released (originally) in disk and cassette versions
    - Also released in ROM version
    - OldOper ver. 1.0 by MasterSoft, April 1984
    - The FIXXL by Belathiel (widely distributed by Antic magazine), 6/11/84
    - The Emulator by ATCO int. systems (ATCO-IS) Stuttgart, version 4.0, 1984
    - "Home-Made Translator" by Angelo Giambra, ANALOG July 1985 p.28-34
    - Follow-up by D.D. Davids II to above article, ANALOG Sept. 1985 p. 6
    - XOS/Translator, by Computer Support, 1985
    - Also released in ROM version as: XOS/Fix
    - Ultra Translator: Ultrafix/XL (400/800 OS Rev.B or Rev.A), by Tim Patrick
    - Revision 1.3, 1984/86
    - Revision 2.0, 1984/86
    - This version also produced on cartridge by Video 61
    - Revision 2.2, 1984/86

    See a separate section of this FAQ list for 400/800 OS "translator" products sold on ROM chips (replacement operating systems)

    ------------------------------

    Subject: 7.1.10) How can software detect NTSC versus PAL/SECAM computer types?

    Several techniques are available to programmers, as follows:

    1) The XL OS (not the 400/800 OS) provides a flag called PALNTS at decimal memory location 98 (hex: $62). PALNTS indicates whether the CTIA/GTIA/FGTIA has reported itself to be NTSC or PAL/SECAM, where 0 means NTSC, or 1 means PAL/SECAM. In Atari BASIC, enter "? PEEK(98)" to determine the value of the PALNTS flag.

    2) An approach which works on all 400/800/XL/XE systems is to use the same method used by the XL OS to set the value of the PALNTS flag described above. That is, to read and interpret the "PAL" memory flag, decimal location 53268 (hex: $D014). The value of PAL is provided by the CTIA/GTIA/FGTIA chip
    itself. Meanings are:
    Bit 1-3 clear (xxxx000x) = PAL/SECAM
    Bit 1-3 set (xxxx111x) = NTSC
    (Proper interpretation of the value returned by PEEK(53268) in Atari BASIC would thus be a bit of a programming challenge. This is left to the reader!)

    3) Software may determine NTSC or PAL/SECAM by determining how many scan
    lines are being generated by ANTIC. This is done by monitoring the VCOUNT memory register. VCOUNT (54283 decimal, $D40B hex) is used by ANTIC to keep track of which line is currently being generated on the screen. Values
    reflect the line count divided by two. VCOUNT values range from zero to 130 for an NTSC ANTIC (131*2=262 scan lines), while VCOUNT values range from zero to 155 for a PAL ANTIC (156*2=312 scan lines).

    ------------------------------

    Subject: 7.2.1) What is Atari BASIC?

    (Thanks to Laurent Delsarte for cartridge variation pics and testing.)

    BASIC is an acronym for Beginner's All-purpose Symbolic Instruction Code. Developed by John Kemeney and Thomas Kurtz in the mid 1960s at Dartmouth College, BASIC is one of the earliest and simplest high-level programming languages, incorporating components of FORTRAN and ALGOL.

    In October 1978 Atari contracted with Shepardson Microsystems, Inc. (SMI; headed by Bob Shepardson) to create a version of BASIC (as well as a File Management System) for the upcoming Atari personal computers. Credits:
    Paul Laughton - Main programmer (also wrote: FMS for DOS I and DOS 2.0S)
    Kathleen O'Brien - Floating point routines (also wrote: Assembler Editor)
    Bill Wilkinson - Preliminary specifications for the language;
    floating point scheme design
    Paul Krasno - Implemented the transcendental routines

    While SMI developed Atari BASIC to occupy 10KiB of ROM, including a 2KiB Floating Point Package (FPP) for internal use by the language, Atari placed
    the FPP component in operating system ROM (memory locations 55296 to 57343 or $D800 to $DFFF) for universal availability. Thus, the Atari BASIC ROM was slimmed to 8KiB. Please see the "What is the Atari OS" section of this FAQ
    for further information about the FPP.

    Atari released 3 different Revisions of Atari BASIC:

    Revision A
    ----------
    - Shipped with the 400 computer systems from 1979-1981
    - Shipped with the 800 computer systems from 1979-1982

    Atari BASIC Rev. A was produced by Atari on cartridge (CXL4002), standard 400/800-style brown label, which reads either "BASIC Computer Program" (early) or "BASIC Computing Language" (most).

    The cartridge was produced in mass quantities before SMI had finished
    debugging it. One place these bugs are documented is in this article by Steve Hanson from Compute! magazine, Oct. 1981: http://www.atarimagazines.com/compute/issue17/171_1_DOCUMENTED_ATARI_BUGS.php

    On February 25, 1981, the source code to Atari BASIC (including the FPP) was purchased from SMI by Optimized Systems Software (OSS), headed by former SMI employees Bill Wilkinson and Mike Peters.

    The Atari BASIC Source Book (Compute! Books, 1983, 0-942386-15-9), authored by Bill Wilkinson, Kathleen O'Brien and Paul Laughton, made the source code to Atari BASIC (Rev. A; and including the FPP) available to the public.
    Available: http://users.telenet.be/kim1-6502/6502/absb.html

    Revision B
    ----------
    When the 600XL/800XL computers shipped in the fall of 1983 they included a newly debugged Atari BASIC Rev. B built-in on ROM. Unfortunately, while most existing bugs were fixed, Rev. B introduced a new bug more serious than any of the earlier problems. In his article in the June 1985 issue of Compute!, Bill Wilkinson writes:
    Each time you LOAD (or CLOAD or RUN "filename") a program, rev B adds 16
    bytes to the size of your program. If you then save the program, the next
    time you load it in it grows by ANOTHER 16 bytes, and so on.
    http://www.atarimagazines.com/compute/issue61/323_1_INSIGHT_Atari.php
    The problem can be alleviated by periodically, if not exclusively, using
    LIST instead of SAVE or CSAVE to save your programs.

    Atari never produced Atari BASIC Rev. B on cartridge.

    "Revision C Converter: Type-in fix for buggy BASIC revision B" by Matthew Ratcliff was published in the September 1985 issue of Antic: http://www.atarimagazines.com/v4n5/revisioncconverter.html

    Revision C
    ----------
    Atari BASIC Rev. C is the final "fully debugged" version. Rev. C was first shipped on cartridge (CXL4002) by Atari, Inc. in June 1984 according to Antic (http://www.atarimagazines.com/v4n5/revisioncconverter.html). The silver
    label on the first Rev. C cartridges reads "(c)1982 Atari, Inc." and "Made in U.S.A." Atari, Corp. also produced Rev. C on cartridge, using two different silver labels designs, both of which read "(c)1985 Atari Corp." and "Made in Taiwan". Rev. C was also built-in on ROM in late-production 800XL computers
    as well as the 65XE, the 130XE, the XE System Console, and the 800XE.

    Determining Revision version
    ----------------------------
    When running Atari BASIC, memory location 43234 ($A8E2, BASIC ROM) indicates which Revision of BASIC is running. At the READY prompt, enter:
    ? PEEK(43234)

    If the result is: You have Revision: Atari Part#:
    162 A C012402+C014502
    96 B C060302A
    234 C C024947A

    All 3 versions of Atari BASIC may be available for download here: http://www.ataripreservation.org/websites/freddy.offenga/atari_dev.htm

    Manuals from Atari:
    (See the "What is the Atari OS" FAQ section for FPP documentation.)
    - Atari BASIC (Wiley Self-Teaching Guide) C014385 by Albrecht/Finkel/Brown
    (c)1979, 332 pages (see: http://www.atariarchives.org/basic/)
    - Shipped with the 400 computer systems from 1979-1981
    - Shipped with the 800 computer systems from 1979-1982
    - BASIC Reference Manual (400/800 ed.), C015307, (c)1980, 120 pages
    - Authors: Carol Shaw and Keith Brewster
    - Shipped with the 800 computer systems from 1980-1982
    - Inside Atari BASIC, C060992, Carris for Reston, (c)1983, 183 pages
    - Atari BASIC Reference Manual Update, C061038, (c)1982, 6 pages

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael Current@21:1/5 to Marc G. Frank on Fri Aug 30 20:27:51 2019
    [continued from previous message]

    MacroMon XL (machine language monitor), MacroDOS (miniature DOS)

    OmnimonXL, by CDY Consulting, 1984
    - Single OS ROM chip includes:
    - OSNXL (OSN XL/XE) operating system
    - Fastchip XL floating point routines
    - OmnimonXL (Omnimon XL) resident machine language monitor
    - Compatible with the 400/800 OS, but has a programmable cassette baud rate,
    increased keyboard speed, and all the graphic modes of the XL/XE's
    - Shipped with Newell Industries Ramrod XL (Ramrod XL/XE)(except "Ramrod XL2")
    (Ramrod XL board plugs in place of the OS ROM chip; has 3 XL/XE ROM sockets
    and hardware OS select switch)

    OmniviewXL, by CDY Consulting, 1984
    - Single OS ROM chip includes:
    - OSNXL (OSN XL/XE) operating system
    - Fastchip XL floating point routines
    - OmniviewXL (Omniview XL/XE)
    - Compatible with the 400/800 OS, but has a programmable cassette baud rate,
    increased keyboard speed, and all the graphic modes of the XL/XE's
    - Adds 80 column E: and S: OS device drivers, using 3-bit wide characters
    in ANTIC mode F (BASIC GR. 8). Software can also be optimized to write
    to the Omniview screen output routines. Compatible with Omniview 400/800.
    - Built-in ATRMON terminal emulator for use with the ATR8000
    - Later versions (Omniview XL/XE) include 64KiB RAMdisk handler for 130XE
    - Supplied with SpeedScript 80 (earlier name) / OmniWriter (later name),
    OmniTerm (modified VT-10-Squared), and patch instructions for Bit 3 Full-
    View 80 supporting versions of LJK Letter Perfect and LJK Data Perfect.
    - Sold separately by CDY: Patched AtariWriter Plus (130XE version), OmniCom
    (commercial versions for Omniview)

    Bibomon, by Erwin Reuss for Compy-Shop, 1984
    - Later known as: "4K-Bibomon"
    - XL OS with added machine language monitor
    - Includes piggyback socket for standard XL OS chip and hardware switch

    512K RAM BetriebsSystem Chip, by Irata Verlag, 1985?
    - XL OS with added RAMdisk support for the company's 512K RAM 800XL RAMFloppy

    High Chip XL, by Irata Verlag, 1985
    - XL OS with added buffered fast write with verify SIO for use with the
    company's High Speed Board 1050 (Happy 1050 Enhancement clone)

    High Chip XE mit RAMDisk, by Irata Verlag, 1985?
    - High Chip XL with added RAMdisk for the 130XE

    OldRunner Chip, by Irata Verlag, 1985?
    - 400/800 OS translator in ROM

    Supermon, by Will Visser for Super Products, 1985
    - 400/800 OS translator, with enhancements
    - Disassembler; DOS functions; 4 color screen dump
    - Also included with Super Products Super800

    XOS/80 Column Pack!, by Computer Support, 1985
    - 600XL/800XL and 130XE separate versions
    - XL OS modified to be highly compatible with the 400/800 OS, plus 820 baud
    cassette saves
    - 80 column text mode using a Graphics 8 screen

    XOS/Ultimon!, by Computer Support, 1985
    - 600XL/800XL and 130XE separate versions
    - XL OS modified to be highly compatible with the 400/800 OS, plus 820 baud
    cassette saves
    - Machine code monitor/disassembler, mini-DOS, disk sector editor http://ultimon.com/

    XOS/Fix, by Computer Support, 1985
    - 400/800 OS translator in ROM

    Superchip / Super-Chip, by Computer Support, 1986
    - 600XL/800XL and 130XE separate versions
    - XL OS with fast floating point math routines ?????

    Ultra Speed OS, by Computer Software Services (CSS), 1986
    - Universal support for high speed read/write with upgraded disk drives
    including Klone/Happy, Duplicator, and US Doubler
    - Numerous other OS enhancements
    - Chip shipped with piggyback socket and switch for hardware toggle between
    Ultra Speed OS and standard Atari XL OS

    Omniview 256, by CDY Consulting, 1986
    - Omniview XL/XE (see OmniviewXL above) with added 192KiB RAMdisk
    - Marketed for use with 800XL with Newell Industries 256KXL upgrade

    16K-Bibomon, by Erwin Reuss for Compy-Shop, 1986
    - Add on board includes:
    - Bibomon 16K machine language monitor ROM
    (occupies 4KiB address space at $C000)
    - Oldrunner 400/800 OS ROM chip
    - Socket for standard XL OS ROM chip
    - Hardware clock
    - Centronics compatible printer port
    - Hardcopy Routine: Epson FX-80 and Okidata Microline compatible
    - mini-DOS: DOS 2.5 and OSS DOS XL compatible, plus Speedy 1050 high speed
    - Hardware switches used to select between XL OS / Oldrunner, between
    BASIC On / BASIC Off under Oldrunner, and between Bibomon or
    International character set under Oldrunner

    Qmeg-OS, by Stefan Dorndorf, 1987
    - "Quarter-Mega OS" - intended for machines with minimum 256KiB RAM
    - Highly compatible with standard XL OS
    - Removed: PBI/ECI support, Self Test, International character set
    - Adds monitor OS, mini DOS, machine language monitor with disassembler
    - 130XE-type RAMdisks, configured as two standard single density disks,
    two enhanced density disks, or one standard double density disk
    - Universal high speed SIO support for Happy 1050, Speedy 1050, 1050 Turbo
    - P2: and P3: Epson printer drivers
    - Internal Centronics parallel printer interface support (at $D6xx)
    - Must be attached directly to PIA

    Expander, by Syngery Concepts, 1987
    - XL OS with added Executive Program for managing up to four RAMdisks of up to
    512KiB; boot from any RAMdisk or any floppy disk drive; built-in mini-DOS

    Ultra Speed Plus! Operating System Package, CSS, 1988
    - Module replaces OS ROM chip, with several lines soldered to points on
    the motherboard as well. Three operating systems, switch-selectable:
    - Standard Atari XL OS
    - XL-Fix Plus
    - 400/800 OS translator, with enhancements
    - Mach-Ten binary file loader, with Mach Menu writer
    - Ultra Speed Plus (US+)
    - Universal support for high speed read/write with upgraded disk drives
    including Super Archiver, Happy, US Doubler, Duplicator, Klone, Density
    Doubler, and XF551
    - RAMdisk handler can emulate single or double density floppy disks, and
    supports 128KiB to 2MiB XE-type upgrades. Can boot from RAMdisk.
    - Fastchip floating point routines
    - Comprehensive memory test routine pinpoints defective RAM chips

    Turbo-OS, by DataQue Software (Chuck Steinman), 1989
    - Shipped with DataQue Software Turbo-816 65C816 board (both 600XL/800XL/65XE/
    130XE and 1200XL versions)
    - Compatible with software that uses the published, legal entry points into
    the Atari XL OS and legal RAM locations
    - Recommended to install both the Atari XL OS and the Turbo-OS ROMs, and a
    toggle switch used to select which is active ("Dual Prom" Option).

    TurBoss, by Integrated Logic Systems (ILS), 1990
    - Enhances the screen display list speed in Graphics Mode 0
    - Charles Marslett's high speed math routine (Fastchip)
    - D.E.Mon real-time monitor built in
    - Chip contains standard Atari XL OS as well, hardware switch selectable http://www.realdos.net/prodturboss.html

    25K Bibomon, by Klaus Peters / Elektronik und Software, 1992
    - Add-on board is marked: Supermon V1.1
    - Single chip includes two operating systems: Old OS (Oldrunner?) and XL OS
    - Board also includes Bibomon machine language monitor and optional
    Bibo-Assembler
    - Board includes socket for second XL/XE OS chip
    - Firmware allows software control of combinations of OS (Old OS / XL OS /
    Optional OS), with choices of international character set, Bibomon with
    Bibomon DOS, Bibo-Assembler, and internal BASIC enabled
    - Universal Speedy 1050 high speed support

    APE Warp+ OS, by Atarimax (Steven J. Tucker), 1996
    - Universal high speed SIO (3x), US Doubler emulation, other enhancements
    - Shipped 1996-2005 as part of APE Warp+ Quad OS Upgrade Module, containing
    APE Warp+ OS, standard XL OS, a public domain Atari 800 compatible OS,
    and standard XL OS with Reverse BASIC
    - Includes chip and 2 toggle switches
    - Beginning 2005 shipped as part of APE Warp+ 32-in-1 OS Upgrade Module
    - Module replaces OS ROM chip, with 3 other connections necessary
    - OS Selection Menu in ROM

    QMEG+OS 4.04, by Stefan Dorndorf, 1997
    - "Quarter-Mega Plus OS" - intended for machines with minimum 256KiB RAM
    - Can be installed in 64KiB or 128KiB computers (no RAMdisks supported)
    - Highly compatible with standard XL OS
    - Removed: Self Test, International character set, full cassette support
    - Adds monitor OS, mini DOS, machine language monitor with disassembler and
    disk sector editor, Freezer
    - Full support for large Bibo-DOS, Turbo-DOS, and MYDOS floppy disks, and
    MYDOS subdirectories
    - RAMdisk for 130XE, Atari magazine 256KiB, Copy-Shop 256KiB, and Newell 1MiB;
    RAMdisks configured as two standard single density disks, two enhanced
    density disks, or one standard double density disk
    - Universal high speed SIO support for Happy 1050, Speedy 1050, 1050 Turbo,
    XF551. Drive types automatically detected.

    MyBIOS ROM versions, by Sijmen Schouten (Mr. Atari), 2002-
    - ROM versions are a complete replacement OS for the computer
    - "The most compatible Atari XL/XE + 400/800 Operating system known"
    - For all types of MyIDE interface
    - 'E' version for external MyIDE; 'I' version for internal MyIDE http://www.mr-atari.com/myidehome.htm

    65C816 XL OS (DracOS), by Konrad M. Kokoszkiewicz, 2004-
    Top project goals:
    - Make possible to use the 65C816 native mode on Atari XL/XE computers without
    problems and with interrupts enabled.
    - Make the memory mapped at extra addresses ($010000-$FFFFFF) accessible and
    usable for programs.
    - Provide some more extra services related to the 65C816 such as new interrupt
    vectors, basic memory management routines etc.
    - Develop new system of entry points: current mechanism of making ROM calls is
    difficult to use, when the code resides above the address $FFFF. http://drac030.krap.pl/en-specyfikacja.php

    ------------------------------

    Subject: 7.1.3) What is the ATASCII (Atari ASCII) encoding standard?

    ASCII is an acronym for the American Standard Code for Information
    Interchange. Pronounced ask-ee, ASCII is a character and control code
    encoding standard used by computers, telecommunications equipment, and other devices. There are 128 valid codes in ASCII, including 95 printable
    characters (including the "space" character) and 33 control codes.

    The 8-bit Atari computers use a modified version of ASCII called Atari ASCII, or ATASCII. The ATASCII character set, contained in Operating System (OS)
    ROM, includes 256 printable characters. Each character is a matrix of 8 x 8 pixels.

    The XL OS contains both the standard ATASCII character set (as found in the 400/800 OS) and an alternate International Character Set, where 29 ATASCII standard "graphics characters" are replaced primarily with characters with European accent marks.

    ATASCII printable characters are a functional superset of ASCII, with a few exceptions: ATASCII lacks the left curly bracket, right curly bracket, tilde, and grave accent printable ASCII characters. The similarity between ATASCII and ASCII character coding facilitates exchange of text between the Atari and other computers or devices also using character encodings based on ASCII.

    16 of the ATASCII character codes also have control code functions when processed by the E: Screen Editor device of the Atari OS. ATASCII control codes are quite different from ASCII control codes. The most important functional difference between ATASCII and other variations of ASCII is how a "newline" (line ending, end of line (EOL), line break) is coded. The Atari's ATASCII uniquely uses the single decimal character code 155 to indicate a newline. Thus, when exchanging text files between the Atari and other computing devices a "text conversion" is necessary in order for newlines to be recognized as expected both before and after transmission.

    The Wikipedia article on ATASCII provides links to several ATASCII/ASCII character tables, and a list of the ATASCII control codes. https://en.wikipedia.org/wiki/ATASCII

    ------------------------------

    Subject: 7.1.4) How is the Input/Output subsystem of the Atari OS organized?

    Derived primarily from the Operating System User's Manual and De Re Atari.

    The Input/Output (I/O) subsystem of the Atari Operating System (OS) comprises
    a collection of software utilities/routines, offered at three different levels of abstraction (CIO, Device Handlers, SIO), that allow for user communication with local system and peripheral devices. Communications between adjacent levels of the I/O subsystem are carried via one of the three types of I/O system control blocks (IOCB, ZIOCB, DCB).

    Presented in order from the highest level to the lowest level:

    USER PROGRAM

    INPUT/OUTPUT CONTROL BLOCK (IOCB)
    Carries communications between a user program and Central I/O (CIO)
    - 8 IOCBs (#0-#7) are provided by the OS.
    - Each IOCB can be assigned to control any device/file.
    - IOCB #0 is assigned by the OS to the E: Screen Editor at power-up and
    system reset.
    - Software programming environments may reserve other IOCBs for internal
    use. For example, Atari BASIC uses IOCB #6 to interact with the S:
    device when using graphics modes other than zero, and uses IOCB #7 for
    I/O with the printer, disk drive, and cassette. (Patchett/Sherer,
    Master Memory Map, http://www.atariarchives.org/mmm/iocbs.php)

    CENTRAL I/O (CIO) utility/routine
    Intended for user program access to system and peripheral devices. A device consists of one or more "files" where each file consists of a sequential collection of data bytes. Files are optionally organized into "records" which are delineated by the End Of Line character/byte ($9B). 8 basic functions provided by CIO: OPEN, CLOSE, GET CHARACTERS, PUT CHARACTERS, GET RECORD,
    PUT RECORD, GET STATUS, Special (handler-specific)
    Additional CIO features:
    - Device independence
    - Single entry point for all devices (and for all operations)
    - Device-independent calling sequence
    - Uniform rules for data transfers, regardless of actual device storage
    block sizes
    - Data access methods
    - Byte-aligned. Any number of bytes can be read or written, and the
    next operation will continue where the prior one left off.
    - Record-aligned. A single record of bytes can be read or written, and
    the next operation will continue at the beginning of the next record.
    - Multiple device/file concurrency
    - Up to 8 device/files can be accessed concurrently, each operating
    independently of the others.
    - Unified error handling
    - Device expansion: while the OS supplies several device handlers in ROM,
    CIO also supports the loading of additional CIO-compatible device
    handlers into RAM.

    ZERO-PAGE I/O CONTROL BLOCK (ZIOCB)
    Carries communications between higher-level CIO and lower-level device handlers. There is a single ZIOCB only.

    DEVICE HANDLERS
    Resident full device handlers provided by the Atari OS:
    - K: Keyboard Handler (read only)
    - S: Display Handler (read/write)
    Offers the special CIO commands DRAW and FILL.
    - E: Screen Editor (read/write)
    - Uses the K: Keyboard Handler and the S: Display Handler to provide
    "line-at-a-time" input with interactive editing functions, as well as
    formatted output.
    - C: Cassette Handler (read/write)
    - P: Printer (write only)
    - 400/800 OS: Supports a single printer device; any
    device number is ignored. All powered printers attached via SIO or
    the 850 parallel port respond to all print commands.
    - XL OS: Supports 8 different printer devices: P1:-P8:
    P: (no device number) is interpreted to mean: P1:
    Printer devices are associated with specific models of Atari printers as follows:
    P1: All printers attached via SIO or the 850 parallel port
    P2: 850 Interface Module parallel port (e.g., Atari 825)
    P3: 1025 Printer
    P4: 1020 Color Plotter
    P5: 1027 Printer
    P6: 1029 Printer
    P7: XMM801 Printer
    P8: XDM121 Printer
    Tomasz Krasuski contributes (May 2011):
    This feature is buggy in XL OS Rev.A/Rev.B/Rev.1. Behavior was
    fixed to reliable operation as of XL OS Rev.2.
    Also provided by the Atari OS:
    - Resident Diskette Handler
    - Not a full device handler; not CIO-compatible
    - Except for Atari DOS I, normally only used to load a full File
    Management System (FMS) from disk
    - Generic Parallel Device Handler (XL OS Rev.1+)
    - Responsible for invoking the handler routines within the parallel
    device ROMs.

    Nonresident Handlers can be added to the system environment in several ways:
    - Loaded from diskette or cassette
    - Loaded from the ROM of an SIO device (850 interface, 1030 modem). May be
    loaded at system startup without disk drive ("bootstrap without disk
    drive"), may be loaded as part of a Disk Boot ("bootstrap with disk
    drive"), or may be loaded afterward.

    DEVICE CONTROL BLOCK (DCB)
    Carries communications between higher-level device handlers and lower-level Serial I/O (SIO). There is a single DCB only.
    - Also used by the OS-resident Diskette Handler

    SERIAL I/O (SIO) utility/routine
    Low-level communication with serial bus peripherals
    - Control of all Serial bus I/O, conforming to the bus protocol
    - Bus operation retries on errors
    - Return of unified error statuses on error conditions
    - Used by the OS-resident P: handler
    - Not used by the OS-resident K: S: and E: handlers (non-SIO devices)
    - While the OS-resident C: handler uses the SIO bus hardware, it does not use
    the SIO utility/routine.

    Any lower level (lower than CIO) access to a device by a user program involves the direct reading and writing of the hardware registers associated with the device.

    ------------------------------

    Subject: 7.1.5) What is attract mode?

    From the Atari Operating System User's Manual (1982) p. 215:

    Attract mode is a mechanism that protects the television screen from having
    patterns "burned into" the phosphors due to a fixed display being left on
    the screen for extended periods of time. When the computer is left
    unattended for more than 9 minutes, the color intensities are limited to 50
    percent of maximum and the hues are continually varied every 8.3 seconds.
    Pressing any keyboard data key will be sufficient to remove the attract mode
    for 9 more minutes.

    Laurent Delsarte contributes:

    To launch the attract mode from BASIC, use a "POKE 77,128"
    To disable the attract mode from BASIC, use a "POKE 77,0"

    ------------------------------

    Subject: 7.1.6) What is the Atari cassette utilization/filesystem?

    (Section sources include: De Re Atari, OS Users Manual, XL Addendum)

    The following are characteristics of the cassette utilization/filesystem
    as implemented by the Atari Operating System.

    - Mark = 5327Hz (audible sound frequency)
    - Space = 3995Hz (audible sound frequency)
    - Bit = space(0) or mark(1)
    - Byte = 10 bits:
    - 1 start bit (space)
    - 8 data bits
    - 1 stop bit (mark)
    - Record = 6-132 bytes, as follows:
    - Speed measurement byte, first of two. Marker character = $55 (hex)
    - Speed measurement byte, second of two. Marker character = $55 (hex)
    - Control byte. One of three values:
    1) $FC = Record is a full data record.
    2) $FA = Record is a partially full data record, and the next record
    should be an end-of-file record.
    3) $FE = Record is an end-of-file record.
    - Data bytes. 128 bytes for a full data record or an end-of-file record,
    or 2-128 bytes if a partially full data record, where the last byte is
    not really a data byte, but rather contains the number of actual data
    bytes (1-127).
    - Checksum byte
    - Pre-Record Write Tone (PRWT) = pure mark tone
    - Post-Record Gap (PRG)
    - Record Frame = PRWT + Record + PRG
    - Inter-Record Gap (IRG) = PRG + PRWT
    - Normal IRG Mode: Tape comes to stop after each record frame
    - Short IRG Mode: Tape is not stopped between record frames.
    (Short IRG Mode is supported by the Atari BASIC commands CSAVE and CLOAD.)
    - Normal IRG PRWT = 3 seconds of mark tone
    - Short IRG PRWT = 0.25 second of mark tone
    - Normal IRG PRG = Up to 1 second of unknown tones (motor stop/start time)
    - Short IRG PRG = pure mark tone, duration set by user program (may be zero)
    - File consists of:
    1) 20-second leader of mark tone
    2) Any number of data record frames (each frame contains one data record)
    3) End-Of-File record frame (contains an end-of-file record)

    ------------------------------

    Subject: 7.1.7) What programs run only on the 400/800 (not the XL/XE) and why?

    Fandal site search for games requiring 400/800 OS Rev.B: http://a8.fandal.cz/search.php?search=os-b&butt_details_x=x

    Fandal site search for games requiring 400/800 OS Rev.A: http://a8.fandal.cz/search.php?search=os-a&butt_details_x=x

    Utilities reported to require the 400/800 OS:
    Atari Word Processor Atari
    File Manager 800+ Synapse
    Letter Perfect (before v6) LJK (all version 6.x releases OK on XL/XE) Mac/65 [ver. 1.00, orange] OSS (all releases after 1.00 OK on XL/XE)
    Monkey Wrench Eastern House
    Synassembler Synapse
    Text Wizard Datasoft
    VT-10-Squared Dave Bailey

    Note that while some 400/800 programs fail to run on the XL/XE at all, others, such as Atari's own Missile Command and Space Invaders cartridges, run on the XL/XE with only minor problems such as sound glitches.

    Many 400/800 programs incompatible with XL/XE computers can nevertheless be made to run flawlessly on the XL/XE using the Atari Translator (or equivalent) which is described in another section of this FAQ list.

    Also, modern programmers have hacked many of the above titles and released fixed versions for use with XL/XE computers.

    Thomas Richter contributes the following (16 Jan 2004):

    There are a couple of reasons why some games don't run on the XL/XE
    models. I try to order them by "likeliness", of course biased by my
    personal observations:

    1) The printer buffer of the XL Operating System in page 3 is a couple
    of bytes shorter. The additional bytes are used for extended OS
    variables not available in the 800 series. Most prominent is the $3FA location, holding a shadow register of GTIA's TRIG3 signal. While a
    true joystick trigger line in the 400/800 series, this signal is used
    as "cartridge inserted" signal for XL/XE models. Unfortunately, the OS compares GTIA TRIG3 with the shadow register at $3FA in each vertical
    blank, running into an endless loop if the register contents don't
    match. This causes hangs for games using page 3 either as copy-buffer
    or for player-missile graphics. (Hangs by Ms. Pac-Man and
    Bacterion! are caused by this, and many others...) This is "fixable"
    either by the translator disk, or by a quick hack into the game,
    replacing the OS vertical blank or poking TRIG3 frequently into its
    shadow. The reason for the OS behavior might be that Atari wanted to
    prevent crashes if the cartridge is inserted or removed while the
    machine is running. The 400/800 is powered down when a cartridge is
    inserted, the XL/XE lacks the cover of the older models that triggered
    a little switch to interrupt the power line.

    2) Similar to the above, writes to $3F8. This OS equate defines
    whether on a warmstart, the BASIC ROM shall be mapped back in. If
    its contents are altered, a program triggering a reset as part of its initialization will find itself then with 8KiB less RAM occupied by
    a BASIC ROM, making it crash. Similarly, writes to the cartridge checksum
    $3EB could cause a cold-start on a "reset initialization". This is
    fixable by the translator disk.

    3) Some games use a four-joystick setup, or at least initialize
    PIA itself. If this happens inadequately, PIA Port B, bit 0 gets changed, disabling the ROM, and thus crashing the machine. This is not fixable
    by the translator since it is a hardware issue.

    4) Direct jumps into the OS ROM, not using the documented vectors in
    the $E450 area. Interestingly, this fault is not as common as it may
    sound since games hardly ever use the OS. It causes failures of
    some "serious applications", most notably "QS Forth" and applications
    compiled by it. This is fixable by the translator disk.

    ------------------------------

    Subject: 7.1.8) Why do some programs run only on the XL/XE (not the 400/800)?

    Section started by Konrad M. Kokoszkiewicz.

    Software designed for the Atari XL/XE won't work on the 400/800 if:

    1) It uses shadow RAM at $C000-$CFFF (4KiB) or $D800-$FFFF (10KiB). In other
    words, it requires 64KiB RAM.
    2) It uses RAM expansions at $4000-$7FFF controlled by PORTB $D301. In other
    words, it requires at least 128KiB total RAM, 130XE compatible.
    3) It uses XL OS vectors (routines) not present in the 400/800 OS. Some of
    these correspond to XL/XE specific hardware, such as the [HELP] key or the
    PBI/ECI interface.
    4) Rather than using documented OS vectors, it "illegally" uses OS routines
    directly for routines that were located at different memory addresses in
    the 400/800 OS.
    5) It uses the International Character Set.

    ------------------------------

    Subject: 7.1.9) How can I run older programs using the Atari Translator?

    While each later revision of the Atari Operating System (OS) was designed to
    be backward compatible with earlier versions, software incompatibilities were sometimes introduced. In particular, a number of programs written for the 400/800 OS versions do not run correctly or at all under the XL OS
    versions. In order to allow many "400/800-only" programs to be run on an
    XL (or later, XE) computer, Atari sold the Atari Translator on disk.

    The auto-booting Translator diskette installs the 400/800 OS in RAM "under"
    the ROM-based XL OS in an XL/XE Atari computer. Once this disk has been loaded, the user is prompted to remove it and insert the application diskette (or cassette) and press the [SELECT] key. When this occurs the system undertakes a coldstart in the new, RAM-based 400/800 OS environment.

    The Translator disk is a two-sided disk, providing two slightly different versions of the Translator. The Side A Translator provides a version of the 400/800 OS that is slightly modified to allow the [RESET] key to be pressed without reverting to the XL OS on ROM. The Side B Translator provides an
    even higher degree of compatibility, including support for programs that boot the 850 interface, but the 400/800 OS in RAM would be disabled if the [RESET] key is pressed.

    Atari shipped two versions of the Translator disk:
    - Atari Translator DX5063 NTSC version: 400/800 OS Rev.B/NTSC
    - Atari Translator FK100807 PAL version: 400/800 OS Rev.A/PAL

    Translator programmers at Atari:
    - Greg Riker: Original version 83-03-20
    - Joe Miller: Added graphics and code for [RESET] 83-09-15

    Atari Translator partial source code: http://www.atariage.com/forums/topic/78381-xl-translator-source/

    Similar "translator" programs from 3rd parties include:
    - XL Fix by Computer Software Services (CSS), 1983 (ad Antic Apr84p102)
    - Commercial program released (originally) in disk and cassette versions
    - Also released in ROM version
    - OldOper ver. 1.0 by MasterSoft, April 1984
    - The FIXXL by Belathiel (widely distributed by Antic magazine), 6/11/84
    - The Emulator by ATCO int. systems (ATCO-IS) Stuttgart, version 4.0, 1984
    - "Home-Made Translator" by Angelo Giambra, ANALOG July 1985 p.28-34
    - Follow-up by D.D. Davids II to above article, ANALOG Sept. 1985 p. 6
    - XOS/Translator, by Computer Support, 1985
    - Also released in ROM version as: XOS/Fix
    - Ultra Translator: Ultrafix/XL (400/800 OS Rev.B or Rev.A), by Tim Patrick
    - Revision 1.3, 1984/86
    - Revision 2.0, 1984/86
    - This version also produced on cartridge by Video 61
    - Revision 2.2, 1984/86

    See a separate section of this FAQ list for 400/800 OS "translator" products sold on ROM chips (replacement operating systems)

    ------------------------------

    Subject: 7.1.10) How can software detect NTSC versus PAL/SECAM computer types?

    Several techniques are available to programmers, as follows:

    1) The XL OS (not the 400/800 OS) provides a flag called PALNTS at decimal memory location 98 (hex: $62). PALNTS indicates whether the CTIA/GTIA/FGTIA has reported itself to be NTSC or PAL/SECAM, where 0 means NTSC, or 1 means PAL/SECAM. In Atari BASIC, enter "? PEEK(98)" to determine the value of the PALNTS flag.

    2) An approach which works on all 400/800/XL/XE systems is to use the same method used by the XL OS to set the value of the PALNTS flag described above. That is, to read and interpret the "PAL" memory flag, decimal location 53268 (hex: $D014). The value of PAL is provided by the CTIA/GTIA/FGTIA chip
    itself. Meanings are:
    Bit 1-3 clear (xxxx000x) = PAL/SECAM
    Bit 1-3 set (xxxx111x) = NTSC
    (Proper interpretation of the value returned by PEEK(53268) in Atari BASIC would thus be a bit of a programming challenge. This is left to the reader!)

    3) Software may determine NTSC or PAL/SECAM by determining how many scan
    lines are being generated by ANTIC. This is done by monitoring the VCOUNT memory register. VCOUNT (54283 decimal, $D40B hex) is used by ANTIC to keep track of which line is currently being generated on the screen. Values
    reflect the line count divided by two. VCOUNT values range from zero to 130 for an NTSC ANTIC (131*2=262 scan lines), while VCOUNT values range from zero to 155 for a PAL ANTIC (156*2=312 scan lines).

    ------------------------------

    Subject: 7.2.1) What is Atari BASIC?

    (Thanks to Laurent Delsarte for cartridge variation pics and testing.)

    BASIC is an acronym for Beginner's All-purpose Symbolic Instruction Code. Developed by John Kemeney and Thomas Kurtz in the mid 1960s at Dartmouth College, BASIC is one of the earliest and simplest high-level programming languages, incorporating components of FORTRAN and ALGOL.

    In October 1978 Atari contracted with Shepardson Microsystems, Inc. (SMI; headed by Bob Shepardson) to create a version of BASIC (as well as a File Management System) for the upcoming Atari personal computers. Credits:
    Paul Laughton - Main programmer (also wrote: FMS for DOS I and DOS 2.0S)
    Kathleen O'Brien - Floating point routines (also wrote: Assembler Editor)
    Bill Wilkinson - Preliminary specifications for the language;
    floating point scheme design
    Paul Krasno - Implemented the transcendental routines

    While SMI developed Atari BASIC to occupy 10KiB of ROM, including a 2KiB Floating Point Package (FPP) for internal use by the language, Atari placed
    the FPP component in operating system ROM (memory locations 55296 to 57343 or $D800 to $DFFF) for universal availability. Thus, the Atari BASIC ROM was slimmed to 8KiB. Please see the "What is the Atari OS" section of this FAQ
    for further information about the FPP.

    Atari released 3 different Revisions of Atari BASIC:

    Revision A
    ----------
    - Shipped with the 400 computer systems from 1979-1981
    - Shipped with the 800 computer systems from 1979-1982

    Atari BASIC Rev. A was produced by Atari on cartridge (CXL4002), standard 400/800-style brown label, which reads either "BASIC Computer Program" (early) or "BASIC Computing Language" (most).

    The cartridge was produced in mass quantities before SMI had finished
    debugging it. One place these bugs are documented is in this article by Steve Hanson from Compute! magazine, Oct. 1981: http://www.atarimagazines.com/compute/issue17/171_1_DOCUMENTED_ATARI_BUGS.php

    On February 25, 1981, the source code to Atari BASIC (including the FPP) was purchased from SMI by Optimized Systems Software (OSS), headed by former SMI employees Bill Wilkinson and Mike Peters.

    The Atari BASIC Source Book (Compute! Books, 1983, 0-942386-15-9), authored by Bill Wilkinson, Kathleen O'Brien and Paul Laughton, made the source code to Atari BASIC (Rev. A; and including the FPP) available to the public.
    Available: http://users.telenet.be/kim1-6502/6502/absb.html

    Revision B
    ----------
    When the 600XL/800XL computers shipped in the fall of 1983 they included a

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)