Atari SIO
|
As portas de um Atari 800 com a porta SIO segunda da esquerda. | |||
| Tipo | Barramento serial | ||
|---|---|---|---|
| História de produção | |||
| Designer | Joe Decuir [en]/Atari Inc. | ||
| Projetada(o) | 1978 | ||
| Fabricante | Atari Inc. | ||
| Produzida(o) | 1979 a 1992 | ||
| Especificações gerais | |||
| Plugável enquanto o dispositivo está ligado | em teoria | ||
| Externa(o) | sim | ||
| Pinos | 13 | ||
| Conector | Variante D-subminiature | ||
| Dados | |||
| Sinal de dados | Serial bidirecional | ||
| Largura | 8 + start/stop = 10 | ||
| Bitrate | ~120 kbit/s máximo | ||
| Dispositivos máx. |
256 máximo 8 em uso | ||
| Protocolo | Serial | ||
| Pino 12 | (apenas 400/800) | ||
O Serial Input/Output (Entrada/Saída Serial), 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.
O SIO foi desenvolvido para permitir expansão sem usar slots de cartão interno, como no Apple II, devido a problemas com a FCC sobre interferência de rádio. Isso exigiu que ele fosse bastante flexível em termos de suporte a dispositivos. Dispositivos que usavam a interface SIO incluíam impressoras, unidades de disquete, decks de cassete, modems e caixas de expansão. Alguns dispositivos tinham drivers baseados em ROM que eram copiados para o computador host quando inicializados, permitindo que novos dispositivos fossem suportados sem suporte nativo embutido no computador.
O SIO exigia lógica nos periféricos para suportar os protocolos, e em alguns casos uma quantidade significativa de poder de processamento era necessária - a unidade de disquete Atari 810 incluía um MOS Technology 6507 [en], por exemplo. Além disso, o grande conector personalizado era caro. Isso aumentou os custos do sistema SIO, e Decuir culpa isso por "afundar o sistema".[1][2] Houve esforços malsucedidos para reduzir o custo do sistema durante a história dos 8 bits.
O nome "SIO" refere-se propriamente apenas às seções do sistema operacional que lidavam com a troca de dados; na documentação da Atari, o barramento em si é simplesmente o "barramento serial" ou "barramento de interface", embora isso também seja às vezes referido como SIO.[3] No uso comum, SIO refere-se a todo o sistema, desde o sistema operacional até o barramento e até os conectores físicos.
História
[editar | editar código]Problema da FCC
[editar | editar código]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.[4]
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.[4]
O Colleen foi originalmente projetado para ser um console de jogos, o sucessor do Atari 2600. O sucesso do Apple II levou o sistema a ser reposicionado como um computador doméstico, e esse mercado exigia dispositivos periféricos. Em máquinas como o Apple II, os periféricos eram suportados colocando uma placa adaptadora em um dos slots internos da máquina, passando um cabo por um buraco na caixa e conectando o dispositivo a esse cabo. Um buraco grande o suficiente para tal cabo significaria que o Colleen falharia nos testes de RF, o que apresentava um problema sério. Além disso, resfriar as placas por convecção seria muito difícil.[4]
Desvio da TI
[editar | editar código]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.[4]
Quando Decuir explicou seu conceito, os "olhos do vendedor quase saltaram".[4] 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".[4] 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.[4]
SIO
[editar | editar código]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.[4]
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.[5]
Diferente de uma interface de cassete, onde normalmente apenas um único dispositivo seria usado, uma porta de expansão externa precisaria ser capaz de suportar mais de um dispositivo. Para suportar isso, um protocolo simples foi desenvolvido e vários novos pinos foram adicionados à porta de cassete original simples. O mais importante entre eles era o pino COMMAND, que acionava os dispositivos para escutar uma mensagem de 5 bytes que ativava um dos dispositivos no barramento e solicitava dados (ou enviava comandos).[6] Eles também adicionaram os pinos PROCEED e INTERRUPT, que podiam ser usados pelos dispositivos para definir bits em registradores de controle no host, mas esses não foram usados no sistema implantado. Da mesma forma, os sinais de temporização gerados pelo POKEY foram enviados nos pinos CLOCKOUT e CLOCKIN, embora o protocolo assíncrono não os utilizasse.[7]
Descrição
[editar | editar código]Hardware
[editar | editar código]

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.[8] 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
[editar | editar código]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,[9] 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.[9]
Para escrever dados no modo síncrono, os canais de temporização principais do POKEY eram definidos para uma taxa de clock apropriada, digamos 9600 bit/s. Qualquer dado escrito no registrador SEROUT era então enviado um bit de cada vez toda vez que o sinal ficava alto. Era temporizado para que o sinal retornasse a baixo no meio do bit. Quando todos os 10 bits (incluindo início e parada) fossem enviados, o POKEY enviava uma interrupção mascarada para a CPU para indicar que estava pronto para outro byte. Na leitura, se outro byte de dados fosse recebido antes que o SERIN fosse lido, o 3º bit do SKSTAT era definido como verdadeiro para indicar o estouro. Bits individuais sendo lidos também eram enviados para o 4º bit do SKSTAT à medida que chegavam, permitindo a leitura direta dos dados sem esperar pelo enquadramento completo.
O sistema oficialmente suportava velocidades de até 19.200 bit/s, mas essa taxa foi escolhida apenas porque o analisador de protocolo dos engenheiros da Atari atingia esse limite. O sistema era na verdade capaz de desempenho muito maior. Vários dispositivos de terceiros, especialmente unidades de disquete, usavam hardware e drivers personalizados para aumentar significativamente as velocidades de transmissão para até 72.000 bit/s.
Embora o sistema tivesse pinos CLOCKOUT e CLOCKIN que poderiam, em teoria, ser usados para comunicações síncronas, na prática apenas o sistema assíncrono era usado. Nesse caso, uma velocidade base era definida como acima no POKEY, que seguiria mudanças de até 5% dessa taxa base. Isso tornava muito mais fácil trabalhar com dispositivos reais onde problemas mecânicos ou elétricos causavam pequenas variações nas taxas ao longo do tempo. Um exemplo era o deck de cassete, onde o esticamento da fita poderia alterar a velocidade; outro é um modem, onde o sistema remoto pode não estar exatamente sincronizado com uma determinada velocidade.
Controle de dispositivos
[editar | editar código]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.[9]
O pino COMMAND normalmente era mantido alto,[8] 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.[6] O pino COMMAND voltava a ficar alto quando o quadro estava completo.[10]
Ao receber o pacote, o dispositivo especificado no primeiro byte era esperado para responder. Isso consistia em um único byte contendo um caractere ASCII, "A" para Acknowledge se o pacote fosse decodificado corretamente e o checksum correspondesse, "N" caso contrário. Para comandos que trocavam dados, o quadro de comando seria seguido por um "quadro de dados" de ou para o dispositivo selecionado. Esse quadro seria então reconhecido pelo receptor com um "C" para Complete ou "E" para erro.[11] Como cada pacote de 128 bytes de dados exigia outro quadro de comando antes que o próximo pudesse ser enviado, o throughput era afetado por problemas de latência; a unidade de disquete Atari 810 normalmente usava uma velocidade de 19.200 bit/s, mas era limitada a cerca de 6.000 bit/s como resultado da sobrecarga.[12]
Os dispositivos eram enumerados mecanicamente, normalmente usando pequenos interruptores DIP.[13] Cada classe de dispositivo recebia um conjunto diferente de 16 números potenciais baseados em números hexadecimais, o intervalo de $30 dólares para unidades de disquete e $40 dólares para impressoras, por exemplo. No entanto, cada driver podia suportar quantos ou quantos poucos dispositivos quisesse; o driver da impressora Atari 820 suportava apenas uma única impressora numerada de $40 dólares,[14] enquanto os drivers de disco podiam suportar quatro unidades numeradas de $31 a $34 dólares.[15]
Uso de cassete
[editar | editar código]
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.[16]
Como a fita estava sujeita a esticamento e outros problemas mecânicos que podiam acelerar ou desacelerar o transporte através das cabeças, o sistema usava leituras e gravações assíncronas. Os dados eram escritos em blocos de 132 bytes por registro, com os dois primeiros bytes sendo o padrão de bits "01010101 01010101". Um intervalo entre registros sem tons permitia que o sistema operacional soubesse quando um novo registro estava começando, procurando pelo zero inicial. Ele então lia rapidamente a porta e cronometrava as transições dos bits de temporização de 0 para 1 e vice-versa para determinar a taxa de dados precisa. O próximo byte era um byte de controle especificando se este era um registro normal de 128 bytes de dados, um bloco curto ou um fim de arquivo. Até 128 bytes de dados seguiam, seguidos por um byte de checksum, incluindo tudo antes do checksum.[16]
A operação era ainda controlada pelo pino MOTOR na porta SIO, dedicado a esse propósito. Quando esse pino estava baixo, o motor no deck era desligado. Isso permitia que o usuário pressionasse play ou play e record sem que a fita começasse a se mover. Quando o comando apropriado era inserido no computador, MOTOR era afirmado e o cassete começava a girar.[16]
Outro pino dedicado era o AUDIOIN, que era conectado diretamente aos circuitos de saída de som entre os conversores D-to-A do POKEY e a saída final, de modo que qualquer sinal no pino se misturava com o som do POKEY (se houver) e era então enviado para o alto-falante da televisão. Isso era conectado ao canal de som esquerdo no cassete, enquanto o canal direito era conectado aos pinos de dados. Isso permitia que os usuários gravassem sons normais no canal esquerdo e os reproduzissem através da televisão. Isso era frequentemente combinado com controle direto do motor para produzir fitas interativas de aprendizado de idiomas e programas similares. Algumas empresas de software gravavam sons ou música neste canal para tornar o processo de carregamento mais agradável.[17]
Ver também
[editar | editar código]Referências
[editar | editar código]- ↑ «Interview with Joe Decuir». Atari Museum
- ↑ Atari - Computer Systems, Atari, Inc., consultado em 14 de Janeiro de 2015, cópia arquivada em 8 de Dezembro de 2015
- ↑ SIO 1980, p. 1.
- ↑ a b c d e f g h Decuir.
- ↑ SIO 1980, pp. 6-7.
- ↑ a b SIO 1980, p. 13.
- ↑ SIO 1980, p. 8.
- ↑ a b SIO 1980, p. 7.
- ↑ a b c SIO 1980, p. 6.
- ↑ SIO 1980, p. 18.
- ↑ SIO 1980, p. 16.
- ↑ Atari 810 Disk Drive Operator's Manual
- ↑ «Indus GT Installation»
- ↑ SIO 1980, p. 25.
- ↑ SIO 1980, p. 28.
- ↑ a b c DeRe 1981, p. Apêndice C.
- ↑ Victor, John (Outubro de 1982). «Audio While You Cload». Antic
Bibliografia
[editar | editar código]- Atari 400/800 Operating System Users Manual. [S.l.]: Atari. 1980
- Atari 400/800 Hardware Manual (PDF). [S.l.]: Atari. 1980
- Atari Home Computer System: Serial Input/Output Interface (PDF). [S.l.: s.n.] 1980
- De Re Atari. [S.l.]: Atari. 1981
- Decuir, Joe. «Interview with Joe Decuir» (entrevista). Curt Vendel