Controlador de Floppy Disk

Anuncio
Controlador de Floppy Disk
Alejandro Furfaro
Progrmación Sistemas Operativos
28 de Abril de 2011 - 1c2011
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
1 / 49
Temario
1
2
3
4
Alejandro Furfaro (PSO - DC)
El Floppy Disk
Introducción
El Floppy Disk Drive (FDD)
El Floppy Disk Controller (FDC)
Arquitectura del FDC
Registros del 765
Registros agregados en la AT y PS/2
Registros Agregados en la PS/2
Programación del FDC
Fases del Controlador
Comandos
Guias de programación
Handshake en la fase de Comandos y
Resultados
Controlador de Floppy Disk
28 de Abril de 2011
2 / 49
El Floppy Disk
Introducción
Que es un controlador de Floppy disk
El controlador de Floppy Disk está basado en un viejo controlador de
NEC: el µ PD765.
Intel introdujo a posteriori un par de controladores mas modernos
pero compatibles: el 82072A utilizado en las PCs basadas en
procesadores 80286 y posteriores y el 82077A para los modelos
denominados IBM PS/2.
Este curso abarca el hardware de PC’s. Por lo tanto no nos
enfocaremos demasiado en las particularidades de los sistemas PS/2
ya que estos sistemas no han perdurado.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
3 / 49
El Floppy Disk
Introducción
Diagrama General
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
4 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Componentes
El Drive (disquetera) tiene cinco componentes básicos
Cabezas de Lecura/Escritura: Se trata de un arreglo de dos cabezas
similiares a las cabezas lectoras de cintas, ubicadas a ambos lados del disco.
Se mueven en conjunto.
Motor del Drive: Se trata de un pequeño motor de Corriente Contı́nua que
engrana al disco en una ranura de su centro metálico y lo hace girar
tı́picamente a 360 Rotaciones por minuto (RPM).
Motor paso a paso (Stepper): Calibrado con un eje a rosca, hace mover
con precisión el ensamble de cabezas de lectura/escritura a la pista exacta
que ha seleccionado en controlador. El armado de cabezas
está mecánicamente ensamblado al eje de este motor.
Estructura Mecánica: Conjunto de piezas mecánicas que abren la pequeña
ventana del disquete para que las cabezas puedan acceder a la superficie
magnetica del disco, mas el botón que permite eyectar el disco, etc.
Circuiterı́a: Toda la electrónica necesaria para manejar las señales que se
leen y escriben en el disco, para accionar eléctricamente a los dos motores y
regular su velocidad y detención y ubicar las cabezas en el disco.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
5 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Cabezal de Lectura Escritura
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
6 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Ceros y Unos: Inversiones de flujo magnético
Para entender como se graba la información en la superficie de un disco no
hay que pensar en términos de unos y ceros , ya que no es posible
“magnetizar” o ”desmagnetizar“ la superficie.
La distancia sobre la que se graba la información no es uniforme, de acuerdo
a que pista se quiera grabar. No se puede definir un perı́odo de tiempo fijo
para grabar un uno o un cero.
Es posible, sin embargo, grabar inversiones de flujo. Son pequeños gaps de
”no magnetización“ que separan dos superficies magnetizadas con diferente
polaridad.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
7 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Métodos de grabación
FM (Modulación de Frecuencia):
Graba un pulso de clock por cada bit. Se usa en los floppys viejos de
Simple Densidad.
MFM (Frecuencia Modulada Modificada):
Los clocks solo se graban entre dos ceros consecutivos.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
8 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Estructura de pista y sector
Al principio la división entre sectores de una pista se efectuaba por hardware:
ard Sectoring. En la parte mas interna de la superficie del disco una serie de
orificios permitı́a leer un led que estaba debajo de la superficie a un sensor
ubicado encima de la superficie. Cada lectura de luz inicaba el inicio de un
sector.
Con el tiempo los discos evolucionaron y solo requieren un orificio al inicio
del sector 0 para indicar una referencia y luego se agrega información
adicional a cada bloque de datos para delimitar el resto de los sectores. Esta
técnica se denomina Soft Sectoring.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
9 / 49
El Floppy Disk
El Floppy Disk Drive (FDD)
Soft Sectoring
Válido para MFM (los viejos floppys tienen
otra conformación en cantidad de bytes y
en sus valores)
Los bytes 0xa1 tienen una transición clock
perdida entre los bit 4 and 5 y
preconfigura el CRC.
EL CRC es un algoritmo mas sofisticado
que el checksum En estos controladores se
utiliza un polinomio estandarizado por el
CCITT:
g (x) = 1 + x 5 + x 12 + x 16
El algoritmo verá al contenido a analizar
como un flujo continuo de bits (stream),
tomando de a 16 (mismo grado del
polinomio), y xoreando amos valores. El
polinomio se desplaza a la derecha a través
del stream, hasta llegar al final.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
10 / 49
El Floppy Disk
El Floppy Disk Controller (FDC)
Diagrama interno
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
11 / 49
El Floppy Disk
El Floppy Disk Controller (FDC)
Mapeo del Controlador en el espacio de E/S
La configuración mas general ocupa seis direcciones de Entrada
Salida.
Cada equipo viene con dos controladores de Floppy disk.
A continuación las direcciones que presenta el FDC al procesador
dentro del mapa de E/S.
Register
Base Address
Status Register A (PS/2)
Status Register B (PS/2)
Digital Output Register (DOR)
Main Status Register
Data Rate Select Register (DSR) (PS/2)
Data Register
Digital Input Register (DIR)
Configuration Control Register (DIR)
Alejandro Furfaro (PSO - DC)
Primary
Address
0x3F0
0x3F0
0x3F1
0x3F2
0x3F4
0x3F4
0x3F5
0x3F7
0x3F7
Controlador de Floppy Disk
Secondary
Address
0x370
0x370
0x371
0x372
0x374
0x374
0x375
0x377
0x377
Write (W)Read (R)
R
R
W
R
W
R/W
R
W
28 de Abril de 2011
12 / 49
Arquitectura del FDC
Ideas...
enum F l o p p y R e g i s t e r s
{
STATUS REGISTER A
STATUS REGISTER B
DIGITAL OUTPUT REGISTER
TAPE DRIVE REGISTER
MAIN STATUS REGISTER
DATARATE SELECT REGISTER
DATA FIFO
DIGITAL INPUT REGISTER
CONFIGURATION CONTROL REGISTER
};
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
=
=
=
=
=
=
=
=
=
0 x3F0 ,
0 x3F1 ,
0 x3F2 ,
0 x3F3 ,
0 x3F4 ,
0 x3F4 ,
0 x3F5 ,
0 x3F7 ,
0 x3F7
// r e a d −o n l y
// r e a d −o n l y
// r e a d −o n l y
// w r i t e −o n l y
// r e a d −o n l y
// w r i t e −o n l y
28 de Abril de 2011
13 / 49
Arquitectura del FDC
Registros del 765
Digital Output Register (DOR)
Bit
MOT EN3, MOT EN2,
MOT EN1, MOT EN0
DMA GATE
RESET
DRIVE
SEL0
SEL1,
DRIVE
Descripción
Control de Motor para floppy drive D, C, B, A. ”1”=Start motor
“0“=Stop motor. Se setea el bit correspondiente a la vez que
se escribe el número de Drive en los bits DRIVE SEL1, DRIVE
SEL0. Es de práctica setear el conjunto MOT ENi junto con
DRIVE SEL0 y DriveSEL 1, de una sola vez.
Habilita las interfaces de DMA e IRQ. ”1”=Enabled, “0“=Disabled. Cuando se deshabilita, los terminales DACK, DRQ, TC, e
INT se ponen en three state (Impedancia infnita)
Controller reset. No afecta a este registro, pero inicializa el
resto del controlador incluida la FIFO. ”1”=Controller enabled
”0”=Execute controller reset
Drive select. 00=drive 0 (A) 01=drive 1 (B) 10=drive 2 (C)
11=drive 3 (D)
Notas:
Un drive no puede ser seleccionado (Bits 0 y 1) a menos que su motor esté ON.
La mayoria de los sistemas no soporta los drives C y D.
Cuando RESET = 0, no se aceptan comandos y se envı́a un reset general a todos los sistemas y registros del
FDC (excepto a DOR)
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
14 / 49
Arquitectura del FDC
Registros del 765
Ejemplos de acceso al DOR
Arrancar el motor del drive A, utilizando DMA e Interrupciones,
Controlador habilitado, y Seleccionar drive 00)
mov a l , 00000001 b
mov dx , 0 x 3 f 2
out dx , a l
Resetear el controlador:
mov a l , 00000000 b
mov dx , 0 x 3 f 2
out dx , a l
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
15 / 49
Arquitectura del FDC
Registros del 765
Issues: Velocidad del Motor
Cuando encendemos un motor de un floppy drive, el controlador se toma algunos
milisegundos para estabilizar la velocidad del motor, al valor necesario para la
transferencia de datos.
Si bien la electrónica del contolador puede manejar variaciones considerables en la
velocidad de rotación, todo tiene un lı́mite.
Si inmediatamente luego de encender el motor nos ponemos a leer o escribir datos,
obtendremos un bonito error ya que el PLL no logrará estabilizar la señal de datos.
Una vez completado el acceso (lectura o escritura), tı́picamente se espera 2 seg en
apagar el motor. Si se busca un control mas inteligente se pollea hasta que la
cabeza se pose nuevamente en el track 0 del disco.
Mas tiempo puede generar en el usuario la idea de que el floppy aún
está trabajando.
Se lo deja ON ya que el driver no sabe si hay en la FIFO encoladas mas
operaciones dde lectura / escritura pendientes. Ası́ no deberı́an éstas esperar a
estabilizar la velocidad nuevamente.
300 millisegundos de delay al encender el motor de un floppy de 3.5”, deberı́a ser
mas que suficiente. En general con 50 mseg. alcanza
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
16 / 49
Arquitectura del FDC
Registros del 765
Main Status Register (MSR)
Bit
RQM
DIO
NDMA
CMD BUSY
DRV3 BUSY, DRV2 BUSY,
DRV1 BUSY, DRRV0 BUSY
Alejandro Furfaro (PSO - DC)
Descripción
Indica al procesador si es posible ejecutar una
transferencia de datos con el FDC. ”1”=Data Register Ready “0“=Data Register Not Ready
Indica la dirección de la próxima transferencia.
Solo es significativo si RQM=”1”. ”1”=Lectura (Controlador − > CPU), 0=Escritura (CPU
− > Controlador)
Modo No DMA. “1“=Controller no está en modo
DMA, ”0”=Controlador en modo DMA
Comando en proceso. Se pone en “1“ hasta que el
comando termine, incluida la fase de resultado. Si
no hay fase de resultado (SEEK, RECALIBRATE,
por ej.), vuelve a cero luego de culminada la fase
de ejecución. Si está en ”0” no hay comando en
curso de ejecucción.
Drive Busy. Estos bits se setean solo cuando un
drive está en la porción SEEK de un comando,
(inclutendo RECALIBRATE).
Controlador de Floppy Disk
28 de Abril de 2011
17 / 49
Arquitectura del FDC
Registros del 765
Ejemplos de acceso al MSR
Testear si el controlador está listo para recibir un comando o un dato,
requiere conocer RQM, y DIO.
mrqloop :
mov dx , 03 f 4 h
i n a l , dx
and a l , 11000000 b
cmp a l , 10000000 b
j n e mrqloop
Puede ser que se requiere chaequear otras opciones y no solo la
dosponibilidad para un comando y entonces solo hay que modificar la
máscara de bits de la and.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
18 / 49
Arquitectura del FDC
Registros del 765
Data register (FIFO)
Es un registro de 8 bits
provee acceso indirecto al stack de registros.
Como un comando puede tener hasta 9 bytes de largo, el primero de
los cuales indica al controlador cuantos mas bytes debe esperar, este
registro en modo FIFO puede bufferear el comando completo.
El controlador envı́a estos bytes del comando al registro que
corresponde en el stack evitándole al programador usar un ı́ndice de
registros por cada comando.
El controlador i82077A e particular, tiene un buffer con un umbral
programmable que permite transferirle varios bytes a la vez, para
acelerar las transferencias de comandos y datos, mejorando el tiempo
de respuesta en relación al µPD765.
Si lo que enviamos es un comando, puede haber retornos de valores
dentro de la fase de resultados del comando.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
19 / 49
Arquitectura del FDC
Registros agregados en la AT y PS/2
Digital Input Register (DIR)
DIR para PC’s AT
DSKCHG monitorea el pin homónimo del FDC y refleja el valor
opuesto que lee del cable del disco, sin importar el valor de INVERT
DIR para PS/2
DRATE SEL1-0 retornan el valor actual de la velocidad de datos
seleccionada
HIGH DENS es “0“ siempre que se haya seleccionado una velocidad
de trasnferencia de 500 Kbps o 1 Mbps.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
20 / 49
Arquitectura del FDC
Registros agregados en la AT y PS/2
Configuration Control Register (CRR)
En los modelos compatibles para PC’s AT se llama DSR.
Los bits remanentes van en 0. Data Rate como en la tabla al pie.
CCR para PS/2
NOPREC es puesto a 0 luego de un RESET por hardware
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
21 / 49
Arquitectura del FDC
Registros Agregados en la PS/2
Status Register A (SRA)
Bit
INT PENDING
DRV2
STEP
TRK0
HDSL
INDX
WP
DIR
Alejandro Furfaro (PSO - DC)
Descripción
Indica al procesador si el controlador tiene una IRQ pendiente de
atención (activa). ”1”=Activa, “0“=No activa
”1”=Un solo drive conectado, ”0”=DOs drives conectados
“1“=Pulso enviado al stepper, ”0”=No se envió pulso al stepper
“1“=La cabeza está encima del track 0, ”0”La cabeza está en
cualquier otra pista del disco
Selector de Cabezal.“0“=head0, ”1”=Head1
Index Mark Detected. “0”= Detectada, “1”=No detectada.
Write Protection. “0”=Disco protegido contra escritura,
“1”=Disco No protegido contra escritura.
Dirección de la cabeza. “0”=Hacia cilindros externos (Numéricamente menores), “1”=Hacia cilindros internos (Numéricamente
mayores).
Controlador de Floppy Disk
28 de Abril de 2011
22 / 49
Arquitectura del FDC
Registros Agregados en la PS/2
Status Register B (SRB)
Bit
DS0
WDAT
RDAT
WE
MOT1, MOT0
Alejandro Furfaro (PSO - DC)
Descripción
Drive 0 Seleccionado. ”1”=Drive0, “0“=Cualquier otro
Write Data. ”1”=Se puede transferir datos al drive, ”0”=No se
puede transferir datos al drive.
Read Data.“1“=Se puede leer datos del drive, ”0”=No se puede
leer datos desde el drvive.
Write Enabled. “1“=La cabeza está activada para escrituras,
”0”La cabeza está ubicada para lectura.
Motor of drive 1, 0.“0“=Motor apagado, ”1”=Motor encendido
Controlador de Floppy Disk
28 de Abril de 2011
23 / 49
Programación del FDC
Fases del Controlador
Máquina de estados
Fase de Comandos Luego de un reset o cuando se enciende el equipo, el
FDC ingresa en esta fase.
Fase de Ejecución Es en la fase que ocurren las transferencias de datos,
producto de los comandos enviados en la fase previa.
Fase de Resultados Se ingresa aqui lugo de generada la Interrupción, para
devolver los resultados de las transferencias.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
24 / 49
Programación del FDC
Fases del Controlador
Fase de Comandos
Los comandos se definen en la sección previa y consisten en diferentes
secuencias de bytes que deben ser enviados en el orden establecido.
Antes de escribir un comando el sofware debe examinar los bits
MSR.RQM, y MSR.DIO que deben estar en “1” y “0”
respevtivamente para poder acceder.
A menos que se haya enviado un comando ilegal, luego de recibido
correctamente el último byte MSR.RQM se pone en “0” y se ingresa
en la fase siguiente, definida para cada comando (Transferencia o
Resultado).
Durante esta fase se deshabilita la FIFO Read del controlador
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
25 / 49
Programación del FDC
Fases del Controlador
Fase de Ejecución
Todos los comandos recibidos en la fase anterior puede ejecutarse en
Modo DMA o NO-DMA.
Dependiendo de ello se solicita al procesador transferir un byte
activando el pin INT o DRQ.
Transferencias NO-DMA desde la FIFO hacia la CPU.Cuando el FIFO
contiene (16-umbral) bytes listos para transferir, se setea MSR.RQM, y se
activa el pin INT. Cuando se vacı́a la FIFO, INT y MSR.RQM, se desactivan
solos.
Transferencias NO-DMA desde la CPU hacia la FIFO.Se setea
MSR.RQM, y se activa el pin INT como respuesta al comando. Cuando el
FIFO contiene (16-umbral) bytes listos para transferir, (full) se desactivan
solos.
Transferencias DMA desde la FIFO hacia la CPU.Cuando el FIFO
contiene (16-umbral) bytes listos para transferir, se activa el pin DRQ. El
Controlador de DMA termina de leer el último byte transferencia y activa el
pin DACK del controlador. Al recibir DACK el FDC desactiva DRQ.
Transferencias DMA desde la CPU hacia la FIFO.Cuando el FDC está listo
para la transferencia luego de haber recibido el comando activa DRQ. El
Controlador de DMA activa los pines de escritura y DACK y escribe un byte
en la FIFO. El FDC deja el pin DRQ activo hasta que la FIFO esté llena.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
26 / 49
Programación del FDC
Fases del Controlador
Fase de Resultados
Los bits MSR.RQM y MSR DIO deben estar en “1” antes de que el
resultado se lea de la FIFO.
Una vez leı́do el resultado vuelven al estado “1” “0” respectivamente.
Además se pone en “0” MSR.CMD BSY para indicar que el
controlador está desocupado.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
27 / 49
Programación del FDC
Comandos
Estructura
Los comandos se envı́an al FDC en la Fase de comandos.
Cada comando tiene un set de parámetros que se escriben en el FDC
como una secuencia de bytes.
El FDC analiza el primer byte del comando para chequear que se trate
de un comando válido.
Si es válido toma el resto, procede a ejecutarlo y devuelve una fase de
estados y un set de resultados.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
28 / 49
Programación del FDC
Comandos
Información de estado de un comando: ST0
7
IC1
Bit
ICx
SE
EC
H
DSx
6
IC0
5
SE
4
UC
3
−
2
H
1
US1
0
US0
Descripción
Interrupt Code. “00“ = Terminación normal del comando. ”01” = Terminación anornal: el comando se inició pero no puedo terminar. “10“ = Comando
Inválido. ”11” = Terminación anormal causada por polling..
Seek End. El FDC completo un comando SEEK o RECALIBRATE, o un
comando READ o WRITE que implicaron un seek.
Equipment Check. El Pin TRK0 no pudo seterase en “1“, luego de 80 pulsos
al stepper en un comando RECALIBRATE, o si un comando SEEK RELATIVE llevó el cabezal mas allá del Track 0.
No se utiliza, normalmente devuelve “0”.
Head Address. Devuelve la dirección del Cabezal en uso.
Drive Select.Devuelve el número de Drive seleccionado
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
29 / 49
Programación del FDC
Comandos
Información de estado de un comando: ST1
7
EN
Bit
EN
DE
OR
ND
NW
MA
6
−
5
DE
4
OR
3
−
2
ND
1
NW
0
MA
Descripción
End Of Cilynder. Indica que el FDC intentó acceder a un sector mas allá del
final de una pista. Puede setearse en respuesta a una ausencia de Terminal
Count desde el DMA en respuesta a un comando READ o WRITE.
No se utiliza, normalmente devuelve “0”.
Data Error. El FDC detectó un error en el CRC del campo ID o en el campo
de Datos del sector.
Overrun / Underrun. Se pone en “1“ para indicar que el procesador o el DMA
Controller no ha atendido al FDC y en consecuencia se pisó o perdió un dato.
No se utiliza, normalmente devuelve “0”.
No Data. Vale “1“ si: los comandos READ DATA READ DELETED DATA
no encuentran el sector que se les especificó, o si el comando READ ID no
puede leer el ID del sector sin error, o si READ TRACK no puede encontrar
la secuencia de sectores correcta
No Writable. Este bit devuelve ”1”, si mientras el FDC está ejecuntando un
comando WRITE DATA, WRITE DELETED DATA, o FORMAT TRACK,
el pin WP se pone en “1“.
Missing Address Mark. Indica que el FDC no encuentra el ID Address Mark
de la pista especificada, luego de recibir por dos veces por el pin IDX el pulso
Index, o si no puede detectar la marca de dirección de la pista.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
30 / 49
Programación del FDC
Comandos
Información de estado de un comando: ST2
7
−
Bit
CM
DD
WC
BC
MD
6
CM
5
DD
4
WC
3
−
2
−
1
BC
0
MD
Descripción
No se utiliza, normalmente devuelve “0”.
Control Mark. Indica que o bien a consecuencia de un comando READ DATA
se encontró una marca de dirección de dato borrado, o bien que un READ
DELETED DATA encontró una marca de dirección de datos.
Data Error in Data Field. El FDC detectó un error en el CRC del campo de
Datos del sector.
Wrong Cylinder. La dirección de pista leı́da del ID del sector no coincide con
la mantenida por el FDC.
No se utiliza, normalmente devuelve “0”.
No se utiliza, normalmente devuelve “0”.
La dirección de pista leı́da del ID del sector no coincide con la mantenida por
el FDC, y es igual a 0xFF que indica pista errónea con un error de hardware
de acuerdo con el formato de soft-sectoring de IBM.
Missing Address Data Mark. Indica que no se puede detectar la marca de
direccón de dato o la marca de dirección de dato borrado.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
31 / 49
Programación del FDC
Comandos
Información de estado de un comando: ST3
7
−
Bit
WP
T0
HD
DSx
6
WP
5
−
4
T0
3
−
2
HD
1
DS1
0
DS0
Descripción
No se utiliza, normalmente devuelve “0”.
Write Protected. Indica el estado del bit WP.
No se utiliza, normalmente devuelve “1”.
Track 0. Indica el estado del pin T0.
No se utiliza, normalmente devuelve “1”.
Head address. Indica el estado del pin HDSEL.
Drive Select. Indica el estado de los pines DS1 y DS0 .
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
32 / 49
Programación del FDC
Comandos
READ DATA: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
33 / 49
Programación del FDC
Comandos
READ DELETED DATA: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
34 / 49
Programación del FDC
Comandos
READ TRACK: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
35 / 49
Programación del FDC
Comandos
READ: Desarrollo del comando
Bit
MT
Descripción
Multi Track. Cuando es “1”, habilita al FDC a tomar ambas pistas de cada
lado como un cilindro único, considerando a todos los sectores como una
pista única. Útil en tranferencias multisector.
MFM Método de grabación de la información: “1”=MFM (Doble densidad),
“0”=FM.
SK
Skip Bit. “1” implica que salteará en operaciones READ cualquier dato con
marca de datos borrado.
HDS Selecciona cabeza 0 o 1 de acurdo a su valor (“0” o “1”)
DSx Seleccionan el drive (00=Drive 0... 11=Drive3)
Byte
C
H
R
N
EOT
GPL
DTL
Descripción
Nro. de cilindro (0-255)
Cabezal (0 o 1)
Nro.de sector
Tamaño del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes,
.... 07:16Kbytes)
End Of Track. Nro de sector final de la pista actual
GAP Length. Tamaño del GAP 3
Tamaño especial de sector. Si N=“00“, DTL permite controlar la cantidad
de bytes a transferir. Si N ¿ DPL se lee el sector completo y se chequea su
CRC pero solo se pasan DPL bytes al procesador. Si N != ”00” DPL no
tiene significado y debe valer 0xFF
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
36 / 49
Programación del FDC
Comandos
READ: Respuesta
Luego de los bytes ST0, ST1, y ST2, el comando READ devuelve los
valores de las direcciones de Cilindro, Cabezal, Sector, y el tamaño de
sector que recibió en el comando. Es para poder verifiacr en el software
que se está leyendo lo mismo que se solicitó.
Byte
C
H
R
N
Descripción
Nro. de cilindro (0-255)
Cabezal (0 o 1)
Nro.de sector
Tamaño del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes,
.... 07:16Kbytes)
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
37 / 49
Programación del FDC
Comandos
WRITE DATA: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
38 / 49
Programación del FDC
Comandos
WRITE DELETED DATA: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
39 / 49
Programación del FDC
Comandos
WRITE: Desarrollo del comando
Bit
MT
Descripción
Multi Track. Cuando es “1”, habilita al FDC a tomar ambas pistas de cada
lado como un cilindro único, considerando a todos los sectores como una
pista única. Útil en tranferencias multisector.
MFM Método de grabación de la información: “1”=MFM (Doble densidad),
“0”=FM.
HDS Selecciona cabeza 0 o 1 de acurdo a su valor (“0” o “1”)
DSx Seleccionan el drive (00=Drive 0... 11=Drive3)
Byte
C
H
R
N
EOT
GPL
DTL
Descripción
Nro. de cilindro (0-255)
Cabezal (0 o 1)
Nro.de sector
Tamaño del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes,
.... 07:16Kbytes)
End Of Track. Nro de sector final de la pista actual
GAP Length. Tamaño del GAP 3
Tamaño especial de sector. Si N=“00“, DTL permite controlar la cantidad
de bytes a transferir. Si N ¿ DPL se lee el sector completo y se chequea su
CRC pero solo se pasan DPL bytes al procesador. Si N != ”00” DPL no
tiene significado y debe valer 0xFF
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
40 / 49
Programación del FDC
Comandos
WRITE: Respuesta
Luego de los bytes ST0, ST1, y ST2, el comando WRITE devuelve los
valores de las direcciones de Cilindro, Cabezal, Sector, y el tamaño de
sector que recibió en el comando. Es para poder verifiacr en el software
que se escribió lo mismo que se solicitó.
Byte
C
H
R
N
Descripción
Nro. de cilindro (0-255)
Cabezal (0 o 1)
Nro.de sector
Tamaño del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes,
.... 07:16Kbytes)
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
41 / 49
Programación del FDC
Comandos
VERIFY: Formato
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
42 / 49
Programación del FDC
Comandos
VERIFY: Desarrollo del comando
Bit
MT
MFM
SK
EC
HDS
DSx
Descripción
Multi Track. Cuando es “1”, habilita al FDC a tomar ambas pistas de cada lado
como un cilindro único, considerando a todos los sectores como una pista única.
Útil en tranferencias multisector.
Método de grabación de la información: “1”=MFM (Doble densidad), “0”=FM.
Skip Bit. “1” implica que salteará en operaciones READ cualquier dato con
marca de datos borrado.
Enable Count. Cuando este bit es “1” el parámetro “DTL” de la respuesta se
debe interpretar como SC (Número de sectores por track).
Selecciona cabeza 0 o 1 de acurdo a su valor (“0” o “1”)
Seleccionan el drive (00=Drive 0... 11=Drive3)
Byte
C
H
R
N
Descripción
Nro. de cilindro (0-255)
Cabezal (0 o 1)
Nro.de sector
Tamaño del sector (00:128 bytes, 01:256 bytes, 02:512 bytes, 03:1024 bytes, ....
07:16Kbytes)
EOT
End Of Track. Nro de sector final de la pista actual
GPL
GAP Length. Tamaño del GAP 3
DTL/EC Tamaño especial de sector. Si N=“00“, DTL permite controlar la cantidad de
bytes a transferir. Si N ¿ DPL se lee el sector completo y se chequea su CRC pero
solo se pasan DPL bytes al procesador. Si N != ”00” DPL no tiene significado
y debe valer 0xFF
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
43 / 49
Programación del FDC
Comandos
RECALIBRATE, SEEK, y SENSE DRIVE STATUS:
Formatos
Bit
HDS
DSx
Descripción
Selecciona cabeza 0 o 1 de acurdo a su valor (“0” o “1”)
Seleccionan el drive (00=Drive 0... 11=Drive3)
Byte
NCN
Descripción
Nuevo Nro. de cilindro (0-255). Es el cilindro en el que se quiere posicionar
las cabezas.
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
44 / 49
Guias de programación
Handshake en la fase de Comandos y Resultados
Antes de enviar un comando o un parámetro
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
45 / 49
Guias de programación
Handshake en la fase de Comandos y Resultados
Para leer un resultado hay que:
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
46 / 49
Guias de programación
Handshake en la fase de Comandos y Resultados
Inicialización del 82077A
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
47 / 49
Guias de programación
Handshake en la fase de Comandos y Resultados
Comandos SEEK y RECALIBRATE
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
48 / 49
Guias de programación
Handshake en la fase de Comandos y Resultados
Operacions Read y Write
Alejandro Furfaro (PSO - DC)
Controlador de Floppy Disk
28 de Abril de 2011
49 / 49
Descargar