Revistas en papel
 Amiga World Nº11 - Junio 1990
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

Amiga WorldMientras los antiguos modelos
de la marca Commodore, utilizaban
como unidad de almacenamiento
principalmente el cassette (o más conocido
como Datasette), los 'nuevos' ordenadores Amiga,
creados por la misma compañía, incorporan ya de fábrica
las 3,5; con lo cual, además de poseer una mayor
velocidad de acceso a los datos, también se posee
una mayor seguridad en el almacenaje de los mismos;
así como otras ventajas evidentes en el manejo de ficheros.

 

Por F. Javier Rodríguez

Este tema ya se ha tratado con anterioridad en dos de los capítulos contenidos dentro del cursillo de ensamblador, escrito por Fernando G. Terradillos; pero en esta ocasión, desde el cual además de observar la estructura hardware, se verán las diferentes posibilidades que permanecen ocultas en este complejo periférico.


El Hardware de la unidad

Como ya sabrán la mayoría de los lectores, el Hardware del Amiga está preparado para el soporte de tres unidades externas de disco además de la interna, en una misma estructura; con lo cual no se requiere ningún tipo de interface 'extra'.

El controlador de disco, que incorpora el Amiga, es de una gran flexibilidad; pudiendo leer y escribir discos bajo el formato CP/M, así como los discos de ATARI, o mediante algunos trucos, los correspondientes a las unidades 1541/1571 de Commodore.

El interface que permite el conexionado de las unidades externas, con el Amiga, se encuentra directamente conectado al Bus Shugart. En dicho Bus se encuentran las siguientes líneas, las cuales son las encargadas de controlar las diferentes operaciones con el disco:

MTRX. Esta línea provoca el encendido de todos los motores de las unidades conectadas. Evidentemente, este no es el mejor medio de control, pues para que cada motor sea controlado de una forma eficaz, cada unidad de disco posee en su hardware un 'Flip-Flop', el cual en conjunto con la línea SELX, determinará cuándo ha de poner su motor en funcionamiento o en descanso.

RDY. Esta línea se encuentra en combinación con la anterior, pues indica si el motor ha sido correctamente arrancado, con lo cual la unidad se encontrará lista para lectura o escritura.

DKRD. Esta línea, es la encargada de llevar la información desde la unidad hasta el chip Paula.

DRES. Activando esta línea, se provocará un 'reset' en los motores de las unidades conectadas.

SELX. Esta línea es la utilizada para activar cualquiera de los cuatro drives posibles; donde X se sustituirá por el número del Drive en cuestión.

DKWD. Esta es la línea contraria a DKRD, pues su misión es la de enviar información desde Paula hacia la correspondiente unidad.

SIDE. Como su nombre indica, esta es la encargada de seleccionar la cara del disco sobre la que se va a trabajar, ya sea para lectura o para escritura.

WPRO. Indica si el disco que se encuentra situado en el Drive seleccionado, mediante la línea SELX, está protegido.

STEP. Mueve la cabeza de la unidad de pista (1) en pista a través del disco. La dirección en la que será movida (hacia dentro o hacia fuera), dependerá del valor indicado en la línea DIR.

(1) Un movimiento completo de pista, se consigue con dos 'Step'; ya que cada movimiento Step, equivale a media pista.

DIR. Indica en qué dirección deberá moverse la cabeza de la unidad a través del disco (hacia dentro o hacia fuera).

DKWE. Dependiendo del valor de esta línea (alto o bajo), el proceso con la unidad de disco será de lectura o de escritura; de esta forma si la línea se encuentra alta, se leerá desde disco.

Como habrán podido comprobar, algunas de las definiciones dadas, concuerdan con las funciones realizadas por algunos de los registros incluidos en los Custom Chips. De hecho todas las funciones comentadas, encuentran su equivalencia en los registros, con lo cual se puede observar la flexibilidad de programación existente, así como la posibilidad de ejercer un total control sobre todas las líneas que se comunican con los Drives.

Un apartado muy importante, es el orden en el que se ha de acceder a dichos registros; pues la complejidad de la estructura hardware que componen todos los elementos del Amiga, hacen que ello deba seguir un orden prefijado para no causar ninguna 'interferencia' en el resto del sistema. En el siguiente punto se tratará este tema.


