MZ-80A RomDisk — Guia Tecnica
Guia Tecnica del RomDisk
Esta guia documenta el diseno hardware de la PCB Sharp MZ-80A RomDisk, la arquitectura de memoria, los mecanismos de control de bancos, las opciones de interfaz SPI, la disposicion de modulos software, el diseno del SD Card Filing System, la implementacion CP/M y el sistema de compilacion completo. Esta destinada a usuarios que deseen comprender como funciona el RomDisk a nivel de sistema, compilar firmware desde el codigo fuente o desarrollar nuevo software que utilice el entorno ROM con bancos.
Para el uso diario y la referencia de comandos del monitor, consulte el Manual de Usuario RFS. Para explicaciones del codigo fuente ensamblador Z80, consulte la Guia del Desarrollador RFS.
Versiones de Hardware
La PCB RomDisk es una tarjeta hija para el Sharp MZ-80A. Se conecta al conector de expansion del MZ-80A y utiliza zocalos elevadores para interceptar las lineas chip-select del Monitor ROM (4 KB en 0x0000-0x0FFF) y del User ROM (2 KB en 0xE800-0xEFFF), reemplazando ambos con Flash RAM paginada. Se han producido tres revisiones de hardware.
Version 1.1
La tarjeta de produccion original. Caracteristicas principales:
Version 2.0
- Una Flash RAM SST39SF040 de 512 KB en el zocalo Monitor ROM (U1) -- proporciona ocho ranuras de banco de 4 KB.
- Una Flash RAM de 512 KB en el zocalo User ROM (U4) -- proporciona 256 ranuras de banco de dos kilobytes, aunque RFS solo utiliza las primeras doce.
- Simple latch tipo D para seleccion de banco -- el registro de banco es permanentemente accesible sin mecanismo de proteccion.
- Acceso a tarjeta SD mediante SPI software bitbang a traves de los pines del puerto paralelo de impresora del Sharp MZ-80A. Este metodo es funcional pero lento en comparacion con el SPI hardware posterior.
PP_SPI_ENA. No hay latch codificado; los registros de banco pueden escribirse en cualquier momento.
Una revision significativa que anade SPI hardware, ranuras Flash adicionales, SRAM opcional y un mecanismo de seguridad para los registros de banco:
Version 2.1 (Actual)
- Latch codificado -- un contador ascendente de 4 bits 74HCT191 controla la logica de decodificacion del registro de control I/O. Al encenderse, o despues de una lectura de reset, el contador esta en 0 y los registros de banco son inaccesibles (las lecturas de 0xEFF8-0xEFFF devuelven datos Flash ROM normales). Los registros de control se activan solo despues de exactamente 16 lecturas secuenciales al rango 0xEFF8-0xEFFF que incrementan el contador hasta su salida Terminal Count.
- Circuito SPI hardware -- registro de desplazamiento serie-paralelo 74HCT595 (salida MOSI/CLK) y registro de desplazamiento paralelo-serie 74HCT165 (entrada MISO), sincronizado a 8 MHz desde un oscilador de cristal de 16 MHz. Zocalo para tarjeta SD montado directamente en la PCB.
- Segunda y tercera ranura Flash User ROM (U5 y U6) -- cada una un SST39SF040 adicional de 512 KB. Los bits BK2A19/BK2A20 en el registro BNKCTRL seleccionan cual de los tres chips User ROM esta activo.
- SRAM opcional de 512 KB -- AS6C4008, en zocalo. Destinada para uso futuro como espacio de trabajo paginado adicional.
- El puente de soldadura JP6 selecciona si esta instalado el circuito SPI hardware o el circuito SPI software bitbang.
Una revision dirigida a corregir el problema de direccion de refresco de la v2.0. Cambios respecto a la v2.0:
- Puerta AND de diodos discretos (D1/D2) anadida a la entrada de reloj del contador. La puerta combina la senal de decodificacion de direccion con la senal
/MREQdel Z80, de modo que solo los verdaderos ciclos de lectura de memoria del bus (no los ciclos de refresco) pueden incrementar el contador 74HCT191. Los ciclos de refresco activan/RFSHy desactivan/MREQ, por lo que quedan bloqueados. - 0xEFF9 recableado como direccion dedicada de borrado del latch codificado. Una sola lectura a 0xEFF9 reinicia el contador 74HCT191 a 0 y desactiva el acceso a los registros de control I/O.
- Serigrafia de la PCB ordenada -- designaciones de referencia de componentes corregidas.
Arquitectura de Memoria
La CPU Z80 del Sharp MZ-80A direcciona 64 KB de memoria. El RomDisk reemplaza ambas ventanas ROM con Flash RAM paginada y anade ocho registros de control I/O en los ocho bytes superiores del rango de direcciones User ROM. El rango completo 0x1200-0xCFFF permanece disponible para programas de usuario.
Distribucion del Espacio de Direcciones Z80
Address Size Contents
─────────────────────────────────────────────────────────────────────────────
0x0000 4 KB Monitor ROM window — 4 KB page into 512 KB MROM Flash (U1)
Banks: 0 = SA-1510 (40-col, default on power-on)
1 = SA-1510 80-column
2 = CP/M CBIOS kernel
3 = RFS Monitor ROM utilities
4 = 1Z-013A MZ-700 monitor
5 = 1Z-013A 80-column
6 = IPL (Initial Program Loader)
7 = (empty)
0x1000 256 B MZ-80A system variables and stack
0x1200 ~46 KB User RAM (main program area, 0x1200–0xCFFF)
0xCFFF
0xD000 12 KB Video RAM + memory-mapped I/O (Sharp MZ-80A mainboard hardware)
0xE800 2 KB User ROM window — 2 KB page into 512 KB UROM Flash (U4/U5/U6)
Banks 0–7: RFS firmware modules
Banks 8–11: CP/M CBIOS modules
0xEFF8 8 B Coded latch read region (v2+): 16 reads here unlock control registers
Also Flash RAM data when latch is closed
0xEFF9 1 B Coded latch reset: one read re-locks the control registers (v2.1+)
0xEFFB 1 B HWSPIDATA — Hardware SPI data register (v2+)
0xEFFC 1 B HWSPISTART — Hardware SPI start/trigger register (v2+)
0xEFFD 1 B BNKSELMROM — Monitor ROM bank select register
0xEFFE 1 B BNKSELUSER — User ROM bank select register
0xEFFF 1 B BNKCTRL — Bank control register
0xF000 4 KB Floppy AFI ROM space (original Sharp floppy controller ROM)
─────────────────────────────────────────────────────────────────────────────
Bancos Monitor ROM (4 KB cada uno)
La ventana Monitor ROM en 0x0000-0x0FFF se conmuta entre ocho bancos de 4 KB almacenados en el chip Flash MROM en U1. El banco 0 se selecciona al encender.
| Bank | Module | Description |
|---|---|---|
| 0 | monitor_sa1510.asm |
Original SA-1510 40-column monitor. The default bank on power-on. |
| 1 | monitor_80c_sa1510.asm |
SA-1510 patched for 80-column display (requires Kuma 80-column upgrade). |
| 2 | cbios.asm |
CP/M 2.2 CBIOS kernel — relocated to 0xC000–0xCFFF at runtime during CP/M boot. |
| 3 | rfs_mrom.asm |
RFS Monitor ROM utilities — MZF image scanning and loading. Runs from MROM space so it can page the User ROM without paging itself out. |
| 4 | monitor_1z-013a.asm |
MZ-700 1Z-013A monitor variant. |
| 5 | monitor_80c_1z-013a.asm |
1Z-013A monitor patched for 80-column display. |
| 6 | ipl.asm |
Initial Program Loader. |
| 7 | (empty) | Unused. |
La ventana User ROM en 0xE800-0xEFFF se conmuta entre 12 bancos activos distribuidos en los tres chips Flash User ROM (U4, U5, U6). El registro BNKSELUSER selecciona la pagina de 2 KB dentro del chip activo; los bits BK2A19 y BK2A20 en BNKCTRL seleccionan que chip se direcciona.
| Bank | Module | Description |
|---|---|---|
| 0 | rfs.asm |
Primary RFS entry point, command dispatcher, command table, bank-switch infrastructure shared by all banks. |
| 1 | rfs_bank1.asm |
Floppy disk controller (FDC) functions — drive selection and FDC boot. |
| 2 | rfs_bank2.asm |
SD card controller — SPI driver, SD card initialisation, SDCFS directory and file read/write. |
| 3 | rfs_bank3.asm |
Memory utilities — hex dump (D), memory edit (M), memory copy (CP), tape↔SD copy (T2SD/SD2T). |
| 4 | rfs_bank4.asm |
CMT (cassette) controller — tape load, save, and verify. |
| 5 | rfs_bank5.asm |
(Reserved / unused.) |
| 6 | rfs_bank6.asm |
Help screen, message strings, ASCII↔Sharp character set conversion table. |
| 7 | rfs_bank7.asm |
Memory test (R), 8253 timer test (T). |
| 8 | cbios_bank1.asm |
CP/M CBIOS — audio functions and low-level utilities. |
| 9 | cbios_bank2.asm |
CP/M CBIOS — screen driver and ANSI terminal emulation. |
| 10 | cbios_bank3.asm |
CP/M CBIOS — SD card disk driver (CP/M drives A:–G:). |
| 11 | cbios_bank4.asm |
CP/M CBIOS — floppy disk controller. |
Control de Bancos
Mecanismo del Latch Codificado
En las tarjetas v2.0 y v2.1 los registros de control de banco estan protegidos por un contador ascendente de 4 bits 74HCT191 que actua como latch codificado. El mecanismo impide que el codigo Z80 ejecutandose desde la RAM de programa conmute accidentalmente los bancos ROM simplemente leyendo o escribiendo una direccion que cae en el rango 0xEFF8-0xEFFF.
Funcionamiento:
Registro de Control de Bancos (BNKCTRL, 0xEFFF)
- Al encenderse o despues de una lectura de reset del latch, el contador 74HCT191 esta en 0. La logica de decodificacion de los registros de control I/O esta deshabilitada -- las lecturas de 0xEFF8-0xEFFF devuelven datos Flash ROM normales, y las escrituras a BNKSELMROM/BNKSELUSER/BNKCTRL no tienen efecto.
- Para desbloquear los registros de control: realizar exactamente 16 ciclos de lectura a cualquier direccion en el rango 0xEFF8-0xEFFF. Cada lectura incrementa el contador en uno. En las tarjetas v2.1 solo los verdaderos ciclos de lectura de memoria del bus (con
/MREQactivado) cuentan; los ciclos de refresco DRAM del Z80 (que activan/RFSHy desactivan/MREQ) son bloqueados por la puerta AND D1/D2 y no incrementan el contador. - Cuando el contador alcanza el Terminal Count (16), la salida TC se activa y habilita la logica de decodificacion de los registros de control I/O. Los registros de seleccion de banco son ahora escribibles.
- Para rebloquear: leer de la direccion 0xEFF9 una vez. Esto activa la linea de carga/reset del contador, devuelve el contador a 0 y desactiva inmediatamente los registros de control I/O.
El registro BNKCTRL controla las senales SPI bitbang, el chip select de la tarjeta SD, la configuracion del latch codificado y la seleccion del chip User ROM. Es de solo escritura (despues de que el latch codificado haya sido desbloqueado).
| Bits | Name | Description |
|---|---|---|
| 0 | BBCLK | BitBang SPI Clock output. Toggled by software SPI routines to generate the SPI clock signal. |
| 1 | SDCS | SD Card Chip Select — active low. Set to 0 to select the SD card, 1 to deselect. |
| 2 | BBMOSI | BitBang SPI MOSI data output. Set to the bit value before toggling BBCLK. |
| 5:3 | CDLTCH1–3 | Coded latch configuration bits. Sets the initial counter offset, controlling how many reads to 0xEFF8–0xEFFF are required to unlock the registers. Default 0 = 16 reads required. |
| 6 | BK2A19 | User ROM device/address select bit 0. Combined with BNKSELUSER to address the full 512 KB of each User ROM chip, and to select between U4, U5, and U6. |
| 7 | BK2A20 | User ROM device/address select bit 1. See BK2A19. |
Los bits BK2A19/BK2A20 extienden el espacio de direcciones efectivo del User ROM mas alla de los 256 bancos de dos kilobytes disponibles solo desde BNKSELUSER. Junto con BNKSELUSER forman una direccion compuesta en los tres chips Flash User ROM, seleccionando que chip esta activo (U4, U5 o U6) y que pagina de 2 KB dentro de el se mapea a la ventana 0xE800-0xEFFF.
Interfaz SPI
Se soportan tres implementaciones SPI, seleccionadas en tiempo de compilacion estableciendo exactamente un flag a
1 en rfs_definitions.asm. Solo uno puede estar habilitado en una compilacion de firmware dada.
| Flag | Value | Method | Speed | Hardware Required |
|---|---|---|---|---|
HW_SPI_ENA |
1 | Hardware SPI — 74HCT595/74HCT165 shift registers, 16 MHz crystal | 8 MHz — comparable to Flash ROM access speed | v2.0/v2.1 PCB with JP6 fitted for hardware SPI |
SW_SPI_ENA |
1 | Software bitbang SPI via Z80 I/O port bit manipulation of BNKCTRL | ~300 KB/s — faster than floppy, slower than ROM | v2.0/v2.1 PCB with JP6 fitted for software SPI |
PP_SPI_ENA |
1 | Parallel printer port bitbang (original v1.1 method) | Slowest | v1.1 PCB only |
Funcionamiento SPI hardware (tarjetas v2.0/v2.1):
- Escribir el byte de datos en HWSPIDATA (0xEFFB). El registro de desplazamiento 74HCT595 carga el byte listo para transmision.
- Escribir cualquier valor en HWSPISTART (0xEFFC) para iniciar la transferencia. El registro de desplazamiento transmite el byte en la linea MOSI sincronizado con el oscilador de 16 MHz, mientras el 74HCT165 simultaneamente recibe los bits MISO de la tarjeta SD.
- Leer HWSPIDATA (0xEFFB) para recuperar el byte recibido. El intercambio completo de 8 bits se completa en menos tiempo que un solo ciclo de lectura de memoria del Z80 -- por eso el throughput SPI hardware es comparable a la velocidad de acceso a la Flash ROM.
Arquitectura de Software
La tabla completa de modulos -- cada archivo fuente, su chip Flash de destino, banco ROM y funcion:
| Module | Flash Chip | Bank | Size | Description |
|---|---|---|---|---|
rfs.asm |
User (U4) | 0 | 2 KB | Command dispatcher, command table, bank-switch infrastructure. |
rfs_bank1.asm |
User (U4) | 1 | 2 KB | Floppy disk controller — drive select and FDC boot. |
rfs_bank2.asm |
User (U4) | 2 | 2 KB | SD card controller — SPI driver, SDCFS directory, file read/write. |
rfs_bank3.asm |
User (U4) | 3 | 2 KB | Memory utilities — D, M, CP, T2SD, SD2T. |
rfs_bank4.asm |
User (U4) | 4 | 2 KB | CMT controller — tape load, save, verify. |
rfs_bank5.asm |
User (U4) | 5 | 2 KB | (Reserved / unused.) |
rfs_bank6.asm |
User (U4) | 6 | 2 KB | Help screen, message strings, character set conversion. |
rfs_bank7.asm |
User (U4) | 7 | 2 KB | Memory test (R), timer test (T). |
cbios_bank1.asm |
User (U4) | 8 | 2 KB | CP/M CBIOS — audio, low-level utilities. |
cbios_bank2.asm |
User (U4) | 9 | 2 KB | CP/M CBIOS — screen driver, ANSI terminal emulator. |
cbios_bank3.asm |
User (U4) | 10 | 2 KB | CP/M CBIOS — SD card disk driver (drives A:–G:). |
cbios_bank4.asm |
User (U4) | 11 | 2 KB | CP/M CBIOS — floppy disk controller. |
monitor_sa1510.asm |
Monitor (U1) | 0 | 4 KB | Original SA-1510 monitor ROM (40-column). |
monitor_80c_sa1510.asm |
Monitor (U1) | 1 | 4 KB | SA-1510 patched for 80-column display. |
cbios.asm |
Monitor (U1) | 2 | 4 KB | CP/M 2.2 CBIOS kernel (relocated to 0xC000 during CP/M boot). |
rfs_mrom.asm |
Monitor (U1) | 3 | 4 KB | RFS Monitor ROM utilities — ROM scanning, MZF loading. |
monitor_1z-013a.asm |
Monitor (U1) | 4 | 4 KB | MZ-700 1Z-013A monitor variant. |
monitor_80c_1z-013a.asm |
Monitor (U1) | 5 | 4 KB | 1Z-013A patched for 80-column display. |
ipl.asm |
Monitor (U1) | 6 | 4 KB | Initial Program Loader. |
Dado que el Z80 solo puede ver una porcion de 2 KB del User ROM a la vez, cada banco User ROM contiene una copia del stub de conmutacion de banco en una direccion fija dentro de la ventana. Cuando el banco 0 necesita llamar a una rutina en el banco 3, escribe el numero del banco de destino en BNKSELUSER, salta al punto de entrada conocido en el banco recien mapeado, ejecuta el codigo requerido, reescribe el banco 0 en BNKSELUSER y retorna. Este mecanismo hace accesibles todos los 12 x 2 KB = 24 KB de codigo User ROM desde cualquier contexto de ejecucion.
Restriccion importante en tarjetas v2.0/v2.1: ninguna secuencia de instrucciones en bucle cerrado en el codigo del banco User ROM puede abarcar el rango de direcciones 0xEFF8-0xEFFF, ya que lecturas repetidas a ese rango incrementaran el contador del latch codificado y eventualmente desbloquearan los registros de banco inesperadamente.
SD Card Filing System (SDCFS)
En lugar de implementar FAT (que seria demasiado grande para caber en los bancos ROM disponibles de 2 KB), el firmware RomDisk utiliza un sistema de archivos especialmente disenado llamado SD Card Filing System (SDCFS). El diseno prioriza la simplicidad y un minimo uso de ROM sobre la flexibilidad.
La tarjeta SD se utiliza en modo raw -- no se escribe ninguna tabla de particiones. La imagen SDCFS comienza en el byte 0 (sector 0) de la tarjeta. Las imagenes de disco CP/M se colocan en el limite de 256 MB para asegurar que las 10 unidades RFS tengan espacio independientemente de lo llenas que esten.
Estructura del Directorio
Cada unidad SDCFS contiene un directorio plano de hasta 256 entradas. Cada entrada tiene exactamente 32 bytes, utilizando una estructura derivada del formato estandar de cabecera de cinta MZF (el mismo diseno de 32 bytes utilizado en las cintas de casete Sharp MZ):
| Field | Bytes | Description |
|---|---|---|
| FLAG1 | 1 | Bit 7 = 1: valid entry. Bit 7 = 0: inactive / deleted. |
| FLAG2 | 1 | MZF execution type (0x01 = binary program). |
| FILE NAME | 17 | Standard 17-character MZF filename (Sharp character encoding). |
| START SECTOR | 4 | First SD card sector within this drive image where the file’s data block begins. |
| SIZE | 2 | Actual byte count of the file data. |
| LOAD ADDR | 2 | Z80 RAM address to load the file data to. |
| EXEC ADDR | 2 | Auto-execution address for binary files (jumped to after load if non-zero). |
| RESERVED | 3 | Not currently used. |
El directorio ocupa los primeros 8 KB de cada imagen de unidad (256 entradas x 32 bytes). Los datos de archivos siguen inmediatamente. A cada archivo se le asigna un bloque fijo de 64 KB -- coincidiendo con el tamano maximo del bloque de cinta de casete Sharp MZ -- lo que mantiene la disposicion en disco trivialmente simple y hace que la copia SD/cinta sea una transferencia directa byte por byte alineada a sectores.
Distribucion de la Tarjeta SD
ADDRESS CONTENT
────────────────────────────────────────────────────────────────────────
0x00000000 RFS DRIVE 0 (16 MB)
0x00000000–0x00001FE0 Directory (256 × 32 B)
0x00002000–0xFF2000 File blocks (256 × 64 KB)
0x01002000 RFS DRIVE 1 (same structure)
...
0x09012000 RFS DRIVE 9 (same structure)
0x0A014000 (padding to 256 MB boundary)
────────────────────────────────────────────────────────────────────────
0x10000000 CP/M DISK IMAGE 0 (A:) — 16 MB
0x11000000 CP/M DISK IMAGE 1 (B:) — 16 MB
...
0x16000000 CP/M DISK IMAGE 6 (G:) — 16 MB
────────────────────────────────────────────────────────────────────────
Implementacion CP/M 2.2
CP/M 2.2 esta disponible en el RomDisk como capacidad integrada. Al escribir
Proceso de Arranque
CPM en el prompt del monitor RFS se inicia CP/M directamente desde la tarjeta SD. El TPA de CP/M es de 47 KB; el CCP se encuentra en 0x9C00 con el BDOS encima, mientras que todo el CBIOS reside en ROM (Monitor ROM banco 2 mas User ROM bancos 8-11) y no consume RAM de programa.
- El comando RFS
CPMconmuta el Monitor ROM al banco 2 (el kernel CBIOS), que contiene el punto de entrada cold-boot de CP/M en 0x0000. - La rutina cold-boot del CBIOS inicializa todo el hardware (teclado, pantalla, tarjeta SD, disquetera si esta presente) y construye los Disk Parameter Headers para cada unidad disponible.
- El CBIOS lee las imagenes CCP y BDOS del disco de sistema CP/M en la tarjeta SD a la RAM en 0x9C00.
- El control pasa al CCP en 0x9C00. CP/M esta ahora en ejecucion.
El Custom BIOS esta dividido en cinco modulos ROM de manera que ningun banco individual de 2 KB sea excedido:
| Module | ROM Location | Contents |
|---|---|---|
cbios.asm |
Monitor ROM bank 2 (0x0000–0x0FFF while active) | All 17 CP/M CBIOS API vectors, cold/warm boot handlers, interrupt handler, disk parameter tables. |
cbios_bank1.asm |
User ROM bank 8 | Audio (bell, melody), real-time clock routines, low-level keyboard handler. |
cbios_bank2.asm |
User ROM bank 9 | Screen driver (character output, scroll, cursor control), ANSI/VT100 terminal emulator. |
cbios_bank3.asm |
User ROM bank 10 | SD card disk driver — translates CP/M 128-byte sector reads and writes to SDCFS drive images at the 256 MB boundary. |
cbios_bank4.asm |
User ROM bank 11 | Floppy disk controller — supports physical CP/M floppy disks. |
Las unidades CP/M se mapean a imagenes de disco de la tarjeta SD durante el cold-boot del CBIOS. El mapeo estandar de unidades es:
| CP/M Drive | Image | Contents |
|---|---|---|
| A: | CP/M Disk Image 0 | OS programs, Turbo Pascal, Hi-Soft C, Fortran 80, MS-BASIC 80. |
| B: | CP/M Disk Image 1 | Pascal MTP v5.61, Turbo Pascal v3.00a, Pascal User Group disks. |
| C: | CP/M Disk Image 2 | PLI, PLM 80, WordStar v3.0/v3.3/v4.0. |
| D:–G: | CP/M Disk Images 3–6 | Grant Searle CP/M collection disks. |
Sistema de Compilacion
Todo el desarrollo se realiza en Linux (Debian/Ubuntu). El sistema de compilacion es autocontenido dentro del repositorio. El punto de entrada principal es
Prerrequisitos
build.sh en el directorio software/RFS/.
| Tool | Purpose |
|---|---|
| Java JRE 8+ | Runs the GLASS Z80 assembler (tools/glass.jar). java must be on PATH. |
| bash | All build scripts are bash shell scripts. |
| perl | Required by tools/mzftool.pl for MZF file manipulation. |
| gcc / make | Compiles cpmtools from source on first build (automatic). |
| dd, cat, stat | Standard Linux utilities used by the packaging scripts. |
El ensamblador GLASS Z80 esta incluido como
Flags de Compilacion
tools/glass.jar -- no se requiere ninguna instalacion por separado.
Editar
asm/include/rfs_definitions.asm antes de compilar. Los flags de interfaz SPI son mutuamente excluyentes -- establecer exactamente uno a 1:
| Flag | Default | Description |
|---|---|---|
HW_SPI_ENA |
1 | Hardware SPI (v2.0/v2.1 PCB, JP6 configured for hardware SPI). Default for all current boards. |
SW_SPI_ENA |
0 | Software bitbang SPI (v2.0/v2.1 PCB, JP6 configured for software SPI). |
PP_SPI_ENA |
0 | Parallel port bitbang SPI. For v1.1 boards only. |
FUSIONX_ENA |
1 | Include tranZPUter FusionX support. |
ENADEBUG |
0 | Enable assembly-time debug output. |
git clone https://git.eaw.app/eaw/RFS.git cd RFS/software/RFS # Full build — assembles all ROMs, packages Flash images, builds SD card image: ./build.sh # Full build including reprocessing all MZF application files # (only needed when files in MZF/ have changed): ./build.sh -m
build.sh ejecuta los siguientes pasos en orden:
- Compila
cpmtoolsdesde el codigo fuente si aun no esta compilado, y lo anade alPATH. tools/assemble_rfs.sh-- ensambla todos los bancos de firmware RFS (rfs.asm, rfs_bank1-7.asm) en imagenes ROM individuales.tools/assemble_cpm.sh-- ensambla el CBIOS CP/M 2.2 (cbios.asm, cbios_bank1-4.asm) y el kernel CCP+BDOS CP/M.tools/assemble_roms.sh-- ensambla todas las variantes del monitor (SA-1510, 80c, 1Z-013A, IPL) y los binarios de aplicaciones MZF.tools/processMZFfiles.sh(solo con el flag-m) -- convierte archivos MZF sin procesar deMZF/en imagenes con sectores rellenados a 128 bytes y 256 bytes enMZB/.tools/make_roms.sh-- empaqueta las imagenes ROM ensambladas y los binarios de aplicaciones MZF en imagenes Flash ROM de 512 KB para cada chip Flash.tools/make_cpmdisks.sh-- crea imagenes de disco CP/M en formato RAW (para tarjeta SD) y formato CPC Extended Disk (para emuladores de disquetera).tools/make_sdcard.sh-- combina las 10 imagenes de unidad RFS y las 7 imagenes de disco CP/M en la imagen final de la tarjeta SD.
Despues de una compilacion exitosa el directorio
roms/ contiene:
| File | Target Chip | Description |
|---|---|---|
MROM_ROMDISK_256.bin |
Monitor ROM Flash (U1) | Monitor ROM image: SA-1510, 80c SA-1510, CP/M CBIOS, RFS mrom utils, 1Z-013A monitors, IPL across 7 × 4 KB banks. |
USER_ROM_256.bin |
User ROM Flash U4 | RFS banks 0–7, CP/M CBIOS banks 8–11, packed MZF applications. |
USER_ROM_II_256.bin |
User ROM Flash U5 | Additional MZF applications (overflow from U4). |
USER_ROM_III_256.bin |
User ROM Flash U6 | Additional MZF applications (overflow from U5). |
SHARP_MZ80A_RFS_IMAGE_0–9.img |
SD card | Individual RFS drive images, one per drive (drives 0–9). |
SHARP_MZ80A_RFS_CPM_IMAGE_1.img |
SD card | Combined image: 10 RFS drives + 7 CP/M disk images. Write this file to the SD card. |
Para programar los chips Flash, utilizar un programador compatible SST39SF040. Escribir
MROM_ROMDISK_256.bin en U1, USER_ROM_256.bin en U4, y las imagenes de desbordamiento en U5 y U6 si estan instalados. Para escribir la imagen de la tarjeta SD usar dd:
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512 status=progress
Sitios de Referencia
| Resource | Link |
|---|---|
| RomDisk project page | /sharpmz-upgrades-romdisk/ |
| RFS project page | /sharpmz-upgrades-rfs/ |
| RFS User Manual | /sharpmz-upgrades-rfs-usermanual/ |
| RFS Developer’s Guide | /sharpmz-upgrades-rfs-developersguide/ |
| RFS Technical Guide | /sharpmz-upgrades-rfs-technicalguide/ |
| RFS Gallery | /sharpmz-upgrades-rfs-gallery/ |
| SFD-700 mkII Technical Guide | /sfd700-technicalguide/ |
| picoZ80 Technical Guide | /picoz80-technicalguide/ |
| GLASS Z80 Assembler | Bundled in tools/glass.jar |
| SST39SF040 Flash datasheet | Microchip / Greenliant product page |
| AS6C4008 SRAM datasheet | Alliance Memory product page |