pico6502 Benutzerhandbuch

English

Hinweis: Das pico6502-Projekt befindet sich in einer fruehen Entwicklungsphase. Die Hardware ist funktionsfaehig und das Bus-Interface ist betriebsbereit, aber die Treiberunterstuetzung ist begrenzt. Dieses Handbuch spiegelt den aktuellen Stand des Projekts wider und wird mit dem Fortschritt der Entwicklung aktualisiert.

pico6502 Benutzerhandbuch

Der pico6502 ist ein Drop-in-Ersatz fuer eine 6502-CPU in jedem Computer mit DIP-40-Sockel. Er wird direkt in den 6502-Sockel Ihres Vintage-Computers eingesteckt und bietet — ohne jegliche Modifikationen an der Host-Platine — erweiterten Speicher, virtuelle Peripheriegeraete und eine browserbasierte Verwaltungsoberflaeche ueber WiFi.
Der pico6502 teilt sich die identische Hardware mit dem picoZ80 — den gleichen RP2350B Dual-Core-Mikrocontroller, 8MB PSRAM, 16MB Flash, ESP32-Koprozessor, SD-Kartenslot und USB-Hub. Der wesentliche Unterschied ist die Bus-Interface-Firmware: Der pico6502 zielt auf das duale PHI1/PHI2-Taktsignal des 6502 und sein vollstaendig speicherabgebildetes Peripheriemodell ab. Anders als der Z80 hat der 6502 keinen separaten I/O-Adressraum — alle Peripheriegeraete (VIA, ACIA usw.) werden ueber FUNC-Bloecke in der Speicherbelegung angesprochen.
Dieses Handbuch behandelt die physische Platine, die Ersteinrichtung, den Anschluss an einen Host-Computer und die Nutzung der Weboberflaeche. Fuer Architekturdetails, Konfigurationsreferenz und Firmware-Interna siehe den pico6502 Technischen Leitfaden. Fuer die Projektuebersicht siehe die pico6502-Projektseite.

Platinenuebersicht

Die pico6502-Platine (Revision 2.2) ist so konzipiert, dass sie in den Formfaktor eines Standard-40-Pin-DIP-Gehaeuses passt und 52mm x 19mm misst. Alle 40 DIP-Pins treten an der Unterseite der Platine hervor und entsprechen exakt der Pinbelegung eines echten 6502, sodass sie ohne Biegen oder Anpassen direkt in jeden 6502-Sockel eingesetzt werden kann.
Die Oberseite traegt alle aktiven Bauteile. Die Platinhoehe ueber dem Sockel liegt innerhalb des Profils eines Standard-ICs mit darunter montiertem DIP-40-Sockel, was sie mit den Freiraeumen der meisten Vintage-6502-Computer kompatibel macht.

Anschluesse und Anzeigen

Die pico6502-Platine bietet die folgenden Anschluesse und Anzeigen:
Element Beschreibung
6-Pin Debug-Header Am Platinenrand platziert. Bietet SWD (Serial Wire Debug)-Zugang zum RP2350 sowie SWO- und Reset-Leitungen. Siehe Debug-Header-Pinbelegung unten.
USB-Anschluss USB-Konnektivitaet zum Firmware-Flashen ueber USB-Massenspeicher (BOOTSEL-Modus) und fuer USB-UART-Bruecke zum ESP32.
SD-Kartenslot Vollformatiger SD-Kartenslot, verwaltet vom ESP32. Enthaelt config.json, ROM-Images und Dateisystem-Assets.

Debug-Header-Pinbelegung

Der 6-Pin-Header ist das primaere Hardware-Interface fuer die initiale Programmierung und das Debugging auf Quelltextebene. Die Pins sind von Pin 1 am Ende naechst der Platinenrandmarkierung nummeriert.
Pin Signal Funktion
1 SWCLK Serial Wire Debug-Takt (ARM SWD)
2 SWDIO Serial Wire Debug-Daten (ARM SWD)
3 SWO Serial Wire Output — optionale Trace-Ausgabe vom RP2350
4 RESET Aktiv-Low-Reset fuer den RP2350. Auf Low ziehen zum Zuruecksetzen.
5 GND Massereferenz
6 3V3 3,3V Spannungsausgang (nicht als Eingang verwenden)

