Fazendo uma demonstração para um telefone antigo - AONDEMO

Eu queria fazer uma demo desde que vi a mega demo clássica polonesa Lyra II pela primeira vez em 1997. Eu também queria fazer algo para a maior festa de demonstração russa Chaos Constructions por um longo tempo, mas nunca cheguei a isso. ocupado com outros deveres. Finalmente, em 2018 chegou a hora, e eu cumpri os dois desejos ao mesmo tempo, o estilo de duplo impacto de Van Damm - fiz uma demo chamada AONDEMO que entrou no ZX Spectrum 640K Demo na Chaos Constructions .


Aposto que a coisa vermelha que você acabou de ver não parece muito um espectro para você. Aqui está a história.


Na Rússia soviética


Durante muito tempo, o mercado de eletrônicos de consumo da União Soviética ficou atrás do mundo contemporâneo em uma boa década. Ele não tinha muita tecnologia avançada para oferecer e, até o final dos anos 80, era um país de telefones com discagem rotativa, aparelhos de TV com tubo de vácuo e toca-discos de vinil. Perto da dissolução da União, as fronteiras começaram a se soltar, permitindo que parte da eletrônica estrangeira o alcançasse, enquanto os fabricantes locais começaram a tentar satisfazer o aumento da demanda pública criando produtos similares, para todo tipo de maravilhas técnicas, como videocassetes, computadores domésticos e até coisas básicas como um telefone de discagem rápida começaram a se tornar cada vez mais acessíveis ao público em geral.

Por volta de 1989, um novo dispositivo apareceu nos mercados de rádio, começando a ganhar popularidade. Amplamente conhecido pelo acrônimo AON , que traduz aproximadamente "identificador automático de chamadas", também chamado de "secretária eletrônica" nos manuais, era basicamente um ancestral remoto dos smartphones modernos - um telefone fixo com microprocessador capaz de identifique e exiba os números das chamadas recebidas explorando a funcionalidade das estações telefônicas destinadas a fins especiais e não para uso público. O telefone registrava as chamadas recebidas e efetuadas em um diário, tinha uma lista telefônica que permitia categorizar as chamadas, atribuir-lhes melodias diferentes, bloquear algumas chamadas indesejadas, usar alarmes, modo noturno, discagens rápidas, rediscagens e assim por diante - uma coisa muito cheia de recursos para o seu tempo.

Durante 15 anos de sua popularidade, teve uma história e tanto. Começou como um produto de criação e trabalho paralelo de indivíduos amadores - geralmente estudantes ou engenheiros eletrônicos desempregados (aqueles que eram tempos difíceis na Rússia), que costumam produzir clones ZX Spectrum artesanais também - a demanda pública logo ajudou a transformá-lo em algo empresas privadas legítimas, e algumas delas acabaram se transformando em grandes empresas oficiais. Em meados dos anos 90, os telefones da AON chegaram a quase todas as outras residências, até o ponto em que muitos usuários estavam familiarizados o suficiente para distinguir a presença da AON apenas pela maneira como os tons de status soavam. Essa popularidade durou no início dos anos 2000. O declínio foi influenciado pelo fato de os operadores de telefonia fixa, não estarem satisfeitos com o aumento da carga em seus equipamentos especiais, primeiro tentaram transformar o serviço de identificação de chamadas em uma opção paga e depois o substituíram completamente por um novo padrão europeu incompatível. Com a ascensão seguinte dos celulares que vieram rapidamente depois, os serviços de telefonia fixa se tornaram um subsolo tecnológico, onde restos de seu mercado de consumo hediondo ocasionalmente veem lançamentos de versões modernas "premium" dos descendentes da AON , como Paliha , até hoje.

