Gestion des ROMs.
Sur CPC, nous avons la possibilité de connecter des ROMs. Ces ROMs peuvent contenir vos programmes, mais aussi (pourquoi pas) des données, un os ou ce que vous voulez.
Théorie:
Le CPC de base possède quelques ROMs intégrées.
Celles-ci sont: Le Firmware; Le Basic et l'Amsdos.
Mais vous pouvez ajouter des ROMs si vous le souhaitez. Voir même aller fouiller dans les ROMs existantes aussi pour les étudier.
Sur CPC old (car c'est différent sur CPC+), vous pouvez ajouter 256 ROMs. Sur CPC+ c'est 128 ROMs...
Nous avons deux types de ROMS:
- La ROM basse (ou inférieure) se connectent en #0000/#3FFF (notez que sur cpc+ la chose est différente et il vous faudra donc aller lire l'article dédié:
Gestion ROM de la cartouche.). Sur CPC old il s'agit de la ROM firmware (ne pas confondre avec le BASIC).
- Les ROMs hautes (ou supérieure) elles se connectent seulement en #C000/#FFFF.
Connexion ROM BASSE (ou inférieure):
Tout se passe par le Gate Array:
Le passage du bit 2 à 0 connectera votre ROM basse.
Notez que le mode écran est sur le même octet à envoyer.
Notez aussi que vous pouvez connecter en même temps une ROM basse(inférieure) et une ROM haute (supérieure).
Connexion ROM haute (ou supérieure):
Une ROM haute se connecte obligatoirement en #C000/#FFFF.
Sur CPC stock (donc sans ajout d'extensions) nous avons deux ROMs haute:
- Le BASIC en ROM 0.
- L'Amsdos en ROM 7.
Pour la connexion cela se passe comme au dessus mais avec le bit 3 à 0 pour connecter la ROM.
Mais comment choisir son numéro ?
Et bien cette fois-ci cela ne se passe pas avec le Gate Array mais avec le port #DF:
Il suffit donc d'envoyer le numéro de ROM au port #DF00. Une fois encore c'est différent sur CPC+ et tout est expliqué dans l'article mentionné au dessus.
L'adressage est donc simple:
Vous voulez connecter en ROM haute numéro 2:
LD BC,#DF00+%00000010 ;on séléctionne la ROM numéro 2 OUT (C),C LD BC,#7F00+%10000100 OUT (C),C ;connexion de la ROM supérieure et déconnexion de la ROM inférieure et écran en mode 0.
Petit point de détail: Si vous lisez à l'adresse d'une des ROMs, que ce soit la ROM basse ou la ROM haute, vous lirez bien la ROM
En revanche gardez à l'esprit qu'on ne peut écrire dans une ROM et que par conséquent toute écriture se fera dans la RAM.
Notez cependant une exception avec des extention type RAMCARD ou quand celle-ci est déprotégée vous pourrez écrire dedans.
A vous la programmation des ROMs en BASIC !!!
Notez aussi que le firmware ne sait initialiser automatiquement que les ROMs de second plan portant un numéro compris entre 1 et 15. Sur 464 uniquement de 1 à 7.
Vous pouvez donc avoir des ROMs supérieures à 15 qui ne vous auront pas signalé leur présence...