mirror of
https://github.com/cc65/cc65.git
synced 2025-01-26 17:36:57 +00:00
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
This commit is contained in:
parent
d136a3409f
commit
4e81c529d9
@ -12,4 +12,5 @@ tgidemo
|
||||
*.d64
|
||||
*.s
|
||||
*.lbl
|
||||
*.mou
|
||||
*.tgi
|
||||
|
@ -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
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <mouse.h>
|
||||
@ -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");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user