BIENVENIDOS A RETROCOMPUTACIÓN!

Placa controladora para disqueteras externas de Amiga


en sábado 27 diciembre 2008
por the woz Lista del autor
en Articulos
Adjunto Archivo Descargar adjunto

En este articulo les vamos a enseñar como la Amiga detecta a las disqueteras externas conectadas y luego veremos como fabricar una placa controladora para hacer nuestras propias disqueteras externas usando drives de PC sin modificar.



Éste articulo resume el proyecto llevado a cabo en este thread del foro.

Autodetección de disqueteras en Amiga
:

La Amiga usa un sencillo protocolo serie para detectar si hay conectadas disqueteras externas al sistema (o una segunda disquetera interna en los modelos de gama alta).


Primero lo que hace la Amiga es seleccionar la disquetera que quiere fijarse si esta activando la salida _SELx correspondiente (siendo x 1, 2 o 3), notese que son salidas de estado activo bajo (cuando estan activas se mide 0v a la salida, y 5v cuando estan inactivas).
Ahora se enciende el motor activando _MTRXD, para luego desactivar, primero _SELx y despues _MTRXD. Se repite el mismo proceso para volver a apagar el motor. Esto pone el circuito interno en 'modo de identificación'

Ahora la Amiga entra en un bucle para leer 32bits desde la entrada _READY, para hacer esto se usa _SELx como reloj, activandolo, leyendo el bit en _READY, desactivandolo y repetiendo el proceso 32 veces en total para leer los 32bits.

El valor leido le dice a la Amiga si hay una disquetera y de que tipo:

  • $0000 0000 - No hay disquetera (esto significa que la entrada _READY estuvo siempre a 5v mientras en modo de identificación)
  • $FFFF FFFF - Disquetera Amiga de 3.5" (_READY siempre en 0v...)
  • $AAAA AAAA - Doble lado doble densidad 48TPI

El circuito:

thumb_11_external1.gif

Y ahora el circuito, como ven, la señal _READY (en azul) no viene de la disquetera, sino que se genera en la placa, y esta activa (0V) cuando:

  • el motor esta encendido (_Q = 1) y esta disquetera esta seleccionada (_SEL1 = 0)
  • o el motor esta apagado (Q = 1 modo de identificación) y la disquetera esta seleccionada (_SEL1 = 0)


Como es para disqueteras sin modificar, la señal _DSKCHG sale del pin 34 en lugar del 2. Y se usa _DRVSB (DS1) como pin de selección (en rojo)

El switch J1 corta _READY e impide que la Amiga la detecte.

Placa y construcción:

external2.png

Materiales:
  • 1x Header 2x17 pines
  • 1x IC 74LS74
  • 1x IC 74LS03 (o 74LS38)
  • 2x Zocalos IC 14 pines
  • 5x Resistencias 2.2Kohms
  • 1x Diodo 1N4148
  • 1x interruptor
  • 1x conector molex para alimentación disquetera
  • 0.50m cable mallado de 23 conductores
  • 1x Conector DB-23 Macho
  • 1x Disquetera de 3.5"
  • 1x Cable datos disquetera
  • 2x Condensadores ceramicos 0.1uF
  • Gabinete


El circuito se montó sobre una placa de circuito impreso de 1 cara, fabricado con el metodo descripto en: Circuitos Impresos

El cable que va hacia el conector de disqueteras externas de la Amiga se soldo a los headers 'Amiga 1-13' y 'Amiga-14-23' (cables soldados directo a la placa, sin los headers), notese la distinta orientación de la númeración de los pines de cada header.

'SV1' es donde se conecta el cable hacia la disquetera, se usó un cable de PC cortado a la medida deseada, el cable debe ir directo entre la placa y la disquetera, sin ningún cable retorcido.

La disquetera usada es una disquetera de alta densidad común de PC. La única modificación que hay que hacerle es inhabilitarle el sensor de densidad, para así poder usar disquetes de alta densidad sin necesidad de tapar el agujerito indicador de alta densidad con cinta.
Ver aquí sobre esta modificación.

De los contactos '+5V', 'GND' y '+12V' sale la alimentación para la disquetera, +12V puede omitirse si la disquetera no lo necesita.

placa_1.jpg

Una vez montado el circuito se procede al testeo, se conecta la disquetera a la placa, y la placa a la Amiga por el puerto correspondiente.

Al encender la máquina sin ningún disquete en DF0: y sin ningún disco rigido si se tuviese, la pantalla pidiendo un disquete booteable debe aparecer sin demoras. Si hubiese una demora de algunos segundos, apagar la computadora y asegurarse de que todas las conecciones entre la disquetera, la placa y la Amiga esten correctas, prestar especial atención a las lineas _READY, _SEL1 y _MTRXD.

Si todo salió bien, colocar un disquete con el Workbench en DF0:
Una vez que se tiene la pantalla del Workbench, la nueva disquetera externa (DF1: si no se tiene conectada otra disquetera externa) deberá empezar a hacer el tipico  'click' cuando no tiene ningun disquete insertado. Si no lo hace chequear _CHNG (_DSKCHG del lado de la disquetera).

Si no hay ningún disquete colocado dentro de la disquetera no debe aparecer ningún icono del tipo "DF1:BAD".

Solo resta comprobar que se comporta como una disquetera normal, colocando disquetes y comprobando que puede leerlos, realizando un formateo y comprobando que el disco resultante puede ser leido mediante DF0:, etc.

Una vez comprobado el correcto funcionamiento, colocar el conjunto en un gabinete y a disfrutar de su nueva disquetera externa para Amiga.

disquetera_1.jpg

Problemas conocidos:

Este circuito presenta problemas de verificación de escritura al realizar una copia mediante el metodo 'DOSCopy' con el programa XCopy, pero hace copias correctas con el metodo 'Nibble Copy'.

La luz de la disquetera no permanece encendida mientras se esta accediendo al disco, sino que parpadea. No es realmente un problema pero no es el comportamiento que se esperaría.


Descargas:

Esquema y placa en formato Eagle, contiene ademas la imagen de la placa en formato PNG (300DPI) lista para imprimir: Descargar