ESP8266 - Das C64-Basic im Browser
- NodeMcu V3
- ESP8266 Firmware
- Nodemcu Flasher 32Bit oder 64Bit
- ESP8266-C64 Software
- Arduino IDE



Was ist ESP8266 C64? Mit diesen kleinen Projekt ist es möglich, einen C64 bzw. dessen Basic im Browser zu bedienen. Es handelt sich dabei um einen Emulator, es können aber keine Programme geladen werden, nur das Basic ist verwendbar. Der Kernal sowie das Basic-ROM werden auf einem ESP8266 geflasht, das wiederum per WLAN im Netzwerk erreichbar ist. Man darf also keinen C64-Ersatz erwarten, aber zum experimentieren mit den ESP8266-Modul und C64-Basic (14351Bytes) ist dieses Projekt allemal geeignet.

Klicke auf das Bild zum Vergrößern
Bevor es los geht, noch ein paar Hinweise (Wichtig!)
- Vermeide statische Ladungen durch das Berühren eines geerdeten Objektes, wie beispielsweise einen Heizkörper. Oder verwende ein antistatisches Armband.
- Sorge dafür, dass die Pins des ESP8266 isoliert sind. Ein Kurzschluss kann das Gerät zerstören.
- Ein eventuell vorhandenes Programm im ESP8266-Flashspeicher wird überschrieben wenn ein neues Programm geflasht wird.
- Die Daten werden über das WLAN versendet. Bei diesen Projekt steht jedoch die Sicherheit nicht im Mittelpunkt.
- Ich übernehme keine Verantwortung über Schäden die direkt oder indirekt durch diese Anleitung entstanden sind.
Das ESP8266 WLAN Modul
Der ESP8266 ist einzeln ohne weitere Hardware leicht zu finden. Wir müssten uns aber um diverse Komponenten kümmern mit denen eine USB-Verbindung zum PC möglich wäre. Diese Mühe können wir uns sparen, weil es zahlreiche Boards gibt wo der ESP8266 verbaut ist. USB-Schnittstelle sowie Bootloader sind bereits vorhanden. Für dieses Projekt verwende ich das NodeMcu V3. Dieses ist für ein paar Euro zu bekommen, z.B. hier: www.ebay.de.

Klicke auf das Bild zum Vergrößern
Ein normales Micro-USB Kabel brauchen wir außerdem um das Board mit den PC verbinden zu können.
Den Treiber installieren
Damit das NodeMcu-Board unter Windows erkannt wird, muss ein Treiber installiert werden. Dieser ist hier zu finden: github.com. Wir laden die Treiber für Windows runter, entpacken das ZIP-Archiv und installieren die Software.

Wenn wir das NodeMcu-Board mit den USB-Kabel verbinden, sollte das entsprechende Gerät im Gerätemanager von Windows angezeigt werden. Zusätzlich sollten wir den COM-Port sehen der verwendet wird. Diesen müssen wir uns merken.

Die ESP8266 Firmware
Als nächstes flashen wir die Firmware des ESP8266-Modules. Damit wir die Firmware nicht selbst kompilieren müssen, laden wir diese von github.com runter. Zum Zeitpunkt der Erstellung dieser Anleitung war die Version ai-thinker-0.9.5.2-115200.bin die aktuellste/getestete Version. Dann brauchen wir noch das Flash-Tool mit den die Firmware gefasht wird. Dazu verwenden wir den nodemcu-flasher den es in zwei Varianten gibt. Lade die zu deinen Betriebssystem passende Version runter.
Für 32bit Windows - Download
Für 64bit Windows - Download
Wir starten den nodemcu-flasher und geben die Port-Nummer des NodeMcu-Boards ein (falls nicht automatisch geschehen). Welche das ist haben wir zuvor im Gerätemanager gesehen.

Im Reiter "Config" hingegen, geben wir im ersten Feld den Pfad zur Firmware (ai-thinker-0.9.5.2-115200.bin) ein.

Dann zurück zum Reiter "Operation" wo der Flashvorgang mit einen Klick auf den Button "Flash" gestartet wird.

Arduino IDE vorbereiten
Jetzt wo das NodeMcu-Board einsatzbereit ist, brauchen wir noch den Editor Arduino IDE mit den die Daten kompiliert und auf den NodeMcu kopiert werden. Die aktuelle Version von Arduino IDE ist hier zu finden: www.arduino.cc. Lade das Programm runter und installiere es.
Arduino IDE kann noch nichts mit den NodeMcu-Board anfangen da es dieses noch nicht kennt. Dieses Problem lässt sich schnell beheben. Wir gehen dazu in den Einstellungen von Arduino IDE die unter "Datei -> Voreinstellungen" zu finden sind und geben neben "Zusätzliche Boardverwalter-URLs" folgende URL ein.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Klicke auf das Bild zum Vergrößern
Wir bestätigen mit OK und öffnen den Boardverwalter: Werkzeuge -> Board -> Boardverwalter.

Klicke auf das Bild zum Vergrößern
In den Suchfeld geben wir ESP8266 ein. Es sollte ein einziger Treffer dabei rauskommen. Diesen Installieren wir.

Klicke auf das Bild zum Vergrößern
Jetzt sollten unter "Werkzeuge -> Board" zahlreiche neue Boards zur Verfügung stehen. Wir wählen das Board "NodeMCU 1.0 (ESP-12E Module)".

Klicke auf das Bild zum Vergrößern
Und als letztes geben wir unter "Werkzeuge -> Port" den Port an, an den das NodeMcu-Board angeschlossen ist. Wenn keine anderen Geräte vorhanden sind, sollte es hier nur eine Auswahl geben.
Die Emulator-Software esp8266-C64
Hier gibt es einige Stolperfallen die mich einiges an Zeit gekostet haben. Zuerst laden wir die Software von github.com runter und entpacken das ZIP-Archiv. Darin befinden sich drei Dateien. Wir doppelklicken auf die Datei "esp8266C64_Browser.ino". Daraufhin sollte sich der Editor Arduino IDE öffnen der uns darauf hinweist, dass sich die Datei in einen Unterordner namens "esp8266C64_browser" befinden muss. Wir bestätigen diesen Hinweis mit "OK".

Der Ordner wird automatisch erstellt und die INO-Datei dort hinein verschoben. Die Datei "cpu.cpp" hingegen wird nicht verschoben. Das müssen wir selbst machen, also verschieben wir die Datei "cpu.cpp" in den Ordner "esp8266C64_browser".

Arduino IDE muss neu gestartet werden, damit erkannt wird, dass die Datei "cpu.cpp" verschoben wurde.

In Arduino IDE suchen wir in der Datei "esp8266C64_Browser" die folgenden Zeilen:
const char* ssid = "Voyager";
const char* password = "keelta01";

Zwischen den Anführungszeichen geben wir den Namen unseres WLAN-Netzes (SSID) und das entsprechende Passwort ein. Als nächstes wählen wir die Datei "cpu.cpp" und scrollen nach unten bis zu der folgenden Zeile:
prog_uchar BIOS[16384] PROGMEM = {
Dieser Befehl wird in neueren Arduino IDE Versionen nicht mehr unterstützt und muss deshalb wie folgt abgeändert werden:
const unsigned char BIOS[16384] PROGMEM = {

Endlich können wir das Programm auf das NodeMcu-Board flashen, mit einen Klick auf den Upload-Button.

Klicke auf das Bild zum Vergrößern
Um zu sehen ob alles richtig gemacht wurde, schalten wir den seriellen Monitor ein (In Arduino IDE: Werkzeuge -> Serieller Monitor) und wählen 115200Baud als Übertragungsgeschwindigkeit. Es sollte nun so etwas wie im folgenden Bild zu sehen sein.

Die IP-Adresse
Damit der Emulator endlich im Browser angezeigt wird, müssen wir dessen IP-Adresse wissen. Diese wird im seriellen Monitor angezeigt. Falls nichts zu sehen sein sollte, kann das NodeMcu-Boards mit der Reset Taste (RST) neu gestartet werden.

Haben wir die IP-Adresse gefunden und in den Browser eingegeben, sollte das gewohnte C64-Startbild angezeigt werden. Das Basic kann nun ganz normal verwendet werden. Der geringe Speicher von 14351Bytes ist eine Einschränkung des NodeMcu-Boards. Laut meinen Tests, können nur die Browser Edge, Safari und Arora den Emulator korrekt darstellen.


