SIO

What is the SIO?

The SIO stands for the "Serial Input/Output". It is a data transfer protocol used by the Atari 8-bit machines to communicate with a printer, disk drive, modem etc. via the SIO connector. These transfers are controlled by the POKEY chip.

Is this something like RS-232?

Basically, yes. It is possible to connect the SIO port to a RS-232 port, the only one you should change is the voltage: the SIO uses TTL-signals. Serial transfer parameters usually are as follows: The last parameter may vary, as for example so called "cassette recorders" (who can remember such data storage?) use 600 baud; also some disk drives may operate at 38400, 52000, 67000, 96000 or 125000 baud.

Command Frame

Offset Name Description
$00 DDEVIC Device ID
$01 DCOMND Command
$02 DAUX1 Auxiliary byte 1
$03 DAUX2 Auxiliary byte 2
$04   Checksum of previous bytes

Communication

First, the computer sets the COMMAND line at the SIO connector.
Then sends the command block (4 bytes + checksum)
Then waits for a response (1 byte without a checksum):
$41 (A) = Acknowledge, the command is valid and will be executed.
$4E (N) = Negative, the command is invalid.

If the device responds "N", the transfer is aborted.
Otherwise ("A") the data block is transferred with the checksum.
Now the computer waits for a final acknowledge (1 B without a checksum):
$43 (C) = Complete, operation completed successfully.
$45 (E) = an Error has occurred.

Device IDs

Floppy Printer Cassette RS232
IDDeviceIDDeviceIDDeviceIDDevice
$31D1:$40P1: $60C: (dummy)$50R1:
$32D2:$41P2: $51R2:
$33D3:$42P3: $52R3:
$34D4:$43P4: $53R4:
$35