Inhaltsverzeichnis:

Retro CP/M Standalone-Emulator - Gunook
Retro CP/M Standalone-Emulator - Gunook

Video: Retro CP/M Standalone-Emulator - Gunook

Video: Retro CP/M Standalone-Emulator - Gunook
Video: Building a Standalone Z80 CP/M Computer (part 1) 2024, Dezember
Anonim
Retro CP/M Standalone-Emulator
Retro CP/M Standalone-Emulator

Dieses Projekt verwendet das VGA32 ESP v1.4-Modul, um eine Kombination auszuführen, oder RunCPM und FabGL, um einen eigenständigen Computer bereitzustellen, auf dem ein gleichwertiges System wie CP/M 2.2 ausgeführt wird. Beliebt in den 1980er Jahren als Betriebssystem für kleine Computer. Sie können in der Zeit zurückreisen und alte Software wie Wordstar, Supercalc, Adventure und Zork erneut besuchen.

Es ist ein eigenständiges Projekt mit freundlicher Genehmigung des FabGL-Projekts, das die Software zum Ausführen eines Standard-VGA-Monitors und einer PS/2-Tastatur bereitgestellt hat.

Das Hauptbetriebssystem ist eine modifizierte Version von RunCPM, es wurde von der ursprünglichen Arbeit auf Github abgespalten und ich habe die FabGL-Bibliothek hinzugefügt, damit sie auf einem Bildschirm anstelle einer seriellen Konsole verwendet werden kann.

Ich möchte mich bei beiden Projekten ganz herzlich bedanken. Mach weiter so!

Die Software wurde auf mindestens zwei Hardwareversionen getestet. Einer der VGA32 ESP v1.4 (wie fertig verkauft). Als zweite meiner alten Version baute ich aus einem Wroom ESP32-Modul und Schrott-Bits von alten Computern.

Die unten stehende Github-Site enthält wichtige Informationen zu diesen Setups sowie der modifizierten, einbaufertigen Software.

Bei diesem Projekt geht es um die Installation der Software, nicht um die Hardware.

Lieferungen:

Ein VGA32 ESP-Modul V1.4 (getestet). Gefunden bei eBay/aliexpress/amazon etc

Die Arduino IDE, die auf einem Computer installiert ist, nehme ich an, wenn Sie dies lesen, haben Sie dies bereits.

Installieren Sie das ESP32 Support Pack für Arduino IDE. https://github.com/espressif/arduino-esp32 Siehe Schritt 1

Die FabGL-Bibliothek https://www.fabglib.org/ Sie müssen nichts herunterladen, die Arduino-IDE kann dies für uns tun, siehe Schritt 2.

Laden Sie eine Kopie des geänderten RunCPM von https://github.com/coopzone-dc/RunCPM herunter

Schritt 1: ESP32-Unterstützung für Arduino installieren (optional)

ESP32-Unterstützung für Arduino installieren (optional)
ESP32-Unterstützung für Arduino installieren (optional)

Möglicherweise haben Sie dies bereits getan, wenn Sie dies getan haben, können Sie diesen Schritt überspringen.

Besuchen Sie https://github.com/espressif/arduino-esp32 und befolgen Sie die Anweisungen zur Installation mit dem Board-Manager wie folgt:

Installationsanweisungen mit Arduino IDE Boards Manager========================================== ===============

Stabiler Release-Link:

Installieren Sie die aktuelle Upstream-Arduino-IDE auf der 1.8-Ebene oder höher. Die aktuelle Version befindet sich auf der Arduino-Website.

Starten Sie Arduino und öffnen Sie das Einstellungsfenster.

Geben Sie einen der obigen Release-Links in das Feld Zusätzliche Board-Manager-URLs ein. Sie können mehrere URLs hinzufügen, indem Sie sie durch Kommas trennen.

Öffnen Sie den Boards Manager über das Menü Extras > Board und installieren Sie die ESP32-Plattform (und vergessen Sie nicht, Ihr ESP32-Board nach der Installation im Menü Extras > Board auszuwählen).

Schritt 2: Hinzufügen der FabGL-Bibliothek zur IDE

Hinzufügen der FabGL-Bibliothek zur IDE
Hinzufügen der FabGL-Bibliothek zur IDE
Hinzufügen der FabGL-Bibliothek zur IDE
Hinzufügen der FabGL-Bibliothek zur IDE

