]> git.sur5r.net Git - cc65/commitdiff
Update the mouse demo to run with the new mouse API that uses loadable
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 7 Nov 2004 12:54:30 +0000 (12:54 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 7 Nov 2004 12:54:30 +0000 (12:54 +0000)
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
samples/README
samples/mousedemo.c

index cbeb999b9486f04eca762f72c7c015ac13c19b20..e152b0508a4546e8d93ea8ef1d7235ce158b7a19 100644 (file)
@@ -12,4 +12,5 @@ tgidemo
 *.d64
 *.s
 *.lbl
+*.mou
 *.tgi
index 3a1c150b359b394545dc5bcc9f7a868e618bedc8..3bc098e3cbdab341c055aa4b34e3b973eb346b50 100644 (file)
@@ -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
index 2ac1dc38dd7500ed06f744262c4008e937dc5e3e..276bc29049789aeca2b13bffde3089eda41a05bb 100644 (file)
@@ -7,6 +7,7 @@
 
 
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <mouse.h>
 #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");