Hinweis: Pins 1, 2 und 5 werden fuer SWD-Debugging verwendet (SWCLK, SWDIO, GND). Fuer das initiale RP2350-Flashen verwenden Sie den BOOTSEL-Modus, indem Sie das BOOTSEL-Signal beim Einschalten aktivieren — siehe Schritt 1 unter Erste Schritte. Pin 3 (SWO) ist optional und wird nur verwendet, wenn die Trace-Ausgabe im Firmware-Build aktiviert ist.


Erste Schritte

Befolgen Sie diese Schritte in der angegebenen Reihenfolge, wenn Sie eine pico6502-Platine zum ersten Mal einrichten:
  1. RP2350-Bootloader ueber USB-Massenspeichermodus (BOOTSEL) flashen.
  2. ESP32-Firmware ueber esptool flashen.
  3. SD-Karte mit config.json und den benoetigten ROM-Images vorbereiten.
  4. pico6502 im 6502-Sockel Ihres Host-Computers installieren.
  5. Einschalten und warten, bis der pico6502 seinen WiFi-Access-Point startet.
  6. Mit der Weboberflaeche verbinden und die Erstkonfiguration abschliessen.

Schritt 1 — RP2350-Bootloader flashen

Der RP2350 hat auf der pico6502-Platine keine physischen BOOTSEL- oder Reset-Tasten — diese Signale sind programmatisch oder ueber den Debug-Header zugaenglich. Um in den USB-Massenspeicher-Bootloader zu gelangen:
  1. Stecken Sie den pico6502 noch nicht in einen Host-Computer — verbinden Sie ihn nur per USB-Kabel mit einem PC.
  2. Halten Sie das BOOTSEL-Signal auf Low (siehe Schaltplan Ihrer Platine fuer die Position des Testpunkts).
  3. Versorgen Sie den USB-Port mit Strom — der RP2350 beginnt zu booten.
  4. Lassen Sie BOOTSEL los, sobald die Platine als USB-Massenspeichergeraet erkannt wird.
  5. Am PC wird ein Laufwerk mit der Bezeichnung RPI-RP2 (oder aehnlich) eingebunden.
  6. Kopieren Sie Bootloader_<Version>.uf2 auf das eingebundene Laufwerk. Der RP2350 flasht sich selbst und startet automatisch neu.
Nach dem Flashen des Bootloaders koennen alle nachfolgenden RP2350-Firmware-Updates drahtlos ueber die Web-OTA-Seite durchgefuehrt werden — Sie muessen fuer normale Firmware-Updates nicht erneut auf das BOOTSEL-Signal zugreifen.

Schritt 2 — ESP32-Firmware flashen

Die ESP32-Firmware wird mit esptool geflasht. Das Verfahren ist identisch mit dem picoZ80 — siehe das picoZ80 Benutzerhandbuch — Schritt 2 fuer alle Details. Die ESP32-Firmware-Binaerdatei ist fuer beide Platinen identisch.
Python-Umgebung einrichten (nur einmal):
python3 -m venv ./venv/
source ./venv/bin/activate
cd $HOME/esptool
Dann alle vier ESP32-Firmware-Komponenten flashen. Passen Sie PORT an den von Ihrem Betriebssystem zugewiesenen Geraeteknoten an:
PORT=/dev/ttyUSB0       # Linux — nach Bedarf anpassen
# PORT=/dev/tty.usbmodem141403  # macOS

BINPATH=/path/to/esp32/build

python3 ./esptool.py \
  -p ${PORT} -b 115200 \
  --before default_reset --after hard_reset \
  --chip esp32s3 \
  write_flash \
  --flash_mode dio --flash_size 4MB --flash_freq 80m \
  0x0     ${BINPATH}/bootloader.bin \
  0x8000  ${BINPATH}/partition-table.bin \
  0x9000  ${BINPATH}/ota_data_initial.bin \
  0x10000 ${BINPATH}/sd_card.bin

Hinweis: Alle nachfolgenden ESP32-Firmware-Updates koennen ueber die OTA-Webseite (ota-esp32.htm) durchgefuehrt werden, sobald das initiale Flashen abgeschlossen ist.

Schritt 3 — SD-Karte vorbereiten

Die SD-Karte enthaelt die Konfigurationsdatei, ROM-Images und Weboberflaechen-Assets.
Formatierungsanforderungen:
  • FAT32-Dateisystem.
  • Jede von FAT32 unterstuetzte Kapazitaet (bis 32GB wird fuer zuverlaessige Formatierung empfohlen).
