Beim Stöbern im Internet stieß ich kürzlich auf folgende Seite: EPROM EMULATOR.
Hier wird ein Gerät beschrieben, das letztlich so funktioniert, als wäre es ein EPROM. Man steckt den Adapter einfach in einen Slot, wo normalerweise ein EPROM sitzt, lädt den Inhalt des EPROMs in den Adapter und startet das entsprechende Gerät. Die Firmware, das Betriebssystem oder was auch immer normalerweise auf dem EPROM ist, wird nun über den Adapter und das Kabel geladen.
Man könnte sich nun fragen, warum dieser Aufwand notwendig ist. Die Antwort ist eigentlich ganz einfach. Wenn man eine eigene Firmware entwickelt, muss man sie normalerweise nach dem Kompilieren in eine BIN-Datei umwandeln, in ein EPROM oder EEPROM schreiben und dann das EPROM oder EEPROM in den entsprechenden Sockel stecken.
Fehler gemacht? Irgendwo muss noch etwas geändert werden? Dann muss man das EPROM oder EEPROM wieder herausnehmen, es löschen (was bei einem EPROM etwas länger dauert, da es durch UV-Licht gelöscht werden muss), neu beschreiben und wieder in den Slot stecken.
Abgesehen davon, dass dieses ständige Hin und Her sicherlich nicht positiv für die Komponenten ist, dauert es immer einige Minuten.
Mit einem EPROM-Emulator hat man eine Verbindung über USB zum PC. So kann man eine neue Firmware auf Knopfdruck testen, ohne etwas ändern zu müssen. Dank externer Reset-Leitungen wird das jeweilige Gerät oder die CPU automatisch zurückgesetzt.
Auch das Testen verschiedener Firmware-Versionen auf einem alten Computer kann so ganz einfach durchgeführt werden.
Wer das Original nachbauen möchte, findet auf der oben genannten Website viele Informationen und Bestellmöglichkeiten. Das gesamte Projekt ist auch auf GitHub zu finden.
Meine Interpretation der Platine
Ich persönlich fand diese Platine etwas groß. Also habe ich das Ganze ein wenig verkleinert. Dazu wurden SMD-Komponenten verwendet. Die TTL-Komponenten habe ich durch ein CPLD von Xilinx ersetzt. Außerdem habe ich das verwendete Arduino direkt auf der Platine integriert.
So entstand die folgende Platine:

Die Platine liegt hier auf einem Commodore 1541. Wie man sehen kann, ist diese Variante mit knapp 9×5 cm deutlich kleiner und kompakter. Technisch unterscheidet sie sich nicht vom Original. Nur der ATmega328p wurde durch einen ATmega32u4 ersetzt. Da dieser bereits USB integriert hat, kann der FTDI-Chip eingespart werden. Preislich macht das keinen Unterschied.
Die oben gezeigte Version ist mein erster funktionierender Prototyp. An den Details feile ich noch ein wenig.
Das Flachbandkabel führt zu dem Sockel, in dem normalerweise ein EPROM steckt. Insgesamt sieht das so aus:

Das Flachbandkabel endet in einem DIL28-Adapter. Für den 1541 gibt es einen weiteren Adapter darunter, da dieser kein 27-EPROM direkt verwenden kann.
Wie man sehen kann, ist kein USB-Kabel angeschlossen, aber die Platine läuft trotzdem.
Da der EPROM-Emulator ein zusätzliches 512kBit-Flash-Gerät hat, kann er auch eigenständig betrieben werden. Die Versorgungsspannung wird aus dem EPROM-Sockel entnommen.
So kann man auch ohne PC schnell ein EPROM simulieren. Praktisch, wenn man an einem größeren Computer arbeitet und der PC zu weit weg ist.
Die gängigen EPROMs von 2716 bis 27512 können emuliert werden.
Wie auf dem obigen Bild zu sehen ist, ist ein Kabel des Flachbandkabels mit einer Klemme an die CPU angeschlossen. Beim hier verwendeten 6502 ist PIN 40 die Reset-Leitung, und der Emulator ist damit verbunden.
Wenn ein neues Image geladen wird, setzt dies automatisch das Floppy-Laufwerk zurück.
Beide Varianten für den Reset, also auch für low-active, sind vorgesehen.
Beschreibung
Auf meiner Platine befinden sich hauptsächlich fünf Komponenten. Zum einen der ATmega32u4. Darauf kommt die Original-Firmware, die auch auf der Original-Platine verwendet wird.
Auf dem ATmega befindet sich ein entsprechender Bootloader, sodass die Platine sich als Arduino Micro ausgeben kann. Über USB und die Arduino-IDE kann in Zukunft eine neue Firmware leicht installiert oder persönliche Anpassungen vorgenommen werden.
Die gesamte Steuerung rund um das „Arduino“ übernimmt der Xilinx XC95144XL-10TQ100. Ich habe dieses CPLD gewählt, weil ich davon noch viele habe und weil es einfach super günstig ist. In China kann man es für knapp 1,- Euro pro Stück kaufen. Hier in Deutschland liegt der Preis zwischen 5,- und 10,- Euro.
Dann gibt es noch den RAM-Chip. Dieser ist eigentlich viel zu groß für diese Platine. Leider gibt es nicht viele 5V-tolerante RAM-Chips, die für 512kBit verwendet werden könnten. Entweder man nimmt 2x 256kBit, wie auf der Original-Platine, oder man nimmt einen viel zu großen und nutzt nur 512kBit. Bei 3,- Euro pro RAM-Chip kann man darüber hinwegsehen.
Und schließlich gibt es noch einen 512kBit-Flash-Speicher, der über SPI mit dem Arduino verbunden ist.
Download
Alles Notwendige zum Nachbauen findet man auf meinem Codeberg-Account: Codeberg-Link.
