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 Dom Feb 02, 2014 12:29 pm

antoniovillena escribió:He arreglado el problema de las escrituras en variables, estos son los cambios

Gracias de nuevo. Siento haber tardado, estaba con el scroll (que llevaba AÑOS ahí) y con spectranet.
¿Podrías probarlo? No he subido la versión "oficial", sino solo la de python, y la puedes descargar de donde siempre.
Si te va bien, ya genero el instalador, etc.

array.asm
Código: Seleccionar todo

        pop de          ; Return address
        ld (RET_ADDRESS+1), de ; Stores it for later

        push hl         ; Indexes pointer goes to H'L'


Es muy ingenioso y no se me había ocurrido :!:

Si vas a usar asm con el compilador, el ensamblador que usa admite expresiones complejas con etiquetas.
Así, en alloc.asm en vez de cambiar TEMP por TEMP + 1 en todas las instancias, hay otro truco. Puedes definir TEMP como OTRAETIQUETA + 1

Código: Seleccionar todo
    LOCAL TEMP, TEMP0
TEMP1:
    ld hl, 0
TEMP EQU TEMP0 + 1

y ya está.
Te lo comento porque, ya que le pegas al asm, si vas a usar asm con el compilador, este ensamblador permite #defines y macros de C, y también esto (no es tan potente como pasmo, pero hace bastante). :roll:
y así lo mismo te metes a crear más librerías. Que creo que sería muy bueno para el proyecto (hay algunas como la del fill que me flipan)
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Alxinho el Dom Feb 02, 2014 1:14 pm

Ostras! Ya podemos hacer scrolls compilados en basic?? :D

Venga venga esa documentación!
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Avatar de Usuario
Alxinho
Freddy Hardest
 
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 1:20 pm

Alxinho escribió:Ostras! Ya podemos hacer scrolls compilados en basic?? :D

Venga venga esa documentación!

Bueno, lo cierto es como siempre, la documentación brilla... por su ausencia (y eso que soy el primero que se queja de los proyectos indocumentados).
Básicamente, existen 4 rutinas:
- ScrollLeft, ScrollRight, ScrollUp, ScrollDown

Las llamas pasándole la ventana en pixels. Por ej.
ScrollUp(10, 20, 60, 80)
hace un scroll de 1 pixel hacia arriba de la ventana que está en (10, 10) - (60, 80)
(10, 10) es la esquina inferior izquierda de la ventana, (60, 80) la superior (coordenadas x, y).
Las coordenadas horizontales (x1 = 10, x2 = 60 en el ejemplo de arriba) se redondean múltiplos de 8, porque es como trabaja la memoria del Spectrum en pantalla (se podría hacer "pixel perfect" pero creo que baja el rendimiendo. Si alguien se anima... :P)
Ojo, que la (0, 0) es la esquina inferior (ZX BASIC usa toda la pantalla).
El scroll es de 1 pixel (sin atributos), sin embargo creo que la rutina es bastante rápida.

NOTA: tienes un ejemplo en el directorio examples/.
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Alxinho el Dom Feb 02, 2014 1:24 pm

Joder, la tengo que probar para futuros proyectos! ...

Macho documenta documenta y en español eh! :P :P

Gracias a tí (y a Nathan) para Marzo ya saco mi tercer juego, os lo agradeceré siempre!

También tengo pendiente hacer un juego con la churrera que me hace ilusión a ver qué me saldría pero es que uno quiere hacer tantas cosas ...
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Avatar de Usuario
Alxinho
Freddy Hardest
 
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 1:41 pm

Para foro en español, creo que Speccy es el mejor sitio (lo único es que los threads sobre BASIC compilado están dispersos).
Podría montar un subforo solo en español, pero no sé si vale la pena.
Plis, pon una captura de pantalla de los juegos que hagas aquí:
http://www.boriel.com/forum/gallery/
y aquí:
http://www.boriel.com/wiki/en/index.php ... d_Programs :P
o en la pagina de FB.
Que la escena está paradilla (muerta, diría yo, al menos la británica :cry: :oops: )
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Alxinho el Dom Feb 02, 2014 2:00 pm

Joder, estoy intentando registrarme en el foro pero no me acepta el nick, le pongo como aquí alxinho ... :(

De contraseña una palabra de más de 6 letras y me dice que falla ...
Ultima edición por Alxinho el Dom Feb 02, 2014 2:04 pm, editado 1 vez en total
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Avatar de Usuario
Alxinho
Freddy Hardest
 
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 2:01 pm

Alxinho escribió:Joder, estoy intentando registrarme en el foro pero no me acepta el nick, le pongo como aquí alxinho ... :(

Pero qué problema te da?
no te acepta el nick o el email?
El foro sufre ataques de spam VIOLENTOS y el plugin banea ips y emails por nada. Si no, escríbeme un mensaje privado por aquí, y lo arreglamos.
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor antoniovillena el Dom Feb 02, 2014 3:11 pm

No encuentro los cambios en ninguno de los 4 paquetes latest development. No obstante he observado los cambios en el repositorio y están bien (no me había dado cuenta del ex (sp),hl). Tengo pendiente actualizar el paquete de FASE incluyendo de nuevo ZXBasic con la demo. Como la demo ha evolucionado tendré que añadir algunas líneas en BASIC, si tengo alguna duda la postearé por aquí.
Imagen
Avatar de Usuario
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 3:36 pm

antoniovillena escribió:No encuentro los cambios en ninguno de los 4 paquetes latest development. No obstante he observado los cambios en el repositorio y están bien (no me había dado cuenta del ex (sp),hl). Tengo pendiente actualizar el paquete de FASE incluyendo de nuevo ZXBasic con la demo. Como la demo ha evolucionado tendré que añadir algunas líneas en BASIC, si tengo alguna duda la postearé por aquí.

Pero ya probaste a compilar con la modificación que hice y te va?
Lo digo porque si funciona entonces ya compilo y subo una nueva versión "oficial". Si no, espero.
Además, hoy espero subir la librería de Spectranet a ver... (no la tengo, pero el emulador parece que tira) :mrgreen:
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor antoniovillena el Dom Feb 02, 2014 4:52 pm

Ya la he probado, funciona.
Imagen
Avatar de Usuario
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 8:02 pm

antoniovillena escribió:Ya la he probado, funciona.

Ok. ya he subido la versión 1.4.0s1790 con los cambios. Prosigo con las rutinas de Spectranet y con los namespaces en en ensamblador.
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor antoniovillena el Dom Feb 02, 2014 9:45 pm

He detectado un fallo. Necesito detectar las teclas O y P a la vez. El compilador me da un fallo cuando pongo:

Código: Seleccionar todo
multikeys(KEYO|KEYP)


Así que al final he puesto
Código: Seleccionar todo
multikeys($DF03)


Sé que se puede hacer con multikeys(KEYO)|multikeys(KEYP), pero eso implica 2 lecturas a puerto.
Imagen
Avatar de Usuario
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 10:08 pm

antoniovillena escribió:He detectado un fallo. Necesito detectar las teclas O y P a la vez. El compilador me da un fallo cuando pongo:

Código: Seleccionar todo
multikeys(KEYO|KEYP)


Así que al final he puesto
Código: Seleccionar todo
multikeys($DF03)


Sé que se puede hacer con multikeys(KEYO)|multikeys(KEYP), pero eso implica 2 lecturas a puerto.

Córcholis! :( Nunca testeé la librería.
Pero el caso es que KEYO es 0DF02h y KEYP es 0DF01h, y KEYO | KEYP debería ser DF03h que es el mismo valor que pones.
Resumiendo, la primera expresión también debería funcionar! :(
Luego lo miro. Si detectas el fallo avisa. Es extraño, porque esta expresión se calcula en tiempo de compilación, no de ejecución.

Edito: Espera, es un error de sintaxis? voy a verlo. Ya que en BASIC, el operador para bits es bOR (bits OR). La versión "corta de C" es | como has puesto, pero igual está fallando. A ver...

Edito II: Confirmado. El caracter '|' no está funcionando bien en el preprocesador. Utiliza bOR (es un sinónimo de |) hasta que lo arregle, o la constante. Gracias ;)
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor Boriel el Dom Feb 02, 2014 11:05 pm

Pues no. Actualizo otra vez:
No he visto error en el compilador. Lo que me pasaba es que pulsé (en Mac) Cmd + espacio y eso mete un carácter raro en el código (que encima es invisible y parecía un espacio). Llevo una hora vuelto loco. :lol:
He creado este listado:
Código: Seleccionar todo
#include <keys.bas>
a = multikeys(KEYO | KEYP)

Que genera este asm
Código: Seleccionar todo
...
   ld hl, 57091
   call _MultiKeys
...

57091 es, efectivamente, $DF03.
Y entiendo que la rutina Multikeys (la ideé a partir del curso de código máquina de microhobby) está bien:
Código: Seleccionar todo
_MultiKeys:
#line 41
      ld a, h
      in a, (0FEh)
      cpl
      and l
#line 45
_MultiKeys__leave:
      ret

:?:

(El valor retorando en el registo A es el que se usará como resultado de la función).
Boriel
Sabreman
 
Mensajes: 351
Registrado: Lun May 28, 2007 9:55 am
Ubicación: Tenerife

Re: Compilador ZX Basic 1.4 (beta) liberado

Notapor antoniovillena el Lun Feb 03, 2014 12:45 am

Pues acabo de actualizar a la ultimísima versión y ya no me aparece el error. Fue hace un par de días cuando me lo bajé. He capturado la línea de comandos por curiosidad

Código: Seleccionar todo
A:\fase\engine>zxb\zxb.exe --version
zxb.exe 1.4.0alpha-s1754

A:\fase\engine>zxb\zxb prueba.bas
prueba.bas:2: warning: Using default implicit type 'ubyte' for 'a'
Traceback (most recent call last):
  File "zxb.py", line 348, in <module>
  File "zxb.py", line 274, in main
  File "ast_\ast.pyc", line 102, in visit
  File "arch\zx48k\translator.pyc", line 317, in visit_CONST
  File "arch\zx48k\translator.pyc", line 200, in traverse_const
  File "arch\zx48k\translator.pyc", line 200, in traverse_const
  File "arch\zx48k\translator.pyc", line 191, in traverse_const
api.errors.InvalidOperatorError: Invalid operator "BOR"

A:\fase\engine>zxb\zxb prueba.bas
prueba.bas:2: warning: Using default implicit type 'ubyte' for 'a'

A:\fase\engine>


Entre la primera llamada y la segunda he actualizado el compilador a la versión 1.4.0-s1790

Por cierto tengo otro problemilla. Quiero hacer que una variable de tipo uinteger apunte a la dirección de una función (en realidad un SUB). Directamente no me deja. Luego he probado a poner una etiqueta al comienzo de dicha función y apuntar con @etiqueta. La llamada funciona pero no retorna bien y se cuelga, parece un problema de equilibrado de pila. ¿Hay alguna forma de hacer lo que digo?
Imagen
Avatar de Usuario
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

PrevioSiguiente

Volver a Programación y nuevos desarrollos

¿Quién está conectado?

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