ROM-Dateisystem (RFS) — Benutzerhandbuch

RFS-Benutzerhandbuch

Das Rom Filing System (RFS) ist ein in Z80-Assembler geschriebenes Firmware-Paket, das einen Sharp MZ-80A (und kompatible Hardware) in einen modern wirkenden Retro-Computer verwandelt. Es ersetzt die originale Monitor- und User-ROM durch eine erweiterte Firmware, die ein SD-Karten-Dateisystem, CP/M 2.2-Boot, mehrere BASIC-Interpreter, einen integrierten Z80-Assembler und Disassembler sowie mehr als 30 neue Monitorbefehle hinzufuegt — waehrend die vertraute SA-1510 * Eingabeaufforderung und alle Originalbefehle erhalten bleiben.
Dieses Handbuch behandelt alles, was fuer die Installation und taegliche Nutzung von RFS benoetigt wird. Fuer Hardware-Architektur und Build-System-Details siehe den Technischen Leitfaden. Fuer Quellcode-Interna und Firmware-Entwicklung siehe das Entwicklerhandbuch.

Unterstuetzte Hardware

RFS unterstuetzt vier Hardware-Plattformen, die jeweils zur Kompilierzeit ausgewaehlt werden. Die resultierenden ROM-Images und der Funktionsumfang unterscheiden sich leicht zwischen den Zielen:
Plattform Beschreibung Hauptmerkmale
RomDisk-Karte Urspruengliches RFS-Ziel. Eine Platine, die in die MZ-80A-Erweiterung eingesetzt wird und die Monitor- und User-ROM-Sockel durch bis zu 4x512 KB Flash-RAM, 512 KB SRAM und einen SDXC-Kartenleser ersetzt. Voller Funktionsumfang: SD-Karte, alle Monitorbefehle, CP/M, BASIC-Varianten, Bandoperationen
SFD-700 Die SFD-700 mkII Floppy-Disk-Schnittstellenkarte. RFS belegt den Flash-ROM-Bereich der Karte. Floppy-Boot, Floppy-Verzeichnis, ROM-basierte Programme, Z80-Assembler/Disassembler; keine SD-Karten-Befehle
picoZ80 Die RP2350-basierte Z80-Ersatzplatine. RFS laeuft in deren emuliertem ROM-Bereich, unter der dem Host praesentierten Maschinen-Persona — MZ-80A oder, jetzt neu, der Sharp MZ-80K (der dieselben Sharp-Schnittstellenkarten wie der MZ-80A sowie seine native MZ-80FD/T3444M-Floppy verwenden kann). Voller Funktionsumfang, entsprechend RomDisk; auf der MZ-80A/MZ-80K-Persona mit einer MZ80AFI-Karte kann CP/M originale MZ-80K-Disks als C:/D: lesen
tranZPUter FusionX FPGA-basierte Z80-Erweiterungsplatine. RFS laeuft in deren Flash-ROM-Bereich. Voller Funktionsumfang
Befehle, die in der folgenden Monitorbefehlsreferenz mit (R) gekennzeichnet sind, sind nur im RomDisk-/picoZ80-Build vorhanden.

RFS beziehen

