Spectrum-48 contra um maço de cigarros, mingau de um machado ou o que o vídeo STM32F103C8T6 + pode fazer (atualização)

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:

  1. Pílula azul: STM32F103C8T6 - 20K ram 64K flash $ 2.06
  2. Monitor Arduino: ILI9341 2,8 "320x240 com tela sensível ao toque e slot para cartão de US $ 7,72
  3. Tweeter $ 0.18
  4. Alguns botões (7 peças) $ 0,2
  5. Alguns fios US $ 0,1
  6. Cartão flash de 64 mega (de uma câmera antiga), não incluído no cálculo
  7. O programador ST-LINK não é consumido e não está incluído no cálculo; no entanto, também custa alguns dólares
  8. 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:

  1. Ainda um pouco mais lento que o original.
  2. A tela mostra o código do programa baixado, em cores.
  3. 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 Github

E 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:

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


All Articles