**
** 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>
#define QUIT 'Q'
+/* r -- row. t -- table-column.
+*/
static unsigned char height, width, r, t;
static int c;
-#ifdef CONIO
+#ifndef USE_STDIO
+
# define PRINT cprintf
# define PUT(c) cputc((char)(c))
PUT(c = (int)cgetc());
return c;
}
+
#else
+
# define PRINT printf
# define GET getchar
+
#endif
int main(void) {
-# ifdef CONIO
+# 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 */
+ 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);
+ cursor(true);
t = 0;
while ((c = GET()) != EOF) {
-# ifdef CONIO
+# 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;
+ break;
if (++t == width) {
PRINT("\r\n");
++r;