Articulo de referencia

Atari SIO

8 in use"},"data_style":{"wt":"Serial"},"physical_connector":{"wt":"[[D-subminiature]] variant"},"num_pins":{"wt":"13"},"pinout_image":{"wt":""},"pinout_caption":{"wt":""},"pin1...

El sistema de entrada/salida serie , conocido universalmente como SIO , era un bus periférico propietario y un conjunto de protocolos de software relacionados que se utilizaban en los ordenadores Atari de 8 bits para gestionar la mayoría de las funciones de entrada/salida . A diferencia de la mayoría de los sistemas de E/S de la época, como RS-232 , SIO incluía un protocolo ligero que permitía conectar varios dispositivos a un único puerto en cadena , compatible con decenas de dispositivos. Además, admitía la función plug-and-play . El diseñador de SIO, Joe Decuir , considera que su trabajo en este sistema sentó las bases del USB .

SIO se desarrolló para permitir la expansión sin usar ranuras internas para tarjetas , como en el Apple II , debido a problemas con la FCC por interferencias de radio . Esto requirió que fuera bastante flexible en cuanto a la compatibilidad con dispositivos. Entre los dispositivos que usaban la interfaz SIO se incluían impresoras, disqueteras, reproductores de casetes, módems y cajas de expansión. Algunos dispositivos tenían controladores basados ​​en ROM que se copiaban al ordenador anfitrión al arrancar, lo que permitía admitir nuevos dispositivos sin necesidad de compatibilidad nativa integrada en el propio ordenador.

SIO requería lógica en los periféricos para soportar los protocolos, y en algunos casos se necesitaba una cantidad significativa de potencia de procesamiento; por ejemplo, la unidad de disquete del Atari 810 incluía un MOS Technology 6507. Además, el conector personalizado de gran tamaño era caro. Esto elevó los costos del sistema SIO, y Decuir lo atribuye a esto por "hundir el sistema". [ 1 ] [ 2 ] Hubo esfuerzos infructuosos para reducir el costo del sistema durante la historia de los 8 bits.

El nombre "SIO" se refiere propiamente solo a las secciones del sistema operativo que gestionaban el intercambio de datos; en la documentación de Atari, el bus en sí es simplemente el "bus serie" o "bus de interfaz", aunque a veces también se le denomina SIO. [ 3 ] En el uso común, SIO se refiere a todo el sistema, desde el sistema operativo hasta el bus e incluso los conectores físicos.

Historia

Haciendo hincapié en que no fue el único colaborador de SIO, Joe Decuir atribuyó su creación al deseo de Atari de contar con software de productividad y periféricos para sus ordenadores domésticos Atari de 8 bits . [ 4 ]

Problema de la FCC

El sistema SIO debe su existencia, en última instancia, a las normas de la FCC sobre la cantidad permitida de interferencia de radiofrecuencia que podía filtrarse de cualquier dispositivo que generara directamente señales de televisión analógica . Estas normas exigían niveles muy bajos de fuga y debían superar una serie de pruebas exhaustivas. Dichas normas estaban siendo revisadas durante el período en que el grupo Grass Valley de Atari diseñaba la máquina Colleen, que posteriormente se convertiría en la Atari 800. [ 5 ]

El Apple II , una de las pocas máquinas prefabricadas que se conectaban a un televisor en aquella época, evitó este problema al no incluir el modulador de RF en el ordenador. En su lugar, Apple llegó a un acuerdo con una empresa local de electrónica, M&R Enterprises, para vender moduladores enchufables bajo el nombre de Sup'R'Mod . Esto significaba que el Apple, técnicamente, no generaba señales de televisión y no tenía que someterse a las pruebas de la FCC. Uno de los principales proveedores de Atari, Sears , consideró que esta no era una solución adecuada para sus ventas directas, por lo que, para cumplir con los requisitos de interferencia, encapsuló todo el sistema en un bloque de aluminio fundido de 2  mm de espesor. [ 5 ]

