Sistema di archiviazione tranZPUter (TZFS) -- Guida tecnica

Guida tecnica TZFS

Questa guida documenta l'integrazione hardware del tranZPUter Filing System (TZFS), l'architettura di memoria, il layout dei moduli software, l'API di servizio del processore I/O K64F, l'implementazione di CP/M e il sistema di compilazione completo.
TZFS e un porting di RFS adattato per la famiglia di schede tranZPUter. A differenza di RFS che programma chip Flash ROM fisici, TZFS funziona interamente nei 512 KB di RAM del tranZPUter -- il processore I/O K64F carica l'intero firmware dalla scheda SD nella SRAM all'avvio. Tutti gli accessi alla scheda SD avvengono tramite l'API di servizio K64F.
Per l'uso quotidiano consultare il Manuale utente. Per il codice sorgente Z80 consultare la Guida per sviluppatori.

Piattaforme hardware

TZFS supporta cinque piattaforme hardware, ciascuna selezionata in fase di compilazione tramite flag in tzfs_definitions.asm.

tranZPUter SW
Prima scheda di produzione con processore I/O K64F ARM Cortex-M4, 512 KB SRAM e FPGA (T80, ZPU Evolution, emulazione hardware, VGA).

tranZPUter SW-700 v1.3
Versione attuale con layout PCB migliorato. Stessi componenti.

tranZPUter Fusion
SW-700 combinato con modulo video colore 40/80. Selezionato con BUILD_VIDEOMODULE.

tranZPUter FusionX
tranZPUter virtuale basato su FPGA. Selezionato con BUILD_FUSIONX.

picoZ80
Sostituzione Z80 basata su RP2350. Selezionato con BUILD_PICOZ80.

Architettura di memoria

Address     Size    Contents
─────────────────────────────────────────────────────────────────────
0x0000      4 KB    Monitor ROM area — SA-1510 (or 1Z-013A, MZ-80B IPL etc.)
0x1000      256 B   MZ system variables / stack
0x1200    ~46 KB    User RAM (main program area)
0xD000      12 KB   Video RAM + memory-mapped I/O
0xE800       2 KB   TZFS fixed code window
0xED80      640 B   K64F service communication block (TZSVCMEM)
0xF000       4 KB   Switchable code window — bank selected by TZMM mode
─────────────────────────────────────────────────────────────────────

Modi di gestione memoria (TZMM)
Modo Codice Descrizione
TZMM_ORIG 0x00 Modo originale Sharp MZ.
TZMM_BOOT 0x01 Modo originale con SRAM tranZPUter a 0xE800-0xEFFF.
TZMM_TZFS 0x02 Modo principale TZFS – tutta la memoria nella SRAM tranZPUter.
TZMM_TZFS2 0x03 0xF000-0xFFFF mappato su Block 1 (tzfs_bank2).
TZMM_TZFS3 0x04 0xF000-0xFFFF mappato su Block 2 (tzfs_bank3).
TZMM_TZFS4 0x05 0xF000-0xFFFF mappato su Block 3 (tzfs_bank4, usa anche 0x1200-0xCFFF).
TZMM_CPM 0x06 Modo CP/M – tutta la SRAM, Block 4.
TZMM_CPM2 0x07 Modo CP/M 2 – configurazione mista Block 4/5.

Architettura software

Modulo Area di memoria Dimensione Modo TZMM Descrizione
tzfs.asm 0xE800-0xEFFF 2 KB fisso TZMM_TZFS Punto di ingresso principale, dispatcher comandi, tabelle di salto.
tzfs_bank2.asm 0xF000-0xFFFF 4 KB TZMM_TZFS2 Stampa messaggi, conversione ASCII, schermata di aiuto.
tzfs_bank3.asm 0xF000-0xFFFF 4 KB TZMM_TZFS3 Utilita di memoria, I/O, compensazione nastro, commutazione emulazione.
tzfs_bank4.asm 0x1200-0xCFFF + 0xF000-0xFFFF 52 KB TZMM_TZFS4 Assemblatore e disassemblatore Z80 completi.

API di servizio K64F / processore I/O

Tutte le operazioni di file SD, caricamento del monitor e accesso ai dischi CP/M sono eseguite dal processore I/O K64F. Il Z80 invia richieste tramite un blocco di memoria condivisa e attende il completamento.

