dimanche 6 octobre 2024

Amstrad CPC: vers l'infini et au delà avec la carte ULIfAC !

ULIfAC ? Kézako ?

Sous cet acronyme étrange, se cache une carte-à-tout-faire pour Amstrad CPC et CPC+, et il signifie: ULtimate Interface for Amstrad CPC

Et si le superlatif "Ultimate" fait toujours sourire, je peux vous dire tout de suite qu'ici, il n'est pas usurpé.

Autant être clair: si vous possédez un Amstrad CPC ou CPC+, que vous soyez passionné d'ordinosaure ou simple nostalgique de cette époque, cette carte est faites pour vous !


Ok, mais ça sert à quoi une ULIfAC ?

Les possibilités de cette carte sont si nombreuses, que je ne sais pas par quoi commencer, mais je vais vous donner les grandes lignes.

Pour une utilisation classique, ou on va surtout chercher à jouer, elle va vous permettre de:

  • Stocker et lancer des jeux sur support USB, directement sous forme de fichiers Amstrad.
  • Monter jusqu'à 4 images disquettes *.dsk dans un lecteur de disquette virtuel, et pouvoir les changer à la volée.
  • Transformer un CPC 464 en 6128 !
  • 512Ko de RAM, y compris sur un CPC 464 !

Pour un passionné qui veut aller plus loin, la bestiole en a encore beaucoup sous le capot:

  • 16 à 32 roms chargeables à partir de fichiers (automatisable au boot)
  • Mode hybride 256Ko de RAM / 16 roms
  • Copie de fichiers à l'intérieur d'images *.dsk vers le support USB, et inversement
  • Dump de disquettes physiques en fichier image *.dsk et inversement !
  • Possibilité d'utiliser AmsDOS ou ParaDOS
  • De nombreux logiciels intégrés: Outil de diagnostic, File manager (on peut lancer les jeux/applications directement à partir de là), 3 jeux intégrés, et outils de configuration.
  • Connexion au PC via Bluetooth, liaison série, ou même WIFI - Accès aux stockage du PC, application Terminal sur CPC, application PC pour copier, lancer des commandes sur le CPC, etc.

Le tout se pilote avec de très nombreuses commandes RSX - les commandes qui commencent par un pipe '|' (ou un 'ù' pour les claviers Azerty...) - ou directement à l'aide de boutons présents sur la carte.

Rendons à César ce qui lui appartient

Cette carte a été conçue par un passionné d'Amstrad, citoyen de Grèce, qui répond au pseudo d'Ikonsgr sur le forum de cpcwiki.eu

Elle est l'évolution et la synthèse de deux autres cartes de sa conception, la USIfAC II et la 512K RAM Expansion/32x Rom board

A l'unité, avec un adaptateur au choix, bord de carte pour les CPC ou Centronic pour les CPC+, la carte revient à plus ou moins 44€, frais de ports compris ! Pour peu que vous soyez dans l'Union Européenne.

 

 

L'ULIfAC dans les détails

Pour tester l'ULIfAC, je n'ai pas choisi la machine la plus facile. J'ai utilisé mon CPC 464 Azerty de base, avec une petite modification de mon cru pour sortir les signaux manquants du connecteur d'origine (12V, son, ...) et avoir la commutation automatique et la bonne image avec le son.


Avant de démarrer, je tiens à dire une chose: Ne faites pas comme moi, à foncer tête baissée. Commencez par lire la documentation ! Oui, RTFM ! Ça évitera pas mal de problèmes et de déconvenues 😅

Ceux qui savent, savent, mais pour ceux qui ne savent pas, sur les Amstrad Français, le charset fut changé de manière aveugle par Amstrad, et le | (pipe) s'est transformé en ù, tout en gardant sa fonction principale. Ne vous étonnez donc pas de voir sur mes screenshots, un ù à la place d'un |.


C'est un peu roots là, existe-t-il un boitier ?