Colleen fue concebida originalmente como una consola de videojuegos , sucesora de la Atari 2600. El éxito de la Apple II llevó a que el sistema se reposicionara como ordenador doméstico , y este mercado requería periféricos. En máquinas como la Apple II, los periféricos se admitían colocando una tarjeta adaptadora en una de las ranuras internas de la máquina, pasando un cable a través de un orificio en la carcasa y conectando el dispositivo a dicho cable. Un orificio lo suficientemente grande para un cable de este tipo implicaría que Colleen no superara las pruebas de RF, lo que representaba un grave problema. Además, la refrigeración por convección de las tarjetas sería muy difícil. [ 5 ]

Desvío de TI

Durante una visita a principios de 1978, un vendedor de Texas Instruments (TI) mostró un sistema que consistía en un cable de fibra óptica con transceptores moldeados en ambos extremos. Decuir sugirió que podrían usarlo para enviar la señal de video a un modulador de RF externo, que sería tan sencillo de usar como el cable coaxial necesario para llevar la señal al televisor. Ahora la computadora podría tener ranuras normales; al igual que la Apple II, la parte de RF sería completamente externa y podría probarse por separado de la computadora. [ 5 ]

Cuando Decuir explicó su concepto, al vendedor "casi se le salen los ojos". [ 5 ] Sin que el equipo de Grass Valley lo supiera, TI estaba en ese momento desarrollando la TI-99/4 y se enfrentaba al mismo problema con la salida de RF. Cuando Decuir le explicó la idea a su jefe, Wade Tuma, este respondió: "No, la FCC jamás nos dejaría salirnos con la nuestra con esa maniobra". [ 5 ] Esto resultó ser cierto; TI utilizó la idea de Decuir, y cuando la presentaron a la FCC en 1979, la FCC la rechazó de plano. TI tuvo que rediseñar su sistema, y ​​el retraso resultante significó que los Atari llegaran primero al mercado. [ 5 ]

SIO

Al verse frustrado este camino para permitir ranuras para tarjetas, Decuir volvió al problema de proporcionar expansión a través de algún tipo de sistema externo. [ 5 ]

Para entonces, se había avanzado considerablemente en el uso del chip POKEY de Atari para controlar una platina de casete mediante la emisión directa de sonidos que se grabarían en la cinta. Se comprendió que, con las modificaciones adecuadas, el POKEY podía prescindir del hardware de conversión digital-analógica y controlar directamente la salida TTL . Para generar un bus digital TTL, el sistema SIO utilizaba dos de los cuatro canales de sonido del POKEY para producir tonos constantes que representaban señales de reloj de una frecuencia determinada. Se utilizaba un búfer de un byte para enviar y recibir datos; cada vez que la señal de reloj cambiaba de estado, se leía o escribía un bit del búfer. Cuando se leían o escribían los ocho bits, el sistema generaba una interrupción que activaba el sistema operativo para leer o escribir más datos. [ 6 ]

A diferencia de una interfaz de casete, donde normalmente solo se usaría un dispositivo, un puerto de expansión externo necesitaría admitir más de uno. Para ello, se desarrolló un protocolo simple y se añadieron varios pines nuevos al puerto de casete original. El más importante fue el pin COMMAND, que activaba los dispositivos para que escucharan un mensaje de 5 bytes que activaba uno de los dispositivos en el bus y le solicitaba datos (o le enviaba comandos). [ 7 ] También se añadieron los pines PROCEED e INTERRUPT, que los dispositivos podían usar para establecer bits en los registros de control del host, pero estos no se usaron en el sistema implementado. Del mismo modo, las señales de temporización generadas por el POKEY se enviaban a través de los pines CLOCKOUT y CLOCKIN, aunque el protocolo asíncrono no los utilizaba. [ 8 ]

Legado

SIO no fue patentado por Atari. Decuir afirmó que cuando un especulador de patentes demandó al USB Implementers Forum , Microsoft y otras compañías citaron SIO como estado de la técnica anterior . [ 4 ]

Descripción

Hardware

El conector SIO utiliza láminas metálicas con resorte para establecer una conexión firme con los pines de los dispositivos. Las ranuras practicadas en el conector permiten que las láminas se muevan.
El Atari 850 proporcionaba puertos de impresora Centronics y puertos serie RS-232 para conectarse a dispositivos de terceros. Como es típico en los dispositivos SIO, dispone de puertos de entrada y salida para permitir la conexión en cadena.

El bus SIO se implementó utilizando una disposición personalizada de conectores D de 13 pines (aunque no D-subminiatura ) con los conectores macho en los dispositivos y los conectores hembra en cada extremo de los cables. [ 9 ] Los conectores eran físicamente robustos para permitir el uso repetido, con pines muy fuertes en el zócalo del dispositivo y conectores con resorte en los cables, a diferencia del ajuste por fricción de un conector D típico. La mayoría de los dispositivos tenían puertos de entrada y salida para permitir la conexión en cadena de periféricos, aunque el grabador de programas Atari 410 tenía que colocarse al final de la cadena y, por lo tanto, no incluía un puerto de salida.

Comunicaciones

El sistema SIO estaba controlado por el chip POKEY de Atari , que incluía varios temporizadores de propósito general. Cuatro de ellos permitían un control preciso de la temporización y estaban diseñados para la salida de sonido, conectándolos a un convertidor digital-analógico (D/A) y mezclándolos con la señal de televisión antes de que entrara en el modulador de RF. Estos temporizadores se reutilizaron como base del sistema SIO, funcionando como relojes en algunos modos o generando directamente las señales de salida en otros.

El sistema incluía un único registro de desplazamiento que se utilizaba para semiautomatizar la mayoría de las transferencias de datos. Este consistía en un único valor de 8 bits, con el bit menos significativo primero, [ 10 ] que se utilizaba para almacenar en búfer las lecturas y escrituras. El usuario accedía a estos registros a través de dos ubicaciones de memoria conocidas como SEROUT para escritura y SERIN para lectura. Estos eran registros de sombra, ubicaciones en la RAM que reflejaban los registros de los distintos chips de soporte, como POKEY. Los bits de datos se enmarcaban con un único bit de inicio cero y un único bit de parada uno, y no se utilizaba paridad. [ 10 ]

Para escribir datos en modo síncrono, los canales del temporizador principal del POKEY se configuraron a una frecuencia de reloj adecuada , por ejemplo, 9600  bit/s. Cualquier dato escrito en el registro SEROUT se enviaba bit a bit cada vez que la señal pasaba a nivel alto. El proceso se programó para que la señal volviera a nivel bajo en el centro del bit. Cuando se habían enviado los 10 bits (incluidos el de inicio y el de parada), el POKEY enviaba una interrupción enmascarable a la CPU para indicar que estaba lista para recibir otro byte. Al leer, si se recibía otro byte de datos antes de leer SERIN, el tercer bit de SKSTAT se ponía a verdadero para indicar el desbordamiento. Los bits individuales que se leían también se enviaban al cuarto bit de SKSTAT a medida que llegaban, lo que permitía la lectura directa de los datos sin esperar a que se completara el tramado.

Aunque el sistema contaba con pines CLOCKOUT y CLOCKIN que, en teoría, podían utilizarse para comunicaciones síncronas, en la práctica solo se empleaba el sistema asíncrono. En este caso, se configuraba una velocidad base en el POKEY, como se indicó anteriormente, que se adaptaba a variaciones de hasta un 5 % respecto a dicha velocidad base. Esto facilitaba enormemente el trabajo con dispositivos reales donde problemas mecánicos o eléctricos provocaban ligeras variaciones en las velocidades a lo largo del tiempo. Un ejemplo era la platina de casete, donde el estiramiento de la cinta podía alterar la velocidad; otro ejemplo era un módem, en el que el sistema remoto podía no estar sincronizado con precisión a una velocidad determinada.