A comunidade de fabricantes de AON em seus dias de criação era muito semelhante à comunidade de computadores domésticos russos da época, tipo sua realidade alternativa e vagamente interconectada. Ele compartilhou as mesmas raízes de rádio amador, hardware e interesses semelhantes, abordagem similar aos processos de desenvolvimento selvagem e de fabricação de cervejas caseiras (como colocar novos PCBs nos corpos telefônicos existentes). Muito parecido com o cenário de desenvolvimento de jogos do ZX Spectrum no Reino Unido, ele trouxe fama em todo o país para alguns dos fabricantes, apesar de serem muito jovens. Por um lado, Pavel Sukhodolsky , que programava o firmware mais popular da AON , Rus , tinha apenas 15 anos na época.

Phreaking telefônico, hacking para pedir emprestado partes de código, direitos autorais ingênuos e suas violações, mensagens para as partes concorrentes ocultas no código binário completo com endereços da FidoNet, artigos nas revistas de rádio, livros, manuais, mitos urbanos e muito mais - uma parte significativa da história da era digital coberta pelas areias do tempo, esperando os bravos exploradores chegarem.

Eu, eu e AON


A primeira vez que vi um AON foi no início dos anos 90, algum tempo depois de jogar meus primeiros jogos nos clones ZX Spectrum e NES , mas pouco antes de me aprofundar na programação. Fiquei fascinado com essa novidade técnica e passei muito tempo testando sequências de botões para descobrir recursos em versões novas ou desconhecidas do firmware, ouvindo melodias populares na execução de uma única voz, bem como a fala do computador que era capaz sintetizar e ler manuais para entender as menções de recursos e artefatos nunca vistos, como controle de fita , loop de segurança , placa de voz ou sinal sonoro (que era um dispositivo para acessar as funções do telefone remotamente através do controle de discagem por tom). Meu companheiro ajudou seu pai a fabricar esses telefones e, estando interessado em eletrônicos e começando a desenvolver interesse nos computadores, pude juntar o conhecimento secreto de Z80 , 8255 e outros símbolos mágicos. Ao mesmo tempo em que a AON começou a aparecer por toda parte, muitas vezes eles se romperam e, como não havia suporte ou serviços oficiais para consertá-lo, eles acabaram em minhas mãos para tentar consertá-los, mais frequentemente malsucedidos do que não. Esta minha atividade durou até 2000.

Em 2013 eu estava limpando minha casa e, no canto mais distante, descobri alguns telefones antigos da AON , o que me lembrou os bons e velhos tempos. Um pouco mais tarde, minhas experiências no campo da música de 1 bit, sintetizadores de bricolage e computadores muito antigos, como o KIM-1 , levaram a uma idéia de que o AON é um tipo de computador de placa única que pode ser reutilizado para alguns usos da música eletrônica , como bateria eletrônica ou um seqüenciador. Fico bastante entusiasmado com essa possibilidade e comecei a obter as informações necessárias enterradas nas profundezas da Internet antiga, programar um emulador de AON e outras atividades relacionadas. No entanto, logo após constatou-se que o hardware redescoberto acidentalmente encontrou seu caminho junto com o outro lixo, e essa ideia teve que ser suspensa.

Nos anos seguintes, persegui muitos projetos e interesses diferentes. Desenvolvimento do PCSPE , navegando em uma coleção na web de raros componentes eletrônicos soviéticos (não perca essas incríveis exibições de segmentos! ), Recuperando alguns pedaços da história da AON , reiterando velhas idéias sobre como criar software de música para eles, comprando muitos AON s por meio de um quadro de avisos local, obtendo peças e equipamentos para projetos eletrônicos não relacionados, continuando o trabalho no emulador AON e assim por diante. Pouco a pouco, todas as peças do quebra-cabeça se reúnem. Uma semana antes da festa de demonstração do Multimatograf 2018 , a conexão entre "demo" e "telefone" foi estabelecida em minha mente (se bem me lembro, uma piada sobre "demo para uma calculadora" contribuiu para isso) e comecei a trabalhar nisso. projeto de verdade. É claro que não consegui concluir nada em um prazo tão curto, e o trabalho diminuiu, mas retomou assim que a data de 2018 da Chaos Constructions apareceu à vista. Na melhor tradição da cena, um enorme esforço foi realizado apenas dois dias e uma noite antes da festa, durante a qual eu projetei, programei e depurei a maioria das idéias que eu tinha para esta demo, depois filmei e montei um vídeo sobre isso. A inscrição final foi enviada ao concurso no início da manhã do dia da festa, poucas horas antes do prazo final.

