Página 1 de 1

Tarjeta SD autoarrancable en ZX-Uno

Publicado: 17 Oct 2020, 20:41
por Uto
Vengo aquí a contar que ya es posible, y encima sin actualizar ZX-Unos ni nada. Me explico:

Partiendo del germen de un cambio que hizo Mcleod en el RTC.SYS, Antonio Villena pensó que el RTC.SYS podría ser utilizado como lanzador de juegos. Sin embargo el RTC.SYS no es ejecutado por versiones un poco antiguas de ESXDOS. Andrew Owen sugirió que el ESXDOS.SYS tiene un punto de entrada donde se pulsa la NMI, y que ahí podríamos poner el lanzador. Finalmente, yo mismo haciendo pruebas, descubrí que el betadisk.sys sí que lo ejecutan todas las versiones de ESXDOS, al menos las últimas.

Así en el ZIP adjunto, hay 4 ficheros, uno de los cuales un es un fuente que no hace falta si no queréis cambiar cosas, pero los otros tres, los sueltas en una tarjeta vacia y te arranca el ZX-Uno directamente con el Manic Miner :D

En el siguiente post pongo detalles de como manejarlo, por si queréis hacer un juego para ZX-Uno (o para Spectrum con ESXDOS) y que se autoarranque.

Re: Tarjeta SD autoarrancable en ZX-Uno

Publicado: 17 Oct 2020, 20:47
por Uto
Detalles técnicos:

Si poneis el contenido de la carpeta SYS en una tarjeta SD, al arrancar el ordenador con DivMMC va a intentar cargar un fichero llamado AUTOEXEC.BIN desde el raiz de la tarjeta. Dicho fichero lo cargará en 32768, y luego ejecutará el código en 32768. El fichero solo puede tener 32K claro, porque no hay mas sitio. Antes de cargarlo pone la pila en 32767.

Así, si poneis cualquier AUTOEXEC.BIN que cumpla con eso y funcione, tendréis el juego funcionando.

Si no os gusta que cargue en 32768, o queréis la pila en otro sitio, o lo que sea, ahí tenéis el fichero ASM que venia en el zip del post anterior. Compilandolos con SJASM genera los ficheros ESXDOS.SYS y BETADISK.SYS que hay en la carpeta SYS. Es el BETADISK.SYS el que hace el trabajo, y está profusamente comentado así que espero que sea bastante claro.

Podéis cambiar el nombre del fichero a ejecutar, la direccion donde se carga, el tamaño, y la direccion de entrada. La pila se coloca justo debajo de la direccion de carga, pero si queréis otra, pues la cambiáis también.

Por último, si desde el loader de BETADISK.SYS usáis llamadas ESXDOS tened en cuenta que es como un dot command, por lo que teneis que llamar usando HL para algunos parámetros. Sin embargo, en vuestro fichero AUTOEXEC.BIN ya no lo es, por lo que se usa IX.

Re: Tarjeta SD autoarrancable en ZX-Uno

Publicado: 18 Oct 2020, 00:37
por Uto
Update: parece que había un problema con los últimos ESXDOS, he actualizado el fichero del primer post com un fichero que ha hecho Antonio.

Por dejarlo aquí documentado técnicamente: parece que el ESXDOS en sus últimas versiones llama a alguna función que está en el ESXDOS.SYS, sospechamos que a una tal M_AUTOLOAD que estará relacionada con el AUTOXEC.BAS. Como no cargamos el ESXDOS.SYS real fallaba al llamarla. Hemos hecho un fichero lleno de C9, o sea de RETs, de modo que si se llama a esas funciones, retorna.