| ★ CODING ★ Apprendre pas à pas la programmation en assembleur Z80 ★ Premiers programmes (briques indispensables) ★ |
| Utilisation de la RAM étendue |
|
| bit | valeur | fonction |
|---|---|---|
| 7 | 1 | Adresser le MMR dans le Gate Array |
| 6 | 1 | |
| 5 | n | Numéro de slot 64K étendu à utiliser (nnn de 0 à 7) |
| 4 | n | |
| 3 | n | |
| 2 | c | Type de configuration de la mémoire (ccc de 0 à 7) |
| 1 | c | |
| 0 | c |
La fonction 0 correspond à la désactivation du mapping, le résultat est identique avec toutes les pages! Ainsi, vous n'êtes pas obligé d'utiliser #7FC0 pour remettre la mémoire en état par défaut. Les autres combinaisons sont valides : #7FC0, #7FC8, #7FD0, #7FD8, #7FE0, #7FE8, #7FF0 et #7FF8 (que vous ayiez ou non une extension branchée c'est OK).
La fonction 1 connecte la 3è bank de 16k du slot étendu nnn de 64K en #C000-#FFFF
La fonction 2 connecte l'ensemble du slot étendu nnn de 64k en #0000-#FFFF
La fonction 3 connecte la 3è bank de 16k du slot étendu nnn de 64K en #C000-#FFFF (analogue à la fonction 1) MAIS aussi bascule la RAM centrale #C000-#FFFF vers #4000-#7FFF ce qui permet facilement de gérer un page flipping (nous y reviendrons un jour).
Les fonction 4,5,6 et 7 connectent respectivement la 1è, 2è, 3è ou 4è bank de 16k du slot étendu nnn dans la zone #4000-#7FFF
Puisqu'un schéma est souvent plus parlant qu'un long discours, voici un résumé visuel des commutations possibles avec une extension de 128k (soit 192k au total pour le CPC).
| RAM centrale 64K | Page étendue 0 64K | Page étendue 1 64K |
|---|---|---|
| 0 (n°logique 0) | 0 (n°logique 4) | 0 (n°logique 8) |
| 1 (n°logique 1) | 1 (n°logique 5) | 1 (n°logique 9) |
| 2 (n°logique 2) | 2 (n°logique 6) | 2 (n°logique 10) |
| 3 (n°logique 3) | 3 (n°logique 7) | 3 (n°logique 11) |
| valeur du MMR | Slot étendu | Fonction | Mapping logique Z80 | Note |
|---|---|---|---|---|
| #C0 | Slot 0 | DISABLE (0) | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Mémoire par défaut |
| #C1 | Slot 0 | UPPER3 (1) | Bank 0 | Bank 1 | Bank 2 | Bank 7 | |
| #C2 | Slot 0 | ALLSLOT (2) | Bank 4 | Bank 5 | Bank 6 | Bank 7 | |
| #C3 | Slot 0 | UPPER3FLIP (3) | Bank 0 | Bank 3 | Bank 2 | Bank 7 | |
| #C4 | Slot 0 | BANK0 (4) | Bank 0 | Bank 4 | Bank 2 | Bank 3 | |
| #C5 | Slot 0 | BANK1 (5) | Bank 0 | Bank 5 | Bank 2 | Bank 3 | |
| #C6 | Slot 0 | BANK2 (6) | Bank 0 | Bank 6 | Bank 2 | Bank 3 | |
| #C7 | Slot 0 | BANK3 (7) | Bank 0 | Bank 7 | Bank 2 | Bank 3 | |
| #C8 | Slot 1 | DISABLE (0) | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Mémoire par défaut quel que soit le slot! |
| #C9 | Slot 1 | UPPER3 (1) | Bank 0 | Bank 1 | Bank 2 | Bank 11 | |
| #CA | Slot 1 | ALLSLOT (2) | Bank 8 | Bank 9 | Bank 10 | Bank 11 | |
| #CB | Slot 1 | UPPER3FLIP (3) | Bank 0 | Bank 3 | Bank 2 | Bank 11 | Bank logique 3 en #4000 quel que soit le slot! |
| #CC | Slot 1 | BANK0 (4) | Bank 0 | Bank 8 | Bank 2 | Bank 3 | |
| #CD | Slot 1 | BANK1 (5) | Bank 0 | Bank 9 | Bank 2 | Bank 3 | |
| #CE | Slot 1 | BANK2 (6) | Bank 0 | Bank 10 | Bank 2 | Bank 3 | |
| #CF | Slot 1 | BANK3 (7) | Bank 0 | Bank 11 | Bank 2 | Bank 3 |
DISABLE equ 0 |
Maintenant que le cadre est posé, on peut passer à un cas d'utilisation pratique dans l'article [ suivant ] ou si vous êtes chauds, vous pouvez aussi regarder [ comment initier le mode "#C2" ? ].
|
Page créée en 691 millisecondes et consultée 14 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. |