Vorgefertigte ROM-Images und SD-Karten-Images sind im Verzeichnis releases/ des Gitea-Repositories verfuegbar. Diese koennen direkt ohne Build-Werkzeuge programmiert werden. Wenn Sie aus dem Quellcode bauen moechten, ist der einfachste Weg das automatisierte Setup-Skript fuer Ihre Plattform: setup_RFS.sh (macOS / Linux / WSL), setup_RFS_windows_native.ps1 (Windows, nativ — kein WSL, empfohlen) oder setup_RFS_windows.ps1 (Windows ueber WSL2 / Ubuntu). Jedes ist eigenstaendig — kopieren Sie die eine Datei fuer Ihre Plattform und fuehren Sie sie aus; es installiert die benoetigten Werkzeuge, holt die Inhalte und kann den ersten Build fuer Sie ausfuehren, ohne dass tiefgehende Kenntnisse der Toolchain erforderlich sind. Den Schritt-fuer-Schritt-Ablauf (einschliesslich der Fragen, die jedes Skript stellt) finden Sie im Technischen Leitfaden — Build-System.
Fuer die RomDisk- und picoZ80-Builds werden folgende Dateien benoetigt:
  • MROM_ROMDISK_256.bin oder MROM_PICOZ80_256.bin — Monitor-ROM-Image (in den Monitor-ROM-Flash-Chip programmieren).
  • USER_ROM_256.bin, USER_ROM_II_256.bin, USER_ROM_III_256.bin — User-ROM-Images (in User-ROM-Flash-Chips 1–3 programmieren).
  • SHARP_MZ80A_RFS_CPM_IMAGE_1.img — SD-Karten-Image (mit dd auf eine Micro/Standard-SD-Karte schreiben).
Fuer den SFD-700-Build:
  • SFD700_256.bin — Kombiniertes SFD-700-ROM-Image (in den SFD-700 mkII Flash-ROM programmieren).

Programmierung der Flash-ROMs
ROM-Images werden mit einem TL866 II+ oder kompatiblen Programmer und dem minipro-Werkzeug auf SST39SF040 (512 KB) Flash-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 der SD-Karte
Schreiben Sie das kombinierte SD-Karten-Image direkt mit dd unter Linux auf die Karte. Keine Partitionierung erforderlich — das SDCFS-Image beginnt bei Sektor 0:
# 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

Erster Start

Nach dem Einsetzen der programmierten ROM-Chips und (bei RomDisk) der SD-Karte schalten Sie den Sharp MZ-80A ein. Das vertraute SA-1510-Anmeldebanner erscheint. Wenn RFS das SD-Karten-Dateisystem erfolgreich initialisiert hat, wird das Banner um "+ RFS" ergaenzt:
SHARP MZ-80A
Monitor SA-1510  + RFS

*
Das * ist die Monitoreingabeaufforderung. Alle originalen SA-1510-Befehle sind unveraendert verfuegbar. Geben Sie H ein, um einen paginierten Hilfebildschirm mit allen RFS-Befehlen anzuzeigen. Druecken Sie Leertaste, um durch die Seiten zu blaettern.
Wenn der Text + RFS fehlt, wurde die SD-Karte nicht erkannt — pruefen Sie, ob die Karte korrekt eingelegt, formatiert und das SDCFS-Image bei Sektor 0 enthaelt.

Monitorbefehlsreferenz

