| ★ CODING ★ Apprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★ Premiers programmes (briques indispensables) ★ |
| Utilisation des ROM (CPC/Plus) |
Utilisation des ROM sur CPC/Plus/GXL'Amstrad CPC est capable de gérer 4Mo de ROM sans bidouille. Oui, vous avez bien lu, 4 méga-octets... Le calcul est assez simple, il peut sélectionner 256 ROM hautes de 16k (à laquelleon peut ajouter une ROM basse mais les puces mémoire étant des puissances de 2 en capacité, c'est souvent la ROM haute zéro qui est mappée en tant que ROM basse). Sur la gamme Plus/GX, on considère que la limitation est de 2Mo car l'ASIC utilise les valeurs de 128 et plus pour distinguer les ROM classiques de la cartouche. Il reste néanmoins capable d'adresser des ROMde 0 à 127 de façon classique si on lui met une ROM-board aux fesses. Et on s'occupera des histoires de cartouche un autre jour ^_^ Les ROM activées ont priorité en lecture sur la mémoire (on peut continuer à écrire dans la mémoire "dessous"). Lorsque les ROM ou l'ASIC sont actifs, vous devez faireattention à l'emplacement du pointeur de pile dans l'espace mémoire. Si l'écriture reste possible, toute lecture se fera avec la priorité pour la ROM ou la page ASIC.
Que peut-on mettre dans les ROM ? Hé bien contre toute attente, on peut mettre ce qu'on veut! Des données, du code et il est possible d'exécuter du code directement sans le copier en mémoire. Je précise qu'on peut le fairecar l'usage majoritaire des ROM actuellement consiste surtout à copier des données, éventuellement compressées, vers la mémoire. La ROM c'est bien plus que ça! Concernant l'exécution directe de code depuis la ROM, quelques contraintes s'imposent : Des générations de codeurs sur console s'en sont très bien sortis pendant des décennies, pas d'inquiétude à avoir. Pour les compteurs et variables, il faut les mettreailleurs en mémoire. Par contre, concernant un code qui aurait besoin de lire la mémoire "sous" la ROM, il vaut mieux copier ce code une fois pour toutes en mémoireet désactiver la ROM, sinon on va se heurter à d'incessants jonglages de connexions et brider les performances. Un exemple concret avec notre routine d'affichage de texte ? Dans l'article précédent, la fonte et le code était en mémoire vive. Voyons voir comment adapter notre code pour loger la routine et les données dans une ROM et gagner le plus possible de place en mémoire vive. Dans notre cas, il y aura seulement à positionner la variable position_char en mémoire vive, tout le reste est déjà en lecture seule. Nous économisons presque 4k de mémoire vive comme nous l'indiqueRASM lors de la compilation dans le log d'export du snapshot. WriteSNA ROM 15 of 3982 bytes start at #C000Pour la connexion ROM, il faut activer les roms hautes avec le RMR et choisir le numéro de la ROM haute active avec le port idéal #DFxx. On utilisera le préfixe {bank} suivi d'un label pourrécupérer le numéro de la ROM contenant ce label! RMR ROM_UP | MODE_1 ; activer la ROM haute + Mode 1Vous aurez besoin du [ binaire de la fonte ] pour assembler ce source |
|
Page créée en 220 millisecondes et consultée 39 fois L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |