★ CODING ★ LA BIBLE DU CPC 6128 ★ |
La bible du CPC 6128 : 1.10.04 Le lecteur de cassette |
Bien que votre CPC possède déjà un lecteur de disquette intégré, l'ordinateur dispose d'une connexion pour le travail avec un lecteur de cassette. Cela vous permet d'une part d'utiliser les logiciels disponibles pour le CPC 464, et d'autre part, la cassette est un moyen de stockage de données remarquable pour un prix très intéressant. Cette connexion permet également de préserver la compatibilité entre les différentes machines CPC. Vous pouvez connecter n'importe quel modèle courant de lecteur de cassette. L'important est simplement qu'il y ait un niveau de signal suffisant sur la bague de l'écouteur et que le son du magnétophone ne soit pas trop "monotone". D'autre part, de trop grandes variations dans la vitesse d'écriture peuvent perturber le timing qui doit être respecté, surtout avec une vitesse de transmission élevée. Mais venons-en au format d'écriture. Le lecteur de cassette ne peut fondamentalement stocker les données, de même que le lecteur de disquette, que bit par bit. Chaque octet à stocker doit donc être décomposé en ses différents bits et être transmis sous cette forme. Cette décomposition est réalisée par le processeur par logiciel, le bit supérieur étant à cet effet envoyé en premier au lecteur de cassette. Le signal fourni par le 8255 pour le lecteur de cassette est un signal carré. Chaque bit est marqué par une vibration carrée, dans laquelle la phase low est exactement aussi longue que la phase high. On dit également que le signal carré a un rapport de 1:1. Un bit 0 nécessite moitié moins de temps qu'un bit 1. C'est pourquoi les indications sur la vitesse d'écriture ne peuvent être que des indications imprécises. Il est évident qu'un bloc composé uniquement d'octets 0 sera sauvegardé en deux fois plus de temps qu'un bloc d'à peu près la même taille ne comportant que des &FF. Mais comme la répartition des bits 0 et 1 dans un bloc de données est à peu près égale, on peut s'en tenir aux indications de 1000baud( 1 baud= 1 bit par seconde) pour SUPER-SAVE (SPEED WRITE 0) et de 2000 baud pour SPEED-LOAD (SPEED WRITE). Chaque fichier cassette, qu'il s'agisse d'un fichier programme ou d'un fichier de données, peut comporter au maximum 65536 octets. Les fichiers sont écrits par blocs comportant chacun au maximum 2048 octets. Chaque bloc comprend au maximum huit segments de données de 256 octets. Devant chaque bloc est écrit un header, c'est-à-dire une tête de bloc. Le header de bloc est facile à identifier à l'oreille. On entend en effet un long ton égal suivi de quelques octets qu'il n'est toutefois pas possible de distinguer à l'oreille.
Les octets restants 28 à 63 du header ne sont pas utilisés par le système d'exploitation et sont à la disposition des programmeurs chevronnés. Mais voici maintenant le décodage des bits de l'octet 18 du header:
Comme nous l'avons déjà indiqué, les informations stockées dans les différents blocs sont encore subdivisées en différents segments. Le READ ERROR A indique qu'un bit a été lu dont la durée était trop longue par rapport aux valeurs calculées pour les bits nuls ou 1. Cette erreur se produit souvent, lors de la lecture de programmes, lorsque la cassette, qui coinçait lors de la sauvegarde, est maintenant fluide. La troisième erreur possible est le READ ERROR D. Cette erreur ne devrait se produire que rarement car elle signale que le bloc lu est plus long que les 2048 octets autorisés. Cela ne peut toutefois se produire que si l'utilisateur écrit dans les informations du header, lors de la sauvegarde, des valeurs plus grandes que celles autorisées. Vous connaissez certainement l'instruction Basic 'SPEED WRITE par'. Suivant les paramètres utilisés, les données sont stockées sur la cassette à une vitesse moyenne de 1000 ou 2000 baud. Ceci n'atteint cependant pas encore la vitesse la plus grande possible. Par l'utilisation d'une routine du système d'exploitation, la vitesse (baud rate) peut être fixée à toute valeur comprise entre 700 et environ 3600 baud. La routine nécessaire est à l'adresse &BC68. Elle attend des paramètres dans deux registres et fixe la vitesse d'écriture en fonction de ces paramètres. Une valeur est transmise à la paire de registres HL qui détermine la vitesse (baud rate). La formule pour déterminer cette valeur est: Cela donne pour 1000 baud une vitesse de 666 microsecondes pour un bit nul; un bit 1 dure exactement le double. L'électronique utilisée dans le lecteur de cassette a cependant une particularité. Si des bits nuls et des bits 1 sont lus tour à tour, l'électronique essaye de combler les différences de durée. Les bits 1 deviennent de ce fait plus courts, alors que les bits nuls apparaissent comme des impulsions plus longues qu'on ne l'aurait attendu après l'écriture. Pour cette raison, une compensation anticipée doit être exécutée et les bits nuls sont écrits plus brièvement, alors que les bits 1 sont écrits avec des durées légèrement plus longues. Ces durées nécessaires pour la compensation anticipée sont transmises à la routine dans l'accumulateur. Pour des tentatives de fixer la vitesse d'écriture la plus rapide, qui est à moitié fiable, il suffit de transmettre dans l'accumulateur une valeur de 10. Pour écrire avec une vitesse de 3600 baud, il faut activer la routine suivante: LD HL,93Ces quelques octets peuvent facilement être placés dans la mémoire avec les lignes suivantes: |
|
Page précédente : La bible du CPC 6128 : 1.10.03 La connexion du lecteur de disquette |
|
Page créée en 058 millisecondes et consultée 1814 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. |