From 4e81c529d9035eaa1aed011d6f58fac7d9b7eb78 Mon Sep 17 00:00:00 2001 From: cuz Date: Sun, 7 Nov 2004 12:54:30 +0000 Subject: [PATCH] Update the mouse demo to run with the new mouse API that uses loadable drivers. Remove Atari support because there are no loadable drivers for the Atari. git-svn-id: svn://svn.cc65.org/cc65/trunk@3292 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- samples/.cvsignore | 1 + samples/README | 8 +++--- samples/mousedemo.c | 65 ++++++++++++++++++++++++++++----------------- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/samples/.cvsignore b/samples/.cvsignore index cbeb999b9..e152b0508 100644 --- a/samples/.cvsignore +++ b/samples/.cvsignore @@ -12,4 +12,5 @@ tgidemo *.d64 *.s *.lbl +*.mou *.tgi diff --git a/samples/README b/samples/README index 3a1c150b3..3bc098e3c 100644 --- a/samples/README +++ b/samples/README @@ -48,8 +48,8 @@ Platforms: Runs on all platforms that support conio, which means: ----------------------------------------------------------------------------- Name: mandelbrot -Description: A mandelbrot demo using integer arithmetic. The demo was - written by groepaz/hitmen and converted to cc65 using TGI +Description: A mandelbrot demo using integer arithmetic. The demo was + written by groepaz/hitmen and converted to cc65 using TGI graphics by Stephan Haubenthal. Platforms: All systems with TGI support. You may have to change the driver/resolution definition in the source. @@ -57,8 +57,8 @@ Platforms: All systems with TGI support. You may have to change the ----------------------------------------------------------------------------- Name: mousedemo Description: Shows how to use the mouse. -Platforms: All systems with mouse and conio support: - Atari (untested), C64, C128 and CBM510 +Platforms: All systems with mouse and conio support: + C64, C128 ----------------------------------------------------------------------------- Name: nachtm diff --git a/samples/mousedemo.c b/samples/mousedemo.c index 2ac1dc38d..276bc2904 100644 --- a/samples/mousedemo.c +++ b/samples/mousedemo.c @@ -7,6 +7,7 @@ +#include #include #include #include @@ -21,12 +22,15 @@ #if defined(__C64__) # define SPRITE0_DATA 0x0340 # define SPRITE0_PTR 0x07F8 +# define DRIVER "c64-1351.mou" #elif defined(__C128__) # define SPRITE0_DATA 0x0E00 # define SPRITE0_PTR 0x07F8 +# define DRIVER "c128-1351.mou" #elif defined(__CBM510__) # define SPRITE0_DATA 0xF400 # define SPRITE0_PTR 0xF3F8 +# define DRIVER "" /* Currently unavailable */ #endif /* The mouse sprite (an arrow) */ @@ -59,6 +63,32 @@ static const unsigned char MouseSprite[64] = { +static void CheckError (const char* S, unsigned char Error) +{ + if (Error != MOUSE_ERR_OK) { + printf ("%s: %s(%d)\n", S, mouse_geterrormsg (Error), Error); + exit (EXIT_FAILURE); + } +} + + + +static void DoWarning (void) +/* Warn the user that a mouse driver is needed for this program */ +{ + printf ("Warning: This program needs the mouse\n" + "driver with the name\n" + " %s\n" + "on disk! Press 'y' if you have it or\n" + "any other key to exit.\n", DRIVER); + if (cgetc () != 'y') { + exit (EXIT_SUCCESS); + } + printf ("Ok. Please wait patiently...\n"); +} + + + static void ShowState (unsigned char Invisible) /* Display cursor visibility */ { @@ -75,13 +105,13 @@ int main (void) struct mouse_info info; unsigned char Invisible; unsigned char Done; -#if defined(__ATARI__) - unsigned char type; -#endif /* Initialize the debugger */ DbgInit (0); + /* Output a warning about the driver that is needed */ + DoWarning (); + /* Clear the screen, set white on black */ bordercolor (COLOR_BLACK); bgcolor (COLOR_BLACK); @@ -103,29 +133,11 @@ int main (void) VIC.spr0_color = COLOR_WHITE; #endif - /* Initialize the mouse */ - mouse_init (MOUSE_CBM1351); - -#elif defined(__ATARI__) - - do { - cputs("\r\n"); - cputs("0 = trak-ball\r\n"); - cputs("1 = ST mouse\r\n"); - cputs("2 = Amiga mouse\r\n"); - cputs("Enter type (0-2): "); - type = cgetc(); - cputc(type); - } while (type < '0' || type > '2'); - type -= '0'; - - /* Initialize the mouse */ - mouse_init (type); - *(unsigned char *)0x2c0 = 15; /* set mouse cursor color (PM0) */ - clrscr (); - #endif + /* Load and install the mouse driver */ + CheckError ("mouse_load_driver", mouse_load_driver (&mouse_def_callbacks, DRIVER)); + /* Print a help line */ revers (1); cputsxy (0, 0, "d: debug h: hide q: quit s: show "); @@ -169,7 +181,10 @@ int main (void) } - mouse_done (); + /* Uninstall and unload the mouse driver */ + CheckError ("mouse_unload", mouse_unload ()); + + /* Say goodbye */ clrscr (); cputs ("Goodbye!\r\n"); -- 2.39.5