Uso de Constantes en Pokes

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

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
wilco2009
Freddy Hardest
Mensajes: 543
Registrado: Lun Sep 17, 2012 9:40 am
Ubicación: Valencia

Uso de Constantes en Pokes

Mensaje por wilco2009 » Mar Oct 09, 2012 12:00 pm

Estoy siguiendo el curso de ZXBasic de na_th_an y he intentado usar constantes en los POKEs para ordenar un poco el código.
Por ejemplo:

Código: Seleccionar todo

Const sysCHARS as uInteger      = 23606
Poke uInteger sysCHARS, 15616 - 256


La sorpresa ha sido que si uso una constante como parámetro de dirección de la instrucción POKE me da un error de tipo:
raceback (most recent call last):
File "zxb.py", line 312, in <module>
File "zxb.py", line 246, in main
File "zxbtrad.pyc", line 316, in traverse
File "zxbtrad.pyc", line 439, in traverse
TypeError: cannot concatenate 'str' and 'int' objects
"make": *** [all] Error 255


No es un problema de tipos ya que si cambio Const por DIM (es decir la convierto en variable) no me da error.
El Spectrum no anda sobrado de memoria, por lo que me gustaría conservarlas como constantes.
¿Alguien sabe que está pasando? Parece un bug del compilador ¿no?

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

Re: Uso de Constantes en Pokes

Mensaje por na_th_an » Mar Oct 09, 2012 2:09 pm

Muchas veces el compilador se queja "mal" pero el error es de uno. En este caso tu código está bien, así que será un bug (te lo digo porque a veces me han salido paranoias de esas pero al final resulta que era yo el que estaba metiendo la pata - y el compilador también, que debería haberse quejado bien y no irse a tomar viento :-D)

A mí ese programa que has puesto me compila sin problemas. Es posible que fuera un bug que ya han corregido y estés usando una versión más antigua. Si te has bajado la que sale en el tutorial, entonces ese es el problema :D Era la última versión cuando escribí el tutorial, pero ya han salido más estables.

Vete aquí y bájate la 1.9, con esa no da el error: http://www.boriel.com/wiki/en/index.php ... IC:Archive

(la versión buena es la que pone "Windows .exe zip package" dentro de la sección "Current stable version")...

O sigue este enlace directo: http://www.boriel.com/files/zxb/zxbasic-1.2.9-win32.zip

Avatar de Usuario
wilco2009
Freddy Hardest
Mensajes: 543
Registrado: Lun Sep 17, 2012 9:40 am
Ubicación: Valencia

Re: Uso de Constantes en Pokes

Mensaje por wilco2009 » Mar Oct 09, 2012 5:08 pm

Muchas gracias na_th_an!!.
Efectivamente era problema de versión.
Cuando lo intenté bajar la primera vez desde la web del autor, me daba error el servidor y entonces me bajé el del tutorial.

Gracias de nuevo.
Voy por el capítulo 11 y ahora voy a ver si termino de dibujar mi mapa.....

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

Re: Uso de Constantes en Pokes

Mensaje por na_th_an » Mié Oct 10, 2012 9:12 am

A ver qué va saliendo :)

Avatar de Usuario
wilco2009
Freddy Hardest
Mensajes: 543
Registrado: Lun Sep 17, 2012 9:40 am
Ubicación: Valencia

Re: Uso de Constantes en Pokes

Mensaje por wilco2009 » Mié Oct 10, 2012 8:50 pm

Por cierto y por si lo quieres poner para quien le pueda servir. Yo uso el Programmer's Notepad, que junto con el Makefile que pongo abajo me viene super-cómodo para programar en ZX-Basic:

Código: Seleccionar todo

TARGET      :=   $(notdir $(CURDIR))
TEMP      :=   c:\tmp
SOURCES      :=   dev

#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------

export OUTPUT   := $(TARGET)

MAINFILE      := $(OUTPUT).bas
#---------------------------------------------------------------------------------

all            :   $(SOURCES)\$(MAINFILE)

#---------------------------------------------------------------------------------
   @echo $(MAINFILE)
   @echo $(CURDIR)
   cd $(SOURCES); \
   D:/Spectrum/ZXBasic/zxb.exe -o ../$(OUTPUT).tap -t -B -a $(MAINFILE)
   
#---------------------------------------------------------------------------------
clean:
   @echo clean ...
   $(RM) *.tap

#---------------------------------------------------------------------------------
run:
   start $(OUTPUT).tap

#-----------------------------------------------------------------------



Simplemente hay que tener en cuenta que debemos cambiar donde pone "D:/Spectrum/ZXBasic/" por la ruta en que tengamos instalado el ZXBasic, o bien no poner la ruta y añadirla en el PATH.

Responder

¿Quién está conectado?

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