La réponse est oui. Un passionné a conçu un boitier qu'on trouve facilement sur Thingiverse pour une impression 3D. Lien disponible en fin d'article.

Il est composé de 2 parties et de 4 boutons qui viennent se placer sur les boutons physiques de la carte.

Je n'ai qu'une impression de test, sans les boutons, mais voilà ce que ça donne 👉




Les manipulations sur la carte elle même

De nombreuses opérations sont réalisables sur la carte elle même.

Bien que le connecteur USB ne soit pas un bouton, je l'ai entouré simplement pour faire remarquer que ce n'est pas une excroissance étrange, mais simplement une mini-clef USB Sandisk.

 

Pour les boutons en eux même:

  • Le bouton "Mode RAM/ROM" permet de changer de mode de fonctionnement général entre le mode extension RAM (512ko), et le mode multi ROMs. Le mode ROM fonctionne lui même selon 2 sous-modes différents: 32 ROMs ou 16 ROMs + 256Ko de RAM.
    Ces sous-modes se configurent logiciellement via la commande
    |ROM. D'autres commandes RSX peuvent également basculer le fonctionnement en mode hybride automatiquement (comme la commande |6128)
    L'utilitaire de configuration des ROMs et leur chargement ne fonctionnent également qu'en mode RAM (on ne scie pas la branche sur laquelle on est assis), d’où l'utilité de pouvoir changer rapidement d'un mode a l'autre.
    Notez aussi, que la commande
    |SW fait la même chose qu'une pression sur ce bouton.
    Le changement de mode entraine automatiquement un RESET de la machine.

  • Le bouton RESET n'a pas vraiment besoin d'une longue description, je pense que tout le monde a compris à quoi il sert, Amstrad n'ayant pas jugé utile d'en mettre un sur leurs machines...
    Utiliser le RESET est très nettement préférable à l'utilisation du ON/OFF. Rien n'est plus néfaste pour l’électronique que les allumages à répétition !

  • Le bouton de changement de disquette permet de changer la disquette courante, lorsqu'on a chargé plusieurs images disque et activé l'émulation lecteur disquette (qui remplace le vrai lecteur sur un 6128).
    Chargez les 3 disquettes d'un jeu, puis lancez-le, et lorsqu'il vous demandera la disquette suivante, cliquez simplement sur ce bouton.
    A chaque clic, la carte mettra la disquette suivante, ou la première s'il n'y en a plus derrière.

  • Enfin, le bouton PAUSE est un bouton différent des autres. Ce n'est pas un bouton poussoir, mais un interrupteur à deux états: ON/OFF.
    Quand on active la pause, le CPU de l'Amstrad s'arrête. Il ne plante pas, il se fige et n’exécute plus rien jusqu'à ce qu'on repasse la pause à OFF.
    Il faut faire attention: si la machine démarre en mode pause, vous n'aurez aucune image. Sur le moment, ça peut surprendre, mais une simple pression redonnera vie à votre machine préférée 😉
    Si vous ne savez pas à quoi ce bouton peut bien servir, imaginez vous 40 ans en arrière, quand en plein jeu, incapable de sauver votre partie, vous entendiez: "A TAAAAABLE !" 😂


Configuration de la Carte

En réalité, la carte n'a pas besoin de grand chose. On branche, on allume l'ordinateur, et hop ça fonctionne.

Voilà ce que vous aurez à l'écran au premier démarrage. Si vous avez un 464 bien sur.

Si vous avez un 6128 ou plus rare, un 664, vous n'avez besoin de rien d'autre, la carte est déjà configurée dans ce mode par défaut.

Sur les précédentes versions, il y avait un petit interrupteur sur la carte pour choisir entre les modes 464 et 664/6128, mais c'est désormais géré logiciellement :
La commande
|SM  va vous permettre de voir ou de changer le mode de fonctionnement.
|SM,2 basculera la carte en mode 464. Inutile de le faire à chaque démarrage, votre dernier choix reste enregistré entre les démarrages. A l'inverse, si vous rebranchez la carte sur un 6128, il faudra faire un |SM,1 pour la replacer dans le bon mode.

Enfin, un petit appui sur le bouton RESET, et la machine redémarrera dans le mode choisi.

Me voilà dans le mode qui correspond à ma machine physique.
Cette première configuration est importante. Manipuler la carte dans la mauvaise configuration entrainera divers bugs et plantages. Expérience Inside...

 

C'est solide ce machin ? Mon Amstrad ne risque rien ?

Je dois dire que malgré toutes les misères que j'ai pu lui faire, la carte est virtuellement implantable, et elle est toujours retombée sur ses pattes.

La partie "Troubleshooting" de la documentation adresse tous les problèmes que j'ai pu rencontrer et bien plus.
Lorsque ma carte n'était plus détectée, un simple 
OUT &FBD2,5 , un RESET, et elle réapparaissait.
Quand les commandes RSX n'étaient plus reconnues, un petit 
OUT &FBD1,4  et tout rentrait dans l'ordre.
Attention: ce genre de chose n'apparait que lorsqu'on ne lit pas la doc et qu'on veut tout tester, et trop vite. 

La carte ne date pas d'hier, c'est déjà la version 5, elle a fait l'objet de nombreuses améliorations en fonction des retours utilisateurs.

On peut donc lui faire pleinement confiance.
Et bien sûr, déconnecter la carte remettra votre Amstrad dans sa configuration d'origine, comme s'il n'avait jamais vu d'ULIfAC.


La RAM étendue

Probablement la feature la moins impressionnante, du moins dans cette configuration.

Evidemment il est toujours utile d'avoir de la RAM en réserve sous le coude, mais nous savons bien que les logiciels de l'époque ont été conçus pour 64 ou 128ko de RAM, rarement plus.

Quelques applications vont cependant tirer partie de cette mémoire disponible, surtout les applications récentes
La version mass-storage de SymbOS par exemple, qui pourra se lancer directement sur la clef USB, tirera pleinement partie de ces précieux octets supplémentaire !

Dans la configuration 16 ROMs + 256ko de RAM, certains logiciels en ROM vont eux aussi tirer partie de cette RAM.

N'oublions pas non plus que ces 512ko s'ajoutent aux 64ko d'origine dans le cas de mon 464, ce qui portent la RAM à un total de 576ko ! J'ai cru voir des étoiles dans sa LED tellement il n'en avait jamais vu autant 😂


Les stockages

Là, on rentre dans le vif du sujet. Avec l'ULIfAC, vous allez avoir accès à 3 stockages différents:

  • Le lecteur de disquette physique, intégré ou externe. Inexistant sur CPC 464 sans lecteur DDI-1 bien entendu.
  • Le stockage externe (USB par defaut), qu'on peut considérer comme un "gros disque dur". Il doit être formaté en FAT (déconseillé), ou FAT32. L'exFAT ou tout autre format n'est pas supporté.
  • Une image disquette .dsk montée dans l'émulateur de contrôleur disquette.

Par défaut, au démarrage, la carte est en "mode direct" et adresse la clef USB comme stockage, s'il y en a une.
De ce fait, les commandes 
CAT, RUN, LOAD, SAVE vont cibler le stockage externe. Les commande RSX |CAT, |CD et |CDR permettent de se déplacer dans l'arborescence du stockage externe.

Pour revenir d'un autre stockage vers le stockage externe, on utilisera la commande |EN (enable).
Pour passer sur une image en *.dsk montée, on utilisera 
|FDC (floppy disc controller).
Et pour revenir sur le lecteur physique, on lancera un
|DIS (disable) qui déconnectera le mode direct ainsi que l'émulation FDC.

Comme vous pouvez le voir, c'est très simple. Mais comment, puis-je copier de l'un à l'autre si un seul stockage est actif à la fois ?

Pour ces opérations, vous avez accès à un jeu de commandes RSX, permettant de copier, de et vers chaque support. Ainsi que des commandes pour dumper une disquette physique vers un fichier image et inversement. Il serait trop long de les détailler ici 😅

Parmi les commandes RSX, vous avez un file manager tout simple et un second qui vous donnera la taille des fichiers, `|FM` et `|FSM`. FSM est un peu plus lent, mais dans le cas d'un stockage USB ce n'est pas vraiment sensible. Nous verrons plus loin les autres cas de stockage externe.

Ces manager vous permettront de vous promener dans votre stockage externe et de lancer les exécutables Amstrad, jeux, applications et tout ce que vous voulez.

Copiez le contenu de vos disquettes dans divers répertoires de votre stockage USB et vous pourrez les lancer presque aussi simplement qu'en cliquant une icone sous Windows !

Un exemple avec le jeu 1943, dont les deux fichiers 1943. et 1943.BIN ont été copiés de la disquette avec la commande |EXT, puis lancé à partir du file manager |FSM :

Son frère ainé, 1942, dont l'image .dsk, présente à la racine de la clef USB, est monté dans l'émulateur de contrôleur disque, avant d'être lancé de façon traditionnelle :


Petite précision: pour mes tests, j'ai utilisé une vieille clef USB de 128Go, formatée en Fat32. Elle fonctionne parfaitement, elle est suffisamment rapide pour ce type d'utilisation, et elle a assez d'espace pour stocker 50 fois toute la logithèque Amstrad !

 

Les ROMs 

Les Amstrad, comme toutes les machines, démarrent sur un BIOS. L'OS est situé dans ce qu'on appelle la ROM basse, et le BASIC dans la ROM haute.

Mais ce que peu de gens savent, c'est qu'on peut ajouter plusieurs ROM hautes. Ces ROMs vont fournir des commandes RSX, permettant d'étendre les fonctionnalité de la machine !

L'OS du 464 peut utiliser directement 8 slots de ROM (0 à 7, incluant les 2 ROMs d'origine dans les 2 premiers slots). A partir du 6128 c'est 16 ROMs (slots 0/1 utilisés par l'OS et le BASIC, le 7 par le DOS).

La carte ULIfAC a elle même une ROM, installée dans le slot 5. On peut la déplacer en cas de conflit avec d'autres roms utilisant exclusivement le slot 5.

Mais chacune de ces roms est libre d'utiliser d'autres roms, au delà de ces limites. L'ULIfAC vous permettra donc d'en charger 32, ou 16 en mode hybride.

Un jeu en ROM

Pour mes tests, je me suis procuré le jeu Relentless sous forme de ROM (on le trouve également au format disquette et cartouche).

Pour tester rapidement, je l'ai chargé dans le slot 6, avant de redémarrer en mode hybride. La ROM me présente alors une nouvelle commande RSX: |RELENT que je m'empresse de taper pour lancer le jeu !


Un OS complet en ROM

Pour mon second test, j'ai téléchargé SymbOS en version ROM. C'est un OS multitâche complet, qui existe sous plusieurs formes. Et c'est la version 4 roms que je vais utiliser ici, renommées A, B, C et D pour faciliter les chargements 😅
La documentation indique que seule la première rom doit être dans la partie "visible" de l'OS, les 3 autres peuvent être au dessus de la limite.

Je vais donc placer la rom A dans le slot 2, puis les roms B, C et D respectivement dans les slots 8, 9 et 10.

Au reboot, SymbOS affiche de jolies couleurs ! Et indique qu'on peut lancer l'OS avec les nouvelles commandes RSX |SYM ou |SYMBOS. Et ça fonctionne ! Classe !


Et toutes en même temps ?

Pour le fun, je me suis amusé à remplir tous les slots de la zone visible de mon 464, j'ai donc mis:

  • Le jeu Relentless en slot 2
  • SymbOS en slot 6, 8, 9 et 10
  • ParaText (un traitement de texte de l’époque) en slot 4
  • La rom Toolkit en slot 3

