]> git.sur5r.net Git - cc65/commitdiff
atari5200: get rid of conio_colors table
authorChristian Groessler <chris@groessler.org>
Tue, 9 Apr 2019 12:34:28 +0000 (14:34 +0200)
committerOliver Schmidt <ol.sc@web.de>
Fri, 12 Apr 2019 10:49:38 +0000 (12:49 +0200)
use system color variables instead; improve testcode/lib/atari5200/hello.c
test program

libsrc/atari5200/bgcolor.s
libsrc/atari5200/conioscreen.s
libsrc/atari5200/extra/conioscreen_20x12.s
testcode/lib/atari5200/hello.c

index bf10dff2cd4f9572c9cd861530a2444d8bf29378..127d26998639dc8966fbfdc7041fcd1346750d54 100644 (file)
@@ -2,7 +2,6 @@
 ; Christian Groessler, 05-Apr-2019
 ;
 
-        .import         conio_colors
         .export         _bgcolor
 
         .include        "atari5200.inc"
@@ -19,7 +18,7 @@ old_bg_color:
 _bgcolor:
         and     #3
         tax
-        lda     conio_colors,x
+        lda     COLOR0,x
         ldx     old_bg_color
         sta     COLOR4                  ; set new value
         sta     old_bg_color
@@ -30,7 +29,7 @@ _bgcolor:
 .segment        "ONCE"
 
 init_old_bgcolor:
-        lda     conio_colors+3          ; see also conioscreen.s for initialization
+        lda     COLOR0+3                ; see also conioscreen.s for initialization
         sta     old_bg_color
         rts
 
index d1a709fc3a035d78fa5e41aa896a120c31d1bf0e..895e946ef06b9d12238b4680d9696a0bc4e26ed8 100644 (file)
@@ -7,7 +7,6 @@
 SCREEN_BUF_SIZE =       20 * 24
 SCREEN_BUF      =       $4000 - SCREEN_BUF_SIZE
 
-                .import conio_colors
                 .export screen_setup
                 .export screen_width, screen_height
                 .export conio_color
@@ -44,13 +43,13 @@ clrscr:         sta     (SAVMSC),y
 
                 ; set default colors
 
-                lda     conio_colors
+                lda     #GTIA_COLOR_WHITE
                 sta     COLOR0
-                lda     conio_colors+1
+                lda     #GTIA_COLOR_LIGHTRED
                 sta     COLOR1
-                lda     conio_colors+2
+                lda     #GTIA_COLOR_LIGHTGREEN
                 sta     COLOR2
-                lda     conio_colors+3
+                lda     #GTIA_COLOR_BLACK
                 sta     COLOR3
                 sta     COLOR4          ; background
 
index 20ab7ea2ba27237e749dd8185b09a4cca055f121..9cde9826d7e95151b895c7f59352176bbb70a82a 100644 (file)
@@ -7,7 +7,6 @@
 SCREEN_BUF_SIZE =       20 * 12
 SCREEN_BUF      =       $4000 - SCREEN_BUF_SIZE
 
-                .import conio_colors
                 .export screen_setup
                 .export screen_width, screen_height
                 .export conio_color
@@ -44,13 +43,13 @@ clrscr:         sta     (SAVMSC),y
 
                 ; set default colors
 
-                lda     conio_colors
+                lda     #GTIA_COLOR_WHITE
                 sta     COLOR0
-                lda     conio_colors+1
+                lda     #GTIA_COLOR_LIGHTRED
                 sta     COLOR1
-                lda     conio_colors+2
+                lda     #GTIA_COLOR_LIGHTGREEN
                 sta     COLOR2
-                lda     conio_colors+3
+                lda     #GTIA_COLOR_BLACK
                 sta     COLOR3
                 sta     COLOR4          ; background
 
index 18daf0bdfdbf9d7ff9a66f0024a62b34442c5753..830d03a9152e79a31f7430776d50a5e1e9c49b6c 100644 (file)
@@ -22,6 +22,7 @@
 
 
 static const char Text [] = "Hello world!";
+static unsigned char colors[] = { COLOR_WHITE, COLOR_LIGHTGREEN, COLOR_LIGHTRED, COLOR_BLACK };
 
 
 
@@ -35,6 +36,7 @@ int main (void)
 {
     unsigned char XSize, YSize;
     unsigned char PosY;
+    unsigned char i = 0;
 
     /* Set screen colors */
     (void) textcolor (COLOR_WHITE);
@@ -47,54 +49,60 @@ int main (void)
     /* Ask for the screen size */
     screensize (&XSize, &YSize);
 
-    /* Draw a border around the screen */
+    /* Install joystick driver */
+    joy_install (joy_static_stddrv);
 
-    /* Top line */
-    cputc (CH_ULCORNER);
-    chline (XSize - 2);
-    cputc (CH_URCORNER);
+    while (1) {
+        /* Draw a border around the screen */
 
-    /* Vertical line, left side */
-    cvlinexy (0, 1, YSize - 2);
+        /* Top line */
+        cputc (CH_ULCORNER);
+        chline (XSize - 2);
+        cputc (CH_URCORNER);
 
-    /* Bottom line */
-    cputc (CH_LLCORNER);
-    chline (XSize - 2);
-    cputc (CH_LRCORNER);
+        /* Vertical line, left side */
+        cvlinexy (0, 1, YSize - 2);
 
-    /* Vertical line, right side */
-    cvlinexy (XSize - 1, 1, YSize - 2);
+        /* Bottom line */
+        cputc (CH_LLCORNER);
+        chline (XSize - 2);
+        cputc (CH_LRCORNER);
 
-    /* Write the greeting in the mid of the screen */
-    gotoxy ((XSize - strlen (Text)) / 2, YSize / 2);
-    cprintf ("%s", Text);
+        /* Vertical line, right side */
+        cvlinexy (XSize - 1, 1, YSize - 2);
 
-    PosY = wherey ();
-    textcolor (0); /* switch to color #0 */
-    cputsxy(3, ++PosY, "COLOR 0");
-    textcolor (1); /* switch to color #1 */
-    cputsxy(3, ++PosY, "COLOR 1");
-    textcolor (2); /* switch to color #2 */
-    cputsxy(3, ++PosY, "COLOR 2");
-    textcolor (3); /* switch to color #3 */ /* color #3 is the background color. So written text isn't visible. */
-    cputsxy(3, ++PosY, "COLOR 3");
+        /* Write the greeting in the mid of the screen */
+        gotoxy ((XSize - strlen (Text)) / 2, YSize / 2);
+        cprintf ("%s", Text);
 
-#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__) || defined(__ATARI5200__)
+        PosY = wherey ();
+        textcolor (colors[i]); /* switch to color #0 */
+        cputsxy(3, ++PosY, "COLOR 0");
+        textcolor ((colors[i] + 1) & 3); /* switch to color #1 */
+        cputsxy(3, ++PosY, "COLOR 1");
+        textcolor ((colors[i] + 2) & 3); /* switch to color #2 */
+        cputsxy(3, ++PosY, "COLOR 2");
+        textcolor ((colors[i] + 3) & 3); /* switch to color #3 */ /* color #3 is the background color. So written text isn't visible. */
+        cputsxy(3, ++PosY, "COLOR 3");
 
-    /* Wait for the user to press a button */
-    joy_install (joy_static_stddrv);
-    while (!joy_read (JOY_1)) ;
-    joy_uninstall ();
+        /* Wait for the user to press and release a button */
+        while (!joy_read (JOY_1))
+            ;
+        while (joy_read (JOY_1))
+            ;
 
-#else
+        i = (i + 1) & 3;
 
-    /* Wait for the user to press a key */
-    cgetc ();
+        /* Change colors */
+        textcolor (colors[i]);
+        bgcolor ((colors[i] + 3) & 3);
 
-#endif
+        /* Clear the screen again */
+        clrscr ();
+    }
+    /* not reached */
 
-    /* Clear the screen again */
-    clrscr ();
+    joy_uninstall ();
 
     /* Done */
     return EXIT_SUCCESS;