Code Search for Developers
 
 
  

ATA.h from guliverkli at Krugle


Show ATA.h syntax highlighted

/*
     File:       ATA.h
 
     Contains:   ATA (PC/AT Attachment) Interfaces
 
     Version:    Technology: System 7.5
                 Release:    QuickTime 6.0.2
 
     Copyright:  (c) 1995-2001 by Apple Computer, Inc., all rights reserved
 
     Bugs?:      For bug reports, consult the following page on
                 the World Wide Web:
 
                     http://developer.apple.com/bugreporter/
 
*/
#ifndef __ATA__
#define __ATA__

#ifndef __MACTYPES__
#include "MacTypes.h"
#endif

#ifndef __MIXEDMODE__
#include "MixedMode.h"
#endif




#if PRAGMA_ONCE
#pragma once
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if PRAGMA_IMPORT
#pragma import on
#endif

#if PRAGMA_STRUCT_ALIGN
    #pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
    #pragma pack(2)
#endif


/* This is the structure used for the AT Interface core routines below */
enum {
    kATATrap                    = 0xAAF1,                       /* Manager trap number <This should be defined in Traps.h>*/
    kATAPBVers1                 = 0x01,                         /* parameter block version number 1*/
    kATAPBVers2                 = 0x02,                         /* parameter block version number for structures*/
    kATAPBVers3                 = 0x03,                         /* parameter block version for ATA times*/
    kATADefaultBlockSize        = 512                           /* default block size*/
};

/* Used to determine the presence of traps*/
enum {
    kFSMTrap                    = 0xAC,
    mDQEChanged                 = 1                             /* DQE has changed */
};

/* Task file definition ooo Error Register ooo*/
enum {
    bATABadBlock                = 7,                            /* bit number of bad block error bit*/
    bATAUncorrectable           = 6,                            /* bit number of uncorrectable error bit*/
    bATAMediaChanged            = 5,                            /* bit number of media changed indicator*/
    bATAIDNotFound              = 4,                            /* bit number of ID not found error bit*/
    bATAMediaChangeReq          = 3,                            /* bit number of media changed request*/
    bATACommandAborted          = 2,                            /* bit number of command abort bit*/
    bATATrack0NotFound          = 1,                            /* bit number of track not found*/
    bATAAddressNotFound         = 0,                            /* bit number of address mark not found*/
    mATABadBlock                = 1 << bATABadBlock,            /* Bad Block Detected*/
    mATAUncorrectable           = 1 << bATAUncorrectable,       /* Uncorrectable Data Error*/
    mATAMediaChanged            = 1 << bATAMediaChanged,        /* Media Changed Indicator (for removable)*/
    mATAIDNotFound              = 1 << bATAIDNotFound,          /* ID Not Found*/
    mATAMediaChangeReq          = 1 << bATAMediaChangeReq,      /* Media Change Requested (NOT IMPLEMENTED)*/
    mATACommandAborted          = 1 << bATACommandAborted,      /* Aborted Command*/
    mATATrack0NotFound          = 1 << bATATrack0NotFound,      /* Track 0 Not Found*/
    mATAAddressNotFound         = 1 << bATAAddressNotFound      /* Address Mark Not Found*/
};

/* Task file definition ooo Features register ooo*/
enum {
    bATAPIuseDMA                = 0,                            /* bit number of useDMA bit (ATAPI)*/
    mATAPIuseDMA                = 1 << bATAPIuseDMA
};

/* Task file definition ooo ataTFSDH Register ooo*/
enum {
    mATAHeadNumber              = 0x0F,                         /* Head Number (bits 0-3) */
    mATASectorSize              = 0xA0,                         /* bit 7=1; bit 5 = 01 (512 sector size) <DP4>*/
    mATADriveSelect             = 0x10,                         /* Drive (0 = master, 1 = slave) */
    mATALBASelect               = 0x40                          /* LBA mode bit (0 = chs, 1 = LBA)*/
};

/* Task file definition ooo Status Register ooo*/
enum {
    bATABusy                    = 7,                            /* bit number of BSY bit*/
    bATADriveReady              = 6,                            /* bit number of drive ready bit*/
    bATAWriteFault              = 5,                            /* bit number of write fault bit*/
    bATASeekComplete            = 4,                            /* bit number of seek complete bit*/
    bATADataRequest             = 3,                            /* bit number of data request bit*/
    bATADataCorrected           = 2,                            /* bit number of data corrected bit*/
    bATAIndex                   = 1,                            /* bit number of index mark*/
    bATAError                   = 0,                            /* bit number of error bit*/
    mATABusy                    = 1 << bATABusy,                /* Unit is busy*/
    mATADriveReady              = 1 << bATADriveReady,          /* Unit is ready*/
    mATAWriteFault              = 1 << bATAWriteFault,          /* Unit has a write fault condition*/
    mATASeekComplete            = 1 << bATASeekComplete,        /* Unit seek complete*/
    mATADataRequest             = 1 << bATADataRequest,         /* Unit data request*/
    mATADataCorrected           = 1 << bATADataCorrected,       /* Data corrected*/
    mATAIndex                   = 1 << bATAIndex,               /* Index mark - NOT USED*/
    mATAError                   = 1 << bATAError                /* Error condition - see error register*/
};

/* Task file definition ooo Device Control Register ooo*/
enum {
    bATADCROne                  = 3,                            /* bit number of always one bit*/
    bATADCRReset                = 2,                            /* bit number of reset bit*/
    bATADCRnIntEnable           = 1,                            /* bit number of interrupt disable*/
    mATADCROne                  = 1 << bATADCROne,              /* always one bit*/
    mATADCRReset                = 1 << bATADCRReset,            /* Reset (1 = reset)*/
    mATADCRnIntEnable           = 1 << bATADCRnIntEnable        /* Interrupt Disable(0 = enabled)*/
};

/* ATA Command Opcode definition*/
enum {
    kATAcmdWORetry              = 0x01,                         /* Without I/O retry option*/
    kATAcmdNOP                  = 0x0000,                       /* NOP operation - media detect*/
    kATAcmdRecal                = 0x0010,                       /* Recalibrate command */
    kATAcmdRead                 = 0x0020,                       /* Read command */
    kATAcmdReadLong             = 0x0022,                       /* Read Long command*/
    kATAcmdWrite                = 0x0030,                       /* Write command */
    kATAcmdWriteLong            = 0x0032,                       /* Write Long*/
    kATAcmdWriteVerify          = 0x003C,                       /* Write verify*/
    kATAcmdReadVerify           = 0x0040,                       /* Read Verify command */
    kATAcmdFormatTrack          = 0x0050,                       /* Format Track command */
    kATAcmdSeek                 = 0x0070,                       /* Seek command */
    kATAcmdDiagnostic           = 0x0090,                       /* Drive Diagnostic command */
    kATAcmdInitDrive            = 0x0091,                       /* Init drive parameters command */
    kATAcmdReadMultiple         = 0x00C4,                       /* Read multiple*/
    kATAcmdWriteMultiple        = 0x00C5,                       /* Write multiple*/
    kATAcmdSetRWMultiple        = 0x00C6,                       /* Set Multiple for Read/Write Multiple*/
    kATAcmdReadDMA              = 0x00C8,                       /* Read DMA (with retries)*/
    kATAcmdWriteDMA             = 0x00CA,                       /* Write DMA (with retries)*/
    kATAcmdMCAcknowledge        = 0x00DB,                       /* Acknowledge media change - removable*/
    kATAcmdDoorLock             = 0x00DE,                       /* Door lock*/
    kATAcmdDoorUnlock           = 0x00DF,                       /* Door unlock*/
    kATAcmdStandbyImmed         = 0x00E0,                       /* Standby Immediate*/
    kATAcmdIdleImmed            = 0x00E1,                       /* Idle Immediate*/
    kATAcmdStandby              = 0x00E2,                       /* Standby*/
    kATAcmdIdle                 = 0x00E3,                       /* Idle*/
    kATAcmdReadBuffer           = 0x00E4,                       /* Read sector buffer command */
    kATAcmdCheckPowerMode       = 0x00E5,                       /* Check power mode command   <04/04/94>*/
    kATAcmdSleep                = 0x00E6,                       /* Sleep*/
    kATAcmdWriteBuffer          = 0x00E8,                       /* Write sector buffer command */
    kATAcmdWriteSame            = 0x00E9,                       /* Write same data to multiple sectors*/
    kATAcmdDriveIdentify        = 0x00EC,                       /* Identify Drive command */
    kATAcmdMediaEject           = 0x00ED,                       /* Media Eject*/
    kATAcmdSetFeatures          = 0x00EF                        /* Set Features*/
};

