
O dispositivo proposto emula em um microcontrolador ATmega4809 um microcontrolador abstrato de 4 bits com um espaço de endereço de 256 bytes, que pode ser programado com três botões e quatro comutadores.
O espaço de endereço é dividido em 16 páginas com 16 instruções cada. O comprimento da instrução é de 8 bits, dos quais os quatro mais significativos são o comando e os quatro inferiores são os dados:

Para entrar no modo de programação, mantenha pressionado o botão 2, pressione o botão reset, solte-o, solte o botão após ele. No modo de programação, classifique sequencialmente as instruções na RAM pelo botão 2. Ao passar para a próxima instrução, os LEDs mostram o endereço atual por uma fração de segundo. O botão 1 permite que você faça alterações no comando e endereço como parte da instrução atual. Ao mover para um novo endereço com o botão 2, as instruções para o endereço anterior são inseridas na EEPROM. Após digitar o programa, você precisa pressionar o botão de reset, e haverá uma transição do modo de programação para o modo de execução do programa.
A lista de comandos:
0x0 - carrega o valor constante na porta doutB
0x1 - o mesmo na porta doutA
0x2 - pausa
0x3 - salto incondicional relativo
0x4 - carrega o valor constante na variável A
0x5 - carrega algo com o valor da variável A
0x6 - carrega o valor de algo na variável A
0x7 - executa operações aritméticas e lógicas com a variável A (e B)
0x8 - defina a mordidela alta do endereço para a instrução de salto incondicional absoluta
0x9 - faça um salto incondicional absoluto para o endereço especificado
0xA, 0xB - age como um loop for: toda vez que o comando é executado, se a variável C (ou D) for maior que zero, ocorre uma transição incondicional absoluta para o endereço fornecido, então o valor da variável C (ou D) diminui
0xC - pule a instrução a seguir se o argumento for uma unidade lógica
0xD - chame a função no endereço especificado
0xE - retorna da função chamada
0xF - defina o endereço para a RAM virtual de 4 bits, o valor armazenado nesse endereço pode ser lido com a instrução 0x6E e escrito com a instrução 0x50.
Exemplo 1 - pisca-pisca:
0 1f doutA 1 28 500 2 10 doutB 3 28 500 4 34 -4
Exemplo 2 - contador binário:
0 5B DoutB = A 1 59 PWM1 = A 2 71 A++ 3 28 500 4 34 -4
Exemplo 3 - pisca-pisca com velocidade ajustável (com sub-rotina):
: 0 10 DoutA = 0x0 1 d5 myWait 2 1f DoutA = 0xf 3 d5 myWait 4 34 -4 myWait: 5 64 A = Din 6 52 C = A 7 25 50 8 a7 for(C > 0; C--) jmp 7 9 e0
Esquema:



Todos os arquivos necessários para repetição (placa, firmware, etc.) - por referência ao original. O
simulador TPS alemão
, com capacidades próximas, serviu de inspiração para o design.