Un compilador de ZX Spectrum BASIC

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

Moderador: Sir Cilve Sinclair

Re: Un compilador de ZX Spectrum BASIC

Notapor Boriel el Lun May 03, 2010 1:51 pm

na_th_an escribió:Cierto, se me habían pasado esos mensajes.

Sobre lo que dices del --version:

Código: Seleccionar todo
F:\Dev\Speccy\Crap Games\Cabezooon>\Dev\Utils\zxbasic\1.2.6\zxb.exe --version
zxb.exe 1.2.6-r1550


Bájate la última versión (r1564), que no sólo corrige lo de comparación de cadenas, sino que además permite especificar el índice base de las mismas. Si quieres que empiecen a contar desde 1 y no desde 0, pones --string-base=1, y así "CADENA"(2) es "A".

NOTA: El flag --sinclair activa todas las compatibilidades posibles. Por ejemplo, pone array-base a 1 y string-base a 1, e incluye por defecto las funciones SCREEN$, ABS y POINT. La siguiente compatibilidad que estoy trabajando es la de expresiones lógicas (booleanas).

No tengo un zxb.py ¿?

Eso es para las versiones en python puro directamente (los archivos .zip y .tar.gz).
¿Y sobre lo de mezclar BASIC/ASM? Es que ya lo he preguntao tres veces y nunca responde nadie :lol:

Es un tema bastante complejo para tratar en este hilo. Ya lo han preguntado en el foro en varios sitios, por ejemplo: http://www.boriel.com/forum/viewtopic.p ... t=382#p879

En breve pondré un tutorial (en mi cuasi-inglés).
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Un compilador de ZX Spectrum BASIC

Notapor na_th_an el Lun May 03, 2010 2:25 pm

Boriel escribió:
na_th_an escribió:Cierto, se me habían pasado esos mensajes.

Sobre lo que dices del --version:

Código: Seleccionar todo
F:\Dev\Speccy\Crap Games\Cabezooon>\Dev\Utils\zxbasic\1.2.6\zxb.exe --version
zxb.exe 1.2.6-r1550


Bájate la última versión (r1564), que no sólo corrige lo de comparación de cadenas, sino que además permite especificar el índice base de las mismas. Si quieres que empiecen a contar desde 1 y no desde 0, pones --string-base=1, y así "CADENA"(2) es "A".

No tengo un zxb.py ¿?

Eso es para las versiones en python puro directamente (los archivos .zip y .tar.gz).


Me he perdido. Pero ¿no me pedías que probara eso por nosequé de que fuera más rápido? Me dijiste:

De todas maneras, me gustaría diagnosticar eso, ya que pocas personas usan la versión python (creo que yo). Cuando ejecutas zxb.py --version qué te sale? ¿sólo la versión o algún aviso de "UMINUS no utilizado" y cosas así? La última vez que pasó algo así resultó ser un bug en las expresiones regulares.


Probé a hacerlo antes de poner la nueva versión por lo que me decías de la velocidad, para probar y contestarte rápido (porque no creo que el fix de las cadenas y eso afecte a este tema, no consideré necesario actualizar antes de ponerte la salida de --version como pediste). Es que tarda realmente muchísimo en un dual core modernito.

Sobre la interacción ASM/BASIC, por lo que veo la única forma es pasando parámetros y sacando todo de la pila... Pensaba que podría haber algún método de definir variables extern como en c:

Código: Seleccionar todo
extern unsigned char *myvar;

#asm
   ld hl, _myvar
   ld (hl), 5
#endasm
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Notapor na_th_an el Lun May 03, 2010 4:21 pm

Me vas a empezar a odiar :D

He instalado la última versión. En mi programa, tenía el siguiente código para asegurarme de que el programa se esperase a que se dejase de pulsar cualquier tecla que hubiese probado:

Código: Seleccionar todo
   While Inkey () <> ""
   Wend


Con la anterior versión (1.2.6 1550), este código funcionaba. Con la nueva versión, se ha convertido en un bucle infinito. He tenido que cambiar ese código por

Código: Seleccionar todo
   While Code(Inkey ()) <> 0
   Wend


Para ver qué puede estar fallando, he hecho este programa sencillo:

Código: Seleccionar todo
Dim p As String

p = ""
If p <> "" Then
   Print "Check"
End If


Al ejecutarlo, imprime "Check", por lo que creo que la comparación de cadenas no está del todo fina aún.

La buena noticia es que las comprobaciones de cadena con "=", en efecto, ya funcionan.
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Notapor Boriel el Lun May 03, 2010 6:39 pm

na_th_an escribió:Me vas a empezar a odiar :D

He instalado la última versión. En mi programa, tenía el siguiente código para asegurarme de que el programa se esperase a que se dejase de pulsar cualquier tecla que hubiese probado:

Código: Seleccionar todo
   While Inkey () <> ""
   Wend


Con la anterior versión (1.2.6 1550), este código funcionaba. Con la nueva versión, se ha convertido en un bucle infinito. He tenido que cambiar ese código por

Código: Seleccionar todo
   While Code(Inkey ()) <> 0
   Wend


Para ver qué puede estar fallando, he hecho este programa sencillo:

Código: Seleccionar todo
Dim p As String

p = ""
If p <> "" Then
   Print "Check"
End If


Al ejecutarlo, imprime "Check", por lo que creo que la comparación de cadenas no está del todo fina aún.

La buena noticia es que las comprobaciones de cadena con "=", en efecto, ya funcionan.

El problema puede estar entonces en la implementación del <>. Me explico: todas las comparaciones de cadena pasan por una única rutina centralizada, al estilo strcmp de C (que antes sí estaba mal, por cierto). Que devuelve -1 (o un num. negativo) si a$ < b$, 0 si a$ == b$, y +1 (o cualquier positivo) si a$ > b$. Si == está funcionando, <> que es su negación también debería (es probable que haya cambiado algo de <> en la negación). El problema es que pasa con "" pero seguramente no con otras cadenas, ya que mis test funciona bien. :?
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Un compilador de ZX Spectrum BASIC

Notapor Boriel el Lun May 03, 2010 9:10 pm

Vale, ya vi el fallo (nuevamente). Se produce con cadenas vacías y no siempre. Mi problema viene de que no entendía bien como funciona CPI (que la uso para cadenas). Ahora ya está. ¿Podrías bajarte la nueva versión y comprobarlo? Si tienes tiempo te lo agradecería.

Por cierto, he flipado con tu juego. Es el 1er juego original hecho con el compilador, creo yo :!: (las demos son copiadas de otros sitios). Lo de que tarde varios minutos en compilar es normal cuando usas -O3 (optimización peephole), casi 3 minutos. Si no la usas, la compilación es bastante más rápida (unos 20 segundos). Ese comportamiento es normal: quiero decir que pasa en muchos compiladores. Por eso se suele dejar la optimización para la fase final (producción).

Si me das tu permiso, lo añado a la Wiki como ejemplo, o incluso lo empaqueto con el compilador, en el directorio de ejemplos. Es un programa muy completo (como usa las sentencias, etc), ya que los otros ejemplos usan lineas como el BASIC original (son copiados de listados de MicroHobby, o de este mismo foro, etc).
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Un compilador de ZX Spectrum BASIC

Notapor na_th_an el Mar May 04, 2010 8:49 am

Sobre el juego, dispón de él como mejor te convenga :) Lo he comentado profusamente para que sea ilustrativo.

A lo largo de la mañana probaré la última versión.

Y me apunto lo del O3 ;) Uno, que es brutito.
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Notapor compiuter el Mar May 04, 2010 2:15 pm

Desde aquí animaros a seguir adelante con la depuración del compilador. Desgraciadamente no tengo ahora demasiado tiempo ni humor, (la reciente perdida de mi abuela, eramos almas gemelas, me ha afectado muy mucho) para estos menesteres, pero aprovecho para dar las gracias a na_th_an y apenao por sus esfuerzos y mejoras y a Radastan por su soporte. Parece que McLeod tambien se decanta por hacer juegos para speccy compilados con el zxb. Esperando un nuevo impulso como el concurso, me ronda ya la idea de hacer alguna cosa sencilla, una de indios, para el nuevo concurso zxb. Pues sigamos adelante.
Avatar de Usuario
compiuter
Sabreman
 
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: Un compilador de ZX Spectrum BASIC

Notapor radastan el Mar May 04, 2010 3:47 pm

compiuter escribió:Desde aquí animaros a seguir adelante con la depuración del compilador. Desgraciadamente no tengo ahora demasiado tiempo ni humor, (la reciente perdida de mi abuela, eramos almas gemelas, me ha afectado muy mucho) para estos menesteres, pero aprovecho para dar las gracias a na_th_an y apenao por sus esfuerzos y mejoras y a Radastan por su soporte. Parece que McLeod tambien se decanta por hacer juegos para speccy compilados con el zxb. Esperando un nuevo impulso como el concurso, me ronda ya la idea de hacer alguna cosa sencilla, una de indios, para el nuevo concurso zxb. Pues sigamos adelante.


La vamos a liar... :lol: :lol: :lol:

Yo pienso hacer algo, a ver con que nos sale Na_than
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________
Avatar de Usuario
radastan
Phantomas
 
Mensajes: 2179
Registrado: Lun May 07, 2007 5:34 pm

Re: Un compilador de ZX Spectrum BASIC

Notapor na_th_an el Mar May 04, 2010 5:11 pm

Con esto http://www.mojontwins.com/2010/05/04/mo ... scgc-2010/ , aunque para tu concurso tenemos otras ideas en ciernes :lol: La idea es participar en la categoría ZXBasic y en la de fourspriter ;)
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Un compilador de ZX Spectrum BASIC

Notapor compiuter el Jue May 06, 2010 4:41 pm

Me he bajado la version windows ultima, el caso es que al incluir la libreria --sinclair no compila bien, salen errores de lineas modulo, 188 y asi. He visto que editando con notepad, las librerias en lugar de la tecla enter incluyen un cuadradito al final de cada linea y luego va la siguiente sin entrar ningun enter, esto lo he visto otras veces en archivos de texto linux creo, lo digo tambien como curiosidad, ya que no se a que se debe.
El caso es que una vez corrigiendo todas las librerias con wordpad, que se editan bien y pasteando, creo que funciona, si bien antes pregunto por si es un error de las librerias de la opcion sinclair, la -O3 tambien me da problemas. Si no las pongo compila bien. Saludos.
Avatar de Usuario
compiuter
Sabreman
 
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: Un compilador de ZX Spectrum BASIC

Notapor Boriel el Jue May 06, 2010 4:45 pm

compiuter escribió:Me he bajado la version windows ultima, el caso es que al incluir la libreria --sinclair no compila bien, salen errores de lineas modulo, 188 y asi. He visto que editando con notepad, las librerias en lugar de la tecla enter incluyen un cuadradito al final de cada linea y luego va la siguiente sin entrar ningun enter, esto lo he visto otras veces en archivos de texto linux creo, lo digo tambien como curiosidad, ya que no se a que se debe.
El caso es que una vez corrigiendo todas las librerias con wordpad, que se editan bien y pasteando, creo que funciona, si bien antes pregunto por si es un error de las librerias de la opcion sinclair, la -O3 tambien me da problemas. Si no las pongo compila bien. Saludos.

Hmmmm. Eso parece un error de "fin de linea" de Windows (que difiere de Unix y del Spectrum). Bueno, lo probaré en Windows, pero no deberías tener ningun error de esos, ya que el compilador admite ambos finales de linea indistintamente.
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Un compilador de ZX Spectrum BASIC

Notapor compiuter el Jue May 06, 2010 4:56 pm

Eso me parecía. Esta noche trastearé de nuevo. Solo quería confirmar que no era el fallo del final de línea, gracias. Saludos.
Avatar de Usuario
compiuter
Sabreman
 
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: Un compilador de ZX Spectrum BASIC

Notapor Boriel el Mar Jun 08, 2010 9:20 am

Hmmm. Hoy se cumplen 2 años de la primera versión de ZX Basic :shock: Gracias a compiuter por recordarlo.
Teniendo en cuenta que se tardó casi 8 meses en sacar la primera versión, ya hace casi 3 años :!: :?: que empezó el proyecto. No sé si alegrarme o echarme a llorar :mrgreen: :lol:
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Un compilador de ZX Spectrum BASIC

Notapor apenao el Mar Jun 08, 2010 9:29 am

Es increíble todo lo que has avanzado en tan poco tiempo. Enhorabuena por tu "cumpleaños" y muchas gracias de parte de los usuarios .)
Avatar de Usuario
apenao
Jack The Nipper
 
Mensajes: 154
Registrado: Dom Ene 27, 2008 7:08 pm
Ubicación: Marbella

Re: Un compilador de ZX Spectrum BASIC

Notapor na_th_an el Mar Jun 08, 2010 2:04 pm

Enhorabuena y avanti.
Avatar de Usuario
na_th_an
Nonamed
 
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

PrevioSiguiente

Volver a Programación y nuevos desarrollos

¿Quién está conectado?

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