# Atari Program Recorder

The Atari Program Recorder is Atari's dedicated magnetic-tape data storage device for the Atari 8-bit computers. The original 410 was launched along with the Atari 400 and 800 machines in 1979. The 1010 was a smaller model introduced to match the styling of the XL series released in 1983. XC12 of 1986 matched the XE series and was sold mostly in eastern Europe and South America. Slight variations of all of these models were also introduced from time to time.
The data rate was nominally 600 bit/s, but the simple error correction and short gaps between the resulting packets lowered this somewhat. In the end, its rate was roughly double that of the formats used by the Commodore Datasette or the TI-99/4. In some markets, where the Program Recorder was the only cost-effective storage solution, software-based high-performance modes were developed that operated more than three times as fast, and as much as four times as fast with simple hardware modifications.
The drives had several features not commonly found on other platforms. The system's device driver supported a packet-based format with checksums for error detection, as opposed to lacking any error detection or using whole-file checksums. The driver included separate formats for binary data and more complex data that required longer to process it. The left audio channel could be used to send audio through to the television speaker, which could be used to provide music during the loading period, or in program-controlled computer aided instruction systems.

## Physical design

The original 400 and 800 models, released in 1979, were housed in robust beige colored plastic cases and a series of computer peripherals were released to match this design. The original 410 was a modified Sears model 799.21672500 Solid State Cassette Recorder with a Japanese mechanism by Bigston. It was a relatively large unit and was unique among the line in that it featured a metal carrying handle that slid out from the front of the unit, identical to its Sears counterpart. This was replaced by a somewhat smaller and more rounded unit around 1981 using a new mechanism from Transtek or Chelco Sound in Hong Kong.
The release of the 600XL and 800XL in 1983 led to the system being repackaged in a much smaller form, the 1010. The new model used the black/white/silver styling of the new machines and was assigned a number in the new 1000-series device numbers. Two versions were made, one using a Chelco mechanism and another using Sanyo. They can be distinguished by the colored sticker inside the drive bay, Chelco used silver while Sanyo was orange.
When the XE series were released they were initially sold into existing markets and Atari introduced a number of XE-styled accessories to go with them. This led to the introduction of the XC11 in the UK around 1986, which are essentially the later-model 410's in the new silver-grey XE coloring. Only small numbers seem to have been produced, as by this time floppy disks were now almost universal in the US and most of Europe.
The XE line was later sold primarily in eastern Europe, South America and other markets that had not previously seen low-cost home computers. These markets remained highly cost sensitive and the cassette recorder was still a viable system. Most sets from this era are variations on the XC12, using a Phonemark PM-4401A mechanism, the same unit as the Commodore Datasette. This was sized between the 410 and 1010 and was sold in all of Atari's markets. Several versions of the XC12 were also produced for specific markets, differing primarily in labelling. In Poland, they could be found as the XCA12 or CA12. A later modification led to the XL12 and XC13, sold in Poland, the Czech Republic and Slovakia.
All of the versions, from the 410 to XC12, were mechanically similar. They all used a flip-up door on the top for inserting a tape. A piece of bright orange or silver tape behind the tape window was used make the current position of the tape more visible. The 410 had a power plug and internal power supply, the 1010 used an external power supply and ring-jack plug on the back of the case, and the XC12 and later models were powered through the SIO cable. The 1010 added a red LED to the front to indicate power-on, while the XC12 lacked the power LED but added one on top that lit while writing.
Several other companies produced compatible drives for the Atari machines, notably General Electric's Compu-Mate Computer Data Recorder, the Taihaho Computer Cassette and a number of interfaces that allowed any third party cassette deck to be used.

## Electrical design

The Atari 8-bit computers featured an advanced (for the era) input/output system, Atari SIO. Devices normally had in and out ports that allowed a number of devices to be daisy-chained together into a single port on the host computer. Most devices were "smart", listening for commands being sent through the data stream for instructions pertaining it its own device number. For instance, the Atari 810 floppy disk drive included a MOS 6507 that watched for commands being sent to a device number selected using switches on the back of the drive.
The cassette drive was intended to be a much lower-cost device and this eliminated the possibility of it being smart. Instead, and in contrast to any other devices used with SIO, the cassette system used several dedicated pins in the SIO port that directly controlled the drive. These included pin 8, MOTOR, that turned the tape drive motor on and off, and pin 11, AUDIOIN, which passed through any audio recorded on the left audio channel into the system. Data was read and written to the right audio channel using the standard SIO data pins, pin 3, DATAIN and pin 5, DATAOUT.
Because there was no way to decode commands or perform device selection, any single host computer could only support a single drive. This was enforced by leaving off the daisy-chaining port on the tape decks, forcing it to be the last device on the SIO chain. The exception was the 1010, which included a second port and did allow chaining.

## Data format

