#include #include #include 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 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; }