Systeme de fichiers tranZPUter (TZFS) -- Guide technique

Guide technique TZFS

Ce guide documente l'integration materielle du tranZPUter Filing System (TZFS), l'architecture memoire, la disposition des modules logiciels, l'API de service du processeur E/S K64F, l'implementation de CP/M et le systeme de compilation complet. Il est destine aux utilisateurs qui souhaitent comprendre le fonctionnement de TZFS au niveau systeme, porter TZFS sur un nouveau materiel ou effectuer une compilation complete a partir des sources.
TZFS est un portage de RFS adapte pour la famille de cartes tranZPUter. Contrairement a RFS qui programme des puces Flash ROM physiques, TZFS fonctionne entierement dans les 512 Ko de RAM du tranZPUter -- le processeur E/S K64F charge l'integralite du firmware depuis la carte SD dans la SRAM au demarrage. Tous les acces a la carte SD passent par l'API de service K64F.
Pour l'utilisation quotidienne, consultez le Manuel utilisateur. Pour le code source Z80, consultez le Guide du developpeur.

Plateformes materielles

TZFS cible cinq plateformes materielles, chacune selectionnee a la compilation via des drapeaux dans tzfs_definitions.asm.

tranZPUter SW
Premiere carte de production avec processeur E/S K64F ARM Cortex-M4, 512 Ko SRAM et FPGA (T80, ZPU Evolution, emulation materielle, VGA).

tranZPUter SW-700 v1.3
Version actuelle avec disposition PCB amelioree. Memes composants.

tranZPUter Fusion
SW-700 combine avec un module video couleur 40/80 colonnes. Selectionne avec BUILD_VIDEOMODULE.

tranZPUter FusionX
tranZPUter virtuel base sur FPGA. Selectionne avec BUILD_FUSIONX.

picoZ80
Remplacement Z80 base sur RP2350. Selectionne avec BUILD_PICOZ80.

Architecture memoire

Disposition de l'espace d'adressage Z80
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
─────────────────────────────────────────────────────────────────────

Modes de gestion memoire (TZMM)
Mode Code Description
TZMM_ORIG 0x00 Mode original Sharp MZ.
TZMM_BOOT 0x01 Mode original avec SRAM tranZPUter a 0xE800-0xEFFF.
TZMM_TZFS 0x02 Mode principal TZFS – toute la memoire dans la SRAM tranZPUter.
TZMM_TZFS2 0x03 0xF000-0xFFFF mappe sur le Block 1 (tzfs_bank2).
TZMM_TZFS3 0x04 0xF000-0xFFFF mappe sur le Block 2 (tzfs_bank3).
TZMM_TZFS4 0x05 0xF000-0xFFFF mappe sur le Block 3 (tzfs_bank4, utilise aussi 0x1200-0xCFFF).
TZMM_CPM 0x06 Mode CP/M – toute la SRAM, Block 4.
TZMM_CPM2 0x07 Mode CP/M 2 – configuration mixte Block 4/5.

Architecture logicielle

Module Plage memoire Taille Mode TZMM Description
tzfs.asm 0xE800-0xEFFF 2 Ko fixe TZMM_TZFS Point d’entree principal, dispatcheur de commandes, tables de saut.
tzfs_bank2.asm 0xF000-0xFFFF 4 Ko TZMM_TZFS2 Impression de messages, conversion ASCII, ecran d’aide.
tzfs_bank3.asm 0xF000-0xFFFF 4 Ko TZMM_TZFS3 Utilitaires memoire, E/S, compensation bande, commutation d’emulation.
tzfs_bank4.asm 0x1200-0xCFFF + 0xF000-0xFFFF 52 Ko TZMM_TZFS4 Assembleur et desassembleur Z80 complets.
Table de saut externe (TZFSJMPTABLE a 0xE880)
Adresse Nom Description
0xE880 CMT_RDINF Lire l’en-tete bande/SD
0xE883 CMT_RDDATA Lire le bloc de donnees bande/SD
0xE886 CMT_WRINF Ecrire l’en-tete bande/SD
0xE889 CMT_WRDATA Ecrire le bloc de donnees bande/SD
0xE88C CMT_VERIFY Verifier l’ecriture bande/SD
0xE88F CMT_DIR Liste du repertoire carte SD
0xE892 CMT_CD Changer de repertoire carte SD
0xE895 SET_FREQ Definir la frequence d’horloge CPU

API de service K64F / processeur E/S

Toutes les E/S de fichiers SD, les chargements de moniteur et les acces disque CP/M sont effectues par le processeur E/S K64F. Le Z80 soumet des requetes via un bloc de memoire partagee et attend la completion.

Mecanisme de requete de service
  1. Le Z80 remplit le bloc de communication a 0xED80 et ecrit TZSVC_STATUS_REQUEST (0xFE) dans TZSVCRESULT.
  2. Le Z80 ecrit sur le port E/S SVCREQ (0x68) pour signaler le K64F.
  3. Le K64F met TZSVCRESULT a TZSVC_STATUS_PROCESSING (0xFF).
  4. Le Z80 interroge jusqu'a ce que la valeur ne soit ni 0xFF ni 0xFE.
  5. Succes : TZSVC_STATUS_OK (0x00). Erreur : code non nul.