The system used frequency-shift keying (FSK) to store data on the tapes. When being used to write data, the POKEY chip was set up with one of its four channels producing 5327 Hz for mark and another to 3995 Hz for space, while a third channel was set to 600 Hz and used as a clock. Data sent to the cassette device driver toggled which of the two tones was played to DATAOUT while being timed by the clock. Each byte was prefixed by a space bit and postfixed by a mark. Reading was accomplished by two narrowband filters in the drive itself, which produced output when the corresponding tone was heard. During playback, the two outputs would toggle DATAIN on and off, which was automatically interpreted by the POKEY and reformed into a series of bytes for storage.
While most systems of the era wrote bytes of data with no particular overall format, Atari's driver used a simple packetized format to aid in error detection. Data was split into packets of 128 bytes and then sent to the tape with three header bytes and a single checksum byte at the end, so the overall packet was 132 bytes long. The first two bytes were 01010101 01010101, used for clock recovery by the POKEY to address tape stretch and other common problems in cassette systems. The next byte, the control byte, specified if the packet had a complete 128 bytes of data, less than that, or was a special end-of-file (EOF) marker. Only the packet immediately preceding the EOF could be in the shorter format, with the number of used bytes placed in the byte preceding end-of-packet checksum. Both the short packet and EOF packet were padded out to a full 132 bytes long.
Between packets, the system played the mark tone continually, with a short Pre-Record Write Tone and a variable length Post-Record Gap, the two combined known as the InterRecord Gap (IRG). The driver supported two writing modes. In Short IRG mode, the IRG was about 0.25 seconds long. This mode was used for most transfers, leaving just enough time for the computer to calculate the checksum and potentially stop the drive if the checksum failed. The other mode, Normal IRG, played a 3 second gap between packets. This time was selected to ensure that the drive could be stopped and restarted without it having advanced past the next packet.
Normal IRG was intended to allow the computer to perform more complex processing of the data, allowing it to stop the transfer and thereby giving it any amount of time needed. Normal IRG was not widely used, the only known examples being assembly language programs be loaded in ATASCII format, and the much more rarely used ability to load and store BASIC programming language as text. When stored as text, each line had to be read in and then converted to tokenized format, which could take some time. Generally, BASIC programs were instead stored in their tokenized form which could be read and written as binary data using the Short IRG.

## Booting from tape

The system lacked any sort of defined file format for general purpose files, but it did define a file format for bootable cassettes. This consisted of six bytes at the start of the file. The first of these bytes was unused filler. The second byte held the number of packets in the file, allowing up to 255 packets, or 32 kB of data. The next two bytes specified the starting location of where to place the data in memory, and the final two held the location to jump to, to start the program running. Directly after this header there is code expected for a potential multi stage boot that returns with the carry flag cleared in case of an error. So that's at least two extra bytes for setting the flag and returning from the subroutine.
When the system was booted with the Start key held down, the computer would attempt a cassette boot. This would play a tone on the television speaker to indicate the computer was ready, at which point the user would press Play on the drive and then press any key on the keyboard to indicate the drive was ready. The system would then assert the MOTOR line to begin playback, reading from the tape for up to 35 seconds looking for the header packet. If it was not found, or some other type of packet was found, an error was reported.

## Audio use and CAI

Another feature of the Atari SIO port was the AUDIOIN pin, which was connected to the left channel of the cassette. This allowed audio to be recorded to the channel and then played back through the television speaker. This was originally used with a series of computer aided instruction (CAI) cassettes that were sold by Atari and later by third parties. It was also sometimes used on bootable cassettes to provide music while the program loaded.
When used for CAI, a simple protocol was used to control playback. Each section of audio was marked with a short bit of mark tone, 5327 Hz. The associated program would then turn on the MOTOR line to begin playback and then read data until it saw a series of ones on the POKEY. At this point the program would stop the cassette again and interact with the user. This was typically used to stop and ask multiple-choice questions before proceeding to the next section of audio.
Atari saw the CAI market as a potential entry into the education market, forming an educational arm and producing a series of tapes early in the system's history. Best known among these was States and Capitals, a simple quiz game that became the topic of several of Atari's television ads.

## Performance

The basic signaling rate of the system was 600 bit/s, but there was some additional overhead due to the inter-record gaps and the packet structure. This reduced the effective rate somewhat, to perhaps 550 bit/s. This compares favorably to similar systems of the era, like the 300 bit/s Kansas City Standard or the formats used on the TI-99/4 or Commodore Datasette, which had similar signaling rates as Atari but wrote all data twice as an error correction mechanism and thus had effective rates closer to 300 bit/s.
In those markets where the cassette was the only cost-effective storage medium, the performance of the system was a serious problem. This led to a wide variety of software and hardware upgrades to improve performance. Among the best known was the Turbo 2000 system from Czechoslovakia, which increased the basic data rate of an XC12 to 2270 bit/s, almost four times as fast as the original standard.
In 1983, Carl Evens posted a short note on ways to improve the reliability of reading data from the decks. A fuller treatment appeared in Antic in February 1984. This involved replacing two resistors, one each in both the high and low-frequency filters. This reduces the width of their bell-curve-shaped frequency response and eliminates any overlap where a signal might produce output in both channels.