ROM-Dateisystem (RFS)

Uebersicht

Das Rom Filing System (RFS) ist ein in Z80-Assembler geschriebenes Firmware-Paket, das einen interaktiven Monitor mit Massenspeicher-Dateisystem, Anwendungsstart, Speicher-Dienstprogrammen und Debugging-Werkzeugen fuer den Sharp MZ-80A und kompatible Hardware bereitstellt.
RFS ersetzt die Monitor-ROM und User-ROM des Host-Computers ueber Sockeladapter, die mit der Erweiterungsplatine verbunden sind. Es praesentiert sich dem Benutzer als erweiterte Version des originalen SA-1510-Monitorprogramms mit der vertrauten * Eingabeaufforderung, allen Originalbefehlen und einem umfassenden Satz neuer Befehle fuer SD-Karten- und ROM-Dateiverwaltung, CP/M-Start, BASIC-Laden und vieles mehr.
Die Firmware unterstuetzt vier Hardware-Plattformen, die jeweils zur Kompilierzeit ueber ein Flag in rfs_definitions.asm ausgewaehlt werden:
  • RomDisk-Karte — das urspruengliche Ziel. Bis zu 4×512 KB Flash-RAMs, 512 KB statisches RAM und ein SDXC-Kartenleser. Monitor-ROM und User-ROM werden ueber das Flash-RAM per Bank-Switching umgeschaltet.
  • SFD-700 — die Sharp Floppy-Disk-Schnittstellenkarte. RFS belegt den CPLD/ROM-Bereich der SFD-700 und bietet Monitor, BASIC-Laden und Floppy-Boot.
  • tranZPUter FusionX — die FPGA-basierte Z80-Erweiterungsplatine. RFS laeuft in deren Flash-ROM-Bereich.
  • picoZ80 — die Raspberry Pi Pico-basierte Z80-Ersatz-/Emulatorplatine. Auf dem picoZ80 laeuft RFS unter der dem Host praesentierten Maschinen-Persona — neben dem MZ-80A umfasst dies nun auch den Sharp MZ-80K, der dieselben Sharp-Schnittstellenkarten wie der MZ-80A verwenden kann (RFS, MZ80AFI, MZ-1E14/E19, MZ-1R12/R18/R37, PIO-3034) sowie seinen eigenen nativen MZ-80FD (T3444M) Floppy-Controller.

RFS-Monitor

Beim Booten erscheint das vertraute SA-1510-Anmeldebanner, ergaenzt um "+ RFS", wenn das Dateisystem erfolgreich initialisiert wurde. Der originale SA-1510-Befehlssatz ist vollstaendig verfuegbar, zusammen mit einem Satz erweiterter Befehle. Einige erweiterte Befehle (SD-Karten-Operationen, Laufwerksauswahl) sind nur im RomDisk-/picoZ80-Build vorhanden. Ein integrierter Z80-Assembler und Disassembler ist in allen Builds verfuegbar.
Der vollstaendige Befehlssatz ist unten aufgefuehrt. Mit (R) gekennzeichnete Befehle sind nur im RomDisk-/picoZ80-Build vorhanden.
Befehl Parameter Beschreibung
0 .. 9 (R) Aktives RFS-SD-Kartenlaufwerk waehlen (0–9).
40 (R) In den 40-Spalten-Anzeigemodus wechseln (erfordert Kuma 40/80-Upgrade oder Video Module).
80 (R) In den 80-Spalten-Anzeigemodus wechseln (erfordert Kuma 40/80-Upgrade oder Video Module).
ASM <address> Interaktiver Z80-Assembler. Assembler-Mnemonics direkt ab der angegebenen Adresse in den Speicher eingeben.
B Tastatur-Signalton umschalten.
BASIC BASIC SA-5510 auf dem aktiven SD-Laufwerk oder ROM suchen, laden und ausfuehren.
C [<8-Bit-Wert>] Speicher von 0x1200 bis zum RAM-Ende mit 0x00 oder dem angegebenen Bytewert initialisieren.
CP <src> <dst> <size> Einen Speicherblock kopieren. Alle drei Argumente sind 4-stellige Hex-Werte: Quelladresse, Zieladresse, Byteanzahl.
CPM CP/M 2.2 auf dem aktiven SD-Laufwerk oder ROM suchen, laden und starten.
D <addr> [<addr2>] Speicherinhalt von <addr> bis <addr2> (oder 20 Zeilen) als Hex und ASCII ausgeben. Die Ausgabe pausiert bei jedem vollen Bildschirm; Taste druecken zum Fortfahren, ‘U’ fuer Seite zurueck, ‘X’ zum Beenden. Wiederholung von ‘D’ ohne Adresse setzt ab der letzten Position fort.
DASM <addr> [<addr2>] Z80-Maschinencode von <addr> bis <addr2> disassemblieren.
DUC (R) [H|T] <name> oder <Dateinr.> Inhalt einer SD-Karten-Datei ausgeben. Standard: Hex-Dump. DUCH: Hex-Dump mit MZF-Header-Info (Ladeadresse, Ausfuehrungsadresse, Groesse). DUCT: Textausgabe (nur druckbare ASCII-Zeichen).
EC (R) <name> oder <Dateinr.> Eine Datei vom aktiven SD-Kartenlaufwerk nach Name oder Dateinummer loeschen.
F / FL [<drive>] Vom angegebenen Floppy-Laufwerk booten. Falls weggelassen, wird zur Eingabe einer Laufwerksnummer aufgefordert.
FD [<drive>] Verzeichnisliste einer Floppy-Disk anzeigen. Die optionale Laufwerksnummer waehlt Laufwerk 1–4 (Standard: 1).
FC <start> <end> <exec> Einen Speicherbereich in eine Floppy-Disk-Datei speichern.
FD2T <name> oder <Dateinr.> Eine Datei von Floppy-Disk auf Band kopieren.
T2FD Von Band laden und auf Floppy-Disk speichern.
f Den originalen Floppy-AFI-Bootcode bei 0xF000 ausfuehren.
H Hilfebildschirm anzeigen (seitenweise, Leertaste zum Fortfahren).
IC (R) Seitenweise Verzeichnisliste der Dateien auf dem aktiven SD-Kartenlaufwerk. Jeder Eintrag zeigt eine Hex-Dateinummer und den Dateinamen.
IN <port>[,<port>…] Einen oder mehrere I/O-Ports lesen. Jeder Port ist eine 2- oder 4-stellige Hex-Adresse. Werte werden als 2-stellige Hex-Werte, durch Leerzeichen getrennt, ausgegeben.
IR Seitenweise Verzeichnisliste der im Flash-ROM gespeicherten Programme.
J <address> Zur angegebenen Adresse springen (ausfuehren).
L | LT [<filename>] Eine Datei vom Band (CMT) laden und ausfuehren.
LTNX [<filename>] Eine Datei vom Band (CMT) laden, ohne sie auszufuehren.
LR <name> oder <Dateinr.> Ein Programm aus dem ROM nach Name oder Dateinummer laden und ausfuehren.
LRNX <name> oder <Dateinr.> Ein Programm aus dem ROM nach Name oder Dateinummer laden, ohne es auszufuehren.
LC (R) <name> oder <Dateinr.> Ein Programm von der SD-Karte laden und ausfuehren.
LCNX (R) <name> oder <Dateinr.> Ein Programm von der SD-Karte laden, ohne es auszufuehren.
M <address> Interaktiver Speichereditor ab <address>.
OUT <port>:<value>[,<port>:<value>…] Auf einen oder mehrere I/O-Ports schreiben. Jeder Port ist eine 2- oder 4-stellige Hex-Adresse, gefolgt von einem Doppelpunkt und einem 2-stelligen Hex-Wert.
P Einen Test am angeschlossenen Drucker ausfuehren.
R DRAM-Speichertest ausfuehren.
S | ST <start> <end> <exec> Einen Speicherbereich auf Band (CMT) speichern. Sie werden nach einem Dateinamen gefragt. Beispiel: S120020001203 speichert von 0x1200 bis 0x2000 mit Ausfuehrungsadresse 0x1203.
SC (R) <start> <end> <exec> Einen Speicherbereich auf dem aktiven SD-Kartenlaufwerk speichern. Sie werden nach einem Dateinamen gefragt.
SD2T (R) <name> oder <Dateinr.> Eine Datei von der SD-Karte auf Band im CMT kopieren.
T Den 8253-Timer testen.
T2SD (R) Ein Programm vom Band laden und auf das aktive SD-Kartenlaufwerk schreiben.
V Eine Bandaufnahme mit den aktuellen Daten im Speicher vergleichen.
X (R) Zur Hi-Load-ROM-Variante wechseln, sodass DRAM den Bereich 0x0000–0xCFFF umfasst.

