/* This program was printed in the Jan-Feb88 AmigaMail */
/* It has been tested to compile with Lattice 5.04 */

#include <libraries/configvars.h>
#include <libraries/expansion.h>

struct ExpansionBase *ExpansionBase;

void main();
void cleanup();
void printdev();

void main()
{
	static struct ConfigDev *MyConfigDev;

	ExpansionBase= (struct ExpansionBase *)OpenLibrary( EXPANSIONNAME,0);
	if(ExpansionBase==NULL)
	{
		printf("Error opening expansion library!!\n");
		cleanup();
		exit(0);
	}

	MyConfigDev=NULL;

	MyConfigDev=FindConfigDev(NULL,-1,-1);
	
	if(MyConfigDev==NULL)
	{
		printf("No configured devices found\n");
		cleanup();
		exit(0);
	}

	printdev(MyConfigDev);

	while((MyConfigDev=FindConfigDev(MyConfigDev,-1,-1))!=NULL)
	{
		printdev(MyConfigDev);
	}
	cleanup();
}

void cleanup()
{
	if(ExpansionBase) CloseLibrary(ExpansionBase);
}

void printdev(dev)
struct ConfigDev *dev;
{
	char buff[200];
	printf("Flags          = ");
	if(dev->cd_Flags==NULL) printf("NULL  ");
	if(dev->cd_Flags&CDF_SHUTUP) printf("CDF_SHUTUP  ");
	if(dev->cd_Flags&CDF_CONFIGME) printf("CDF_CONFIGME ");
	printf("\n");

	printf("Board Address   = %x\n",dev->cd_BoardAddr);
	printf("Board Size      = %d\n",dev->cd_BoardSize);
	printf("Slot Address    = %d\n",dev->cd_SlotAddr);
	printf("Slot Size       = %d\n",dev->cd_SlotSize);
	printf("Driver Code at    %x\n",dev->cd_Driver);

	printf("er_Type         = %x\n",dev->cd_Rom.er_Type);
	printf("er_Product      = %x\n",dev->cd_Rom.er_Product);
	printf("er_Flags        = %x\n",dev->cd_Rom.er_Flags);
	printf("er_Reserved03   = %x\n",dev->cd_Rom.er_Reserved03);
	printf("er_Manufacturer = %x\n",dev->cd_Rom.er_Manufacturer);
	printf("er_SerialNumber = %x\n",dev->cd_Rom.er_SerialNumber);
	printf("er_InitDiagVec  = %x\n",dev->cd_Rom.er_InitDiagVec);
	printf("er_Reserved0c   = %x\n",dev->cd_Rom.er_Reserved0c);
	printf("er_Reserved0d   = %x\n",dev->cd_Rom.er_Reserved0d);
	printf("er_Reserved0e   = %x\n",dev->cd_Rom.er_Reserved0e);
	printf("er_Reserved0f   = %x\n",dev->cd_Rom.er_Reserved0f);

	printf("Hit Return to continue:");
	gets(buff);
	printf("\n");
}
