¿Qué es Rookie drive?
Rookie drive es un proyecto personal, que consiste en crear una unidad de disco virtual USB para ordenadores MSX. El objetivo del proyecto es aprender la arquitectura del estándar MSX, programación en ensamblador de Z80, herramientas de diseño de circuitos impresos, etc.
Actualmente Rookie drive incluye estas funcionalidades:
- Emulador de disquete
- Almacenamiento masivo (requiere 128K o superior)
- Controlador de disqueteras USB (UFI)
Este es un hobby apasionante, dado que fue un MSX mi primer ordenador, me apetece mucho profundizar en el que fue el primer sistema informático que tube a mi alcance.
El hardware resultante, que yo llamo Rookie drive, consiste en un «cartucho» MSX con ranura USB al que se le pueden conectar dispositivos de almacenamiento, por ejemplo un pendrive, o un disco duro (la mayoría necesitan alimentación externa). Rookie drive dispone del driver necesario para cargar un fichero de imagen de diskette (de momento de 720k) y poder operar con él como si fuera un diskette convencional. El sistema además permite intercambiar la imagen de diskette, listar los ficheros del directorio raíz, crear nuevas imágenes, formatear de imagen actual (experimental de momento), y mantener el «disco» insertado entre reinicios del ordenador.
Hay que destacar que en la versión actual sólo se pude utilizar una imagen de disco a la vez, y que el sistema funciona únicamente con imágenes de diskette (actualmente de 720kb), por lo que no se contempla el acceso directo al disco USB, sino a los ficheros de imagen contenidos en el mismo.
¿Por qué se llama Rookie drive?
Dado que soy «novato» = «Rookie», en este mundo de la programación en ensamblador y en el desarrollo de hardware para MSX, me pareció apropiado reflejarlo en el nombre del proyecto… simplemente.
La motivación
Hace poco no se muy bien porque, sentí la llamada del MSX (de mi hb-20p no), es algo curioso, la ilusión que puede llegar a hacer volver a encender un MSX tantos años después (30 o más). Quería aprender sobre el MSX, así que me compré un Tohsiba hx-10, para reparar, finalmente lo restauré y nuevamente me encontré con el mismo problema de antaño, ¿cómo cargar juegos y poder disfrutar “al momento”?….
Así que empezó mi búsqueda… por el camino decidí experimentar con las cargas rápidas de cassette, dado que hace 30 años el manual del hitbit (si no recuerdo mal) ya indicaba que se podía especificar la velocidad de carga a 2400 baudios en vez de 1200. Dicho y hecho, reproductor MP3 en mano, para allá que voy, efectivamente… y con este método en el HX-10 hasta x3 (utilizando audacity). Luego descubrí OTLA, ahí ya flipé…. cargar juegos en 25 segundos…!!! por dios!!! dónde estabas hace 30 años!!! 😉
Las piezas del puzzle
Seguí adelante y me metí a clonar “cartuchos”… creyendo que sería coser y cantar, funcionó a medias… 16, 32k y nada más. Luego curioseando encontré el proyecto de “Coding laboratory” http://codinglab.blogspot.com.es/2013/01/virtual-msx-disk-drive.html
Ese proyecto utiliza un arduino, con alguna electronica extra, para simular una unidad de disco MSX-DOS 1, con la particularidad que se apoya en un PC como “medio” de almacenamiento, comunicándose por puerto serie. Intenté copiar y mejorar el invento, pero fracasé, a mi me funcionaba de forma incompleta, aunque ahora que lo pienso, intentaba cargar el highway encounter en disco, y en el toshiba no me ha funcionado nunca…
Curioseando por internet encontré un chip para utilizar unidades de almacenamiento usb desde arduino, y gracias a eso presento hoy este proyecto. El CH376s, es todo lo que necesitaba, bueno, los ejemplos de Raul, de Arjen Zeilemaker (en source forge), y también a Pasmo, de Julián Albo (ensamblador cruzado de z80).
Volviendo al CH376s, un chip pensado para interactuar con microcontroladores y procesadores de 8 bits, que puede gestionar particiones FAT con comandos de alto nivel, conectar disco, montar partición, abrir archivo…. si has leído bien abrir archivo. Aquí es cuando se me encendió la bombilla, podría desarrollar una unidad de disco para MSX por USB basado en ficheros de imagen .DSK ???!!!!!! Sí! Me pareció una idea guapa guapa, así que pedí varias unidades del chip, y empecé las pruebas con Arduino !! ???? si, dado que la documentación del CH376S no daba mucha información de como usarlo en un bus de 8 bits paralelo… Me pareció que lo mejor era simular el bus desde arduino, y así lo hice, al costó un poco pero al final salió. Una de las ventajas muy interesantes de este chip es que se conecta al bus de datos directamente, la única circuiteria adicional que hace falta es un comparador de direcciones para activar el dispositivo, así que para el montaje inicial basta con una eprom, un ch376s y un comparador de direcciones…. flipante