MZ-80A RomDisk — Manual del Usuario
Manual del Usuario RomDisk
El Sharp MZ-80A RomDisk es una tarjeta hija PCB que se conecta directamente a los zocalos de la ROM Monitor y la ROM de Usuario del Sharp MZ-80A, o del Sharp MZ-1200 si esa maquina tiene un zocalo ROM de Usuario instalado. Reemplaza esos dos chips de solo lectura con hasta cuatro Flash RAM SST39SF040 de 512KB y una RAM Estatica AS6C4008 opcional de 512KB, proporcionando a la maquina una unidad ROM paginada de hasta 2MB, una interfaz SPI hardware y un slot micro SD para almacenamiento masivo. El firmware que se ejecuta en ella -- el Rom Filing System (RFS) -- proporciona un monitor mejorado, un sistema de archivos en tarjeta SD con diez unidades de 16MB cada una, arranque de CP/M 2.2 y mas de treinta nuevos comandos de monitor, manteniendo el familiar prompt SA-1510
* y todos los comandos originales intactos.
Este manual cubre el hardware fisico: que es la tarjeta RomDisk, como instalarla, como programar sus chips Flash, como preparar una tarjeta SD y como usar el firmware RFS en el dia a dia. Para detalles de la arquitectura del firmware y del sistema de compilacion consulte la Guia Tecnica RFS. Para los detalles internos del codigo fuente consulte la Guia del Desarrollador RFS.
Lo que necesita
Antes de comenzar, reuna los siguientes elementos:
| Elemento | Notas |
|---|---|
| RomDisk PCB | v2.1 recomendada (ensamblada o en kit). v1.1 y v2.0 tambien son compatibles con la version de firmware apropiada. |
| Sharp MZ-80A o MZ-1200 | El RomDisk se adapta fisicamente solo al MZ-80A o al MZ-1200 (el MZ-1200 requiere un zocalo ROM de Usuario instalado). El MZ-700 tiene una arquitectura de software similar pero carece de los zocalos ROM fisicos y del espacio interno para la tarjeta. |
| Programador EPROM TL866 II+ o compatible | Necesario para escribir los chips Flash ROM fuera de la tarjeta. La utilidad de codigo abierto minipro se usa en los ejemplos siguientes. |
| Tarjeta micro SD (minimo 1 GB, formateada FAT) | La imagen SD preconstruida es de aproximadamente 512MB. Cualquier tarjeta micro SD estandar de 1GB o mayor funciona. |
| Imagenes ROM y SD preconstruidas | Disponibles en el directorio releases/ del repositorio Gitea. |
| Precauciones antistaticas | Pulsera o alfombrilla antistatica. Manipule los chips Flash y la tarjeta solo despues de conectarse a tierra. |
| Extractor de chips o destornillador plano pequeno | Para retirar los chips ROM existentes de los zocalos de la placa base. |
Instalacion fisica
La tarjeta RomDisk se instala en el Sharp MZ-80A en lugar de los dos chips ROM de fabrica. El procedimiento siguiente se aplica al modelo de escritorio estandar MZ-80A. Tomese su tiempo -- el proceso es sencillo pero requiere cuidado alrededor de los zocalos de chips.
Apertura de la maquina
- Apague el MZ-80A y desconecte el cable de alimentacion.
- De la vuelta a la maquina. Retire los dos tornillos en la parte inferior de la carcasa.
- Levante cuidadosamente la cubierta superior y apartela. La placa base queda expuesta.
- Localice IC2 (la ROM Monitor, un DIP de 24 pines cerca del centro-izquierda de la placa, mapeada en 0x0000-0x0FFF) e IC3 (la ROM de Usuario, un DIP de 24 pines mapeada en 0xE800-0xEFFF).
Usando un extractor de chips o un destornillador plano, extraiga cuidadosamente IC2 e IC3 de sus zocalos. Trabaje desde ambos extremos en pequenos incrementos -- levante un extremo un poco, luego el otro, alternando hasta que el chip se deslice. Forzar desde un solo extremo doblara los pines. Guarde ambos chips en un lugar seguro y antistatico.
Colocacion de la tarjeta RomDisk
- La tarjeta RomDisk lleva en su parte inferior dos conjuntos de matrices de pines DIP elevados -- una matriz de 24 pines para el zocalo ROM Monitor (IC2) y una para el zocalo ROM de Usuario (IC3). Se insertan directamente en los zocalos vacios dejados por las ROMs retiradas.
- Verifique la orientacion del pin 1 antes de insertar. El pin 1 de cada matriz debe alinearse con la marca del pin 1 (muesca o punto) en el zocalo correspondiente de la placa base. Insertar la tarjeta al reves impedira el arranque de la maquina y puede danar componentes.
- Presione la tarjeta firme y uniformemente en ambos zocalos simultaneamente hasta que las matrices de pines esten completamente insertadas. La tarjeta quedara elevada sobre la superficie de la placa base -- esto es normal.
- Inspeccione ambos conectores de lado para confirmar que todos los pines estan enganchados y ninguno esta doblado o puenteando pines adyacentes.
- La tarjeta RomDisk sobresaldra por encima de la placa base. Verifique que ningun cable, conector o componente en la parte inferior de la cubierta superior presione contra la tarjeta cuando se reensamble la carcasa.
Las tarjetas RomDisk v2.0 y v2.1 incluyen un slot micro SD. Como la carcasa del MZ-80A esta casi completamente cerrada, el slot necesita ser accesible desde el exterior o a traves de una abertura en la carcasa. Los enfoques comunes incluyen:
Cierre de la maquina
- Enrutar el cable del slot hacia la abertura existente del reproductor de casetes en el lado derecho de la maquina.
- Cortar una pequena ranura en el panel lateral izquierdo o trasero de la carcasa (tipicamente 15 x 2 mm) y pegar el slot al ras con la superficie exterior.
Antes de cerrar, realice una verificacion visual final: la tarjeta RomDisk esta completamente insertada en ambos zocalos, el pin 1 esta alineado en ambos conectores, y nada interferira con la parte inferior de la cubierta superior. Reemplace la cubierta y vuelva a colocar los dos tornillos inferiores. No apriete demasiado -- los separadores de plastico son delicados en las maquinas antiguas.
Programacion de las Flash ROMs
Los chips Flash ROM de la tarjeta RomDisk deben programarse antes de instalar la tarjeta. La Flash ROM Monitor (U1/SST39SF040 en el zocalo Monitor) no puede escribirse in-circuit porque el hardware del Sharp MZ-80A bloquea los ciclos de escritura del bus hacia el espacio de direcciones de la ROM Monitor. Todos los chips deben programarse en un programador EPROM externo.
Las imagenes ROM preconstruidas estan disponibles en el directorio
releases/ del repositorio Gitea RFS. Descargue los siguientes archivos:
| Archivo | Chip | Zocalo |
|---|---|---|
MROM_ROMDISK_256.bin |
SST39SF040 | U1 — Monitor ROM Flash (obligatorio) |
USER_ROM_256.bin |
SST39SF040 | U4 — User ROM Flash 1 (obligatorio) |
USER_ROM_II_256.bin |
SST39SF040 | U5 — User ROM Flash 2 (opcional, v2.0+) |
USER_ROM_III_256.bin |
SST39SF040 | U6 — User ROM Flash 3 (opcional, v2.0+) |
Utilice un programador TL866 II+ o compatible con la utilidad de linea de comandos
minipro. Retire cada chip Flash de la tarjeta RomDisk, insertelo en el zocalo ZIF del programador y ejecute el comando apropiado:
# Programar el Monitor ROM Flash (U1): minipro -p SST39SF040 -w MROM_ROMDISK_256.bin # Programar el User ROM Flash 1 (U4): minipro -p SST39SF040 -w USER_ROM_256.bin # Programar el User ROM Flash 2 (U5) — opcional: minipro -p SST39SF040 -w USER_ROM_II_256.bin # Programar el User ROM Flash 3 (U6) — opcional: minipro -p SST39SF040 -w USER_ROM_III_256.bin
Despues de programar cada chip,
Notas sobre versiones de hardware
minipro verifica automaticamente los datos escritos contra el archivo fuente. Un mensaje Verification OK confirma que el chip fue escrito correctamente. Reinstale cada chip programado en su zocalo en la tarjeta RomDisk.
La Flash Monitor contiene ocho bancos de 4KB. Los chips Flash ROM de Usuario contienen cada uno doce bancos de 2KB. Juntos proporcionan el firmware RFS completo, los programas de la unidad ROM (BASIC, cargador CP/M, ensamblador, etc.) y el espacio de trabajo paginado usado durante las operaciones SD y CP/M.
Existen tres versiones de la tarjeta RomDisk. Las imagenes ROM son compatibles entre todas las versiones, pero las caracteristicas de hardware difieren:
| Version | Caracteristicas principales |
|---|---|
| v1.1 | Una Flash de 512KB en el zocalo Monitor, una en el zocalo de Usuario. Un latch simple maneja la seleccion de banco. Sin tarjeta SD. Adecuada solo para uso como unidad ROM. |
| v2.0 | Agrega un coded latch (contador 74HCT191 que requiere 16 lecturas consecutivas a las direcciones 0xEFF8-0xEFFF para desbloquear los registros de control), segundo y tercer slots Flash ROM de Usuario (U5, U6), SRAM opcional de 512KB (AS6C4008) y un slot de tarjeta SD con SPI bitbang por software y un circuito SPI hardware dedicado a 8MHz. |
| v2.1 | Version de correccion de errores. Corrige una interferencia entre la decodificacion de direcciones de refresco DRAM y la senal de reset del coded latch agregando una puerta AND (construida con diodos) y recableando 0xEFF9 como linea de borrado del latch. Todas las funcionalidades v2.0 se mantienen. Esta es la version recomendada para nuevas construcciones. |
Escritura de la imagen de tarjeta SD
La imagen SD preconstruida agrupa diez unidades RFS (cada una de 16MB, numeradas 0-9) y siete imagenes de disco CP/M 2.2 en un unico archivo binario crudo. Se escribe directamente en la tarjeta SD comenzando en el sector 0 -- no se crea tabla de particiones y no se requiere ningun paso de formateo antes de escribir.
Descargue
SHARP_MZ80A_RFS_CPM_IMAGE_1.img del directorio releases/ del repositorio Gitea. Inserte la tarjeta micro SD en su computadora e identifique su nodo de dispositivo (ej. /dev/sdb en Linux). Verifique cuidadosamente el nodo de dispositivo -- escribir en el dispositivo equivocado sobreescribira datos irreversiblemente.
# Linux / macOS — reemplace /dev/sdX con su nodo de dispositivo de tarjeta SD: dd if=SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=4M status=progress sync
La bandera
Distribucion de la tarjeta SD
status=progress imprime un contador de bytes en ejecucion para confirmar que la escritura esta progresando. El comando sync vacia todas las escrituras pendientes antes de retirar la tarjeta. En macOS, use bs=4m (minusculas) y omita status=progress si su version de dd no lo soporta.
Una vez completada la escritura, expulse la tarjeta de forma segura de su computadora e insertela en el slot SD del RomDisk.
La imagen organiza el almacenamiento de la siguiente manera:
| Region | Desplazamiento | Contenido |
|---|---|---|
| RFS Drive 0 | 0 MB | Programas de codigo maquina comunes y MZ-80A |
| RFS Drive 1 | 16 MB | Programas de codigo maquina MZ-80K |
| RFS Drive 2 | 32 MB | Programas de codigo maquina MZ-700 |
| RFS Drive 3 | 48 MB | Programas de codigo maquina MZ-800 / MZ-1500 |
| RFS Drive 4 | 64 MB | Programas de codigo maquina MZ-80B / MZ-2000 |
| RFS Drive 5 | 80 MB | Programas BASIC, tipo 2 (MZ-80A) |
| RFS Drive 6 | 96 MB | Programas BASIC, tipo 2 (MZ-80K) |
| RFS Drive 7 | 112 MB | Programas BASIC, tipo 5 (MZ-700 / MZ-800) |
| RFS Drive 8 | 128 MB | Programas varios |
| RFS Drive 9 | 144 MB | Programas varios |
| Imagenes de disco CP/M | 256 MB | Unidades A:-G: (Turbo Pascal, Hi-Soft C, WordStar, coleccion Grant Searle, etc.) |
Primer arranque
Con los chips Flash programados y la tarjeta RomDisk colocada en ambos zocalos ROM, encienda el MZ-80A. La ROM Monitor detecta el firmware RFS en la direccion 0xE800 y lo ejecuta. RFS se inicializa y anade "
+ RFS vx.xx" al banner de inicio SA-1510:
SHARP MZ-80A Monitor SA-1510 + RFS *
El
* es el prompt del monitor. Cada comando original SA-1510 esta disponible sin cambios. Escriba H y presione Enter para mostrar la pantalla de ayuda de comandos RFS paginada. Presione Espacio para avanzar entre paginas.
La linea + RFS aparece cada vez que RFS se inicializa -- no depende de la tarjeta SD. Si la tarjeta esta ausente o falla la inicializacion, se imprime un codigo de error bajo el banner. El prompt * sigue apareciendo y todos los comandos basados en ROM (IR, LR, etc.) permanecen disponibles incluso sin una tarjeta SD funcional.
Comandos del Monitor RFS
El conjunto completo de comandos del monitor RFS se lista a continuacion. Todos los comandos originales SA-1510 permanecen disponibles y no se muestran aqui. Las direcciones y contadores siempre se ingresan como valores hexadecimales de 4 digitos salvo que se indique lo contrario.
| Comando | Parametros | Descripcion |
|---|---|---|
| 0 .. 9 | — | Cambia la unidad SD activa al numero dado (0-9). Escriba el digito y presione Enter. |
| 40 | — | Cambia al modo de visualizacion de 40 columnas. Requiere una extension Kuma 40/80 columnas o un Modulo de Video. |
| 80 | — | Cambia al modo de visualizacion de 80 columnas. Requiere una extension Kuma 40/80 columnas o un Modulo de Video. |
| B | — | Activa o desactiva el pitido de entrada de teclado (alterna cada vez que se emite el comando). |
| BASIC | — | Localiza el interprete BASIC SA-5510 en la unidad SD activa o en ROM, lo carga y ejecuta. |
| C | [valor] |
Borra (inicializa) la memoria de 0x1200 a 0xD000 con 0x00, o con el valor hex de 8 bits proporcionado. |
| CP | orig dest tam |
Copia un bloque de memoria. Los tres argumentos son hex de 4 digitos. |
| CPM | — | Localiza CP/M 2.2 en la unidad SD activa o en ROM, lo carga y arranca. |
| D | dir [dir2] |
Volcado hex y ASCII de la memoria. |
| EC | nombre o no. |
Borra un archivo de la unidad SD activa. |
| F | [unidad] |
Arranca desde disquete. |
| f | — | Ejecuta directamente el codigo ROM de arranque disquete AFI original en la direccion 0xF000. |
| H | — | Muestra la pantalla de ayuda de comandos paginada. |
| IC | — | Listado paginado del directorio de archivos en la unidad SD activa. |
| IR | — | Listado paginado de los programas almacenados en las unidades Flash ROM. |
| J | direccion |
Salta a (ejecuta desde) la direccion hex dada. |
| L / LT | [nombre] |
Carga un archivo desde la cinta (CMT) y lo ejecuta. |
| LTNX | [nombre] |
Carga un archivo desde la cinta (CMT) sin ejecutarlo. |
| LR | nombre o no. |
Carga un programa desde la unidad Flash ROM y lo ejecuta. |
| LRNX | nombre o no. |
Carga un programa desde la unidad Flash ROM sin ejecutarlo. |
| LC | nombre o no. |
Carga un programa desde la unidad SD activa y lo ejecuta. |
| LCNX | nombre o no. |
Carga un programa desde la unidad SD activa sin ejecutarlo. |
| M | direccion |
Editor de memoria interactivo. |
| R | — | Ejecuta una prueba completa de memoria DRAM sobre el rango 0x1200-0xCFFF. |
| S / ST | inicio fin exec |
Guarda un rango de memoria en cinta (CMT). |
| SC | inicio fin exec |
Guarda un rango de memoria en la unidad SD activa. |
| SD2T | nombre o no. |
Copia un archivo de la unidad SD activa a cinta (CMT). |
| T | — | Prueba el chip temporizador 8253. |
| T2SD | — | Carga un programa desde la cinta (CMT) y lo escribe en la unidad SD activa. |
| V | — | Verifica un archivo recien guardado en cinta contra los datos en memoria. |
| X | — | Cambia a la variante ROM hi-load, modificando el mapeo DRAM para cubrir 0x0000-0xCFFF. |
Uso de las unidades de tarjeta SD
RFS proporciona diez unidades SD logicas numeradas de 0 a 9. Cada unidad ocupa una region de 16MB en la tarjeta SD y contiene un directorio plano de hasta 256 archivos, cada uno almacenado en formato Sharp MZF. Los archivos pueden ser de hasta 64KB.
Escriba el numero de unidad (0-9) en el prompt del monitor y presione Enter para activar esa unidad. Los comandos IC e IR siempre operan sobre la unidad actualmente activa.
Listar archivos
Escriba IC para mostrar el directorio de la unidad SD activa.
* IC 00 INVADERS 01 DEFENDER 02 GALAXIANS 03 SPACE ATTACK 04 PACMAN 05 SNAKE 06 FROGGER 07 BREAKOUT ... Presione ESPACIO para continuar, X para salirCargar programas
* LC INVADERS ; Cargar y ejecutar INVADERS desde la unidad SD activa * LCNX INVADERS ; Cargar sin ejecutar * LC 04 ; Cargar y ejecutar el archivo numero 04 * LR SA-5510RFS ; Cargar y ejecutar SA-5510RFS desde la unidad ROMGuardar programas
* SC120020001200 FILE NAME? MYPROG SAVEDBorrar archivos
* EC MYPROG ; Borrar por nombre * EC 04 ; Borrar por numero
Modos de visualizacion
Si una extension Kuma 40/80 columnas o el Modulo de Video color 40/80 esta instalado en el MZ-80A, RFS puede alternar entre los modos de visualizacion de 40 y 80 columnas:
* 40 ; Cambiar a visualizacion de 40 columnas * 80 ; Cambiar a visualizacion de 80 columnas
Operaciones de cinta
RFS mantiene todos los comandos originales SA-1510 de cinta (CMT) y anade dos nuevos comandos para la transferencia de archivos entre cinta y tarjeta SD.
Carga y guardado en cinta
Los comandos de cinta estandar funcionan exactamente como en el monitor SA-1510 original:
Transferencia de cinta a tarjeta SD
- L o LT -- Carga el siguiente archivo de la cinta y lo ejecuta.
- LTNX -- Como arriba pero carga sin ejecutar.
- S o ST -- Guarda un rango de memoria en cinta.
- V -- Verifica el ultimo guardado en cinta contra la memoria.
T2SD lee el siguiente programa de la cinta y lo escribe directamente en la unidad SD activa.
* T2SD PRESS PLAY ...Transferencia de tarjeta SD a cinta
SD2T lee un archivo de la unidad SD activa y lo escribe en cinta, reproduciendo exactamente el formato original de la cinta.
* SD2T INVADERS PRESS REC ...
Uso de BASIC SA-5510
Escriba BASIC en el prompt del monitor para cargar y lanzar el interprete Sharp SA-5510 BASIC. Los comandos BASIC extendidos de RFS incluyen
LOAD, SAVE y DIR que funcionan con el sistema de archivos SD RFS.
* BASIC SHARP MZ-80A BASIC SA-5510RFS READY
| Comando | Ejemplo | Descripcion |
|---|---|---|
| LOAD | LOAD "TEST" |
Carga y ejecuta el programa BASIC TEST desde la unidad SD activa. |
| LOAD | LOAD "3:TEST" |
Carga TEST desde la unidad SD 3. |
| SAVE | SAVE "TEST" |
Guarda el programa BASIC actual en la unidad SD activa. |
| DIR | DIR |
Lista el directorio de la unidad SD activa. |
Ejecutar CP/M 2.2
Escriba CPM en el prompt del monitor para arrancar CP/M 2.2. La implementacion CBIOS reside enteramente en Flash ROM, dejando los 47KB TPA completos libres para programas de aplicacion.
* CPM CP/M 2.2 - SHARP MZ-80A A>
| Unidad CP/M | Contenido |
|---|---|
| A: | Tarjeta SD — programas de sistema CP/M, Turbo Pascal, Hi-Soft C, etc. |
| B: | Tarjeta SD — utilidades Pascal y discos Pascal User Group |
| C: | Tarjeta SD — PLI, PLM, WordStar |
| D:-G: | Tarjeta SD — coleccion CP/M Grant Searle |
El emulador de terminal ANSI integrado mapea las secuencias de escape ANSI estandar a la pantalla del MZ-80A. Para volver al monitor RFS desde CP/M, realice un arranque en caliente con Ctrl+C. Un retorno completo al monitor SA-1510 requiere un reset de hardware.
Solucion de problemas
No aparece texto "+ RFS" despues del banner de inicio
- Flash ROMs no programadas o programadas incorrectamente -- verifique que
MROM_ROMDISK_256.binfue escrito en el chip Flash Monitor (U1) yUSER_ROM_256.binen U4. - PCB no completamente insertada -- presione ambas matrices DIP firmemente en sus zocalos.
- Coded latch activado por ciclos de refresco (solo v2.0) -- la tarjeta v2.1 agrega una puerta AND (D1/D2) para prevenir esto.
Codigo de error de tarjeta SD despues de la linea "+ RFS"
- Tarjeta SD no insertada -- verifique que la tarjeta esta completamente insertada en el slot.
- Imagen SD no escrita -- reescriba con
dd. - Tarjeta SD incompatible -- una tarjeta SD o SDHC estandar de 2GB-8GB es la mas fiable.
La maquina no arranca en absoluto
- PCB insertada al reves -- verifique la alineacion del pin 1. Apague inmediatamente si se sospecha esto.
- Pines doblados o faltantes -- retire la tarjeta e inspeccione todos los pines.
- Imagen ROM incorrecta para el hardware -- verifique que el Flash Monitor fue programado con
MROM_ROMDISK_256.bin.
IC muestra un directorio vacio o "SD ERROR"
- Tarjeta SD escrita incorrectamente -- la imagen debe escribirse como binario crudo al sector 0 sin tabla de particiones.
- Tarjeta SD no insertada -- presione la tarjeta firmemente hasta que haga clic.
CP/M no arranca o muestra errores de disco
- Unidad activa incorrecta -- seleccione la unidad 0 antes de escribir CPM.
- Imagen SD incompleta -- reescriba con una tarjeta de al menos 512MB.
La carga o el guardado en cinta falla
- El timing de la cinta en el MZ-80A es sensible a la alineacion de la cabeza CMT y la calidad de la cinta. Use el comando TC para ajustar la compensacion del retardo de lectura.
Sitios de referencia
| Recurso | Enlace |
|---|---|
| Pagina del proyecto RomDisk | /sharpmz-upgrades-romdisk/ |
| Manual del Usuario RFS | /sharpmz-upgrades-rfs-usermanual/ |
| Guia Tecnica RFS | /sharpmz-upgrades-rfs-technicalguide/ |
| Guia del Desarrollador RFS | /sharpmz-upgrades-rfs-developersguide/ |
| Galeria RFS | /sharpmz-upgrades-rfs-gallery/ |
| picoZ80 (reemplazo Z80 RP2350) | /picoz80/ |
| tranZPUter FusionX | /transzputer-fusionx/ |
| minipro (utilidad TL866 de codigo abierto) | https://gitlab.com/DavidGriffith/minipro |