]> git.sur5r.net Git - cc65/blobdiff - samples/ascii.c
Fixed _textcolor definition.
[cc65] / samples / ascii.c
index 704833b099471f9683ddcc0c8478da583e7917c3..0d191c966c5b515d2ff46da376185704640c11c4 100644 (file)
@@ -2,77 +2,89 @@
 **
 ** Shows the ASCII (or ATASCII, PETSCII) codes of typed characters.
 **
-** 2002-12-25, Greg King <gngking@erols.com>
+** 2003-03-09, Greg King <gngking@erols.com>
 */
 
-/* Define CONIO when you want to use the conio functions.
-** Undefine it when you want to use the stdio functions.
-** NOTE: Undefining CONIO will currently not work on the CBMs!!!
+/* Define USE_STDIO, when you want to use the stdio functions.
+** Do not define it, when you want to use the conio functions.
+** NOTE:  stdin on some targets is line-bufferred.  You might need to type
+**        a key, then tap the return(enter)-key, in order to see each code.
+*/
+/*
+#define USE_STDIO
 */
-#define CONIO
 
 #include <conio.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdbool.h>
 
-#define QUIT   'Q'
+#define QUIT    'Q'
 
+/* r -- row.  t -- table-column.
+*/
 static unsigned char height, width, r, t;
 static int c;
 
-#ifdef CONIO
-# define PRINT cprintf
-# define PUT(c)        cputc((char)(c))
+#ifndef USE_STDIO
+
+# define PRINT  cprintf
+# define PUT(c) cputc((char)(c))
 
 /* conio doesn't echo typed characters.
 ** So, this function does it.
 */
 static int GET(void) {
-       PUT(c = (int)cgetc());
-       return c;
-       }
+        PUT(c = (int)cgetc());
+        return c;
+        }
+
 #else
-# define PRINT printf
-# define GET   getchar
+
+# define PRINT  printf
+# define GET    getchar
+
 #endif
 
 int main(void) {
 
-#      ifdef CONIO
-       /* conio doesn't scroll!  Avoid trouble by starting at the top
-       ** of the screen, and never going "below" the bottom of the screen.
-       */
-       clrscr();
-       r = 7;          /* allow for prompt */
-#      endif
+#       ifndef USE_STDIO
+        /* conio doesn't scroll!  Avoid trouble by starting at the top
+        ** of the screen, and never going "below" the bottom of the screen.
+        */
+        clrscr();
+        r = 7;                          /* allow for prompt */
+#       endif
 
-       /* This prompt fits on the VIC-20's narrow screen.
-       */
-       PRINT("Type characters to see\r\ntheir hexadecimal code\r\nnumbers:\r\n\n");
-       screensize(&width, &height);    /* get the screen's dimensions */
-       width /= 6;                     /* get number of codes on a line */
-               cursor(true);
-       t = 0;
-       while ((c = GET()) != EOF) {
+        /* This prompt fits on the VIC-20's narrow screen.
+        */
+        PRINT("Type characters to see\r\ntheir hexadecimal code\r\nnumbers - 'Q' quits:\r\n\n");
+        screensize(&width, &height);    /* get the screen's dimensions */
+        width /= 6;                     /* get number of codes on a line */
+        cursor(true);
+        t = 0;
+        while ((c = GET()) != EOF) {
 
-#              ifdef CONIO
-               if (r == height) {
-                       clrscr();
-                       PUT(c); /* echo char. again because screen was erased */
-                       r = 1;
-                       }
-#              endif
+#               ifndef USE_STDIO
+                if (r == height) {
+                        clrscr();
+                        t = 0;
+                        PUT(c); /* echo char. again because screen was erased */
+                        r = 1;
+                        }
+                if (c == '\n')
+                        ++r;
+#               endif
 
-               PRINT("=$%02x ", c);
-               if (c == QUIT)
-                   break;
-               if (++t == width) {
-                       PRINT("\r\n");
-                       ++r;
-                       t = 0;
-                       }
-               }
-       PRINT("\r\n");
-       return EXIT_SUCCESS;
-       }
+                PRINT("=$%02x ", c);
+                if (c == QUIT)
+                        break;
+                if (++t == width) {
+                        PRINT("\r\n");
+                        ++r;
+                        t = 0;
+                        }
+                }
+        PRINT("\r\n");
+        return EXIT_SUCCESS;
+        }