# --------------------------------------------------------------------------
# Rules how to make each one of the binaries
-EXELIST=fire hello mousedemo nachtm plasma sieve tgidemo
+EXELIST=ascii fire hello mousedemo nachtm plasma sieve tgidemo
.PHONY: all
all: $(EXELIST)
+ascii: $(CRT0) ascii.o $(CLIB)
+ @$(LD) -t $(SYS) -m ascii.map -Ln ascii.lbl -o $@ $^
+
fire: $(CRT0) fire.o $(CLIB)
@$(LD) -t $(SYS) -m fire.map -Ln fire.lbl -o $@ $^
-
+
This directory contains sample programs for the cc65 compiler.
Below is a short description for each of the programs together with a list of
List of supplied sample programs:
+-----------------------------------------------------------------------------
+Name: ascii
+Description: Shows the ASCII (or ATASCII, PETSCII) codes of typed
+ characters. Written and contributed by Greg King
+ <gngking@erols.com>.
+Platforms: All platforms with conio or stdio (compile time
+ configurable).
+
-----------------------------------------------------------------------------
Name: fire
Description: Another graphics demo written by groepaz/hitmen.
--- /dev/null
+/* ascii.c
+**
+** Shows the ASCII (or ATASCII, PETSCII) codes of typed characters.
+**
+** 2002-12-25, 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 CONIO
+
+#include <conio.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+#define QUIT 'Q'
+
+static unsigned char height, width, r, t;
+static int c;
+
+#ifdef CONIO
+# 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;
+ }
+#else
+# 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
+
+ /* 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) {
+
+# ifdef CONIO
+ if (r == height) {
+ clrscr();
+ PUT(c); /* echo char. again because screen was erased */
+ r = 1;
+ }
+# endif
+
+ PRINT("=$%02x ", c);
+ if (c == QUIT)
+ break;
+ if (++t == width) {
+ PRINT("\r\n");
+ ++r;
+ t = 0;
+ }
+ }
+ PRINT("\r\n");
+ return EXIT_SUCCESS;
+ }