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
tranZPUter SW
tzfs_definitions.asm.
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
tranZPUter FusionX
BUILD_VIDEOMODULE.tranZPUter virtuale basato su FPGA. Selezionato con
picoZ80
BUILD_FUSIONX.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 |