Retroterm es una terminal compatible con el protocolo Turbo56K para Commodore 64 y Commodore 128 creada en el año 2020 por Jorge Castillo (pastbytes) con la colaboración de Pablo Roldán (the_woz). Funciona únicamente a 57600 bps y solo como terminal PETSCII (con los caracteres de Commodore). Se puede usar con una interfaz RS232 y un cable null módem conectado a una PC corriendo tcpser o BBSServer, o bien con un módem Wifi en la Commodore, y permite conectarse a servidores diseñados especialmente para soportar el protocolo Turbo56K. Esos servidores reciben el nombre de RetroBBS.
Retroterm surge de la aplicación de tecnología de hardware y software desarrollada en años anteriores para distintos proyectos de Retrocomputacion, como el sintetizador de voz microSint. El propósito original del programa era ser un servidor de presentaciones controlado remotamente por RS232. Por eso, cuando se convirtió en terminal, conservó la funcionalidad de mostrar imágenes y de reproducir audio digitalizado. Pero veamos en detalle cómo funciona Retroterm y conozcamos más de su historia. Al final del artículo encontrarán los enlaces para la descarga del programa y guías de conexión.
Retroterm es un programa que ocupa los 4Kb de memoria que comienzan en la direccion 49152. La Commodore 64, sin ayuda de hardware adicional, puede recibir 1200 bits por segundo de manera segura, o 2400 bits con código optimizado. Además, el programa terminal tiene que tener tiempo disponible para procesar los datos de recepción, y ese tiempo es menor cuanto más compleja sea la terminal. El código para recibir a 57600 bits por segundo proviene de un experimento que hizo Jorge Castillo a principios de 2016, en el que logró transferir un juego de 45Kb en 8 segundos, deshabilitando la pantalla. Ese experimento no evolucionó en nada porque en ese momento, aunque era prometedor, no tenía aplicaciones prácticas.
En aquella época, Jorge tenía varios sintetizadores de voz en desarrollo, implementados con un microcontrolador PIC y conectados a la Commodore 64 a través de RS232. Hasta ese momento, los sintetizadores de voz se controlaban a 1200 bits por segundo usando las rutinas serie de la ROM, lo cual era suficiente para programas en BASIC. Pero, para que el sintetizador pudiera ser controlado desde un juego programado en lenguaje ensamblador era necesario minimizar el tiempo dedicado a la comunicación y, para que esas rutinas fueran útiles, poder controlar la recepción.
En la Commodore 64 tanto el procesador como el chip de video tienen acceso a la memoria. Como el chip de video necesita leer los datos de la imagen en pantalla desde la memoria, detiene al procesador durante algunos microsegundos en cada lectura. La única manera de estar seguros de disponer del 100% del tiempo del procesador sin interrupciones por parte del chip de video es procesar durante el dibujado de cualquiera de los bordes de la pantalla. Si la recepción de datos a través de RS232 inicia justo cuando comienza el borde inferior de la pantalla, no tendremos que preocuparnos por el chip de video.
Además de minimizar el tiempo requerido para recibir un byte, a 57600 bits por segundo, y elegir el momento en que conviene recibir ese byte (que es durante el dibujado del borde inferior de la pantalla), hace falta resolver algo más: cómo lograr que el byte llegue cuando estamos listos para recibirlo. Y la solución a ese problema es usar control de flujo por RTS y CTS. Lo que hace Retroterm, entonces, es activar la salida RTS al comenzar el borde inferior de la pantalla, indicándole a la PC o al módem Wifi que estamos listos para recibir datos. De esta manera, y con una cuidadosa temporización de RTS, logramos recibir la cantidad de bytes que queremos sin tener que desactivar la pantalla.
Utilizando componentes comunes entre la serie de sintetizadores de voz implementados con un microcontrolador PIC y el puerto RS232 incluido en la Commodore 64, Jorge decidió armar una placa base. Ya que el sintetizador de voz es un dispositivo RS232, no fue difícil armar un adaptador y colocarlo en lugar del sintetizador. De esta manera, la placa base servía tanto para los sintetizadores de voz como para tener un puerto serie estándar. Cuando más adelante le añadió un módulo Wifi, encontró la manera de compartir RS232 entre los dos dispositivos y de esa forma tener un sintetizador de voz funcionando junto con un dispositivo de comunicación, ya sea RS232 o Wifi. Gracias a eso, Retroterm soporta mensajes de voz incrustados en la comunicación, los cuales son interpretados y derivados automáticamente al sintetizador de voz.
Si bien Retroterm puede conectarse con los BBS estándar, no dispone más que del juego de caracteres incluido en ROM, por lo que en la práctica solo es útil para los BBS de Commodore, aunque sin la posibilidad de descarga de archivos. La velocidad efectiva es, en este caso, de 1500 bps en PAL y de 1800 bps en NTSC. Entonces, ¿cuál es la ventaja de comunicarse a 57600 bps si vamos a tener una velocidad real apenas superior a 1200? Además de simplificar la recepción, la ventaja más importante es que, de ser necesario, podemos desactivar la pantalla y recibir datos a máxima velocidad, teniendo el control de la comunicación. Este modo con pantalla desactivada es el que llamamos “modo Turbo”.
Retroterm es una terminal minimalista. Utiliza las rutinas de la ROM tanto para leer el teclado como para imprimir en pantalla. Por cada cuadro de imagen, lee un caracter del buffer del teclado y lo envía, por lo que puede enviar hasta 50 caracteres por segundo en PAL y hasta 60 caracteres por segundo en NTSC. Los caracteres que recibe se imprimen en pantalla sin proceso previo. Pero existe un caracter reservado, que es el código 255. Cuando Retroterm recibe el caracter reservado pasa a modo comando, y estando en este modo puede recibir comandos de 1 byte que pueden tener ninguno o varios parámetros. Los comandos se dividen en 3 categorias, según su función: comandos de transferencia, que permiten transferir bloques de datos; comandos de modos de video, que permiten seleccionar un modo gráfico o de texto y ajustar los colores en pantalla; y comandos de administración de la conexión, para consultar la versión de la terminal o seleccionar el sintetizador de voz.
Ese conjunto de comandos forman un protocolo que llamamos Turbo56K. Para aprovechar estas características de la terminal fue necesario crear un nuevo tipo de BBS: el RetroBBS. Este nuevo BBS puede enviar mensajes al sintetizador de voz, y además del texto estándar, puede incluir comandos Turbo56K para, entre otras cosas, reproducir audio digitalizado en directo con una calidad de 4 bits y un muestreo de 11 kilohertz, y también para mostrar imágenes. Los mensajes de voz requieren un sintetizador microSint, pero el audio digitalizado se reproduce a traves del SID.
El RetroBBS posee una sección donde es posible escuchar audios y otra de descargas desde donde transferir programas directo a memoria. También permite reproducir música en formato SID y MP3, escuchar radios online, acceder a feeds de noticias, hacer búsquedas en Wikipedia, obtener capturas de pantalla y escuchar audio de canales de YouTube y hasta chatear por IRC.
Además de la versión de Retroterm para RS232 o módem Wifi, existe una versión compatible con el cartucho Turbo232, que funciona en emuladores a 57600 bps, y otra versión en desarrollo a 38400 bps. Retroterm es un proyecto en constante desarrollo, y actualmente está en proceso de prueba y documentación para poder liberar el código, tanto del BBS como de la terminal.
Desarrollador en Argentina: Jorge Castillo (pastbytes)
Contacto: info@pastbytes.com
Colaborador: Pablo Roldán (the_woz)
Podrán encontrar más información en el foro de Retrocomputacion o en el sitio web oficial del proyecto:
Enlace: Sitio web oficial de Retroterm
Enlace: Hilo del proyecto en el foro de Retrocomputacion
Innovación y desarrollo
Retrocomputacion es una comunidad de usuarios y coleccionistas de computadoras establecida en 2006. A lo largo de los años ha desarrollado diversos proyectos de hardware y software para diferentes plataformas informáticas. Actualmente se está trabajando en dos nuevas aplicaciones para Commodore 128: RetroLoader, un navegador de archivos, y RetroApps, un cartucho de aplicaciones.
Para quienes deseen realizar un aporte a estos proyectos, y ayudar a mantener la innovación y el desarrollo de éstas y otras aplicaciones, les dejamos el enlace a nuestra tienda de Flashcookie, donde podrán adquirir material relacionado a la retrocomputación. Todos los aportes son bienvenidos. ¡Gracias!