11-21-2024, 10:49 AM
baltasarq Wrote:Hola,
> Sí se pueden leer cadenas con READ y DATA.
> Qué versión del compilador tienes? Este programa no debería compilarte. La instrución INPUT a, no está soportada como tal.
> Si quieres hacer una pausa usa PAUSE 0.
Pues funciona como uno se esperaría... pero vale, lo cambio por un pause 0.
Code:$ ./zxbc.sh --version
zxbc.py 1.17.3
La versión es la última que encontré en Github...
> Igualmente en las nuevas versiones, los DATA han de definirse fuera de las funciones y SUBs.
Oh, con lo recogidito que queda así... :-P
Me descargo la beta, y te cuento.
Gracias,
Hola,
Me salen muchos warnings de funciones que no se usan de la librería estándar. ¿Esto es normal?
-- Baltasar
Vale, probada la nueva versión.
Hasta donde veo, fuciona bien, pero... ahora se me queda atascado tras leer el cuarto byte de las conexiones, las salidas, de la primera loc.Code:$ ./zxbc.sh --version
zxbc.py v1.18.0-beta4
He cambiado el código fuente:
Code:' Locs
' (c) 2022/25 Reveni Baltasar MIT License <baltasarq@gmail.com>
const NumLocs as ubyte = 2
'enum Exits
const ExitNorth as ubyte = 0
const ExitSouth as ubyte = 1
const ExitEast as ubyte = 2
const ExitWest as ubyte = 3
const ExitUp as ubyte = 4
const ExitDown as ubyte = 5
const NumExits as ubyte = 6
'end enum
dim locDescs(NumLocs) as string
dim locExits(NumLocs, NumExits) as integer
sub init_locs()
'locDescs( 0 ) = "El lugar del alunizaje. La vaina abierta y sin " _
' + "contenido parece una triste parodia de ella misma. " _
' + "Un valle natural conduce al sur."
'locDescs( 1 ) = "El lugar del alunizaje. La vaina abierta y sin " _
' + "contenido parece una triste parodia de ella misma. " _
' + "Un valle natural conduce al sur."
restore LocData
for i = 0 to NumLocs - 1
print "numloc i:", i
' Read the desc
read locDescs( i )
print "read numloc i: "; i; locDescs( i )
' Read the exits
for j = 0 to NumExits - 1
print "numloc i:"; i; " exit "; j
read locExits(i, j)
print "numloc i:"; i; " exit "; j; " = "; locExits(i, j)
pause 0
next
next
end sub
LocData:
' Loc 0 - Landing
data "El lugar del alunizaje. La vaina abierta y sin " _
+ "contenido parece una triste parodia de ella misma. " _
+ "Un valle natural conduce al sur."
data -1, 1, -1, -1, -1, -1
' Loc 1 - Valley
data "El lugar del alunizaje. La vaina abierta y sin " _
+ "contenido parece una triste parodia de ella misma. " _
+ "Un valle natural conduce al sur."
data 0, -1, -1, -1, -1, -1
¿Me he metido en un jardín con lo de los DATA? ¿Es mejor asignarlos "normal", y punto?
¿Es posible inicializar a -1 un vector con locExits, sin recorrer a un bucle for?
Gracias,
No, está bien

Es simplemente que el DATA del BASIC de ZX Spectrum es muy potente (permite incluso expresiones como DATA x * x + SQRT(x ^3), y cosas así.
Todo eso está soportado, solo que no está muy probado y por eso ahora eres el primer tester que lo prueba a fondo. :-)
Si es inicializar un vector o matriz numérico, se puede hacer directamente, pero recuerda que aquí el DIM es una declaración, no una "instanciación". Es decir, DIM, independientemente de la posición donde se ponga, se hace al principio de la ejecución del programa una sola vez.
Para crear un array numérico inicializado (no funciona con cadenas por el momento), es con la sintaxis:
Code:
DIM a(5) as Uinteger => {0, 1, 2, 3, 4, 5}
Admite múltiples dimensiones, anidando llaves. Aquí tienes más información (al final de la página): https://zxbasic.readthedocs.io/en/docs/d...clarations
Y lo dicho, los arrays inicializados se inicializan una vez. Si necesitas inicializarlos repetidamente, has de usar READ y DATA :-)
---
Boriel
Boriel