Hace un tiempo que estoy un poco ausente del foro, y es porque este año me meti en un proyecto que no tenia tanto que ver con lo que termino siendo. El año pasado hice el primer video de nuestro canal de retrocomputacion en youtube, hablando sobre como funcionan las terminales, los modems y el RS232. Ese video llevo un monton de trabajo, varios meses, y cuando lo termine, decidi hacer una pausa antes de empezar uno nuevo. En el medio de eso, rehice mi sitio web pastbytes.com, y me fui poniendo al dia con otras cosas. Cuando empezo el año, decidi que era momento para pensar el proximo video, y el tema candidato eran las computadoras portatiles de 8 bits de los 80s, en particular las que tengo, Epson HX-20, PX-4 y PX8, y alguna otra. Pensando como filmar el video, llegue a la conclusion de que al ser maquinas que no usan monitor, tenia que inventarme algo para rellenar el resto de la pantalla ancha del video, y se me ocurrio que podria tener la Commodore 64 corriendo algun programa de presentaciones, mostrando imagenes, laminas o como se quiera llamarlas, un poco como relleno y otro poco para apoyar las explicaciones.
Muchas cosas pasaron en medio, y gracias a que rescate tecnologia que habia hecho para los sintetizadores de voz años atras, de todo eso surgio una terminal, que cumple mas o menos con lo que yo pretendia, pero que derivo en un proyecto mas orientado a las comunicaciones.
Ya voy a explicar el proyecto con mas detalle mas adelante, pero por ahora dejo este video probando la terminal en una Drean 64C, con modem wifi, funcionando a 57600 bps con mi terminal, Retroterm. La C64 se conecta a un BBS que tambien hice en Python, que esta corriendo en mi PC, aceptando llamadas por telnet. La terminal es un tanto particular, funciona unicamente a 57600 bps y solamente como terminal PETSCII (con los caracteres de Commodore, nada de ANSI o siquiera ASCII). Normalmente funciona a una velocidad equivalente a 1500 bps en PAL y 1800 bps en NTSC. Hice muchas pruebas y conclui que esa era una velocidad suficiente para leer textos, asi que no busque aumentarla. Pero ademas de la terminal y el BBS, me invente un protocolo, que llame TURBO56K, y que tiene una serie de comandos que permiten a la terminal operar con pantalla desactivada todo el tiempo a 57600 bps, logrando transferir 46K en alrededor de 11 segundos, directo a memoria.
Tambien hice otro experimento que termino siendo incluido en la terminal, que es el streaming de audio PCM de 4 bits (audio digitalizado) a 11KHz, eso el BBS lo transmite a 57600 bps y la terminal lo recibe y coloca casi en tiempo real en el volumen del SID, para lograr reproducir audio en vivo y sin limite de duracion.
En el video el streaming se puede ver en el arranque del BBS, cuando emite el audio de bienvenida. Se puede ver la velocidad de recepcion de texto, y los modos turbo con pantalla desactivada recibiendo imagenes bitmap directo a memoria.
Ya hay una version del BBS andando, pero esta es una version mas elaborada a la que le faltan unos dias para estar terminada. Cuando todo este terminado, va a haber un BBS de ejemplo en Python para el que quiera correr uno, una terminal que funciona en C64 tanto con RS232 y una PC con tcpser/BBSServer, como con un modem wifi. Y tambien una version de la terminal que corre en emuladores, para el que quiera conectar sin tener una C64 real.
Dejo aca el video, y ampliaremos mas adelante...
Si, cuando aparece con lineas de colores son comandos "turbo", donde la transferencia funciona a maxima velocidad. El sintetizador de voz es por hard, el que hice hace años, que se conecta al puerto del usuario.
Hice un video rapido, sin produccion, explicando algunos detalles de la terminal, el BBS y la placa que uso para conectarme, para aclarar algunas consultas que me hicieron sobre el video anterior.
Con Python puede correr en Linux, Windows, Mac, debe correr tambien en la Raspberry Pi y en otras maquinas. Yo hago las pruebas con Mint, Thierry creo que lo corre en algun Linux tambien (el BBS Thierry's Lair), Ezequiel (BBS Drean C64) lo corre en Windows.
Hay unos cuantos juegos que pisan en la carga a la zona que empieza en 49152, y otros que la usan durante la ejecucion, en este ultimo caso esta giana sisters por ejemplo, que puede cargar perfectamente pero al ejecutar borra la terminal.
Hubo una version anterior que salia al BASIC y ejecutaba, pero la terminal puede funcionar por RS232 directo a una PC, con modem wifi, o con RS232 conectada a una PC con tcpser o BBServer. Tambien si se usa modem wifi, los comandos para cortar la conexion pueden variar. Si vas a descargar y ejecutar, tenes que desconectar antes, sino dejas al servidor conectado esperando actividad. Por eso decidi dejar que el usuario decidiera lo que quiere hacer, no es un sistema de carga de juegos, es una terminal para varios usos, y me parece que tipear RUN (return) no es un gran trabajo, de hecho la gente lo hace continuamente en la C64.
Por otro lado, puede ser que alguien quiera descargar un programa BASIC y luego grabarlo en disco, no le serviria ejecutarlo automaticamente.
Lo de convertirlo en cartucho es algo que esta planeado para mas adelante, de hecho desde el principio la intencion fue colocar la terminal en la zona de memoria bajo la ROM, para poder cargar programas de 50K o mas. Pero eso va a venir despues, todavia no llegamos a la 1.0.