1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-04 17:04:58 +00:00
cc65/samples/geos/vector-demo.c
izydorst fa084ef304 system vector interception fixes
git-svn-id: svn://svn.cc65.org/cc65/trunk@2339 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-08-15 23:17:11 +00:00

71 lines
1.3 KiB
C

#include <geos.h>
#include <conio.h>
#include <stdlib.h>
unsigned char x,y;
void_func oldMouseVector, oldKeyVector;
void foo1 (void) {
// do something on mouse press/release
gotoxy(x,y);
++x;
cputc('A');
// call previous routine
oldMouseVector();
}
void foo2 (void) {
// do something on key press/release
gotoxy(x,y);
++y;
cputc('B');
// call previous routine
oldKeyVector();
}
void hook_into_system(void) {
// hook into system vectors - preserve old value
oldMouseVector = mouseVector;
mouseVector = foo1;
oldKeyVector = keyVector;
keyVector = foo2;
}
void remove_hooks(void) {
mouseVector = oldMouseVector;
keyVector = oldKeyVector;
}
int main(void) {
x = 0;
y = 0;
/*
To make cc65 do something for you before exiting you might register
a function to be called using atexit call. #include <stdlib.h> then and
write:
*/
atexit(&remove_hooks);
clrscr();
cputsxy(0,1, CBOLDON "Just" COUTLINEON "a " CITALICON "string." CPLAINTEXT );
hook_into_system();
/* This program will loop forever though */
MainLoop();
/*
If not using atexit() you have to remember about restoring system vectors
right before exiting your application. Otherwise the system will most
likely crash.
remove_hooks();
*/
return 0;
}