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
Render de la cara superior del PCB del cartucho MSX-SDF-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.

Ver el aviso

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

  1. 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.

  2. 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.

  3. 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.

  4. 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á.