Lector de SD
El primer proyecto de ejemplo: imágenes .DSK desde la tarjeta, y el MSX convencido de que tiene disquetera. Tiene su propia página.
Hardware abierto para MSX
Un kit de desarrollo de I/O para MSX: la placa pone la base, el proyecto lo pone cada uno
Un cartucho abierto y experimental para construir tus propios periféricos: un microcontrolador asomado al bus del MSX, una EEPROM de 64 KB del lado del Z80 —regrabable con un adaptador de cartucho a grabador— y media placa de islas perforadas para montar lo que tu proyecto necesite. Cambiando la ROM y el firmware, la misma placa puede ser un puerto serie, una interfaz de sensores o una disquetera.
Incluye tres proyectos de ejemplo, que son lo único terminado por ahora: un lector de tarjetas SD que monta imágenes .DSK y funciona como disquetera en cualquier MSX, un reloj con pila que se suma al lector, y el SDF-Pico, que reemplaza el ATmega por una Raspberry Pi Pico 2 W y reúne en un solo cartucho el lector de SD, Wi-Fi y un reloj por Internet.
Está pensado para que se pueda armar en casa. Todos los integrados son THT y se consiguen en cualquier casa de electrónica — un ATmega328P, una EEPROM y tres chips de la serie 74. Sin GAL, sin CPLD, sin nada que haya que programar con herramientas raras.
Cara superior de la rev1, generada a partir de los Gerbers del repositorio.
Antes que nada
La rev1 de la placa está fabricada y tiene errores conocidos. Funciona, pero sólo después de cinco correcciones a mano: dos cortes de pista, un 74LS03 agregado al aire con un par de resistencias, algunos cables, y cambiar tres integrados del zócalo por su versión HCT. No la recomiendo salvo que quieras meterte en eso a sabiendas, con el documento de correcciones al lado.
La rev2 va a traer la mayoría de esos problemas resueltos de fábrica. Si lo que querés es una placa para armar y usar, esperala.
El kit
Lo que hay en el cartucho es un microcontrolador asomado al bus del MSX por dos puertos de I/O, una EEPROM de 64 KB que el Z80 ve completa en el slot —regrabable con un adaptador, para que cada perfil ponga ahí sus rutinas—, y un protocolo byte a byte entre los dos. Nada de eso es específico de un periférico: es la base sobre la que se monta cualquiera.
Cambiando la ROM y el firmware, y dejando el resto intacto —el mismo decodificador, el mismo handshake, el mismo formato de comando y respuesta— la misma placa puede ser otra cosa. Un puerto serie. Una interfaz de sensores. Un puente hacia un micro con WiFi. Cada uso es un perfil: su firmware, su ROM, y lo que necesite en hardware.
Por eso media placa es un área de islas perforadas. No es relleno ni espacio sobrante: es donde se arma lo que cada perfil necesite, colgado del I²C y del SPI que ya salen por el header. El ATmega no tiene que traer la periferia adentro — tiene que saber hablarle.
Y los perfiles se combinan o se quedan solos. Un armado sin tarjeta SD no es una versión incompleta: es otro producto. Se puede poblar sólo lo que hace falta para un RS-232, con su propia ROM y sin una línea de código de disco.
El primer proyecto de ejemplo: imágenes .DSK desde la tarjeta, y el MSX convencido de que tiene disquetera. Tiene su propia página.
El segundo ejemplo, y el primer periférico por I²C: un DS1307 con pila, y MSX-DOS arranca sabiendo la fecha. Sensores, memorias y expansores entran igual, sin tocar el diseño. Tiene su propia página.
En el micro no queda UART libre, y no hace falta: un UART por I²C más el conversor de niveles se arman en el área universal. El firmware sólo agrega los comandos.
Un ESP32 en el área universal, enlazado por SPI o I²C. Es el camino más corto de un MSX a una red moderna.
El tercer ejemplo, y el primero que cambia el microcontrolador: una Raspberry Pi Pico 2 W en lugar del ATmega, sin /WAIT. Reúne el lector de SD, una conexión Wi-Fi que se configura desde el MSX y un reloj que toma la hora de Internet. Tiene su propia página.
Todo esto es dirección de diseño, no funcionalidad existente. La placa permite estos usos; todavía no los tiene. Lo probado hoy es el lector de SD y el reloj que se le suma.
El header de diez pines es por donde el kit sale al área universal: lleva el bus SPI completo, el I²C del ATmega y dos GPIO libres. El módulo SD del ejemplo se enchufa acá, pero el hardware para todo lo de arriba ya está puesto y esperando firmware.
En la rev1 el header no tiene serigrafía. Este es el pinout que sale del netlist.
| Pin | Señal | Uso |
|---|---|---|
| 1 | VCC | Alimentación · 5 V |
| 2 | SCK | Reloj de SPI |
| 3 | MISO | SPI · entrada de datos |
| 4 | MOSI | SPI · salida de datos |
| 5 | CS | Chip select de SPI · la SD, en el ejemplo |
| 6 | PB1 | GPIO libre |
| 7 | PB0 | GPIO libre |
| 8 | SDA | I²C · datos |
| 9 | SCL | I²C · reloj |
| 10 | GND | Masa |
Estado
El hardware de la placa y el proyecto de ejemplo completo —el driver de disco en Z80 y el firmware del micro— están en el repositorio, junto con el esquemático, la lista de componentes y las correcciones de la rev1. Ahí está el detalle técnico y todo lo que hace falta para reproducirla.