Port de Fuzix para el Amstrad CPC

Mejoras recientes de FUZIX para el Amstrad CPC

Durante los últimos meses, he seguido trabajando en el port de FUZIX para el Amstrad CPC. Aún no tengo pensado sacar una nueva versión, ya que primero quiero completar y estabilizar el soporte de red para la M4Board. Sin embargo, el estado actual del repositorio ya incluye cambios significativos en el rendimiento, la consola, el almacenamiento y la compatibilidad con el hardware.

Principales cambios:

Rendimiento y sistema

El diseño de la terminal virtual ahora utiliza 80×25 caracteres, junto con una serie de pequeñas mejoras relacionadas.

El código que se invoca desde la interrupción del sistema ahora solo salta a interrupt_high mientras la señal vsync está activa. Esto reduce la frecuencia efectiva de las interrupciones de 300 Hz a 50 Hz, evita problemas de reentrada y mejora de forma considerable el rendimiento general.

Se ha optimizado la rutina ldir_far para que utilice la pila al mover datos entre páginas de memoria, lo que reduce el coste por byte transferido.

Consola y vídeo

Revisión completa del controlador de consola del CPC:

Soporte para cuatro TTYs.

Gestión de color.

Cursor de bloque.

Se ha corregido la representación visual de los caracteres con el atributo inverso.

Se ha añadido una entrada fuzixcpc a termcap, lo que permite a las aplicaciones compatibles con termcap identificar correctamente las capacidades de la consola del Amstrad CPC y definir los glifos de cpc para los símbolos ACS, de modo que las aplicaciones curses puedan renderizarlos.

Almacenamiento y RTC

Se ha añadido un dispositivo de bloques para tarjetas SD de la M4Board.

Se ha implementado un dispositivo de disco M4Board respaldado por un archivo de imagen.

Soporte de reloj en tiempo real (RTC) añadido tanto para M4Board como para Symbiface.

Se ha mejorado el dispositivo de bloques CH376 que admite USIfAC, ULIfAC y Albireo.

El controlador de dispositivos de bloques para m4 y ch376 ahora puede utilizar la capa FAT32 nativa para montar imágenes de disco respaldadas por archivos como dispositivo raíz.

Estado actual

La tarea principal que queda pendiente es completar el soporte de red para la M4Board. Una vez terminado y probado correctamente, prepararé un lanzamiento con una configuración más estable y autosuficiente junto con las imágenes de disco. Además, migrar el código para compilar con el Fuzix Compiler Kit en lugar de SDCC está en la lista de tareas pendientes.

Mientras tanto, cualquiera que quiera probar el estado actual de desarrollo puede compilarlo siguiendo las instrucciones que mantiene salvogendut para el emulador 1984 (¡¡gracias @salvogendut!!):

El documento explica el entorno de compilación y el flujo de trabajo necesarios para compilar y ejecutar el port actual para CPC de FUZIX con el emulador 1984.

13 Me gusta

:heart_eyes:

Tener una especie de Unix en el CPC es algo que he querido hacer desde hace muchísimo tiempo.

Poca gente sabe que el Unix original se escribió en máquinas con frecuencias de trabajo similares a las del CPC (aunque con un bus más ancho y más memoria/almacenamiento).

Hay alternativas, una es ejecutar un emulador de ARM o MIPS en la CPU física. Suena una locura, pero alguien lo hizo.

El ancho de banda de la RAM es similar: 300 kB/s. Supongo que la arquitectura del Z80 dará un resultado mucho más lento, pero la velocidad no es lo importante. Se trata de poder decir: ¡he arrancado Linux en mi Amstrad CPC! Obviamente, para hacer eso en un CPC real necesitas una RAM «enorme» (de 1 a varios megabytes).

3 Me gusta

Soy consciente de que lo que hace Fuzix es muy diferente. Fuzix implementa un Unix mínimo, funcional y utilizable. En chips antiguos sin protección de memoria.

1 me gusta