Entrada / salida por consola con conio.h

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 constantes 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

Un comentario en «Entrada / salida por consola con conio.h»

  1. Hola.

    También es interesante conocer que Conio tiene un driver que permite emular por software una pantalla de 80 columnas, cuando la pantalla en modo texto del C64 sólo tiene 40 columnas.

    Para usar las 80 columnas hay que compilar y enlazar así:

    cl65 -t c64 myprog.c c64-soft80.o ==> para texto en colores
    cl65 -t c64 myprog.c c64-soft80mono.o ==> para texto monocromo

    En este caso, la RAM de pantalla se guarda en $d000 – $ff3f, no en la zona habitual de $400 – $7ff.

    Merece la pena probarlo…

    Saludos, HVSW.

    Me gusta

Deja un comentario