Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
cpm:altairesp32 [2023/06/05 06:53] – volkerp | cpm:altairesp32 [2023/07/02 10:17] (aktuell) – [Software] volkerp | ||
---|---|---|---|
Zeile 56: | Zeile 56: | ||
https:// | https:// | ||
+ | Änderung auf serielle Ein- und Ausgabe statt VGA+Keyboard: | ||
+ | https:// | ||
+ | Transfer von disketten/ | ||
+ | https:// | ||
+ | |||
+ | und: https:// | ||
+ | |||
+ | ein weiteres Projekt:\\ | ||
+ | https:// | ||
===== Installation ===== | ===== Installation ===== | ||
Zeile 70: | Zeile 79: | ||
- Beispiele/ | - Beispiele/ | ||
- Fertig! | - Fertig! | ||
+ | |||
+ | ===== Benutzung ===== | ||
+ | |||
+ | Beim Starten sucht die Software, ob eine SD-Karte vorhanden ist, und kopiert die Disketten A..D auf diese, sofern noch keine Dateien diskA.dsk..diskD.dsk auf dieser vorhandsind. Ob SD-Karte oder der interne Flash-Speicher (SPIFFS) genutzt wird, erkenn man am einfachsten beim Start in der "file system-Zeile: | ||
+ | |||
+ | Die Software erkennt automatisch, | ||
+ | |||
+ | Als SD-Karte kommt eine FAT/ | ||
+ | |||
+ | Nach dem erstmaligen Starten muss man die Arbeits-Disketten C und D formatieren. Das erfolgt mit | ||
+ | |||
+ | < | ||
+ | A>FORMAT | ||
+ | *** DISKETTE INITIALIZER *** | ||
+ | DISK DRIVE (A-P)? C | ||
+ | SECTORS PER TRACK: 32 | ||
+ | SECTORS PER BLOCK: 16 | ||
+ | BLOCKS PER DISK: 149 | ||
+ | RESERVED TRACKS: | ||
+ | TRACKS PER DISK: 77 | ||
+ | COMMAND: FULL | ||
+ | WARNING: THIS COMMAND DESTROYS ALL DATA ON THE DISK | ||
+ | TYPE C TO CONTINUE, A TO ABORT WITHOUT LOSS. | ||
+ | PROCESSING TRACK# 76 | ||
+ | INIT DONE - NOW VERIFYING DISKETTE | ||
+ | PROCESSING TRACK# 76 | ||
+ | NO ERRORS FOUND ON THIS DISKETTE | ||
+ | COMMAND: STOP | ||
+ | A> | ||
+ | </ | ||
+ | |||
+ | Achtung: Alle Eingaben müssen im Programm FORMAT in Großbuchstaben erfolgen! | ||
+ | |||
+ | |||
+ | Mit F12 oder PAUSE gelangt man in das Konfigurationsmenü. Für eine deutsche Tastaturbelegung muss man mehrfach Taste K drücken. | ||
+ | |||
+ | Zum Übertragen von Images und einzelnen Dateien siehe: | ||
+ | |||
+ | **Anmerkungen zu FabGL – Altair 8080 CP/M (von Richard Deane)** | ||
+ | |||
+ | Die ESP32 VGA FabGL Altair 8080 CP/ | ||
+ | |||
+ | Die Konsole ist standardmäßig dem physischen VGA-Monitor und der Tastatur zugewiesen, die an den TTGO ESP32 VGA angeschlossen sind, kann aber über den cp/m-Befehl STAT CON:=UC1: auf den USB-Port (seriell) umgeleitet werden. | ||
+ | |||
+ | Standardmäßig ist das System mit zwei vorab gefüllten Disk-Images auf A: und B: konfiguriert, | ||
+ | |||
+ | Beim Durchsuchen des Codes der altair8800-Skizze dachte ich, dass die Laufwerke C und D standardmäßig bestückt wären, aber das ist mir noch nicht gelungen. Diese Laufwerke verfügen über Lese-/ | ||
+ | |||
+ | Ich habe zwei Möglichkeiten zum Bestücken von C- und D-Laufwerken identifiziert: | ||
+ | |||
+ | 1. Verwenden Sie die von FabGL bereitgestellten Tools – das Python-„Transdisk“-Tool und die Menüoption auf dem cp/ | ||
+ | |||
+ | 2. Verwenden Sie das Plug-in-Tool ESP32FS ( https:// | ||
+ | |||
+ | Das mitgelieferte cpm22-System (Laufwerk A) unterstützt kein generisches Kermit, daher gehe ich davon aus, dass IOBYTE nicht implementiert ist. Ich konnte dies ersetzen, indem ich ein gleichnamiges Image cpm22_dsk.h erstellte, das jedoch von kermit.dsk von Altairclone.com abgeleitet war (Konvertierung vom dsk- in das h-Format mithilfe des Linux- oder OS X-Befehls xxd mit der Option -I und anschließendes Bearbeiten des Datentyps). , siehe Details unten. Der Befehl xxd with -i kann nicht vom h- in das Festplattenformat zurückkonvertieren und ist nach der Bereitstellung als Laufwerk A schreibgeschützt. Um eine Festplatte zu erstellen, müssen Sie sie daher möglicherweise mit Lese-/ | ||
+ | |||
+ | Bisher habe ich nur CP/M 2.2 verwendet und CP/M 3 noch nicht ausprobiert. | ||
+ | |||
+ | **Das Folgende basiert auf Informationen des Autors Fabrizio Di Vittorio.** | ||
+ | |||
+ | Die Implementierung von Altair 8080 ist lediglich eine Demo der FabGL-Nutzung und kein Endprodukt. | ||
+ | |||
+ | Übertragen von Dateien: | ||
+ | |||
+ | USB-Link ist an SIO2 angeschlossen. Sie können eine Datei mit dem Befehl PCGET.COM auf der CP/M-Seite übertragen. Führen Sie einfach Folgendes aus: | ||
+ | |||
+ | PCGET-Dateiname B | ||
+ | |||
+ | „B“ zeigt an, dass SIO2 verwendet werden soll. Ersetzen Sie „Dateiname“ durch den Namen der Datei, die Sie erhalten. PCGET verwendet das XMODEM-Protokoll, | ||
+ | Der Autor hat ein Python-Tool (im Ordner „tools“) mit dem Namen „TRANSFILE.py“ erstellt. | ||
+ | Starten Sie einfach: | ||
+ | PCGET MBASIC.COM B ....auf der Altair-Seite und... | ||
+ | python transfile.py MBASIC.COM nach / | ||
+ | (Ersetzen Sie die Parameter „ MBASIC.COM “ und „/ | ||
+ | auf einem beschreibbaren Datenträger (C oder D) ausführen . | ||
+ | |||
+ | Sie können auch Disk-Images übertragen, | ||
+ | |||
+ | Erstellen von Festplatten: | ||
+ | |||
+ | Sie können ein „.h“-Disk-Image aus dem „dsk“-Format erstellen. Das DSK-Format muss 77 Spuren mal 32 Sektoren (8-Zoll-Standard) oder eine Minidisk mit 35 Spuren mal 16 Sektoren sein. Dies ist das gebräuchlichste Format, das Sie im Internet finden können. | ||
+ | |||
+ | Um einen DSK in einen Header zu konvertieren, | ||
+ | xxd -i myimage.dsk > | ||
+ | Es wird myimage.h erstellt. Öffnen Sie es nun und ändern Sie die erste Zeile von... | ||
+ | unsigned char myimage[] = { | ||
+ | ...to... | ||
+ | const uint8_t myimage[] = { | ||
+ | Diese Änderung ist erforderlich, | ||
+ | |||
+ | In Altair8800.ino müssen Sie die gerade erstellte Datei einfügen und Folgendes hinzufügen: | ||
+ | #include " | ||
+ | ..und schließlich können Sie sie A oder B zuweisen mit (Zeile 106): | ||
+ | #define DRIVE_A myimage // A: read only | ||
+ | Eigentlich kann man jedem Laufwerk jedes Image zuweisen. Von Zeile 342 bis 349 werden tatsächlich Treiber mit Disk-Images verknüpft. | ||
+ | Mit... | ||
+ | diskDrive.attachReadOnlyBuffer(0, | ||
+ | ...Sie geben eine Header-Datei an (einen im Code gespeicherten Konstantenpuffer). Natürlich können Sie DRIVE_A direkt durch „myimage“ ersetzen, das Sie gerade erstellt haben. | ||
+ | Mit... | ||
+ | diskDrive.attachFile(2, | ||
+ | ...wobei DRIVE_C nur ein Dateiname in SPIFFS ist, geben Sie ein Festplatten-Image mit Lese-/ | ||
+ | |||
+ | |||
===== Unterlagen ===== | ===== Unterlagen ===== | ||
Zeile 78: | Zeile 190: | ||
===== VGA32 V1.4 ===== | ===== VGA32 V1.4 ===== | ||
+ | |||
+ | 2022: Die aktuelle Version der kleinen Platine bringt unter anderem gleich einen Mini-SD-Kartenslot mit. | ||
+ | Die Software von fabgl unterstützt diese und speichert die Diskettenimages auf SD, wenn beim Start eine SD-Karte gefunden wird! | ||
mit SD-Card und Audio | mit SD-Card und Audio |