El autor, escribiendo en Leaded Solder, explica su motivación para el proyecto: buscar un entorno de programación autohospedado para su clon de Sega SG-1000 que no dependiera de computadoras externas para el desarrollo. Tras encontrar limitante el BASIC incorporado de Sega, eligieron Forth por su minimalismo, idoneidad para sistemas embebidos y capacidad de incluir un ensamblador integrado que permite el desarrollo de código nativo directamente en el hardware. El proceso de portado comenzó con CamelForth-80, una implementación de Forth licenciada bajo GPL que originalmente apuntaba a sistemas CP/M-80. Siguiendo la guía de portado del proyecto, el autor necesitó adaptar el código para la operación bare-metal del SG-1000 mediante el manejo de la inicialización de hardware, la configuración de la pila y el reemplazo de tres palabras dependientes de CP/M (KEY, KEY?, EMIT). Surgieron desafíos significativos durante el ensamblado debido a las diferencias entre el ensamblador original Z80MR y la herramienta preferida del autor, Zasm. Los requisitos más estrictos de evaluación de un solo paso de Zasm causaron problemas de expansión de macros con la macro de encabezado de CamelForth, especialmente alrededor del ensamblado condicional. El autor resolvió esto creando variantes separadas de la macro para los casos docode y no docode. Otras complicaciones incluyeron la dificultad de Zasm para analizar los nombres inusuales de las palabras de Forth que contienen caracteres especiales como comillas y comas, lo que requirió revisar las invocaciones de macros para usar un adecuado entrecomillado de cadenas. El manejo de etiquetas sensibles a mayúsculas y minúsculas se abordó usando la opción --casefold de Zasm para emular los ensambladores tradicionales de CP/M. Para la interacción con el hardware, el autor implementó la función EMIT para emitir caracteres a través del Procesador de Pantalla de Video TMS9918 en el modo Gráficos 1 (pantalla de mosaicos 32x24), reconociendo limitaciones como la falta de desplazamiento de hardware pero señalando su idoneidad para la visualización en televisión. El proyecto se está realizando como parte del RetroChallenge 2026/10, una competencia informal mensual de retroinformática que ayuda a enfocar los esfuerzos de desarrollo. El autor enfatiza su experiencia limitada en Forth, presentando el proyecto como una demostración de lo accesible que puede ser el portado de Forth en lugar de reivindicar el dominio del idioma. El trabajo actual se centra en hacer que el intérprete se ejecute en el hardware Soggy-1000, con componentes fundamentales como la palabra EXIT ya ensamblados con éxito.
HN Digest / · HN #49924121
Usuario de Hacker News porta Forth a un clon de Sega SG-1000 para RetroChallenge
Un entusiasta de la retroinformática ha portado con éxito el intérprete CamelForth-80 a su clon de hardware SG-1000 (apodado 'Soggy-1000'), superando problemas de compatibilidad del ensamblador y desafíos de implementación específicos del hardware para crear un entorno de desarrollo Forth funcional para la consola Sega de los años 80.

Captura de pantalla de la página de origen (leadedsolder.com)