Faire une démo pour un vieux téléphone - AONDEMO

Je voulais faire une démo depuis que j'ai vu la méga démo polonaise classique Lyra II pour la première fois en 1997. Je voulais aussi faire quelque chose pour la plus grande fête de démonstration russe Chaos Constructions depuis longtemps, mais je n'y suis jamais allé, étant occupé avec d'autres fonctions. Enfin, en 2018, le moment est venu et j'ai rempli les deux désirs à la fois, le style à double impact de Van Damm - a fait une démo appelée AONDEMO qui est entrée dans la compo de démonstration ZX Spectrum 640K chez Chaos Constructions .


Je parie que la chose rouge que vous venez de voir ne vous ressemble pas beaucoup. Voici l'histoire.


En Russie soviétique


Pendant longtemps, le marché de l'électronique grand public de l'Union soviétique a pris du retard sur le monde contemporain pendant une bonne décennie. Il n'avait pas beaucoup de technologies avancées à offrir, et jusqu'à la fin des années 80, c'était un pays de téléphones à cadran rotatif, de téléviseurs à tube à vide et de platines vinyles. Près de la dissolution de l'Union, les frontières ont commencé à se desserrer, permettant à une partie de l'électronique étrangère de l'obtenir, tandis que les fabricants locaux ont commencé à tenter de satisfaire l'augmentation de la demande du public en créant des produits similaires, donc toutes sortes de merveilles techniques, telles que les magnétoscopes, les ordinateurs personnels, et même des choses aussi simples qu'un téléphone à cadran, ont commencé à être de plus en plus accessibles au grand public.

Vers 1989, un nouvel appareil est apparu sur les marchés de la radio, qui a commencé à gagner en popularité. Largement connu sous l'acronyme AON , qui se traduit approximativement par "un identifiant d'appelant automatique", également appelé "secrétaire électronique" dans les manuels, il s'agissait essentiellement d'un ancêtre distant des smartphones modernes - un téléphone fixe alimenté par microprocesseur qui était capable de identifier et afficher les numéros des appels entrants en exploitant la fonctionnalité des postes téléphoniques destinés à des fins spéciales plutôt qu'à une utilisation publique. Le téléphone a enregistré les appels entrants et sortants dans un journal, avait un annuaire téléphonique qui permettait de classer les appels, de leur attribuer différentes mélodies, de bloquer certains appels indésirables, d'utiliser des alarmes, le mode nuit, les numérotations rapides, les recompositions, etc., et ainsi de suite - une chose très riche en fonctionnalités pour son temps.

Pendant 15 ans de sa popularité, il a eu toute une histoire. A commencé comme un produit de création et d'emploi secondaire d'individus amateurs - généralement des étudiants ou des ingénieurs en électronique sans emploi (ce fut une période difficile en Russie), qui produisent souvent des clones ZX Spectrum faits à la main, également - la demande du public a rapidement contribué à la transformer en un peu des entreprises privées légitimes, et certaines d'entre elles ont fini par devenir de grandes entreprises officielles. Au milieu des années 90, les téléphones AON se sont retrouvés dans presque tous les autres foyers, au point que de nombreux utilisateurs de téléphones le connaissaient suffisamment pour pouvoir distinguer la présence d' AON juste à la façon dont les tonalités d'état sonnaient. Cette popularité a perduré jusqu'au début des années 2000. La baisse a été influencée par le fait que les opérateurs de téléphonie fixe, n'étant pas satisfaits de la charge accrue de leurs équipements spéciaux, ont d'abord tenté de transformer le service d'identification de l'appelant en une option payante, puis l'ont complètement remplacé par une nouvelle norme européenne incompatible. Avec la montée en puissance des téléphones portables qui a suivi peu de temps après, les services de téléphonie fixe sont devenus un sous-sol technologique, où les restes de son horrible marché de consommation voient parfois la sortie de versions modernes "premium" des descendants d' AON , tels que Paliha , à ce jour.

