]> git.sur5r.net Git - cc65/commitdiff
Added option to build samples with statically linked drivers - and have the targets...
authorol.sc <ol.sc@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Nov 2012 22:01:51 +0000 (22:01 +0000)
committerol.sc <ol.sc@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Nov 2012 22:01:51 +0000 (22:01 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5913 b7a2c559-68d2-44c3-8de9-860c34a00d81

include/atmos.h
include/lynx.h
include/nes.h
samples/mandelbrot.c
samples/mousedemo.c
samples/tgidemo.c

index 8155ee8b27643e9f808007e2ae46954b558b2bf5..90bc17f8657441eb19fd96d1627a4137598947b7 100644 (file)
 
 
 /* Color defines */
-#define COLOR_BLACK    0x00
-#define COLOR_RED      0x01
-#define COLOR_GREEN    0x02
-#define COLOR_YELLOW   0x03
-#define COLOR_BLUE     0x04
-#define COLOR_MAGENTA  0x05
-#define COLOR_CYAN     0x06
-#define COLOR_WHITE    0x07
+#define COLOR_BLACK    0x00
+#define COLOR_RED      0x01
+#define COLOR_GREEN    0x02
+#define COLOR_YELLOW   0x03
+#define COLOR_BLUE     0x04
+#define COLOR_MAGENTA  0x05
+#define COLOR_CYAN     0x06
+#define COLOR_WHITE    0x07
 
 
 
 /* Define hardware */
 #include <_6522.h>
-#define VIA            (*(struct __6522*)0x300)
+#define VIA    (*(struct __6522*)0x300)
 
 
 
 
 
 /* Character codes */
-#define CH_ULCORNER    '+'
-#define CH_URCORNER    '+'
-#define CH_LLCORNER    '+'
-#define CH_LRCORNER    '+'
-#define CH_TTEE        '+'
-#define CH_BTEE        '+'
-#define CH_LTEE        '+'
-#define CH_RTEE        '+'
-#define CH_CROSS       '+'
+#define CH_ULCORNER    '+'
+#define CH_URCORNER    '+'
+#define CH_LLCORNER    '+'
+#define CH_LRCORNER    '+'
+#define CH_TTEE                '+'
+#define CH_BTEE                '+'
+#define CH_LTEE                '+'
+#define CH_RTEE                '+'
+#define CH_CROSS       '+'
 #define CH_CURS_UP      11
 #define CH_CURS_DOWN    10
 #define CH_CURS_LEFT     8
 #define CH_LIRA                 95
 #define CH_ESC          27
 
+
+
+/* No support for dynamically loadable drivers */
+#define DYN_DRV                0
+
+
+
 void __fastcall__ atmos_load(const char* name);
 /* Load Atmos tape. */
 
@@ -108,6 +115,3 @@ void __fastcall__ atmos_save(const char* name, const void* start, const void* en
 
 /* End of atmos.h */
 #endif
-
-
-
index 6bb993284e5daed1744defc0080b35f29ba82134..a99971cc4990decdb7cad42c34de87e5df40e03f 100644 (file)
@@ -87,7 +87,8 @@
 #define TGI_COLOR_LIGHTBLUE     COLOR_LIGHTBLUE
 #define TGI_COLOR_WHITE         COLOR_WHITE
 
-
+/* No support for dynamically loadable drivers */
+#define DYN_DRV 0
 
 
 
@@ -182,11 +183,11 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val);
 #include <_mikey.h>
 #define MIKEY (*(struct __mikey *)0xFD00)
 
-#define _MIKEY_TIMERS (*(struct _mikey_all_timers *) 0xFD00)   // mikey_timers[8]
-#define _HBL_TIMER (*(struct _mikey_timer *) 0xFD00)                   // timer0 (HBL)
-#define _VBL_TIMER (*(struct _mikey_timer *) 0xFD08)                   // timer2 (VBL)
-#define _UART_TIMER (*(struct _mikey_timer *) 0xFD14)                  // timer4 (UART)
-#define _VIDDMA (*(unsigned int *) 0xFD92)                                             // dispctl/viddma
+#define _MIKEY_TIMERS (*(struct _mikey_all_timers *) 0xFD00)  // mikey_timers[8]
+#define _HBL_TIMER (*(struct _mikey_timer *) 0xFD00)          // timer0 (HBL)
+#define _VBL_TIMER (*(struct _mikey_timer *) 0xFD08)          // timer2 (VBL)
+#define _UART_TIMER (*(struct _mikey_timer *) 0xFD14)         // timer4 (UART)
+#define _VIDDMA (*(unsigned int *) 0xFD92)                    // dispctl/viddma
 
 #include <_suzy.h>
 #define SUZY        (*(struct __suzy*)0xFC00)
@@ -194,6 +195,3 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val);
 
 /* End of lynx.h */
 #endif
