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