El sistema admitía oficialmente velocidades de hasta 19 200  bits/s, pero esta velocidad se eligió únicamente porque el analizador de protocolos del ingeniero de Atari alcanzaba su límite máximo. En realidad, el sistema era capaz de un rendimiento mucho mayor. Varios dispositivos de terceros, especialmente las unidades de disquete , utilizaban hardware y controladores personalizados para aumentar considerablemente la velocidad de transmisión hasta alcanzar los 72 000  bits/s.

Control del dispositivo

El sistema SIO permitía conectar dispositivos en cadena, por lo que requería algún método para identificar que la información en los distintos pines de datos estaba destinada a un dispositivo específico en la cadena. Esto se lograba con el pin COMMAND. [ 10 ]

El pin COMMAND normalmente se mantenía en estado alto, [ 9 ] y cuando se ponía en estado bajo, los dispositivos del bus debían estar atentos a una "trama de comando". Esta consistía en un paquete de 5 bytes; el primer byte era la identificación del dispositivo, el segundo un número de comando específico del dispositivo y, a continuación, dos bytes auxiliares de datos que el controlador podía utilizar para cualquier propósito. Estos cuatro bytes iban seguidos de un byte de suma de comprobación. [ 7 ] El pin COMMAND volvía a ponerse en estado alto cuando la trama se completaba. [ 11 ]

Al recibir el paquete, se esperaba que el dispositivo especificado en el primer byte respondiera. Esta respuesta consistía en un solo byte que contenía un carácter ASCII: "A" para acuse de recibo si el paquete se decodificaba correctamente y la suma de verificación coincidía, y "N" en caso contrario. Para los comandos que intercambiaban datos, la trama de comando iba seguida de una "trama de datos" desde o hacia el dispositivo seleccionado. El receptor confirmaba esta trama con una "C" para completado o una "E" para error. [ 12 ] Dado que cada paquete de 128 bytes de datos requería otra trama de comando antes de que se pudiera enviar el siguiente, el rendimiento se veía afectado por problemas de latencia; la unidad de disco del Atari 810 normalmente utilizaba una  velocidad de 19 200 bit/s, pero estaba limitada a unos 6000  bit/s como resultado de la sobrecarga. [ 13 ]

Los dispositivos se enumeraban mecánicamente, generalmente mediante pequeños interruptores DIP . [ 14 ] A cada clase de dispositivo se le asignaba un conjunto diferente de 16 números potenciales basados ​​en números hexadecimales, por ejemplo, el rango $30 para las unidades de disco y $40 para las impresoras. Sin embargo, cada controlador podía admitir tantos dispositivos como quisiera; el controlador de impresora del Atari 820 solo admitía una impresora numerada como $40, [ 15 ] mientras que los controladores de disco podían admitir cuatro unidades numeradas del $31 al $34. [ 16 ]

Uso de casetes

El modelo original 410 fue reemplazado por el mucho más pequeño 1010 durante la era XL.

El diseño de lo que se convertiría en el SIO comenzó como un sistema de interfaz para grabadoras de casete que utilizaba las capacidades de sonido del chip POKEY para generar los tonos adecuados. Esta capacidad se mantuvo en las versiones de producción, lo que permitió que el Atari 410 y sus sucesores fueran dispositivos relativamente sencillos.

Cuando se configuraba para operar el casete, las salidas de los canales 1 y 2 del POKEY se enviaban a la salida de datos (DATAOUT) en lugar de a los pines de reloj. Los dos canales estaban configurados para producir tonos seguros para grabar en la cinta: 3995  Hz para un cero en el canal 2 del POKEY y 5326  Hz para un uno en el canal 1. En este modo, cuando el POKEY leía bits de la SERIN, cualquier 1 resultaba en la reproducción del canal 1 en el pin de datos, y los 0 en el canal 2. De esta manera, un byte de datos se convertía en tonos en la cinta. Sin embargo, la lectura utilizaba un sistema diferente, ya que no había un convertidor analógico-digital en la computadora. En su lugar, las pletinas de casete incluían dos filtros de banda estrecha sintonizados a las dos frecuencias. Durante una lectura, la salida de uno u otro de estos filtros se activaba a medida que se leían los bits de la cinta. Estos se enviaban como datos digitales de vuelta a la computadora host. [ 17 ]

