Atari SIO
O Serial Input/Output, universalmente conhecido como SIO, foi um barramento proprietário e pilhas de protocolo de software relacionadas usadas nos computadores Atari de 8 bits para fornecer a maioria das funções de entrada/saída para esses computadores. Diferente da maioria dos sistemas de entrada/saída da época, como o RS-232, o SIO incluía um protocolo leve que permitia que múltiplos dispositivos fossem conectados a uma única porta em cadeia [en] que suportava dezenas de dispositivos. Ele também suportava operações plug-and-play. O designer do SIO, Joe Decuir [en], credita seu trabalho no sistema como a base para o USB.
Problema da FCC
O sistema SIO deve sua existência às regras da FCC sobre a quantidade permitida de interferência de RF que poderia vazar de qualquer dispositivo que gerasse diretamente sinais de televisão analógica. Essas regras exigiam quantidades muito baixas de vazamento e tinham que passar por um conjunto extenso de testes. Essas regras estavam passando por revisões durante o período em que o grupo Grass Valley [en] da Atari estava projetando a máquina Colleen, que se tornaria o Atari 800. O Apple II, um dos poucos computadores pré-fabricados que se conectavam a uma televisão naquela época, havia evitado esse problema ao não incluir o modulador RF no computador. Em vez disso, a Apple fez um acordo com uma empresa local de eletrônicos, M&R Enterprises, para vender moduladores plug-in sob o nome Sup'R'Mod [en]. Isso significava que a Apple não gerava, tecnicamente, sinais de televisão e não precisava passar por testes da FCC. Um dos principais vendedores da Atari, a Sears, achou que essa não era uma solução adequada para suas vendas diretas, então, para atender aos requisitos de interferência, eles envolveram todo o sistema em um bloco de alumínio fundido de 2 mm de espessura.
Desvio da TI
Durante uma visita no início de 1978, um vendedor da Texas Instruments (TI) demonstrou um sistema consistindo em um cabo de fibra óptica com transceptores moldados em ambas as extremidades. Joe Decuir sugeriu que eles poderiam usar isso para enviar o sinal de vídeo para um modulador RF externo, que seria tão simples de usar quanto o cabo coaxial necessário para levar o sinal à televisão. Agora, o computador poderia ter slots normais; como o Apple II, a parte de RF seria inteiramente externa e poderia ser testada separadamente do computador. Quando Decuir explicou seu conceito, os "olhos do vendedor quase saltaram". Desconhecido para a equipe de Grass Valley, a TI estava, naquela época, no meio do desenvolvimento do TI-99/4 e enfrentava o mesmo problema com a saída de RF. Quando Decuir explicou a ideia para seu chefe, Wade Tuma, Tuma respondeu que "Não, a FCC nunca nos deixaria escapar com essa artimanha". Isso se provou verdadeiro; a TI usou a ideia de Decuir, e quando a levaram para a FCC em 1979, a FCC rejeitou-a de imediato. A TI teve que reprojetar seu sistema, e o atraso resultante significou que os Ataris chegaram ao mercado primeiro.
SIO
Com esse caminho para permitir slots de cartão bloqueado, Decuir voltou ao problema de fornecer expansão por meio de algum tipo de sistema externo. Nessa época, muito trabalho já havia sido feito usando o chip POKEY da Atari para operar um deck de cassete, gerando diretamente sons que seriam gravados na fita. Percebeu-se que, com modificações adequadas, o POKEY poderia contornar o hardware de conversão digital-para-analógico e gerar saída TTL diretamente. Para produzir um barramento digital TTL, o sistema SIO usava dois dos quatro canais de som do POKEY para produzir tons estáveis que representavam sinais de clock de uma determinada frequência. Um buffer de um byte era usado para enviar e receber dados; toda vez que o sinal de clock alternava, um bit do buffer era lido ou escrito. Quando todos os oito bits eram lidos ou escritos, o sistema gerava uma interrupção que acionava o sistema operacional para ler ou escrever mais dados.
Hardware
O barramento SIO foi implementado usando um arranjo personalizado de conector D de 13 pinos (embora não seja D-subminiature) com os conectores machos nos dispositivos e os conectores fêmeas em ambas as extremidades dos cabos. Os conectores eram fisicamente robustos para permitir uso repetido, com pinos muito fortes no soquete do dispositivo e conectores com mola nos cabos, em oposição ao ajuste por fricção como em um conector D típico. A maioria dos dispositivos tinha portas de entrada e saída para permitir a conexão em cadeia de periféricos, embora o Atari 410 [en] Program Recorder tivesse que ser colocado no final da cadeia e, portanto, não incluísse uma porta de saída.
Comunicações
O SIO era controlado pelo chip POKEY da Atari, que incluía vários temporizadores de propósito geral. Quatro deles permitiam controle fino sobre as taxas de temporização e eram destinados a ser usados para saída de som, conectando-os a um conversor digital-para-analógico (D-to-A) e, em seguida, misturando-os no sinal de televisão antes de entrar no modulador RF. Eles foram reaproveitados como base do sistema SIO, usados como clocks em alguns modos ou para produzir os sinais de saída diretamente em outros. O sistema incluía um único "registrador de deslocamento" que era usado para semi-automatizar a maioria das transferências de dados. Isso consistia em um único valor de 8 bits, LSB primeiro, que era usado para bufferizar leituras e gravações. O usuário acessa esses através de dois locais de memória conhecidos como SEROUT para escrita e SERIN para leitura. Esses eram "registradores sombra", locais na RAM que espelhavam registradores nos vários chips de suporte, como o POKEY. Os bits de dados eram enquadrados com um único bit de início zero e um único bit de parada um, e não era usado paridade.
Controle de dispositivos
O sistema SIO permitia que os dispositivos fossem conectados em cadeia e, portanto, exigia alguma forma de identificar que as informações nos vários pinos de dados eram destinadas a um dispositivo específico na cadeia. Isso era realizado com o pino COMMAND. O pino COMMAND normalmente era mantido alto, e quando era puxado para baixo, os dispositivos no barramento eram obrigados a escutar um "quadro de comando". Isso consistia em um pacote de 5 bytes; o primeiro byte era o ID do dispositivo, o segundo era um número de comando específico do dispositivo, e então dois bytes auxiliares de dados que podiam ser usados pelo driver para qualquer propósito. Esses quatro eram seguidos por um byte de checksum. O pino COMMAND voltava a ficar alto quando o quadro estava completo.
Uso de cassete
O design do que se tornou o SIO começou como um sistema para interface com gravadores de cassete usando o hardware de som para gerar os tons apropriados. Essa capacidade foi mantida nas versões de produção, permitindo que o Atari 410 e seus sucessores fossem dispositivos relativamente simples. Quando configurado para operar o cassete, as saídas dos canais 1 e 2 do POKEY eram enviadas para o DATAOUT em vez dos pinos de clock. Os dois canais eram definidos para produzir tons que fossem seguros para gravar na fita, 3995 Hz para zero no canal 2 do POKEY e 5326 Hz para um no canal 1. Nesse modo, quando o POKEY lia bits do SERIN, quaisquer 1's resultavam no canal 1 tocando no pino de dados, e 0's tocavam no canal 2. Dessa forma, um byte de dados era convertido em tons na fita. A leitura, no entanto, usava um sistema diferente, pois não havia conversor A-to-D no computador. Em vez disso, os decks de cassete incluíam dois filtros de banda estreita sintonizados para as duas frequências. Durante uma leitura, a saída de um ou outro desses filtros seria afirmada à medida que os bits eram lidos da fita. Esses eram enviados como dados digitais de volta para o computador host.


