#ifndef _SHORT_BLOCKS_H
#define _SHORT_BLOCKS_H

/*
**		ShortBlocks.h
**
**		Définitions d' une structure de liste 
**		pour les blocs de gestion d' une disquette AMIGADOS.
**
*/

/*	Les Blocks (B) sont chainés sous une forme particulière:
	la structure DiskList afin d' être aisément retrouvables en mémoire
*/


struct	DiskList
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	union {
	
	struct {
		WORD	dl_Parent;
		WORD	dl_NextHash;
		WORD	dl_Extension;
	}dl_type1;
	
	struct {
		WORD	reserved1;
		WORD	reserved2;
		LONG	*dl_AdrB;
	}dl_type3;

	struct {
		WORD	dl_Parent;
		WORD	dl_NextHash;
		LONG	*dl_AdrB;
	}dl_type4;

	struct {
		WORD	dl_FileHeader;
		WORD	dl_NextData;
		LONG	*dl_AdrB;
	}dl_type8;

	struct {
		WORD	dl_FileHeader;
		WORD	reserved2;
		WORD	dl_Extension;
		LONG	*dl_AdrB;
	}dl_type13;

	
	struct {
		LONG	*dl_AdrB;
	}dl_typeU;	/* Block Unknown */

	}dl_types;
};

struct	SFileHderB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	struct {
		WORD	dl_Parent;
		WORD	dl_NextHash;
		WORD	dl_Extension;
	}dl_type1;
};

struct	SRootB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	struct {
		WORD	reserved1;
		WORD	reserved2;
	}dl_type3;
};

struct	SUserDirB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	struct {
		WORD	dl_Parent;
		WORD	dl_NextHash;
	}dl_type4;
};

struct	SDataB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	struct {
		WORD	dl_FileHeader;
		WORD	dl_NextData;
	}dl_type8;
};

struct	SFileListB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
	struct {
		WORD	dl_FileHeader;
		WORD	reserved2;
		WORD	dl_Extension;
	}dl_type13;
};

struct SinitB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
};

struct	SUnknownB
{
	struct DiskList *dl_NextB;
	WORD	dl_Bloc;
	WORD	dl_Bloc2;
	WORD	dl_Data;
	WORD	dl_Type;
	LONG	*dl_AdrB;	
};
#endif