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?
Hacer un dot command de ESXDOS con ZX-basic
-
- 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
Yo lo que no consigo encontrar son las instrucciones para desarrollar en ese sistema.Uto escribió:Me gustaría poder compilarlo como un comando de ESXDOS, pero no lo consigo.
¿Por qué la web http://www.esxdos.org es tan cutre?

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.
- jltursan
- 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
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
¿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

- zup
- 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
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.
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!
Además vendo cosas!
- Uto
- 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
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
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
Twitter: @uto_dev
- zup
- 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
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!
Además vendo cosas!
- mcleod_ideafix
- 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
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.
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
- na_th_an
- 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
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.
- Uto
- 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
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
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
Twitter: @uto_dev
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados