Tudo começou com outra tentativa de parar de fumar. Depois de acordar meu "sapo" interno em busca de apoio, digo a ela: "Olha, um maço de
meus cigarros custa hoje como um computador retro de bolso com uma tela, ou seja, cerca de US $ 10 e, uma vez, pelo clone Sinclair-48K, gastamos todo o salário mensal e passou mais de um mês em montagem e depuração ". Ela: "Vocês são cabras e mentirosas, provem!" Eu tive que trabalhar
Então, os materiais de origem:
- Pílula azul: STM32F103C8T6 - 20K ram 64K flash $ 2.06
- Monitor Arduino: ILI9341 2,8 "320x240 com tela sensível ao toque e slot para cartão de US $ 7,72
- Tweeter $ 0.18
- Alguns botões (7 peças) $ 0,2
- Alguns fios US $ 0,1
- Cartão flash de 64 mega (de uma câmera antiga), não incluído no cálculo
- O programador ST-LINK não é consumido e não está incluído no cálculo; no entanto, também custa alguns dólares
- Um maço de cigarros - consumido muito rapidamente e todos os dias - US $ 8,37

A maravilhosa “pílula azul” fabricada na China é boa para todos, exceto pela quantidade de RAM, apenas 20K (embora também exista pouca constante, apenas 64K). O Spectrum-48K precisa de 48K (coincidência? Não acho) de RAM e 16K de constante. Tiraremos a RAM da tela, porque a resolução do spessi é de 256x192 + borda, enquanto o ILI9341 tem 320x240 com 18 bits por ponto. Ou seja, você pode usar o meio da tela para renderizar e tudo o mais para a “área de troca” real (área de troca?). Além disso, na maioria das vezes (algoritmo LRU) usado pela memória Z80 do emulador do processador é armazenado em cache na RAM STM32, o restante é armazenado na memória de tela ILI9341, com acesso lento (SPI).
Há cerca de 25 anos, escrevi o emulador Z80 na plataforma 80286, eles não são parentes muito distantes do Z80, ambos vieram do 8080, o que me permitiu obter um código muito rápido usando o maravilhoso Borland TACM e C ++, mas não havia necessidade de uma emulação tão detalhada ( o código foi escrito para os dois lados: um notebook com um dicionário e seu emulador no Windows 3.1 para depuração).
Era muito preguiçoso escrever do zero para o braço, então eu perguntei ao Google: "Diga-me Google, como estão as coisas com emulação Z80 pura hoje?" O Google me deu
dois mil e dois projetos adequados:
Baseado no STM32F4, autor de Gorien e o
emulador de fusível mais avançado e depurado. Na primeira montagem do código de Gorien, resultou em cerca de 100K de código executável, claramente mais disponível sobre o assunto. Eu tive que mexer um pouco
em empurrar um elefante na geladeira . Por exemplo, chamadas para variáveis locais são compiladas em um código mais compacto que o global, todos os comandos estendidos dos registros IX e IY são os mesmos, precisos para a substituição de variáveis, a tabela do gerador de caracteres pode ser substituída por um link para o gerador de caracteres Spectrum, etc. Também foi necessário fazer o overclock do processador para 112 MHz (
graças a xedas pela ideia ).
Resultado: um emulador (experimentei cerca de uma dúzia de jogos enquanto todos estão trabalhando) emulador ZX spectrum-48 com uma tela do tamanho de um maço de cigarros (já está entrando no seu bolso, mas os fios ficam ressecados), lendo lixões (ícone + imagem de memória + registra ~ 50K) de jogos com formato de cartão de memória flash FAT32 (mais alguns kilobytes de código) e com um consumo total de ~ 50mA (ou seja, cerca de 50 horas de uma bateria 18650 típica de 2500mAh!), o tempo de ativação é menor que um segundo e o custo total de cerca de US $ 10.
Desvantagens:
- Ainda um pouco mais lento que o original.
- A tela mostra o código do programa baixado, em cores.
- Você precisa de um joystick ou de botões mais suaves. E a taxa. E uma caixa E braços esticados. E ...
Em planos aproximados: reduzindo o consumo (retire os LEDs da placa), adicione modulação do brilho da tela, modo de relógio com a tela desligada, solde um teclado normal com um joystick, ajuste o atraso para o som correto e a leitura de um gravador (e o que?), Conversor de formato de arquivo para PC dumps, aperte um pouco mais de código para hospedar a interface do usuário. Tente reduzir o custo da plataforma usando uma tela de 2,4 polegadas. É verdade, bem, muito pequeno, mas para 5 ... É claro que aqui o interesse é puramente esportivo, embora se você levar em conta a velocidade de desmontar qualquer componente eletrônico em partes inutilizáveis pelos netos, o preço ainda é importante.
Código de trabalho atual no GithubE mais fotos para os fãs, o jogo do tipo R, a área de troca nas bordas da tela principal:

O outro lado:

Jogo Atic-Atac:

PS: Eu não atendi ao preço de um maço de cigarros, então meu "sapo" terá que suportar meus maus hábitos, mas eu já tenho 55 anos, então já gastei a maior parte dele ... Para continuar.
Vídeo, sem som, desculpe: