Veamos, para currar con LBA...
El LBA es un numero de 28 bits (que representaremos con variable word) que almacenamos en cuatro registros diferentes. Asi, cogemos los cuatro bits superiores del LBA (recuerda que aunque lo almacenemos en 32 bits, lo util son 28 bits, por lo que estamos hablando de los 4 bits inferiores del cuarto byte)
Codigo:
7 6 5 4 3 2 1 0
1 1 1 0 Bit27 Bit26 Bit25 Bit24
Si vas a usar un discoduro en modo esclavo, el bit 4 pasa a ser 1.
Luego, cogemos el tercer byte del LBA y lo metemos integramente en el registro Cylinder High.El segundo byte del LBA lo metemos en Cylinder Low. Y el primer byte en Sector Number.
Asi, ya has introducido la direccion LBA (que empieza desde 0 segun pruebas que he hecho en proteus). A partir de aqui, a elegir:
ESCRIBIR SECTOR:
Metemos el comando WRITE SECTOR.
Esperamos al flag DRQ (statusreg,3).
Nos pasamos al registro DATA
Escribimos 512 bytes y automaticamente DRQ desaparece y aparece BSY.
Esperamos a que BSY desaparezca y voilá!
LEER SECTOR:
Metemos el comando READ SECTOR
Esperamos al flag DRQ (statusreg,3).
Nos pasamos al registro DATA
Leemos 512 bytes, cuando el buffer se vacie, no se si se pone bsy o no, porsiacaso esperamos a que se quite.
salu2!