#include "protos.h"
#include "CompactPlayer_Cat.h"
#define GS(a) GetCompactPlayerString(a)

enum { G_Panel = 1, G_Backward, G_Play, G_Forward, G_Stop, G_Titles, G_Program, G_List, GG_MAX1, G_Artist, G_Title, G_TitleList, G_Track, G_SaveTitles, GG_MAX2, G_Device, G_Unit, G_Select, GG_MAX3, GG_MAX };
extern struct Gadget * GList[GG_MAX];
extern struct Screen * Scr;
extern struct DrawInfo * Dri;
extern struct Window * Win;
extern Object *WinObj;
extern struct Gadget * MainLayout;
extern struct Window * ListWin;
extern Object *ListWinObj;
extern struct Gadget * ListLayout;
extern struct Window * ConfWin;
extern Object *ConfWinObj;
extern struct Gadget * ConfLayout;
extern STRPTR Screen;
extern BOOL done;
extern struct NewMenu CompactMenu[];

extern struct MsgPort *WinPort, *AppPort;

extern struct timerequest * TimerIO;
extern struct MsgPort * TimerPort;
extern struct Library * TimerBase;
extern struct List * TrackList;
extern struct MsgPort * SCSIPort;
extern struct IOStdReq * SCSIIO;
extern STRPTR Device;
extern ULONG Unit;
extern UBYTE * DataBuf;
extern UBYTE * TOCBuf;
extern UBYTE * SenseData;
extern BOOL Ejected;
extern BOOL JustStarted;
extern ULONG EndAddress;

typedef struct
{
	UBYTE opcode;
	UBYTE b1;
	UBYTE b2;
	UBYTE b3;
	UBYTE b4;
	UBYTE control;
} SCSICMD6;

typedef struct
{
	UBYTE opcode;
	UBYTE b1;
	UBYTE b2;
	UBYTE b3;
	UBYTE b4;
	UBYTE b5;
	UBYTE b6;
	UBYTE b7;
	UBYTE b8;
	UBYTE control;
} SCSICMD10;

typedef struct
{
	UBYTE opcode;
	UBYTE b1;
	UBYTE b2;
	UBYTE b3;
	UBYTE b4;
	UBYTE b5;
	UBYTE b6;
	UBYTE b7;
	UBYTE b8;
	UBYTE b9;
	UBYTE b10;
	UBYTE control;
} SCSICMD12;

#define MAX_TOC		100					/* maximum number of tracks */
#define SENSE_LEN	18					/* SCSI command reply data buffers */
#define DATA_LEN	252					/* SCSI command reply data buffers */
#define TOC_LEN 	(MAX_TOC * 8 + 4)	/* max TOC size = 100 TOC track descriptors */

extern ULONG TOCL[MAX_TOC];
extern ULONG TOCT[MAX_TOC];
extern UBYTE TOCF[MAX_TOC];
extern STRPTR TOCS[MAX_TOC];
extern ULONG TOCP[MAX_TOC];
extern STRPTR TITLE[2];
extern UBYTE TitleBuffer[(MAX_TOC+2)*40];
extern ULONG Tracks;
extern ULONG Track;
extern STRPTR IndexPath;

extern struct TextAttr CompactAttr;
extern struct TextAttr PanelAttr;
extern struct TextFont * CompactFont;
extern struct TextFont * PanelFont;
extern struct TextFont * ScreenFont;

extern struct List dummyList;
extern Class * CDPanelClass;

extern Object * ARexxObj;