Acceso a los registros

Para poder acceder a la unidad de discos, los canales DMA juegan un papel importante; por ello la programación de los registros deben seguir un debido orden, ya que de lo contrario podrían ocurrir que otros canales DMA se encontrasen activados; provocando, como consecuencia, algún que otro conflicto en el sistema.

Los registros en cuestión, involucrados en las operaciones con el disco, se corresponden con dos puertos de los chips CIA 8520; así como varios registros correspondientes al Chip Paula. Dichos registros son los siguientes:

Registro CIA

Dirección

Descripción

CIAAPRA

$BFE001

Cuatro bits de entrada para control de disco.

CIABPRB

$BFD100

Ocho bits de salida para control, stepping (2) y selección de drive.

Registro Paula

Dirección

Descripción

ADKCON

$DFF09E

Bits de control (sólo escritura).

ADKCONR

$DFF010

Bits de control (sólo lectura).

DSKPTH

$DFF020

Puntero a bloque de datos (DMA, 32 bits).

DSKLEN

$DFF024

Cantidad de datos en palabras.

DSKBYTR

$DFF01A

Byte de dato y de estado (sólo lectura).

DSKFIND

$DFF07E

Buscador de señal SYNC en el disco.


(2) Se puede definir como Stepping, al proceso de mover la cabeza de lectura/escritura, a través de las diferentes pistas.

Como habrán podido observar, con los registros descritos anteriormente, se pueden controlar las funciones correspondientes al manejo de disco; sin embargo queda por solucionar la forma en la que han de emplearse dichos registros, para poder llevar a cabo el objetivo deseado.

La mayoría de

los mecanismos,

involucrados en

el control del

disco, son

sumamente

sencillos.

