Design of what became the SIO had started as a system for interfacing to cassette recorders using the sound hardware to generate the appropriate tones.
This capability was retained in the production versions, allowing the Atari 410 and its successors to be relatively simple devices.

When set to operate the cassette, the outputs from channel 1 and 2 of the POKEY were sent to the DATAOUT rather than the clock pins.
The two channels were set to produce tones that were safe to record on the tape, 3995 Hz for a zero was in POKEY channel 2 and 5326 Hz for a one was in channel 1.
In this mode, when the POKEY read bits from the SERIN, any 1's resulted in channel 1 playing into the data pin, and 0's played channel 2.
In this fashion, a byte of data was converted into tones on the tape.
Reading, however, used a different system, as there was no A-to-D converter in the computer.
Instead, the cassette decks included two narrow-band filters tuned to the two frequencies.
During a read, the output of one or the other of these filters would be asserted as the bits were read off the tape.
These were sent as digital data back to the host computer.

Because the tape was subject to stretching and other mechanical problems that could speed or slow transport across the heads, the system used asynchronous reads and writes.
Data was written in blocks of 132 bytes per record, with the first two bytes being the bit pattern "01010101 01010101".
An inter-record gap between the blocks with no tones allowed the operating system to know when a new record was starting by looking for the leading zero.
It then rapidly read the port and timed the transitions of the timing bits from 0 to 1 and back to determine the precise data rate.
The next byte was a control byte specifying if this was a normal record of 128 data bytes, a short block, or an end-of-file.
Up to 128 bytes of data followed, itself followed by a checksum byte, including everything before the checksum.

The operation was further controlled by the MOTOR pin in the SIO port, dedicated to this purpose.
When this pin was low, the motor in the deck was turned off.
This allowed the user to press play or play and record without the tape beginning to move.
When the appropriate command was entered on the computer, MOTOR would be asserted and the cassette would begin to turn.

Another dedicated pin was the AUDIOIN, which was connected directly to the sound output circuits between the POKEY's D-to-A converters and the final output so that any signal on the pin mixed with the sound from the POKEY (if any) and was then sent to the television speaker.
This was connected to the left sound channel in the cassette, while the right channel was connected to the data pins.
This allowed users to record normal sounds on the left channel and then have them play through the television.
This was often combined with direct motor control to produce interactive language learning tapes and similar programs.
Some software companies would record sounds or music on this channel to make the loading process more enjoyable.
Design of what became the SIO had started as a system for interfacing to cassette recorders using the sound hardware to generate the appropriate tones. This capability was retained in the production versions, allowing the Atari 410 and its successors to be relatively simple devices.
When set to operate the cassette, the outputs from channel 1 and 2 of the POKEY were sent to the DATAOUT rather than the clock pins. The two channels were set to produce tones that were safe to record on the tape, 3995 Hz for a zero was in POKEY channel 2 and 5326 Hz for a one was in channel 1. In this mode, when the POKEY read bits from the SERIN, any 1's resulted in channel 1 playing into the data pin, and 0's played channel 2. In this fashion, a byte of data was converted into tones on the tape. Reading, however, used a different system, as there was no A-to-D converter in the computer. Instead, the cassette decks included two narrow-band filters tuned to the two frequencies. During a read, the output of one or the other of these filters would be asserted as the bits were read off the tape. These were sent as digital data back to the host computer.
Because the tape was subject to stretching and other mechanical problems that could speed or slow transport across the heads, the system used asynchronous reads and writes. Data was written in blocks of 132 bytes per record, with the first two bytes being the bit pattern "01010101 01010101". An inter-record gap between the blocks with no tones allowed the operating system to know when a new record was starting by looking for the leading zero. It then rapidly read the port and timed the transitions of the timing bits from 0 to 1 and back to determine the precise data rate. The next byte was a control byte specifying if this was a normal record of 128 data bytes, a short block, or an end-of-file. Up to 128 bytes of data followed, itself followed by a checksum byte, including everything before the checksum.
The operation was further controlled by the MOTOR pin in the SIO port, dedicated to this purpose. When this pin was low, the motor in the deck was turned off. This allowed the user to press play or play and record without the tape beginning to move. When the appropriate command was entered on the computer, MOTOR would be asserted and the cassette would begin to turn.
Another dedicated pin was the AUDIOIN, which was connected directly to the sound output circuits between the POKEY's D-to-A converters and the final output so that any signal on the pin mixed with the sound from the POKEY (if any) and was then sent to the television speaker. This was connected to the left sound channel in the cassette, while the right channel was connected to the data pins. This allowed users to record normal sounds on the left channel and then have them play through the television. This was often combined with direct motor control to produce interactive language learning tapes and similar programs. Some software companies would record sounds or music on this channel to make the loading process more enjoyable.
Atari SIO