Mise à jour d'une conception informatique vieille de 40 ans

illustrations illustrations illustrations illustrations illustrations illustrations illustrations

Publié le 7 juillet 2022 par Andrew Owen (12 minutes)

post-thumb

Dans mon dernier article, j’ai beaucoup parlé du développement du firmware pour mon projet de micro-ordinateur amateur qui est devenu le Chloe 280SE. Dans cet article complémentaire, je couvrirai le matériel. Je ne suis pas sûr que tout cela soit pertinent pour le développement moderne, mais je pense que cela vaut la peine de raconter l’autre moitié de l’histoire. Mais pour raconter cette histoire, je dois d’abord raconter l’histoire de l’époque où Timex fabriquait des ordinateurs.

Les années 1970 ont vu l’avènement de montres numériques fiables et bon marché fabriquées en Extrême-Orient, ce qui a entraîné la disparition de tous les horlogers américains, à l’exception d’un seul: Timex. Tout au long des années 1980, l’entreprise a progressivement abandonné les montres mécaniques au profit des montres numériques. Au même moment, Timex a été choisi comme partenaire de fabrication par Sinclair Research pour son nouvel ordinateur ZX81.

Steve Jobs n’a pas vraiment défini l’orientation de mes designs Apple I et Apple II, mais il a joué le rôle le plus important en les transformant en un produit qui allait changer le monde, ce que je ne nie pas. Je ne le nie pas. “*-Steve Wozniak

Timex a continué à vendre sa propre version aux États-Unis, le TS1000. Pendant ce temps, Sinclair travaillait sur le successeur du ZX81, appelé ZX Spectrum. En 1982, Lou Galie a quitté la Burroughs Corporation pour rejoindre Timex et diriger la conception et le développement du TS2068 basé sur le Spectrum.

En 1983, Timex avait déjà vendu plus de 600 000 TS1000. En fait, bien après avoir quitté le marché des ordinateurs, Timex a continué à vendre des cartes TS1000 à un fabricant européen de réfrigérateurs commerciaux qui les utilisait comme contrôleurs dédiés.

Les principaux décideurs étaient Danny Ross, président de Timex Computer Corporation, Kirk Pond, vice-président exécutif de Timex, et Rex Naden, vice-président de Timex chargé de la recherche et de la conception, qui venait de Texas Instruments.

Le ZX Spectrum n’était pas conforme aux réglementations de la partie 15 de la FCC en matière d’interférences. Timex se rend compte qu’elle doit modifier la machine et commence à embaucher une équipe d’ingénieurs, en commençant par Galie. Sur la base des produits présentés au CES début 1983, Timex a décidé qu’elle avait besoin de quelque chose de mieux qu’un ZX Spectrum rafistolé.

L’équipe était principalement composée d’anciens employés de Burroughs, recrutés dans le groupe d’ingénieurs de Danbury, Connecticut, qui fermait ses portes. Les autres étaient des diplômés d’universités locales et quelques membres du personnel du centre de recherche de Timex à Cupertino, en Californie. Deux machines devaient être développées: le TS1500, une mise à jour du TS1000, et le TS2068, une refonte complète du Spectrum. Le TS1500 a été réalisé en sept mois, tandis que le TS2068 en a pris onze.

Les deux machines ont été dotées d’un meilleur clavier et de plus de mémoire. Le TS2068 disposait également d’un joystick et de ports pour cartouches, une caractéristique plus courante sur les consoles, d’une version étendue de BASIC et d’une puce sonore. Ils étaient également légèrement plus rapides, afin de mieux se synchroniser avec la norme de télévision NTSC. Le TS2068 a été conçu pour être compatible à 100 % avec le ZX Spectrum. Cependant, au fil du temps, de plus en plus de logiciels se sont appuyés sur des ROM calls qui ne se trouvaient pas à la même adresse mémoire dans le TS2068, ce qui a conduit à la création d’une cartouche d’émulation. L’inclusion d’une cartouche est entièrement due aux problèmes rencontrés par l’équipe lors du chargement à partir d’une cassette.

Le TS2068 a également remplacé la puce logique ULA du Spectrum, corrigeant diverses erreurs et ajoutant de nouveaux modes d’écran, dont la haute résolution et le multicolore. Cependant, les logiciels profitaient rarement de ces modes, car ils consommaient deux fois plus de mémoire que l’écran standard.

Un ZX Spectrum émet un bruit semblable à celui d’un modem pendant qu’il charge un logiciel, car le concepteur de matériel Richard Altwasser a manqué de broches sur l’ULA et a dû faire entrer et sortir le son sur la même broche. L’appareil était censé être silencieux, les couleurs de la bordure indiquant si le logiciel était en cours de chargement. La version Timex a été conçue selon le modèle original.

Une autre différence dans la version Timex est le décodage des 8 bits inférieurs de la plage d’adresses d’E/S. Le ZX81 et le TS1000 n’ont pas été modifiés. Le ZX81 et le TS1000 ne décodent que des bits individuels, ce qui réduit la plage d’E/S potentielle de 65536 ports à seulement une poignée de ports. Altwasser pensait que si c’était assez bon pour le ZX81, c’était assez bon pour le ZX Spectrum. Mais les ingénieurs de Timex n’étaient pas d’accord et ont décidé de décoder entièrement les 8 bits inférieurs, supportant ainsi un maximum théorique de 256 dispositifs.

Timex prévoyait un successeur au TS2068 avec un processeur plus rapide, de meilleures couleurs, de vrais lecteurs de disques, etc. Toute une série de modules complémentaires étaient prévus, mais n’ont jamais été achevés, notamment une unité d’extension de bus pouvant supporter jusqu’à 16 mégaoctets de mémoire vive. Mais la guerre des prix déclenchée par Commodore a contraint Timex à quitter le marché américain.

Timex a vendu environ 100 000 TS1500 et environ 350 000 TS2068, mais ce n’était pas la fin de la machine. Time Portugal a vendu une version européenne de la TS2068. Elle a ensuite produit les interfaces disque FDD et FDD3000, le TC2048, un TC2068 réduit avec une meilleure compatibilité avec le ZX Spectrum, et l’Unipolbrit 2086 pour l’exportation vers la Pologne. Il y a même eu un prototype de troisième génération appelé TC3256.

Entre-temps, dans le cadre d’une coentreprise avec son distributeur espagnol Investronica, Sinclair Research a lancé le ZX Spectrum 128 en 1985. La machine a été développée à Cambridge, en Angleterre, sur la base d’un cahier des charges fourni par Investronica, qui incluait 128K de RAM, un BASIC amélioré, de meilleures capacités sonores, la possibilité de piloter un moniteur RGB et une interface RS232 intégrée.

Malheureusement, bien que Timex ait fourni à Sinclair tous les détails concernant les modes vidéo améliorés, ceux-ci n’ont pas été inclus dans la machine. Cela s’explique probablement par le fait que cela aurait nécessité une refonte majeure de l’ULA, ce qui aurait augmenté le coût. Sinclair a réutilisé le design du boîtier du ZX Spectrum+ que Rick Dickinson avait créé à contrecœur pour utiliser l’outillage de l’ordinateur 16 bits Sinclair QL qui avait échoué. Cela nécessitait un dissipateur thermique monté à l’extérieur.

Avec l’échec commercial du tricycle électrique C5 et du QL, Sinclair s’est retrouvé à court d’argent et a vendu la division informatique à son rival Amstrad. Le patron Alan Sugar était tellement confiant dans l’acquisition qu’il a fait redessiner le circuit imprimé avant même d’avoir signé l’accord, ce qui a permis le lancement du ZX Spectrum +2 en octobre 1986, à temps pour les ventes de Noël.

À ce moment-là, Altwasser travaillait pour Amstrad. Avec Cliff Lawson (qui a créé le micrologiciel pour le traitement de texte PCW), il a été chargé de mettre à jour le design du ZX Spectrum. Le résultat fut le Spectrum +3, avec un support de disque intégré et encore plus d’extensions de BASIC. Cependant, la plupart des logiciels du ZX Spectrum continuaient à être vendus sur bande, et très peu de versions n’étaient disponibles que sur disque.

Les derniers modèles officiels de ZX Spectrum ont cessé d’être produits en 1992. Sept ans plus tard, Jarek Adamski et moi-même avons créé le prototype ZX Spectrum SE, un mélange des caractéristiques du TS2068 et du Spectrum 128. Sans aucune configuration, il pouvait exécuter presque tous les logiciels du ZX Spectrum, et par émulation, il pouvait exécuter des logiciels écrits pour les autres modèles Sinclair et Timex.

En 2008, j’ai dirigé l’équipe qui a créé ULAplus, portant la palette du ZX Spectrum à 256 couleurs. En 2013, un groupe de passionnés espagnols a créé le ZX-Uno, qui implémente le ZX Spectrum SE avec ULAplus dans son noyau FPGA.

L’un des problèmes rencontrés lors de la conception d’ULAplus était qu’en raison de la décision d’Altwasser, il n’y avait plus aucun port d’entrée/sortie libre sur le ZX Spectrum. Presque tous les ports étant déjà attribués, une recherche exhaustive a été entreprise pour trouver le port qui entrait en conflit avec le moins de matériel existant. L’équipe ULAplus a choisi le port #3B. Pour autant que nous le sachions, le seul conflit concernait l’imprimante ZX, et il était possible de la modifier pour qu’elle n’entre pas en conflit. Nous avons découvert plus tard qu’il y avait également un conflit avec une interface de disque fabriquée en République tchèque, mais la base d’utilisateurs était relativement petite.

Avec une gestion prudente, ce nouveau port pourrait prendre en charge jusqu’à 256 interfaces sans entrer en conflit avec le matériel existant. Nous avons donc mis en place la norme ZX Interface (ZXI) et un comité chargé de gérer l’attribution des ports. La première interface à utiliser ZXI était une interface Ethernet appelée Spectranet. Le ZX-Uno utilise également ZXI pour ses registres de contrôle. Malheureusement, le clone financé par la foule dont j’ai parlé dans l’article précédent a contourné le comité et détruit le standard.

En 2018, après presque 20 ans de développement, il était clair qu’il n’y avait pas d’avenir pour mon propre clone du ZX Spectrum. Mais le ZX-Uno était une plateforme FPGA populaire avec une base installée raisonnablement importante. J’ai donc décidé de pivoter. Au lieu de faire un clone du ZX Spectrum, je ferais le meilleur firmware possible pour le noyau du ZX-Uno. Je l’ai appelé le Chloe 280SE (le prototype du ZX Spectrum SE avait le nom de code Chloe et 280K de RAM).

Dans les années 1990, les ordinateurs graphiques 16 et 32 bits n’étaient pas compatibles avec les ordinateurs 8 bits qu’ils remplaçaient. Mais il y a eu une génération perdue de versions améliorées des ordinateurs 8 bits, qui comprenaient souvent un processeur 16 bits. Il s’agit notamment de l’Apple IIGS, du Commodore 65 (qui n’a été qu’un prototype) et du MSX Turbo-R. Le Chloe serait un équivalent open source de ces machines.

SE Basic IV et UnoDOS 3 fournissent à la Chloé un environnement utilisateur assez similaire au MSX Disk BASIC (mais en utilisant des cartes SD formatées en FAT-32 au lieu de disquettes). Actuellement, le firmware utilise le noyau natif du ZX-Uno fonctionnant à 28MHz avec une interruption à 60Hz, produisant une sortie vidéo VGA standard. Mais l’objectif à long terme était de créer un noyau dédié qui inclurait un CPU beaucoup plus rapide, des modes vidéo IIGS et un DMA 24-bit. La seule limite de conception aurait été le nombre de portes disponibles dans le FPGA Xilinx Spartan 6.

Mais deux choses se sont produites: la pandémie et la pénurie mondiale de puces. Le ZX-Uno était bon marché parce que son FPGA était d’un prix très modeste. Dans le contexte actuel, les FPGA ne sont plus abordables. Une solution possible est de revenir aux circuits intégrés et d’utiliser un FPGA plus petit uniquement pour la vidéo et la logique de collage. Une autre solution consiste à simuler l’ensemble du système sur un système sur puce RISC.

Heureusement, aucune décision n’est nécessaire tant que le microprogramme n’est pas terminé. Le noyau du système d’exploitation est complet. Il manque au BASIC les commandes graphiques et sonores et le mode basse résolution, mais il est par ailleurs complet. Bien que le micrologiciel soit écrit pour utiliser le noyau existant du ZX-Uno, il est écrit de telle manière qu’il est facile d’ajouter la prise en charge de nouvelles caractéristiques matérielles au fur et à mesure qu’elles sont mises en œuvre.

Qu’est-ce que tout cela a à voir avec la mise à jour d’un ordinateur vieux de 40 ans? Eh bien, je vois le Chloe comme une direction possible que Timex aurait pu donner à ses ordinateurs si elle ne s’était pas retirée du marché. Le BASIC du Chloe est dérivé du TS1000, modifié pour être plus compatible avec le BASIC de Microsoft. Les modes vidéo et la mémoire vive latérale proviennent directement du TS2068. Le design du boîtier est influencé par plusieurs modèles Timex.

Sans le facteur nostalgie, je doute qu’il y ait un jour un marché pour quelque chose comme ça. Mais ce fut un exercice de conception intéressant qui m’a donné un aperçu des premiers jours de l’informatique domestique. En ce qui concerne le matériel, j’ai dû résoudre des problèmes tels que le manque de ports d’entrée/sortie, la création d’un système de palette efficace pour un bus 8 bits et l’utilisation optimale d’un frame buffer de 32K.

En ce qui concerne la conception du clavier, j’ai découvert les difficultés liées à l’intégration du matériel et du logiciel. Comment faire correspondre toutes les touches, à l’exception des touches de fonction, à la matrice de 40 touches utilisée par les machines Timex. Comment utiliser au mieux toutes les touches d’un clavier standard de manière à donner à l’ordinateur sa propre identité. La nécessité de remplacer la mémoire à touche unique du ZX81 BASIC par une mémoire tampon circulaire pour le clavier afin de suivre le rythme plus rapide de l’unité centrale.

Malgré la pénurie de puces, la scène du home brew est toujours florissante. Si le Chloe a un argument de vente unique, c’est qu’il s’agit d’un projet entièrement ouvert: le matériel (schémas de la carte mère et nomenclature), le micrologiciel (le BASIC et le système d’exploitation) et le logiciel (une bibliothèque d’exemples d’applications avec toutes les sources). J’espère donc que le Chloe 280SE inspirera quelqu’un d’autre à concevoir son propre ordinateur et peut-être même à l’utiliser comme point de départ.

Mise à jour

Antonio Villena a créé un successeur au ZX-Uno appelé ZXTRES qui implémente essentiellement toutes les caractéristiques que j’avais en tête pour le matériel Chloe:

  • Deux ports de contrôleur DE9 pour les manettes de jeu et les joysticks.
  • Deux ports PS/2 pour le clavier et la souris.
  • Affichage HD (DisplayPort).
  • Fente pour carte microSD.
  • Boîtier de style mini pizzabox avec interrupteur d’alimentation.
  • Interrupteur d’alimentation.
  • Connecteur d’alimentation standard (5VDC >=1A centre positif 5.5mm x 2.1mm barrel jack power).

Le design du matériel est fermé, mais il est basé sur une carte QMTECH XC7A357 et a suffisamment de points communs avec le ZX-Uno pour être relativement facile à cloner pour un développeur amateur expérimenté.