Voilà, ce que ça donne au reboot en mode ROM hybride 👉


Un petit appel à |PROTEXT et on peut vérifier que tout fonctionne.


Des roms, il en existe beaucoup. Des jeux, des OS - SymbOS n'est pas le seul -, des applications, etc. Si certaines étaient à l'époque associées à un hardware spécifique, beaucoup peuvent être lancées et utilisées aujourd'hui.

 

Vous imaginez les possibilités ?

Un lien vers une impressionnante liste de ROMs est disponible à la fin de ce billet.



Surclasser un CPC 464 !

Même si personnellement j'aime bien utiliser mon CPC 464 survitaminé en tant que tel, vous pouvez le transformer en 6128 en une seule commande !

Tapez |6128 (original non?) et la carte basculera automatiquement en mode ROM hybride, après avoir installé les 2 roms du CPC 6128 et la ROM DOS (AmsDOS ou ParaDOS), et rebooté.

Votre petit CPC 464 affichera alors fièrement ses 128ko de RAM et son nouveau BASIC.

Bien sûr, un basculement en mode RAM lui retirera instantanément son déguisement de 6128. Et un second basculement le transformera à nouveau en 6128.
Pratique pour lancer des logiciels qui ne fonctionnent que sur le 6128.

Tel force bleue: Transformation !


Petit détail pour ceux qui comme moi, on un clavier français: le passage en 6128 installe un OS en anglais, non modifiable. Votre clavier passera donc en QWERTY.


Logiciel intégrés

Nous avons déjà vu les file managers |FM et |FSM, et également l'outil de diagnostic |DIA et l'outil de configuration de ROMs |ROM.

Vous avez aussi accès à deux applications de terminaux |TER et |COM, que nous allons voir dans la section suivante.

Et pour compléter tout ça, 3 jeux sont aussi disponibles immédiatement, par simple commande: |GALA, |PACMAN et |KGOR

Au cas ou vous auriez un doute, elles vont lancer respectivement des clones de Galaga, Pacman et Donkey Kong 😎

3 classiques sympathiques et agréables à jouer (joystick obligatoire pour au moins 2 d'entre eux 😉)

Et tout le reste...

Dans ce chapitre, il y aurait encore bien des choses à décrire, mais il ne s'agirait pas d'écrire 3 tomes d'un trait !

Il reste cependant encore quelques points importants à voir.

La puissance des commandes RSX

Sachez qu'il existe encore de nombreuses commandes RSX qui n'ont pas été vues dans les chapitres précédents, et qui vous aideront à utiliser votre ULIfAC, à manipuler les fichiers, ou comme nous allons le voir, à accéder a un PC à distance.

La commande |HELP vous aidera à vous les remémorer si vous n'avez pas la documentation PDF à portée de main.

Les commandes RSX sont utilisables dans les programmes BASIC. Ce qui pourra vous permettre de faire de petits programmes pour, par exemple charger les 4 disquettes d'un jeu et le lancer, ou charger des ROMs et les configurer, etc. de la même façon qu'on utilise des scripts shell sous Linux ou Windows.

 

Le Bundle ULIfAC

Avec l'ULIfAC, Ikonsgr fourni également un set d'utilitaire qui tournent sous Windows.

On y trouvera par exemple une application qui créera pour vous de petits programmes BASIC pour vous simplifier les taches décrites juste au dessus.

Un autre petit utilitaire vous permettra d'extraire les fichiers d'images .dsk. Vous pourrez alors les copier sur votre clef USB, et lancer les jeux avec le file manager. Un peu plus pratique que la commande  |EXT 


Et vous y trouverez aussi tout ce qu'il faut pour connecter votre PC et votre Amstrad !

Communication avec un PC

Ce n'est sans doute pas la fonctionnalité la plus utilisée, mais elle reste cependant impressionnante.

La carte ULIfAC dispose de deux connecteurs 4 broches, pouvant recevoir au choix:

  • Une liaison série classique
  • Un module série/USB
  • Un module Bluetooth
  • Un module WIFI ESP

Ces modules ne sont pas fournis avec la carte (seul le module USB est fourni et soudé sur la carte), mais se trouvent chez AliExpress pour quelques euros. Tous est clairement indiqué dans la documentation: modèles exacts, prix, configuration.

La connexion se configure par commande RSX coté Amstrad et dans un logiciel, coté Windows.

Une fois connectés, vous allez pouvoir, au choix dans l'application:

  • Vous connecter en mode Terminal, en utilisant |TER coté Amstrad.
  • Copier des fichiers vers le CPC, avec |2CPC
  • Copier des fichiers à partir de l'Amstrad, avec |2PC
  • Envoyer une image .dsk vers l'Amstrad, avec |DSK coté CPC
  • Utiliser un répertoire du PC comme disque dur distant coté Amstrad


Si le coté pratique des 4 premiers choix peut être critiquable, la possibilité d'utiliser un PC comme disque dur distant est en revanche très sympathique !
Pour peu que la liaison soit rapide, il remplacera avantageusement la clef USB et vous permettra de manipuler les fichiers facilement coté PC.

Nous avons fini le tour rapide des possibilités de cette carte et des outils qui sont fourni avec.
En relisant la documentation au fur et à mesure que j'écrivais ces lignes, je me suis rendu compte que je passais à coté d’énormément de détails, mais ce blog doit rester concis !

Alors place à la...


Conclusion, s'il en faut ?

L'ULIfAC propulse n'importe quel Amstrad dans le 21ème siècle.

Aux rétrogamers, elle offre des solutions simples et ergonomique pour sélectionner et lancer les jeux. Qui aurait imaginé qu'on puisse avoir tout un tas de jeux sur l'équivalent d'un disque dur ? Qu'on puisse les lancer en navigant facilement dans l’arborescence ?
Et quel plaisir nostalgique, de pouvoir "flasher" une disquette à partir d'une image .dsk et d'y rejouer comme avant ! Ou encore de monter les images d'un jeu multi-disques et de changer les disquettes d'une simple pression sur un bouton.

Aux passionnés, elle permet de découvrir un patrimoine de l'Amstrad méconnu, parfois oublié, ou inaccessible à l'époque !
Enfin, elle fait voyager la machine dans un futur qu'elle n'aurait jamais du connaitre, en lui permettant de lancer des OS multitâches et d'autres applications récentes, devant lesquelles même le croco semble se dire:

"Bon sang... si on avait eu ça à l'époque..."


Il existe d'autres cartes multi-fonction pour Amstrad, mais soyons honnête, elles sont soit moins complêtes, soit moins pratiques, soit elles ne se font plus et sont devenues rares et chères.

Nous avons ici une carte très complète avec un prix contenu, faisant d'elle le meilleur rapport qualité/prix actuel.

Si vous avez des amis fan d'Amstrad, partagez leur cet article. Si vous souhaitez commander à plusieurs, n’hésitez pas à contacter Ikonsgr, afin de mutualiser les frais de ports au minimum.

En un seul mot: Foncez !

PS: Je ne touche aucune commission sur les ULIfAC. Ce billet de blog n'est pas sponsorisé. Mais j'ai trouvé cette carte vraiment incroyable.


Références:

Ancêtres de l'ULIfAC :

ULIfAC :

Boitier :

Documentation (pour les curieux) :

 Répertoire de logiciels en ROM pour Amstrad :

Amstrad CPC: vers l'infini et au delà avec la carte ULIfAC !

ULIfAC ? Kézako ? Sous cet acronyme étrange, se cache une carte-à-tout-faire pour Amstrad CPC et CPC+, et il signifie: UL timate I nterface...