Der vollstaendige RFS-Befehlssatz ist unten aufgefuehrt. Befehle tragen (R), wenn sie nur im RomDisk-/picoZ80-Build vorhanden sind. Alle anderen Befehle sind in jeder Build verfuegbar.
Befehl Parameter Beschreibung
0 .. 9 (R) Das aktive RFS-SD-Kartenlaufwerk waehlen (0–9). Die gewaehlte Laufwerksnummer wird in der Eingabeaufforderung angezeigt.
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 Hex-Adresse in den Speicher eingeben. Leere Zeile mit Enter beendet den Assembler.
B Tastatur-Signalton ein- oder ausschalten.
BASIC Sharp BASIC SA-5510RFS auf dem aktiven SD-Laufwerk oder ROM suchen, laden und ausfuehren.
C [<byte>] Speicher von 0x1200 bis zum RAM-Ende mit 0x00 oder dem angegebenen 8-Bit-Hex-Wert initialisieren.
CP <src> <dst> <size> Einen Speicherblock kopieren. Alle 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>] Hex- und ASCII-Dump des Speichers von <addr> bis <addr2> (oder 20 Zeilen ohne Endadresse). Taste druecken fuer mehr, U fuer Seite zurueck, X zum Beenden. D ohne Adresse wiederholen, um ab der letzten Position fortzufahren.
DASM <addr> [<addr2>] Z80-Maschinencode ab <addr> disassemblieren.
DUC (R) [H\|T] <name> oder <file#> Inhalt einer SD-Karten-Datei ausgeben. Standard: Hex-Dump. DUCH: Hex mit MZF-Header-Info. DUCT: Textausgabe (nur druckbare ASCII-Zeichen).
EC (R) <name> oder <file#> 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. Liest den Bootsektor, laedt das Boot-Programm in den Speicher und fuehrt es aus.
FD [<drive>] Verzeichnisliste einer Floppy-Disk anzeigen. Optionale Laufwerksnummer waehlt Laufwerk 1–4 (Standard: 1). Zeigt Dateiname, Ladeadresse, Ausfuehrungsadresse und Dateigroesse fuer jede Datei.
FC <start> <end> <exec> Einen Speicherbereich in eine Floppy-Disk-Datei speichern. Sie werden nach Dateiname und Laufwerksnummer gefragt.
FD2T <name> oder <file#> Eine Datei von Floppy-Disk auf Kassettenband (CMT) kopieren.
T2FD Ein Programm vom Band (CMT) laden und auf Floppy-Disk speichern.
f Den originalen Floppy-AFI-Bootcode bei 0xF000 ausfuehren.
H Hilfebildschirm anzeigen (paginiert; Leertaste zum Weiter).
IC (R) Paginierte Verzeichnisliste der Dateien auf dem aktiven SD-Kartenlaufwerk. Zeigt Dateinummer und Dateiname.
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 ausgegeben. Beispiel: IN00E8 liest Port 0x00E8; IN00,01,02 liest Ports 0x00, 0x01 und 0x02.
IR Paginierte Verzeichnisliste der im Flash-ROM gespeicherten Programme.
J <address> Zur angegebenen Hex-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 <file#> Ein Programm aus dem ROM nach Name oder Dateinummer laden und ausfuehren.
LRNX <name> oder <file#> Ein Programm aus dem ROM nach Name oder Dateinummer laden, ohne es auszufuehren.
LC (R) <name> oder <file#> Ein Programm vom aktiven SD-Kartenlaufwerk laden und ausfuehren.
LCNX (R) <name> oder <file#> Ein Programm vom aktiven SD-Kartenlaufwerk laden, ohne es auszufuehren.
M <address> Interaktiver Speichereditor. Zeigt den aktuellen Bytewert; neuen Hex-Wert eingeben und Enter druecken, oder nur Enter zum Ueberspringen. X zum Beenden.
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. Beispiel: OUT00E8:FF schreibt 0xFF an Port 0x00E8; OUTD0:01,D1:80 schreibt 0x01 an Port 0xD0 und 0x80 an Port 0xD1.
P Einen Druckertest 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 0x1200–0x2000, 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 <file#> Eine Datei vom aktiven SD-Kartenlaufwerk auf Band im CMT kopieren.
T Den 8253-Timer-Chip testen.
T2SD (R) Ein Programm vom Band (CMT) 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.

Verwendung der SD-Kartenlaufwerke

RFS bietet zehn logische Laufwerke (0–9), die sequenziell auf der SD-Karte gespeichert sind. Jedes Laufwerk fasst bis zu 256 Dateien von jeweils bis zu 64 KB. Das aktuell aktive Laufwerk wird in der Monitoreingabeaufforderung angezeigt — geben Sie eine einzelne Ziffer (0–9) ein, um das Laufwerk zu wechseln.

Verzeichnis anzeigen
Geben Sie IC ein, um die Dateien auf dem aktiven SD-Laufwerk aufzulisten. Jeder Eintrag zeigt eine zweistellige Hex-Dateinummer gefolgt vom Dateinamen. Im 80-Spalten-Modus werden vier Spalten gleichzeitig angezeigt.
* IC

00 INVADERS     01 DEFENDER     02 GALAXIANS    03 SPACE ATTACK
04 PACMAN       05 SNAKE        ...
Press SPACE to continue, X to exit
Geben Sie IR ein, um die im Flash-ROM gespeicherten Programme aufzulisten. Diese sind schreibgeschuetzt und unabhaengig davon verfuegbar, ob eine SD-Karte eingelegt ist.

Programme laden
Programme koennen nach Name oder Dateinummer geladen werden. Das Laden nach Nummer ist schneller, da kein String-Vergleich erforderlich ist:
* LC INVADERS       ; INVADERS vom aktiven SD-Laufwerk laden und ausfuehren
* LCNX INVADERS     ; Laden ohne Ausfuehrung (nuetzlich zum Debuggen)
* LC 04             ; Dateinummer 04 vom aktiven SD-Laufwerk laden
* LR SA-5510RFS     ; SA-5510RFS vom ROM-Laufwerk laden und ausfuehren

Programme speichern
Verwenden Sie SC, um einen Speicherbereich auf dem aktiven SD-Kartenlaufwerk zu speichern. Die Syntax ist identisch mit dem Band-Befehl S — Startadresse, Endadresse und Ausfuehrungsadresse als 4-stellige Hex-Werte zusammengeschrieben, dann werden Sie nach einem Dateinamen gefragt:
* SC120020001200
FILE NAME? MYPROG
SAVED

Band- und SD-Karten-Transfer
Dateien koennen in beiden Richtungen zwischen Band (CMT) und SD-Karte kopiert werden:
  • T2SD — laedt die naechste Datei vom Band und speichert sie auf dem aktiven SD-Kartenlaufwerk. Sie werden aufgefordert, Play am Bandgeraet zu druecken, bevor der Ladevorgang beginnt.
  • SD2T <name> — laedt die benannte Datei vom aktiven SD-Kartenlaufwerk und schreibt sie auf Band, genau wie bei einer Band-zu-Band-Kopie. Druecken Sie Record am Bandgeraet, wenn Sie dazu aufgefordert werden.
Dies macht es einfach, vorhandene Band-Software auf SD-Karte zu archivieren oder Software auf Band aus der SD-Karten-Sammlung zu verteilen.

BASIC verwenden

Sharp SA-5510RFS BASIC
Der originale Sharp SA-5510 BASIC-Interpreter wurde um RFS-faehige LOAD-, SAVE- und DIR-Befehle erweitert. Er ist auf dem ROM-Laufwerk als SA-5510RFS gespeichert. Starten Sie ihn mit:
* BASIC
Im BASIC sind folgende erweiterte Befehle verfuegbar:
Befehl Beispiel Beschreibung
LOAD LOAD "TEST" Programm TEST vom aktiven Laufwerk laden und ausfuehren.
LOAD LOAD "3:TEST" TEST von RFS-Laufwerk 3 laden und Laufwerk 3 als aktiv setzen.
LOAD LOAD "C:TEST" TEST von der internen Kassette (CMT) laden.
LOAD LOAD Die naechste sequenzielle Datei vom aktiven Laufwerk laden.
SAVE SAVE "TEST" Vorhandene Datei TEST auf dem aktiven Laufwerk ueberschreiben oder neu erstellen.
SAVE SAVE "3:TEST" Auf RFS-Laufwerk 3 speichern und Laufwerk 3 als aktiv setzen.
SAVE SAVE "C:TEST" Auf CMT mit dem Namen TEST speichern.
DIR DIR SD-Kartenverzeichnis fuer das aktive Laufwerk auflisten.
DIR DIR "3:" Laufwerk 3 auflisten und als aktiv setzen.

Microsoft BASIC
Microsoft BASIC (basierend auf NASCOM BASIC v4.7b) ist in drei Varianten enthalten:
  • MS-BASIC(MZ-80A) — Standard-MZ-80A-Hardware, nur Kassettenspeicher.
  • MS-BASIC(RFS40) — RFS mit 40-Spalten-Anzeige; fuegt SD-Karten-Befehle CLOAD, CSAVE, DIR hinzu.
  • MS-BASIC(RFS80) — RFS mit 80-Spalten-Anzeige; fuegt SD-Karten-Befehle CLOAD, CSAVE, DIR hinzu.