Algum tempo depois da festa, eu descobri que os displays de 7 segmentos não são algo incomum nas entradas do Wild Compo , mas de alguma forma isso nunca me chamou a atenção antes, então meu design não teve essas influências.

O hardware




O hardware sob o capô de um AON é um computador de placa única de 8 bits bastante básico e direto, equipado com uma tela LED de 7 segmentos, um teclado do telefone e um circuito de interface de linha fixa. Durante seu período de popularidade de 15 anos, o hardware evoluiu muito, começando com um esquema baseado no i8080 em 1989 e terminando com um R100-XP MCU personalizado (núcleo i8051, periféricos necessários e um clone AY-3-8910 em um único chip) desenvolvido pela Rus-Telecom em 2003. Muitas versões e garfos existiam no meio.

Decidi me ater à versão mais clássica de 1990, que é muito próxima do ZX Spectrum no hardware e no espírito: CPU Z80 a 4 MHz, 2K a 8K de SRAM, 8K a 64K de ROM, porta paralela baseada em 8255 para hardware interno, e temporizador programável 8253 a 1 MHz. Um dos canais do timer gera interrupções na CPU, outro produz um som de onda quadrada de um canal e o terceiro não é usado, ou age como um cão de guarda do sistema. Esse esquema foi apresentado com dois tipos mais comuns de PCB, um clássico "grande" e um atualizado "pequeno". O grande foi projetado para ser instalado no corpo do VEF-TA-12 fabricado na Letônia, que era o único modelo acessível de telefone de discagem na época. A pequena placa não tinha essas dimensões e pontos de montagem específicos do modelo e foi instalada em vários telefones importados, representados principalmente por clones dos telefones comerciais da Panasonic . Vários firmware estavam disponíveis para rodar nessas placas Z80, incluindo Arctur-36 , Selena , Lira , Allo e a mais popular de todas - Rus (até a versão 23, depois foi reprogramada para as placas 8051).

Reprogramar o AON é muito fácil, qualquer chip EEPROM de 5V e um gravador compatível farão o truque. Reutilizei algumas EEPROMs de placas-mãe antigas de PC, pedi um novo Winbond W27C512 da China e usei um gravador WizardProg-87 acessível para programar esses chips.

O maior desafio com o hardware foi a condição dos soquetes ROM nos PCBs com um quarto de século. Eles nunca eram de alta qualidade e, hoje, o contato ruim é muito comum, o que torna difícil distinguir se um problema é causado por um bug do programa ou se é apenas uma conexão defeituosa. Tentei corrigir esse problema instalando um soquete ZIF, mas a placa pequena cheia de componentes altos não permitia isso, e conectar o soquete usando uma pilha de conectores DIP28 para acomodar o problema de altura era propenso a um mau contato por si só.

Desenvolvimento




Antes de iniciar o desenvolvimento da demo real, eu tive que terminar meu emulador AON , esboçado em 2014. Eu resolvi algumas coisas complicadas que não estavam cobertas nos documentos antigos e integrei um núcleo de timer 8253 de terceiros para criar interrompe e o som funciona corretamente. Ter um emulador à mão, mesmo com recursos de depuração brutos, ajuda a acelerar qualquer desenvolvimento retro por ordens de magnitude. Depois que o emulador funcionou, usei-o para testar e depurar todo o código de demonstração, executando-o no hardware de vez em quando para garantir que tudo funcione corretamente e fique bem no visor LED multiplexado, o que não consegui emular autenticamente o suficiente.

O código foi escrito com o SjAsmPlus , um cross assembler Z80 popular entre os desenvolvedores modernos de ZX Spectrum e MSX . O AON apresenta um mapa de memória bastante descolado, provavelmente o resultado de minimizar as alterações de hardware ao migrar para tamanhos de ROM maiores para um firmware mais recente. Embora seja possível instalar um chip ROM de 64K, apenas 32K da memória ROM estão disponíveis para a CPU a qualquer momento e esses 32K são intercalados com RAM em pedaços de 8K. Duas metades da ROM de 64K podem ser trocadas por uma gravação de porta, mas minha demonstração não usou isso, pois cabia com êxito em apenas 32K. O gravador de ROM precisa ter todos os trechos de código para funcionar corretamente; portanto, as diretivas do assembler e a automação BAT foram usadas para organizar o layout de memória intercalado necessário e salvá-lo como uma imagem binária linear.

Cerca da metade dos efeitos de demonstração foi programada adequadamente via código, enquanto outra metade foi implementada como um conjunto de animações simples, devido à falta de tempo. Uma ferramenta de criação de animação em LED foi criada para realizar essa tarefa com rapidez suficiente. Está disponível para download no meu site.



Considerando a alta densidade de efeitos na demo, que é de cerca de 4 segundos por efeito, e a constante ordem de reorganização dos efeitos, perto do prazo, descobriu-se que a demo está completamente ausente do segmento de 16 segundos no meio, quando a música pseudo polifônica está tocando em plena intensidade. Um efeito flagrante de preenchimento com queda de segmentos de LED foi hackeado para fechar essa lacuna. Foi intercalado com o analisador de espectro previamente programado para aumentar ainda mais o tempo da cena. Eu esperava que a parte do som ocupado distraísse a atenção dos espectadores dos visuais ruins e prolongados dessa cena.

Os nomes na seção de cumprimentos são uma homenagem aos entusiastas do passado, nomes dos criadores de firmware da AON encontrados em várias imagens de ROM.

Embora não tenha sido exatamente relacionado tematicamente, não haveria desculpa para perder a oportunidade de exibir a mensagem icônica EGGOG (Erro) que se origina das primeiras calculadoras programáveis ​​feitas pelos soviéticos (essa é uma história totalmente diferente). O lugar mais lógico para colocar isso foi o final da demonstração - como começou com a imitação de uma falha, faria sentido finalizá-la com uma mensagem de erro.

Não há muito motivo para entrar em detalhes sobre como determinados efeitos foram programados; tudo é simples lá. O que vale a pena mencionar, no entanto, é provavelmente o recurso mais proeminente da plataforma de hardware, a indicação LED multiplexada por software.

O display LED de 9 dígitos e 7 segmentos controlado por 7 saídas e saídas de seleção de 9 dígitos, portanto, o hardware pode exibir apenas um dígito por vez, e o software precisa alternar rapidamente entre todos os dígitos para ter uma exibição completa. Eu implementei isso através de interrupções de timer com uma frequência bastante alta de 960 Hz (~ 4166 relógios da CPU entre interrupções, o que representa cerca de 500 operações significativas da CPU). Uma lista de tamanho variável é usada para configurar uma seqüência arbitrária de dígitos a serem exibidos. Essa abordagem permitiu implementar dois efeitos. Primeiro, a imitação de congelamento do sistema que é visualmente distinta com um 8 incomumente brilhante em um dos dígitos (quando o telefone trava, a multiplexagem para e o último dígito exibido permanece ativo). O segundo efeito é o controle de pseudo brilho no efeito KITT, acendendo alguns dígitos por mais tempo que outros. Durante a exibição regular, a taxa de atualização é de cerca de 106 Hz, o que elimina oscilações visíveis e ajuda a evitar artefatos durante a filmagem da ação em vídeo.

Música


