Bus IEC (Commodore)

De Wikipedia, la enciclopedia libre
Commodore serial IEEE-488
Tipo bus de periféricos
Historia de producción
Diseñador Commodore International
Fecha de diseño 1980[1]
Fabricante Varios
Fecha de producción 1980–presente
Especificaciones
Longitud 1,8 metros máximo[2]
Conectable en caliente No
Externo
Eléctrico

Colector abierto de 5 V


Voltaje máximo 5 V
Corriente máxima 3,2 mA[3]
Señal de datos


Ancho de banda 3,2–41,6 kbit/s[4][5]
Protocolo Serial
Pines 6
Conector conector DIN
Patillaje

Toma hembra desde el frente.

Pin 1 SRQ Service Request
Pin 2 GND Ground
Pin 3 ATN Attention
Pin 4 CLK Clock
Pin 5 DATA Data
Pin 6 RESET Reset

El bus serie IEEE-488 de Commodore (bus IEC) es la interfaz de Commodore para el almacenamiento de datos principalmente en discos magnéticos y las impresoras para las computadoras personales Commodore de 8 bits, especialmente el VIC-20, C64, C128, Plus/4,[6]C16 y C65.

Descripción e historia[editar]

La interfaz paralela IEEE-488 utilizada en la línea de computadoras Commodore PET (1977) era demasiado costosa, por lo que se desarrolló una versión de costo reducido, que consistía en una versión en serie simplificada de la interfaz IEEE-488, con solo unas pocas señales restantes; sin embargo, se mantuvo el diseño general del protocolo. Commodore comenzó a usar este bus con el VIC-20 (1980). La conexión a la computadora utiliza un conector DIN-6.

Velocidad de transferencia[editar]

Setup Velocidad Bitrate efectivo
Comodore 64 + 1541 400 bytes/s 3.200 bit/s
Commodore 64 + 1541 con Fast loader 2560 bytes/s[4] 20.480 bit/s
Comodore 128 + 1571 5200 bytes/s[5] 41.600 bit/s
teórico 20 µs[7] 6250 bytes/s 50.000 bit/s

Interfaz[editar]

Pinout[8]
Pin Nombre Función
1 /SRQIN Entrada de solicitud de servicio para permitir que los periféricos soliciten ser atendidos por el host (C64). Utilizado por el C128 para transferencias rápidas.[9]
2 GND Tierra
3 /ATN Serial ATN de entrada / salida. Establecido bajo por el host (C64) para indicar el comienzo de una transferencia de datos en serie.
4 4 /CLK Serial CLK de entrada / salida. Utilizado para el apretón de manos de software.
5 5 /DATA Datos en serie de entrada / salida. Transferencia de bits de datos.
6 6 /RESET Restablece periféricos y también restablece un C64 anterior.

Descripción del protocolo[editar]

Las señales del bus son un TTL colector abierto digital de un solo extremo de 5 voltios y activas cuando son negativas. Los dispositivos de bus deben proporcionar su propia potencia.

Debido a que las líneas de bus son un colector abierto eléctricamente, funciona como una puerta OR larga entre todos los controladores de línea del dispositivo. El valor lógico para ground es verdadero y viceversa. Cualquier dispositivo puede establecer una línea "verdadera". Una línea solo se vuelve "falsa" si todos los dispositivos señalan falsa.

La transmisión comienza con el hablante del bus que mantiene la línea del reloj verdadera y el oyente que mantiene la línea de datos verdadera. Para comenzar, el hablante libera la línea del reloj a falso. Cuando todos los oyentes del bus están listos para recibir, liberan la línea de datos a falso. Si el hablador espera más de 200 µs sin que la línea del reloj se vuelva verdadera (estado inactivo), los oyentes deben realizar End-or-Identify (EOI).[7]

Si la línea de datos que es falsa (liberada) no es reconocida por el hablador dentro de los 200 µs, el oyente sabe que el hablador está en proceso de EOI, lo que significa que "este caracter será el último". Cuando el oyente detecta el tiempo de espera de 200 µs, debe reconocerlo tirando de la línea de datos como verdadera durante al menos 60 µs y luego liberarla. El interlocutor puede volver a transmitir nuevamente dentro de los 60 µs tirando de la línea del reloj verdadero.[7]