Laden Sie die entsprechende Variante vom ROM-Laufwerk:
* LR MS-BASIC(RFS40)
Die RFS-Erweiterungen in MS-BASIC funktionieren aehnlich wie bei SA-5510RFS — das Laufwerks-Praefix waehlt eine RFS-Laufwerksnummer vor dem Dateinamen:
CLOAD "8:STARTREK"    ; STARTREK von RFS-Laufwerk 8 laden
CSAVE "8:MYPROG"      ; Auf RFS-Laufwerk 8 speichern
DIR "5:"              ; Laufwerk 5 auflisten
Der ANSITERM-Befehl aktiviert oder deaktiviert den integrierten ANSI-Terminal-Prozessor (standardmaessig ein). Dieser ermoeglicht es BASIC-Programmen mit ANSI-Escape-Sequenzen fuer Cursorpositionierung und Farben, unveraendert zu laufen:
ANSITERM 0    ; ANSI-Verarbeitung deaktivieren
ANSITERM 1    ; ANSI-Verarbeitung aktivieren (Standard)

NASCOM-Kassettenprogramme konvertieren
NASCOM BASIC-Programme, die als Kassettenimage-Dateien (.cas) verteilt werden, koennen mit dem mitgelieferten nasconv-Werkzeug fuer die Verwendung auf dem MZ-80A konvertiert werden. Es entfernt Band-Framing-Daten und bildet Token-Werte fuer die RFS MS-BASIC-Erweiterung neu ab:
nasconv --image startrek.cas --output startrek.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. Verwenden Sie ein Geraete-Praefix zur Auswahl des Zielspeichergeraets:
Befehl Beispiel Beschreibung
LOAD LOAD "RFS1:MYPROG" BASIC-Programm von RFS-SD-Kartenlaufwerk 1 laden (abgebildet auf SD-Laufwerk 4). RFS-Laufwerke 1–7 sind verfuegbar.
SAVE SAVE "RFS1:MYPROG" Aktuelles Programm auf RFS-SD-Kartenlaufwerk 1 speichern.
DIR DIR RFS1: Verzeichnis von RFS-SD-Kartenlaufwerk 1 anzeigen.
LOAD LOAD "FD1:MYPROG" BASIC-Programm von Floppy-Disk-Laufwerk 1 laden.
SAVE SAVE "FD1:MYPROG" Aktuelles Programm auf Floppy-Disk-Laufwerk 1 speichern.
DIR DIR FD1: Floppy-Disk-Verzeichnis fuer Laufwerk 1 anzeigen.
LOAD LOAD "QD:MYPROG" BASIC-Programm von Quick Disk laden.
SAVE SAVE "QD:MYPROG" Aktuelles Programm auf Quick Disk speichern.
DIR DIR QD: Quick Disk-Verzeichnis anzeigen.
LOAD LOAD "NET1:MYPROG" BASIC-Programm vom Netzwerk-Dateiserver-Einheit 1 laden. Einheiten 1–7 verfuegbar. Erfordert Celestite-Platine und netfs.py auf PC.
SAVE SAVE "NET1:MYPROG" Aktuelles Programm auf Netzwerk-Dateiserver-Einheit 1 speichern.
DIR DIR NET1: Verzeichnis von Netzwerk-Dateiserver-Einheit 1 anzeigen.
LOAD LOAD "CMT:MYPROG" BASIC-Programm von Kassettenband laden.
SAVE SAVE "CMT:MYPROG" Aktuelles 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". Verwenden Sie ein Geraete-Praefix zur Auswahl des Zielspeichergeraets:
Befehl Beispiel Beschreibung
LOAD LOAD "RFS1:MYPROG" BASIC-Programm von RFS-SD-Kartenlaufwerk 1 laden (abgebildet auf SD-Laufwerk 4). RFS-Laufwerke 1–7 sind verfuegbar.
SAVE SAVE "RFS1:MYPROG" Aktuelles Programm auf RFS-SD-Kartenlaufwerk 1 speichern.
DIR DIR RFS1: Verzeichnis von RFS-SD-Kartenlaufwerk 1 anzeigen.
LOAD LOAD "FD1:MYPROG" BASIC-Programm von Floppy-Disk-Laufwerk 1 laden.
SAVE SAVE "FD1:MYPROG" Aktuelles Programm auf Floppy-Disk-Laufwerk 1 speichern.
DIR DIR FD1: Floppy-Disk-Verzeichnis fuer Laufwerk 1 anzeigen.
LOAD LOAD "QD:MYPROG" BASIC-Programm von Quick Disk laden.
SAVE SAVE "QD:MYPROG" Aktuelles Programm auf Quick Disk speichern.
DIR DIR QD: Quick Disk-Verzeichnis anzeigen.