Falls das Kuma 40/80-Spalten-Upgrade oder das Video Module installiert ist, schaltet die Eingabe von 4 in den 40-Spalten-Modus und 8 in den 80-Spalten-Modus. Im 80-Spalten-Modus zeigen die Verzeichnisbefehle (IC / IR) vier Spalten an.


Erweiterte Anwendungen

Die Sharp MZ-Serie ist als "Clean Machines" bekannt — fast keine Software befindet sich permanent im ROM; alles wird vom Band oder von der Floppy geladen. Die vorhandenen Anwendungen hatten daher keine Kenntnis des erweiterten Speichers, den RFS bietet, ausser dass sie schnell ueber den RFS-Monitor geladen werden koennen.
Um die Maschinen nuetzlicher zu machen, wurden wichtige Anwendungen aktualisiert, um RFS nativ zu nutzen, und der Microsoft BASIC-Interpreter wurde auf die Plattform portiert. CP/M 2.2 wurde ebenfalls ueber ein benutzerdefiniertes CBIOS realisiert, das RFS-Funktionen verwendet. Das CBIOS erkennt und liest nun auch originale (nicht konvertierte) MZ-80K CP/M-Disketten automatisch ueber die MZ80AFI-Floppy-Karte und bindet sie direkt als CP/M-Laufwerke C: und D: ein — Details siehe den Leitfaden CP/M fuer RFS.

Sharp BASIC SA-5510

Das originale Sharp SA-5510 BASIC wurde disassembliert und um RFS-faehige LOAD-, SAVE- und DIR-Befehle erweitert. Das Byte-Layout des Interpreters bleibt erhalten, sodass Programme, die auf bekannte feste Adressen angewiesen sind, weiterhin funktionieren. Erweiterungen werden ausserhalb des Haupt-Interpreter-Images angewendet.
Die erweiterte Version traegt den Namen SA-5510RFS auf dem ROM-Laufwerk und dem SD-Laufwerk. Beim Start verwendet sie das aktive SD-Laufwerk (Laufwerke 0–9) fuer alle Dateioperationen. Die Standard-LOAD- und SAVE-Syntax ist unveraendert; das Laufwerks-Praefix ist die einzige Ergaenzung.
Befehl Parameter Beschreibung
LOAD "TEST" Das aktive Laufwerk nach einem Programm namens TEST durchsuchen, laden und ausfuehren.
LOAD   Die naechste sequenzielle Datei vom aktiven Laufwerk laden. Wenn zuletzt Datei 5 geladen wurde, wird Datei 6 geladen.
LOAD "3:TEST" TEST von RFS-Laufwerk 3 laden und Laufwerk 3 als aktiv setzen.
LOAD "C:TEST" TEST von der internen Kassette (CMT) laden und CMT als aktives Laufwerk setzen.
SAVE "TEST" Eine vorhandene Datei namens TEST auf dem aktiven Laufwerk ueberschreiben oder neu erstellen. Auf CMT wird sofort an der aktuellen Bandposition geschrieben.
SAVE   Das aktuelle Programm unter einem automatisch generierten Namen DEFAULT<n> speichern, wobei <n> die aktuelle Sequenznummer ist.
SAVE "3:TEST" TEST auf RFS-Laufwerk 3 speichern/erstellen und Laufwerk 3 als aktiv setzen.
SAVE "C:TEST" Auf CMT mit dem Namen TEST speichern und CMT als aktiv setzen.
DIR   Das SD-Kartenverzeichnis fuer das aktive Laufwerk im RFS-Format anzeigen (Dateinummer + Dateiname).
DIR "3:" Das Verzeichnis auf Laufwerk 3 anzeigen und Laufwerk 3 als aktiv setzen.

Siehe SD-Karten-Organisation unten fuer das Standard-Laufwerkslayout.

Microsoft BASIC

Waehrend die meisten MZ-80A BASIC-Interpreter nur als Binaerdateien verfuegbar sind, hat Microsoft BASIC (NASCOM 4.7b) frei verfuegbaren Quellcode und eine grosse Bibliothek vorhandener Programme. RFS enthaelt eine portierte und erweiterte Version, die native RFS-Speicherung in drei Konfigurationen unterstuetzt, die der Zielhardware entsprechen:
  • MS-BASIC(MZ-80A) — fuer originale MZ-80A-Hardware, nur Kassettenspeicher.
  • MS-BASIC(RFS40) — RFS mit 40-Spalten-Anzeige; fuegt SD-Karten-, CLOAD-, CSAVE-, DIR-Befehle hinzu.
  • MS-BASIC(RFS80) — RFS mit 80-Spalten-Anzeige; fuegt SD-Karten-, CLOAD-, CSAVE-, DIR-Befehle hinzu.

Jede Variante erscheint auf dem RFS-ROM-Laufwerk und SD-Laufwerk. Den vollstaendigen Standard-Befehlssatz finden Sie im NASCOM Basic Manual. Die folgende Tabelle listet die fuer RFS hinzugefuegten Erweiterungen auf.

Befehl Parameter Version Beschreibung
CLOAD "<filename>" MZ-80A Ein tokenisiertes BASIC-Programm von Kassette laden.
CSAVE "<filename>" MZ-80A Das aktuelle BASIC-Programm im tokenisierten Format auf Kassette speichern.
CLOAD "[<drive>:]<filename>" RFS40, RFS80 Von Band oder SD-Karte laden. <drive> ist 0–9; <filename> ist ein 17-Zeichen-MZ-Name oder eine 2-stellige RFS-Hexnummer. Beispiel: CLOAD "8:13" oder CLOAD "8:othello".
CSAVE "[<drive>:]<filename>" RFS40, RFS80 Auf Band oder SD-Karte mit optionalem Laufwerks-Praefix speichern.
DIR "[<drive>:]" RFS40, RFS80 Inhalt des aktiven oder angegebenen RFS-Laufwerks anzeigen.
ANSITERM 0 = Aus, 1 = Ein Alle Den integrierten ANSI-Terminal-Prozessor aktivieren oder deaktivieren (Standard: ein). Dieser uebersetzt ANSI-Escape-Sequenzen in Bildschirmaktionen, sodass portable BASIC-Programme unveraendert laufen koennen. (Das Star Trek V2 BASIC-Programm verwendet ANSI-Escape-Sequenzen.)
NASCOM-Kassettenimage-Konverter
NASCOM BASIC-Programme werden haeufig als Kassettenimage-Dateien verteilt, die Band-Framing-Daten um tokenisiertes BASIC enthalten. Das mitgelieferte nasconv-Werkzeug entfernt das Band-Framing und baut den BASIC-Code in ein auf dem MZ-80A unter RFS ladbares Format um. Es bildet Token-Werte automatisch neu ab, da die RFS MS-BASIC-Erweiterung neue Token hinzufuegt, die die Tabelle verschieben.
nasconv v1.0

Required:
  -i | --image  <file>   Cassette image file to convert.
  -o | --output <file>   Output file for converted BASIC data.

Options:
  -l | --loadaddr <addr> MZ-80A BASIC start address.
  -n | --nasaddr  <addr> Original NASCOM BASIC start address.
  -h | --help            Show this help.
  -v | --verbose         Verbose output.

Example:
  nasconv --image 3dnc.cas --output 3dnc.bas \
          --nasaddr 0x10fa --loadaddr 0x4341

BASIC MZ-5Z008 (Quick Disk)

Das originale Sharp MZ-5Z008 Quick Disk BASIC wurde erweitert, um RFS-SD-Kartenspeicher und Netzwerk-Dateizugriff neben den nativen Floppy-Disk-, Quick-Disk- und Kassettengeraeten zu unterstuetzen. Die RFS-Version startet mit dem Titel "BASIC 5Z-008BRFS". Dieses BASIC laeuft auch auf dem MZ-1500 ueber die picoZ80 MZ-1500-Persona und bietet die gleiche Geraeteunterstuetzung einschliesslich NETx:-Netzwerkzugriff. Programme koennen ueber alle unterstuetzten Geraete geladen, gespeichert und aufgelistet werden, indem ein Geraete-Praefix im Dateinamen verwendet wird.
Befehl Parameter Beschreibung
LOAD "RFSx:filename" Ein BASIC-Programm vom RFS-SD-Kartenlaufwerk x laden (1–7, abgebildet auf SD-Laufwerke 4–10).
SAVE "RFSx:filename" Das aktuelle BASIC-Programm auf dem angegebenen RFS-SD-Kartenlaufwerk speichern.
DIR RFSx: Die Verzeichnisliste des angegebenen RFS-SD-Kartenlaufwerks anzeigen.
LOAD "FDx:filename" Ein BASIC-Programm vom Floppy-Disk-Laufwerk x laden.
SAVE "FDx:filename" Das aktuelle BASIC-Programm auf Floppy-Disk-Laufwerk x speichern.
DIR FDx: Die Floppy-Disk-Verzeichnisliste anzeigen.
LOAD "QDx:filename" Ein BASIC-Programm vom Quick Disk-Laufwerk x laden.
SAVE "QDx:filename" Das aktuelle BASIC-Programm auf Quick Disk-Laufwerk x speichern.
DIR QDx: Die Quick Disk-Verzeichnisliste anzeigen.
LOAD "NETx:filename" Ein BASIC-Programm vom Netzwerk-Dateiserver-Einheit x laden (1–7). Erfordert eine Celestite-Platine und netfs.py auf einem PC.
SAVE "NETx:filename" Das aktuelle BASIC-Programm auf Netzwerk-Dateiserver-Einheit x speichern.
DIR NETx: Die Verzeichnisliste vom Netzwerk-Dateiserver-Einheit x anzeigen.
LOAD "CMT:filename" Ein BASIC-Programm vom Kassettenband laden.
SAVE "CMT:filename" Das aktuelle BASIC-Programm auf Kassettenband speichern.

BASIC MZ-2Z009E (Floppy Disk)

Das originale Sharp MZ-2Z009E Floppy Disk BASIC wurde erweitert, um RFS-SD-Kartenspeicher neben den nativen Floppy-Disk- und Quick-Disk-Geraeten zu unterstuetzen. Die RFS-Version startet mit dem Titel "BASIC 2Z-009ERFS". Programme koennen ueber alle unterstuetzten Geraete geladen, gespeichert und aufgelistet werden, indem ein Geraete-Praefix im Dateinamen verwendet wird.
Befehl Parameter Beschreibung
LOAD "RFSx:filename" Ein BASIC-Programm vom RFS-SD-Kartenlaufwerk x laden (1–7, abgebildet auf SD-Laufwerke 4–10).
SAVE "RFSx:filename" Das aktuelle BASIC-Programm auf dem angegebenen RFS-SD-Kartenlaufwerk speichern.
DIR RFSx: Die Verzeichnisliste des angegebenen RFS-SD-Kartenlaufwerks anzeigen.
LOAD "FDx:filename" Ein BASIC-Programm vom Floppy-Disk-Laufwerk x laden.
SAVE "FDx:filename" Das aktuelle BASIC-Programm auf Floppy-Disk-Laufwerk x speichern.
DIR FDx: Die Floppy-Disk-Verzeichnisliste anzeigen.
LOAD "QDx:filename" Ein BASIC-Programm vom Quick Disk-Laufwerk x laden.
SAVE "QDx:filename" Das aktuelle BASIC-Programm auf Quick Disk-Laufwerk x speichern.
DIR QDx: Die Quick Disk-Verzeichnisliste anzeigen.

Software-Architektur

