home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
402.lha
/
ECS_Test
/
ecs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-07-26
|
4KB
|
103 lines
echo ; /* Note that this declares an int available externally
lc -cfikrsu -b1 -d0 -v -qram: -ms -O -y ecs.c
blink ecs.o TO ecs MAP ecs.map,FHLOSX,PLAIN LIB lib:amiga.lib DEFINE _stdout=_echo SMALLDATA SMALLCODE NODEBUG VERBOSE
quit
*/
#include <stdio.h>
#include <exec/types.h>
#include "exec/exec.h"
#include "exec/execbase.h"
#include <graphics/gfxbase.h>
#include <hardware/custom.h>
#include "libraries/dos.h"
#include "proto/exec.h"
#include "proto/dos.h"
#undef printf /* Disable Lattice 5.0 Auto-Conversion of printf() */
/* into _writes() and _tinyprintf() */
/**********************/
/* Global Definitions */
/**********************/
#define GFXF_HR_AGNUS 1 /* Defined in v1.4 Alpha Includes */
#define GFXF_HR_DENISE 2 /* Defined in v1.4 Alpha Includes */
/********************/
/* Global Variables */
/********************/
struct GfxBase *GfxBase; /* Graphics.Library Base Vector */
struct DosLibrary *DOSBase; /* Dos.Library Base Vector */
/* Pickup a Ptr to Custom Chip Region */
struct Custom *chips = (struct Custom *)0xDFF000;
/***********************/
/* Function Prototypes */
/***********************/
void ecs(void);
int printf(char *, );
/**********************************************************************/
/* Enhanced Chipset (ECS) Detector Program (June '89) */
/* Public Domain - Do With It What You Will *
/* */
/* by Jeff Rush */
/* Sysop of Rising Star BBS @ (214) 231-1372 */
/* Fidonet: 1:124/4206 */
/* BIX: jrush */
/* */
/**********************************************************************/
void
ecs()
{
UWORD agnus_id, denise_id;
UBYTE osflags;
if (!(DOSBase = (struct DosLibrary *)OpenLibrary("dos.library",0)))
return;
echo = (int)Output();
printf("Enhanced Chipset (ECS) Detector Program, June '89\n");
printf("Full Public Domain - Do What You Will\n\n");
agnus_id = (chips->vposr & 0x7F00);
denise_id = (chips->pad7c[0] & 0x00FF);;
printf("Hardware Present:\n");
switch (agnus_id) {
case 0x0000: printf(" Normal Agnus Chip (PAL)\n"); break;
case 0x1000: printf(" Normal Agnus Chip (NTSC)\n"); break;
case 0x2000: printf(" Super Agnus Chip (PAL)\n"); break;
case 0x3000: printf(" Super Agnus Chip (NTCS)\n"); break;
default: printf(" Unrecognized Agnus Chip (ID# 0x%04X)\n", agnus_id); break;
}
if (denise_id == 0x00FC) printf(" Super Denise Chip\n");
else printf(" Normal Denise Chip\n");
printf("\n");
GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0);
if (GfxBase != NULL) {
osflags = (GfxBase->reserved[0] >> 24) & 0x000000FF;
if (agnus_id == 0x2000 || agnus_id == 0x3000) { /* If Super Agnus Present */
printf("Operating System is %s of the Presence of the Super Agnus Chip\n",
(osflags & GFXF_HR_AGNUS) ? "Aware" : "-Unaware-");
}
if (denise_id == 0x00FC) { /* If Super Denise Present */
printf("Operating System is %s of the Presence of the Super Denise Chip\n",
(osflags & GFXF_HR_DENISE) ? "Aware" : "-Unaware-");
}
CloseLibrary((struct Library *)GfxBase);
} else
printf("Error - Unable to Open GRAPHICS.LIBRARY\n");
CloseLibrary((struct Library *)DOSBase);
}