CP/M 2.2 ausfuehren

CP/M 2.2 ist auf allen RFS-Plattformen verfuegbar. Von der Monitoreingabeaufforderung:
* CPM
RFS sucht CP/M auf dem aktiven SD-Kartenlaufwerk oder ROM, laedt es und uebergibt die Kontrolle an den CP/M CCP. Die Eingabeaufforderung wechselt zu A>.
CP/M bietet 47 KB Programm-RAM. Das CBIOS befindet sich vollstaendig in der ROM und laesst alle 47 KB fuer Anwendungen frei. Bis zu sieben CP/M-Laufwerke (A:–G:) sind je nach Hardware verfuegbar:
CP/M-Laufwerk Inhalt
A: SD-Karte — CP/M-Systemprogramme, Turbo Pascal, Hi-Soft C usw.
B: SD-Karte — Pascal-Dienstprogramme und Pascal User Group Disks
C: SD-Karte — PLI, PLM, WordStar
D:–G: SD-Karte — Grant Searle CP/M-Sammlung (C0–F9)
Originale MZ-80K CP/M-Disks lesen. Wenn der Host mit einer MZ80AFI-Floppy-Karte ausgestattet ist (auf einem echten MZ-80A oder auf dem picoZ80 mit der MZ-80A- oder MZ-80K-Persona), kann RFS CP/M jetzt originale, unkonvertierte MZ-80K CP/M-Disks direkt booten und lesen. Das Disk-Format wird anhand seiner 128-Byte-Sektorgroesse und der nicht invertierten Daten automatisch erkannt; solche Disks werden als die Floppy-CP/M-Laufwerke eingebunden, typischerweise C: und D:, sodass ihre Dateien an der CP/M-Eingabeaufforderung (DIR C:, DIR D:) ohne vorherige Konvertierung aufgelistet und gelesen werden koennen. Welche Laufwerksbuchstaben genau zugewiesen werden, haengt davon ab, welche anderen Laufwerke (ROM, SD-Karte) vorhanden sind — siehe den Leitfaden CP/M fuer RFS.
Der integrierte ANSI-Terminal-Emulator bildet Standard-ANSI-Escape-Sequenzen auf den MZ-80A-Bildschirm ab, sodass die meisten CP/M-Anwendungen, die auf Bildschirmsteuerung angewiesen sind, ohne Aenderung korrekt funktionieren. Die Tastatur verfuegt ueber Auto-Repeat und korrekte Zuordnung aller MZ-80A-Tasten zu ASCII.
Um vom CP/M zum RFS-Monitor zurueckzukehren, verwenden Sie einen Warmstart (Ctrl+C vom CCP), der den CCP neu laedt. Ein vollstaendiger Ruecksprung zum SA-1510-Monitor erfordert einen Hardware-Reset.

Anzeigemodi

Wenn ein Kuma 40/80-Spalten-Upgrade oder das 40/80-Farb-Video-Module im MZ-80A installiert ist, kann RFS an der Monitoreingabeaufforderung zwischen 40- und 80-Spalten-Anzeigemodus wechseln:
* 40       ; In den 40-Spalten-Modus wechseln
* 80       ; In den 80-Spalten-Modus wechseln
Im 80-Spalten-Modus zeigen die IC- und IR-Verzeichnisbefehle vier Spalten an, was das Auffinden von Programmen deutlich beschleunigt. Die MS-BASIC(RFS80)-Variante ist speziell fuer den 80-Spalten-Betrieb gebaut.
Ohne das 40/80-Upgrade startet und funktioniert die RFS-Firmware normal — diese Befehle sind einfach nicht verfuegbar.