Comandi di servizio
Codice Nome Descrizione
0x01 READDIR Aprire directory e restituire prime voci.
0x03 READFILE Aprire file e restituire primo blocco.
0x07 CLOSE Chiudere file o directory aperti.
0x08 LOADFILE Caricare file completo nella SRAM.
0x09 SAVEFILE Salvare regione SRAM come file.
0x0A ERASEFILE Cancellare file.
0x0B CHANGEDIR Cambiare directory attiva.
0x20-0x2F LOAD*BIOS Caricare firmware monitor/BIOS.
0x30-0x33 CP/M disk Operazioni disco CP/M.
0x50-0x5D CPU/EMU Commutazione CPU e emulazione (solo SW/Fusion).
0x7F EXIT Terminare TZFS.

Implementazione CP/M 2.2

CP/M 2.2 e disponibile su tutte le piattaforme TZFS tramite il comando CPM. L'implementazione utilizza i modi TZMM_CPM / TZMM_CPM2. Il CBIOS utilizza chiamate di servizio K64F per tutte le I/O disco. I drive CP/M A:-G: sono immagini disco su scheda SD. CP/M 2.2 offre 47 KB di RAM programma utilizzabile.

Sistema di compilazione

Configurazione e compilazione automatizzate (consigliato)
Il modo consigliato per compilare TZFS e lo script di configurazione autonomo per la propria piattaforma. Installa i prerequisiti (un JRE Java per l'assemblatore GLASS Z80, una toolchain C + make per compilare il sottomodulo cpmtools incluso, oltre a perl/git/coreutils; su Windows, Git Bash + Java), clona il repository, scarica il bundle di contenuti da ~110 MB (TZFS_Files.zip) e puo compilare le immagini ROM — il tutto in modo interattivo, con valori predefiniti sensati che si possono accettare premendo Enter. E sufficiente copiare il singolo file per la propria piattaforma ed eseguirlo.

macOS / Linux / WSL — setup_TZFS.sh

chmod +x setup_TZFS.sh
./setup_TZFS.sh

Windows 10 / 11 — setup_TZFS_windows.ps1 (Git Bash nativo, senza WSL). Da un prompt PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_TZFS_windows.ps1
Lo script Windows usa winget per installare Git for Windows (che fornisce bash, coreutils, perl e curl) e il JRE Temurin 17 (Java), clona il repository, scarica il bundle di contenuti ed esegue ./build.sh tramite Git Bash. Un tools\cpmcp.exe precompilato e incluso, quindi su Windows non e richiesto alcun compilatore C.
Impostare la variabile d'ambiente TZFS_REPO_URL per sovrascrivere l'URL del repository predefinito (https://git.eaw.app/eaw/TZFS.git) senza modificare lo script, e TZFS_FILES_URL per puntare a un bundle di contenuti alternativo. Le immagini ROM e le immagini disco CP/M vengono scritte in roms/; per ricompilare in seguito, entrare nel checkout (su macOS eseguire prima source ./tzfs_env.sh) ed eseguire ./build.sh (oppure ./build.sh -m per rielaborare anche i sorgenti MZF). Copiare i file compilati su una scheda SD formattata FAT32 con tools/copytosd.sh.
Strumento Scopo
Java JRE 8+ Esegue l’assemblatore GLASS Z80 (tools/glass.jar).
bash Tutti gli script di compilazione sono script bash.
perl Richiesto per tools/mzftool.pl.
gcc / make Compila cpmtools alla prima compilazione.
git clone https://git.eaw.app/eaw/tranZPUter.git
cd tranZPUter
./build.sh
File Descrizione
tzfs.bin Immagine TZFS principale (0xE800-0xEFFF, Block 0).
tzfs_bank2.bin Immagine Bank 2.
tzfs_bank3.bin Immagine Bank 3.
tzfs_bank4.bin Immagine Bank 4 – assemblatore e disassemblatore Z80.
monitor_SA1510.bin Immagine monitor SA-1510 40 colonne.
cbios.bin Immagine SRAM CBIOS CP/M 2.2.

Siti di riferimento

Risorsa Link
Pagina del progetto TZFS /sharpmz-upgrades-tzfs/
Manuale utente TZFS /sharpmz-upgrades-tzfs-usermanual/
Guida per sviluppatori TZFS /sharpmz-upgrades-tzfs-developersguide/
Assemblatore GLASS Z80 Incluso in tools/glass.jar