Der User-ROM-Bereich bei 0xE800 ist in 2 KB-Baenke unterteilt, von denen jede eine Kopie des Bank-Switching-Stubs enthaelt, sodass jede Bank Code in jeder anderen Bank aufrufen kann, ohne den Ausfuehrungsfluss zu stoeren. RFS belegt 12 User-ROM-Baenke (0–11, 24 KB); weitere 4 Baenke (12–15) enthalten das CP/M CBIOS. Der Monitor-ROM-Bereich bei 0xC000 / 0xF000 ist in 16 × 4 KB-Seiten unterteilt; drei davon (Baenke 6, 7 und 9) sind RFS gewidmet und enthalten die Z80-Assembler/Disassembler-Opcode-Tabellen und Meldungstexte. Zusammen bietet der Banked-ROM 32 KB User-ROM und 64 KB Monitor-ROM Programmspeicher, ohne RAM zu verbrauchen.
Die folgende Tabelle listet jedes Quellmodul, seine Ziel-ROM, Bank und Funktion auf:
Modul Ziel-ROM Groesse Bank Beschreibung
rfs.asm User 2 KB 0 Primaerer RFS-Einstiegspunkt, Befehlsverteiler und Befehlstabelle. Enthaelt die Bank-Switching-Infrastruktur, die von allen Baenken gemeinsam genutzt wird.
rfs_bank1.asm User 2 KB 1 Floppy-Disk-Controller (FDC)-Funktionen. Verarbeitet Laufwerksauswahl, Boot, Floppy-Kopie (FC), Floppy-zu-Band (FD2T) und Band-zu-Floppy (T2FD).
rfs_bank2.asm User 2 KB 2 SD-Karten-Controller. SPI-Treiber, SD-Karten-Initialisierung, SDCFS-Verzeichnis und Datei-Lese/Schreib-Operationen.
rfs_bank3.asm User 2 KB 3 Monitor-Speicher-Dienstprogramme: Hex-Dump, Speichereditor, Speicherkopie, SD-Karten-Datei-Dump (DUC), I/O-Port-Lesen/Schreiben (IN / OUT), Band-SD-Kopie (T2SD / SD2T), Druckertest.
rfs_bank4.asm User 2 KB 4 CMT (Kassetten)-Controller: Bandladen, Speichern und Verifizieren.
rfs_bank5.asm User 2 KB 5 Allgemeine Hilfsfunktionen: formatierte Ausgabe, String-Routinen und gemeinsam genutzter Hilfs-Code.
rfs_bank6.asm User 2 KB 6 Z80-Assembler/Disassembler Opcode-Tabelle 1, PRINTMSG-Funktion und Meldungstext-Infrastruktur.
rfs_bank7.asm User 2 KB 7 Z80-Assembler/Disassembler Opcode-Tabelle 2, Z80-Disassembler (DASM), DRAM-Speichertest und 8253-Timer-Test.
rfs_bank8.asm User 2 KB 8 Z80 interaktiver Assembler (ASM).
rfs_bank9.asm User 2 KB 9 ROM-Verzeichnis, Dateisuche, Lade- und Druckfunktionen (von Bank 0 verschoben, um Platz freizumachen).
rfs_bank10.asm User 2 KB 10 Reserviert / frei.
rfs_bank11.asm User 2 KB 11 Hilfebildschirm.
cbios_bank1.asm User 2 KB 12 CP/M CBIOS: Audiofunktionen, RTC, Tastatur und Low-Level-Dienstprogramme.
cbios_bank2.asm User 2 KB 13 CP/M CBIOS: Bildschirmtreiber und ANSI-Terminal-Emulation.
cbios_bank3.asm User 2 KB 14 CP/M CBIOS: SD-Karten-Treiber (stellt CP/M-Laufwerke A:–G: bereit).
cbios_bank4.asm User 2 KB 15 CP/M CBIOS: Floppy-Disk-Controller.
monitor_sa1510.asm Monitor 4 KB 0 Originale SA-1510 Monitor-ROM (40-Spalten).
monitor_80c_sa1510.asm Monitor 4 KB 1 SA-1510-Monitor fuer 80-Spalten-Anzeige angepasst.
cbios.asm Monitor 4 KB 2 CP/M 2.2 CBIOS-Kernel (wird beim CP/M-Boot nach 0xC000–0xCFFF geladen).
rfs_mrom.asm Monitor 4 KB 3 RFS Monitor-ROM-Dienstprogramme. Da Code, der aus dem User-ROM ausgefuehrt wird, sich nicht selbst umschalten kann, um den restlichen ROM zu scannen, laufen diese Routinen aus Monitor-ROM Bank 3, um in den User-ROM-Flash-RAMs gespeicherte MZF-Dateien zu scannen und zu laden.
monitor_1z-013a.asm Monitor 4 KB 4 MZ-1Z-013A Monitor-ROM (MZ-700 / MZ-1200 Variante).
monitor_80c_1z-013a.asm Monitor 4 KB 5 MZ-1Z-013A-Monitor fuer 80-Spalten-Anzeige angepasst.
rfs_mrom_bank6.asm Monitor 4 KB 6 Z80-Assembler/Disassembler Opcode-Tabelle 1 (MROM-Kopie).
rfs_mrom_bank7.asm Monitor 4 KB 7 Z80-Assembler/Disassembler Opcode-Tabelle 2 (MROM-Kopie).
ipl.asm Monitor 4 KB 8 Initial Program Loader.
rfs_mrom_bank9.asm Monitor 4 KB 9 RFS-Meldungstexte-Repository.

CP/M 2.2 wird mit 47 KB nutzbarem Programm-RAM unterstuetzt. Nur CCP und BDOS befinden sich im RAM (und koennen von Anwendungen ueberschrieben werden); das CBIOS selbst residiert in Monitor-ROM Bank 2 und User-ROM Baenken 12–15 und verbraucht ueberhaupt kein Programm-RAM.

Die Monitor-ROM erzeugt ausserdem mehrere weitere Monitor-Varianten, die gleichzeitig gebaut werden: ein Standard-SA-1510, ein 80-Spalten-SA-1510, eine Kuma-80-Version (ausgewaehlt ueber das KUMA80_ENA-Flag in rfs_definitions.asm) sowie Hi-Load-Varianten von SA-1510 und 80-Spalten-SA-1510, die verwendet werden, wenn DRAM den gesamten Bereich 0x0000–0xCFFF fuellen muss.

Build-System

RFS baut auf **Linux** (Debian / Ubuntu), **macOS** und **Windows** (ueber WSL2). Der Bau von RFS umfasst das Assemblieren des Z80-Quellcodes, das Verpacken der ROM-Images und das Erstellen von SD-Karten-Images. Die Toolchain ist fast vollstaendig im Repository enthalten.

Der empfohlene Weg, RFS zu bauen, ist das automatisierte Setup-Skript fuer Ihre Plattform (siehe Automatisiertes Setup und Build unten) — es installiert die wenigen benoetigten externen Werkzeuge, holt die Inhalte, bereitet die Umgebung vor und kann den ersten Build fuer Sie ausfuehren, ohne dass tiefgehende Kenntnisse der Werkzeuge oder Konfiguration erforderlich sind. Die manuellen Schritte weiter unten sind fuer fortgeschrittene Benutzer und Teil-Builds gedacht.

Voraussetzungen

