|
|
|||||||||
| 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. |
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(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.
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.
|
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:
El primer paso, es el de encender el bit correspondiente a acceso DMA a Disco, en el registro DMACON (bit 4, $DFF096).
A continuación, asignar el valor $0400 al registro DSKLEN; con ello se deniega el acceso DMA para disco.
Introducir la cantidad de datos a escribir/leer (en palabras, dentro del registro DSKLEN.
Repetir este mismo valor de nuevo en el registro DSKLEN. Esto fuerza el arranque automático del acceso DMA de disco.
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.
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.
|
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.
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.'.
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 |
|