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
tranZPUter SW
tzfs_definitions.asm.
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
tranZPUter FusionX
BUILD_VIDEOMODULE.tranZPUter virtual basado en FPGA. Seleccionado con
picoZ80
BUILD_FUSIONX.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 |