Added option to build samples with statically linked drivers - and have the targets use it by default which don't support dynamically loaded drivers.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5913 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -14,18 +14,18 @@
|
||||
|
||||
|
||||
/* Graphics definitions */
|
||||
#define SCREEN_X (tgi_getxres())
|
||||
#define SCREEN_Y (tgi_getyres())
|
||||
#define MAXCOL (tgi_getcolorcount())
|
||||
#define SCREEN_X (tgi_getxres())
|
||||
#define SCREEN_Y (tgi_getyres())
|
||||
#define MAXCOL (tgi_getcolorcount())
|
||||
|
||||
#define maxiterations 32
|
||||
#define fpshift (10)
|
||||
#define tofp(_x) ((_x)<<fpshift)
|
||||
#define fromfp(_x) ((_x)>>fpshift)
|
||||
#define fpabs(_x) (abs(_x))
|
||||
#define maxiterations 32
|
||||
#define fpshift (10)
|
||||
#define tofp(_x) ((_x)<<fpshift)
|
||||
#define fromfp(_x) ((_x)>>fpshift)
|
||||
#define fpabs(_x) (abs(_x))
|
||||
|
||||
#define mulfp(_a,_b) ((((signed long)_a)*(_b))>>fpshift)
|
||||
#define divfp(_a,_b) ((((signed long)_a)<<fpshift)/(_b))
|
||||
#define mulfp(_a,_b) ((((signed long)_a)*(_b))>>fpshift)
|
||||
#define divfp(_a,_b) ((((signed long)_a)<<fpshift)/(_b))
|
||||
|
||||
/* Workaround missing clock stuff */
|
||||
#if defined(__APPLE2__) || defined(__APPLE2ENH__)
|
||||
@@ -33,13 +33,18 @@
|
||||
# define CLK_TCK 1
|
||||
#endif
|
||||
|
||||
/* Use dynamically loaded driver by default */
|
||||
#ifndef DYN_DRV
|
||||
# define DYN_DRV 1
|
||||
#endif
|
||||
|
||||
/* Use static local variables for speed */
|
||||
#pragma static-locals (1);
|
||||
|
||||
|
||||
|
||||
void mandelbrot (signed short x1, signed short y1, signed short x2,
|
||||
signed short y2)
|
||||
signed short y2)
|
||||
{
|
||||
register unsigned char count;
|
||||
register signed short r, r1, i;
|
||||
@@ -52,32 +57,32 @@ void mandelbrot (signed short x1, signed short y1, signed short x2,
|
||||
|
||||
yy = y1;
|
||||
for (y = 0; y < (SCREEN_Y); y++) {
|
||||
yy += ys;
|
||||
xx = x1;
|
||||
for (x = 0; x < (SCREEN_X); x++) {
|
||||
xx += xs;
|
||||
/* do iterations */
|
||||
r = 0;
|
||||
i = 0;
|
||||
for (count = 0; (count < maxiterations) &&
|
||||
(fpabs (r) < tofp (2)) && (fpabs (i) < tofp (2));
|
||||
++count) {
|
||||
r1 = (mulfp (r, r) - mulfp (i, i)) + xx;
|
||||
/* i = (mulfp(mulfp(r,i),tofp(2)))+yy; */
|
||||
i = (((signed long) r * i) >> (fpshift - 1)) + yy;
|
||||
r = r1;
|
||||
}
|
||||
if (count == maxiterations) {
|
||||
tgi_setcolor (0);
|
||||
} else {
|
||||
if (MAXCOL == 2)
|
||||
tgi_setcolor (1);
|
||||
else
|
||||
tgi_setcolor (count % MAXCOL);
|
||||
}
|
||||
/* set pixel */
|
||||
tgi_setpixel (x, y);
|
||||
}
|
||||
yy += ys;
|
||||
xx = x1;
|
||||
for (x = 0; x < (SCREEN_X); x++) {
|
||||
xx += xs;
|
||||
/* do iterations */
|
||||
r = 0;
|
||||
i = 0;
|
||||
for (count = 0; (count < maxiterations) &&
|
||||
(fpabs (r) < tofp (2)) && (fpabs (i) < tofp (2));
|
||||
++count) {
|
||||
r1 = (mulfp (r, r) - mulfp (i, i)) + xx;
|
||||
/* i = (mulfp(mulfp(r,i),tofp(2)))+yy; */
|
||||
i = (((signed long) r * i) >> (fpshift - 1)) + yy;
|
||||
r = r1;
|
||||
}
|
||||
if (count == maxiterations) {
|
||||
tgi_setcolor (0);
|
||||
} else {
|
||||
if (MAXCOL == 2)
|
||||
tgi_setcolor (1);
|
||||
else
|
||||
tgi_setcolor (count % MAXCOL);
|
||||
}
|
||||
/* set pixel */
|
||||
tgi_setpixel (x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,14 +95,19 @@ int main (void)
|
||||
|
||||
clrscr ();
|
||||
|
||||
#if DYN_DRV
|
||||
/* Load the graphics driver */
|
||||
cprintf ("initializing... mompls\r\n");
|
||||
tgi_load_driver (tgi_stddrv);
|
||||
#else
|
||||
/* Install the graphics driver */
|
||||
tgi_install (tgi_static_stddrv);
|
||||
#endif
|
||||
err = tgi_geterror ();
|
||||
if (err != TGI_ERR_OK) {
|
||||
cprintf ("Error #%d initializing graphics.\r\n%s\r\n",
|
||||
err, tgi_geterrormsg (err));
|
||||
exit (EXIT_FAILURE);
|
||||
cprintf ("Error #%d initializing graphics.\r\n%s\r\n",
|
||||
err, tgi_geterrormsg (err));
|
||||
exit (EXIT_FAILURE);
|
||||
};
|
||||
cprintf ("ok.\n\r");
|
||||
|
||||
@@ -132,5 +142,4 @@ int main (void)
|
||||
|
||||
/* Done */
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
|
||||
/* Address of data for sprite 0 */
|
||||
#if defined(__C64__)
|
||||
# define SPRITE0_DATA 0x0340
|
||||
# define SPRITE0_PTR 0x07F8
|
||||
# define SPRITE0_DATA 0x0340
|
||||
# define SPRITE0_PTR 0x07F8
|
||||
#elif defined(__C128__)
|
||||
# define SPRITE0_DATA 0x0E00
|
||||
# define SPRITE0_PTR 0x07F8
|
||||
# define SPRITE0_DATA 0x0E00
|
||||
# define SPRITE0_PTR 0x07F8
|
||||
#endif
|
||||
|
||||
/* The mouse sprite (an arrow) */
|
||||
@@ -56,6 +56,12 @@ static const unsigned char MouseSprite[64] = {
|
||||
#endif /* __C64__ or __C128__ */
|
||||
|
||||
|
||||
/* Dynamically loaded driver by default */
|
||||
#ifndef DYN_DRV
|
||||
# define DYN_DRV 1
|
||||
#endif
|
||||
|
||||
|
||||
#define max(a,b) (((a) > (b)) ? (a) : (b))
|
||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
|
||||
@@ -133,12 +139,18 @@ int main (void)
|
||||
|
||||
#endif
|
||||
|
||||
#if DYN_DRV
|
||||
/* Output a warning about the driver that is needed */
|
||||
DoWarning ();
|
||||
|
||||
/* Load and install the mouse driver */
|
||||
CheckError ("mouse_load_driver",
|
||||
mouse_load_driver (&mouse_def_callbacks, mouse_stddrv));
|
||||
#else
|
||||
/* Install the mouse driver */
|
||||
CheckError ("mouse_install",
|
||||
mouse_install (&mouse_def_callbacks, mouse_static_stddrv));
|
||||
#endif
|
||||
|
||||
/* Get the initial mouse bounding box */
|
||||
mouse_getbox (&full_box);
|
||||
@@ -210,8 +222,13 @@ int main (void)
|
||||
|
||||
}
|
||||
|
||||
#if DYN_DRV
|
||||
/* Uninstall and unload the mouse driver */
|
||||
CheckError ("mouse_unload", mouse_unload ());
|
||||
#else
|
||||
/* Uninstall the mouse driver */
|
||||
CheckError ("mouse_uninstall", mouse_uninstall ());
|
||||
#endif
|
||||
|
||||
/* Say goodbye */
|
||||
clrscr ();
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
|
||||
|
||||
|
||||
#ifndef DYN_DRV
|
||||
# define DYN_DRV 1
|
||||
#endif
|
||||
|
||||
#define COLOR_BACK TGI_COLOR_BLACK
|
||||
#define COLOR_FORE TGI_COLOR_WHITE
|
||||
|
||||
@@ -74,7 +78,7 @@ static void DoCircles (void)
|
||||
for (I = 10; I < 240; I += 10) {
|
||||
tgi_ellipse (X, Y, I, tgi_imulround (I, AspectRatio));
|
||||
}
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
}
|
||||
|
||||
cgetc ();
|
||||
@@ -96,16 +100,16 @@ static void DoCheckerboard (void)
|
||||
for (X = 0; X <= MaxX; X += 10) {
|
||||
tgi_setcolor (Color);
|
||||
tgi_bar (X, Y, X+9, Y+9);
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
if (kbhit ()) {
|
||||
cgetc ();
|
||||
tgi_clear ();
|
||||
return;
|
||||
}
|
||||
}
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
}
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,11 +167,11 @@ static void DoLines (void)
|
||||
tgi_setpalette (Palette);
|
||||
tgi_setcolor (COLOR_FORE);
|
||||
|
||||
for (X = 0; X <= MaxY; X += 10) {
|
||||
tgi_line (0, 0, MaxY, X);
|
||||
tgi_line (0, 0, X, MaxY);
|
||||
tgi_line (MaxY, MaxY, 0, MaxY-X);
|
||||
tgi_line (MaxY, MaxY, MaxY-X, 0);
|
||||
for (X = 0; X <= MaxY; X += 10) {
|
||||
tgi_line (0, 0, MaxY, X);
|
||||
tgi_line (0, 0, X, MaxY);
|
||||
tgi_line (MaxY, MaxY, 0, MaxY-X);
|
||||
tgi_line (MaxY, MaxY, MaxY-X, 0);
|
||||
}
|
||||
|
||||
cgetc ();
|
||||
@@ -180,12 +184,19 @@ int main (void)
|
||||
{
|
||||
unsigned char Border;
|
||||
|
||||
#if DYN_DRV
|
||||
/* Warn the user that the tgi driver is needed */
|
||||
DoWarning ();
|
||||
|
||||
/* Load and initialize the driver */
|
||||
tgi_load_driver (tgi_stddrv);
|
||||
CheckError ("tgi_load_driver");
|
||||
#else
|
||||
/* Install the driver */
|
||||
tgi_install (tgi_static_stddrv);
|
||||
CheckError ("tgi_install");
|
||||
#endif
|
||||
|
||||
tgi_init ();
|
||||
CheckError ("tgi_init");
|
||||
tgi_clear ();
|
||||
@@ -204,8 +215,13 @@ int main (void)
|
||||
DoDiagram ();
|
||||
DoLines ();
|
||||
|
||||
#if DYN_DRV
|
||||
/* Unload the driver */
|
||||
tgi_unload ();
|
||||
#else
|
||||
/* Uninstall the driver */
|
||||
tgi_uninstall ();
|
||||
#endif
|
||||
|
||||
/* Reset the border */
|
||||
(void) bordercolor (Border);
|
||||
|
||||
Reference in New Issue
Block a user