[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

;/* findboards.c - Execute me to compile me with SAS C 5.10
LC -b1 -cfistq -v -y -j73 findboards.c
Blink FROM LIB:c.o,findboards.o TO findboards LIBRARY LIB:LC.lib,LIB:Amiga.lib
quit
*/
#include <exec/types.h>
#include <exec/memory.h>
#include <libraries/dos.h>
#include <libraries/configvars.h>

#include <clib/exec_protos.h>
#include <clib/expansion_protos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#ifdef LATTICE
int CXBRK(void) { return(0); }  /* Disable Lattice CTRL/C handling */
int chkabort(void) { return(0); }  /* really */
#endif

struct Library   *ExpansionBase = NULL;

void main(int argc, char **argv)
{
    struct ConfigDev *myCD;
    UWORD m,i;
    UBYTE p,f,t;

    if((ExpansionBase=OpenLibrary("expansion.library",0L))==NULL)
	exit(RETURN_FAIL);

    /*--------------------------------------------------*/
    /* FindConfigDev(oldConfigDev,manufacturer,product) */
    /* oldConfigDev = NULL for the top of the list      */
    /* manufacturer = -1 for any manufacturer           */
    /* product      = -1 for any product                */
    /*--------------------------------------------------*/

    myCD = NULL;
    while(myCD=FindConfigDev(myCD,-1L,-1L)) /* search for all ConfigDevs */
	{
	printf("\n---ConfigDev structure found at location $%lx---\n",myCD);

	/* These values were read directly from the board at expansion time */
	printf("Board ID (ExpansionRom) information:\n");

	t = myCD->cd_Rom.er_Type;
	m = myCD->cd_Rom.er_Manufacturer;
	p = myCD->cd_Rom.er_Product;
	f = myCD->cd_Rom.er_Flags;
	i = myCD->cd_Rom.er_InitDiagVec;

	printf("er_Manufacturer         =%d=$%04x=(~$%4x)\n",m,m,(UWORD)~m);
	printf("er_Product              =%d=$%02x=(~$%2x)\n",p,p,(UBYTE)~p);

	printf("er_Type                 =$%02x",myCD->cd_Rom.er_Type);
	if(myCD->cd_Rom.er_Type & ERTF_MEMLIST)
	    printf("  (Adds memory to free list)\n");
	else printf("\n");

	printf("er_Flags                =$%02x=(~$%2x)\n",f,(UBYTE)~f);
	printf("er_InitDiagVec          =$%04x=(~$%4x)\n",i,(UWORD)~i);


	/* These values are generated when the AUTOCONFIG(tm) software
	 * relocates the board
	 */
	printf("Configuration (ConfigDev) information:\n");
	printf("cd_BoardAddr            =$%lx\n",myCD->cd_BoardAddr);
	printf("cd_BoardSize            =$%lx (%ldK)\n",
	       myCD->cd_BoardSize,((ULONG)myCD->cd_BoardSize)/1024);

	printf("cd_Flags                =$%x",myCD->cd_Flags);
	if(myCD->cd_Flags & CDF_CONFIGME)
	    printf("\n");
	else printf("  (driver clears CONFIGME bit)\n");
	}
    CloseLibrary(ExpansionBase);
}


[Back to Amiga Developer Docs]