/*requirespriorinclusionof"exec/libraries.g"*/

type
List_t=unknown14,
Message_t=unknown20,
Interrupt_t=unknown22,
Library_t=unknown34,

DiscResourceUnit_t=struct{
Message_tdru_Message;
Interrupt_tdru_DiscBlock,dru_DiscSync,dru_Index;
},

DiscResource_t=struct{
Library_tdr_Library;
*DiscResourceUnitdr_Current;
ushortdr_Flags,dr_pad;
*Library_tdr_SysLib,dr_CiaResource;
[4]ulongdr_UnitID;
List_tdr_Waiting;
Interrupt_tdr_DiscBlock,dr_DiscSync,dr_Index;
};

ushort
DRB_ALLOC0=0,
DRB_ALLOC1=1,
DRB_ALLOC2=2,
DRB_ALLOC3=3,
DRB_ACTIVE=7,

DRF_ALLOC0=1<<DRB_ALLOC0,
DRF_ALLOC1=1<<DRB_ALLOC1,
DRF_ALLOC2=1<<DRB_ALLOC2,
DRF_ALLOC3=1<<DRB_ALLOC3,
DRF_ACTIVE=1<<DRB_ACTIVE;

uintDSKDMAOFF=0x4000;

*charDISKNAME="disk.resource";

int
DR_ALLOCUNIT=LIB_BASE-0*LIB_VECTSIZE,
DR_FREEUNIT=LIB_BASE-1*LIB_VECTSIZE,
DR_GETUNIT=LIB_BASE-2*LIB_VECTSIZE,
DR_GIVEUNIT=LIB_BASE-3*LIB_VECTSIZE,
DR_GETUNITID=LIB_BASE-4*LIB_VECTSIZE,

DR_LASTCOM=DR_GIVEUNIT;

ulong
DRT_AMIGA=0x00000000,
DRT_37422D2S=0x55555555,
DRT_EMPTY=0xFFFFFFFF;

extern
AllocUnit(ulongunitNum)bool,
FreeUnit(ulongunitNum)void,
GetUnit(*DiskResourceUnit_tunitPointer)*DiskResourceUnit,
GetUnitId(ulongunitNum)ulong,
GiveUnit()void;