Minimal erforderliche Dateien:
  • config.json im SD-Karten-Stammverzeichnis — die Hauptkonfigurationsdatei. Siehe Grundkonfiguration fuer ein minimales 6502-Beispiel.
  • webfs/-Verzeichnis — die ESP32-Weboberflaechen-Assets. Kopieren Sie den Inhalt des webfs/-Verzeichnisses aus dem Projektrepository auf die SD-Karte.
Optionale Verzeichnisse:
Verzeichnis Inhalt
ROM/ ROM-Images, die in config.json referenziert werden (z.B. BBC Model B OS, BASIC)
DSK/ Disk-Images fuer zukuenftige Laufwerks-Emulationstreiber
Die SD-Karte kann ueber den Web-Dateimanager verwaltet werden, sobald der pico6502 laeuft — Sie koennen ROM-Images hochladen, config.json bearbeiten und Verzeichnisse ueber den Browser erstellen, ohne die Karte physisch zu entnehmen.

Schritt 4 — Im Host-Computer installieren

Sicherheit zuerst: Schalten Sie den Host-Computer immer aus und trennen Sie ihn vom Stromnetz, bevor Sie den pico6502 ein- oder ausbauen. Die Platine arbeitet intern mit 3,3V; die DIP-40-Pins sind ueber geeignete Interface-Schaltungen mit dem 5V-Host-Bus verbunden, aber die Platine darf niemals unter Spannung eingesetzt oder entfernt werden.
Installationsverfahren:
  1. Host-Computer ausschalten und statische Aufladung ableiten.
  2. Den vorhandenen 6502-CPU-Chip aus seinem DIP-40-Sockel entfernen. Ein Chip-Extraktionswerkzeug wird empfohlen, um Verbiegen der Pins zu vermeiden.
  3. SD-Karte in den pico6502-SD-Kartenslot einsetzen.
  4. Den pico6502 am 6502-Sockel ausrichten und sicherstellen, dass Pin 1 des pico6502 (mit einem Punkt oder einer Kerbe markiert) mit Pin 1 des Sockels uebereinstimmt.
  5. Den pico6502 vorsichtig und gleichmaessig in den Sockel druecken. Sicherstellen, dass alle 40 Pins sitzen. Nicht forcieren — bei Widerstand entfernen und Pinausrichtung pruefen.
  6. Host-Computer einschalten.
Beim ersten Einschalten nach einer frischen Firmware-Installation startet der ESP32 im Access-Point-Modus und sendet ein WiFi-Netzwerk mit dem Namen pico6502. Verbinden Sie sich mit diesem Netzwerk, um auf die Weboberflaeche zuzugreifen und die WiFi-Erstkonfiguration abzuschliessen.

Hinweis: Der pico6502 bezieht Strom von der 5V-Versorgung am VCC-Pin des 6502-Sockels. Der integrierte Abwaertswandler liefert 3,3V an alle Platinenkomponenten. Stellen Sie sicher, dass die 5V-Versorgung Ihres Host-Computers mindestens 500mA liefern kann — der pico6502 kann unter Spitzenlast (RP2350 bei 300MHz mit aktivem WiFi) bis zu 400mA aufnehmen.

Schritt 5 — Einschalten

Schalten Sie den Host-Computer ein. Der pico6502 bootet vom RP2350-Bootloader, laedt die Anwendungsfirmware aus dem Flash, liest config.json von der SD-Karte (oder der gecachten Flash-Kopie), initialisiert die Speicherbelegung und beginnt mit der Bedienung der 6502-Buszyklen.
Der ESP32 bootet parallel und startet das WiFi-Subsystem. Wenn keine gespeicherten Netzwerk-Anmeldedaten gefunden werden, wechselt der ESP32 automatisch in den Access-Point-Modus.

Schritt 6 — Mit der Weboberflaeche verbinden

Verbinden Sie sich beim ersten Start mit dem pico6502-WiFi-Access-Point und navigieren Sie zu http://192.168.4.1. Geben Sie auf der WiFi-Manager-Seite Ihre Heimnetzwerk-Anmeldedaten ein. Nach dem Speichern und Neustart des ESP32 tritt der pico6502 Ihrem Netzwerk bei und ist unter der konfigurierten IP-Adresse erreichbar (Standard: http://192.168.1.192).

WiFi-Einrichtung