/* Set feature command opcodes*/
enum {
    kATAEnableWriteCache        = 0x02,                         /*       Enable write cache*/
    kATASetTransferMode         = 0x03,                         /*       Set transfer mode*/
    kATASetPIOMode              = 0x08,                         /*       PIO Flow Control Tx Mode bit*/
    kATAEnableECC               = 0x88,                         /*       ECC enable*/
    kATAEnableRetry             = 0x99,                         /*       Retry enable*/
    kATAEnableReadAhead         = 0xAA                          /*       Read look-ahead enable*/
};

/*
  --------------------------------------------------------------------------------
   enums for dealing with device IDs
*/

enum {
    kATABusIDMask               = 0x000000FF,
    kATADeviceIDMask            = 0x0000FF00,
    kATADeviceIDClippingMask    = 0x0000FFFF,
    kMinBusID                   = 0x00000000,
    kMaxBusID                   = 0x000000FE
};

enum {
    kATAStartIterateDeviceID    = 0xFFFF,
    kATAEndIterateDeviceID      = 0xFF
};

/*--------------------------------------------------------------------------------*/
/* Device Register Images  (8 bytes) */

struct ataTaskFile {
    UInt8                           ataTFFeatures;              /* <-> Error(R) or ataTFFeatures(W) register image */
    UInt8                           ataTFCount;                 /* <-> Sector count/remaining */
    UInt8                           ataTFSector;                /* <-> Sector start/finish */
    UInt8                           ataTFReserved;              /* reserved             */
    UInt16                          ataTFCylinder;              /* <-> ataTFCylinder (Big endian) */
    UInt8                           ataTFSDH;                   /* <-> ataTFSDH register image*/
    UInt8                           ataTFCommand;               /* <-> Status(R) or Command(W) register image */
};
typedef struct ataTaskFile              ataTaskFile;
/* ATA Manager Function Code Definition*/
enum {
    kATAMgrNOP                  = 0x00,                         /* No Operation*/
    kATAMgrExecIO               = 0x01,                         /* Execute ATA I/O*/
    kATAMgrBusInquiry           = 0x03,                         /* Bus Inquiry*/
    kATAMgrQRelease             = 0x04,                         /* I/O Queue Release*/
    kATAMgrAbort                = 0x10,                         /* Abort command*/
    kATAMgrBusReset             = 0x11,                         /* Reset ATA bus*/
    kATAMgrRegAccess            = 0x12,                         /* Register Access*/
    kATAMgrDriveIdentify        = 0x13,                         /* Drive Identify        <DP03/10/94>*/
    kATAMgrDriverLoad           = 0x82,                         /* Load driver from either Media, ROM, etc.*/
    kATAMgrDriveRegister        = 0x85,                         /* Register a driver   <4/18/94>*/
    kATAMgrFindDriverRefnum     = 0x86,                         /* lookup a driver refnum <4/18/94>*/
    kATAMgrRemoveDriverRefnum   = 0x87,                         /* De-register a driver   <4/18/94>*/
    kATAMgrModifyEventMask      = 0x88,                         /* Modify driver event mask*/
    kATAMgrDriveEject           = 0x89,                         /* Eject the drive       <8/1/94>*/
    kATAMgrGetDrvConfiguration  = 0x8A,                         /* Get device configuration   <8/6/94>*/
    kATAMgrSetDrvConfiguration  = 0x8B,                         /* Set device configuration <8/6/94>*/
    kATAMgrGetLocationIcon      = 0x8C,                         /* Get card location icon <SM4>*/
    kATAMgrManagerInquiry       = 0x90,                         /* Manager Inquiry*/
    kATAMgrManagerInit          = 0x91,                         /* Manager initialization*/
    kATAMgrManagerShutdown      = 0x92,                         /* Manager ShutDown*/
                                                                /* note: functions 0x93 to 0x97 are reserved*/
    kATAMgrFindSpecialDriverRefnum = 0x98,                      /* lookup a driver refnum; driverloader,notify-all or ROM driver.*/
    kATAMgrNextAvailable        = 0x99
};

/* used in the ataDrvrFlags field for kATAMgrDriveRegister,kATAMgrRemoveDriverRefnum & kATAMgrFindSpecialDriverRefnum*/
enum {
    kATANotifyAllDriver         = 0,                            /* Notify-All driver*/
    kATADriverLoader            = 1,                            /* Driver loader driver     */
    kATAROMDriver               = 2                             /* ROM driver*/
};

/* 'ATAFlags' field of the PB header definition*/
enum {
    bATAFlagUseConfigSpeed      = 15,                           /* bit number of use default speed flag*/
    bATAFlagByteSwap            = 14,                           /* bit number of byte swap flag*/
    bATAFlagIORead              = 13,                           /* bit number of I/O read flag*/
    bATAFlagIOWrite             = 12,                           /* bit number of I/O write flag*/
    bATAFlagImmediate           = 11,                           /* bit number of immediate flag*/
    bATAFlagQLock               = 10,                           /* bit number of que lock on error*/
    bATAFlagReserved1           = 9,                            /* reserved*/
    bATAFlagUseScatterGather    = 8,                            /* bit numbers of scatter gather*/
    bATAFlagUseDMA              = 7,                            /* bit number of use DMA flag*/
    bATAFlagProtocolATAPI       = 5,                            /* bit number of ATAPI protocol*/
    bATAFlagReserved2           = 4,                            /* reserved*/
    bATAFlagTFRead              = 3,                            /* bit number of register update*/
    bATAFlagLEDEnable           = 0,                            /* bit number of LED enable*/
    mATAFlagUseConfigSpeed      = 1 << bATAFlagUseConfigSpeed,
    mATAFlagByteSwap            = 1 << bATAFlagByteSwap,        /* Swap data bytes (read - after; write - before)*/
    mATAFlagIORead              = 1 << bATAFlagIORead,          /* Read (in) operation*/
    mATAFlagIOWrite             = 1 << bATAFlagIOWrite,         /* Write (out) operation*/
    mATAFlagImmediate           = 1 << bATAFlagImmediate,       /* Head of Que; Immediate operation*/
    mATAFlagQLock               = 1 << bATAFlagQLock,           /* Manager queue lock on error (freeze the queue)*/
    mATAFlagUseScatterGather    = 1 << bATAFlagUseScatterGather, /* Scatter gather enable*/
    mATAFlagUseDMA              = 1 << bATAFlagUseDMA,
    mATAFlagProtocolATAPI       = 1 << bATAFlagProtocolATAPI,   /* ATAPI protocol indicator*/
    mATAFlagTFRead              = 1 << bATAFlagTFRead,          /* update reg block request upon detection of an error*/
    mATAFlagLEDEnable           = 1 << bATAFlagLEDEnable        /* socket LED enable*/
};

/* These are legacy ATAFlags definitions, which will go away in the future*/
enum {
    bATAFlagScatterGather1      = bATAFlagReserved1,            /* 9*/
    bATAFlagScatterGather0      = bATAFlagUseScatterGather,     /* 8*/
    bATAFlagProtocol1           = bATAFlagProtocolATAPI,        /* 5*/
    bATAFlagProtocol0           = bATAFlagReserved2,            /* 4*/
    mATAFlagScatterGather1      = 1 << bATAFlagScatterGather1,
    mATAFlagScatterGather0      = mATAFlagUseScatterGather,
    mATAFlagScatterGathers      = mATAFlagScatterGather1 + mATAFlagScatterGather0,
    mATAFlagProtocol1           = mATAFlagProtocolATAPI,
    mATAFlagProtocol0           = 1 << bATAFlagProtocol0,
    mATAFlagProtocols           = mATAFlagProtocol1 + mATAFlagProtocol0
};


typedef CALLBACK_API( void , ATACallbackProcPtr )(void *ataPB);
typedef STACK_UPP_TYPE(ATACallbackProcPtr)                      ATACallbackUPP;
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
    EXTERN_API(ATACallbackUPP)
    NewATACallbackUPP              (ATACallbackProcPtr      userRoutine);

    EXTERN_API(void)
    DisposeATACallbackUPP          (ATACallbackUPP          userUPP);

    EXTERN_API(void)
    InvokeATACallbackUPP           (void *                  ataPB,
                                    ATACallbackUPP          userUPP);

#endif  /* CALL_NOT_IN_CARBON */

#else
    enum { uppATACallbackProcInfo = 0x000000C0 };                   /* pascal no_return_value Func(4_bytes) */
    #define NewATACallbackUPP(userRoutine)                          (ATACallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppATACallbackProcInfo, GetCurrentArchitecture())
    #define DisposeATACallbackUPP(userUPP)                          DisposeRoutineDescriptor(userUPP)
    #define InvokeATACallbackUPP(ataPB, userUPP)                    CALL_ONE_PARAMETER_UPP((userUPP), uppATACallbackProcInfo, (ataPB))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewATACallbackProc(userRoutine)                         NewATACallbackUPP(userRoutine)
#define CallATACallbackProc(userRoutine, ataPB)                 InvokeATACallbackUPP(ataPB, userRoutine)
/*
   
   structure which defines the ATA bus/device ID, part of the Device 0/1 Software Guide
   see <http://developer.apple.com/techpubs/hardware/Developer_Notes/System_Software/ATA_Device_Zero_One.pdf>
   p 19 :   Although ataPBDeviceID remains defined as a 32-bit number, drivers and applications
            can typecast it to the ataDeviceID structure to determine the bus number and device number
            for a specific ATA or ATAPI device
*/

struct ataDeviceID {
    UInt16                          Reserved;                   /* The upperword is reserved (0)*/
    UInt8                           devNum;                     /* device number (0 or 1)*/
    UInt8                           busNum;                     /* bus number*/
};
typedef struct ataDeviceID              ataDeviceID;

struct ataPBHeader {
                                                                /* Start of cloned common header ataPBHdr */
    struct ataPBHeader *            ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
};
typedef struct ataPBHeader              ataPBHeader;
/* data request entry structure (16 bytes)*/

struct IOBlock {
    UInt8 *                         ataPBBuffer;                /* -->: Data buffer pointer*/
    UInt32                          ataPBByteCount;             /* -->: Data transfer length in bytes*/
};
typedef struct IOBlock                  IOBlock;
/*
   For ATAPI devices the ExtendedPB field is a pointer to the Command Packet
   record which exists of an array of words structured as follows...  <06/15/94>
*/

struct ATAPICmdPacket {
    SInt16                          atapiPacketSize;            /* Size of command packet in bytes    <06/15/94>*/
    SInt16                          atapiCommandByte[8];        /* The command packet itself  <06/15/94>*/
};
typedef struct ATAPICmdPacket           ATAPICmdPacket;
/* Manager parameter block structure (96 bytes)*/

struct ataIOPB {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    SInt8                           ataPBStatusRegister;        /* <--: Last ATA status image*/
    SInt8                           ataPBErrorRegister;         /* <--: Last ATA error image-valid if lsb of Status set*/
    SInt16                          ataPBReserved5;             /* Reserved*/
    UInt32                          ataPBLogicalBlockSize;      /* -->: Blind transfer size per interrupt (Logical block size)*/
    UInt8 *                         ataPBBuffer;                /* -->: Data buffer pointer*/
    UInt32                          ataPBByteCount;             /* -->: Data transfer length in bytes*/
    UInt32                          ataPBActualTxCount;         /* <--: Actual transfer count*/
    UInt32                          ataPBReserved6;             /* Reserved*/
    ataTaskFile                     ataPBTaskFile;              /* <->:   Device register images*/
    ATAPICmdPacket *                ataPBPacketPtr;             /* -->: ATAPI packet command block pointer (valid with ATAPI bit set)*/
    SInt16                          ataPBReserved7[6];          /* Reserved for future expansion*/
};
typedef struct ataIOPB                  ataIOPB;
/* Parameter block structure for bus and Manager inquiry command*/
/* Manager parameter block structure*/

struct ataBusInquiry {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    UInt16                          ataEngineCount;             /* <--: TBD; zero for now*/
    UInt16                          ataReserved1;               /* Reserved*/
    UInt32                          ataDataTypes;               /* <--: TBD; zero for now*/
    UInt16                          ataIOpbSize;                /* <--: Size of ATA IO PB*/
    UInt16                          ataMaxIOpbSize;             /* <--: TBD; zero for now*/
    UInt32                          ataFeatureFlags;            /* <--: TBD*/
    UInt8                           ataVersionNum;              /* <--: Version number for the HBA*/
    UInt8                           ataHBAInquiry;              /* <--: TBD; zero for now*/
    UInt16                          ataReserved2;               /* Reserved*/
    UInt32                          ataHBAPrivPtr;              /* <--: Ptr to HBA private data area*/
    UInt32                          ataHBAPrivSize;             /* <--: Size of HBA private data area*/
    UInt32                          ataAsyncFlags;              /* <--: Event capability for callback*/
    UInt8                           ataPIOModes;                /* <--: PIO modes supported (bit-significant)*/
    UInt8                           ataUltraDMAModes;           /* <--: Ultra DMA modes supported (b-sig)*/
    UInt8                           ataSingleDMAModes;          /* <--: Single Word DMA modes supported (b-sig)   */
    UInt8                           ataMultiDMAModes;           /* <--: Multiword DMA modes supported (b-sig)*/
    UInt32                          ataReserved4[4];            /* Reserved*/
    SInt8                           ataReserved5[16];           /* TBD*/
    SInt8                           ataHBAVendor[16];           /* <--: Vendor ID of the HBA*/
    SInt8                           ataContrlFamily[16];        /* <--: Family of ATA Controller*/
    SInt8                           ataContrlType[16];          /* <--: Model number of controller*/
    SInt8                           ataXPTversion[4];           /* <--: version number of XPT*/
    SInt8                           ataReserved6[4];            /* Reserved*/
    NumVersion                      ataHBAversion;              /* <--: version number of HBA*/
    UInt8                           ataHBAslotType;             /* <--: type of slot*/
    UInt8                           ataHBAslotNum;              /* <--: slot number of the HBA*/
    UInt16                          ataReserved7;               /* Reserved*/
    UInt32                          ataReserved8;               /* Reserved*/
};
typedef struct ataBusInquiry            ataBusInquiry;
/* Manager parameter block structure*/

struct ataMgrInquiry {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    NumVersion                      ataMgrVersion;              /* Manager Version information*/
    UInt8                           ataMgrPBVers;               /* <--: Manager PB version number supported*/
    UInt8                           Reserved1;                  /* Reserved*/
    UInt16                          ataBusCnt;                  /* <--: Number of ATA buses in the system*/
    UInt16                          ataDevCnt;                  /* <--: Total number of ATA devices detected*/
    UInt8                           ataPioModes;                /* <--: Maximum Programmed I/O speed mode supported*/
    UInt8                           Reserved2;                  /* Reserved*/
    UInt16                          ataIOClkResolution;         /* <--: IO Clock resolution in nsec (Not supported)*/
    UInt8                           ataSingleDMAModes;          /* <--: Single Word DMA modes supported   */
    UInt8                           ataMultiDMAModes;           /* <--: Multiword DMA modes supported*/
    SInt16                          Reserved[16];               /* Reserved for future expansion*/
};
typedef struct ataMgrInquiry            ataMgrInquiry;
/* Parameter block structure for Abort command*/
/* Manager parameter block structure*/

struct ataAbort {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    ataIOPB *                       ataAbortPB;                 /* -->: Parameter block to be aborted*/
    SInt16                          Reserved[22];               /* Reserved for future expansion*/
};
typedef struct ataAbort                 ataAbort;
/* Manager parameter block structure*/

struct ATAEventRec {
    UInt16                          ataEventCode;               /* --> ATA event code*/
    UInt16                          ataPhysicalID;              /* --> Physical drive reference*/
    SInt32                          ataDrvrContext;             /* Context pointer saved by driver*/
    UInt32                          ataMarker;                  /* Always 'LOAD'*/
    UInt32                          ataEventRecVersion;         /* Version number of this data structure*/
    UInt32                          ataDeviceType;              /* Device type on bus (valid for load driver only)*/
    UInt16                          ataRefNum;                  /* RefNum of driver (valid for remove driver only)*/
};
typedef struct ATAEventRec              ATAEventRec;
typedef ATAEventRec *                   ATAEventRecPtr;
typedef CALLBACK_API( SInt16 , ATAClientProcPtr )(ATAEventRecPtr ataERPtr);
typedef STACK_UPP_TYPE(ATAClientProcPtr)                        ATAClientUPP;
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
    EXTERN_API(ATAClientUPP)
    NewATAClientUPP                (ATAClientProcPtr        userRoutine);

    EXTERN_API(void)
    DisposeATAClientUPP            (ATAClientUPP            userUPP);

    EXTERN_API(SInt16)
    InvokeATAClientUPP             (ATAEventRecPtr          ataERPtr,
                                    ATAClientUPP            userUPP);

#endif  /* CALL_NOT_IN_CARBON */

#else
    enum { uppATAClientProcInfo = 0x000000E0 };                     /* pascal 2_bytes Func(4_bytes) */
    #define NewATAClientUPP(userRoutine)                            (ATAClientUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppATAClientProcInfo, GetCurrentArchitecture())
    #define DisposeATAClientUPP(userUPP)                            DisposeRoutineDescriptor(userUPP)
    #define InvokeATAClientUPP(ataERPtr, userUPP)                   (SInt16)CALL_ONE_PARAMETER_UPP((userUPP), uppATAClientProcInfo, (ataERPtr))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewATAClientProc(userRoutine)                           NewATAClientUPP(userRoutine)
#define CallATAClientProc(userRoutine, ataERPtr)                InvokeATAClientUPP(ataERPtr, userRoutine)
/* Parameter block structure for Driver Register command*/
/* Manager parameter block structure*/

struct ataDrvrRegister {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    SInt16                          ataDrvrRefNum;              /* <->: Driver reference number*/
    UInt16                          ataDrvrFlags;               /* -->: 1 = loader driver if ataPBDeviceID = -1 {PB2}*/
    UInt16                          ataDeviceNextID;            /* <--: used to specified the next drive ID*/
    SInt16                          ataDrvrLoadPriv;            /* Driver loader private storage*/
    ATAClientUPP                    ataEventHandler;            /* <->: Pointer to ATA event callback routine {PB2}*/
    SInt32                          ataDrvrContext;             /* <->: Context data saved by driver {PB2}*/
    SInt32                          ataEventMask;               /* <->: Set to 1 for notification of event {PB2}*/
    SInt16                          Reserved[14];               /* Reserved for future expansion - from [21] {PB2}*/
};
typedef struct ataDrvrRegister          ataDrvrRegister;
/* Parameter block structure for Modify driver event mask command*/

struct ataModifyEventMask {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    SInt32                          ataModifiedEventMask;       /* -->: new event mask value*/
    SInt16                          Reserved[22];               /* Reserved for future expansion*/
};
typedef struct ataModifyEventMask       ataModifyEventMask;
/* 'ataRegMask' field of the ataRegAccess definition*/
enum {
    bATAAltSDevCValid           = 14,                           /* bit number of alternate status/device cntrl valid bit*/
    bATAStatusCmdValid          = 7,                            /* bit number of status/command valid bit*/
    bATASDHValid                = 6,                            /* bit number of ataTFSDH valid bit*/
    bATACylinderHiValid         = 5,                            /* bit number of cylinder high valid bit*/
    bATACylinderLoValid         = 4,                            /* bit number of cylinder low valid bit*/
    bATASectorNumValid          = 3,                            /* bit number of sector number valid bit*/
    bATASectorCntValid          = 2,                            /* bit number of sector count valid bit*/
    bATAErrFeaturesValid        = 1,                            /* bit number of error/features valid bit*/
    bATADataValid               = 0,                            /* bit number of data valid bit*/
    mATAAltSDevCValid           = 1 << bATAAltSDevCValid,       /* alternate status/device control valid*/
    mATAStatusCmdValid          = 1 << bATAStatusCmdValid,      /* status/command valid*/
    mATASDHValid                = 1 << bATASDHValid,            /* ataTFSDH valid*/
    mATACylinderHiValid         = 1 << bATACylinderHiValid,     /* cylinder high valid*/
    mATACylinderLoValid         = 1 << bATACylinderLoValid,     /* cylinder low valid*/
    mATASectorNumValid          = 1 << bATASectorNumValid,      /* sector number valid*/
    mATASectorCntValid          = 1 << bATASectorCntValid,      /* sector count valid*/
    mATAErrFeaturesValid        = 1 << bATAErrFeaturesValid,    /* error/features valid*/
    mATADataValid               = 1 << bATADataValid            /* data valid*/
};

/* Parameter block structure for device register access command*/

union ataRegValueUnion {
    UInt8                           ataByteRegValue;            /* <->: Byte register value read or to be written*/
    UInt16                          ataWordRegValue;            /* <->: Word register value read or to be written*/
};
typedef union ataRegValueUnion          ataRegValueUnion;
/* Manager parameter block structure*/

struct ataRegAccess {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    UInt16                          ataRegSelect;               /* -->: Device Register Selector*/
                                                                /*         DataReg       0  */
                                                                /*         ErrorReg(R) or FeaturesReg(W)    1*/
                                                                /*         SecCntReg       2*/
                                                                /*         SecNumReg       3*/
                                                                /*         CylLoReg     4*/
                                                                /*         CylHiReg     5*/
                                                                /*         SDHReg      6*/
                                                                /*         StatusReg(R) or CmdReg(W)       7*/
                                                                /*         AltStatus(R) or DevCntr(W)   0E*/
    ataRegValueUnion                ataRegValue;
                                                                /* Following fields are valid only if ataRegSelect = 0xFFFF*/
    UInt16                          ataRegMask;                 /* -->: mask for register(s) to update*/
                                                                /*       bit 0 : data register valid*/
                                                                /*       bit 1 : error/feaures register valid*/
                                                                /*       bit 2 : sector count register valid*/
                                                                /*       bit 3 : sector number register valid*/
                                                                /*       bit 4 : cylinder low register valid*/
                                                                /*       bit 5 : cylinder high register valid*/
                                                                /*       bit 6 : ataTFSDH register valid*/
                                                                /*       bit 7 : status/command register valid*/
                                                                /*       bits 8 - 13 : reserved (set to 0)*/
                                                                /*       bit 14: alternate status / device control reg valid*/
                                                                /*      bit 15: reserved (set to 0)*/
    ataTaskFile                     ataRegisterImage;           /* <->: register images*/
    UInt8                           ataAltSDevCReg;             /* <->: Alternate status(R) or Device Control(W) register image*/
    UInt8                           Reserved3;                  /* Reserved*/
    SInt16                          Reserved[16];               /* Reserved for future expansion*/
};
typedef struct ataRegAccess             ataRegAccess;
/* Manager parameter block structure    <DP03/10/94>*/

struct ataIdentify {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    UInt16                          Reserved1[4];               /* Reserved.  These are used internally by the Manager*/
    UInt8 *                         ataPBBuffer;                /* Buffer for the identify data (512 bytes)*/
    UInt16                          Reserved2[12];              /* Used internally by the ATA Manager*/
    SInt16                          Reserved3[6];               /* Reserved for future expansion*/
};
typedef struct ataIdentify              ataIdentify;
/* 'ataConfigSetting' field of the Get/Set Device Configuration definition <8/6/94>*/
enum {
    ATAPIpacketDRQ_bit          = 6,                            /* bit number of ATAPI command packet DRQ option*/
    ATAPIpacketDRQ              = 1 << ATAPIpacketDRQ_bit       /* ATAPI command packet DRQ option*/
};

/* atapcValid field definition*/
enum {
    bATApcAccessMode            = 0,
    bATApcVcc                   = 1,
    bATApcVpp1                  = 2,
    bATApcVpp2                  = 3,
    bATApcStatus                = 4,
    bATApcPin                   = 5,
    bATApcCopy                  = 6,
    bATApcConfigIndex           = 7,
    bATApcLockUnlock            = 15,
    mATApcAccessMode            = 1 << bATApcAccessMode,
    mATApcVcc                   = 1 << bATApcVcc,
    mATApcVpp1                  = 1 << bATApcVpp1,
    mATApcVpp2                  = 1 << bATApcVpp2,
    mATApcStatus                = 1 << bATApcStatus,
    mATApcPin                   = 1 << bATApcPin,
    mATApcCopy                  = 1 << bATApcCopy,
    mATApcConfigIndex           = 1 << bATApcConfigIndex,
    mATApcLockUnlock            = 1 << bATApcLockUnlock
};

/* Device physical type & socket type indicator definition*/
enum {
    kATADeviceUnknown           = 0x00,                         /* no device or type undetermined*/
    kATADeviceATA               = 0x01,                         /* traditional ATA protocol device <7/29/94>*/
    kATADeviceATAPI             = 0x02,                         /* ATAPI protocol device  <7/29/94>*/
    kATADeviceReserved          = 0x03                          /* reserved by Apple (was PCMCIA)*/
};

enum {
    kATASocketInternal          = 0x01,                         /* Internal ATA socket*/
    kATASocketMB                = 0x02,                         /* Media Bay socket*/
    kATASocketPCMCIA            = 0x03                          /* PCMCIA socket*/
};

/* reserved words at the end of the devConfig structure*/
enum {
    kATAConfigReserved          = 5                             /* number of reserved words at the end*/
};

/*
   Get/Set Device Configuration parameter block structure <8/6/94>
   Manager parameter block structure
*/

struct ataDevConfiguration {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    SInt32                          ataConfigSetting;           /* <->: Configuration setting*/
                                                                /*      Bits 3 - 0: Reserved*/
                                                                /*      Bit 4: Reserved (allowLBAAccess)*/
                                                                /*      Bit 5: Reserved (allowRWMultiple)*/
                                                                /*      Bit 6: ATAPIpacketDRQ*/
                                                                /*       1 = Check for Interrupt DRQ on ATAPI command packet DRQ*/
                                                                /*       0 = Default: Check only for the assertion of command packet DRQ*/
                                                                /*      Bits 31 - 7: Reserved*/
    UInt8                           ataPIOSpeedMode;            /* <->: Device access speed in PIO Mode*/
    UInt8                           Reserved3;                  /* Reserved to force word alignment*/
    UInt16                          atapcValid;                 /* <->: Set when pcXXX fields are valid (atapcAccessMode - atapcConfigIndex)*/
                                                                /*       bit 0 - atapcAccessMode field valid, when set*/
                                                                /*       bit 1 - atapcVcc field valid, when set*/
                                                                /*       bit 2 - atapcVpp1 field valid, when set*/
                                                                /*       bit 3 - atapcVpp2 field valid, when set*/
                                                                /*       bit 4 - atapcStatus field valid, when set*/
                                                                /*       bit 5 - atapcPin field valid, when set*/
                                                                /*       bit 6 - atapcCopy field valid, when set*/
                                                                /*       bit 7 - atapcConfigIndex field valid, when set*/
                                                                /*       bits 14-8 - Reserved*/
                                                                /*       bit 15 - device lock/unlock request (write only)*/
    UInt16                          ataRWMultipleCount;         /* Reserved for future (not supported yet)*/
    UInt16                          ataSectorsPerCylinder;      /* Reserved for future (not supported yet)*/
    UInt16                          ataHeads;                   /* Reserved for future (not supported yet)*/
    UInt16                          ataSectorsPerTrack;         /* Reserved for future (not supported yet)*/
    UInt16                          ataSocketNumber;            /* <--: Socket number used by the CardServices*/
                                                                /*       0xFF = socket number invalid (Not a CardServices device)*/
                                                                /*       other = socket number of the device*/
    UInt8                           ataSocketType;              /* <--: Specifies the socket type (get config only)*/
                                                                /*       00 = Unknown socket*/
                                                                /*      01 = Internal ATA bus*/
                                                                /*       02 = Media Bay*/
                                                                /*       03 = PCMCIA*/
    UInt8                           ataDeviceType;              /* <--: Specifies the device type (get config only)*/
                                                                /*       00 = Unknown device*/
                                                                /*       01 = standard ATA device (HD)*/
                                                                /*       02 = ATAPI device*/
                                                                /*       03 = PCMCIA ATA device*/
    UInt8                           atapcAccessMode;            /* <->: Access mode: Memory vs. I/O (PCMCIA only)*/
    UInt8                           atapcVcc;                   /* <->: Voltage in tenths of a volt (PCMCIA only)*/
    UInt8                           atapcVpp1;                  /* <->: Voltage in tenths of a volt (PCMCIA only)*/
    UInt8                           atapcVpp2;                  /* <->: Voltage in tenths of a volt (PCMCIA only)*/
    UInt8                           atapcStatus;                /* <->: Card Status register setting (PCMCIA only)*/
    UInt8                           atapcPin;                   /* <->: Card Pin register setting (PCMCIA only)*/
    UInt8                           atapcCopy;                  /* <->: Card Socket/Copy register setting (PCMCIA only)*/
    UInt8                           atapcConfigIndex;           /* <->: Card Option register setting (PCMCIA only)*/
    UInt8                           ataSingleDMASpeed;          /* <->: Single Word DMA Timing Class*/
    UInt8                           ataMultiDMASpeed;           /* <->: Multiple Word DMA Timing Class*/
    UInt16                          ataPIOCycleTime;            /* <->:Cycle time for PIO mode*/
    UInt16                          ataMultiCycleTime;          /* <->:Cycle time for Multiword DMA mode*/
    UInt8                           ataUltraDMASpeed;           /* <-> Ultra DMA timing class*/
    UInt8                           reserved2;                  /* reserved*/
    UInt16                          ataUltraCycleTime;          /* <-> Cycle time for Ultra DMA mode*/
    UInt16                          Reserved1[5];               /* Reserved for future*/
};
typedef struct ataDevConfiguration      ataDevConfiguration;
/* Get Card Location Icon/Text  <SM4>*/
enum {
    kATALargeIconHFS            = 0x0001,                       /* Large B&W icon with mask (HFS)*/
    kATALargeIconProDOS         = 0x0081                        /* Large B&W icon with mask (ProDOS)*/
};