Como se comentó anteriormente, el orden que se ha de seguir para el correcto uso de estos registros es muy importante. Las reglas de acceso son las siguientes:

  1. El primer paso, es el de encender el bit correspondiente a acceso DMA a Disco, en el registro DMACON (bit 4, $DFF096).

  2. A continuación, asignar el valor $0400 al registro DSKLEN; con ello se deniega el acceso DMA para disco.

  3. Introducir la cantidad de datos a escribir/leer (en palabras, dentro del registro DSKLEN.

  4. Repetir este mismo valor de nuevo en el registro DSKLEN. Esto fuerza el arranque automático del acceso DMA de disco.

  5. Una vez que el proceso de lectura/escritura, haya concluido se deberá asignar de nuevo el valor $0400 al registro DSKLEN, con ello se evitan posibles accesos 'no deseados' a disco.

De todas formas, todavía han de contemplarse varios aspectos importantes para el correcto funcionamiento de la operación. Uno de los puntos a tener en cuentra es que el bloque de datos que se desee escribir en disco, deberá encontrarse en memoria CHIP; ya que es el único tipo de memoria direccionable por los canales DMA. De igual forma faltan contemplar pasos previos al acceso a disco, tales como la selección de DRIVE, comprobación de protección, dirección en la que ha de escribirse, así como otros parámetros.


Disposición de la unidad

Para realizar una operación con el disco, primero se deberá indicar al ordenador, con cuál de los posibles Drives se desea trabajar (aunque sólo se disponga de una unidad); ya que no hay que olvidar que, pese a que el Amiga realiza cosas asombrosas, nada lo hace por si solo.

El registro implicado en este propósito es el correspondiente a CIABPRB (%BFD100). En esta dirección, los bits del 4 al 7 (ambos inclusive), son los encargados de informar al sistema del drive seleccionado; por tanto si se activase el cuarto bit, el sistema entendería que se desea trabajar con el Drive interno (Drive 0), si se activa el quinto bit, se correspondería con el primer Drive externo, y así correlativamente.

Una vez que se activa uno de estos bits, el motor de la unidad seleccionada empezará a funcionar; siendo esto una señal de que la operación se ha realizado con éxito.

Otro punto a tener en cuentra, a la hora de escribir sobre el disco, es la comprobación de que el disco no se encuentra protegido. Para ello existe un bit, concretamente el cuarto, en la dirección $BFE001 (CIAAPRA), que nos informa sobre este acontecimiento; si dicho bit se encuentra encendido, significará que el disco se encuentra protegido; con lo cual, conociendo este dato, se procederá a realizar los pasos convenientes (por ejemplo emitir un mensaje de aviso).

La flexibilidad del hardware, permite asimismo, la elección de la cara del disco en la que se desea operar; así como la dirección en la que se desea mover la cabeza de la unidad durante la operación. Para ello existen otros dos bits que se encargan de ello. Estos dos bits son el tercero y el segundo, respectivamente, de la dirección $BFD100.

El bloque de

datos que se

desee escribir

en disco deberá

encontrarse en

memoria CHIP.

Como habrán podido observar, con la correcta utilización de estos registros, se pueden determinar con gran facilidad las características necesarias para llevar a cabo la operación deseada. De todas formas, estos no son los únicos registros implicados en las operaciones con el disco, sino que además también se encuentran otros que sirven como 'ayuda', como por ejemplo a la hora de buscar un sector determinado.


La 'mirilla' mecánica

Efectivamente, así es cómo se puede definir a uno de los registros más curiosos del controlador de disco. Situado en las dos cabezas de las que está compuesta la unidad, se encuentra una minúscula ventana, por la cual al encontrarse sobre un determinado bloque se va 'viendo' la información que pasa a través de ella. Pues bien, dicha información encuentra su reflejo en un registro en particular; el cual servirá de ayuda al programador, para comenzar la transacción de información a partir de un punto determinado en el disco.

Decir que este registro únicamente refleja la información de la cara seleccionada mediante el bit correspondiente en el registro $BDF100; ya que no existe un registro paralelo para cada una de las caras del disco. Con la utilización de este registro, se provoca una interrupción de nivel seis.

Otra forma de ejercer control sobre la pista seleccionada, es mediante la utilización de la palabra de sincronismo; la cual sirve como marca identificativa de principio o final de fichero. Dicha palabra, mediante la adecuada programación, puede ser introducida en cualquier parte del fichero.

Otro bit importante, el cuarto del registro $BFE001, es el encargado de informar al programador si la cabeza se encuentra situada sobre la pista cero. Dicho registro se puede consultar si no se desea machacar, en algún acceso a disco, el identificador del sistema 'DOS.'.


Los mecanismos del Drive

Por último comentaremos el mecanismo utilizado por el Drive, el cual en algunos casos resulta de una gran sencillez, así como de efectividad.

Para comenzar, el mecanismo de detección de protección, así como de detección de disco, es sumamente sencillo. dicho mecanismo se encuentra situado en la misma boca de la unidad, en el ángulo inferior izquierdo. Este consta de dos finos 'bastoncillos', los cuales están situados uno detrás de otro.

El primero de ellos, el más externo, se corresponde con el de detección de protección. Como todos sabrán, el disco se encuentra protegido cuando la patilla está situada en la parte superior, dejando por tanto el hueco abierto; pues bien es por el hueco por donde el 'bastoncillo' se cuela.

En el caso de que la patilla de protección en el disco se encuentre hacia abajo, el hueco se cerrará, por lo tanto no dará la altura necesaria para que el bastoncillo se introduzca; por lo que éste mediante un mecanismo de muelle bajará, provocando un contacto eléctrico que será enviado directamente (vía BUS) al cuarto bit del registro $BFE001, el cual reflejará dicha información.

El mecanismo utilizado para la comprobación de disco introducido, es la misma. El bastoncillo encargado de esto se encuentra directamente situado detrás del anteriormente comentado.

Otro tema aparte, es el mecanismo utilizado para el movimiento de las cabezas a través del disco. Al contrario de lo que cree la mayoría de la gente, dichas cabezas tienen un movimiento limitado, moviéndose éstas debido al desplazamiento producido a través de dos ejes paralelos, mediante impulsos electromagnéticos. El registro encargado de determinar el impulso, es el anteriormente comentado Step.

El desplazamiento del plato, sobre el que se queda encajado el disco, se realiza de igual forma que el desplazamiento de las cabezas; es decir, mediante impulsos electromagnéticos. Por cada uno de estos impulsos, el plato girará una vuelta completa, con lo cual la velocidad de rotación es sumamente elevada.

Como podrán observar la mayoría de los mecanismos, involucrados en el control del disco, son sumamente sencillos; ya que o bien son movimientos mecánicos o simples reacciones magnéticas.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal