Compilador ZX Basic 1.4 (beta) liberado

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Lun Feb 10, 2014 12:44 pm

El error está en la parte de ensamblador.
Esto es una rutina de ensamblador 100% :P y lamentablemente, por ahora, ZX BASIC no entiende mucho de asm (no está integrado con el parser de asm del todo y le cuesta encontrar los errores de asm).

El error lo tienes en la línea:
Código: Seleccionar todo
ld a, (iy)

Debería ser
Código: Seleccionar todo
ld a, (iy + 0)

(Más arriba lo hiciste bien con ix).

El (iy + 0) debería ser explícito por sintaxis (en mi modesta opinión) para resaltar el hecho de que (iy + 0) siempre gastará un byte más para la indirección, aunque sea 0.
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Imanolea el Lun Feb 10, 2014 1:39 pm

Gracias por la respuesta Boriel.

Aprovechando me gustaría agradecerte primero la creación de este compilador que me ha ayudado mucho a realizar el juego para ZX Spectrum sin necesidad de controlar de ensamblador. Y segundo consultar unas dudas que me han quedado pendientes y nunca me han quedado claras.

Por ejemplo, en muchas ocasiones me he encontrado con que al ejecutar el .tap o bien el ordenador se resetea (el spectrum) o bien (la más común de todas) me saca por pantalla 30:1 C nosense in basic. La forma de solucionarlo ha sido optimizar recursos y código pero nunca he llegado a entender cuál es la razón exacta de que esto ocurra o cómo prevenirla. Es decir, se debe a una sobrecarga de la ram, demasiadas líneas de código... La verdad es que siempre ha sido un poco misterioso para mí.
Ultima edición por Imanolea el Lun Feb 10, 2014 1:57 pm, editado 1 vez en total
Avatar de Usuario
Imanolea
rst 0
 
Mensajes: 9
Registrado: Lun Feb 10, 2014 8:40 am
Ubicación: Bilbao

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Lun Feb 10, 2014 1:51 pm

Me alegro de que te guste. :wink: Yo no encuentro tiempo para hacer un jueguito. :cry:

Y en cuanto al error...
:shock: Si consigue reproducir eso, contáctame y analizamos el código.
Lás causas más probables son:
  • Un desbordamiento de pila (ej. muchos gosub o llamadas a funcion / sub anidados)
  • Indice de array no válido (usa el flag que hay apra comprobarlo)
  • Falta de memoria para otras cosas (como el Heap - gestión de cadenas). Hay un flag para comprobarlo
  • Un bug en el compilador (oh, no!) :oops:
Los flag de depuración te hacen el programa más lento, pero sirven para detectar errores. Mira a ver si lo pillas.
Lo más probable sea falta de memoria. Prueba a cambiar el org más abajo, a 26000 por ejemplo (ganarás un par de Kb). O a encoger el heap. ZX Basic intenta optimizar por velocidad, no por memoria pero estoy cambiando eso para poder dar a elegir al usuario (normalmente el código que ahorra memoria es más lento).
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Imanolea el Lun Feb 10, 2014 2:34 pm

Sobre el juego, voy detallando el desarrollo aquí por si a alguien le interesa: http://imanoleasgames.blogspot.com.es/search/label/The%20Subject.

Gracias por la información. Como dices intuyo que tendrá que ver con memoria y no con una parte de código en concreto.
Sobre el resultado del programa otra salida típica ha sido imprimir únicamente un signo de interrogación como resultado o un reseteo tras llenar la pantalla de caracteres.
Aunque todos tienen algo en común, se han producido al añadir "x", pero al quitar "y" volvía a funcionar con normalidad. Es decir, el error nunca se ha asociado a un fragmento de código específico.
Si hay alguna prueba concreta con la que pueda colaborar para analizar la acción del compilador me comentas :wink: .
Avatar de Usuario
Imanolea
rst 0
 
Mensajes: 9
Registrado: Lun Feb 10, 2014 8:40 am
Ubicación: Bilbao

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Jue Feb 13, 2014 12:31 pm

He sacado una nueva versión, que corrige algunas cosas, e introduce algunas mejoras:
http://www.boriel.com/wiki/en/index.php ... nt_Version
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Previo

Volver a Programación y nuevos desarrollos

¿Quién está conectado?

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