/* Manager parameter block structure*/

struct ataLocationData {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    SInt16                          ataIconType;                /* -->: icon type specifier*/
                                                                /*      1 = Large B&W icon with mask (256 bytes)*/
                                                                /*       0x81 = Same as 1, but ProDOS icon*/
    SInt16                          ataIconReserved;            /* Reserved to be longword aligned*/
    SInt8 *                         ataLocationIconPtr;         /* -->: Icon Data buffer pointer*/
    SInt8 *                         ataLocationStringPtr;       /* -->: Icon String buffer pointer*/
    UInt16                          Reserved1[18];              /* Reserved for future*/
};
typedef struct ataLocationData          ataLocationData;
/* ataOSType available*/
enum {
    kATAddTypeMacOS             = 0x0001                        /* Blue Mac O/S ddType value*/
};

/* The parameter block definition for all other ATA Manager functions.*/


struct ataGeneric {
                                                                /* Start of cloned common header ataPBHdr*/
    ataPBHeader *                   ataPBLink;                  /* a pointer to the next entry in the queue   */
    UInt16                          ataPBQType;                 /* type byte for safety check*/
    UInt8                           ataPBVers;                  /* -->: parameter block version number; Must be 0x01*/
    UInt8                           ataPBReserved;              /* Reserved                         */
    Ptr                             ataPBReserved2;             /* Reserved                         */
    ATACallbackUPP                  ataPBCallbackPtr;           /* -->: Completion Routine Pointer*/
    OSErr                           ataPBResult;                /* <--: Returned result          */
    UInt8                           ataPBFunctionCode;          /* -->: Manager Function Code */
    UInt8                           ataPBIOSpeed;               /* -->: I/O Timing Class       */
    UInt16                          ataPBFlags;                 /* -->: Various control options   */
    SInt16                          ataPBReserved3;             /* Reserved                         */
    UInt32                          ataPBDeviceID;              /* -->: Device identifier (see ataDeviceID)      */
    UInt32                          ataPBTimeOut;               /* -->: Transaction timeout value in msec */
    Ptr                             ataPBClientPtr1;            /* Client's storage Ptr 1     */
    Ptr                             ataPBClientPtr2;            /* Client's storage Ptr 2     */
    UInt16                          ataPBState;                 /* Reserved for Manager; Initialize to 0 */
    UInt16                          ataPBSemaphores;            /* Used internally by the manager*/
    SInt32                          ataPBReserved4;             /* Reserved                         */
                                                                /* End of cloned common header ataPBHdr*/
    UInt16                          Reserved[24];               /* Reserved for future*/
};
typedef struct ataGeneric               ataGeneric;

union ataPB {
    ataIOPB                         ataIOParamBlock;            /* parameter block for I/O*/
    ataBusInquiry                   ataBIParamBlock;            /* parameter block for bus inquiry*/
    ataMgrInquiry                   ataMIParamBlock;            /* parameter block for Manager inquiry*/
    ataAbort                        ataAbortParamBlock;         /* parameter block for abort*/
    ataDrvrRegister                 ataDRParamBlock;            /* parameter block for driver register*/
    ataModifyEventMask              ataMEParamBlock;            /* parameter block for event mask modify*/
    ataRegAccess                    ataRAParamBlock;            /* parameter block for register access*/
    ataIdentify                     ataDIParamBlock;            /* parameter block for drive identify*/
    ataDevConfiguration             ataDCParamBlock;            /* parameter block for device configuration*/
    ataLocationData                 ataLDParamBlock;            /* parameter block for location icon data*/
                                                                /*ataManagerInit  ataInitParamBlock;     // parameter block for Manager initialization*/
                                                                /*ataManagerShutDn    ataSDParamBlock;     // parameter block for Manager shutdown*/
                                                                /*ataDrvrLoad     ataDLParamBlock;     // parameter block for Driver loading*/
    ataGeneric                      ataGenericParamBlock;       /* parameter block for all other functions*/
};
typedef union ataPB                     ataPB;
/* The ATA Event codes...*/
enum {
    kATANullEvent               = 0x00,                         /* Just kidding -- nothing happened*/
    kATAOnlineEvent             = 0x01,                         /* An ATA device has come online*/
    kATAOfflineEvent            = 0x02,                         /* An ATA device has gone offline*/
    kATARemovedEvent            = 0x03,                         /* An ATA device has been removed from the bus*/
    kATAResetEvent              = 0x04,                         /* Someone gave a hard reset to the drive*/
    kATAOfflineRequest          = 0x05,                         /* Someone requesting to offline the drive*/
    kATAEjectRequest            = 0x06,                         /* Someone requesting to eject the drive*/
    kATAUpdateEvent             = 0x07,                         /* Potential configuration change reported by CardServices <SM4>*/
    kATATaskTimeRequest         = 0x08,                         /* The manager is requesting to be called at Task Time*/
    kATALoadDriverNow           = 0x09,                         /* Load the driver for the given bus immediately*/
    kATAPIResetEvent            = 0x0A,                         /* Someone gave a ATAPI reset to the drive*/
                                                                /* The following describes bit definitions in the eventMask field of ataDrvrRegister*/
    bATANullEvent               = 1 << kATANullEvent,           /* null event bit*/
    bATAOnlineEvent             = 1 << kATAOnlineEvent,         /* online event bit*/
    bATAOfflineEvent            = 1 << kATAOfflineEvent,        /* offline event bit*/
    bATARemovedEvent            = 1 << kATARemovedEvent,        /* removed event bit*/
    bATAResetEvent              = 1 << kATAResetEvent,          /* ATA reset event bit*/
    bATAOfflineRequest          = 1 << kATAOfflineRequest,      /* offline request event bit*/
    bATAEjectRequest            = 1 << kATAEjectRequest,        /* eject request event bit*/
    bATAUpdateEvent             = 1 << kATAUpdateEvent,         /* configuration update event bit*/
    bATAPIResetEvent            = 1 << kATAPIResetEvent         /* ATAPI reset event bit*/
};

enum {
    kATAEventMarker             = FOUR_CHAR_CODE('LOAD'),       /* Marker for the event data structure*/
    kATAEventVersion1           = 0x00000001                    /* Version 1 of the event structure*/
};

typedef CALLBACK_API( OSErr , ATADispatchProcPtr )(ataPB *pb);
typedef STACK_UPP_TYPE(ATADispatchProcPtr)                      ATADispatchUPP;
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
    EXTERN_API(ATADispatchUPP)
    NewATADispatchUPP              (ATADispatchProcPtr      userRoutine);

    EXTERN_API(void)
    DisposeATADispatchUPP          (ATADispatchUPP          userUPP);

    EXTERN_API(OSErr)
    InvokeATADispatchUPP           (ataPB *                 pb,
                                    ATADispatchUPP          userUPP);

#endif  /* CALL_NOT_IN_CARBON */

#else
    enum { uppATADispatchProcInfo = 0x000000E0 };                   /* pascal 2_bytes Func(4_bytes) */
    #define NewATADispatchUPP(userRoutine)                          (ATADispatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppATADispatchProcInfo, GetCurrentArchitecture())
    #define DisposeATADispatchUPP(userUPP)                          DisposeRoutineDescriptor(userUPP)
    #define InvokeATADispatchUPP(pb, userUPP)                       (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppATADispatchProcInfo, (pb))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewATADispatchProc(userRoutine)                         NewATADispatchUPP(userRoutine)
#define CallATADispatchProc(userRoutine, pb)                    InvokeATADispatchUPP(pb, userRoutine)
#if CALL_NOT_IN_CARBON
EXTERN_API( SInt16 )
ataManager                      (ataPB *                pb)                                 ONEWORDINLINE(0xAAF1);

/* Device Error codes: 0xDB42 - 0xDB5F  */

#endif  /* CALL_NOT_IN_CARBON */

enum {
    ATABaseErrCode              = -9406,                        /* Base error code - 0xDB42   */
    ioPending                   = 1,                            /* Asynch I/O in progress status*/
    AT_NRdyErr                  = ATABaseErrCode + 0x01,        /* 0xDB43: Drive not Ready */
    AT_IDNFErr                  = ATABaseErrCode + 0x02,        /* 0xDB44: ID not found */
    AT_DMarkErr                 = ATABaseErrCode + 0x03,        /* 0xDB45: Data mark not found */
    AT_BadBlkErr                = ATABaseErrCode + 0x04,        /* 0xDB46: Bad Block */
    AT_CorDataErr               = ATABaseErrCode + 0x05,        /* 0xDB47: Data was corrected */
    AT_UncDataErr               = ATABaseErrCode + 0x06,        /* 0xDB48: Data was not corrected */
    AT_SeekErr                  = ATABaseErrCode + 0x07,        /* 0xDB49: Seek error */
    AT_WrFltErr                 = ATABaseErrCode + 0x08,        /* 0xDB4A: Write fault */
    AT_RecalErr                 = ATABaseErrCode + 0x09,        /* 0xDB4B: Recalibrate failed */
    AT_AbortErr                 = ATABaseErrCode + 0x0A,        /* 0xDB4C: Command aborted by drive */
    AT_MCErr                    = ATABaseErrCode + 0x0C,        /* 0xDB4E: Media Changed error*/
    ATAPICheckErr               = ATABaseErrCode + 0x0D,        /* 0xDB4F: ATAPI Check condition <06/15/94>*/
    AT_UltraDMAiCRCErr          = ATABaseErrCode + 0x0E,        /* 0xDB50: CRC error during Ultra DMA xfer */
                                                                /* System error codes...Custom Driver Error Codes 0xDB60 - 0xDB6F*/
    DRVRCantAllocate            = ATABaseErrCode + 0x1E,        /* 0xDB60: Allocation error during initialization*/
    NoATAMgr                    = ATABaseErrCode + 0x1F,        /* 0xDB61: MgrInquiry failed => No ATA Manager*/
    ATAInitFail                 = ATABaseErrCode + 0x20,        /* 0xDB62: Mgr Initialization failed*/
    ATABufFail                  = ATABaseErrCode + 0x21,        /* 0xDB63: Device buffer test failure*/
    ATADevUnsupported           = ATABaseErrCode + 0x22,        /* 0xDB64: Device type not supported*/
    ATAEjectDrvErr              = ATABaseErrCode + 0x23,        /* 0xDB65: Could not eject the drive*/
                                                                /* Manager Error Codes 0xDB70 - 0xDB8F*/
    ATAMgrNotInitialized        = ATABaseErrCode + 0x2E,        /* 0xDB70: Mgr has not been initialized*/
    ATAPBInvalid                = ATABaseErrCode + 0x2F,        /* 0xDB71: The bus base address couldn't be found*/
    ATAFuncNotSupported         = ATABaseErrCode + 0x30,        /* 0xDB72: An unknown function code specified*/
    ATABusy                     = ATABaseErrCode + 0x31,        /* 0xDB73: Selected device is busy*/
    ATATransTimeOut             = ATABaseErrCode + 0x32,        /* 0xDB74: Transaction timeout detected*/
    ATAReqInProg                = ATABaseErrCode + 0x33,        /* 0xDB75: Channel busy; channel is processing another cmd*/
    ATAUnknownState             = ATABaseErrCode + 0x34,        /* 0xDB76: Device status register reflects an unknown state*/
    ATAQLocked                  = ATABaseErrCode + 0x35,        /* 0xDB77: I/O Queue is locked due to previous I/O error.*/
    ATAReqAborted               = ATABaseErrCode + 0x36,        /* 0xDB78: The I/O queue entry was aborted due to an abort req.*/
                                                                /*         or due to Manager shutdown.*/
    ATAUnableToAbort            = ATABaseErrCode + 0x37,        /* 0xDB79: The I/O queue entry could not be aborted.*/
    ATAAbortedDueToRst          = ATABaseErrCode + 0x38,        /* 0xDB7A: Request aborted due to a device reset command.*/
    ATAPIPhaseErr               = ATABaseErrCode + 0x39,        /* 0xDB7B: Unexpected phase - oooIS THIS VALID ERROR??? <06/15/94>*/
    ATAPITxCntErr               = ATABaseErrCode + 0x3A,        /* 0xDB7C: Overrun/Underrun condition detected*/
    ATANoClientErr              = ATABaseErrCode + 0x3B,        /* 0xDB7D: No client present to handle the event*/
    ATAInternalErr              = ATABaseErrCode + 0x3C,        /* 0xDB7E: MagnumOpus returned an error*/
    ATABusErr                   = ATABaseErrCode + 0x3D,        /* 0xDB7F: Bus error detected on I/O  */
    AT_NoAddrErr                = ATABaseErrCode + 0x3E,        /* 0xDB80: Invalid AT base adress */
    DriverLocked                = ATABaseErrCode + 0x3F,        /* 0xDB81: Current driver must be removed before adding another*/
    CantHandleEvent             = ATABaseErrCode + 0x40,        /* 0xDB82: Particular event couldn't be handled (call others)*/
    ATAMgrMemoryErr             = ATABaseErrCode + 0x41,        /* 0xDB83: Manager memory allocation error    */
    ATASDFailErr                = ATABaseErrCode + 0x42,        /* 0xDB84: Shutdown failure          */
    ATAXferParamErr             = ATABaseErrCode + 0x43,        /* 0xDB85: I/O xfer parameters inconsistent */
    ATAXferModeErr              = ATABaseErrCode + 0x44,        /* 0xDB86: I/O xfer mode not supported */
    ATAMgrConsistencyErr        = ATABaseErrCode + 0x45,        /* 0XDB87: Manager detected internal inconsistency. */
    ATADmaXferErr               = ATABaseErrCode + 0x46,        /* 0XDB88: fatal error in DMA side of transfer */
                                                                /* Driver loader error Codes 0xDB90 - 0xDBA5*/
    ATAInvalidDrvNum            = ATABaseErrCode + 0x4E,        /* 0xDB90: Invalid drive number from event*/
    ATAMemoryErr                = ATABaseErrCode + 0x4F,        /* 0xDB91: Memory allocation error*/
    ATANoDDMErr                 = ATABaseErrCode + 0x50,        /* 0xDB92: No DDM found on media  */
    ATANoDriverErr              = ATABaseErrCode + 0x51         /* 0xDB93: No driver found on the media   */
};

/* ------------------------ Version 1 definition -------------------------------    */
enum {
    v1ATABaseErrCode            = 0x0700,                       /* This needs a home somewhere*/
    v1AT_NRdyErr                = 0x01 - v1ATABaseErrCode,      /* 0xF901: -0x1DBE */
    v1AT_IDNFErr                = 0x04 - v1ATABaseErrCode,      /* 0xF904: -0x1DC0 */
    v1AT_DMarkErr               = 0x05 - v1ATABaseErrCode,      /* 0xF905: -0x1DC0 */
    v1AT_BadBlkErr              = 0x06 - v1ATABaseErrCode,      /* 0xF906: -0x1DC0 */
    v1AT_CorDataErr             = 0x07 - v1ATABaseErrCode,      /* 0xF907: -0x1DC0 */
    v1AT_UncDataErr             = 0x08 - v1ATABaseErrCode,      /* 0xF908: -0x1DC0 */
    v1AT_SeekErr                = 0x09 - v1ATABaseErrCode,      /* 0xF909: -0x1DC0 */
    v1AT_WrFltErr               = 0x0A - v1ATABaseErrCode,      /* 0xF90A: -0x1DC0 */
    v1AT_RecalErr               = 0x0B - v1ATABaseErrCode,      /* 0xF90B: -0x1DC0 */
    v1AT_AbortErr               = 0x0C - v1ATABaseErrCode,      /* 0xF90C: -0x1DC0 */
    v1AT_NoAddrErr              = 0x0D - v1ATABaseErrCode,      /* 0xF90D: -0x1D8D */
    v1AT_MCErr                  = 0x0E - v1ATABaseErrCode,      /* 0xF90E: -0x1DC0*/
                                                                /* System error codes...Custom Driver Error Codes*/
    v1DRVRCantAllocate          = -(v1ATABaseErrCode + 1),      /* 0xF8FF: -0x1D9F*/
    v1NoATAMgr                  = -(v1ATABaseErrCode + 2),      /* 0xF8FE: -0x1D9D*/
    v1ATAInitFail               = -(v1ATABaseErrCode + 3),      /* 0xF8FD: -0x1D9B*/
    v1ATABufFail                = -(v1ATABaseErrCode + 4),      /* 0xF8FC: -0x1D99*/
    v1ATADevUnsupported         = -(v1ATABaseErrCode + 5),      /* 0xF8FB: -0x1c97*/
                                                                /* Manager Error Codes*/
    v1ATAMgrNotInitialized      = -(v1ATABaseErrCode + 10),     /* 0xF8F6: -0x1D86*/
    v1ATAPBInvalid              = -(v1ATABaseErrCode + 11),     /* 0xF8F5: -0x1D84*/
    v1ATAFuncNotSupported       = -(v1ATABaseErrCode + 12),     /* 0xF8F4: -0x1D82*/
    v1ATABusy                   = -(v1ATABaseErrCode + 13),     /* 0xF8F3: -0x1D80*/
    v1ATATransTimeOut           = -(v1ATABaseErrCode + 14),     /* 0xF8F2: -0x1D7E*/
    v1ATAReqInProg              = -(v1ATABaseErrCode + 15),     /* 0xF8F1: -0x1D7C*/
    v1ATAUnknownState           = -(v1ATABaseErrCode + 16),     /* 0xF8F0: -0x1D7A*/
    v1ATAQLocked                = -(v1ATABaseErrCode + 17),     /* 0xF8EF: -0x1D78*/
    v1ATAReqAborted             = -(v1ATABaseErrCode + 18),     /* 0xF8EE: -0x1D76*/
    v1ATAUnableToAbort          = -(v1ATABaseErrCode + 19),     /* 0xF8ED: -0x1D74*/
    v1ATAAbortedDueToRst        = -(v1ATABaseErrCode + 20)      /* 0xF8EC: -0x1D72*/
};



#if PRAGMA_STRUCT_ALIGN
    #pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
    #pragma pack()
#endif

#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif

#ifdef __cplusplus
}
#endif

#endif /* __ATA__ */





See more files for this project here

guliverkli

Home of VobSub, Media Player Classic (MPC) and other misc utils.

Project homepage: http://sourceforge.net/projects/guliverkli
Programming language(s): C,C++,PHP
License: other

  ADSP.h
  ADSPSecure.h
  AEDataModel.h
  AEObjects.h
  AEPackObject.h
  AERegistry.h
  AEUserTermTypes.h
  AGP.h
  AIFF.h
  ASDebugging.h
  ASRegistry.h
  ATA.h
  ATSLayoutTypes.h
  ATSTypes.h
  ATSUnicode.h
  AVComponents.h
  AVLTree.h
  Aliases.h
  Appearance.h
  AppleEvents.h
  AppleGuide.h
  AppleScript.h
  AppleTalk.h
  Balloons.h
  CFArray.h
  CFBag.h
  CFBase.h
  CFBundle.h
  CFCharacterSet.h
  CFData.h
  CFDate.h
  CFDictionary.h
  CFNumber.h
  CFPlugIn.h
  CFPreferences.h
  CFPropertyList.h
  CFSet.h
  CFString.h
  CFStringEncodingExt.h
  CFTimeZone.h
  CFURL.h
  CFURLAccess.h
  CMAcceleration.h
  CMApplication.h
  CMCalibrator.h
  CMComponent.h
  CMConversions.h
  CMICCProfile.h
  CMMComponent.h
  CMPRComponent.h
  CMScriptingPlugin.h
  CRMSerialDevices.h
  CTBUtilities.h
  CarbonEvents.h
  CardServices.h
  CodeFragments.h
  Collections.h
  ColorPicker.h
  ColorPickerComponents.h
  CommResources.h
  Components.h
  ConditionalMacros.h
  ConnectionTools.h
  Connections.h
  ControlDefinitions.h
  ControlStrip.h
  Controls.h
  CoreFoundation.h
  CryptoMessageSyntax.h
  CursorDevices.h
  DatabaseAccess.h
  DateTimeUtils.h
  Debugging.h
  DeskBus.h
  DeviceControl.h
  Devices.h
  Dialogs.h
  Dictionary.h
  DigitalSignature.h
  DiskInit.h
  Disks.h
  Displays.h
  Drag.h
  DrawSprocket.h
  DriverFamilyMatching.h
  DriverGestalt.h
  DriverServices.h
  DriverSupport.h
  DriverSynchronization.h
  ENET.h
  EPPC.h
  Editions.h
  Endian.h
  Events.h
  FSM.h
  FileSigning.h
  FileTransferTools.h
  FileTransfers.h
  FileTypesAndCreators.h
  Files.h