30 lines
993 B
C
30 lines
993 B
C
#pragma once
|
|
|
|
struct IDEChannelRegisters{
|
|
unsigned short base; // I/O Base.
|
|
unsigned short ctrl; // Control Base
|
|
unsigned short bmide; // Bus Master IDE
|
|
unsigned char nIEN; // IEN (no interrupt)
|
|
};
|
|
|
|
|
|
struct IDE_DEVICE {
|
|
unsigned char Reserved; // 0 (Empty) or 1 (This device exists).
|
|
unsigned char Channel; // 0 (Primary Channel) or 1 (Secondary Channel).
|
|
unsigned char Drive; // 0 (Master Drive) or 1 (Slave Drive).
|
|
unsigned short Type; // 0 ATA, 1:ATAPI
|
|
unsigned short Signature; // Drive Signature
|
|
unsigned short Capabilities; // Features.
|
|
unsigned int CommandSets; // Command Sets Supported.
|
|
unsigned int Size; // Size in Sectors (NOTE: Seems unused nowadays as i've only seen the value be zero
|
|
unsigned char Model[41]; // Model in string.
|
|
} ;
|
|
|
|
|
|
|
|
extern IDEChannelRegisters channels[2];
|
|
extern IDE_DEVICE ide_devices[4];
|
|
extern unsigned char ide_buf[2048];
|
|
extern unsigned char ide_irq_invoked;
|
|
extern unsigned char atapi_packet[12];
|