Debido a que la cinta estaba sujeta a estiramientos y otros problemas mecánicos que podían acelerar o ralentizar el transporte a través de los cabezales, el sistema utilizaba lecturas y escrituras asíncronas. Los datos se escribían en bloques de 132 bytes por registro, siendo los dos primeros bytes el patrón de bits "01010101 01010101". Un espacio entre registros sin tonos permitía al sistema operativo saber cuándo comenzaba un nuevo registro buscando el cero inicial . A continuación, leía rápidamente el puerto y cronometraba las transiciones de los bits de temporización de 0 a 1 y viceversa para determinar la velocidad de datos precisa. El siguiente byte era un byte de control que especificaba si se trataba de un registro normal de 128 bytes de datos, un bloque corto o el final del archivo. Le seguían hasta 128 bytes de datos, seguidos a su vez por un byte de suma de comprobación, que incluía todo lo anterior a la suma de comprobación. [ 17 ]

El funcionamiento se controlaba además mediante el pin MOTOR del puerto SIO, dedicado a este fin. Cuando este pin estaba en estado bajo, el motor de la platina se apagaba. Esto permitía al usuario pulsar reproducir o reproducir y grabar sin que la cinta comenzara a moverse. Al introducir el comando correspondiente en el ordenador, se activaba MOTOR y el casete comenzaba a girar. [ 17 ]

Otro pin dedicado era el AUDIOIN, que se conectaba directamente a los circuitos de salida de sonido entre los convertidores D/A del POKEY y la salida final, de modo que cualquier señal en el pin se mezclaba con el sonido del POKEY (si lo había) y se enviaba al altavoz del televisor. Este se conectaba al canal de sonido izquierdo del casete, mientras que el canal derecho se conectaba a los pines de datos. Esto permitía a los usuarios grabar sonidos normales en el canal izquierdo y reproducirlos a través del televisor. A menudo, esto se combinaba con el control directo del motor para producir cintas interactivas de aprendizaje de idiomas y programas similares. Algunas empresas de software grababan sonidos o música en este canal para hacer más ameno el proceso de carga. [ 18 ]

Véase también

Referencias

  1. "Entrevista con Joe Decuir" . Museo Atari .
  2. Atari - Sistemas informáticos , Atari, Inc. , archivado del original el 8 de diciembre de 2015 , consultado el 14 de enero de 2015.
  3. SIO 1980 , pág. 1.
  4. 1 2 VCF East 2019 -- Joe Decuir -- Computadoras Atari Serie 800: 40 años . Vintage Computer Federation. 6 de mayo de 2019 [Presentación del 5 de mayo de 2019]. El evento ocurre a las 37:15 . Recuperado el 24 de mayo de 2026 a través de YouTube.
  5. 1 2 3 4 5 6 7 8 Decorar .
  6. SIO 1980 , págs. 6–7.
  7. 1 2 SIO 1980 , pág. 13.
  8. SIO 1980 , pág. 8.
  9. 1 2 SIO 1980 , pág. 7.
  10. 1 2 3 SIO 1980 , pág. 6.
  11. SIO 1980 , pág. 18.
  12. SIO 1980 , pág. 16.
  13. Manual del operador de la unidad de disquete Atari 810 (PDF) (Informe técnico). 1979. pág. 6. 
  14. "Instalación de Indus GT" .
  15. SIO 1980 , pág. 25.
  16. SIO 1980 , pág. 28.
  17. ^ DeRe 1981 , pág. Apéndice C.
  18. Victor, John (octubre de 1982). "Audio mientras cargas" . Antic .

Bibliografía

  • Manual de usuario del sistema operativo Atari 400/800 . Atari. 1980.
  • Manual de hardware de Atari 400/800 (PDF) . Atari. 1980.
  • Sistema informático doméstico Atari: Interfaz de entrada/salida serie (PDF) . 1980.
  • De Re Atari . Atari. 1981.
  • Decuir, Joe. "Entrevista con Joe Decuir" (Entrevista). Entrevistado por Curt Vendel.