tranZPUter-Dateisystem (TZFS)

Uebersicht

Das TranZputer Filing System ist ein Port des Rom Filing System, das auf der Rom Disk Hardware-Upgrade-Platine verwendet wird. Es verwendet vieles der gleichen Software-Funktionalitaet und bietet folglich die gleichen Dienste -- die Unterschiede liegen in der Verwendung eines anderen Speichermodells. Sein Zweck ist es, Methoden zur Manipulation von auf der SD-Karte gespeicherten Dateien bereitzustellen und eine erweiterte Kommandozeilenschnittstelle, den TZFS-Monitor, anzubieten. Der Befehlssatz umfasst SD-Dateimanipulation und -sicherung sowie eine Reihe von Befehlen, die auf den MZ700/800-Computern zu finden sind.
Die Einfuehrung des tranZPUter FusionX mit seinem virtuellen I/O-Prozessor veranlasste die Trennung dieser Software aus dem tranZPUter-Repository in ein eigenstaendiges Modul. TZFS laeuft auf der gesamten tranZPUter-Reihe, einschliesslich der neueren tranZPUterFusionX- und tranZPUterFusion-Geraete.
Die SD-Karte und ROMs werden vom K64F-I/O-Prozessor verwaltet. Eine Service-Request-API wurde geschrieben, wobei ein gemeinsamer Speicherblock (640 Byte) in Verbindung mit einer physischen I/O-Anfrage verwendet wird, um Befehle und Daten zwischen dem Z80 und dem K64F auszutauschen.
TZFS praesentiert sich dem Benutzer als erweiterte Version des Host-Monitorprogramms (z.B. SA-1510, 1Z-013A usw.) mit Anwendungsspeicherung und -abruf sowohl in Flash-RAM- als auch SD-Karten-Geraeten.

TZFS-Monitor

Beim Einschalten des Sharp MZ-700 wird dem Benutzer eine Kommandozeilenschnittstelle namens Monitor praesentiert. Der TZFS-Monitor ist eine Erweiterung des Basismonitors. Nach dem Einsetzen der tranZPUter SW-Karte wird TZFS durch den folgenden Befehl am Monitor-Prompt '*' gestartet:

JE800<cr>

Es ist moeglich, den Start direkt in TZFS zu automatisieren. Erstellen Sie dazu eine leere Datei im Stammverzeichnis der SD-Karte namens TZFSBOOT.FLG. Zusaetzlich kann eine Datei AUTOEXEC.BAT erstellt werden, die Befehle enthaelt, die TZFS nach dem Start automatisch ausfuehrt.

Sobald TZFS gebootet ist, erscheint das typische 1Z-013A-Monitor-Anmeldebanner mit dem Anhang "+ TZFS". Der vollstaendige Befehlssatz ist in der folgenden Tabelle aufgefuehrt:
Befehl Parameter Beschreibung
4 n/a Umschaltung auf 40-Zeichen-Modus.
8 n/a Umschaltung auf 80-Zeichen-Modus.
ASM <addr> Z80-Mnemonics in die angegebene Speicheradresse assemblieren.
B n/a Tastendruck-Piepton aktivieren/deaktivieren.
BASIC n/a Ersten BASIC-Interpreter auf der SD-Karte finden, laden und ausfuehren.
CD [<directory>] In das angegebene SD-Karten-Verzeichnis wechseln.
CP <start>,<end>,<dest> Speicherblock kopieren.
CPM n/a CP/M 2.23 von der SD-Karte laden und ausfuehren.
D <address>[<address2>] Hex- und ASCII-Dump des Speichers.
DASM <start>,<end> Z80-Maschinencode disassemblieren.
DIR <wildcard> Verzeichnisauflistung der SD-Karte.
EC <name> oder <file number> Datei von der SD-Karte loeschen.
EX n/a TZFS verlassen und Maschine in den Originalzustand zurueckversetzen.
FREQ <frequency in KHz> CPU-Frequenz aendern. 0 fuer Standard.
L | LT [,<hardware mode>] Von Band laden und ausfuehren.
LC <name> oder <file number> Von SD-Karte laden und ausfuehren.
M <address> Speicher bearbeiten.
MZ [<machine>] Sharp MZ-Serie Hardwareemulator starten.
MZ80K … MZ2500 n/a Zur jeweiligen Hardwareemulation wechseln. (nur tranZPUter SW)
S / ST <start> <end> <exec> Speicherblock auf Band speichern.
SC <start> <end> <exec> Speicherblock auf SD-Karte speichern.
T80 n/a Zum Soft-T80-CPU wechseln.
VGA <vga mode> VGA-Ausgangsmodus waehlen.
Z80 n/a Zum originalen Hardware-Z80-Prozessor wechseln.
ZPU n/a Zum ZPU Evolution-Prozessor im FPGA wechseln und zOS booten.

