Autor Tema: Cosas interesantes...  (Leído 228652 veces)

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #480 en: Abril 20, 2026, 03:30:50 »
Hola a todos!

Ahí va una buena aportación del uso de una rutina de copia rápida de bloques de memoria del ROM del BASIC. Se trata de la rutina BLTUC ($A3BF-41919), y que mueve el bloque apuntado por $5F-$60(95-96) y que termina en la dirección $5A-$5B(90-91) -1 al bloque que termina en la dirección apuntada por $58-$59(88-89) -1. El principal problema que nos ocurre al pokear los datos es que la propia instrucción POKE de BASIC machaca los datos de la dirección $5F-$60. Podéis probar a hacer un POKE95,1:POKE96,2:PRINT PEEK(95):PRINT PEEK(96) y veréis que, indefectiblemente, obtendréis dos preciosos ceros en pantalla.

Como las primeras instrucciones de la rutina lo que hacen es calcular el número total de bytes a mover,  restando los punteros $5A y $5F, el resultado será un desastre total
« última modificación: Abril 20, 2026, 04:37:09 por SingletonJohn »
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #481 en: Abril 20, 2026, 03:31:28 »
Pues bien: tengo la solución!

Después de analizar el código de la rutina y estar peleando un buen rato, hay una manera sencilla de usarla desde BASIC.

Como comentaba antes, las primeras instrucciones restan los punteros que marcan el principio y el final del bloque a mover y guarda los datos en Y( Byte menos significativo del tamaño del bloque) y X (Byte más significativo).
Lo que hay que hacer es poner el tamaño del  bloque que queremos mover en SXREG ($30D-781) y SYREG($30E-782), poner la dirección de memoria siguiente a la final del bloque de origen en $5A-$5B (90-91), poner la dirección de memoria siguiente a la final del bloque de destino en $58-$59 (88-89) y hacer un SYS a $A3CC (41932) en vez de a $A3BF (41919). De esta manera nos saltamos la resta de punteros y entramos con X e Y asignados

Como puede resultar algo lioso lo vemos con un ejemplo: el clásico de copiar el charset de $D000-$D7FF (el charset Gráfico) a $A000-$A7FF (para modificar algunos caracteres para tiles gráficos, por ejemplo, y conservar el resto). $A000 es la posición 4 del charset en el banco 2 (el banco 2 es un buen sitio para hacer estas cosas en BASIC)

20015 POKE 56333,127:POKE 1,51
20020 POKE781,8:POKE782,0:POKE90,0:POKE91,216:POKE88,0:POKE89,168:SYS41932
20025 POKE 1,55:POKE 56333,129


las líneas 20015 y 20025 son para activar/desactivar las interrupciones por tiempo y exponer/esconder el charset). Nada nuevo, esto lo encontráis en cualquier manual de BASIC en el capítulo de CUSTOM CHARSET.

El meollo está en la línea 20020. Como queremos mover el bloque $D000-$D7FF a $A000-$A7FF (esto es $800 bytes= 2048 bytes), ponemos 8 en SXREG(781) y 0 en SYREG(782):como decíamos, el byte más significativo a Registro X y el menos significativo a Registro Y. Ponemos en 90-91 la dirección de memoria siguiente a la del final del bloque de origen ($D7FF+1=$D800 -> 0 a 90 y 216 ($D8) a 91) y en 88-89 el byte siguiente al último byte del bloque de destino ($A7FF+1=$A800 -> 0 a 88 y 168 ($A8) a 89). hacemos el SYS y......tachán! podremos comprobar que el charset se ha copiado correctamente (usando un monitor de charset, por ejemplo) y tan sólo ha tardado algo menos de un segundo, en lugar del minuto de rigor si hacemos esto con el MÉTODO CLÁSICO (blucle FOR y POKES...)

Saludos y espero que os sirva para mover bytes a toda velocidad en BASIC!!!

« última modificación: Abril 20, 2026, 04:39:12 por SingletonJohn »
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 242
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #482 en: Abril 21, 2026, 11:53:49 »
Grande trabajo @SingletonJohn!

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #483 en: Abril 21, 2026, 13:39:59 »
Gracias @Iapetus !

El portear cosas de BASIC lo que sea a BASIC C64 me está haciendo investigar mucho y mirar el desensamblado de las ROMS.
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14888
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Cosas interesantes...
« Respuesta #484 en: Abril 21, 2026, 14:06:51 »
¿Se pueden usar este tipo de cosas en los juegos esos de 10 lineas?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #485 en: Abril 21, 2026, 14:58:59 »
¿Se pueden usar este tipo de cosas en los juegos esos de 10 lineas?

Entiendo que si. Lo único que no permite es crear rutinas en ensamblador. ("2. The 10 lines must not contain machine programs.")
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14888
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Cosas interesantes...
« Respuesta #486 en: Junio 12, 2026, 21:28:54 »
Envidiable la gente capaz de hacer estas cosas...!

Commodore 1530 boombox
https://www.youtube.com/watch?v=VWdY13NNte4
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14888
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Cosas interesantes...
« Respuesta #487 en: Junio 16, 2026, 15:13:57 »
Para los commodorianos puros, antisociales y con dinero:

https://www.youtube.com/watch?v=ixD_fqrnA_c
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 242
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #488 en: Junio 17, 2026, 17:07:37 »
No me ha parecido muy buena idea. Y yo esperando un C128 o Amiga 500/1200. Incluso un Vic20 o Plus 4 serían mucho más interesantes para mi.

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #489 en: Junio 17, 2026, 18:40:16 »
A mi me parece buena idea....

Pero creo que es MUY caro. Creo que, ya que limitas funcionalidades, limita el hardware y limita el precio....
Comprar un movil "capado" por 500 pavos....lo veo difícil de colar
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

SingletonJohn

  • Commodore Master
  • *****
  • Mensajes: 295
  • Poke 35136,0
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #490 en: Junio 17, 2026, 18:42:19 »
No me ha parecido muy buena idea. Y yo esperando un C128 o Amiga 500/1200. Incluso un Vic20 o Plus 4 serían mucho más interesantes para mi.
Para lo del Amiga están en conversaciones informales con el CEO de Cloanto......el resto de commodores, pues deberían darnos algún avance, porque si sacan el C128, igual ya paso de pillarme el C64....
"Ya al final de mi vida de pecador, mientras espero el momento de perderme en el abismo..." pues me lío y me pongo a hacer lo que no pude de pequeño! ;)

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 242
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #491 en: Junio 19, 2026, 10:07:35 »
Yo tengo un C64U y va muy bien, estoy super contento, he probado  demos de x2026 y no me he dado cuenta de fallos, quizá a nivel de sonido no sea 100%? pero a nivel de efectos gráficos no he encontrado nada de problemas.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14888
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Cosas interesantes...
« Respuesta #492 en: Junio 19, 2026, 13:57:59 »
El C64U es casi como el 64 definitivo... ¿qué mas necesitamos? ¿mejor emulación CRT o de audio, quizás?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Iapetus

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 242
    • Ver Perfil
Re:Cosas interesantes...
« Respuesta #493 en: Junio 20, 2026, 09:39:22 »
Me había olvidado del tema de la emulación CRT porque yo uso una TV(crt). No me gustó nada la imagen cuando conecté mi C64 por HDMI a mi monitor del PC.

Bieno

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 4348
  • PRINT"ADORA A TU COMMODORE"
    • Ver Perfil
    • bieno64
Re:Cosas interesantes...
« Respuesta #494 en: Junio 20, 2026, 09:45:38 »
El sonido es el gran tema pendiente del c64u. Para los exigentes, o sacrificas un c64 o compras el ARMSID https://www.retrocomp.cz/produkt?id=20 que ahora mismo está agotado.