Revisa la línea 110. Seguro que te has comido una coma (un clásico copiando listados MicroHobby
).
Por cierto, prueba este listado:
Código: Seleccionar todo
1 CLEAR 23899
2 LET BASE=24000: LET PANTALLAS=3
3 FOR N=0 TO PANTALLAS-1
10 LOAD "" CODE BASE+6912*N,6912
20 NEXT N
100 RESTORE 110: FOR N=0 to 11: READ A: POKE 23900+N, A: NEXT N
110 DATA 17, 0, 64, 33, 0, 0, 1, 0, 27, 237, 176, 201
120 LET TECLA=CODE INKEY$-48:IF TECLA<1 OR TECLA>PANTALLAS THEN GO TO 120
300 POKE 23904, BASE-INT((BASE+6912*(TECLA-1))/256)*256
305 POKE 23905, INT((BASE+6912*(TECLA-1))/256)
310 RANDOMIZE USR 23900
320 GOTO 120
Y dime si te funciona. Lo he escrito en el notepad y no lo he probado, pero debería funcionar. Si quieres cargar más pantallas (hasta 6) debes cambiar el valor de PANTALLAS en la línea 2.
He intentado hacerlo lo más genérico posible, para que no tengas que cambiar nada más que eso. Si quieres cargar directamente una pantalla, sólo has de calcular cuando valen A y B, cambiando BASE por el valor que te devuelva BASE+6912*N (siendo la BASE en esta fórmula 24000, es decir 24000+6912*(PANTALLA-1)). Ejemplo:
120 LET BASE=24000*6912*
1: CARGA SEGUNDA PANTALLA
300 POKE 23904, BASE-INT((BASE/256)*256
305 POKE 23905, INT(BASE/256)
310 RANDOMIZE USR 23900
Esto si lo quieres meter en algún programa. Recuerda que también necesitarías la carga del código máquina, líneas 100 y 110.
Un saludo.