Lo decia porque sigues un camino un tanto inusual, te has salteado algunos pasos en tu incursion en la programacion en ensamblador, normalmente lo primero que se aprende despues de las instrucciones del 6502 son las rutinas de la ROM, lo que vendria a ser la "BIOS" del C64.
En la mayoria de los ordenadores el uso es similar, se definen dispositivos asignandoles un numero, algunos son de entrada, otros de salida y otros de entrada/salida, un ejemplo de dispositivo de entrada es el teclado, de salida la pantalla, y de entrada/salida todo lo que tiene que ver con el almacenamiento. En los Commodore (PET, C16, Plus/4, C128, C64, etc.) se usa la rutina OPEN para abrir un canal hacia un dispositivo (que puede ser el teclado o la pantalla tambien), y luego hay rutinas para enviar o recibir un byte, dependiendo del dispositivo del cual se trate, se requerira llamar a otras rutinas antes de OPEN, por ejemplo si es un dispositivo de E/S hay que llamar a una rutina para especificar el nombre del archivo. Si se quiere enviar un comando a la disketera, como por ejemplo para formatear un diskette, se usa la cadena de comandos como si fuera el nombre de archivo.
Usando el numero de dispositivo de la pantalla se puede imprimir con esas mismas rutinas genericas, pero la que usaste es una rutina que enmascara todo eso y va directamente a la pantalla, aunque por debajo use las genericas.
Lo bueno de las rutinas genericas es que aprendiendo como usarlas luego haces de todo con casi el mismo codigo, solo cambiando la forma en que las usas.
Hice una busqueda rapida y aqui sale algo de las rutinas, un poco resumido:
https://www.c64-wiki.com/index.php/KernalAqui detalla un poco mas el uso de cada rutina:
http://sta.c64.org/cbm64krnfunc.htmlEn el caso especifico de la posicion del cursor (la rutina que usaste, CHROUT, que tiene el vector de entrada en $FFD2 en todos los modelos de Commodore, imprime en la posicion actual del cursor), se ajusta o se lee usando la rutina PLOT:
PLOT $FFF0 65520 Set or retrieve cursor location
https://www.c64-wiki.com/index.php/PLOTLo que no recuerdo es que registro contiene la fila y cual la columna, en esos dos sitios dice exactamente lo contrario en cada uno, ese ultimo que puse dice que X contiene la fila e Y la columna, el otro dice lo contrario, y me parece mas logico, X: columna, Y: fila.
"$FFF0 PLOT. Save or restore cursor position.
Input: Carry: 0 = Restore from input, 1 = Save to output; X = Cursor column (if Carry = 0); Y = Cursor row (if Carry = 0).
Output: X = Cursor column (if Carry = 1); Y = Cursor row (if Carry = 1).
Used registers: X, Y.
Real address: $E50A."
Justo antes de llamar a PLOT necesitas ajustar el valor de CARRY, en eso coinciden los dos sitios, si CARRY=0, al llamar a la rutina lees la posicion actual del cursor, que se carga en X e Y, si CARRY=1, necesitas cargar X e Y previamente con columnas y filas validas, y al llamar a PLOT deberia cambiarse la posicion del cursor usado por CHROUT.
Estuve buscando y no los encontre escaneados, pero puede ser que esten en alguna parte, si los encuentras te recomiendo estos libros, no son muy extensos pero tienen buena informacion, solo tengo el ultimo, el primero debe ser mas interesante en tu caso porque trata de graficos y sonido. En este tema de retrocomputacion se hablo de estos libros:
http://www.retrocomputacion.com/e107_plugins/forum/forum_viewtopic.php?34771Fijate que trae una tabla (la segunda foto que aparece) donde se explica bien el uso de cada rutina de la ROM.