;/* vertb.c - Execute me to compile me with SAS C 5.10
LC -d0 -b1 -cfistq -v -y -j73 vertb.c
Blink FROM LIB:c.o,vertb.o,vertbserver.o TO vertb LIBRARY LIB:LC.lib,LIB:Amiga.lib
quit ; */
/* vertb.c - Vertical blank interrupt server example. Must be linked with vertbserver.o. */
#include <exec/memory.h>
#include <exec/interrupts.h>
#include <dos/dos.h>
#include <hardware/custom.h>
#include <hardware/intbits.h>
#include <clib/exec_protos.h>
#include <stdio.h>
#ifdef LATTICE
int CXBRK(void) { return(0); } /* Disable Lattice CTRL/C handling */
void chkabort(void) { return; } /* really */
#endif
extern void VertBServer(); /* proto for asm interrupt server */
void main(void)
{
struct Interrupt *vbint;
ULONG counter = 0;
ULONG endcount;
/* Allocate memory for */
if (vbint = AllocMem(sizeof(struct Interrupt), MEMF_PUBLIC|MEMF_CLEAR)) /* interrupt node. */
{
vbint->is_Node.ln_Type = NT_INTERRUPT; /* Initialize the node. */
vbint->is_Node.ln_Pri = -60;
vbint->is_Node.ln_Name = "VertB-Example";
vbint->is_Data = (APTR)&counter;
vbint->is_Code = VertBServer;
AddIntServer(INTB_VERTB, vbint); /* Kick this interrupt server to life. */
printf("VBlank server will increment a counter every frame.\n");
printf("counter started at zero, CTRL-C to remove server\n");
Wait(SIGBREAKF_CTRL_C);
endcount = counter;
printf("%ld vertical blanks occurred\nRemoving server\n", endcount);
RemIntServer(INTB_VERTB, vbint);
FreeMem(vbint, sizeof(struct Interrupt));
}
else printf("Can't allocate memory for interrupt node\n");
}