Amstrad CPC 464 mon amour !

Après avoir fait mes armes en programmant des calculatrices (TI 57, FX 180P, PB 100) j’ai eu envie, tel l’extraterrestre du quartier, de faire l’acquisition d’un véritable ordinateur.

A l’époque, tous ceux qui étaient proposés se ressemblaient beaucoup de par leurs possibilités, leur langage de programmation (le basic) et leur prix. Compte tenu du fait que je devais le payer avec mes propres deniers, j’ai cherché un bon compromis entre prix et capacités.

Mon choix s’est porté sur l’Amstrad CPC 464 couleur, qui à l’époque (1984) m’a couté un mois de salaire de job d’été (650 euros en gros, oui mes jobs d’été étaient bien payés).

C’était une vraie machine de course, processeurs Z80 à  4 Mhz, 64 Ko de Ram (kilo octets oui), clavier mécanique (très rare à l’époque) et lecteur de cassettes intégré, pas pour écouter de la musique, mais pour sauvegarder les programmes écrits en Locomotive Basic (un autre basic que celui de Microsoft).

Ecran couleur intégré (une révolution) et un processeur sonore permettant de faire de véritables morceaux de musique par programme sans effort.

Jouer ou programmer ?

Généralement les gens faisaient ce genre d’acquisition pour deux raisons. Tout d’abord les jeux, qui étaient dignes des consoles de l’époque, et la programmation.

Perso, vous le savez déjà, c’était pour la programmation, mais je dois avouer que j’ai aussi pas mal joué (j’avais 16 ans alors vous pensez bien).

Le plus rigolo avec les jeux, du moins pour moi, ce n’était pas tellement d’y jouer mais plutôt de les pirater. Avec les cassettes, les premiers temps, il suffisait de posséder un bon copieur de cassettes et le tour était joué, les jeux étaient copiés en quelques minutes (oui minutes, l’unité de temps des chargements par cassette).

Ensuite les éditeurs ont mis en place des stratagèmes pour éviter ce type de copie et il fallait en passer parfois par quelques lignes d’assembleur pour « casser » la protection, charger en mémoire les différents modules du jeu et les enregistrer ensuite sur une autre cassette, du grand art !

Le jeu « SORCERY »
Le jeu « BARBARIAN », un must !

Locomotive Basic

Coté programmation, l’Amstrad était servi par un basic de très grande qualité, le Locomotive Basic. Il était très rapide, et permettait d’utiliser toutes les ressources de la machine (sons, interruptions, ports, vidéo).

Sur les 64 Ko de RAM, il ne restait que 42 Ko de disponible pour les programmes en basic, car il fallait enlever la mémoire utilisée par l’interpréteur et aussi la mémoire vidéo de 16 Ko.

Coté vidéo c’était assez rustique. 3 modes étaient disponibles. Plus on voulait de couleurs différentes simultanées (dans une palette de 27 couleurs), moins on avait de pixels à l’écran :

ModeCouleursPixelsCaractères
016160×20020×25
14320×20040×25
22640×20080×25

Chose importante et très vintage, le Locomotive Basic était un basic avec des numéros de lignes, comme tous les basics de l’époque d’ailleurs. Quelle galère ces numéros de lignes quand j’y pense !

Mise à part ça, avec ce basic, il était possible de faire des choses très sympathiques. Par exemple il était possible de définir des interruptions au sein même du programme. S’il fallait exécuter un sous-programme qui se trouve en ligne 100, 2 fois par seconde, il suffisait d’écrire :

EVERY 5,0 GOSUB 100

Et toutes les ½ seconde (le 5 indique 5/10ème de seconde, soit ½ seconde), avec le timer 0, on saute automatiquement à la ligne 100. A la 1ère instruction RETURN rencontrée, le programme reprend là où il a été interrompu.

L’Amstrad possédait 4 timers distincts (0 à 3) ce qui permettait de réaliser des choses bien pratiques très simplement. L’instruction AFTER, avec la même syntaxe, permettait de réaliser la même opération mais une seule fois et non cycliquement.

Dans tous les cas, Il fallait juste bien penser à suspendre les interruptions (instruction DI) et les réactiver (instruction EI) aux bons endroits pour éviter des effets de bord induits par le fait que le programme pouvait être interrompu n’importe quand, c’est-à-dire dans n’importe quel état. Une très bonne mise en bouche pour la synchronisation d’applications.

Il était aussi possible de mélanger graphiques et caractères ou d’afficher des caractères à des coordonnées graphiques. On pouvait scruter l’état du clavier, du joystick (indispensable pour jouer), imprimer, créer jusqu’à 8 fenêtres texte différentes ayant chacune leur propre système de positionnement, lire et écrire des fichiers sur cassette (puis disquettes), charger des blocs de programmes au fur et à mesure des besoins, etc.

Lecteur de disquettes indispensable !

Très rapidement un investissement s’est imposé. L’achat d’un lecteur de disquettes, pour accélérer drastiquement les temps de chargement et profiter, oh comme c’est bon, des joies de l’accès aléatoire aux données (contrairement à l’accès séquentiel depuis une bande magnétique).

Le lecteur de disquette était fourni avec un système d’exploitation très utilisé à l’époque, le CP/M. En gros CP/M c’est l’ancêtre de MS-DOS. Il était utilisé principalement sur des machines professionnelles.

L’intérêt a été pour moi de me familiariser en avance aux commandes typiques des systèmes d’exploitation de l’époque (DIR, COPY, REN). Amstrad fournissait aussi le DR Logo (DR pour Digital Research), un langage très riche et bien sympathique permettant de dessiner des figures géométriques (avec la tortue) mais pas que. Il était pourvu d’instructions permettant par exemple d’ajouter des propriétés supplémentaires à des « objets » préexistants et même de créer ses propres objets, là aussi une mise en bouche pour la programmation orientée objet… avant l’heure.

Grâce au CP/M j’ai pu aussi m’initier au Turbo Pascal de Borland qui était disponible (craqué, mais il y a prescription monsieur le procureur) pour cet OS.

Le lecteur de disquettes était aussi utilisable depuis le basic, et franchement ça a changé complètement l’agrément d’utilisation de mon Amstrad ! C’était de la folie, des disquettes d’une capacité incroyable de 178 Ko par face (et oui c’était trop de la balle), et surtout la possibilité de lire et d’écrire des données sans intervention de la part de l’utilisateur (plus besoin d’indiquer de mettre une cassette, de la caler au bon endroit et d’appuyer sur REC).

Mon cher CPC devenait presque une machine de pro ! Les disquettes avaient un format qui a été abandonné par la suite, c’était des disquettes 3 pouces, mais elles étaient assez robustes, 40 ans après j’arrive toujours à les lire !

Du basic à l’assembleur Z80

Très vite une communauté s’est créé autour de cette machine, des journaux se sont spécialisés dans la publication de programmes et d’infos la concernant, des éditeurs ont sorti énormément d’ouvrages permettant d’accéder aux ressources cachées de la bête (utilisation de routines en code machine depuis le basic via les instructions PEEK, POKE et CALL).

Toute cette littérature (seul média disponible à l’époque) a permis à beaucoup d’entre nous de progresser et d’aller de plus en plus loin dans l’utilisation de leur Amstrad.

En fait, mes débuts en programmation ont été un peu atypiques. Contrairement à beaucoup de personnes qui ont commencé à développer sur des calculatrices ou sur des ordinateurs personnels (Amstrad, Comodore 64, Oric, TO7, MO5, Amiga, etc), moi j’ai commencé directement par l’assembleur dès 12 ans, et tout ça à cause d’un concours de circonstances (je ne vais pas entrer dans les détails ici).

C’est tout naturellement qu’après l’utilisation d’un bon Basic ou d’un bon Turbo Pascal (langages de haut niveau), j’ai eu envie de retourner aux sources et de me remettre à développer en assembleur (non, ce n’est pas sale) pour tirer le plus de puissance de la bête.

Donc je me suis mis à coder pour le Z80, le processeur de l’Amstrad (le même que celui de la Game Boy). Ce processeur de Zilog était très répandu à l’époque, et pour tout vous dire, on le trouve encore aujourd’hui dans les calculatrices programmables de chez Texas Instrument.

Là aussi ce fut une belle expérience qui m’a servi très souvent dans mon travail par la suite.

40 ans et toujours là !

Il y a quelques temps j’ai ressorti mon Amstrad de sa boîte, il a démarré sans broncher, 40 ans après son achat et au moins 10 ans après sa dernière mis en route. Puis j’ai banché son lecteur de disquettes, et là, catastrophe, impossible de lire la moindre disquette. Après un petit tour sur Internet, j’ai compris qu’il fallait changer la courroie d’entrainement. Un fois chose faite, il est reparti comme en 14 et j’ai pu montrer à mon plus jeune fils (25 ans tout de même) les jeux que j’avais et les programmes que j’avais créé, 15 ans avant sa naissance. Il a adoré et a même joué pendant un moment à certains jeux auxquels je jouais moi même. Si on m’avait dit ça il y a 40 ans…

Si vous aviez un Amstrad et que vous ne pouvez plus l’utiliser, il existe sur le net de très bons émulateurs. Personnellement je vous recommande le site WinAPE dans lequel vous trouverez un émulateur Amstrad de grande qualité, pourvu de fonctions très puissantes et pratiques (je vous laisse découvrir).

Pour conclure

Voilà, mon Amstrad CPC 464 a été pour moi un valeureux compagnon avec lequel j’ai énormément appris et avec lequel j’ai aussi passé de très bon moments de jeu. Merci à Alan Michael Sugar (le fondateur de la société Amstrad) d’avoir permis à toute une génération de jeunes d’accéder à ce monde merveilleux de l’information et de la programmation.

A bientôt !

Steph.

1 réflexion au sujet de « Amstrad CPC 464 mon amour ! »

Laisser un commentaire

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture