★ CODING ★ LE MEMORY MAP DU PCW 8256 (MICRO-MAG) ★ |
Le Memory Map du PCW 8256 (Micro-Mag) |
Parmi les nombreux points d'intérêts des programmeurs (qu'ils soient hobby-istes ou professionnels), il en est un de toute première importance : la cartographie mémoire de leur machine. En effet, celle-ci permet d'obtenir des informations non négligeables sur la structure du système. Elles deviennent quasiment indispensables dès que l'on désire programmer en Assembleur ne serait-ce que pour afficher quelque chose à l'écran. En effet, comment afficher un caractère ou un point si l'on ne sait même pas où envoyer les informations relatives à cette opération ?Obtenir le Memory Map d'un micro-ordinateur est à, l'heure actuelle, une opération relativement aisée pour la majeure partie des machines vieilles de plus de six mois car au bout de cette période, soit le constructeur ne se laisse plus trop tirer l'oreille et publie un firmware (dans le cas d'AMSTRAD), soit les catalogues des principaux éditeurs regorgent de livres d'une qualité allant du très bon au franchement médiocre, traitant largement du sujet. Avant cette période, le parcours du combattant commence. Il faut effectuer des recherches dans la mémoire petit à petit (ce qui est presque simple pour une machine sans commutation de banques mémoire et quasiment impossible sur un micro du type du PCW 8256), soit désassem-bler le système d'exploitation, ce qui n'est pas, reconnaissons-le, à la portée de tout le monde ! ! !. Voila pourquoi, chez AMSTRAD Magazine et dans l'espoir que certains d'entre vous arrêtent de s'arracher les cheveux nous publions une première approche des spécifications mémoire du PCW 8256. Notons toutefois que cet aricle n'a pas pour vocation de permettre à tout un chacun de lancer des investigations dans le système d'exploitation. Les données publiées ici sont insuffisantes pour exploiter les routines système, elles permettront uniquement à certains de mieux connaître leur machine. Tout d'abord revenons au problème du bank switching. Cette méthode employée fréquemment sur les machines AMSTRAD permet aux processeurs tels que le Z80 d'adresser plus que les 65535 octets pour lesquels ils ont été initialement prévus et d'accroître, en théorie sans limite, les capacités mémoires des machines, grâce à des blocs mémoires dont le volume est compris entre 0 et 64k-octets. En pratique, si un programme nécessite plus de 64k de mémoire, le surplus sera placé dans une autre page de RAM et une commutation de page sera effectuée chaque fois que l'on désirera accéder à la banque mémoire contenant le morceau de programme à utiliser. Il est également possible d'utiliser cette mémoire supplémentaire sous forme de disque virtuel mais nous reviendrons plus loin sur ce sujet. Dans le cas du PCW la capacité physique de mémoire possible est de 1 méga octets. Les blocs mémoire du PCW sont divisés en quatre parties : la première partie est constituée par une page de 64k contenant le bios (c'est-à-dire le programme du système d'exploitation de la machine permettant de travailler en CP/M + ) ainsi que la mémoire écran. La seconde par une autre page de 64k dans laquelle sont contenus les JUMPBLOCKS (on appelle JUMBLOCKS, les points d'accès au BDOS. C'est par ces vecteurs que l'on accède aux fonctions principales du système d'exploitation) et le TPA (zone maximale dans laquelle peut travailler un programme : 61k pour le PCW, 32k pour les CPC 464 et CPC 664 sous CPM 2.2). Enfin la troisième page d'environ 32 k qui contient une partie du bios et des buffers (zones temporaires de stockage pour des données, par exemple à destination du lecteur de disquettes). La quatrième page est de longueur variable (112k octets en version de base) et contient le disque virtuel plus communément appelé disque "m". Le disque virtuel est comme son nom l'indique une partie de la mémoire d'une machine exploitée comme une disquette, permettant ainsi un stockage de données d'accès très rapide mais volatile (les données sont perdues dès la mise hors tension de la machine). Cette partie est très utile par exemple dans le cas d'un programme, pour stocker des modules, sans avoir à subir les pertes de temps occasionnées par les accès au lecteur de disquettes. Après avoir examiné la mémoire, étudions tout ceci plus en détail. Le secteur le plus intéressant du système est contenu en page 1 puisque, rappellons-le, c'est ici que sont stockés le bios et le bdos (partie du bios concernant les lecteurs de disques), ainsi que la mémoire écran : 0000 A 3FFF contient le bloc principal du bios CP/M. 4000 A 7FFF contient la mémoire écran structurée en bit map c'est-à-dire au point par point (les caractères sont stockés sous leur forme graphique et non par leur code ASCII). B800 sur une longueur de 2040 octets contient les matrices des caractères 0 à 255 sous forme de grilles de 8 par 8 pixels. B600 contient toutes les routines relatives aux défilements d'écrans. Enfin, sur notre schéma, les blocs numérotés 9 à 15 représentent le disque virtuel (disque "m"). Toutes les pages mémoires ainsi que les routines systèmes relai-ves à la gestion de l'écran sont situées dans les blocs 7 2 1 et 0. Notons que ces adresses correspondent aux modules du programme en général mais ne doivent pas, dans un soucis de respect avec le standard CP/M +, être appelées directement : toutes les routines doivent être appelées au travers des JUMPBLOCKS. Les packs de jumblocks Les JUMPBLOCKS sont regroupés en-packs, c'est-à-dire en série de points d'appels dont les adresses se suivent. Ces packs sont à notre connaissance au nombre de cinq intitulés comme suit :
E. Charton , AMSTRAD MAGAZINE n°8
|