MSX-SDF-1 · proyecto de ejemplo
Lector de SD
Una disquetera para cualquier MSX, construida con el kit MSX-SDF-1
Monta imágenes de disco .DSK guardadas en una tarjeta SD, y la máquina las ve como una unidad real: arranca MSX-DOS, y para el MSX es una disquetera común.
Es el primer proyecto hecho sobre la placa. No le agrega al kit nada que no tenga a mano cualquier otro perfil: un módulo microSD enchufado a H1, una Disk ROM en la EEPROM y un firmware para el ATmega.
- Prototipo · rev1
- MSX1 en adelante
- MSX-DOS 1
- Imágenes .DSK de 720 KB
- Firmware 0.1
La misma placa del kit, rev1: el lector de SD no necesita otra.
Antes que nada
La placa todavía es un prototipo.
El lector funciona sobre la rev1, que necesita correcciones a mano antes de andar. Antes de pensar en armar uno, leé el aviso en la página del kit.
Cómo está armado
Un perfil del kit: qué se suelda, qué ROM, qué firmware
El lector está armado como cualquier otro perfil. La tarjeta SD no vive en el PCB: es un módulo colgado del header H1, igual que lo estaría un UART o un ESP32. Todo lo que es del disco está en la ROM y en el firmware.
Por eso lo que sigue sirve también como receta: son exactamente las decisiones que hay que tomar para cualquier otro perfil del kit.
- Qué se suelda
- Un módulo de tarjeta microSD, enchufado a H1: alimentación, el bus SPI y su chip select, en los pines 1 a 5 y 10.
- ROM
- Una Disk ROM de MSX-DOS 1 de 16 KB, con el driver de disco propio en Z80 y los comandos CALL SDF. Va en la página 1 (4000h–7FFFh) de la EEPROM de 64 KB; los otros tres bloques quedan libres.
- Firmware
- Lee y escribe los sectores de la imagen .DSK por SPI, y guarda en la EEPROM interna del ATmega qué imagen tiene cada unidad.
- Puertos
- Los dos del kit: 0x00 para datos y 0x01 para comandos, con /WAIT sosteniendo al Z80 mientras el micro contesta.
Qué pasa cuando MSX-DOS lee un sector
-
MSX-DOS le pide el sector a la Disk ROM
Como con cualquier disquetera, llama a DSKIO con la unidad, el número de sector y cuántos quiere.
-
El driver se lo pasa al micro
Escribe el comando de lectura en el puerto 0x01 y los parámetros del pedido en el 0x00.
-
El Z80 espera
Cada acceso a esos puertos baja /WAIT: el Z80 queda congelado a mitad del ciclo hasta que el ATmega atiende el byte y lo suelta.
-
El firmware contesta
Busca el sector en la imagen .DSK montada y devuelve un byte de estado y los 512 bytes del sector, que el driver lee del puerto 0x00.
Uso
Cómo se usa
Una tarjeta SD con imágenes de disco adentro, el cartucho en la ranura, la máquina apagada. Encendés, y el MSX arranca con disquetera: MSX-DOS, DIR, COPY, los programas de siempre. No hay driver que cargar — para la máquina es una unidad de disco más.
Lo que ve el MSX es una disquetera de 720 KB, doble cara y doble densidad. Cualquier imagen .DSK de ese formato anda; las de otro tamaño, el firmware no las monta.
- Compatibilidad
- MSX1 en adelante. En el slot aparece como una Disk ROM común.
- Formato
- Imágenes .DSK de 720 KB — 3½", doble cara y doble densidad.
- Tarjeta
- microSD formateada en FAT, en un módulo enchufado a H1.
- Unidades
- Dos, A y B. Cada una recuerda su imagen al apagar.
Las imágenes, desde BASIC
La imagen de cada unidad se elige desde el BASIC, con los comandos que la ROM del lector le suma al intérprete. La elección queda guardada al apagar: la próxima vez la máquina arranca con los mismos discos.
La primera vez, con el firmware recién grabado, las dos unidades arrancan vacías: hay que montar una imagen con CALL SDFMOUNT antes de que el DOS encuentre algo.
10 REM listar los .DSK de la tarjeta
20 CALL SDFFILES
30 REM montar una imagen en la unidad A
40 CALL SDFMOUNT(0, "MSXDOS.DSK")
50 REM vaciar la unidad B
60 CALL SDFUMOUNT(1)
Los comandos del firmware 0.1. CALL SDFTEST muestra la versión del firmware.
Funcionando
El lector en funcionamiento. Verlo en YouTube.
Origen
El proyecto con el que empezó todo
La placa se diseñó para esto: que un MSX pudiera leer imágenes de disco desde una tarjeta SD. Recién con el diseño terminado quedó claro que el hardware no tenía nada de específico, y que el disco era apenas un juego de comandos montado encima.
Por eso el lector de SD es el ejemplo natural del kit: muestra la placa haciendo algo útil, y deja a la vista qué partes son del disco y cuáles le sirven a cualquier otro perfil.
Estado
Dónde está el ejemplo
Hoy el firmware lee y escribe sectores, que es lo que hace falta para arrancar MSX-DOS y trabajar, y le avisa al DOS cuando se cambia la imagen de una unidad. El formato de disco está fijo en 720 KB desde la ROM, y formatear todavía no está.