#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-1991 Commodore-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





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;
};


#define DRB_ALLOC0 0 
#define DRB_ALLOC1 1 
#define DRB_ALLOC2 2 
#define DRB_ALLOC3 3 
#define DRB_ACTIVE 7 

#define DRF_ALLOC0 (1<<0) 
#define DRF_ALLOC1 (1<<1) 
#define DRF_ALLOC2 (1<<2) 
#define DRF_ALLOC3 (1<<3) 
#define DRF_ACTIVE (1<<7) 






#define DSKDMAOFF 0x4000 






#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)



#define DRT_AMIGA (0x00000000)
#define DRT_37422D2S (0x55555555)
#define DRT_EMPTY (0xFFFFFFFF)
#define DRT_150RPM (0xAAAAAAAA)

#endif 