Das WiFi-Einrichtungsverfahren des pico6502 ist identisch mit dem picoZ80. Der ESP32-Koprozessor bietet WiFi-Konnektivitaet. Beim ersten Start (oder wenn keine WiFi-Anmeldedaten gespeichert sind) startet der ESP32 im Access-Point (AP)-Modus.

Verbindung im Access-Point-Modus

  1. Oeffnen Sie auf Ihrem Telefon, Tablet oder Laptop die WiFi-Einstellungen und suchen Sie nach einem Netzwerk mit dem Namen pico6502 (oder wie im Feld esp32.wifi.ssid Ihrer config.json konfiguriert, wenn im AP-Modus).
  2. Verbinden Sie sich mit dem pico6502-Netzwerk. Das Standard-AP-Passwort ist pico6502AP (pruefen Sie die Firmware-Release-Notes, ob sich dies geaendert hat).
  3. Oeffnen Sie einen Browser und navigieren Sie zu http://192.168.4.1 — dies ist die Standard-IP-Adresse im AP-Modus. Die pico6502-Weboberflaeche wird angezeigt.
  4. Navigieren Sie zur WiFi-Manager-Seite und geben Sie die SSID und das Passwort Ihres Heimnetzwerks ein.
  5. Klicken Sie auf Save & Connect. Der ESP32 startet neu und verbindet sich als Client mit Ihrem Heimnetzwerk.

Client (Station)-Modus

Sobald der Client-Modus konfiguriert ist, tritt der ESP32 Ihrem WiFi-Heimnetzwerk bei und ist unter der auf der Dashboard-Seite angezeigten IP-Adresse erreichbar. Wenn Sie eine feste IP in config.json gesetzt haben (empfohlen fuer einfachen Zugriff), navigieren Sie direkt zu:
http://192.168.1.192
Ersetzen Sie die von Ihnen konfigurierte IP-Adresse. Wenn Sie DHCP verwenden, finden Sie die zugewiesene Adresse in der DHCP-Client-Liste Ihres Routers.
Die Weboberflaeche laeuft vollstaendig in Ihrem Browser. Keine zusaetzliche Software erforderlich. Der pico6502-Webserver laeuft auf Port 80.

Weboberflaeche

Die pico6502-Weboberflaeche ist identisch mit der des picoZ80 — eine siebensseitige Bootstrap-4-Anwendung, die vom ESP32 bereitgestellt wird. Alle Seiten sind ueber die Navigationsleiste am oberen Rand jeder Seite erreichbar. Die Web-Assets sind im Verzeichnis webfs/ auf der SD-Karte gespeichert.

Dashboard (index.htm)

Das Dashboard ist die Startseite der Weboberflaeche. Es zeigt Echtzeit-Systeminformationen an und bietet einen schnellen Ueberblick ueber den pico6502-Zustand.
Auf dem Dashboard angezeigte Informationen:
  • Firmware-Version — die aktuell laufende RP2350-Firmware-Version und das Build-Datum.
  • ESP32-Version — die ESP32-Koprozessor-Firmware-Version.
  • Aktive Partition — welcher der beiden Firmware-Slots (1 oder 2) aktuell aktiv ist.
  • Aktive Persona — die aktuell geladene Maschinenpersoenlichkeit.
  • RP2350-Takt — aktuelle CPU-Frequenz in MHz.
  • PSRAM-Takt — aktuelle PSRAM-SPI-Taktfrequenz.
  • WiFi-Status — Modus (AP oder Client), SSID und zugewiesene IP-Adresse.
  • SD-Karte — ob eine SD-Karte eingesetzt ist und der Dateisystem-Mount-Status.
  • Betriebszeit — Zeit seit dem letzten Neustart.
Das Dashboard bietet auch Schaltflaechen zum Neustart des RP2350 und zum Ausloesen eines Konfigurations-Neuladen von der SD-Karte ohne vollstaendigen Neustart.

Config Editor (config.htm)

Die Config-Editor-Seite bietet einen Browser-Editor fuer die auf der SD-Karte gespeicherte config.json-Datei. Der Editor verfuegt ueber Syntaxhervorhebung und grundlegende JSON-Validierung.
Zum Bearbeiten der Konfiguration:
  1. Navigieren Sie zur Config-Editor-Seite.
  2. Die aktuelle config.json wird automatisch in den Editor geladen.
  3. Nehmen Sie Ihre Aenderungen vor. Der Editor hebt Syntaxfehler in Rot hervor.
  4. Klicken Sie auf Save, um die aktualisierte Datei zurueck auf die SD-Karte zu schreiben.
  5. Klicken Sie auf Apply (oder Neustart), um die neue Konfiguration anzuwenden. Der RP2350 liest die Konfiguration beim Booten, minimiert sie und speichert sie im Flash — nachfolgende Boots verwenden die Flash-Kopie, wenn keine SD-Karte vorhanden ist.
Aenderungen an der Speicherbelegung und den ROM-Images werden beim naechsten RP2350-Reset wirksam. Beachten Sie, dass der pico6502 keine separate I/O-Zuordnung hat — alle Peripherie-Bindungen befinden sich im memory-Array als FUNC-Bloecke. Aenderungen an den WiFi-Einstellungen im esp32.wifi-Block werden beim naechsten ESP32-Neustart wirksam.

Hinweis: Der Config-Editor arbeitet direkt mit der SD-Karten-Datei. Es ist empfehlenswert, vor signifikanten Aenderungen eine Sicherungskopie einer funktionierenden config.json auf Ihrem PC aufzubewahren.

Dateimanager (filemanager.htm)

Der Dateimanager bietet eine browserbasierte Ansicht des SD-Karten-Inhalts. Sie koennen Verzeichnisse durchsuchen, neue Dateien hochladen (ROM-Images, Disk-Images), bestehende Dateien auf Ihren PC herunterladen, neue Verzeichnisse erstellen sowie Dateien und Verzeichnisse loeschen.
Haeufige Aufgaben im Dateimanager:
  • ROM-Image hochladen — navigieren Sie zum ROM/-Verzeichnis und verwenden Sie die Upload-Schaltflaeche, um die ROM-Datei von Ihrem PC zu uebertragen.
  • config.json sichern — klicken Sie auf das Download-Symbol neben config.json, um eine Kopie auf Ihrem PC zu speichern.
  • Web-Assets aktualisieren — navigieren Sie zu webfs/ und laden Sie Ersatz-HTML/CSS/JS-Dateien hoch, um die Weboberflaeche zu aktualisieren.
Dateioperationen werden direkt auf der SD-Karte ueber den ESP32 ausgefuehrt. Grosse Datei-Uploads koennen je nach Dateigroesse und WiFi-Signalqualitaet einige Sekunden dauern.

Persona-Auswahl (personality.htm)

Die Persona-Auswahl-Seite ermoeglicht es Ihnen, zu waehlen, welche Maschinenpersoenlichkeit (Persona) der pico6502 dem Host-Computer praesentiert. Verschiedene Personas laden unterschiedliche Speicherbelegungen und ROM-Images aus der Konfiguration.
Aktuell unterstuetzte 6502-Personas (fruehe Entwicklung):
  • BBC Model B — BBC Micro Model B Persona (in Entwicklung). Bietet grundlegende Speicherbelegung mit OS- und BASIC-ROMs. Der ModelB.c-Treiber wird in M6502CPU.c ueber #ifdef INCLUDE_BBC_DRIVERS referenziert.
Zusaetzliche 6502-Host-Personas werden hinzugefuegt, wenn das Projekt fortschreitet. Da der 6502 keinen separaten I/O-Adressraum hat, wird die gesamte persona-spezifische Peripherie-Emulation ueber FUNC-Bloecke in der Speicherbelegung abgewickelt — virtuelle VIA, ACIA und andere Peripheriegeraete sind alle speicherabgebildet.

Firmware-Updates (OTA)

Firmware fuer sowohl den RP2350 als auch den ESP32 kann Over-the-Air (OTA) ueber die Weboberflaeche aktualisiert werden. Das Verfahren ist identisch mit dem picoZ80 — siehe das picoZ80 Benutzerhandbuch — Firmware-Updates fuer alle Details.
Der einzige Unterschied ist der RP2350-Firmware-Binaerdateiname: Fuer den pico6502 heisst die Anwendungsbinaerdatei BaseM6502_<Version>.bin statt BaseZ80_<Version>.bin.

WiFi-Manager (wifimanager.htm)

