Portage de Fuzix pour l'Amstrad CPC

Améliorations récentes de FUZIX pour Amstrad CPC

Ces derniers mois, j’ai continué à travailler sur le portage de FUZIX pour l’Amstrad CPC. Je ne prévois pas de nouvelle version pour le moment, car je souhaite d’abord finaliser et stabiliser la prise en charge du réseau via la M4Board. Cependant, l’état actuel du dépôt intègre déjà des changements significatifs concernant les performances, la console, le stockage et la compatibilité matérielle.

Principales modifications :

Performances et système

La disposition du terminal virtuel utilise désormais 80×25 caractères, accompagnée de plusieurs petites améliorations connexes.

Le code appelé depuis l’interruption système ne saute vers interrupt_high que lorsque le vsync est actif. Cela réduit le taux d’interruption effectif de 300 Hz à 50 Hz, évite les problèmes de réentrance et améliore nettement les performances globales.

La routine ldir_far a été optimisée pour utiliser la pile lors du déplacement de données entre les pages mémoire, ce qui réduit le coût par octet transféré.

Console et vidéo

Refonte majeure du pilote de console du CPC :

Prise en charge de quatre TTY.

Gestion des couleurs.

Curseur bloc.

Correction du rendu des caractères avec l’attribut inverse.

Ajout d’une entrée fuzixcpc dans termcap, permettant aux applications compatibles termcap d’identifier correctement les capacités de la console de l’Amstrad CPC et définissant les glyphes CPC pour les symboles ACS afin que les applications ncurses puissent les afficher.

Stockage et horloge temps réel (RTC)

Ajout d’un périphérique bloc pour carte SD M4Board.

Implémentation d’un périphérique disque M4Board reposant sur un fichier image.

Ajout de la prise en charge de la RTC pour la M4Board et la Symbiface.

Amélioration du périphérique bloc CH376 qui prend en charge les cartes USIfAC, ULIfAC et Albireo.

Le pilote de périphérique bloc pour m4 et ch376 peut désormais utiliser la couche FAT32 native pour monter des images disque basées sur des fichiers en tant que périphérique racine.

État actuel

La principale tâche restante consiste à finaliser la prise en charge du réseau pour la M4Board. Une fois cela terminé et correctement testé, je préparerai une version avec une configuration autonome plus stable et des images disque. La migration du code pour compiler avec le Fuzix Compiler Kit au lieu de SDCC est également dans la liste des choses à faire (TODO).

En attendant, toute personne souhaitant essayer l’état actuel du développement peut le compiler en suivant les instructions tenues à jour par salvogendut pour l’émulateur 1984 (merci @salvogendut !!) :

Le document explique l’environnement de compilation et le flux de travail nécessaires pour compiler et exécuter le portage CPC actuel de FUZIX avec l’émulateur 1984.

13 « J'aime »

:heart_eyes:

Avoir une sorte d’Unix sur CPC, c’est quelque chose dont j’ai envie depuis des années.

Peu de gens savent que l’Unix d’origine a été écrit sur des machines avec des fréquences de fonctionnement similaires à celles du CPC (bien qu’avec un bus plus large et plus de mémoire/stockage).

Il existe des alternatives, l’une d’entre elles consiste à faire tourner un émulateur ARM ou MIPS sur le processeur physique. Ça a l’air fou, mais quelqu’un l’a fait.

La bande passante de la RAM est similaire : 300 ko/s. S’agissant d’une architecture Z80, j’imagine que ce sera bien plus lent, mais la vitesse n’est pas la question. Il s’agit de pouvoir dire : « J’ai fait démarrer Linux sur mon Amstrad CPC ! » Évidemment, pour faire ça sur un vrai CPC, il faut une « énorme » quantité de RAM (de 1 à plusieurs mégaoctets).

3 « J'aime »

Je sais bien que ce que fait Fuzix est très différent. Fuzix implémente un Unix minimal, fonctionnel et utilisable. Sur de puces anciennes sans protection de la mémoire.

1 « J'aime »