Los datos son ocho bits que comienzan con el bit menos significativo. La línea de datos se establece de acuerdo con el bit a enviar (1=verdadero=tierra). Una vez que se establece la línea de datos, la línea del reloj se libera en falso. Las líneas Reloj y Datos se mantendrán estables durante al menos 20 µs (excepto el Commodore 64 que necesita 60 µs). Después de que se hayan enviado 8 bits, el hablador libera la línea de datos a falso y el oyente luego reconoce al hablador tirando la línea de datos verdadero dentro de 1000 µs. Después de esto, el hablador establece la línea del reloj como verdadera y el oyente establece la línea de datos como verdadera, por lo tanto, donde comenzó la transmisión. Si se señala un EOI al mantener la línea del reloj en falso, la transmisión finaliza y el oyente lo reconoce tirando de la línea de datos verdadero durante 200 µs.[7]

La línea ATN se establece en verdadero y los bytes se envían como todos los dispositivos anteriores, pero el byte se interpreta como uno de los comandos "Talk", "Listen", "Untalk" y "Unlisten". Eso le dice a un dispositivo específico que se convierta en un hablante u oyente. Solo los dispositivos con números de dispositivo coincidentes cambian al modo hablar y escuchar. Una dirección secundaria también puede seguir.[7]

En un nivel lógico superior, el host establecerá la línea ATN en verdadero y transmitirá los bytes "Número de dispositivo 8, escucha", "Dirección secundaria 2, abierta". A continuación, establecerá la línea ATN falsa y el host se convertirá en el hablador, manteniendo la línea del reloj verdadera. El dispositivo será el oyente, manteniendo la línea de datos verdadera. El host transmitirá el comando de apertura específico y lo finalizará con una secuencia de señal EOI. Después de esto, el host establecerá con la línea ATN verdadera, "Dispositivo número 8, sin listar". Seguido por la línea ATN verdadera y "Dispositivo número 8, escucha", "Dirección secundaria 2, datos". Luego, el host establece la línea ATN falsa y envía los datos. Cuando el host ha terminado de enviar datos, la línea ATN se establece en verdadera y se envía "Dispositivo número 8, no listado".[7]

Cuando es necesario cambiar de roles y hacer que el host sea un oyente y el dispositivo que habla, se produce después de que se ha enviado un comando de conversación al dispositivo. El host establece la línea de datos verdadero y libera la línea del reloj en falso. El dispositivo espera a que la línea del reloj se vuelva falsa y luego la pone a verdadera y libera la línea de datos a falso. Después de esta secuencia, puede seguir la interacción estándar entre hablante y oyente.[7]

Comandos de bus[7]
Código Sentido
dispositivo | 0x20 Escucha, dispositivo (0–30)
0x3F Sin listar, todos los dispositivos
dispositivo | 0x40 Talk, dispositivo
0x5F Untalk, todos los dispositivos
canal | 0x60 Reabrir, canal (0-15)
canal | 0xE0 Cerrado, canal
canal | 0xF0 Abierto. canal

Para leer un archivo normal del disquete número 8, el comando LOAD "filename",8,1 se emite en un Commodore 64. Eso provoca la siguiente comunicación de alto nivel:

Protocolo de alto nivel[10]
Comando Destino Significado
/28 Dispositivo Escucha, dispositivo número 8
/F0 Dispositivo Abrir canal 0
Dispositivo Enviar bytes de nombre de archivo
/3F Dispositivos Desliste todos los dispositivos
/48 Dispositivo Talk, dispositivo número 8
/60 Dispositivo Reabrir canal 0
El dispositivo número 8 se convierte en el maestro del bus
Anfitrión Recibir datos de bytes
El host se convierte en el maestro del bus (operación normal)
/5F Dispositivos Deshabilitar todos los dispositivos
/28 Dispositivo Escucha, dispositivo número 8
/E0 Dispositivo Cerrar canal 0
/3F Dispositivos Desliste todos los dispositivos

La unidad de disquete Commodore 1541 utiliza un modo más lento compatible con Commodore 64 que puede desactivarse para una velocidad más rápida mediante el comando OPEN 15,8,15,"UI-":CLOSE 15.[11]

Numeración de dispositivos[editar]

Numeración de dispositivos por el KERNAL del Commodore 64[10]
Dispositivo Tipo
0 Teclado
1 Puerto de casete
2 RS-232 en el puerto de usuario o segundo casete en PET
3 Pantalla
4–5 Impresora
6 Típicamente dispositivo trazador
7 Segundo trazador?
8-15 Disco (10 – utilizado por algunas interfaces de impresora serie a paralelo)
16-30 Desconocido
31 Reservado como comando para todos los dispositivos

