Página 1 de 1

[noob] Recuperar programa escrito

Publicado: 02/05/15 12:47
por brunoip
Hola, hoy vengo con una pregunta noob. El tema es así, escribo un programa en la commodore 64, le doy Run y tira un error porque en algún lado escribí algo mal, se puede recargar el programa para corregirlo o hay que escribirlo todo de nuevo?

Re: [noob] Recuperar programa escrito

Publicado: 02/05/15 14:37
por fede2222
Si.. Si pones LIST debería mostrarte el programa

Luego pones nro de linea a reemplazar con el nuevo código

Ej:
List

10 print "hol"
20 print "fede"

Me comí la a
Pongo:
10 print "hola"
Y lo corrige

Re: [noob] Recuperar programa escrito

Publicado: 02/05/15 16:42
por brunoip
ah buenísimo, lo voy a probar, gracias.

Re: [noob] Recuperar programa escrito

Publicado: 03/05/15 20:54
por brunoip
alguien nota que hice mal?
Imagen
quería hacer este programa para probar los joys
http://www.lemon64.com/forum/viewtopic. ... 08c31dd8a2

Re: [noob] Recuperar programa escrito

Publicado: 03/05/15 21:35
por Nightwarex
Lo voy a ver, pero estoy bastante oxidado

Fijate aca http://www.commodore.ca/manuals/c64_pro ... _guide.pdf
(pagina 344)

Que es de donde saco el programa ese, quizas sea mas facil probar con ese, o ver que es lo que esta mal

Re: [noob] Recuperar programa escrito

Publicado: 03/05/15 21:54
por brunoip
genial el pdf, gracias

Re: [noob] Recuperar programa escrito

Publicado: 03/05/15 22:00
por the98
Imagino que habrás buscado el error, pero por las dudas:

http://www.devili.iki.fi/Computers/Comm ... e_400.html

BAD SUBSCRIPT The program was trying to reference an element of an array whose number is outside of the range specified in the DIM statement.

Re: [noob] Recuperar programa escrito

Publicado: 04/05/15 14:47
por fede2222
Hay que cambiar el 15 por 16 en la linea que da error
Esto FR=JV AND 15 por esto FR=JV AND 16

Explicacion:
Estas pidiendo un valor del vector mas grande que el limite del vector...

O sea vos tenes DR$ del 0 al 10 (11 posiciones)... donde DR$(1) es "UP", DR$(2) es "DOWN"... y el ultimo es DR$(10) es "DO/RI"

El valor JV que estas usando en la linea 125, PRINT DR$(JV), esta fuera de rango. O sea que JV debe ser 14, 15.. o algun valor mayor al limite del vector que es 10.

Para comprobar que valor tiene JV antes de hacer llamada erronea, crea una linea
124 PRINT "JV VALOR:" : PRINT JV

Deberias fijarte porque JV vale mas que 10...

Por lo que lei en la guia tenes en los primeros 5 bits las lecturas del puerto del joystick, lo que pasa que el PEEK lee el byte entero. Por eso usa el AND para despejar el valor que le interesa

Los bits del joystick se interpretan asi:
Bit 1 Prendido: Up
Bit 2 Prendido: Down
Bit 3 Prendido: Left
Bit 4 Prendido: Right
Bit 5 Prendido: Fire

Si haciendo JV=PEEK(56231)

Por ejemplo

Código: Seleccionar todo

Nro Bit                1  2  3  4  5
Potencias de 2         1  2  4  8  16
Bits Leidos            0  1  0  1  1
El bit 2 y 4 esta prendido, o sea que el joystick esta DOWN+RIGHT, y el bit 5 esta prendido, o sea que ademas esta el boton de disparo.

Si sumamos las potencias de 2, el valor de JV es (bit1) 2 + (bit 4) 8 + (bit 5) 16 = 26
O sea que JV=PEEK(56231) te guarda en JV el valor 26.


Por ejemplo con esto
FR=JV AND 16
despeja solo el bit del joystick

Código: Seleccionar todo

Nro Bit                1  2  3  4  5
Potencias de 2         1  2  4  8  16
Bits Leidos            0  0  1  1  1
Operandor AND           AND
Valor 16               0  0  0  0  1
--------------------------------
Bits Que Quedan        0  0  0  0  1
Si FR vale 16, el bit 5 estaba prendido. O sea que el boton del joystick estaba apretado.
La linea 110 habria que reemplazar el valor 15 por 16, sino no estaria detectando el Joystick

Si el boton estaba apretado, FR valdra 16, si estaba suelto valdra 0. Entonces se lo resta a JV para apagar UNICAMENTE ese bit. Fijate que si al valor de 26, le resto 16, me da 10, lo mismo que esten prendidos solo los bits 2 y 4.

Cuando haga PRINT DR$(JV).. JV valdria 10, si vemos el valor del vector en la posicion 10, es "DO/RI"

Re: [noob] Recuperar programa escrito

Publicado: 04/05/15 14:52
por brunoip
Gracias fede, sabia que estaba errando tratando de recuperar datos en un indice que no habia pero no entendia toda la magia que habia por detras. cuando legue a casa lo pruebo :)