Hacer un dot command de ESXDOS con ZX-basic

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 445
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 29 veces

Hacer un dot command de ESXDOS con ZX-basic

Mensajepor Uto » 10 Sep 2016, 01:11

Hola,

Hace poco presenté ZXUC, una utilidad para configurar varias de las opciones de ZX-Uno

https://github.com/Utodev/ZXCU

Dicha utilidad se distribuye como código fuente y en un .tap listo para ser cargado con ESXDOS (o por EAR si queréis).

Me gustaría poder compilarlo como un comando de ESXDOS, pero no lo consigo. He intentado indicarle al compilador de ZX Basic (http://www.boriel.com/wiki/en/index.php/ZXBasic) el "org" adecuado, y he probado varias opciones de compilación, pero no hay manera, cuando lo ejecuto bien se me cuelga, bien no hace nada de nada (me sale un OK y de vuelta al prompt).

¿Alguien ha hecho algo así alguna vez o se le ocurre que podría estar fallando?
http://www.ngpaws.com
Twitter: @uto_dev

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1489
Registrado: 07 Nov 2009, 11:38
Sistema Favorito: C64
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo SNES
Ubicación: Madrid
Gracias dadas: 14 veces
Gracias recibidas: 244 veces

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor BlackHole » 10 Sep 2016, 12:35

Uto escribió:Me gustaría poder compilarlo como un comando de ESXDOS, pero no lo consigo.
Yo lo que no consigo encontrar son las instrucciones para desarrollar en ese sistema.
¿Por qué la web http://www.esxdos.org es tan cutre? :? No hay nada salvo un ZIP en el que no hay info dentro.

No es que falte la información para desarrolladores, es que ni siquiera hay información para los usuarios.
Es que por no haber, no hay ni siquiera una página describiendo qué es, qué hace y para qué sirve eso del ESXDOS... paso.
Última edición por BlackHole el 10 Sep 2016, 12:41, editado 1 vez en total.

Avatar de Usuario
jltursan
Amiga 2500
Amiga 2500
Mensajes: 4028
Registrado: 13 Oct 2006, 19:45
Sistema Favorito: MSX
primer_sistema: Dragon
Ubicación: Serracines, Madrid, España
Gracias dadas: 57 veces
Gracias recibidas: 157 veces
Contactar:

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor jltursan » 10 Sep 2016, 12:40

Cierto, cuando Uto dice que esta indocumentado es que es eso, nothing de nothing.

¿Has probado a desensamblar el más sencillo de los que funcionan?

Salvo que los comandos oficiales estén "registrados" en algún lado del ESXDOS y no permita la ejecución de ninguno nuevo, no se me ocurre ninguna razón por la que si mimetizas la arquitectura de uno original no te vaya a funcionar.

Además de lo del registro, se me ocurren otras razones como por ejemplo que la pila debas definirla en una zona concreta, que tengas que inicializar la pila previamente con algún contenido concreto, que algún registro deba cargarse con algún valor concreto, en fin, unas cuantas cosas que analizando (probablemente) el comienzo del código se debería ver.

Otra cosa a probar podría ser apoderarse del código de ese sencillo desensamblado y parchearlo con tu "Hello world" al comienzo o donde corresponda para ver si así ya obedece. Lo ejecutarías como el dot-command original pero debería sacar tu mensaje...

No puede ser tan difícil desentrañar este misterio :popcorn:

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3012
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 356 veces
Contactar:

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor zup » 10 Sep 2016, 13:31

A mi lo primero que se me ocurre es que quizás el BASIC está prohibido. ¿Estás seguro de que el divide pagina sobre RAM?

Lo que quiero decir es que probablemente el divide pagine el ESXDOS sobre ROM, machacando las rutinas del BASIC. Si tu programa hace alguna llamada a rutinas de la ROM puede que caiga sobre el código paginado por el divide y la líe.

En cualquier caso, velesoft parece ser el gurú de estas cosas. Intenta colgar el mensaje en WOS a ver si te responden.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 445
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 29 veces

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor Uto » 11 Sep 2016, 10:49

Hola,

Gracias por las respuestas pero creo que no me he explicado bien. Ya sé cómo hacer un dot command e incluso algunas funciones de esxdos en asm, al final es compilar a raw y ponerle org... 2000h si no recuerdo mal.

El problema lo tengo cuando trato de usar el compilador de ZX básic de Boriel, ojo no Básic Sinclair, que es con lo que está hecho ZXUC. Aunque le ponga ORG 2000h, el binario resultante no va. ZXUC no usa ninguna función de ESXDOS por lo que no es por eso, y aunque he visto que obviamente el compilador le mete sus librerías con lo que da un binario grande, no es más grande que los más grandes que trae ESXDOS de serie.

De hecho creo que incluso probé un Hello World en zxbasic y no va.

Escribo aquí por ver si hay quien tenga experiencia con zxbasic, porque pregunte en el foro de zxbasic y no obtuve respuesta :(
http://www.ngpaws.com
Twitter: @uto_dev

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3012
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 356 veces
Contactar:

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor zup » 11 Sep 2016, 11:11

Supongo que la respuesta sería correr tu código en un depurador. Siguiendo mi teoría, yo probaría a correr ese código en ZX Spin, poniendo breakpoints condicionales que te indiquen cuándo PC salta a sitios no previstos.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor mcleod_ideafix » 11 Sep 2016, 16:53

Para empezar, un dot command corre sin soporte de la ROM de Sinclair, así que cualquier cosita que quieras hacer y que implique llamar a una rutina de la ROM original no funciona, exceptuando la RST 10h, que esa sí que funciona. Para el resto, hay un RST, no recuerdo cuál, que te permite llamar indirectamente a una rutina de la ROM del Spectrum.

Así que para tu primera prueba en ZXB no imprimas nada. Haz algo más sencillo, tal como, por ejemplo, rellenar la pantalla de un color concreto. Es decir, algo que no implique usar rutinas de la ROM.

Comprueba también que en el ejecutable que obtienes, nada del runtime que lo acompaña llame a ROM. Si fuera el caso, sustituye ese runtime por otro que no use la ROM, o no uses ningún runtime en absoluto.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor na_th_an » 12 Sep 2016, 08:38

Si mal no recuerdo, ZXB no usaba nada de la ROM, al menos para el PRINT. Debe estar más relacionado con el uso de la pila o la memoria de cadenas. Deberías hablar directamente con Boriel.

Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 445
Registrado: 28 Abr 2014, 15:50
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: TV Games/Pong Clone
Gracias dadas: 5 veces
Gracias recibidas: 29 veces

Re: Hacer un dot command de ESXDOS con ZX-basic

Mensajepor Uto » 12 Sep 2016, 12:39

Hmmm... puede ser algo de la ROM o quizá la memoria de cadenas o incluso la memoria de variables, las que sean. Entra dentro de lo posible que ZXBasic use la memoria contigua al código para zona de variables, y quizá esté cayendo ya en una zona no escribible.

Boriel supongo que ha visto mi pregunta en los foros de ZXBasic, pero voy a intentar contactarle directo a ver :-)
http://www.ngpaws.com
Twitter: @uto_dev


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados