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