#ifndef RESOURCES_DISK_H #define RESOURCES_DISK_H /* ** $Filename: resources/disk.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 27.11 $ ** $Date: 90/11/21 $ ** ** disk.h -- external declarations for the disk resource ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_TYPES_H #include "exec/types.h" #endif #ifndef EXEC_LISTS_H #include "exec/lists.h" #endif #ifndef EXEC_PORTS_H #include "exec/ports.h" #endif #ifndef EXEC_INTERRUPTS_H #include "exec/interrupts.h" #endif #ifndef EXEC_LIBRARIES_H #include "exec/libraries.h" #endif /******************************************************************** * * Resource structures * ********************************************************************/ struct DiscResourceUnit { struct Message dru_Message; struct Interrupt dru_DiscBlock; struct Interrupt dru_DiscSync; struct Interrupt dru_Index; }; struct DiscResource { struct Library dr_Library; struct DiscResourceUnit *dr_Current; UBYTE dr_Flags; UBYTE dr_pad; struct Library *dr_SysLib; struct Library *dr_CiaResource; ULONG dr_UnitID[4]; struct List dr_Waiting; struct Interrupt dr_DiscBlock; struct Interrupt dr_DiscSync; struct Interrupt dr_Index; struct Task *dr_CurrTask; }; /* dr_Flags entries */ #define DRB_ALLOC0 0 /* unit zero is allocated */ #define DRB_ALLOC1 1 /* unit one is allocated */ #define DRB_ALLOC2 2 /* unit two is allocated */ #define DRB_ALLOC3 3 /* unit three is allocated */ #define DRB_ACTIVE 7 /* is the disc currently busy? */ #define DRF_ALLOC0 (1<<0) /* unit zero is allocated */ #define DRF_ALLOC1 (1<<1) /* unit one is allocated */ #define DRF_ALLOC2 (1<<2) /* unit two is allocated */ #define DRF_ALLOC3 (1<<3) /* unit three is allocated */ #define DRF_ACTIVE (1<<7) /* is the disc currently busy? */ /******************************************************************** * * Hardware Magic * ********************************************************************/ #define DSKDMAOFF 0x4000 /* idle command for dsklen register */ /******************************************************************** * * Resource specific commands * ********************************************************************/ /* * DISKNAME is a generic macro to get the name of the resource. * This way if the name is ever changed you will pick up the * change automatically. */ #define DISKNAME "disk.resource" #define DR_ALLOCUNIT (LIB_BASE - 0*LIB_VECTSIZE) #define DR_FREEUNIT (LIB_BASE - 1*LIB_VECTSIZE) #define DR_GETUNIT (LIB_BASE - 2*LIB_VECTSIZE) #define DR_GIVEUNIT (LIB_BASE - 3*LIB_VECTSIZE) #define DR_GETUNITID (LIB_BASE - 4*LIB_VECTSIZE) #define DR_READUNITID (LIB_BASE - 5*LIB_VECTSIZE) #define DR_LASTCOMM (DR_READUNITID) /******************************************************************** * * drive types * ********************************************************************/ #define DRT_AMIGA (0x00000000) #define DRT_37422D2S (0x55555555) #define DRT_EMPTY (0xFFFFFFFF) #define DRT_150RPM (0xAAAAAAAA) #endif /* RESOURCES_DISK_H */