Stellen Sie mithilfe einer leeren Skizze in der Arduino IDE sicher, dass Sie Ihr ESP-Board aus dem Menü Tools, Boards, ausgewählt haben. (Zum Zeitpunkt des Schreibens war der VGA32 ESP nicht aufgeführt, ich wähle ein generisches Dev Kit-Board).

Wählen Sie im Menü Skizze die Option Bibliothek einschließen und dann Bibliotheksmanager.

Geben Sie im Suchdialog FabGL ein und warten Sie, bis es in der Liste unten angezeigt wird. Klicken Sie nun auf die Schaltfläche Installieren.

fertig

Schritt 3: Hinzufügen einer zusätzlichen SD-Kartenbibliothek, die von RunCPM verwendet wird

Hinzufügen einer zusätzlichen SD-Kartenbibliothek, die von RunCPM verwendet wird
Hinzufügen einer zusätzlichen SD-Kartenbibliothek, die von RunCPM verwendet wird

Dies ist fast das gleiche wie im vorherigen Schritt, aber anstelle von FabGL suchen Sie nach SDFat

Wählen Sie im Menü Skizze die Option Bibliothek einschließen und dann Bibliotheksmanager. Geben Sie im Suchdialog SDFat ein und warten Sie, bis es in der Liste unten angezeigt wird. Sie müssen wahrscheinlich in der Liste nach unten scrollen.

Sie haben die Wahl zwischen zwei Versionen:

1, SdFat von Bill Greiman

2, SdFat - Adafruchtgabel

Ich habe beides probiert, beide scheinen zu funktionieren. Das RunCPM-Projekt hat jedoch die zweite Option "Adafruit Fork" empfohlen, aber in den neuesten Notizen heißt es jetzt:

Alle Boards verwenden jetzt die SdFat-Bibliothek, von hier:

Also wähle ich jetzt die erste Option für dieses Projekt.

fertig

Schritt 4: Laden Sie das modifizierte RunCPM-Projekt herunter

Laden Sie das modifizierte RunCPM-Projekt herunter
Laden Sie das modifizierte RunCPM-Projekt herunter
Laden Sie das modifizierte RunCPM-Projekt herunter
Laden Sie das modifizierte RunCPM-Projekt herunter

Besuchen Sie die Github-Site, Klicken Sie auf die Schaltfläche CODE und laden Sie sie als ZIP-Datei herunter

Speichern Sie diese Datei irgendwo (normalerweise in einem Verzeichnis namens Arduino.

Entpacken Sie die Datei an denselben Ort, es wird ein Ordner namens RunCPM-master erstellt

fertig

Schritt 5: Öffnen und überprüfen Sie das RunCPM-Programm und kompilieren Sie

Öffnen und überprüfen Sie das RunCPM-Programm und kompilieren Sie
Öffnen und überprüfen Sie das RunCPM-Programm und kompilieren Sie

Sie können jetzt die Arduino IDE-Datei, das Menü Öffnen verwenden. Navigieren Sie zu dem Ordner, den Sie oben entpackt haben.

In diesem Ordner befindet sich ein weiterer namens RunCPM. Öffnen Sie den Ordner.

In diesem Ordner befindet sich eine.ino-Datei namens RunCPM.ino. Dies ist die Hauptprojektdatei - öffnen Sie sie.

Sie können jetzt das Projekt anzeigen, die Kommentare lesen usw. Nehmen Sie Änderungen vor, wenn Sie Ihre Version von VGA32-ESP anpassen müssen. Es sollte für V1.4 des Boards vorkonfiguriert sein.

Sie können jetzt auf Kompilieren und Hochladen klicken, vorausgesetzt, Sie haben VGA32 ESP angeschlossen, wird der Emulator auf Ihr Gerät hochgeladen.

WICHTIG: Der VGA32 kann an dieser Stelle ein Problem mit der SD-Karte haben, also stecken Sie ihn nicht ein. Weitere Informationen finden Sie im letzten Schritt unten.

Schritt 6: Erstellen Sie eine SD-Karte, von der aus Ihr RunCPM gestartet werden kann

Dies ist vielleicht der trickreichste Schritt. Ich schlage vor, dass Sie die README.md der Github-Site lesen, um dies zu tun. Hier ist meine Liste, was zu tun ist:

Ich gehe davon aus, dass Sie eine leere SD-Karte haben oder nicht daran interessiert sind, Dateien auf der von Ihnen vorhandenen zu behalten, dies wird sie löschen.

1, formatieren Sie die SD-Karte als FAT-32

2. Erstellen Sie einige Ordner mit den Namen A, B, C D usw. (bis P sind dies die Laufwerke, wenn CP/M ausgeführt wird). Beachten Sie, dass es sich um Hauptstädte handelt.

3. Erstellen Sie in jedem Ordner, den Sie erstellen, einen weiteren Ordner mit dem Namen 0 (das ist eine Null) und optional 1, 2, 3 usw. (bis zu 15). Ordner sind dann Benutzerbereiche in der CP/M-Emulation. Sie brauchen nur den 0-Ordner, um zu beginnen.

4, Suchen Sie in Ihrem heruntergeladenen Projektordner im Arduino-Verzeichnis den Ordner mit dem Namen CCP. Diese enthält verschiedene Versionen des CP/M Command Console Processors. Kopieren Sie die Datei mit dem Namen CCP-DR.60K in das Stammverzeichnis Ihrer SD-Karte.

5, Suchen Sie nun den Ordner im Projektverzeichnis namens DISK. Er enthält eine A. ZIP-Datei, Sie müssen diese Datei in das Verzeichnis namens A/0/ auf Ihrer SD-Karte entpacken. (Siehe auch die 1streadme-Datei für weitere Informationen). Leider hat es nicht die "0" in der Ordnerliste, also müssen Sie zuerst in einen temporären Ordner entpacken und dann den Inhalt für den A-Ordner nach A/0/ auf der SD-Karte kopieren.

6. Wenn Sie die obigen Schritte ausgeführt haben, haben Sie eine SD-Karte mit einer Struktur wie dieser:

F: CCP-DR.60K

/A/0

/1STREAD. ME

/ASM. COM

/…. etc

/B/0

/C/0

etc

Wenn Sie beim Versuch, von der SD-Karte zu booten, Fehlermeldungen erhalten, dass CCP nicht geladen werden kann usw., überprüfen Sie, ob alles im richtigen Tempo ist!

Um diese Phase etwas einfacher zu machen, habe ich eine fertige Version von oben hochgeladen, mit zusätzlicher cp/m-Software, die auch von hier heruntergeladen werden kann https://github.com/coopzone-dc/RunCPM/blob /master/… und einfach in das Stammverzeichnis einer formatierten SD-Karte entpacken. Es sollte Ihnen den Einstieg erleichtern, dann können Sie später Ihre eigenen erstellen.

Ich empfehle Ihnen auch, die Setup-Anleitung auf dem Github Repo zu lesen, sie enthält eine Beschreibung der Ordner, die Sie benötigen.

Schritt 7: Schließen Sie einen VGA-Monitor und eine Tastatur an

Anschließen eines VGA-Monitors und einer Tastatur
Anschließen eines VGA-Monitors und einer Tastatur

Trennen Sie die Stromversorgung der VGA32 ESP-Karte.

Schließen Sie Ihren VGA-Monitor an

Schließen Sie eine PS/2-Tastatur an. Schließen Sie die VGA32-ESP-Karte wieder an die Stromversorgung an. Sie sollten die Tastaturbeleuchtung blinken sehen und etwa 10 Sekunden später wird ein Bild mit einer CP/M-Aufforderung auf dem Bildschirm erscheinen!

Wichtig: Der VGA32 hat ein Problem bei der Verwendung der SD-Karte und dem Soft-Reset, deshalb ist es wichtig, das Gerät im ersten Schritt auszuschalten. Weitere Informationen finden Sie im letzten Schritt.

Los gehts…

Schritt 8: Problem mit der SD-Karte auf dem VGA32-Modul

Problem mit SD-Karte auf VGA32-Modul
Problem mit SD-Karte auf VGA32-Modul
Problem mit SD-Karte auf VGA32-Modul
Problem mit SD-Karte auf VGA32-Modul

Das Foto oben zeigt meine zweite ESP32-Karte (selbstgemacht), diese funktioniert einwandfrei und hat nicht das Problem unten. Ich weiß also, dass es sich nicht um ein Softwareproblem handelt, lesen Sie bitte unten über die VGA32-Version.

Auf meinem VG32 ESP-Modul (v1.4) verwendet die SD-Karte GPIO12. Dies wird von Espressif Systems nicht empfohlen, da dieser Pin beim Einschalten verwendet wird, um die Arbeitsspannung für den internen Speicher zu erkennen. Ich wünschte, jemand hätte es dem Typen erzählt, der diese VGA32-Karte herstellt! Bei Ihnen ist es vielleicht anders, also haben Sie dieses Problem hoffentlich nicht.

Die Probleme sind:

1, Kann keine Skizze hochladen, wenn die Karte eingesteckt ist.

2, Nach dem Drücken der Reset-Taste sperrt sie, bis die SD-Karte entfernt wird. Dann bootet es zu einem Fehlerbildschirm, der keine SD-Karte sagt! Sie können die Karte einlegen und erneut zurücksetzen und es funktioniert das zweite Mal.

Dieses Problem ist behebbar (hat aber ein Risiko) siehe README.md auf

oder Sie können immer ein hartes Aus- / Einschalten machen, um das Board zu starten. Aus irgendeinem Grund scheint dies gut zu funktionieren. Auch wenn Sie die RunCPM-Software erneut hochladen müssen, müssen Sie zuerst die SD-Karte entfernen.

Dies ist ein Auszug aus der README. MD, der das Problem erklärt. Ich habe das Update verwendet und es funktioniert gut, ABER aufgrund seiner Natur liegt das Risiko bei Ihnen, lesen Sie weiter…

Die Einstellungen für den VGA32 ESP scheinen jedoch einen Konflikt mit den GPIO-Einstellungen für die SD-Karte zu haben.

Es funktioniert, aber zum Hochladen müssen Sie die SD-Karte entfernen und nach einem Soft-Reset die SD-Karte entfernen und dann ersetzen, gefolgt von einem weiteren Reset. Es funktioniert ok vom Einschalten oder Hard-Reset. Wenn Sie helfen können, dies zu beheben, lassen Sie es mich bitte wissen. UPDATE 11Oct2020: Der VGA32 ESP v1.4 verwendet GPIO12 (MTDI, Read on Powerup/Reset). Dieser Pin bestimmt die Spannung für den RAM, Voltage of Internal LDO (VDD_SDIO). Wenn die SD-Karte vorhanden ist, zieht sie diesen Pin hoch und der ESP32 denkt, dass die RAM-Spannung 1,8 V betragen sollte, ohne die SD-Karte hat dieser Pin einen internen Pulldown, um die RAM-Spannung auf 3,3 V einzustellen. Dies wird tatsächlich in den Anmerkungen zu den Beispielen des FABGL-Projekts erwähnt, um zu zitieren: Anmerkungen zu GPIO 2 und 12 - GPIO2: kann Probleme bei der Programmierung verursachen. GPIO2 muss auch entweder unverbunden/floating bleiben oder Low angesteuert werden, um in den seriellen Bootloader einzutreten. Im normalen Bootmodus (GPIO0 hoch) wird GPIO2 ignoriert. - GPIO12: sollte vermieden werden. Es wählt die Blitzspannung. Um es zu verwenden, deaktivieren Sie die GPIO12-Erkennungseinstellungen mit: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V WARN!! Gut für ESP32 mit 3,3V Spannung (ESP-WROOM-32). Dies wird Ihren ESP32 BRICKEN, wenn der Blitz nicht 3,3 V hat. HINWEIS 1: Ersetzen Sie "/dev/cu. SLAB_USBtoUART" durch Ihren seriellen Port HINWEIS 2: espefuse.py kann von https://github.com/espressif/esptool heruntergeladen werden

Dies weist weiter darauf hin, dass GPIO12 vermieden werden sollte, schade, dass dem Hersteller der VGA32-ESP-Karte niemand gesagt hat!

BEHOBEN: Ich habe die Option zum Einstellen der Blitzspannung ausprobiert, um die Verwendung von GPIO12 zu überschreiben, und kann auf meinem vga32 ESP bestätigen, dass es funktioniert! Problem behoben, keine Probleme mehr mit der SD-Karte. Ich fordere Sie auf, zu überprüfen, zu überprüfen und sorgfältig darüber nachzudenken, einen BRICK zu erstellen, wenn Sie sich entscheiden, es ebenfalls zu versuchen. Ich empfehle es nicht als Aktion, aber für mich hat es funktioniert.