Autor Tema: Ejemplo de multiplexor básico...  (Leído 10125 veces)

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Ejemplo de multiplexor básico...
« en: Junio 20, 2014, 15:07:36 »
Buenas a tod@s, primero voy a presentarme, me llamo SyX, principalmente programo para CPC y aunque nací en San Fernando, desde finales del año pasado vivo al otro lado del Atlántico, en Fortaleza, Brasil.

Por la Semana Santa de hace más de 3 años, alguien, no recuerdo quien, me pidió ayuda para un curso de programación en ensamblador de C64 que estaba haciendo, y como tenía ganas de aprender un poco de 6502 y del funcionamiento interno del C64, le comenté que haría un ejemplo superbásico de un multiplexor de sprites (bueno llamarlo "multiplexor" es abusar mucho de la palabra, porque todo es estático, no tenemos una rutina de ordenación, ... pero hay que recordar que era un tutorial para gente que comenzaba en ensamblador, jejeje).

Así que cogí mi manual de Anaya (que tengo que recordar de traer la próxima vez que regrese a España) y una referencia del hardware de C64 y durante la mañana de aquel Domingo de Ramos monté el ejemplo que he adjuntado al mensaje, la verdad es que me lo pasé muy bien y si veis los fuentes, conforme iba leyendo cosas, pues las iba añadiendo al código, jajaja.

Se supone que esa persona iba a hacer un artículo con ese listado, pero nunca supe más de él, un año después le contacté de nuevo y me dijo que estaba liado pero que lo haría en cuanto pudiese... más de 3 años después, ésto ha cogido tanto polvo que ya ni recuerdo de que iba, por lo que mejor publicarlo para que al menos sirva como mínimo de ejemplo de ensamblador para las personas que esten aprendiendo.

Solo está probado en VICE, lo se, lo se, no hay nada que sustituya a la sensación de probarlo en la máquina real, pero es que no tengo C64, intentaré conseguir uno en el futuro, porque una de mis reglas es solo programar para una máquina que posea, para poder probar que funciona realmente y no es un artefacto de la emulación :)

Aunque el artículo nunca se hizo, el código está hipercomentado y las únicas cosas rarunas que encontraréis es que el ensamblador que uso es VASM, que es el mismo que uso tanto para 6502, 68000 y Z80; tampoco uso direcciones de memoria absolutas, sino que tengo unas etiquetas definidas en el fichero de cabecera hardware.i (el cual no está completo, porque fue creciendo mientras leía la referencia del hardware del C64), es decir en vez de hablar de $DC00, uso CIA1_DPR_A, ...

Espero que os guste y que sea de utilidad para alguien :)
« última modificación: Junio 20, 2014, 17:55:50 por SyX »

Jeff

  • Commodore Master
  • *****
  • Mensajes: 821
  • RUN/STOP + RESTORE
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #1 en: Junio 20, 2014, 15:26:07 »
R Tape Loading error
« última modificación: Diciembre 17, 2019, 22:07:54 por Jeff »
Press ANY key (¿Donde esta la tecla ANY???)

Bieno

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 3990
  • PRINT"ADORA A TU COMMODORE"
    • Ver Perfil
    • bieno64
Re:Ejemplo de multiplexor básico...
« Respuesta #2 en: Junio 20, 2014, 15:41:11 »
Buenas y bienvenido, SyX.

Que libro es este de Anaya que comentas? No me suena.

Esperamos verte por aquí y mucho. Somos buena gente y además con mucho sentido del humor.  ;D

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #3 en: Junio 20, 2014, 15:53:11 »
Éste:


Que lo compré en una librería en Cádiz que estaba cerrando a mediados de los 90, y salí con 6 bolsas llenas de libros de ordenadores de 8 bits  ;D

El libro lo explica todo muy facilito y al final viene una buena referencia de las instrucciones del 6502.

Bieno

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 3990
  • PRINT"ADORA A TU COMMODORE"
    • Ver Perfil
    • bieno64
Re:Ejemplo de multiplexor básico...
« Respuesta #4 en: Junio 20, 2014, 15:54:59 »
Sabes si está preservado? Parece interesante ;D

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #5 en: Junio 20, 2014, 16:33:00 »
Ni idea Bieno, la verdad es que ando muy pez en el asunto de preservación del C64 en España, alguna vez descargué algunas Commodore World, porque a comienzos de mis años con el Amiga 500 tuve acceso a algunas revistas españolas y andaba buscando un artículo sobre la programación del Toi Acid Game para C64 que ví  y qué nunca más volví a ver, y creo recordar que hablaban de rutinas de mapeados; y otro que enseñaba como hacer sonidos digitalizados con el SID y que porte al CPC, jejeje; ó aquellas "magias" que publicaban como la del scroll de estrellas usando las interrupciones del raster... aprovecho para preguntar si alguien recuerda esos artículos y en que revistas eran porque me gustaría volver a leerlos después de tantos años :)

Tampoco es que siga muy al día las novedades del C64, de vez en cuando echo una hora leyendo los hilos de Lemon64 y si no es por eso y por un colega extranjero (uno de los mejores programadores de C64 que conozco), la verdad es que no sabría gran cosa... a pesar de que es infinitamente más interesante que el aburridísimo sperrium :P

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13741
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Ejemplo de multiplexor básico...
« Respuesta #6 en: Junio 21, 2014, 04:04:54 »
En castellano no sé si hay mucho material preservado... en cambio en inglés está casi todo, y lo tienen en esta web! http://www.bombjack.org/commodore/books.htm

Yo estuve recuperando un par de libros, uno no estaba en castellano: https://archive.org/details/ManualDeReferenciaDelProgramadorCommodore64Castellano

Habría que intentar rastrearlo a ver si existe y sino, ¡¡a escanear!! :P
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 669
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #7 en: Junio 21, 2014, 22:33:11 »
Hi SyX!!

   He estado probando el prg en el vice y me interesa muchisimo, estoy intentando destripar el listado, probable que te haga alguna preguntilla sobre alguna duda.

   BIENVENIDO!!!

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #8 en: Junio 22, 2014, 01:48:38 »
Pero tampoco es nada del otro mundo Rulas, el objetivo era que el código fuese entendible por alguien que estuviese aprendiendo, por eso mismo aproveché para poner varios ejemplos de las dudas usuales que se podría encontrar en el uso del hardware del C64, por ejemplo, como usar las interrupciones por raster, los sprites, tiles, ... vamos lo típico que hace al C64 la máquina que es y una de las más divertidas de programar :)

Hoy en día quizás lo haría de otra manera y solo añadiría una característica por ejemplo, para no mezclar tantas cosas así de golpe y que el personal no se empachase... pero no toco el 6502 desde entonces, a pesar de que este colega siempre me está picando a hacer alguna cosilla para él, jejeje.
« última modificación: Junio 22, 2014, 01:51:15 por SyX »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 669
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #9 en: Junio 22, 2014, 01:57:59 »
No te creas que yo se tanto!!,..aparte ya te digo que no he podido destripar todos los archivos...

 Un saludo.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13741
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Ejemplo de multiplexor básico...
« Respuesta #10 en: Junio 22, 2014, 02:26:16 »
Syx, me suenas mucho de algún otro foro, ¿puede ser?!

¿El curso no sería el de Lobogris?

Ya nos contarás que haces por Brasil :-)
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #11 en: Junio 22, 2014, 15:37:05 »
Solo de foros de CPC, josepzin, aunque lo mismo te suena alguno de los proyectos en que he participado, aunque no es una lista completa, por ejemplo, no están algunas colaboraciones con otros proyectos ó todas las utilidades para las nuevas ampliaciones para CPC.

Podría ser el curso del tal lobo, pero ni idea, la verdad :P

En cuanto a que hago en Brasil, bueno, eso es lo más fácil de explicar, conocí al amor de mi vida, en  diciembre pasado me casé y desde entonces vivo aquí, en Fortaleza, su ciudad y ahora mía también, jejeje.

PD: ¿A alguno le suena las revistas que mencionaba antes?
« última modificación: Junio 22, 2014, 15:42:04 por SyX »

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13741
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Ejemplo de multiplexor básico...
« Respuesta #12 en: Junio 22, 2014, 22:16:06 »
Solo de foros de CPC, josepzin, aunque lo mismo te suena alguno de los proyectos en que he participado, aunque no es una lista completa, por ejemplo, no están algunas colaboraciones con otros proyectos ó todas las utilidades para las nuevas ampliaciones para CPC.
Estoy seguro que ya había oído hablar de ti antes, quizás por el Uwol o a saber!

Citar
Podría ser el curso del tal lobo, pero ni idea, la verdad :P
Mira si te suena, estos son los capítulos publicados: http://back2theretro.blogspot.com.ar/2012/01/curso-de-ensamblador-para-c64.html

Citar
En cuanto a que hago en Brasil, bueno, eso es lo más fácil de explicar, conocí al amor de mi vida, en  diciembre pasado me casé y desde entonces vivo aquí, en Fortaleza, su ciudad y ahora mía también, jejeje.
Sólo hay 3 cosas que hacen posible lo que has hecho:
- El dinero
- Las ansias de aventuras/viajar/conocer mundo
- Tetas ;) :D Por ahí cerca lo tenemos a Raúl Montón en Paraguay. En mi caso fue al revés y luego pero al final también fue igual :P

Citar
PD: ¿A alguno le suena las revistas que mencionaba antes?
La Commodore World es muy conocida, creo que yo tuve alguna pero no estoy seguro... Aquí estan todas: http://retroinvaders.com/es/revistas/seed/183
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13741
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Ejemplo de multiplexor básico...
« Respuesta #13 en: Junio 22, 2014, 22:18:54 »
He probado ese ejemplo que has puesto (se me había pasado!) y está MUY BIEN, ahí sin despeinarte has metido scroll fino, redefinición de caracteres, de sprites y además más de 8 en la pantalla.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

SyX

  • Sinver
  • *
  • Mensajes: 13
  • SYS 0
    • Ver Perfil
Re:Ejemplo de multiplexor básico...
« Respuesta #14 en: Junio 23, 2014, 01:02:48 »
La Commodore World es muy conocida, creo que yo tuve alguna pero no estoy seguro... Aquí estan todas: http://retroinvaders.com/es/revistas/seed/183
Pues si, y solo con ver las portadas ya he recordado casi todas, la 50 es la del scroll de estrellas (y el de raytracing en C para Amiga, que a mí las revistas me las pasaba un colega de C64 para poder ver la sección de Amiga) y la 53 es la del sonido digitalizado.

Y estoy casi seguro que la del Toi Acid Game es la 58, la que no está preservada :(, aunque me ha dado por buscar la versión de c64 de dicho juego y por lo visto nunca salió, así que a lo mejor lo que recuerdo es una entrevista a Iber, pero juraría que comentaban como habían hecho la rutina de mapeado y salía una foto del juego para C64.

ahí sin despeinarte has metido scroll fino, redefinición de caracteres, de sprites y además más de 8 en la pantalla.
Pero es que todo eso te lo da el C64 por defecto (entre que el VIC-II es una gozada con scroll, tiles, sprites, interrupciones por raster, ... y el ensamblador del 6502 es 50 y pocas instrucciones -al menos oficiales :P-), no te puedes imaginar el sufrimiento para hacer eso mismo en CPC xDDD