stringtranslate.com

Atari SIO

El sistema de entrada/salida en serie , conocido universalmente como SIO , era un bus periférico propietario y pilas de protocolos de software relacionados que se usaban en los ordenadores Atari de 8 bits para proporcionar la mayoría de las funciones de entrada/salida de dichos ordenadores. A diferencia de la mayoría de los sistemas de entrada/salida de la época, como el RS-232 , el SIO incluía un protocolo ligero que permitía conectar varios dispositivos a un único puerto en cadena que admitía docenas de dispositivos. También admitía operaciones plug-and-play . El diseñador del SIO, Joe Decuir , atribuye su trabajo en el sistema como la base del USB .

SIO se desarrolló para permitir la expansión sin usar ranuras de tarjeta internas como en el Apple II , debido a problemas con la FCC sobre interferencias de radio . Esto requirió que fuera bastante flexible en términos de soporte de dispositivos. Los dispositivos que usaban la interfaz SIO incluían impresoras, unidades de disquete, pletinas de casete, módems y cajas de expansión. Algunos dispositivos tenían controladores basados ​​en ROM que se copiaban al ordenador host cuando se iniciaba, lo que permitía que se admitieran nuevos dispositivos sin soporte nativo integrado en el propio ordenador.

SIO requería lógica en los periféricos para soportar los protocolos y, en algunos casos, se requería una cantidad significativa de potencia de procesamiento (por ejemplo, la unidad de disquete Atari 810 incluía una MOS Technology 6507) . Además, el gran conector personalizado era caro. Esto hizo subir los costos del sistema SIO y Decuir culpa a esto de "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 manejan el intercambio de datos; en la documentación de Atari, el bus en sí es simplemente el "bus serial" o "bus de interfaz", aunque a veces también se lo 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

Problema de la FCC

El sistema SIO debe su existencia, en última instancia, a las normas de la FCC sobre la cantidad permisible de interferencias de radiofrecuencia que podían filtrarse de cualquier dispositivo que generara directamente señales de televisión analógicas . Estas normas exigían cantidades muy bajas de interferencias y debían superar un extenso conjunto de pruebas. Estas normas se estaban revisando durante el período en el que el grupo Grass Valley de Atari estaba diseñando la máquina Colleen que se convertiría en la Atari 800. [4]

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

Colleen fue originalmente pensada para ser una consola de juegos , la sucesora de la Atari 2600. El éxito de la Apple II llevó a que el sistema se reposicionara como una computadora doméstica , y este mercado requería dispositivos periféricos. En máquinas como la Apple II, los periféricos se admitían colocando una tarjeta adaptadora en una de las ranuras para tarjetas internas de la máquina, haciendo pasar un cable a través de un orificio en la carcasa y conectando el dispositivo a ese cable. Un orificio lo suficientemente grande para un cable de este tipo significaría que Colleen no pasaría las pruebas de RF, lo que presentaba un problema grave. Además, la refrigeración por convección de las tarjetas sería muy difícil. [4]

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. Joe Decuir sugirió que podrían utilizarlo para enviar la señal de vídeo a un modulador de RF externo, que sería tan sencillo de utilizar como el cable coaxial que se necesitaba para enviar la señal al televisor de todos modos. Ahora el ordenador podría tener ranuras normales; al igual que el Apple II, la parte de RF sería completamente externa y podría probarse por sí sola, independientemente del ordenador. [4]

Cuando Decuir explicó su concepto, al vendedor "casi se le salen los ojos de las órbitas". [4] Sin que el equipo de Grass Valley lo supiera, TI estaba en ese momento en medio del desarrollo de la TI-99/4 y se enfrentaba al mismo problema con la salida de RF. Cuando Decuir más tarde le explicó la idea a su jefe, Wade Tuma, Tuma respondió que "no, la FCC nunca nos permitiría salirnos con la nuestra con esa maniobra". [4] Esto resultó ser cierto; TI utilizó la idea de Decuir y, cuando la llevaron a la FCC en 1979, la rechazaron de plano. TI tuvo que rediseñar su sistema y el retraso resultante hizo que los Atari llegaran primero al mercado. [4]

SIO

Con este camino para permitir ranuras para tarjetas bloqueado, Decuir volvió al problema de proporcionar expansión a través de un sistema externo de algún tipo. [4]

En ese momento, se había realizado un trabajo considerable sobre el uso del chip POKEY de Atari para hacer funcionar una pletina de casete emitiendo directamente sonidos que se grabarían en la cinta. Se observó que, con las modificaciones adecuadas, el POKEY podía evitar el hardware de conversión de digital a analógico y controlar directamente la salida TTL . Para producir un bus digital TTL, el sistema SIO utilizó dos de los cuatro canales de sonido del POKEY para producir tonos constantes que representaban señales de reloj de una frecuencia determinada. Se utilizó un búfer de un solo byte para enviar y recibir datos; cada vez que la señal de reloj alternaba, 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. [5]

A diferencia de una interfaz de casete, donde normalmente se utilizaría un único dispositivo, un puerto de expansión externo necesitaría poder soportar más de un dispositivo. Para soportar esto, se desarrolló un protocolo simple y se agregaron varios pines nuevos al puerto de casete simple original. El más importante de ellos 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 pedía datos (o le enviaba comandos). [6] También agregaron los pines PROCEED e INTERRUPT que podían ser utilizados por los dispositivos para establecer bits en los registros de control en el host, pero estos no se usaron en el sistema implementado. Del mismo modo, las señales de temporización generadas por POKEY se enviaron en los pines CLOCKOUT y CLOCKIN, aunque el protocolo asincrónico no los usó. [7]

Descripción

Hardware

El conector SIO utiliza láminas metálicas flexibles para realizar una conexión firme con los pines de los dispositivos. Las ranuras cortadas en el conector permiten que las láminas se muevan.
El Atari 850 incluía una impresora Centronics y puertos seriales RS-232 para conectar dispositivos de terceros. Como es típico en los dispositivos SIO, tiene 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. [8] Los conectores eran físicamente robustos para permitir un 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 como en 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 tuvo que colocarse al final de la cadena y, por lo tanto, no incluía un puerto de salida.

Comunicaciones

El SIO se controlaba mediante el chip POKEY de Atari , que incluía una serie de temporizadores de uso general. Cuatro de ellos permitían un control preciso de las velocidades de sincronización y estaban pensados ​​para utilizarse para la salida de sonido conectándolos a un conversor digital-analógico (D-a-A) y mezclándolos después con la señal de televisión antes de entrar en el modulador de RF. Estos se reutilizaron como base del sistema SIO, se utilizaron como relojes en algunos modos o para producir las señales de salida directamente en otros.

El sistema incluía un único "registro de desplazamiento" que se utilizaba para semiautomatizar la mayoría de las transferencias de datos. Éste consistía en un único valor de 8 bits, primero el LSB, [9] que se utilizaba para almacenar en búfer las lecturas y escrituras. El usuario accede a estos valores a través de dos ubicaciones de memoria conocidas como SEROUT para escritura y SERIN para lectura. Se trataba de "registros sombra", ubicaciones en la RAM que reflejaban los registros de los diversos 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. [9]

Para escribir datos en modo sincrónico, los canales principales del temporizador de POKEY se configuraban a una velocidad de reloj adecuada, digamos 9600 bit/s. Todos los datos escritos en el registro SEROUT se enviaban bit a bit cada vez que la señal se volvía alta. Se cronometraba de modo que la señal volviera baja en el medio del bit. Cuando se habían enviado los 10 bits (incluidos el inicio y el final), POKEY enviaba una interrupción enmascarable a la CPU para indicar que estaba lista para otro byte. Al leer, si se recibía otro byte de datos antes de leer SERIN, el tercer bit de SKSTAT se configuraba como 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 encuadre.

El sistema admitía oficialmente velocidades de hasta 19.200 bit/s, pero se eligió esta velocidad solo porque el analizador de protocolos del ingeniero de Atari alcanzaba esa velocidad máxima. El sistema era capaz de ofrecer un rendimiento mucho mayor. Varios dispositivos de terceros, especialmente unidades de disquete , utilizaban hardware y controladores personalizados para aumentar considerablemente las velocidades de transmisión hasta 72.000 bit/s.

Aunque el sistema tenía pines CLOCKOUT y CLOCKIN que, en teoría, podían usarse para comunicaciones sincrónicas, en la práctica solo se usaba el sistema asincrónico. En este caso, se estableció una velocidad base como la anterior en el POKEY, que seguiría cambios de hasta el 5 % a partir de esta velocidad base. Esto hizo que fuera mucho más fácil trabajar con dispositivos reales en los que problemas mecánicos o eléctricos causaban la ligera variación en las velocidades a lo largo del tiempo. Un ejemplo era la pletina de casete, donde el estiramiento de la cinta podía alterar la velocidad; otro es un módem, donde el sistema remoto puede no estar sincronizado exactamente a una velocidad determinada.

Control de dispositivos

El sistema SIO permitía conectar dispositivos en cadena y, por lo tanto, requería alguna forma de identificar que la información en los distintos pines de datos estaba destinada a un dispositivo específico en la cadena. Esto se logró con el pin COMMAND. [9]