Werkzeug Hinweise
Java (JRE 8+) Erforderlich zum Ausfuehren des GLASS Z80-Assemblers. java muss im PATH sein.
bash Alle Build-Skripte sind bash-Skripte.
perl Erforderlich fuer mzftool.pl.
gcc / make Erforderlich zum Kompilieren von cpmtools aus dem Quellcode (erfolgt automatisch beim ersten Build).
dd, cat, stat Standard-Linux-Dienstprogramme, die von den Verpackungsskripten verwendet werden.

Der GLASS Z80-Assembler (glass.jar) ist im Verzeichnis tools/ enthalten — keine separate Installation erforderlich.

Automatisiertes Setup und Build (empfohlen)

Der empfohlene Weg, RFS zu bauen, ist das automatisierte Setup-Skript fuer Ihre Plattform. Es prueft und installiert die Voraussetzungen, klont das Repository (falls Sie sich nicht bereits in einem Checkout befinden), laedt die Inhalts-Images herunter, schreibt die Umgebungsdatei und bietet an, den ersten Build auszufuehren — alles interaktiv, mit sinnvollen Standardwerten, die Sie durch Druecken von Enter uebernehmen koennen. Jedes Skript ist eigenstaendig: Kopieren Sie nur die einzelne Datei fuer Ihre Plattform und fuehren Sie sie aus.

macOS / Linux / WSL — setup_RFS.sh

chmod +x setup_RFS.sh
./setup_RFS.sh

Windows 10 / 11 — setup_RFS_windows_native.ps1 (empfohlen — nativ, kein WSL). In einer PowerShell-Eingabeaufforderung:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows_native.ps1

Das native Skript verwendet winget, um Git for Windows (das bash, coreutils, perl und curl bereitstellt) und eine Temurin JRE (Java, fuer den GLASS-Assembler) zu installieren, klont das Repository, holt das Inhaltspaket und fuehrt ./build.sh ueber Git Bash aus — ohne WSL, Docker oder Neustart. Der RFS-Build benoetigt unter Windows keinen C-Compiler, da zwei vorgefertigte Host-Werkzeuge (tools/cpmcp.exe und tools/sdtool.exe) mitgeliefert werden.

Windows 10 / 11 — setup_RFS_windows.ps1 (Alternative — baut innerhalb von WSL2 / Ubuntu). In einer Administrator-PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows.ps1

Diese WSL-Variante installiert WSL2 + Ubuntu, falls sie noch nicht vorhanden sind (dies erfordert einen einmaligen Neustart — neu starten, Ubuntu einmal ueber das Startmenue starten, um Ihren Linux-Benutzernamen/Ihr Passwort anzulegen, dann das Skript erneut ausfuehren). Anschliessend fuehrt es setup_RFS.sh innerhalb von Ubuntu aus. Bevorzugen Sie das native Skript oben, sofern Sie nicht ausdruecklich eine WSL-Umgebung wuenschen.

Fragen, die das Setup stellt, und was zu tun ist

Jede Eingabeaufforderung hat einen sicheren Standardwert in Klammern — der Grossbuchstabe ist der Standard, sodass Druecken von Enter ihn uebernimmt. Die Eingabeaufforderungen erscheinen in dieser Reihenfolge:

Nur Windows (in PowerShell, bevor das Linux-Setup laeuft):

Eingabeaufforderung Standard Was zu tun ist
Continue anyway? [y/N] (nur, wenn nicht als Administrator gestartet) Nein Antworten Sie mit N, oeffnen Sie PowerShell erneut ueber Als Administrator ausfuehren und beginnen Sie von vorn — die Installation von WSL erfordert Administratorrechte.
Install WSL2 + Ubuntu now? [y/N] (nur, wenn WSL / Ubuntu fehlt) Nein Antworten Sie mit y. Windows installiert WSL2 + Ubuntu und fordert Sie dann zum Neustart auf. Starten Sie nach dem Neustart Ubuntu einmal, um Ihren Linux-Benutzer anzulegen, und fuehren Sie das Skript erneut aus.
Repo URL [https://git.eaw.app/eaw/RFS.git] oeffentliches Repo Druecken Sie Enter fuer das oeffentliche RFS-Repository oder fuegen Sie eine andere URL ein (z. B. das private Entwicklungs-Repo).

macOS / Linux / WSL (in der Linux-/Ubuntu-Shell):

Eingabeaufforderung Standard Was zu tun ist
Install now? [Y/n] (nur, wenn Werkzeuge fehlen) Ja Druecken Sie Enter. Das Skript installiert die fehlenden Werkzeuge mit Ihrem Paketmanager (apt / dnf / pacman oder Homebrew unter macOS); Sie werden moeglicherweise nach Ihrem sudo-Passwort gefragt. Unter macOS loest es zunaechst den Installer fuer die Xcode Command Line Tools aus und benoetigt Homebrew.
Repo URL [https://git.eaw.app/eaw/RFS.git]: (nur, wenn nicht bereits in einem Checkout) oeffentliches Repo Druecken Sie Enter fuer das oeffentliche Repo oder fuegen Sie die private Repo-URL ein. (Unter Windows uebersprungen — der PowerShell-Schritt hat Ihre Wahl bereits weitergegeben.)
Install directory [~/RFS]: (nur beim Klonen) ~/RFS Druecken Sie Enter, um nach ~/RFS zu klonen, oder geben Sie einen anderen Pfad ein.
Remove <dir> and re-clone …? [y/N] (nur, wenn dieses Verzeichnis bereits ein anderes Repo enthaelt) Nein Antworten Sie nur mit y, wenn Sie sicher sind, dass Sie dieses Verzeichnis loeschen und neu klonen moechten; andernfalls N und waehlen Sie ein anderes Installationsverzeichnis.
Download and install them now? [Y/n] (Inhalts-Images, ~110 MB) Ja Druecken Sie Enter, um die MZF-/Disk-/CP/M-/BASIC-Inhalte aus RFS_Files.zip herunterzuladen — fuer einen vollstaendigen Build erforderlich. Antworten Sie nur mit n, wenn Sie sie bereits ueber einen parallelen SharpSoft-Checkout haben.
Run the first build now (./build.sh -m …)? [Y/n] Ja Druecken Sie Enter, um sofort zu bauen — dies verifiziert die gesamte Umgebung. Der erste Build verwendet -m, um die MZF-Quellen in MZB/ zu verarbeiten, und ist langsamer als spaetere Builds.

Sie werden moeglicherweise auch nach Ihrem sudo-Passwort (Paketinstallation) und Ihren git-Anmeldedaten gefragt, falls Sie ein privates Repository gewaehlt haben.

Nach dem Setup — erneut bauen

Wenn das Setup abgeschlossen ist, gibt es den Checkout-Pfad aus. Um spaeter neu zu bauen:

cd ~/RFS                 # oder das von Ihnen gewaehlte Verzeichnis
source ./rfs_env.sh      # nur macOS (fuegt GNU coreutils + die JRE zum PATH hinzu); anderswo harmlos
./build.sh -m            # ERSTER Build: MZF -> MZB verarbeiten, dann alles bauen
./build.sh               # spaetere Builds (-m nur erneut, wenn sich MZF-Quellen aendern)
./build.sh -h            # Varianten und Optionen auflisten

Unter Windows oeffnen Sie das Ubuntu-Terminal (Startmenue → “Ubuntu” oder wsl in PowerShell eingeben) und fuehren dieselben Befehle in ~/RFS aus. Die ROM-Images erscheinen in ~/RFS/roms.

build.sh baut standardmaessig alle Hardware-Varianten; uebergeben Sie einen oder mehrere Variantennamen (sfd700, romdisk_mz80a, picoz80_mz80a, picoz80_kuma, picoz80_mz700, picoz80_mz1500, picoz80_mz80k oder all), um nur diese zu bauen. Die Auswahl einer Variante konfiguriert alles automatisch — keine Quellcode-Aenderungen noetig. Optionen: -m (MZF verarbeiten), -s (gemeinsame Assemblierung ueberspringen), -c (clean), -v (ausfuehrlich), -h (Hilfe).

Fortgeschritten: Build-Ziel-Flags

Fuer die meisten Builds benoetigen Sie diesen Abschnitt nicht — die Auswahl einer Variante mit build.sh (oben) konfiguriert alles automatisch. Der zugrunde liegende Mechanismus ist ein Satz von Flags in asm/include/rfs_definitions.asm; genau eines der folgenden wird fuer ein bestimmtes Ziel auf 1 gesetzt (alle anderen 0), was build.sh pro Variante fuer Sie erledigt. Bearbeiten Sie sie nur fuer eine benutzerdefinierte Konfiguration von Hand:

Flag Ziel Beschreibung
BUILD_ROMDISK RomDisk-Karte MZ-80A mit 4x512 KB Flash-RAM + SDXC-Kartenerweiterung.
BUILD_SFD700 SFD-700 Sharp Floppy-Disk-Schnittstellenkarte. Keine SD-Karte.
BUILD_PICOZ80 picoZ80 Raspberry Pi Pico-basierte Z80-Ersatzplatine.

Zusaetzliche optionale Flags in derselben Datei:

Flag Standard Beschreibung
KUMA80_ENA 0 Auf 1 setzen, wenn das Kuma 40/80-Spalten-Upgrade installiert ist.
VIDEOMODULE_ENA 0 Auf 1 setzen, wenn das 40/80-Spalten-Farb-Video-Module installiert ist.
FUSIONX_ENA 0 Auf 1 setzen, wenn RFS auf der tranZPUter FusionX-Platine laeuft.
HW_SPI_ENA 1 Hardware-SPI (RomDisk v2+ PCB). Fuer alle aktuellen Platinen auf 1 lassen.
ENADEBUG 0 Assembly-Zeitliche Debug-Ausgabe aktivieren.

Manueller Build und was build.sh tut

Wenn Sie das Setup-Skript nicht verwenden moechten (oder einen CI-Build skripten), koennen Sie direkt klonen und bauen — Sie muessen die Voraussetzungen weiterhin installiert haben und bei einem frischen, eigenstaendigen Klon die Inhalts-Images selbst holen (oder setup_RFS.sh ausfuehren, das dies fuer Sie erledigt):

git clone --recurse-submodules https://git.eaw.app/eaw/RFS.git
cd RFS

# Vollstaendiger Build (assembliert alle ROMs, verpackt ROM-Images, erstellt SD-Karten-Image):
./build.sh

# Vollstaendiger Build einschliesslich erneuter Verarbeitung aller MZF-Anwendungsdateien
# (nur erforderlich, wenn sich MZF-Quelldateien in MZF/ geaendert haben):
./build.sh -m

build.sh fuehrt die folgenden Schritte der Reihe nach aus:

  1. Kompiliert cpmtools aus dem Quellcode (nur beim ersten Lauf) und fuegt das Ergebnis zum PATH hinzu.
  2. tools/assemble_rfs.sh — assembliert rfs.asm und rfs_mrom.asm zu roms/rfs.rom und roms/rfs_mrom.rom.
  3. tools/assemble_cpm.sh — assembliert das CP/M 2.2 CBIOS (cbios.asm, cbios_bank1–4.asm, cpm22.asm) zu roms/*.rom.
  4. tools/assemble_roms.sh — assembliert alle Monitor-Varianten (SA-1510, 80c SA-1510, 1Z-013A, Hi-Load-Varianten, Kuma-Version, IPL) und MZF-Anwendungsdateien (SA-5510, MS-BASIC-Varianten usw.) in roms/ und MZB/.
  5. tools/make_roms.sh — verpackt die assemblierten ROMs und MZF-Anwendungen in Flash-ROM-Images (siehe Ausgabedateien unten).
  6. tools/make_cpmdisks.sh — erstellt CP/M-Disk-Images in RAW- und CPC Extended Disk-Format fuer jedes der vorbelegten CP/M-Laufwerkssets.
  7. tools/make_sdcard.sh — stellt das endgueltige SD-Karten-Image aus 10 RFS-Laufwerks-Images und 7 CP/M-Disk-Images zusammen.

Die einzelnen Skripte koennen auch direkt aus dem Verzeichnis tools/ fuer Teil-Builds ausgefuehrt werden.

Ausgabedateien

Nach einem erfolgreichen Build enthaelt das Verzeichnis roms/:

Datei Flash-Chip Beschreibung
MROM_ROMDISK_256.bin SST39SF040 (Monitor ROM) Monitor-ROM-Image fuer den RomDisk-Build. Enthaelt SA-1510, 80c SA-1510, CP/M CBIOS, RFS-MROM-Dienstprogramme, 1Z-013A-Monitore, Assembler/Disassembler-Opcode-Tabellen, IPL und Meldungstexte ueber 16x4 KB Seiten.
MROM_PICOZ80_256.bin SST39SF040 (Monitor ROM) Monitor-ROM-Image fuer den picoZ80-Build (Bank-Reihenfolge unterscheidet sich von ROMDISK).
USER_ROM_256.bin SST39SF040 (User ROM 1) User ROM 1: RFS-Baenke 0–11, CP/M CBIOS-Baenke 12–15, CP/M 2.2-Image und ein gepackter Satz von MZF-Anwendungen.
USER_ROM_II_256.bin SST39SF040 (User ROM 2) User ROM 2: zusaetzliche MZF-Anwendungen.
USER_ROM_III_256.bin SST39SF040 (User ROM 3) User ROM 3: zusaetzliche MZF-Anwendungen.
SFD700_256.bin SST39SF040 SFD-700-ROM: MZ-80A AFI Floppy-ROM (0x00000–0x00FFF), MZ-700 Floppy-ROM (0x01000–0x01FFF), RFS-Firmware (0x02000–0x0BFFF), dann ROM-Dateisystem.
SHARP_MZ80A_RFS_IMAGE_0–9.img SD-Karte Zehn RFS-Laufwerks-Images (eines pro Laufwerk 0–9).
SHARP_MZ80A_RFS_CPM_IMAGE_1.img SD-Karte Kombiniertes SD-Karten-Image: 10 RFS-Laufwerke gefolgt von 7 CP/M-Disk-Images. Direkt auf eine SD-Karte kopieren.

Programmierung der Flash-ROMs

Die ROM-Images werden mit einem TL866 oder kompatiblen Programmer auf SST39SF040 (512 KB) Flash-RAM-Chips geschrieben:

# Monitor ROM (RomDisk-Build):
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/MROM_ROMDISK_256.bin

# User ROM 1:
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/USER_ROM_256.bin

# SFD-700:
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/SFD700_256.bin

Beschreiben des SD-Karten-Images

Schreiben Sie das kombinierte SD-Karten-Image direkt mit dd auf die SD-Karte:

# Ersetzen Sie /dev/sdX durch Ihren SD-Karten-Geraeteknoten:
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512
sync

Keine Partitionierung erforderlich. Das SDCFS-Image beginnt bei Sektor 0. Setzen Sie die SD-Karte in den Leser auf der RomDisk-Platine ein.

Anwendungen zu den ROM-Laufwerken hinzufuegen

Anwendungen, die in den Flash-ROM-Laufwerken gespeichert werden sollen, muessen zuerst vom MZF-Format in sektorausgerichtete Binaer-Images konvertiert werden. Platzieren Sie die MZF-Dateien im entsprechenden Unterverzeichnis unter MZF/ und fuehren Sie aus:

tools/processMZFfiles.sh

Dies konvertiert alle MZF-Dateien in 128-Byte- und 256-Byte-sektorausgerichtete Images in MZB/. Sie werden dann automatisch von make_roms.sh erfasst.

Um auszuwaehlen, welche Anwendungen in jedem ROM-Laufwerk erscheinen, bearbeiten Sie tools/make_roms.sh und passen Sie die addMZFToROMImageList-Aufrufe an. Jeder Aufruf nimmt vier Flags (in ROMDISK-Build einschliessen, in SFD700-Build einschliessen, in picoZ80-Build einschliessen, reserviert) und den Pfad zum sektorierten Binaer:

# Format:
#   addMZFToROMImageList  <ROMDISK>  <SFD700>  <picoZ80>  <reserved>  "<MZB path>"
#
# Beispiel — in allen Builds einschliessen:
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"

# Beispiel — nur RomDisk und picoZ80:
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/MZ-80A/defender.${SECTORSIZE}.bin"

Anwendungen werden in der aufgefuehrten Reihenfolge gepackt, wobei zuerst User ROM 1 gefuellt wird, dann User ROM 2 und 3. Platzieren Sie Anwendungen, die Sie immer verfuegbar haben moechten, am Anfang der Liste.

Build-Werkzeuge Referenz

Skript / Werkzeug Beschreibung
build.sh Build-Skript auf oberster Ebene. Fuehrt alle nachfolgenden Schritte der Reihe nach aus. Uebergeben Sie -m, um auch MZF-Anwendungsdateien erneut zu verarbeiten.
tools/assemble_rfs.sh Assembliert rfs.asm und rfs_mrom.asmroms/rfs.rom, roms/rfs_mrom.rom.
tools/assemble_cpm.sh Assembliert das CP/M 2.2 CBIOS und den Kernel → roms/*.rom.
tools/assemble_roms.sh Assembliert alle Monitor-ROM-Varianten und MZF-Anwendungsbinaerdateien. Verarbeitet die vier MS-BASIC-Build-Varianten ueber eine BUILD_VERSION EQU, die vor jedem Durchlauf in include/msbasic_buildversion.asm geschrieben wird.
tools/make_roms.sh Verpackt ROM- und MZF-Binaerdateien in Flash-ROM-Images fuer ROMDISK-, SFD700- und picoZ80-Ziele.
tools/make_cpmdisks.sh Erstellt CP/M-Disk-Images in RAW-Format (fuer SD-Karte) und CPC Extended Disk-Format (fuer Floppy-Emulatoren oder physisches Kopieren).
tools/make_sdcard.sh Kombiniert RFS-Laufwerks-Images und CP/M-Disk-Images zu einem einzigen SD-Karten-Image.
tools/processMZFfiles.sh Konvertiert MZF-Anwendungsdateien in 128-Byte- und 256-Byte-sektorausgerichtete Images in MZB/.
tools/mzftool.pl Perl-Skript zum Erstellen, Extrahieren und Inspizieren von MZF-Format-Images.
tools/sdtool Binaer-Werkzeug, das die RFS-SD-Karten-Verzeichnisstruktur aufbaut und mit MZF-/Binaer-Anwendungen befuellt.
tools/nasconv Konvertiert NASCOM-Kassettenimage-Dateien in das MZ-80A-ladbare Format und bildet MS-BASIC-Token-Werte nach Bedarf neu ab.
tools/glass.jar Mitgelieferter GLASS Z80-Assembler (Java). Wird von allen drei Assembly-Skripten verwendet.
tools/MZFD/MZFDTool Erstellt und verwaltet Raw-Floppy-Disk-Images fuer den MZ-700 FDC. Befehle: format (leeres Image erstellen), dir (Verzeichnis auflisten), add (MZF-Datei hinzufuegen), extract (Datei in MZF extrahieren), boot (Boot-Programm festlegen). Standard-Image: MZ700.img.
tools/MZQD/MZQDTool Erstellt und verwaltet Quick Disk (QD)-Images fuer den MZ-700. Befehle: format (leeres Image erstellen), dir (Verzeichnis auflisten), add (MZF-Datei hinzufuegen). Standard-Image: MZ700.qd.
cpmtools/ cpmtools-Quellcode (cpmcp, cpmls, cpmrm usw.). Wird automatisch beim ersten Build kompiliert und in tools/ installiert.

SD Card Filing System

Anstatt ein FAT-Dateisystem zu implementieren (was fuer die 2-KB- und 4-KB-ROM-Baenke zu gross waere), verwendet RFS ein speziell entwickeltes einfaches Dateisystem namens SD Card Filing System (SDCFS). Die ersten v1-Platinen verwendeten eine Software-Bit-Bang-SPI-Schnittstelle; die v2.0-Platine fuegte Hardware-SPI hinzu, was ROM-Zugriffsgeschwindigkeiten ermoeglicht.

SDCFS-Struktur

Jedes SDCFS-Image enthaelt ein Verzeichnis mit 32-Byte-Eintraegen fuer bis zu 256 Dateien, gefolgt von 256 Dateibloecken fester Groesse. Zehn SDCFS-Images (Laufwerke 0–9) werden am Anfang der SD-Karte gespeichert. Der Rest der SD-Karte enthaelt CP/M-Disk-Images.
Jeder Verzeichniseintrag basiert auf dem Standard-MZF-Header:
FLAG1 FLAG2 FILE NAME START SECTOR SIZE LOAD ADDR EXEC ADDR RESERVED
1 Byte 1 Byte 17 Bytes 4 Bytes 2 Bytes 2 Bytes 2 Bytes 3 Bytes
Feld Beschreibung
FLAG1 Bit 7 = 1: gueltiger Eintrag. Bit 7 = 0: inaktiv / geloescht.
FLAG2 MZF-Ausfuehrungstyp (0x01 = Binaerprogramm).
FILE NAME Standard 17-Zeichen MZF-Dateiname.
START SECTOR Erster Sektor innerhalb dieses Laufwerks-Images, an dem die Dateidaten beginnen.
SIZE Tatsaechliche Byte-Anzahl der Dateidaten.
LOAD ADDR RAM-Adresse, an die die Dateidaten geladen werden.
EXEC ADDR Automatische Ausfuehrungsadresse fuer Binaerdateien.
RESERVED Derzeit nicht verwendet.

Jeder Dateiblock ist fest 64 KB gross, entsprechend der maximalen CMT (Band)-Blockgroesse. Dies haelt das Layout einfach und ermoeglicht es, Dateien genau so zu lesen oder zu schreiben, als waeren sie auf Band, was transparente SD-CMT-Kopieroperationen ermoeglicht.

SD-Karten-Layout

ADDRESS    SECTOR   CONTENT
00000000   00000  +-------------------------------------------------------------+
                  |  RFS DRIVE 0                                                |
00000000   00000  |  Directory entry 000 (32 bytes)                             |
                  |  ...                                                        |
00001FE0   0000F  |  Directory entry 255 (32 bytes)                             |
00002000   00010  |  File block 0     (64 KB)                                   |
                  |  ...                                                        |
00FF2000   7FF90  |  File block 255   (64 KB)                                   |
01001FFF   8000F  +-------------------------------------------------------------+
                  ...  (RFS-Laufwerke 1–8 folgen dem gleichen Muster)
09012000   48090  +-------------------------------------------------------------+
                  |  RFS DRIVE 9                                                |
0A013FFF   5009F  +-------------------------------------------------------------+
                  ... Auffuellung bis zur 256 MB-Grenze ...
10000000   80000  +-------------------------------------------------------------+
                  |  CP/M DISK IMAGE 0   (16 MB, 32 sectors x 1024 tracks)     |
11000000   88000  +-------------------------------------------------------------+
                  |  CP/M DISK IMAGE 1                                          |
                  |  ...                                                        |
XX000000          |  CP/M DISK IMAGE n                                          |
                  +-------------------------------------------------------------+

SD-Karten-Organisation

Das von den Repository-Werkzeugen erstellte SD-Karten-Image ist wie folgt vorbelegt:

RFS-Laufwerk Inhalt
0 Allgemeine und MZ-80A Maschinencode-Programme.
1 MZ-80K Maschinencode-Programme.
2 MZ-700 Maschinencode-Programme.
3 MZ-800 / MZ-1500 Maschinencode-Programme.
4 MZ-80B / MZ-2000 Maschinencode-Programme.
5 BASIC-Programme, Typ 2 (MZ-80A).
6 BASIC-Programme, Typ 2 (MZ-80K).
7 BASIC-Programme, Typ 5 (MZ-700 / MZ-800).
8 Sonstige Programme.
9 Sonstige Programme.
CP/M-Laufwerk User# Disk-Image Inhalt
0 0 CPM00_SYSTEM CP/M-Systemprogramme
  1 CPM01_TURBOP Turbo Pascal
  2 CPM02_HI_C Hi-Soft C
  3 CPM03_FORTRAN80 Fortran 80
  4 CPM04_MBASIC Microsoft BASIC 80/85
  5–7 CPM05–07_COBOL80 Cobol v1.3, v2.0, Cobol 80
  8 CPM08_Z80FORTH Z80 Forth
  9 CPM09_CPMTEX CP/M TeX
  10 CPM10_DISKUTILFUNC5 Disk-Dienstprogramme
  11 CPM11_MAC80 Macro Assembler 80
  12 CPM29_ZSID_v14 ZSID Debugger
  13–14 CPM32–33_ZCPR3 ZCPR3 CCP-Erweiterung
1 0 CPM12_PASCALMTP_v561 Pascal v5.61
  1 CPM26_TPASCAL_v300a Turbo Pascal v3.00a
  2–11 CPM13–22_MTPUG_01–10 Pascal User Group Disks 01–10
2 0–2 CPM23–25_PLI / PLI80 PLI Compiler, PLI 80 v1.3, v1.4
  3 CPM28_PLM80 PLM 80
  4–6 CPM27,30,31_WORDSTAR WordStar v3.0, v3.3, v4.0
3–6 0–9 CPM_MC_C0–F9 Grant Searle CP/M-Sammlung Disks C0–F9

Handbuecher

Detaillierte Dokumentation fuer das Rom Filing System ist in drei separaten Handbuechern verfuegbar:
Handbuch Beschreibung
Benutzerhandbuch RFS beziehen, Monitorbefehlsreferenz, SD-Laufwerke verwenden, BASIC, CP/M und Fehlerbehebung
Technischer Leitfaden Hardware-Plattformen, Speicherarchitektur, Bank-Switching, SDCFS-Design, CP/M CBIOS und vollstaendige Build-System-Referenz
Entwicklerhandbuch Z80-Assembler-Einfuehrung, vollstaendige Quellmodul-Walkthroughs (einschliesslich Bank-Switching-Interna) und Anleitungen zum Hinzufuegen neuer Befehle und Hardware-Ziele

Danksagungen

Wenn eine Komponente auf einem Drittanbieter-Design basiert oder davon abgeleitet ist, ist der urspruengliche Copyright-Hinweis des Autors im entsprechenden Quelldatei-Header enthalten. Alle Drittanbieter-Software ist nach bestem Wissen Open Source und frei verwendbar. Sollte eine Komponente Lizenzbeschraenkungen unterliegen, wird sie entfernt und stattdessen ein geeigneter Link bereitgestellt.

Lizenzen

Dieses Design, Hardware und Software, ist unter der GNU Public Licence v3 lizenziert.

Keine kommerzielle Nutzung dieses Designs oder jeglicher Hardware-/Firmware-Komponente ohne ausdrueckliche Genehmigung des Autors. Diese Bedingung ueberwiegt alle durch die GNU GPL 3-Lizenz eingeraeumten Rechte.

Die GNU General Public License v3

Die in diesem Projekt als GPL v3 gekennzeichneten Quell- und Binaerdateien sind freie Software: Sie koennen sie unter den Bedingungen der GNU General Public License, wie sie von der Free Software Foundation veroeffentlicht wurde, weitergeben und/oder modifizieren, entweder gemaess Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren Version.

Die Quelldateien werden in der Hoffnung verteilt, dass sie nuetzlich sein werden, jedoch OHNE JEGLICHE GEWAEHRLEISTUNG; sogar ohne die stillschweigende Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License fuer weitere Details.

Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, siehe http://www.gnu.org/licenses/.