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
Sobald TZFS gebootet ist, erscheint das typische 1Z-013A-Monitor-Anmeldebanner mit dem Anhang "+ TZFS". Der vollstaendige Befehlssatz ist in der folgenden Tabelle aufgefuehrt:
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.