Die WiFi-Manager-Seite konfiguriert die ESP32-Netzwerkeinstellungen. Hier vorgenommene Aenderungen werden im ESP32-NVS (nichtfluechtiger Speicher) gespeichert und treten beim naechsten Neustart in Kraft.
Verfuegbare Einstellungen:
  • WiFi-ModusAccess Point (der pico6502 erstellt sein eigenes Netzwerk) oder Client (der pico6502 tritt einem bestehenden Netzwerk bei).
  • SSID — der Netzwerkname zum Erstellen (AP-Modus) oder Beitreten (Client-Modus).
  • Passwort — die WiFi-Passphrase.
  • IP-Adresse / Subnetzmaske / Gateway — feste IP-Einstellungen fuer den Client-Modus (empfohlen fuer zuverlaessigen Zugriff).
  • DHCP — aktivieren, um automatisch eine Adresse von Ihrem Router zu erhalten; deaktivieren, um die festen IP-Einstellungen oben zu verwenden.
Nach dem Speichern klicken Sie auf Reboot ESP32, um die neuen Einstellungen anzuwenden. Der ESP32 startet neu und verbindet sich mit der neuen Konfiguration. Wenn die Client-Modus-Verbindung fehlschlaegt (falsche SSID oder Passwort), faellt der ESP32 nach einem Timeout auf den Access-Point-Modus zurueck, sodass Sie sich erneut verbinden und die Einstellungen korrigieren koennen.

Grundkonfiguration

Das gesamte Verhalten des pico6502 wird durch config.json auf der SD-Karte gesteuert. Das Folgende ist eine minimale funktionsfaehige Konfiguration fuer einen generischen 6502-Host mit RAM, ROM und einem speicherabgebildeten VIA-Peripheriegeraet. Siehe den Technischen Leitfaden — Konfigurationsreferenz fuer eine vollstaendige Beschreibung aller Optionen.
Wichtiger Unterschied zum picoZ80: Der Top-Level-CPU-Schluessel ist "6502" (nicht "z80"), und es gibt kein "io"-Array — alle Peripheriegeraete einschliesslich VIA, ACIA usw. werden mit FUNC-Bloecken im "memory"-Array abgebildet.
{
  "esp32": {
    "core": {
      "device": "6502",
      "mode":   0
    },
    "wifi": {
      "override":  1,
      "wifimode":  "client",
      "ssid":      "YourNetwork",
      "password":  "YourPassword",
      "ip":        "192.168.1.192",
      "netmask":   "255.255.255.0",
      "gateway":   "192.168.1.1",
      "dhcp":      0,
      "webfs":     "webfs",
      "persist":   0
    }
  },
  "rp2350": {
    "core": {
      "cpufreq":   300000000,
      "psramfreq": 133000000,
      "voltage":   1.10
    },
    "6502": [
      {
        "memory": [
          {
            "enable":   1,
            "addr":     "0x0000",
            "size":     "0x8000",
            "type":     "RAM",
            "bank":     0,
            "tcycwait": 0,
            "tcycsync": 0,
            "task":     "",
            "file":     "",
            "fileofs":  0
          },
          {
            "enable":   1,
            "addr":     "0x8000",
            "size":     "0x1000",
            "type":     "FUNC",
            "bank":     0,
            "tcycwait": 0,
            "tcycsync": 0,
            "task":     "VIA",
            "file":     "",
            "fileofs":  0
          },
          {
            "enable":   1,
            "addr":     "0xC000",
            "size":     "0x4000",
            "type":     "ROM",
            "bank":     1,
            "tcycwait": 0,
            "tcycsync": 0,
            "task":     "",
            "file":     "/ROM/basic.rom",
            "fileofs":  0
          },
          {
            "enable":   1,
            "addr":     "0xE000",
            "size":     "0x2000",
            "type":     "ROM",
            "bank":     2,
            "tcycwait": 0,
            "tcycsync": 0,
            "task":     "",
            "file":     "/ROM/os.rom",
            "fileofs":  0
          }
        ],
        "drivers": []
      }
    ]
  }
}
Dieses Beispiel bildet ab:
  • 0x0000 – 0x7FFF — 32KB RAM in PSRAM-Bank 0 (Zero Page, Stack und allgemeines RAM).
  • 0x8000 – 0x8FFF — 4KB FUNC-Block, gebunden an den VIA Virtual-Device-Handler — eine speicherabgebildete 6522 VIA-Peripherie-Emulation.
  • 0xC000 – 0xFFFF — 8KB BASIC-ROM, geladen von /ROM/basic.rom auf der SD-Karte in PSRAM-Bank 1.
  • 0xE000 – 0xFFFF — 8KB OS-ROM, geladen von /ROM/os.rom auf der SD-Karte in PSRAM-Bank 2. Der 6502-Reset-Vektor bei 0xFFFC/0xFFFD muss innerhalb dieses ROM-Bereichs liegen.