SD-Karten-Organisation

Das vorgefertigte SD-Karten-Image organisiert Programme in zehn RFS-Laufwerke und sieben CP/M-Disk-Images:
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

Fehlerbehebung

Monitor startet, aber "RFS" wird nicht im Banner angezeigt

  • SD-Karte nicht eingelegt — pruefen Sie, ob die Karte im Leser auf der RomDisk-Platine sitzt.
  • SD-Karte nicht korrekt formatiert — das SDCFS-Image muss bei Sektor 0 beginnen, ohne Partitionstabelle. Schreiben Sie es mit dd wie oben beschrieben erneut.
  • Falsches ROM-Image — stellen Sie sicher, dass Sie die Monitor-ROM- und User-ROM-Chips mit den richtigen Images fuer Ihr Hardware-Ziel (RomDisk vs picoZ80) programmiert haben.
  • SPI nicht verbunden — auf RomDisk v2+-Platinen stellen Sie sicher, dass HW_SPI_ENA = 1 in rfs_definitions.asm vor dem Build gesetzt ist. Auf v1-Platinen verwenden Sie PP_SPI_ENA = 1.

Maschine stuerzt ab oder verhaelt sich unregelmaessig nach dem Laden eines Programms

  • ROM-Image-Fehlanpassung — die Monitor-ROM und User-ROM muessen aus dem gleichen Quellbaum und fuer das gleiche Ziel gebaut sein. Das Mischen von Images aus verschiedenen Builds kann unvorhersehbare Bank-Switch-Adressen erzeugen.
  • Programm ueberschreibt den RFS-Arbeitsbereich — Programme, die den gesamten Bereich 0x1200–0xCFFF nutzen, koennen die RFS-Bank-Switch-Stubs bei 0xE800 ueberschreiben. Programme, die fuer den Original-Monitor entworfen wurden, sollten generell nicht betroffen sein; selbstmodifizierende Programme oder solche, die zu beliebigen Adressen springen, koennten betroffen sein.

CP/M startet nicht oder zeigt Fehler

  • SD-Karten-Image unvollstaendig — CP/M-Disk-Images beginnen an der 256-MB-Grenze auf der SD-Karte. Stellen Sie sicher, dass das vollstaendige SHARP_MZ80A_RFS_CPM_IMAGE_1.img geschrieben wurde — unvollstaendige Schreibvorgaenge lassen den CP/M-Disk-Bereich uninitialisiert.
  • Aktives Laufwerk hat keinen CP/M-Bootsektor — waehlen Sie Laufwerk 0, bevor Sie CPM eingeben, da das vorgefertigte Image den CP/M-Bootsektor auf Laufwerk 0 platziert.
  • Floppy nicht angeschlossen — wenn Sie den SFD-700-Build verwenden und kein Floppy angeschlossen ist, werden Floppy-bezogene CBIOS-Operationen eine Zeitueberschreitung haben. Verwenden Sie stattdessen den SD-Karten-CPM-Boot.

Ressource Link
RFS-Projektseite /de/sharpmz-upgrades-rfs/
RFS Technischer Leitfaden /de/sharpmz-upgrades-rfs-technicalguide/
RFS Entwicklerhandbuch /de/sharpmz-upgrades-rfs-developersguide/
RFS Galerie /de/sharpmz-upgrades-rfs-gallery/
SFD-700 mkII (Floppy-Controller) /sfd700/
picoZ80 (RP2350 Z80-Ersatz) /de/picoz80/
GLASS Z80-Assembler Enthalten in tools/glass.jar
NASCOM Basic Manual Enthalten im Repository docs/-Verzeichnis