-
-
-
index f93d7d62ec31217a45cedb44d021639436a7da72..5e1853b2b030b6196f342b7b53ad40f6359618d4 100644 (file)
 
 
 /* Key and character defines */
-#define CH_ENTER               '\n'
-#define CH_CURS_UP             0x01
-#define CH_CURS_DOWN           0x02
-#define CH_CURS_LEFT           0x03
-#define CH_CURS_RIGHT          0x04
-#define CH_ESC                 8
-#define CH_DEL                 20
-
-#define CH_CROSS               0x10
+#define CH_ENTER                '\n'
+#define CH_CURS_UP              0x01
+#define CH_CURS_DOWN            0x02
+#define CH_CURS_LEFT            0x03
+#define CH_CURS_RIGHT           0x04
+#define CH_ESC                  8
+#define CH_DEL                  20
+
+#define CH_CROSS                0x10
 #define CH_RTEE                 0x17
 #define CH_LTEE                 0x0f
 #define CH_TTEE                 0x16
 #define CH_LRCORNER             0x08
 #define CH_PI                   0x05
 
-
 /* Color defines */
-#define COLOR_BLACK            0x00
-#define COLOR_WHITE            0x01
-#define COLOR_RED              0x02
-#define COLOR_CYAN             0x03
-#define COLOR_VIOLET           0x04
-#define COLOR_GREEN            0x05
-#define COLOR_BLUE             0x06
-#define COLOR_YELLOW           0x07
-#define COLOR_ORANGE           0x08
-#define COLOR_BROWN            0x09
-#define COLOR_LIGHTRED         0x0A
-#define COLOR_GRAY1            0x0B
-#define COLOR_GRAY2            0x0C
-#define COLOR_LIGHTGREEN       0x0D
-#define COLOR_LIGHTBLUE        0x0E
-#define COLOR_GRAY3            0x0F
+#define COLOR_BLACK             0x00
+#define COLOR_WHITE             0x01
+#define COLOR_RED               0x02
+#define COLOR_CYAN              0x03
+#define COLOR_VIOLET            0x04
+#define COLOR_GREEN             0x05
+#define COLOR_BLUE              0x06
+#define COLOR_YELLOW            0x07
+#define COLOR_ORANGE            0x08
+#define COLOR_BROWN             0x09
+#define COLOR_LIGHTRED          0x0A
+#define COLOR_GRAY1             0x0B
+#define COLOR_GRAY2             0x0C
+#define COLOR_LIGHTGREEN        0x0D
+#define COLOR_LIGHTBLUE         0x0E
+#define COLOR_GRAY3             0x0F
 
 /* Return codes of get_tv */
 #define TV_NTSC         0
 #define TV_PAL          1
 #define TV_OTHER        2
 
+/* No support for dynamically loadable drivers */
+#define DYN_DRV         0
+
 
 
 void waitvblank (void);
@@ -100,6 +102,3 @@ unsigned char get_tv (void);
 
 /* End of nes.h */
 #endif
-
-
-
index 23eda0cf12acb495936e6b9c1573f87826a21cfa..69035f4ed71b43294693a93e48223b17efacd042 100644 (file)
 
 
 /* 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__)
 #  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;
-
 }
index 6f0825e6a89ed3458796d1fda3899fcd96a1bf3d..80937c3b5221d4a581c49a75c6f29ce93a355317 100644 (file)
 
 /* 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 ();
index ccefdb5c14259ba44107833a155040ea172fc5eb..3329dd3ca258b670015de1a75efd2c05187dd93e 100644 (file)
@@ -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);