El pin COMMAND normalmente se mantenía alto [8] y cuando se bajaba, los dispositivos del bus debían escuchar una "trama de comando". Esta consistía en un paquete de 5 bytes; el primer byte era el ID del dispositivo, el segundo era un número de comando específico del dispositivo y luego dos bytes auxiliares de datos que el controlador podía usar para cualquier propósito. A estos cuatro bytes les seguía un byte de suma de comprobación [6] . El pin COMMAND se ponía alto nuevamente cuando se completaba la trama [10] .

Al recibir el paquete, se esperaba que el dispositivo especificado en el primer byte respondiera. Esto consistía en un solo byte que contenía un carácter ASCII, "A" para Acknowledge (Confirmar) si el paquete se había decodificado correctamente y la suma de comprobación coincidía, "N" en caso contrario. Para los comandos que intercambiaban datos, el marco de comando sería seguido por un "marco de datos" desde o hacia el dispositivo seleccionado. Este marco sería entonces reconocido por el receptor con una "C" para Complete (Completado) o "E" para error. [11] Dado que cada paquete de 128 bytes de datos requería otro marco de comando antes de que se pudiera enviar el siguiente, el rendimiento se vio afectado por problemas de latencia; la unidad de disco Atari 810 normalmente usaba una velocidad de 19.200 bit/s, pero estaba limitada a unos 6.000 bit/s como resultado de la sobrecarga. [12]

Los dispositivos se enumeraban mecánicamente, generalmente utilizando pequeños interruptores DIP . [13] 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 unidades de disco y $40 para impresoras. Sin embargo, cada controlador podía admitir tantos o tan pocos dispositivos como quisiera; el controlador de impresora Atari 820 admitía solo una impresora numerada $40, [14] mientras que los controladores de disco podían admitir cuatro unidades numeradas $31 a $34. [15]

Uso de casete

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

El diseño de lo que se convirtió en el SIO comenzó como un sistema de interconexión con grabadoras de casetes que utilizaban el hardware de sonido 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 simples.

Cuando se configuraba para operar el casete, las salidas de los canales 1 y 2 del POKEY se enviaban a DATAOUT en lugar de a los pines de reloj. Los dos canales se configuraban para producir tonos que fueran seguros para grabar en la cinta; 3995 Hz para un cero estaba en el canal 2 del POKEY y 5326 Hz para un uno estaba en el canal 1. En este modo, cuando el POKEY leía bits del SERIN, cualquier 1 hacía que el canal 1 se reprodujera en el pin de datos, y los 0 reproducían 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 A a D 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 afirmaba a medida que se leían los bits de la cinta. Estos se enviaban como datos digitales de vuelta a la computadora central. [16]

Como 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 asincrónicas. 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. Luego leía rápidamente el puerto y cronometraba las transiciones de los bits de sincronizació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 un final de 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. [16]

El funcionamiento se controlaba además mediante el pin MOTOR del puerto SIO, dedicado a este fin. Cuando este pin estaba bajo, el motor de la grabadora se apagaba. Esto permitía al usuario pulsar play o play y grabar sin que la cinta comenzase a moverse. Cuando se introducía el comando adecuado en la computadora, se activaba MOTOR y la cinta empezaba a girar. [16]

Otro pin dedicado era el AUDIOIN, que se conectaba directamente a los circuitos de salida de sonido entre los convertidores D-a-A del POKEY y la salida final, de modo que cualquier señal en el pin se mezclara con el sonido del POKEY (si lo había) y luego 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 luego reproducirlos a través del televisor. Esto a menudo 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 que el proceso de carga fuera más agradable. [17]

Véase también

Referencias

  1. ^ "Entrevista con Joe Decuir". Museo Atari .
  2. ^ Atari - Computer Systems, Atari, Inc. , archivado desde el original el 8 de diciembre de 2015 , consultado el 14 de enero de 2015
  3. ^ SIO 1980, pág. 1.
  4. ^ abcdefgh Cuir.
  5. ^ SIO 1980, págs. 6–7.
  6. ^ desde SIO 1980, pág. 13.
  7. ^ SIO 1980, pág. 8.
  8. ^ desde SIO 1980, pág. 7.
  9. ^ abc SIO 1980, pág. 6.
  10. ^ SIO 1980, pág. 18.
  11. ^ SIO 1980, pág. 16.
  12. ^ Manual del operador de la unidad de disco Atari 810 (PDF) (Informe técnico). 1979. pág. 6.
  13. ^ "Instalación de Indus GT".
  14. ^ SIO 1980, pág. 25.
  15. ^ SIO 1980, pág. 28.
  16. ^ abc DeRe 1981, pág. Apéndice C.
  17. ^ Victor, John (octubre de 1982). "Audio mientras escuchas". Antic .

Bibliografía