Entrada / salida por consola con conio.h

Programación retro del Commodore 64

  • Programación retro del Commodore 64
  • “Programación Retro del Commodore 64” es un blog sobre el hardware, el sistema operativo, y la programación del Commodore 64. Y más específicamente sobre programación en ensamblador. Pretende ser un blog con información de calidad, y referencia en español de la programación retro de esta maravillosa máquina.
    • Mi blog
« Publicado el: 29/08/2022 »

Conio es la librería de cc65 para hacer entrada / salida por consola, es decir, por pantalla. Si analizamos su fichero de cabecera tiene funciones para:

  • Borrar la pantalla.
  • Colocar el cursor en determinada posición (x, y).
  • Consultar la posición del cursor.
  • Escribir un carácter o cadena en la posición actual del cursor o en la posición (x, y).
  • Imprimir valores o variables conforme a un formato.
  • Leer caracteres del teclado.
  • Leer el carácter y el color de la posición actual del cursor o de la posición (x, y).
  • Activar o desactivar el parpadeo del cursor.
  • Activar o desactivar la escritura en modo invertido.
  • Modificar el color para el texto a escribir.
  • Modificar el color del borde y/o del fondo de la pantalla.
  • Etc.

Como con casi cualquier librería, el estudio exhaustivo de Conio y todas sus funciones está fuera del alcance de esta entrada. Para un estudio a fondo lo mejor es mirarse el fichero cc65\include\conio.h.

No obstante, como las funciones más habituales en el C64 suelen ser borrar la pantalla, modificar el color del fondo, del borde y del texto, y escribir determinadas cadenas en la posición actual del cursor o en la posición (x, y), sí vamos a hacer un programa de prueba para tomarle el pulso a estas funciones.

Observemos el siguiente programa en C basado en la librería conio.h:

Es bastante autoexplicativo:

  • Incluye las funciones de conio.h.
  • Incluye las funciones y constante de c64.h, por ejemplo, los colores como COLOR_BLACK y COLOR_GREEN.
  • Define la función main() que, basándose en las funciones de conio, borra la pantalla, cambia los colores del fondo, del borde y del texto, y, por último, escribe una frase en la posición actual del cursor.

El siguiente paso sería compilar con cl65.exe pero, como ya hemos visto varios ejemplos en las entradas anteriores, salvo que se dé algún caso con alguna circunstancia especial, a partir de ahora obviaremos cómo hacerlo.

Por último, si arrastramos el programa compilado hasta el icono de VICE veremos esto:

¿Se puede hacer más fácil?

Algunos diréis, bueno, en BASIC es igual de fácil. Y lo es, pero recordemos que BASIC es un lenguaje interpretado, mientras que C es compilado. Es decir, lo que hemos generado y ejecutado en última instancia es código máquina, que es mucho más rápido que BASIC.

Y, en el fondo, eso es lo que buscamos con cc65, lo mejor de ambos mundos. La facilidad de programar como en BASIC (pero en C) y la rapidez del código máquina. ¿Quién da más?

C´odigo de ejemplo: conio