Bloc | Zone mémoire (hexa) | Zone mémoire (décimal) |
---|---|---|
r0 | &0000-&3FFF | 00000-16383 |
r1 | &4000-&7FFF | 16384-32767 |
r2 | &8000-&BFFF | 32768-49152 |
r3 | &C000-&FFFF | 49152-65535 |
&0000-&003F | Réservée au système pour les Restart du Z80. On y trouve des instructions permettant de connecter entre autre les ROMS du CPC. Les Restart les plus connus sont RST 0 (en &0000 : init du CPC) et RST &38 (en &0038 ! : adresse de saut du mode IM1 du Z80. Hum, pas le sujet de ce texte non plus !). |
&0040-&016F | Tampon pour la conversion des saisies clavier en BASIC. Les commandes Basic issues du buffer clavier sont codées sous la forme de Token (valeur associée à une commande). |
&0170-&A6FF/&ABFF | Zone de travail du Basic. Contient le programme ainsi que
les variables et les caractères redéfinis. Sur un CPC
équipé d'un lecteur de disquette, le haut de cette zone
est occupé par le DOS (&A700-&ABFF). Il reste donc moins
de mémoire disponible pour le Basic. Ceci explique
pourquoi quelques vieux jeux Basic très gros ne tournent
normalement que sur un CPC sans système disque. Les petits curieux voudront savoir pourquoi l'on trouve des données à partir de &A67B/&AB7B même si l'on a 'rien fait'. Il s'agit d'une table de caractères, initialisée par défaut (caractères 240 a 255). On peut gagner quelques octets en tapant la commande Basic SYMBOL AFTER 256. Si vous utilisez des ROM sur votre CPC, ces dernières ont une fâcheuse tendance a se réserver des zones tampon pour pouvoir travailler. Pour connaître la mémoire allouée au Basic, il suffit d'utiliser la commande Basic HIMEM. |
&AC00-&B0FF ? | Zone de travail du Basic. &AC8A-&AD89 : tampon saisie clavier (256 octets) &AE8B-&B08A : pile Basic (512 octets : croissante) |
&B100 ?-&B8FF | Paramètres système (écran, couleurs, touches, gestion des fenêtres, du lecteur de cassettes, etc... ). |
&B900-&BDxx | Vecteurs systèmes : en général, saut sur des routines du
Firmware. 464 : &BDCC 664 : &BDBD 6128 : &BDC0 |
&BDCD-&BDF6 | Vecteurs d'indirections. On trouve dans cette zone des adresses de saut à quelques routines de la Rom système. Ces adresses sont utilisées par le système lui-même, et permettent de détourner les routines y faisant appel. (ex : le classique &BDEE qui inhibe le reset clavier (CTRL SHIFT ESC) s'il est patché avec la valeur &C9 (commande RETURN en assembleur Z80). |
&BDF7-BE3F | Zone libre. |
&BE40-&BE7F | Zone de travail du système disque |
&BE80-&BFFF | Zone utilisée par la pile du système (décroissante, à partir de &C000-1). Habituellement, la zone &BE80-&BEFC n'est pas écrasée par la pile. Elle est souvent utilisée pour y loger de petites routines ou des loaders de jeux. Caractéristique intéressante, cette zone n'est pas vidée par un reset. |
&C000-&FFFF | Ram video. A noter que sur un écran fixe, les octets des
zones suivantes ne sont pas affichés : &D7D0 - &D7FF &DFD0 - &DFFF &E7D0 - &E7FF &EFD0 - &EFFF &F7D0 - &F7FF &FFD0 - &FFFF La raison en est simple. Un écran se compose de la manière suivante : * Une ligne texte se compose de 80 octets * Un caractère occupe 8 lignes de hauteur * Le CPC affiche 25 lignes de caractères A l'aide d'un savant calcul (?), on obtient le résultat suivant : 80x8x25 = 16000. La taille allouée à la video du CPC est de &4000, soit 16384. Il est donc possible de stocker des petites routines ou des données dans ces zones (attention à ne pas effacer l'écran). Cette particularité a parfois été utilisée par des protections. |
Ram centrale | Ram étendue e1 |
---|---|
* &4000 - DI | - |
* &4001 - LD BC,&7FC2 | - |
* &4004 - OUT (C),C | - |
- | * &4006 JP coucou |
Boulder Dash | Taille | Ko sur disque | Implantation | Execution |
---|---|---|---|---|
Original | &7025 | 29ko | &0200 | &1F52 |
Cheese 2.2 | &37E6 | 15ko | &6F1A | &6F1A |
Columbia 1.0 | &3F2B | 16ko | &62C5 | &A048 |
Compact | &53F9 | 22ko | &0200 | &0200 |
CPCT 1.0 | &533F | 21ko | &2353 | &75C8 |
CPCT 2.0 | &3AE6 | 15ko | &3CC0 | &772C |
Crown cruncher | &41F5 | 17ko | &31B8 | &7300 |
Mega cruncher | &53B8 | 22ko | &0200 | &0200 |
Turbo cruncher | &3989 | 15ko | variable | variable |
Turbo imploder | &466A | 18ko | &2CB4 | &2CB4 |
Zenith | &53AF | 22ko | &0040 | &5384 |
Zenith 2 | &5149 | 21ko | &0140 | &5236 |
G'n'G | Taille | Ko sur disque | Implantation | Execution |
---|---|---|---|---|
Original | &8E00 | 36ko | &1800 | &5000 |
Cheese 2.2 | &6290 | 25ko | &4470 | &4470 |
Columbia 1.0 | &6D8A | 28ko | &3466 | &A048 crash ! |
Compact | &80B3 | 33ko | &1800 | &1800 |
CPCT 1.0 | &798B | 31ko | &2D71 | &2D71 |
CPCT 2.0 | &673B (1) | 26ko | &488B | &AF4C |
Crown cruncher | &69D2 | 27ko | &3D5B | &A680 |
Mega cruncher | crash | - | - | - |
Turbo cruncher | Trop gros | - | - | - |
Turbo imploder | Buffer overflow | - | - | - |
Zenith | &806D | 33ko | &0040 | &0040 |
Zenith 2 | &7EB3 | 32ko | &0140 | &7FA0 |