Executando verificação de segurança...
12

Pitch: Emulador no browser de um computador 8 bits

Recentemente me interessei em escrever algum emulador, inspirado pelo repositório Build your own x.

A intenção inicialmente seria emular um processador pra conseguir executar o binário de algum de seus programas. Procurei algumas arquiteturas mais simples de emular, mas me lembrei da série de vídeos do Ben Eater onde ele constrói um computador de 8 bits do zero.

Como a emulação seria simples, por causa da pouca complexidade da arquitetura, decidi fazer uma réplica virtual de todo o conjunto incluindo o clock, micro instruções, todos os registradores e o display.

Computador real

Como foi feito

Obviamente não me preocupei com qualidade, só queria que funcionasse. Utilizei JavaScript e o emulador roda no browser.

O projeto roda em dois loops, um deles faz toda a operação do processador a cada ciclo de clock e o outro renderiza os "LEDs" em um elemento canvas utilizando a lib p5.js.

Configuração do computador

Barramento e registradores de 8 bits e memória de 16 bytes.

Instruções:

  • NOP: Nenhuma operação;
  • LDA X: Carrega endereço x da ram no registrador A;
  • ADD X: Soma endereço x da ram no registrador A;
  • SUB X: Subtrai endereço x da ram no registrador A;
  • STA X: Salva registrador A no endereço x da ram;
  • LDI X: Carrega diretamente no registrador A os últimos 4 bits da instrução;
  • JMP X: Carrega no registrador program counter os últimos 4 bits da instrução;
  • JC X: Se flag carry ativa (ALU com overflow), carrega no registrador program counter os últimos 4 bits da instrução;
  • JZ X: Se flag zero (ALU com valor zero), carrega no registrador program counter os últimos 4 bits da instrução;
  • OUT: Printa no display o valor do registrador A;
  • HLT: Para o programa.

Demo

No desktop, acesse https://fmosbacher.github.io/8-bit-computer. O programa que está rodando conta de 0 a 255 e depois volta de 255 a 0.

Emulador

Pra fechar, recomendo muito que vejam a série do Ben Eater. Ele faz um passo a passo pra quem quer entender de verdade como um processador funciona.

4

MANO, QUE DAORA.
Eu tava tentando criar um processador no LogiSim nesses dias, é um assunto bem intessante mas pouca gente chega a tentar.

E para fechar, olha esse emulador e IDE de CHIP-8.

2
1