Beachten Sie, dass es kein "io"-Array gibt — der 6502 hat keinen separaten I/O-Adressraum. Die gesamte Peripherie-Emulation verwendet FUNC-Bloecke innerhalb der Speicherbelegung.

Fehlersuche

Host-Computer startet nicht

  • Ausrichtung pruefen — sicherstellen, dass Pin 1 des pico6502 mit Pin 1 des Sockels uebereinstimmt. Das rueckwaerts Einsetzen der Platine beschaedigt sowohl den pico6502 als auch den Host-Computer.
  • Sitz pruefen — den pico6502 entfernen und erneut einsetzen, wobei sichergestellt wird, dass alle 40 Pins vollstaendig sitzen und keine unter der Platine verbogen sind.
  • SD-Karte pruefen — wenn config.json fehlt oder fehlerhaft ist, versucht die Firmware die zuvor gecachte Flash-Konfiguration zu verwenden. Wenn keine gueltige Konfiguration existiert, initialisiert der RP2350 die Speicherbelegung nicht und der Host sieht einen offenen Bus. Der 6502-Reset-Vektor muss sich in einem gueltigen ROM-Bereich befinden.
  • Firmware-Flash bestaetigen — versuchen Sie, den pico6502 per USB anzuschliessen (ohne ihn in den Host einzusetzen) und pruefen Sie, ob die Platine am PC erkannt wird.
  • Host-Netzteil pruefen — der pico6502 kann bis zu 400mA von der 5V-Schiene aufnehmen. Einige Vintage-Computer haben grenzwertige Netzteile; pruefen Sie die 5V-Schienenspannung unter Last mit einem Multimeter.

Keine Verbindung zur Weboberflaeche moeglich

  • WiFi-Modus pruefen — beim ersten Start oder nach einem Werksreset startet der ESP32 im AP-Modus. Verbinden Sie sich zuerst mit dem pico6502-WiFi-Netzwerk und navigieren Sie dann zu http://192.168.4.1.
  • Konfigurierte IP-Adresse pruefen — wenn der Client-Modus mit einer festen IP konfiguriert ist, pruefen Sie, ob die IP mit Ihrem Netzwerk-Subnetz uebereinstimmt.
  • Vorhandensein der SD-Karte pruefen — die Web-Assets in webfs/ auf der SD-Karte sind erforderlich. Ohne SD-Karte kann der Webserver keine Seiten bereitstellen.
  • webfs-Verzeichnis pruefen — bestaetigen Sie, dass das webfs/-Verzeichnis auf der SD-Karte existiert und die HTML/CSS/JS-Dateien aus dem Projektrepository enthaelt.
  • WiFi-Werksreset — wenn Anmeldedaten verloren gehen, flashen Sie die ESP32-Firmware erneut, um NVS-Einstellungen zu loeschen und neu zu beginnen.

SD-Karte nicht erkannt

  • Stellen Sie sicher, dass die SD-Karte als FAT32 formatiert ist. NTFS, exFAT und FAT16 werden nicht unterstuetzt.
  • Probieren Sie eine andere SD-Karte — einige Karten mit hoher Kapazitaet oder hoher Geschwindigkeit koennen Kompatibilitaetsprobleme mit dem ESP32-SPI-SD-Interface haben.
  • Karten bis 32GB werden gut unterstuetzt. Sehr grosse Karten (>32GB) erfordern moeglicherweise spezielle Formatierung.
  • SD-Karte neu einsetzen — entfernen und erneut einsetzen, um guten Kontakt sicherzustellen.

ROM-Images werden nicht geladen / 6502 stuerzt beim Reset ab

  • Pruefen Sie, ob der Dateipfad in config.json exakt mit dem Speicherort auf der SD-Karte uebereinstimmt (Pfade sind gross-/kleinschreibungssensitiv).
  • Bestaetigen Sie, dass die ROM-Image-Datei auf der SD-Karte vorhanden ist — verwenden Sie den Dateimanager, um zum erwarteten Speicherort zu navigieren.
  • Reset-Vektor pruefen — der 6502 liest den Reset-Vektor von den Adressen 0xFFFC und 0xFFFD beim Einschalten. Beide Adressen muessen innerhalb eines ROM- oder RAM-Blocks in Ihrer Speicherbelegung liegen. Wenn sie in einem unzugeordneten oder PHYSICAL-Bereich liegen, springt der 6502 zu einer zufaelligen Adresse und stuerzt ab.
  • Pruefen Sie den fileofs-Wert — ein falscher Offset laedt fehlerhafte Daten in die ROM-Bank.
  • Pruefen Sie, ob das size-Feld im Speicherbelegungs-Eintrag nicht groesser als die ROM-Image-Datei ist.

OTA-Update schlaegt fehl

  • Stellen Sie sicher, dass Sie fuer RP2350-OTA-Updates eine .bin-Datei (nicht eine .uf2) hochladen.
  • Stellen Sie sicher, dass die Binaerdatei fuer das pico6502-Target (BaseM6502) erstellt wurde — laden Sie keine picoZ80-Binaerdatei auf den pico6502 hoch.
  • Stellen Sie sicher, dass Sie auf den inaktiven Slot hochladen, um die funktionierende Firmware zu erhalten.
  • Wenn das OTA-Update fehlschlaegt oder zu einer nicht bootfaehigen Partition fuehrt, behaelt der Bootloader den vorherigen aktiven Slot bei — wiederholen Sie den Upload-Vorgang.
  • Bei ESP32-OTA-Fehlern flashen Sie erneut ueber esptool mit der USB-Verbindung.

Referenz-Websites

Ressource Link
pico6502 Projektseite /pico6502/
pico6502 Technischer Leitfaden /pico6502-technicalguide/
picoZ80 Projektseite /picoz80/
picoZ80 Benutzerhandbuch /picoz80-usermanual/
RP2350 Datasheet datasheets.raspberrypi.com
Pico SDK Documentation raspberrypi.github.io/pico-sdk-doxygen
ESP32-S3 Technical Reference docs.espressif.com
MOS 6502 Datasheet westerndesigncenter.com
X (Twitter) Projektvorschau engineerswork1

Regulatorischer Hinweis fuer Funkgeraete

Dieses Geraet enthaelt ein ESP32-S3-PICO-1-Funkmodul, das im 2,4 GHz ISM-Band sendet und es damit zu einem beabsichtigten Strahler gemaess den Funkfrequenzvorschriften weltweit macht (einschliesslich FCC Part 15 Subpart C in den Vereinigten Staaten und der Funkanlagenrichtlinie 2014/53/EU in der Europaeischen Union).
Obwohl das ESP32-S3-PICO-1-Modul selbst ueber bestehende regulatorische Zertifizierungen verfuegt (FCC, CE und andere), erstrecken sich diese Modulzertifizierungen nicht automatisch auf ein fertiges Produkt, das das Modul enthaelt. Die Vorzertifizierungs-Ausnahme erlaubt es einzelnen Hobbyisten, eine begrenzte Anzahl von Geraeten fuer den persoenlichen, experimentellen oder bildungsbezogenen Gebrauch zu bauen, ohne eine separate Geraetezulassung zu erhalten.
Wichtige Einschraenkungen
  • Zusammengebaute Geraete duerfen nicht verkauft, zum Verkauf angeboten, verschenkt oder anderweitig an Dritte verteilt werden, es sei denn, das fertige Produkt wurde unabhaengig getestet und hat eine eigene Geraetezulassung erhalten.
  • Der Bau dieses Projekts fuer den persoenlichen Gebrauch in begrenzten Stueckzahlen ist im Allgemeinen unter Hobbyisten- und Experimentiervorschriften gestattet (z.B. FCC § 15.23), vorausgesetzt das Geraet verursacht keine schaedlichen Stoerungen.
  • Regulatorische Anforderungen variieren je nach Land. Bauherren ausserhalb der Vereinigten Staaten sollten ihre nationale Funkfrequenzbehoerde fuer anwendbare Regeln konsultieren.
Verantwortung des Bauherrn
Es liegt in der alleinigen Verantwortung des Bauherrn sicherzustellen, dass jedes aus diesen Designs konstruierte Geraet allen anwendbaren Funkfrequenzvorschriften in seiner Gerichtsbarkeit entspricht. Der Autor stellt diese Designs fuer den persoenlichen, bildungsbezogenen und Hobbygebrauch zur Verfuegung und gibt keine Zusicherung, dass ein aus ihnen gebautes Geraet die regulatorischen Anforderungen fuer den kommerziellen Vertrieb erfuellt.