O hardware de som da AON é muito parecido com o PC Speaker , apenas um alto-falante acionado por um dos 8253 canais. Pode produzir um tom de onda quadrada enquanto a CPU está ocupada com outras tarefas. Não há forma de onda ou controle de volume. Eu estava bem na criação clássica de músicas monofônicas para PC Speaker no momento (que mais tarde se concretizou com o lançamento do álbum System Beeps ), então eu já tinha o PCSPE VST em mãos e ganhei muita experiência em organizar essas músicas, com apenas uma. nota tocando a qualquer momento. O PCSPE é um plug-in para qualquer estação de trabalho de áudio digital moderna que emula detalhes do alto-falante do PC e permite criar música de uma maneira muito conveniente. Usá-lo para compor músicas que pudessem ser convertidas facilmente era uma escolha óbvia ao criar um novo mecanismo de síntese de som de 1 bit que soaria muito mais impressionante, mas levaria um tempo para ser produzido. Também se encaixava no nível conceitual - som autêntico que eleva a fasquia dentro de restrições familiares.



A música foi composta usando o Reaper , um popular DAW. Minha idéia para a parte inicial era imitar a melodia inicial do firmware original da Rus. Também imitei outros sons típicos, como pressionar o botão e o toque padrão. Tê-los prontos forneceu a idéia de compor uma estrutura rítmica a partir deles. A música então se desenvolveu de maneira extensa, adicionando mais e mais camadas para criar a ilusão de polifonia. O efeito mais complexo da demo, um símbolo brilhante que corre lado a lado, me lembrou a barra de scanner do Knight Rider KITT , então adicionei um trecho do tema principal da série.

Como as capacidades visuais da plataforma são fracas para dizer o mínimo, ficou claro desde o início que eu deveria fazer um trackmo, ou seja, uma demonstração que tenha uma sincronização estreita entre o áudio e o visual. Assim, a escrita do script demo e da composição musical foi feita em paralelo. Ao contrário dos rastreadores de chiptune que exibem apenas uma pequena parte da música, o Reaper permite ver toda a duração e estrutura da faixa, além de mover e trocar partes facilmente. Isso ajudou a tomar decisões melhores e mais fáceis na estrutura da demonstração.

Infelizmente, não foi possível sincronizar a ação com a música suficientemente bem. Não havia tempo suficiente para ajustá-lo usando o hardware real. Também não tive tempo de adicionar um sistema de marcadores de sincronização adequado que ajudasse a resolver esse problema (esse sistema é implementado em todas as minhas produções de demonstração a seguir). Como resultado, a sincronização em algumas partes da demonstração está um pouco desligada, e isso é perceptível visualmente. Passei algum tempo restante sincronizando manualmente as coisas da melhor maneira possível antes de desistir e deixá-las como estão.

Um recurso de som digno de nota dos AONs é que, além dos bipes reconhecíveis, as versões posteriores do firmware possuíam uma síntese de fala rudimentar baseada em amostra usada para especificar coisas como números de chamadas recebidas ou hora atual, o que era bastante impressionante para a época. Por curiosidade, fiz engenharia reversa dos formatos de dados (alguns usavam amostras de 4 bits a ~ 4500 Hz, reproduzidas usando uma técnica PWM baseada em timer), escutavam todas as amostras e descobrimos que havia 3-4 vozes diferentes. conjuntos que migraram entre firmware de autores diferentes. Também foi confirmado um mito urbano, alguns deles de fato exibiam expressões obscenas reproduzidas para os chamadores mais indesejados. Tive a ideia de recortar um discurso divertido usando esses exemplos e adicioná-lo à demonstração, mas estava sem tempo para ter uma boa ideia, então isso teve que ser omitido.

Vídeo


Para solicitar uma demonstração de um hardware incomum, apesar de não poder comparecer à festa com o hardware pessoalmente, tive que filmar e cortar um pequeno vídeo. Não é grande coisa, mas não é algo comum para um programador fazer - geralmente é apenas gravar uma conversão de tela, sem lidar com câmera, luzes, posicionamento de objetos físicos e coisas assim.



Alguns telefones AON foram usados ​​durante o desenvolvimento. Um deles era uma versão pequena, muito batida. O segundo foi um muito bom estado clássico vermelho VEF-TA-12 com a placa grande. Eu usei principalmente o primeiro para executar testes e gravei o produto final usando o segundo. Curiosamente, apesar de ter o mesmo tipo exato de exibição de LED (ALS318), a última unidade tinha dígitos visualmente maiores, talvez porque não é tão profunda no corpo do telefone e foi benéfica para o vídeo.

Esses displays de LED, originalmente desenvolvidos para calculadoras de bolso, tendem a se deteriorar com o tempo. Cada telefone que tenho possui uma diferença notável no brilho entre os dígitos. O motivo é provável que os AONs tenham tendência a congelar e travar com frequência e, uma vez travada, a multiplexação da tela ficará bloqueada com um dos dígitos sendo ativado por um longo período de tempo. Na verdade, eu tinha alguns monitores de substituição em melhores condições, mas decidi manter uma aparência mais autêntica do vídeo.

O vídeo foi filmado com uma câmera de vídeo barata com grande pressa no último momento. Em seguida, ele foi hackeado usando o vídeo embutido do Blender NLE - só porque eu sabia como usá-lo e não tinha nada melhor por aí. A parte de introdução tinha como objetivo lembrar o que é isso e explicar como o programa foi carregado. Também pensei em filmar como a ROM é inserida no soquete, mas tive que omiti-lo porque a condição do soquete exigiria o uso de ambas as mãos e muitos gemidos obscenos no processo.

Lançamento


A demo teve uma história divertida relacionada à entrada de uma determinada composição.

Duas semanas antes da Chaos Construction 2018, as regras receberam uma pequena atualização. A composição do ZX Spectrum 640K Demo foi basicamente transformada no Combined Oldschool Demo , permitindo entradas para qualquer outro computador doméstico lançado antes de 1991. Por alguma razão, provavelmente satisfazendo partes conflitantes da cena, os organizadores decidiram manter o nome antigo da composição, apesar dessa alteração. Aquecido com a longa discussão sobre o que considerar um ZX Spectrum (há uma tonelada de clones expandidos por aí), inevitavelmente terminou com algumas confusões e críticas.

Como eu estava no modo zumbi no início da manhã, depois de uma longa maratona de desenvolvimento, fiquei em dúvida e tomei uma decisão agora questionável de enviar minha entrada na categoria recém-alterada. Além disso, os organizadores juntaram todas as entradas da Wild Demo e outras composições à Combined Demo , de modo que apenas uma entrada que não fosse do ZX além da minha acabou na categoria ZX Spectrum . Olhando para trás, a decisão correta seria manter a composição Wild . Meu ponto de desculpa na época era que a AON tinha algumas qualidades de plataforma em meus olhos, como ser um hardware real do passado, a possibilidade de repetir facilmente o processo de execução (diferente de um caixa eletrônico ou uma demonstração de câmera fotográfica), e não era apenas um dispositivo único, mas um padrão comum com vários firmware intercambiáveis ​​diferentes.

Essa situação acabou se transformando em um meme de cena. Mais tarde, em 2018, eu na verdade transformei a demo no ZX Spectrum , fechando o círculo. Em 2019, o telefone vermelho apareceu em algumas das mercadorias da Chaos Constructions e até apareceu como um dos objetos importantes em um jogo baseado em meme de cena apresentado na CaFe 2019 . Eu próprio o explorei na minha demonstração do NES de 2019 . Então, na retrospectiva, talvez essa peculiaridade do lançamento não tenha sido tão ruim, afinal.

Baixar


AONDEMO com código fonte
Porta ZX Spectrum ( vídeo )
AONZ80Emu para Windows
LED9ED para Windows
PCSPE para uma DAW habilitada para VSTi

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


All Articles