Commandes de service
Code Nom Description
0x01 READDIR Ouvrir un repertoire et retourner les premieres entrees.
0x03 READFILE Ouvrir un fichier et retourner le premier bloc.
0x07 CLOSE Fermer tout fichier ou repertoire ouvert.
0x08 LOADFILE Charger un fichier complet dans la SRAM.
0x09 SAVEFILE Sauvegarder une region SRAM en fichier.
0x0A ERASEFILE Supprimer un fichier.
0x0B CHANGEDIR Changer le repertoire actif.
0x20-0x2F LOAD*BIOS Charger les firmwares moniteur/BIOS.
0x30-0x33 CP/M disk Operations disque CP/M.
0x50-0x5D CPU/EMU Commutation CPU et emulation (SW/Fusion uniquement).
0x7F EXIT Terminer TZFS.

Implementation CP/M 2.2

CP/M 2.2 est disponible sur toutes les plateformes TZFS via la commande CPM. L'implementation utilise les modes TZMM_CPM / TZMM_CPM2. Le CBIOS utilise les appels de service K64F pour toutes les E/S disque. Les lecteurs CP/M A:-G: sont des images disque sur carte SD. CP/M 2.2 offre 47 Ko de RAM programme utilisable.

Systeme de compilation

Installation et compilation automatisees (recommande)
La methode recommandee pour compiler TZFS est le script d'installation autonome correspondant a votre plateforme. Il installe les prerequis (un JRE Java pour l'assembleur GLASS Z80, une chaine d'outils C + make pour compiler le sous-module cpmtools integre, ainsi que perl/git/coreutils ; sous Windows, Git Bash + Java), clone le depot, telecharge le paquet de contenu d'environ 110 Mo (TZFS_Files.zip) et peut compiler les images ROM -- le tout de maniere interactive, avec des valeurs par defaut raisonnables que vous pouvez accepter en appuyant sur Entree. Copiez uniquement le fichier correspondant a votre plateforme et executez-le.

macOS / Linux / WSL – setup_TZFS.sh

chmod +x setup_TZFS.sh
./setup_TZFS.sh

Windows 10 / 11 – setup_TZFS_windows.ps1 (Git Bash natif, sans WSL). Depuis une invite PowerShell :

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_TZFS_windows.ps1
Le script Windows utilise winget pour installer Git for Windows (qui fournit bash, coreutils, perl et curl) et le JRE Temurin 17 (Java), clone le depot, telecharge le paquet de contenu et execute ./build.sh via Git Bash. Un tools\cpmcp.exe precompile est fourni, aucun compilateur C n'est donc requis sous Windows.
Definissez la variable d'environnement TZFS_REPO_URL pour remplacer l'URL du depot par defaut (https://git.eaw.app/eaw/TZFS.git) sans modifier le script, et TZFS_FILES_URL pour pointer vers un autre paquet de contenu. Les images ROM et les images de disque CP/M sont ecrites dans roms/ ; pour recompiler ulterieurement, placez-vous dans le depot clone (sous macOS executez d'abord source ./tzfs_env.sh) et lancez ./build.sh (ou ./build.sh -m pour retraiter egalement les sources MZF). Copiez les fichiers compiles sur une carte SD formatee en FAT32 avec tools/copytosd.sh.
Prerequis
Outil Objectif
Java JRE 8+ Execute l’assembleur GLASS Z80 (tools/glass.jar).
bash Tous les scripts de compilation sont des scripts bash.
perl Requis pour tools/mzftool.pl.
gcc / make Compile cpmtools a la premiere compilation.
Etapes de compilation
git clone https://git.eaw.app/eaw/tranZPUter.git
cd tranZPUter
./build.sh
Fichiers de sortie
Fichier Description
tzfs.bin Image TZFS principale (0xE800-0xEFFF, Block 0).
tzfs_bank2.bin Image Bank 2 – impression de messages, aide.
tzfs_bank3.bin Image Bank 3 – utilitaires memoire, E/S, emulation.
tzfs_bank4.bin Image Bank 4 – assembleur et desassembleur Z80.
monitor_SA1510.bin Image moniteur SA-1510 40 colonnes.
cbios.bin Image SRAM CBIOS CP/M 2.2.
CPM_DISK_*.img Images disque CP/M (format RAW).

Sites de reference

Ressource Lien
Page du projet TZFS /sharpmz-upgrades-tzfs/
Manuel utilisateur TZFS /sharpmz-upgrades-tzfs-usermanual/
Guide du developpeur TZFS /sharpmz-upgrades-tzfs-developersguide/
Guide technique RFS /sharpmz-upgrades-rfs-technicalguide/
Assembleur GLASS Z80 Inclus dans tools/glass.jar