La communauté des créateurs d' AON à ses débuts était très similaire à la communauté russe des ordinateurs domestiques de l'époque, une sorte de réalité alternative et vaguement interconnectée. Il partageait les mêmes racines de radio amateur, un matériel et des intérêts similaires, une approche similaire du développement sauvage et des processus de fabrication d'homebrew (comme l'introduction de nouveaux PCB dans les téléphones existants). Tout comme la scène de développement de jeux ZX Spectrum au Royaume-Uni, il a apporté une renommée nationale à certains des fabricants, même s'ils étaient très jeunes. D'une part, Pavel Sukhodolsky , qui avait programmé le firmware AON le plus populaire Rus , n'avait que 15 ans à l'époque.

Pheaking téléphonique, piratage pour s'emprunter des morceaux de code, des droits d'auteur naïfs et leur violation, des messages aux parties concurrentes cachés dans le code binaire avec des adresses FidoNet, des articles dans les magazines radio, des livres, des manuels, des mythes urbains et bien plus encore - un morceau significatif de l'aube de l'histoire de l'ère numérique couverte par les sables du temps, en attente de courageux explorateurs à venir.

Moi, moi et AON


La première fois que j'ai vu un AON, c'était au début des années 90, quelque temps après avoir joué mes premiers jeux sur les clones ZX Spectrum et NES , mais juste avant de me lancer dans la programmation moi-même. J'étais fasciné par cette nouveauté technique et j'ai passé beaucoup de temps à expérimenter des séquences de boutons pour découvrir des fonctionnalités dans des versions fraîches ou inconnues du firmware, à l'écoute de mélodies populaires dans l'exécution d'une seule voix, ainsi que du discours informatique qu'il a pu pour synthétiser, et lire des manuels pour passer en revue les mentions de fonctionnalités et d'artefacts jamais vus tels que le contrôle de bande , la boucle de sécurité , la carte vocale ou le bip (qui était un appareil permettant d'accéder à distance aux fonctions du téléphone via la commande de numérotation par tonalité). Mon compagnon a aidé son père à fabriquer de tels téléphones et, étant intéressé par l'électronique et a commencé à s'intéresser aux ordinateurs, j'ai pu rejoindre les connaissances secrètes de Z80 , 8255 et d'autres symboles magiques. En même temps que les AON commençaient à apparaître tout autour, ils se cassaient souvent, et comme il n'y avait pas de soutien ou de services officiels pour le réparer, ils se sont retrouvés entre mes mains afin d'essayer de les réparer, le plus souvent sans succès. Cette activité a duré jusqu'en 2000.

En 2013, je nettoyais ma maison, et dans le coin le plus éloigné, j'ai découvert quelques vieux téléphones AON , qui me rappelaient le bon vieux temps. Un peu plus tard, mes expériences dans le domaine de la musique 1 bit, des synthétiseurs DIY et de très vieux ordinateurs tels que KIM-1 , ont conduit à l'idée que AON est une sorte d'ordinateur monocarte qui pourrait être réutilisé pour certaines utilisations de musique électronique , comme une boîte à rythmes ou un séquenceur. Je suis assez enthousiaste à propos de cette possibilité et j'ai commencé à obtenir les informations nécessaires qui étaient enfouies dans les profondeurs d'Internet ancien, à programmer un émulateur AON et d'autres activités connexes. Cependant, peu de temps après, il s'est avéré que le matériel retrouvé a accidentellement trouvé son chemin avec les autres déchets, et cette idée a dû être mise en attente.

Au cours des années suivantes, j'ai poursuivi de nombreux projets et intérêts différents. Développement PCSPE , navigation dans une collection Web de composants électroniques soviétiques rares (ne manquez pas ces incroyables affichages de segments! ), Récupération de quelques morceaux de l'histoire d' AON , réitération de vieilles idées sur la création de logiciels de musique pour eux, achat de nombreux AON via un babillard local, obtention de pièces et d'équipements pour des projets électroniques non liés, poursuite des travaux sur l'émulateur AON , etc. Petit à petit, toutes les pièces du puzzle se rejoignent. Une semaine avant la soirée de démonstration de Multimatograf 2018 , la connexion entre "démo" et "téléphone" a été établie dans mon esprit (si je me souviens bien, une blague sur "démo pour une calculatrice" y a contribué), et j'ai commencé à travailler sur ce projet pour de vrai. Bien sûr, je n'ai pas pu terminer quoi que ce soit dans un délai aussi serré, et le travail a ralenti, mais a repris juste au moment où la date de Chaos Constructions 2018 apparaissait de près. Dans la meilleure tradition de la scène, un énorme effort a été mis en place juste deux jours et une nuit avant la fête, au cours de laquelle j'ai conçu, programmé et débogué la plupart des idées que j'avais pour cette démo, puis filmé et monté une vidéo sur ça. L'inscription terminée a été envoyée au concours tôt le matin du jour de la fête, quelques heures avant la date limite.

Quelque temps après la fête, j'ai appris que les affichages à 7 segments ne sont pas rares dans les entrées de Wild Compo , mais d'une manière ou d'une autre, cela n'a jamais attiré mon attention auparavant, donc mon design n'a pas eu de telles influences.

Le matériel




Le matériel sous le capot d'un AON est un ordinateur monocarte 8 bits assez simple et simple, équipé d'un écran LED à 7 segments, d'un clavier de téléphone et d'un circuit d'interface fixe. Au cours de sa période de popularité de 15 ans, le matériel a beaucoup évolué, à partir d'un schéma basé sur i8080 en 1989, et se terminant par un MCU R100-XP sur mesure (noyau i8051, périphériques requis et un clone AY-3-8910 dans un monopuce) développé par Rus-Telecom en 2003. Beaucoup de versions et de fourches existaient entre les deux.

J'ai décidé de m'en tenir à la version la plus classique de 1990 qui est assez proche de ZX Spectrum dans le matériel et l'esprit: CPU Z80 à 4 MHz, 2K à 8K de SRAM, 8K à 64K de ROM, port parallèle basé sur 8255 pour le matériel interne, et minuterie programmable 8253 à 1 MHz. L'un des canaux de temporisation génère des interruptions CPU, un autre produit un son à onde carrée à canal unique, et le troisième n'est pas utilisé du tout, ou agit comme un chien de garde du système. Ce schéma a été présenté avec les deux types de PCB les plus courants, un "grand" classique et un "petit" mis à jour. Le grand a été conçu pour être installé dans le corps du VEF-TA-12 fabriqué en Lettonie, qui était à peu près le seul modèle de téléphone à accès direct à l'époque. La petite carte n'avait pas de telles dimensions et points de montage spécifiques au modèle, et a été installée dans divers téléphones importés, principalement représentés avec des clones des téléphones de bureau Panasonic . De nombreux micrologiciels étaient disponibles pour fonctionner sur ces cartes alimentées par Z80, y compris Arctur-36 , Selena , Lira , Allo , et le plus populaire de tous - Rus (jusqu'à la version 23, il a ensuite été reprogrammé pour les cartes basées sur 8051).

La reprogrammation d' AON est assez facile, n'importe quelle puce EEPROM 5V et un brûleur compatible feront l'affaire. J'ai réutilisé certaines EEPROM d'anciennes cartes mères de PC, commandé du Winbond W27C512 frais de Chine et utilisé un graveur WizardProg-87 abordable pour programmer ces puces.

Le plus grand défi avec le matériel était l'état des supports ROM sur un PCB vieux d'un quart de siècle. Ils n'étaient jamais de haute qualité pour commencer, et aujourd'hui les mauvais contacts sont très courants dans ces derniers, ce qui rend difficile de distinguer si un problème est causé par un bogue de programme, ou s'il s'agit simplement d'une connexion défectueuse. J'ai essayé de résoudre ce problème en installant un socket ZIF, mais la petite carte encombrée de composants hauts ne le permettait pas, et la fixation du socket à l'aide d'une pile de connecteurs DIP28 pour répondre au problème de hauteur était sujette à un mauvais contact en soi.

Développement




Avant de commencer le développement de la démo réelle, j'ai dû terminer mon émulateur AON , esquissé en gros en 2014. J'ai trié quelques choses délicates qui n'étaient pas couvertes dans les anciens documents et j'ai intégré un noyau de minuterie 8253 tiers pour faire les interruptions et le son fonctionnent correctement. Avoir un émulateur à portée de main, même avec des fonctionnalités de débogage grossières, permet d'accélérer tout développement rétro par ordre de grandeur. Une fois que l'émulateur a fonctionné, je l'ai utilisé pour tester et déboguer tout le code de démonstration, en l'exécutant de temps en temps sur le matériel pour m'assurer que tout fonctionne correctement et qu'il a l'air bien sur l'écran LED multiplexé, ce que je n'ai pas pu émuler assez authentiquement.

Le code a été écrit avec SjAsmPlus , un assembleur croisé Z80 populaire parmi les développeurs ZX Spectrum et MSX modernes. AON propose une carte mémoire assez funky, probablement le résultat de la minimisation des changements matériels lors de la migration vers des tailles de ROM plus grandes pour les nouveaux micrologiciels. Bien qu'il soit possible d'installer une puce ROM 64K, seulement 32K de la mémoire ROM est disponible pour le CPU à un moment donné, et ces 32K sont entrelacés avec de la RAM en morceaux de 8K. Deux moitiés de la ROM 64K peuvent être échangées par une écriture de port, mais ma démo ne l'a pas utilisée, car elle s'intègre avec succès dans seulement 32K. Le graveur ROM doit avoir tous les morceaux de code pour fonctionner correctement, donc les directives d'assembleur et l'automatisation BAT ont été utilisées pour organiser la disposition de mémoire entrelacée nécessaire et l'enregistrer en tant qu'image binaire linéaire.

Environ la moitié des effets de démonstration ont été correctement programmés via du code, tandis qu'une autre moitié a été implémentée sous la forme d'un ensemble d'animations simples, faute de temps. Un outil de création d'animation LED a été créé afin d'accomplir cette tâche assez rapidement. Il est disponible en téléchargement sur mon site Web.



Compte tenu de la haute densité d'effets dans la démo, qui est d'environ 4 secondes par effet, et de l'ordre constant de réarrangement des effets, près de la date limite, il s'est avéré que la démo manquait complètement de 16 secondes de long segment au milieu, lorsque de la musique pseudo polyphonique joue à pleine intensité. Un effet de remplissage flagrant avec des segments de LED en baisse a été piraté pour combler cet écart. Il a été entrelacé avec un analyseur de spectre précédemment programmé pour augmenter encore le temps de scène. J'espérais qu'une partie sonore occupée détournerait l'attention des téléspectateurs des mauvais visuels prolongés de cette scène.

Les prénoms dans la section des salutations sont un hommage aux passionnés du passé, ce sont les noms des créateurs de firmware AON trouvés dans diverses images ROM.

Bien que ce ne soit pas exactement lié thématiquement, il n'y aurait aucune excuse pour manquer une occasion d'afficher le message emblématique EGGOG (Erreur) qui provient des premières calculatrices programmables soviétiques (c'est une toute autre histoire). L'endroit le plus logique pour le mettre était la toute fin de la démo - comme cela a commencé avec l'imitation d'un problème, il serait logique de le terminer avec un message d'erreur.

Il n'y a pas grand chose à dire sur la façon dont les effets particuliers ont été programmés, tout y est simple. Ce qui mérite d'être mentionné, cependant, est probablement la caractéristique la plus importante de la plate-forme matérielle, l'indication LED multiplexée pilotée par logiciel.

L'affichage à LED à 7 segments à 9 chiffres est contrôlé via des sorties à 7 segments et des sorties de sélection à 9 chiffres, ainsi le matériel ne peut afficher qu'un chiffre à la fois, et le logiciel doit alterner rapidement entre tous les chiffres afin d'avoir un affichage complet. J'ai implémenté cela via des interruptions de minuterie à une fréquence assez élevée de 960 Hz (~ 4166 horloges CPU entre les interruptions, ce qui représente environ 500 opérations CPU significatives). Une liste de longueur variable est utilisée pour configurer une séquence de chiffres arbitraires à afficher. Cette approche a permis de mettre en œuvre deux effets. Le premier est l'imitation de gel du système qui est visuellement distincte avec un 8 inhabituellement lumineux dans l'un des chiffres (lorsque le téléphone se bloque, le multiplexage s'arrête et le dernier chiffre affiché reste actif). Le deuxième effet est un pseudo contrôle de la luminosité dans l'effet KITT effectué en éclairant certains chiffres plus longtemps que d'autres. Pendant l'affichage normal, le taux de mise à jour est d'environ 106 Hz, ce qui a éliminé le scintillement notable et aide à éviter les artefacts pendant le tournage de l'action sur vidéo.

La musique


Le matériel audio AON est à peu près comme le haut - parleur PC , juste un haut-parleur piloté par l'un des 8253 canaux. Il peut produire une tonalité carrée lorsque le processeur est occupé par d'autres tâches. Il n'y a pas de contrôle de forme d'onde ou de volume. J'étais bien dans la fabrication de musique de haut-parleur PC monophonique classique en ce moment (qui est ensuite devenu réalité avec la sortie de l'album System Beeps ), alors j'avais déjà PCSPE VST à portée de main et j'ai acquis beaucoup d'expérience dans l'arrangement de cette musique, avec un seul note jouant à tout moment. PCSPE est un plugin pour toute station de travail audio numérique moderne qui émule les spécificités du haut-parleur PC et permet de créer de la musique de manière très pratique. L'utiliser pour composer de la musique qui pourrait être convertie facilement était un choix évident plutôt que de concevoir un tout nouveau moteur de synthèse sonore 1 bit qui semblerait beaucoup plus impressionnant, mais prendrait un certain temps à faire. Il convenait également au niveau conceptuel - un son authentique qui relève la barre dans les restrictions familières.



La musique a été composée à l'aide de Reaper , une DAW populaire. Mon idée pour la première partie était d'imiter le morceau de mélodie de démarrage du firmware Rus original. J'ai également imité d'autres sons typiques, tels que les pressions de boutons et la sonnerie par défaut. Les avoir prêts a donné l'idée de composer une structure rythmique à partir de ceux-ci. La chanson s'est ensuite développée de manière extensive, en ajoutant de plus en plus de couches pour créer une illusion de polyphonie. L'effet le plus complexe de la démo, un symbole lumineux qui coule côte à côte, m'a rappelé la barre de scanner du Knight Rider KITT , j'ai donc ajouté un extrait du thème principal de la série.

Comme les capacités visuelles de la plate-forme sont pour le moins médiocres, il était clair dès le début que je devrais faire un trackmo, c'est-à-dire une démo qui a une synchronisation étroite entre son audio et son visuel. Ainsi, l'écriture du script de démonstration et de la composition musicale a été effectuée en parallèle. Contrairement aux trackers chiptune qui affichent seulement une petite partie de la chanson, Reaper permet de voir toute la durée et la structure de la piste, et de déplacer et d'échanger facilement des parties. Cela a aidé à prendre des décisions meilleures et plus faciles sur la structure de démonstration.

Malheureusement, il n'a pas été possible de synchroniser suffisamment l'action avec la musique. Il n'y avait tout simplement pas assez de temps pour le régler en utilisant le vrai matériel. Je n'ai pas non plus eu le temps d'ajouter un système de marqueurs de synchronisation approprié qui aiderait à résoudre ce problème (un tel système est implémenté dans toutes mes productions de démonstration suivantes). En conséquence, la synchronisation dans certaines parties de la démo est un peu désactivée, et cela est visible visuellement. J'ai passé un peu de temps à synchroniser manuellement le contenu du mieux que je pouvais avant de devoir abandonner et de le laisser tel quel.

Une caractéristique sonore notable des AON est que, outre les bips reconnaissables, les dernières versions du micrologiciel avaient une synthèse vocale rudimentaire basée sur des échantillons utilisée pour énoncer des choses comme les numéros d'appels entrants ou l'heure actuelle, ce qui était assez impressionnant pour l'époque. Par curiosité, j'ai inversé l'ingénierie des formats de données (certains ont utilisé des échantillons 4 bits à ~ 4500 Hz, reproduits en utilisant une technique PWM basée sur une minuterie), j'ai écouté tous les échantillons et j'ai découvert qu'il y avait 3 à 4 voix différentes ensembles qui ont migré entre le firmware de différents auteurs. Un mythe urbain a également été confirmé, certains d'entre eux présentant en effet des expressions obscènes lues aux appelants les plus indésirables. J'avais une idée de découper un discours amusant en utilisant ces échantillons et de l'ajouter à la démo, mais je n'avais pas le temps de trouver une bonne idée, donc il a dû être omis.

Vidéo


Pour pouvoir montrer une démo pour un matériel inhabituel, sans pouvoir assister à la fête avec le matériel en personne, j'ai dû filmer et couper ensemble une petite vidéo. Ce n'est pas un gros problème, mais ce n'est pas vraiment une chose courante pour un programmeur - il s'agit généralement d'enregistrer une distribution d'écran, sans traiter la caméra, les lumières, les placements d'objets physiques et des trucs comme ça.



Quelques téléphones AON ont été utilisés pendant le développement. L'une était une version petite planche, battue beaucoup. Le second était un VEF-TA-12 rouge classique en très bon état avec la grande planche. J'ai principalement utilisé le premier pour exécuter des tests et j'ai enregistré le produit final en utilisant le second. Chose intéressante, malgré le même type d'affichage LED exact (ALS318), cette dernière unité avait des chiffres visuellement plus grands, peut-être parce qu'elle n'est pas placée aussi profondément dans le corps du téléphone, et cela a été bénéfique pour la vidéo.

Ces écrans LED, développés à l'origine pour les calculatrices de poche, ont tendance à se détériorer au fil du temps. Chaque téléphone que j'ai possède une différence notable de luminosité entre les chiffres. La raison est probable que les AON étaient sujets à de fréquents gels et plantages, et une fois qu'il s'est écrasé, le multiplexage de l'affichage se serait bloqué avec l'un des chiffres allumé pendant une longue période de temps. J'avais en fait des écrans de remplacement en meilleur état à portée de main, mais j'ai décidé de garder un look plus authentique pour la vidéo.

La vidéo a été filmée avec un caméscope bon marché très pressé au tout dernier moment. Ensuite, il a été piraté ensemble à l'aide de la vidéo intégrée NLE de Blender - simplement parce que je savais comment l'utiliser, et je n'avais rien de mieux autour. La partie d'introduction était destinée à rappeler ce qu'est cette chose et à expliquer comment le programme a été téléchargé. J'ai également pensé filmer comment la ROM est insérée dans la prise, mais j'ai dû l'omettre car l'état de la prise nécessiterait d'utiliser les deux mains et de faire beaucoup de gémissements obscènes dans le processus.

Relâchez


La démo avait une histoire amusante liée à l'entrée dans une compo particulière.

Deux semaines avant Chaos Construction 2018, les règles ont été légèrement mises à jour. La compo de démonstration ZX Spectrum 640K a été essentiellement transformée en démo combinée Oldschool , en autorisant les entrées pour tout autre ordinateur domestique sorti avant 1991. Pour une raison quelconque, susceptible de satisfaire les parties de scène conflictuelles, les organisateurs ont décidé de conserver l'ancien nom de la compo malgré ce changement. Chauffé par la longue discussion sur ce qu'il faut considérer comme un ZX Spectrum (il y a une tonne de clones étendus), il s'est inévitablement retrouvé avec une certaine confusion et des critiques.

Comme j'étais dans un mode assez zombie au petit matin après un long marathon de développement, j'étais dans le doute et j'ai pris une décision désormais discutable d'envoyer mon inscription dans la catégorie nouvellement modifiée. De plus, les organisateurs ont rejoint toutes les entrées de la Wild Demo et d'autres compositions dans Combined Demo , donc une seule entrée non-ZX en plus de la mienne s'est retrouvée dans la catégorie ZX Spectrum . Avec le recul, la bonne décision serait de s'en tenir à la compo Wild . Mes excuses à l'époque étaient que AON avait certaines qualités d'une plate-forme à mes yeux, comme être un vrai matériel du passé, la possibilité de répéter facilement le processus en cours (contrairement à un GAB ou une démonstration d'appareil photo), et ce n'était pas le cas. juste un appareil unique, mais une norme commune avec un certain nombre de micrologiciels interchangeables différents.

Cette situation s'est finalement transformée en un mème de scène. Plus tard en 2018, j'ai porté la démo sur ZX Spectrum , fermant le cercle. En 2019, le téléphone rouge a figuré sur certaines marchandises de Chaos Constructions et est même apparu comme l'un des objets importants d' un jeu basé sur des mèmes de scène présenté au CaFe 2019 . Je l'ai moi-même exploitée dans ma démo NES 2019 . Donc, dans la rétrospective, peut-être que cette bizarrerie de sortie n'était pas trop mauvaise, après tout.

Téléchargez


AONDEMO avec le code source
Port ZX Spectrum ( vidéo )
AONZ80Emu pour Windows
LED9ED pour Windows
PCSPE pour un DAW compatible VSTi

Source: https://habr.com/ru/post/fr486010/


All Articles