Bandbefehle

Es ist moeglich, alle Sharp MZ-Serie-Bandformate ueber TZFS-Befehle zu lesen und zu schreiben. Der ,M-Parameter gibt das Maschinenmodell fuer das Tape-Timing an: K=MZ-80K, C=MZ-80C, 1=MZ-1200, A=MZ-80A, 7=MZ-700, 8=MZ-800, B=MZ-80B, 2=MZ-2000.

Erweiterte Anwendungen

Sharp BASIC SA-5510

Der SA-5510 BASIC-Interpreter wurde disassembliert und fuer die SD-Karten-Nutzung unter TZFS kompatibel gemacht. Die neue Version heisst "BASIC SA-5510-TZ".
Befehl Parameter Beschreibung
LOAD ”[<filename>]” Programm von SD-Karte oder CMT laden.
SAVE ”[<filename>]” Programm auf SD-Karte oder CMT speichern.
DIR ”[<wildcard>]” Aktuelles SD-Karten-Verzeichnis auflisten.
CD [<path>] Aktives SD-Verzeichnis wechseln.
FREQ [<freq>] CPU-Frequenz aendern (in KHz).

Microsoft BASIC

Eine Version von Microsoft NASCOM 4.7b BASIC wurde fuer die tranZPUter-Plattform portiert und um TZFS-Befehle erweitert.
Befehl Parameter Beschreibung
CLOAD ”<filename>” Kassettenimage von SD-Karte laden.
CSAVE ”<filename>” BASIC-Programm als Kassettenimage auf SD-Karte speichern.
LOAD ”<filename>” ASCII-BASIC-Programm von SD-Karte laden.
SAVE ”<filename>” BASIC-Programm als ASCII-Text auf SD-Karte speichern.
DIR <wildcard> Verzeichnis auflisten.
CD <FAT32 PATH> Arbeitsverzeichnis aendern.
FREQ <frequency in KHz> CPU-Frequenz setzen.

Automatische Einrichtung und Erstellung (empfohlen)

Der empfohlene Weg, TZFS zu bauen, ist das eigenstaendige Setup-Skript fuer Ihre Plattform. Es installiert die Voraussetzungen (eine Java-JRE fuer den GLASS-Z80-Assembler, eine C-Toolchain + make zum Kompilieren des mitgelieferten cpmtools-Submoduls sowie perl/git/coreutils; unter Windows Git Bash + Java), klont das Repository, laedt das ~110 MB grosse Inhaltspaket (TZFS_Files.zip) herunter und kann die ROM-Images bauen -- alles interaktiv, mit sinnvollen Standardwerten, die Sie durch Druecken der Eingabetaste uebernehmen koennen. Kopieren Sie einfach die einzelne Datei fuer Ihre Plattform und fuehren Sie sie aus.
Skript Plattform Hinweise
setup_TZFS.sh macOS / Linux / WSL Installiert Java, eine C-Toolchain + make, perl, git; unter macOS zusaetzlich GNU coreutils und bash 4 ueber ein generiertes tzfs_env.sh.
setup_TZFS_windows.ps1 Windows 10 / 11 – natives Git Bash, kein WSL Verwendet winget, um Git for Windows (bash, coreutils, perl, curl) und eine Temurin-17-JRE zu installieren. Ein vorgefertigtes tools\cpmcp.exe ist enthalten, sodass kein C-Compiler erforderlich ist.

macOS / Linux / WSL – setup_TZFS.sh

chmod +x setup_TZFS.sh
./setup_TZFS.sh

Windows 10 / 11 (natives Git Bash) – setup_TZFS_windows.ps1, an einer PowerShell-Eingabeaufforderung:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_TZFS_windows.ps1
Setzen Sie die Umgebungsvariable TZFS_REPO_URL, um die Standard-Repository-URL (https://git.eaw.app/eaw/TZFS.git) zu ueberschreiben, ohne das Skript zu bearbeiten, und TZFS_FILES_URL, um auf ein alternatives Inhaltspaket zu verweisen.
Ausgabe und Neuerstellung. ROM-Images und CP/M-Disk-Images werden nach roms/ geschrieben. Um spaeter neu zu bauen, wechseln Sie in das Checkout-Verzeichnis; unter macOS fuehren Sie zuerst source ./tzfs_env.sh aus; dann fuehren Sie ./build.sh aus (oder ./build.sh -m, um auch die MZF-Quellen erneut zu verarbeiten). Nach dem Bau kopieren Sie die Ausgabe mit tools/copytosd.sh auf eine FAT32-formatierte SD-Karte (siehe A Typical Build unten fuer die vollstaendige Anleitung).

TZFS erstellen

Der Bau der Software und des endgueltigen Ladeimages kann durch Klonen des Repositorys und Ausfuehren der bereitgestellten Build-Skripte erfolgen.
cd <software>
./build.sh

# Auf SD-Karte kopieren:
tools/copytosd.sh -D$(pwd) -M/media/user/K64F -tMZ-700

Design-Detail

K64F Z80 Host API

Die API basiert auf einem gemeinsamen RAM-Block im 64K-Speicherraum des Z80, ueber den die Interprozesskommunikation stattfindet. Wenn der Z80 einen Dienst benoetigt, schreibt er einen Befehl in das svcControl.cmd-Feld und setzt das svcControl.result-Feld auf REQUEST. Der Z80 schreibt dann an einen Ausgangsport (0x68), der wiederum einen Interrupt an den K64F sendet.

API-Befehlsliste

Befehl Cmd# Beschreibung
TZSVC_CMD_READDIR 0x01 Verzeichnis oeffnen und ersten Block zurueckgeben.
TZSVC_CMD_READFILE 0x03 Datei oeffnen und ersten Block zurueckgeben.
TZSVC_CMD_LOADFILE 0x08 Datei direkt in tranZPUter-Speicher laden.
TZSVC_CMD_SAVEFILE 0x09 Datei aus tranZPUter-Speicher speichern.
TZSVC_CMD_ERASEFILE 0x0a Datei auf der SD-Karte loeschen.
TZSVC_CMD_CHANGEDIR 0x0b Aktives Verzeichnis aendern.
TZSVC_CMD_LOAD40ABIOS 0x20 40-Spalten SA1510-BIOS laden.
TZSVC_CMD_LOADBDOS 0x30 CPM BDOS+CCP neu laden.
TZSVC_CMD_CPU_SETZ80 0x50 Zum externen Z80-Hard-CPU wechseln.
TZSVC_CMD_CPU_SETT80 0x51 Zum internen T80-Soft-CPU wechseln.
TZSVC_CMD_CPU_SETZPUEVO 0x52 Zum internen ZPU Evolution-CPU wechseln.
TZSVC_CMD_EMU_SETMZ80K … 0x53-0x5A Hardwareemulation des entsprechenden Sharp MZ-Modells aktivieren.
TZSVC_CMD_EXIT 0x7F TZFS beenden und Maschine im Originalmodus neu starten.

Z80-Speichermodi

Eine der Funktionen des tranZPUter-Hardware-Designs ist die Moeglichkeit, Speicherkarten frei innerhalb des 512-Makrozellen-CPLD zu erstellen. Die definierten Modi umfassen den Original-Modus, TZFS-Modi (0-5), CP/M-Modi (6-7), MZ-700-Kompatibilitaetsmodi (10-14), MZ-800/MZ-2000-Modi und K64F-Zugriffsmodi (21-31). Siehe die vollstaendige Modustabelle in der englischen Version.

Lizenzen

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