El dispositivo número 0–3 no está asociado con el bus Commodore.[10]

Implementación del host[editar]

La computadora Commodore VIC-20 y las unidades de disquete Commodore 1540 y 1541 utilizan la un MOS 6522 VIA para manejar transmisiones de bus IEC. Las computadoras Commodore 64 y 128 y la unidad Commodore 1571 usan el Adaptador de interfaz complejo.

Dispositivos comunes[editar]

Dispositivo Información
1541 Disquete de 5¼ pulgadas de 170 KB
1570 Disquete de 5¼ pulgadas de 170 KB
1571 Disquete de 5¼ pulgadas de 340-410 KB
1581 Disquete de 3½ pulgadas de 800 KB
Commodore MPS 801 Impresora de matriz de puntos
Comodore 1515[12] Impresora de matriz de puntos
Comodore 1520 Impresora de bolígrafo
Comodor VIC-1525[13] Impresora de matriz de puntos
Comodore VIC-1526 Impresora de matriz de puntos MPS 802 renombrada
Okimate 10 Impresora de matriz de puntos
DPS-1101[14] Impresora de rueda de margarita
INTERPOD Independiente IEEE-488 + RS-232[15]
Comodore VIC-20 Computadora con 5 KB de RAM a 1 MHz
Comodore 64 Computadora con 64 KB de RAM a 1 MHz
Commodore SX-64 Computadora con 64 KB de RAM a 1 MHz
Comodore 128 Computadora con 128 KB de RAM a 2 MHz
Comodore 16 Computadora con 16 KB de RAM a 1-2 MHz
Commodore Plus/4 Computadora con 64 KB de RAM a 1,76 MHz
Comodore 65 Computadora con 128 KB de RAM a 3,54 MHz

Comodore 1541[editar]

La unidad de disquete Commodore 1541 es el periférico más común utilizado con este bus y puede almacenar 170 KB.

Dispositivos[editar]

Véase también[editar]

Referencias[editar]

  1. «Commodore VIC-20 History». Archivado desde el original el 14 de febrero de 2015. Consultado el 8 de enero de 2020.  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  2. «Building the XE1541 serial cable». Consultado el 2 de abril de 2016. «(1) 6' or 1.8 meters (max) 4 conductor shielded cable (for serial connection)». 
  3. «6526 complex interface adapter (CIA)» (pdf). 4 de marzo de 2016. Archivado desde el original el 10 de abril de 2016. Consultado el 2 de abril de 2016. «Output Low Current (Sinking); VOL < .4 v (PA0-PA7, PC, PB0-PB7, DB0-DB7) IOL 3.2 mA».  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  4. a b «Design case history: the Commodore 64» (publicado el 16 de abril de 2012). 1985. Consultado el 2 de abril de 2016. «Programming tricks used by Epyx have yielded transfer rates of up to 2.5 kilobytes per second.» 
  5. a b «Commodore 1571 disk drive specifications». Commodore Business Machines, Inc. October 1986. Consultado el 27 de abril de 2016. 
  6. «Using Commodore 1541 disk drive on a Commodore + 4». 3 de octubre de 2005. Consultado el 15 de mayo de 2016. «The 1541 works with the Plus/4 just fine.» 
  7. a b c d e f g h «How the VIC/64 Serial Bus works». 17 de abril de 2015. Consultado el 28 de abril de 2016. 
  8. «C64 Serial I/O pinout and wiring @ old.pinouts.ru». 16 de diciembre de 2013. Consultado el 2 de abril de 2016. 
  9. «C-64 Workshop / Pin Connections». 10 de diciembre de 2005. Consultado el 2 de abril de 2016. 
  10. a b c «IEC-bus documentation as used for the 1541-III IEC disected». 24 de febrero de 2008. Archivado desde el original el 16 de enero de 2017. Consultado el 28 de abril de 2016. 
  11. «VIC-1541». C64-wiki.com. 11 de marzo de 2016. Consultado el 28 de abril de 2016. 
  12. «VIC-1515 User's manual Graphic printer by Commodore» (publicado el 5 de noviembre de 2011). April 1981. Consultado el 28 de abril de 2016. 
  13. «VIC-1525 Graphics Printer User Manual». Commodore Computer. Consultado el 22 de febrero de 2015. 
  14. «Commodore DPS-1101 Daisy Wheel Printer». 
  15. «Interpod IEEE-488 Interface». April 2008. Consultado el 28 de abril de 2016. 

Enlaces externos[editar]