Los diferentes prototipos de Rookie drive

#1, El primer prototipo

Vamos allá, para el prototipado rápido utilicé la salida de bus trasera del HX-10, conector de 50 pines, al que cableé el comparador de direcciones y el ch376s, la eprom montada en una placa de cartuchos en el slot superior (en la foto el cartucho con la eprom esta fuera del MSX, pero en realidad va metido en el slot)

img_20161028_080557

Mis primeras pruebas fueron en desde basic, cosas sencillas, detectar el dispositivo, montar la unidad, etc. A partir de ahí, ensamblador, la mejor manera de aprender… lo puedo decir bien alto, este es mi primer proyecto en ensamblador. Le dediqué unas cuantas horas hasta que funcionó, al principio utilizaba un nombre de imagen de disco fijo HE.DSK,  (por highway encounter), pero era una lata, si queria cambiar de juego tenía que conectar el pendrive al PC y cambiar la imagen por otra…

Insatisfecho por el momento, no tardé en meterme al lío y a crear comandos “CALL” específicos para manejar a gusto el invento. En esta ocasión pude obtener parte de la información de la gloriosa página MSX.ORG, en su wiki hay una sección dedicada al commando CALL

Así que aquí está la lista de “calls”

  • createdisk   (está pendiente que el format rellene inicialice los sectores correspondientes)
  • insertdisk(“nombre de imagen”)
  • eject
  • usbfiles
  • mount
  • help

Ver el detalle de funcionalidades aquí

Luego cada vez que encendía el ordenador tenía que “insertar” el disco a mano, así que cree el fichero “USBMSX.INI”, que mantiene el nombre del último disco insertado, así cuando enciendes el ordenador carga automáticamente (si tiene autoexec) el último disco utilizado.

Claro, esto mola, pero al final cansa si le tienes que dar a CTRL + STOP, suponiendo que se cargue el BASIC, así que implementé la opción de abortar la inserción automática pulsando la tecla ESC al iniciar el ordenador.

En algún momento del desarrollo me puse a diseñar con Kicad, así que al final he pedido unos prototipos en PCB a pcbway, estoy impaciente por recibirlos...

#2, El prototipo del impaciente

El fin de semana pasado ya no puede esperar más, los prototipos en PCB estaban tardando más de lo que tenia previsto, así que decidí montar un prototipo cableado para empezar las pruebas en otros ordenadores. El primer prototipo que realicé no fue completo, dejé la EPROM fuera del montage, dado que podía utilizar una placa que ya tenía para montar la EPROM, así me ahorre las 28 conexiones y pude probar el circuito rápidamente.

img_20161123_000317

img_20161123_000217
#3, El protoripo en PCB

Con Kicad he diseñado el circuito impreso, para el enrutado de las pistas he utilizado Freeroute, de manera que me he ahorrado un buen rato de trabajo con el enrutado automático (entiendo que el resultado no sea "ideal")

rookie-pcb-kicad

Ya lo puedo decir bien alto: Como me mola la visualización en 3D de Kicad!!!!! yeah!!!

rookie-proto-pcb

Sobre la forma "absurda" de la placa, el motivo es que en el momento de realiar el diseño no tenía más cartuchos que un par de indescomp, que son complicados de narices... (pongo una foto más abajo..)

Finalmente, a llegado esta mañana (Lunes 21 de noviembre de 2016)

img_20161121_132712

Durante el montaje del prototipo #2 descubrí un "error" en el esquema, por un error la línea A5 es la que marca la dirección base en vez de la A4, eso significa que yo había previsto que la dirección del puerto sería la 0x10 (16) y ha acabado siendo la 0x20 (32). Queda pendiente probar si funcionará correctamente en ese puerto, e indagar las afectaciones o incompatibilidades que puedan haber.

Por otra parte parece que hay un defecto en la impresión, con lo que el logo de MSX no ha quedado bien 🙁  (ya he reclamado a PCB way)

img_20161121_154333

Arg!!!!!!!

Tengo el mono de llegar a casa para montarla y ver si funciona y encaja correctamente..

img_20161123_022836
#3.2 Más pruebas, proto "Monster"

Confirmo que puede funcionar en los puertos 32 a 35, tocando el código fuente y cambiando el valor original por el "nuevo". Digo que "funciona" sobre mi equipo de pruebas, que ahora pasa a ser un HB-75P, ya que tiene una conexión del bus de expansión en la parte posterior, y me permite insertar sin problemas este "monstruo", como se puede apreciar en las fotos, tiene un ZIF socket, que va perfecto para probar los cambios del software sin dañar la EEPROM.

img_20161123_000732

Y sigo realizando correcciones para mejorar la funcionalidad de rookie drive.

Como memoria "ROM" estoy utilizando una EEPROM w27c512 de Winbond, la cual puedo grabar gracias al programador "MiniPro", fantástico por precio y funcionalidad, evidentemente se trata de un programador muy básico, pero cumple la misión a la perfección, muy recomendable:

img_20161123_002121

 

#2.2 Prototipo majo y actualizable

Se acerca el momento de la verdad, quedan pocos días para la RU #50, y trabajo intensamente para poder enseñar mi "cartucho", así que he decidido a rematar el trabajo que empece con el prototipo #2, el cual necesitaba de otro cartucho sólo con la Eprom. Tras unas horas de insomnio, conseguido!! el resultado no es 100% elegante, pero da una idea bastante aproximada de como quedaría una versión bien acabada.

img_20161130_083621

Como se ve en la imagen, la Eprom queda accesible para de su extracción, siendo posible actualizar su contenido, ya que se va montada sobre un zócalo, en vez de estar soldada directamente a la placa.

Así queda el aspecto del cartucho desde su parte frontal:

img_20161130_083608

Aquí tenéis el aspecto del cartucho con su etiqueta:

cropped-IMG_6478.jpg

#3 Prototipo Rookie drvie NX

Esta es una de las placas prototipo con las que he desarrollado Rookie drive NX  "NX" por Nextor y también por "Next" (siguiente en inglés). Con este hardware tenía la pretensión de  poder usarlo para crear 3 versiones diferentes de Rookie drive, RD 720, RD NX, RD 220 (para MSX-DOS 2.20). Al final me di cuenta que era una tontería crear tantos dispositivos diferentes en los que únicamente cambiase el firmware. Al final decidí eliminar la opción RD 220 (nunca se llegó a implementar), e incluir el driver de RD 720  en el cartucho de Rookie drive NX.

El diseño original de este prototipo incluía una ROM de 128K que no era actualizable, luego decidí que sería mucho mejor incorporar una memoria FLASH para poder actualizar el firmware del cartucho, con lo cual al final instalé una memoria de 512K. Necesitaba 128K para el driver de Nextor, así que disponía de mucho espacio libre..., busqué información y Néstor Soriano me dio indicaciones para poder implementar un DiskROM, que al final fue de 320K. Seguía quedando espacio, así que se me ocurrió la idea de meter el driver de RD 720, para ello tuve que desarrollar un bootloader para poder lanzar un driver u otro en función del tipo de MSX (msx1/msx2), y también dando la opción de hacerlo de forma arbitraria (pulsando "7" o "N")

En este vídeo me podeís ver montando uno de los prototipos de Rookie drive NX