Sistema de archivos tranZPUter (TZFS) -- Guia tecnica

Guia tecnica TZFS

Esta guia documenta la integracion hardware del tranZPUter Filing System (TZFS), la arquitectura de memoria, el diseno de modulos de software, la API de servicio del procesador de E/S K64F, la implementacion de CP/M y el sistema de compilacion completo.
TZFS es un port de RFS adaptado para la familia de placas tranZPUter. A diferencia de RFS que programa chips Flash ROM fisicos, TZFS funciona completamente en los 512 KB de RAM del tranZPUter -- el procesador de E/S K64F carga todo el firmware desde la tarjeta SD en la SRAM al arrancar. Todos los accesos a la tarjeta SD pasan por la API de servicio K64F.
Para el uso diario consulte el Manual del usuario. Para el codigo fuente Z80 consulte la Guia del desarrollador.

Plataformas hardware

TZFS soporta cinco plataformas hardware, cada una seleccionada en tiempo de compilacion mediante flags en tzfs_definitions.asm.

tranZPUter SW
Primera placa de produccion con procesador de E/S K64F ARM Cortex-M4, 512 KB SRAM y FPGA (T80, ZPU Evolution, emulacion hardware, VGA).

tranZPUter SW-700 v1.3
Version actual con disposicion PCB mejorada. Mismos componentes.

tranZPUter Fusion
SW-700 combinado con modulo de video color 40/80. Seleccionado con BUILD_VIDEOMODULE.

tranZPUter FusionX
tranZPUter virtual basado en FPGA. Seleccionado con BUILD_FUSIONX.

picoZ80
Reemplazo Z80 basado en RP2350. Seleccionado con BUILD_PICOZ80.

Arquitectura de 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
─────────────────────────────────────────────────────────────────────

Modos de gestion de memoria (TZMM)
Modo Codigo Descripcion
TZMM_ORIG 0x00 Modo original Sharp MZ.
TZMM_BOOT 0x01 Modo original con SRAM tranZPUter en 0xE800-0xEFFF.
TZMM_TZFS 0x02 Modo principal TZFS – toda la memoria en la SRAM tranZPUter.
TZMM_TZFS2 0x03 0xF000-0xFFFF mapeado a Block 1 (tzfs_bank2).
TZMM_TZFS3 0x04 0xF000-0xFFFF mapeado a Block 2 (tzfs_bank3).
TZMM_TZFS4 0x05 0xF000-0xFFFF mapeado a Block 3 (tzfs_bank4, tambien usa 0x1200-0xCFFF).
TZMM_CPM 0x06 Modo CP/M – toda la SRAM, Block 4.
TZMM_CPM2 0x07 Modo CP/M 2 – configuracion mixta Block 4/5.

Arquitectura de software

Modulo Area de memoria Tamano Modo TZMM Descripcion
tzfs.asm 0xE800-0xEFFF 2 KB fijo TZMM_TZFS Punto de entrada principal, despachador de comandos, tablas de salto.
tzfs_bank2.asm 0xF000-0xFFFF 4 KB TZMM_TZFS2 Impresion de mensajes, conversion ASCII, pantalla de ayuda.
tzfs_bank3.asm 0xF000-0xFFFF 4 KB TZMM_TZFS3 Utilidades de memoria, E/S, compensacion de cinta, conmutacion de emulacion.
tzfs_bank4.asm 0x1200-0xCFFF + 0xF000-0xFFFF 52 KB TZMM_TZFS4 Ensamblador y desensamblador Z80 completos.

API de servicio K64F / procesador de E/S

Todas las operaciones de archivo SD, carga del monitor y acceso a discos CP/M son realizadas por el procesador de E/S K64F. El Z80 envia solicitudes a traves de un bloque de memoria compartida y espera la finalizacion.

Comandos de servicio
Codigo Nombre Descripcion
0x01 READDIR Abrir directorio y devolver primeras entradas.
0x03 READFILE Abrir archivo y devolver primer bloque.
0x07 CLOSE Cerrar archivo o directorio abierto.
0x08 LOADFILE Cargar archivo completo en la SRAM.
0x09 SAVEFILE Guardar region SRAM como archivo.
0x0A ERASEFILE Borrar archivo.
0x0B CHANGEDIR Cambiar directorio activo.
0x20-0x2F LOAD*BIOS Cargar firmware monitor/BIOS.
0x30-0x33 CP/M disk Operaciones de disco CP/M.
0x50-0x5D CPU/EMU Conmutacion CPU y emulacion (solo SW/Fusion).
0x7F EXIT Terminar TZFS.

Implementacion CP/M 2.2

CP/M 2.2 esta disponible en todas las plataformas TZFS mediante el comando CPM. La implementacion utiliza los modos TZMM_CPM / TZMM_CPM2. El CBIOS utiliza llamadas de servicio K64F para toda la E/S de disco. Las unidades CP/M A:-G: son imagenes de disco en tarjeta SD. CP/M 2.2 ofrece 47 KB de RAM de programa utilizable.

Sistema de compilacion

El desarrollo se realiza principalmente en Linux (Debian/Ubuntu), pero TZFS tambien se compila en macOS y Windows. El sistema de compilacion es casi totalmente autocontenido dentro del repositorio. La forma recomendada de compilar es el script de instalacion automatizada para su plataforma (vea Instalacion y compilacion automatizadas mas abajo); los requisitos previos, los indicadores de compilacion y los pasos de compilacion manual que siguen son para usuarios avanzados y recompilaciones parciales.

Instalacion y compilacion automatizadas (recomendado)
La forma recomendada de compilar TZFS es el script de instalacion autocontenido para su plataforma. Instala los requisitos previos (un JRE de Java para el ensamblador GLASS Z80, una cadena de herramientas C + make para compilar el submodulo cpmtools incluido, ademas de perl/git/coreutils; en Windows, Git Bash + Java), clona el repositorio, descarga el paquete de contenido de ~110 MB (TZFS_Files.zip) y puede compilar las imagenes ROM -- todo de forma interactiva, con valores predeterminados razonables que puede aceptar pulsando Enter. Copie unicamente el archivo correspondiente a su plataforma y ejecutelo.

macOS / Linux / WSL – setup_TZFS.sh

chmod +x setup_TZFS.sh
./setup_TZFS.sh

Windows 10 / 11 – setup_TZFS_windows.ps1 (Git Bash nativo, sin WSL). Desde un prompt de PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_TZFS_windows.ps1
El script de Windows utiliza winget para instalar Git for Windows (que proporciona bash, coreutils, perl y curl) y el JRE Temurin 17 (Java), clona el repositorio, descarga el paquete de contenido y ejecuta ./build.sh a traves de Git Bash. Se incluye un tools\cpmcp.exe precompilado, por lo que no se requiere ningun compilador de C en Windows.
Establezca la variable de entorno TZFS_REPO_URL para anular la URL de repositorio predeterminada (https://git.eaw.app/eaw/TZFS.git) sin editar el script, y TZFS_FILES_URL para apuntar a un paquete de contenido alternativo. Las imagenes ROM y las imagenes de disco CP/M se escriben en roms/; para recompilar mas tarde, entre en el directorio del checkout (en macOS ejecute primero source ./tzfs_env.sh) y ejecute ./build.sh (o ./build.sh -m para reprocesar tambien las fuentes MZF). Copie los archivos compilados a una tarjeta SD formateada en FAT32 con tools/copytosd.sh.
Herramienta Proposito
Java JRE 8+ Ejecuta el ensamblador GLASS Z80 (tools/glass.jar).
bash Todos los scripts de compilacion son scripts bash.
perl Requerido para tools/mzftool.pl.
gcc / make Compila cpmtools en la primera compilacion.
git clone https://git.eaw.app/eaw/tranZPUter.git
cd tranZPUter
./build.sh
Archivo Descripcion
tzfs.bin Imagen TZFS principal (0xE800-0xEFFF, Block 0).
tzfs_bank2.bin Imagen Bank 2.
tzfs_bank3.bin Imagen Bank 3.
tzfs_bank4.bin Imagen Bank 4 – ensamblador y desensamblador Z80.
monitor_SA1510.bin Imagen monitor SA-1510 40 columnas.
cbios.bin Imagen SRAM CBIOS CP/M 2.2.

Sitios de referencia

Recurso Enlace
Pagina del proyecto TZFS /sharpmz-upgrades-tzfs/
Manual del usuario TZFS /sharpmz-upgrades-tzfs-usermanual/
Guia del desarrollador TZFS /sharpmz-upgrades-tzfs-developersguide/
Ensamblador GLASS Z80 Incluido en tools/glass.jar