
Das vorgeschlagene Gerät emuliert auf einem ATmega4809-Mikrocontroller einen abstrakten 4-Bit-Mikrocontroller mit einem Adressraum von 256 Bytes, der mit drei Tasten und vier Schaltern programmiert werden kann.
Der Adressraum ist in 16 Seiten mit jeweils 16 Anweisungen unterteilt. Die Befehlslänge beträgt 8 Bit, von denen die vier wichtigsten der Befehl und die vier niedrigeren die Daten sind:

Um in den Programmiermodus zu gelangen, halten Sie die Taste 2 gedrückt, drücken Sie die Reset-Taste, lassen Sie sie los und lassen Sie die Taste danach los. Sortieren Sie im Programmiermodus die Anweisungen im RAM nacheinander nach Taste 2. Wenn Sie zur nächsten Anweisung wechseln, zeigen die LEDs die aktuelle Adresse für den Bruchteil einer Sekunde an. Mit Taste 1 können Sie den Befehl und die Adresse als Teil der aktuellen Anweisung ändern. Wenn Sie mit Taste 2 zu einer neuen Adresse wechseln, wird die Anweisung für die vorherige Adresse in das EEPROM eingegeben. Nachdem Sie das Programm eingegeben haben, müssen Sie die Reset-Taste drücken, und es erfolgt ein Übergang vom Programmiermodus zum Programmausführungsmodus.
Die Liste der Befehle:
0x0 - Konstantenwert in doutB-Port laden
0x1 - das gleiche gilt für den doutA-Port
0x2 - Pause
0x3 - relativer bedingungsloser Rücksprung
0x4 - Konstantenwert in Variable A laden
0x5 - lade etwas mit dem Wert der Variablen A.
0x6 - lade den Wert von etwas in die Variable A.
0x7 - arithmetische und logische Operationen mit der Variablen A (und B) ausführen
0x8 - Setzt das High-Nibble der Adresse für den absolut bedingungslosen Sprungbefehl
0x9 - Machen Sie einen absolut bedingungslosen Sprung zur angegebenen Adresse
0xA, 0xB - verhält sich wie eine for-Schleife: Jedes Mal, wenn der Befehl ausgeführt wird und die Variable C (oder D) größer als Null ist, tritt ein absolut bedingungsloser Übergang zur angegebenen Adresse auf, und der Wert der Variablen C (oder D) nimmt ab
0xC - Überspringen Sie die folgende Anweisung, wenn das Argument eine logische Einheit ist
0xD - Ruft die Funktion an der angegebenen Adresse auf
0xE - Rückkehr von der aufgerufenen Funktion
0xF - Stellen Sie die Adresse für den virtuellen 4-Bit-RAM ein. Der an dieser Adresse gespeicherte Wert kann mit dem Befehl 0x6E gelesen und mit dem Befehl 0x50 geschrieben werden.
Beispiel 1 - Blinker:
0 1f doutA 1 28 500 2 10 doutB 3 28 500 4 34 -4
Beispiel 2 - Binärzähler:
0 5B DoutB = A 1 59 PWM1 = A 2 71 A++ 3 28 500 4 34 -4
Beispiel 3 - Blinker mit einstellbarer Geschwindigkeit (mit Unterprogramm):
: 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
Schema:



Alle für die Wiederholung erforderlichen Dateien (Karte, Firmware usw.) - unter Bezugnahme auf das Original. Der deutsche
TPS-Simulator diente als Inspiration für das Design.