Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| homecomputer:ac1:software:monx [2026/09/11 05:52] – angelegt volkerp | homecomputer:ac1:software:monx [2026/11/04 13:55] (aktuell) – [MONX für andere Monitore] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== MONX ====== | ====== MONX ====== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | MONX-pico ist die Erweiterung des Monitors 3.1 um zusätzliche Monitorkommandos | ||
| + | zur Arbeit mit der Hardware des [[..: | ||
| + | |||
| + | https:// | ||
| + | |||
| + | Neben den Kommandos gibt es auch Routinen zur Dateiarbeit mit der SD-Karte des picoAC1. Damit können Programme über eine einheitliche Schnittstelle auf Massenspeicher zugreifen, eine Funktionalität, | ||
| + | |||
| + | Ich hab das Konzept ein wenig erweitert, so dass auch andere Systeme und andere Monitore von MONX partizipieren können. Man lädt einfach einen passenden MONX-Treiber (MONX-pico, MONX-VDIP). Mit monx_inc.asm kompilierte Programme suchen eine MONX-Erweiterung im RAM und bieten dann Massenspeicherzugriff, | ||
| + | <WRAP clear/> | ||
| + | |||
| + | Es gibt derzeit | ||
| + | |||
| + | * BASIC8x (BASIC8K-SD, | ||
| + | * EDAS4x | ||
| + | * PASCAL4x | ||
| + | * [[nascom]] | ||
| + | |||
| + | Folgende Software nutzt MONX, unterstützt aber nur MONX auf Adresse 0800h. | ||
| + | * [[forth]] | ||
| + | |||
| + | Außerdem gibt es funktionskompatible Erweiterungen für andere Speicher: | ||
| + | * USB-Stick via VDIP (s.u.) | ||
| + | * CH376 (in Entwicklung) | ||
| + | |||
| + | |||
| + | |||
| + | ===== Downloads ===== | ||
| + | |||
| + | * {{ : | ||
| + | * MONX-pico auf Adresse C000 und E000, für die picoAC1-SD-Karte | ||
| + | * MONX-VDIP für eine VDIP-USB-Stick-Hardware (AC1-201, picoAC1, JKCEMU) | ||
| + | * monx_inc.asm | ||
| + | * Testprogramme test1, test2 | ||
| + | * BASIC8K (angepasst auf monx_inc) | ||
| + | * EDAS4x (angepasst auf monx_inc) | ||
| + | * PASCALx (angepasst auf monx_inc) | ||
| + | * Dokumentationen und Beispielprogramme für die Programmiersprachen | ||
| + | |||
| + | ===== Kommandos ===== | ||
| + | |||
| + | < | ||
| + | picoAC1 (MonX 1.03) | ||
| + | |||
| + | H Help Hilfetexte Bedienung " | ||
| + | a AADR Dateiname Laden von Dateien an Absolut-Adresse im RAM | ||
| + | c [Zeichen-: | ||
| + | d [+|-|Verzeichnisname|Nr] dir Verzeichnisse anzeigen / wechseln | ||
| + | h help Hilfetexte Bedienung " | ||
| + | l [+|-|Dateiname|Nr] load Dateien von SD-Karte anzeigen / laden | ||
| + | m Verzeichnisname mkdir Verzeichnis anlegen | ||
| + | r Dateiname|Nr remove Datei in Papierkorb verschieben | ||
| + | s AAAA EEEE SSSS Dateiname/ | ||
| + | t [YYYY-MM-DD*hh: | ||
| + | |||
| + | picoAC1 (Mon 1.10) | ||
| + | |||
| + | Z Minibasic | ||
| + | v version Version anzeigen | ||
| + | ? kdolist Kommandos auslisten | ||
| + | </ | ||
| + | |||
| + | ===== Dokumentation ===== | ||
| + | |||
| + | Im codeberg-Repository zum picoAC1 findet man | ||
| + | |||
| + | < | ||
| + | Bedienung.md | ||
| + | monx_interface_v110.txt Beschreibung der lo-level-Funktionen | ||
| + | zum Einbau des SD-Zugriffs in eigene Programme | ||
| + | monx_noac1.E (-> test1.asm) Laden einer Nicht-AC1-Datei | ||
| + | monx_test.S (-> test2.asm) Testroutinen fuer die AC1-Monitorerw. | ||
| + | monx_fsize.E Abfrage der Länge einer Datei auf SD-Karte | ||
| + | </ | ||
| + | |||
| + | Die MONX-Monitorkommandos habe ich auch [[..: | ||
| + | ===== MONX für andere Monitore ===== | ||
| + | |||
| + | Original ist MONX fest auf Adresse 800h mit dem ACC-Monitor 3.1 verbunden. Dieser Adressbereich ist bei anderen Monitoren leider belegt. | ||
| + | Damit MONX auch mit anderen Monitoren genutzt werden können, bietet es sich an, | ||
| + | diese auf andere Adressen zu linken. Das betrifft auch die genutzten Speicherzellen. Zum Glück | ||
| + | werden diese nicht direkt angesprochen, | ||
| + | |||
| + | < | ||
| + | monx_E000.z80 ist MONX 1.1.0 für Adresse E000...E7FF | ||
| + | die Speicherzellen liegen in diesem Bereich | ||
| + | </ | ||
| + | |||
| + | Diese Monitorerweiterung wird im MON3.1-Monitor geladen. Dann kann der Monitor | ||
| + | gewechselt werden, z.B. MON SCCH 10/88. | ||
| + | |||
| + | Die Monitorerweiterung monx_E000 steht nun im SCCH-Monitor zur Verfügung. | ||
| + | |||
| + | ABER: Damit Programme ihn auch nutzen können, müssen die Programme natürlich | ||
| + | darauf vorbreitet werden, statt der originalen Systemrufadressen auf 800h ff nun andere | ||
| + | Adressen zu nutzen. | ||
| + | Dafür muss man die Programme mit der include-Datei monx_inc.asm verbinden: | ||
| + | |||
| + | include monx_inc.asm | ||
| + | call xinit ; | ||
| + | |||
| + | Diese include-Datei enthält statt einfacher EQU's einen kleinen Sprungverteiler, | ||
| + | der je nach vorhandener Monitorerweiterung auf 800h, oder E000h zeigt oder - wenn | ||
| + | gar keine Monitorerweiterung vorhanden ist, Fehler ausgibt. | ||
| + | |||
| + | Die Routine xinit ist zwingend beim Programmstart o.ä. einzubinden, | ||
| + | ersten Aufruf einer MONX-Systemroutine. | ||
| + | |||
| + | Ein Test auf eine vorhandene Monitorerweiterung durch den Vergleich, ob auf 0FFEh " | ||
| + | ist leider nicht mehr allgemein möglich und muss auskommentiert werden. Stattdessen liefert | ||
| + | xinit den Wert FF zurück, wenn keine Monitorerweiterung gefunden wurde, sonst 0. | ||
| + | |||
| + | ===== MONX-VDIP ===== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Es sind folgende Systemkommandos implementiert: | ||
| + | |||
| + | < | ||
| + | a AADR Dateiname Laden von Dateien an Absolut-Adresse im RAM | ||
| + | d [Verzeichnisname] dir Verzeichnisse auflisten / wechseln | ||
| + | l [Dateiname] load Dateien auflisten / Datei von USB laden (Headersave-Format) | ||
| + | Am Ende steht die Startadr. in ARG1 (für J:) | ||
| + | m Verzeichnisname mkdir Verzeichnis anlegen | ||
| + | r Dateiname remove Datei in Papierkorb verschieben | ||
| + | s AAAA EEEE SSSS Dateiname/ | ||
| + | s: Dateiname erneut speichern mit gleichen Adr. | ||
| + | ?[:] kdolist Kommandos auflisten / mit Adressen | ||
| + | |||
| + | Nicht enthalten sind: | ||
| + | |||
| + | H Help Hilfetexte Bedienung " | ||
| + | h help Hilfetexte Bedienung " | ||
| + | t [YYYY-MM-DD*hh: | ||
| + | Z Minibasic | ||
| + | v version Version anzeigen | ||
| + | </ | ||
| + | |||
| + | Änderungen gegenüber MONX-pico: | ||
| + | |||
| + | * Die Auswahl von Verzeichnissen oder Dateien über Nummern gibt es nicht, es wird immer mit dem Dateinamen gearbeitet | ||
| + | * Es werden nur 8.3-Dateinamen unterstützt | ||
| + | * Es sind beliebig geschachtelte Unterverzeichnisse möglich | ||
| + | * Wechsel ins übergeordnete Verzeichnis mit 'd ..' | ||
| + | * Wechsel ins Root-Verzeichnis mit 'd /' | ||
| + | * Beim SCCH-Monitor wird das Zeichen ' | ||
| + | * Das ?-Kommando zeigt ohne Parameter nur die Kommandobuchstaben an | ||
| + | |||
| + | |||
| + | ===== Dateien ===== | ||
| + | |||
| + | Die Dateien auf dem Massenspeicher werden im Headersave-Format gespeichert, | ||
| + | Den eigentlichen Daten ist ein 32 Byte großer Startblock (aka Kopfblock/ | ||
| + | |||
| + | <a2s> | ||
| + | # | ||
| + | | Header | Programm | | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | |||
| + | ^ Byte ^ Bedeutung | ||
| + | | 0, 1 | Anfangsadresse der Datei | | ||
| + | | 2, 3 | Endadresse | ||
| + | | 4, 5 | Startadresse bei Fall eines ausführbaren Programms (Dateityp: " | ||
| + | | 6-11 | frei (z.B. Autor, Gen.Programm oder CRC) | | ||
| + | | 12 | Dateityp (z.B. " | ||
| + | | 13-15 | Headersave-Kennung "magic bytes" (3x D3h) | | ||
| + | | 16-31 | Dateiname/ | ||
| + | |||
| + | Der Dateityp ist prinzipiell frei wählbar, MONX nutzt ' | ||
| + | |||
| + | * P Lauffähiges Maschinenprogramm (z1013: C !!) | ||
| + | * D Maschinendatei | ||
| + | * B Basicprogramm | ||
| + | * F Datenfeld (BASIC) | ||
| + | |||
| + | Die 16 Zeichen " | ||
| + | Informationen genutzt werden, der eigentliche Dateiname liegt bereits im Filesystem vor. | ||
| + | |||
| + | Originale Kassetten-basierte Programme arbeiten immer in 32-Byte-Blöcken. | ||
| + | Sind die letzten Daten kürzer als 32 Byte, wird der letzte Block auf volle 32 Byte | ||
| + | erweitert. Bei den heute üblichen Massenspeichern (SD-Karte, USB) ist das nicht | ||
| + | mehr erforderlich, | ||
| + | |||
| + | |||
| + | |||
| + | MONX-pico nutzt FAT16/ | ||
| + | |||
| + | MONX-VDIP nutzt FAT16/ | ||
| + | |||
| + | ===== Historie ===== | ||
| + | |||
| + | * V09 15.09.2026 MONX_VDIP FCHRW schließt jetzt Datei, MagicCode 1FF1 entfernt, stattdessen zusätzl. Test auf FLEN=0 | ||
| + | * V08 14.09.2026 picoPASCAL ergänzt (Dank an Rolf W. für den Quellcode!) | ||
| + | * V07 13.09.2026 MONX_VDIP o_wfullblocks = 0; Beim Schreiben NICHT mehr auf volle Blocks aufrunden\\ Kennung " | ||
| + | |||
| + | |||
| + | |||