Unit IDE
Uses
Description
************************************************ * Asuro * Unit: Drivers/storage/IDE * Description: IDE ATA Driver * ************************************************ * Author: Aaron Hance * Contributors: ************************************************
Overview
Classes, Interfaces, Objects and Records
Name | Description |
---|---|
Record TIDE_Channel_Registers |
|
Record TIDE_Device |
Functions and Procedures
procedure init(); |
function load(ptr : void) : boolean; |
function identify_device(bus : uint8; device : uint8) : TIdentResponse; |
procedure readPIO28(drive : uint8; LBA : uint32; buffer : puint8); |
procedure writePIO28(drive : uint8; LBA : uint32; buffer : puint8); |
procedure dread(device : PStorage_device; LBA : uint32; sectorCount : uint32; buffer : puint32); |
procedure dwrite(device : PStorage_device; LBA : uint32; sectorCount : uint32; buffer : puint32); |
Types
TPortMode = (...); |
TIdentResponse = array[0..255] of uint16; |
TIDE_Status = bitpacked record
Busy : Boolean;
Ready : Boolean;
Fault : Boolean;
Seek : Boolean;
DRQ : Boolean;
CORR : Boolean;
IDDEX : Boolean;
ERROR : Boolean;
end; |
PIDE_Status = ˆTIDE_Status; |
Constants
Variables
controller: PPCI_Device; |
bar0: uint32; |
bar1: uint32; |
bar4: uint32; |
IDEDevices: array[0..3] of TIDE_Device; |
buffer: Puint32; |
Description
Functions and Procedures
procedure init(); |
function load(ptr : void) : boolean; |
function identify_device(bus : uint8; device : uint8) : TIdentResponse; |
procedure readPIO28(drive : uint8; LBA : uint32; buffer : puint8); |
procedure flush(); |
procedure writePIO28(drive : uint8; LBA : uint32; buffer : puint8); |
procedure dread(device : PStorage_device; LBA : uint32; sectorCount : uint32; buffer : puint32); |
read/write must be capable of reading/writting any amknt of data upto disk size |
procedure dwrite(device : PStorage_device; LBA : uint32; sectorCount : uint32; buffer : puint32); |
Types
TPortMode = (...); |
Values
|
TIdentResponse = array[0..255] of uint16; |
TIDE_Status = bitpacked record
Busy : Boolean;
Ready : Boolean;
Fault : Boolean;
Seek : Boolean;
DRQ : Boolean;
CORR : Boolean;
IDDEX : Boolean;
ERROR : Boolean;
end; |
PIDE_Status = ˆTIDE_Status; |
Constants
ATA_SR_BUSY = $80; |
ATA_SR_DRDY = $40; |
BUSY |
ATA_SR_DF = $20; |
DRIVE READY |
ATA_SR_DSC = $10; |
DRIVE WRITE FAULT |
ATA_SR_DRQ = $08; |
DRIVE SEEK COMPLETE |
ATA_SR_CORR = $04; |
DATA REQUEST READY |
ATA_SR_IDX = $02; |
CORRECTED DATA |
ATA_SR_ERR = $01; |
INLEX |
ATA_ER_BBK = $80; |
ERROR |
ATA_ER_UNC = $40; |
BAD SECTOR |
ATA_ER_MC = $20; |
UNCORRECTABLE DATA |
ATA_ER_IDNF = $10; |
NO MEDIA |
ATA_ER_MCR = $08; |
ID MARK NOT FOUND |
ATA_ER_ABRT = $04; |
NO MEDIA |
ATA_ER_TK0NF = $02; |
COMMAND ABORTED |
ATA_ER_AMNF = $01; |
TRACK 0 NOT FOUND |
ATA_CMD_READ_PIO = $20; |
NO ADDRESS MARK |
ATA_CMD_READ_PIO_EXT = $24; |
ATA_CMD_READ_DMA = $C8; |
ATA_CMD_READ_DMA_EXT = $25; |
ATA_CMD_WRITE_PIO = $30; |
ATA_CMD_WRITE_PIO_EXT = $34; |
ATA_CMD_WRITE_DMA = $CA; |
ATA_CMD_WRITE_DMA_EXT = $35; |
ATA_CMD_CACHE_FLUSH = $E7; |
ATA_CMD_CACHE_FLUSH_EXT = $EA; |
ATA_CMD_PACKET = $A0; |
ATA_CMD_IDENTIFY_PACKET = $A1; |
ATA_CMD_IDENTIFY = $EC; |
ATAPI_CMD_READ = $A8; |
ATAPI_CMD_EJECT = $1B; |
ATA_IDENT_DEVICETYPE = $0; |
ATA_IDENT_CYLINDERS = $2; |
ATA_IDENT_HEADS = $6; |
ATA_IDENT_SECOTRS = $12; |
ATA_IDENT_SERIAL = $20; |
ATA_IDENT_MODEL = $54; |
ATA_IDENT_CAPABILITIES = $98; |
ATA_IDENT_FIELDVALID = $106; |
ATA_IDENT_MAX_LBA = $120; |
ATA_IDENT_COMMANDSETS = $164; |
ATA_IDENT_MAX_LBA_EXT = $200; |
ATA_REG_DATA = $00; |
ATA_REG_ERROR = $01; |
ATA_REG_FEATURES = $01; |
ATA_REG_SECCOUNT = $02; |
ATA_REG_LBA0 = $03; |
ATA_REG_LBA1 = $04; |
ATA_REG_LBA2 = $05; |
ATA_REG_HDDEVSEL = $06; |
ATA_REG_COMMAND = $07; |
ATA_REG_STATUS = $07; |
ATA_REG_SECCOUNT1 = $08; |
ATA_REG_LBA3 = $09; |
ATA_REG_LBA4 = $0A; |
ATA_REG_LBA5 = $0B; |
ATA_REG_CONTROL = $0C; |
ATA_REG_ALTSTATUS = $0C; |
ATA_REG_DEVADDRESS = $0D; |
ATA_DEVICE_MASTER = $A0; |
ATA_DEVICE_SLAVE = $B0; |
ATA_PRIMARY_BASE = $1F0; |
Variables
controller: PPCI_Device; |
bar0: uint32; |
bar1: uint32; |
bar4: uint32; |
IDEDevices: array[0..3] of TIDE_Device; |
buffer: Puint32; |
Generated by PasDoc 0.16.0.