Servus.
Ein kleines Projekt von mir das ich in den letzten 3 Tagen entwickelt habe, eher etwas für die etwas bastlerisch veranlagten hier.
Es handelt um einen µC - Emulator der Byte - Code ausführen kann. Programmiert wird das ganze in einer Assembler - ähnlichen Sprache, es ist ein Editor mit Syntax-Highlighting, Auto-Completion und Befehls-Hilfen enthalten. Der Emulator stellt 4 32 Bit Ports zur Verfügung, an jeden können wahlweise Taster/Leds/7-Segment LED mit/ohne vorgeschaltenen Dezimal zu BCD Encoder/oder eine direkte Eingabe. Des weiteren lacht dich ein fröhliches Gesicht vom µC an und sorgt immer für gute Laune.
Der Emulator kann ~ theoretisch 2 Milliarden Ports ansprechen, wobei Port 0 ein direkter Input/Output vom User ist (InputRequester, MessageBox), die nächsten 32K Ports Storage Ports die einfach alles zurückspiegeln was man an sie sendet und die nächsten 32K Ports Special Function Ports sind (Bestimmte Anzahl Millisekunden warten, ...)
Sämtliche weiter Ports sind frei belegbar, etwa die 4 Ports des Emulators. In einer späteren Version möchte ich die Anzahl frei einstellbar machen, ist nur eine Frage wie ich die Ports am besten alle aufs Fenster bringe.
In Arbeit befinden sich derzeit mehr Input/Output - Mods (Voltmeter, Spannungsqellen/ Funktionsgeneratoren an ADC Convertern), Timer und ein Interrupt-Controller.
Der Editor und der Emulator sind eigenständig lauffähig, damit der bei einem Crash des Emulators (Stack Overflow, ...) beispielweise nicht der Emulator mit abstürzt. Der Emulator arbeitet nach
Von Neumann Architektur und hat standardmäßig 1024 Stack-Einträge à 4 Byte Daten + 1 Byte OpCode zur Verfügung. Die Stack-Größe werde ich in einem späteren Release frei einstellbar machen.
Es sind bereits ein paar Beispielcodes verfügbar. Diese kann man mit µCEdit bearbeiten und danach per Execute->Send to Emulator an den Emulator senden oder direkt per µCEmulator ausführen. Das ganze funktioniert nach dem Schema: Datei auswählen->Program->Run (Stop->Reset). Einfach mal ein wenig ausprobieren.
Als kleines Beispiel das KidLed.txt, ein 8-Bit Lauflicht:
Port A auf LED, Port B aus Taster und Port C auf Direct stellen. Der Wert den man in Port C einstellt ist ein Delay um das Lauflicht zu verlangsamen. Taster 0 schaltet die Laufrichtung der LEDs um (Rechtslauf/Linkslauf) und Taster 1 aktiviert den "KIDMode" (abwechselnder Rechts/Linkslauf)
Den Source des Bytecode-Interpreter/ByteCode-Compiler und des Parsers, der Virtuellen I/O Schnittstelle, Virtuellen RAM - Verwaltung und Virtuellen Register werde ich als
OpenSource veröffentlichen, es fehlt nur noch etwas Dokumentation.
Das ganze wurde zu Lernzwecken entwickelt, also nicht zu kritisch sein
Der Editor:

Der Emulator:
Download:http://files.cxalex.bplaced.net/secure. ... uC_Emu.zipGruß, Alex