Una joya: “Programming the Commodore 64”

Programación retro del Commodore 64

  • Programación retro del Commodore 64
  • “Programación Retro del Commodore 64” es un blog sobre el hardware, el sistema operativo, y la programación del Commodore 64. Y más específicamente sobre programación en ensamblador. Pretende ser un blog con información de calidad, y referencia en español de la programación retro de esta maravillosa máquina.
    • Mi blog
« Publicado el: 01/05/2024 »

Hace un par de posts os hablaba de lulu.com y de que tenía ganas de comprar y leer un par de libros. Uno de ellos era “Programming the Commodore 64” de Raeto Collin West:

Pues bien, dicho y hecho. Aunque son 600 páginas se lee bastante bien.

Creo que este libro es una joya. Desde luego, hace honor a su subtítulo: “The encyclopedic reference guide to the Commodore 64 computer”, ya que prácticamente cubre todo lo que se puede tratar. Es curioso, porque no es tan conocido como otros manuales de referencia del 64, seguramente por ser una publicación ya algo tardía (1985).

Desde el punto de vista de la impresión, el ejemplar está muy bien. La encuadernación parece buena y resistente, a pesar de que el volumen es grueso. Y la impresión es buena y clara, aunque, curiosamente, tiene alguna anotación a mano, seguramente porque lulu.com hace la impresión a partir de algún ejemplar escaneado.

Respecto al contenido, es algo así (lo simplifico un poco):

  • Introducción al libro.
  • Conociendo el C64 (conexiones, teclado, edición).
  • Referencia de BASIC (sintaxis, comandos, errores).
  • Programación efectiva en BASIC (diseño, depuración, rendimiento).
  • Arquitectura del C64 (hardware, memoria, puertos, CIAs, hardware y software comerciales).
  • BASIC avanzado (almacenamiento en memoria, ubicaciones especiales, extensiones de BASIC).
  • Código máquina del 6510 (chip 6510, monitores, ensambladores).
  • Técnicas de código máquina específicas del C64 (rutinas del Kernal, rutinas de BASIC, RAM bajo ROM, modificando BASIC, vectores e interrupciones).
  • Combinando BASIC y código máquina (RAM disponible para código máquina, combinando BASIC y código máquina, código máquina reubicable).
  • Conjunto de instrucciones del 6510.
  • Mapa de la ROM del C64.
  • Gráficos (gráficos en BASIC, gráficos en código máquina, el chip VIC-II, caracteres personalizados, gráficos bitmap, sprites).
  • Sonido (tipos de ondas, el chip SID, música).
  • Almacenamiento en cinta (cargar y grabar BASIC, ficheros de datos, cargar y grabar código máquina, programación avanzada de la cinta, protección contra escritura).
  • Almacenamiento en disco (comandos de disco en BASIC, manejar ficheros con BASIC, programas de utilidad, hardware, almacenamiento en disco, programar el disco en código máquina).
  • Puertos de control (joysticks, paddles, lápiz óptico).
  • Otros periféricos (impresoras, plotters, módems, RS-232, puerto serie).
  • Apéndices (Proofreader, RAM de pantalla, RAM de color, códigos de colores, tabla ASCII, tabla PETSCII, códigos de pantalla, el chip VIC-II, el chip SID, conversión dec-hex, opcodes del 6510, Supermon, etc.).

Como veis, difícilmente se pueden cubrir más cosas. ¿Alguien da más?

Además, el libro está bien explicado, con un estilo claro. Y tiene abundantes ejemplos.

Por buscarle alguna pega, algunos temas me parecen un poco desubicados o fuera de orden. Por ejemplo, yo hubiera empezado por la arquitectura del C64 (hardware, memoria, etc.), y luego le hubiera metido mano al BASIC, al código máquina, a los gráficos, al sonido y a los periféricos. El mapa de la ROM se queda un poco escaso, especialmente en comparación con otros libros más potentes en este sentido como “Mapping the Commodore 64” de Sheldon Leemon.

Luego una cosa un poco molesta es que, siendo un libro avanzado y que usa el código máquina, tiende a presentar casi todos los ejemplos en formato de programa BASIC que carga y ejecuta el código máquina desde instrucciones DATA. Esto es un poco absurdo porque así el código máquina no se ve y no te enteras de lo que hace, salvo que te piques y ejecutes el BASIC y luego desensambles. No entiendo el enfoque…

Por lo demás, tengo que decir con cierto orgullo que casi todo el contenido del libro está cubierto en este blog y los libros asociados (arquitectura del C64, mapas de memoria, código máquina / ensamblador, chips especiales, gráficos, sonido, joysticks, paddles, rutinas del Kernal, interrupciones, etc.), siendo la principal excepción el BASIC ya que, hasta la fecha, tampoco ha sido el foco de este blog.

Y luego el libro tiene una parte final que, por desconocer los detalles hasta ahora, me ha gustado especialmente: la descripción detallada del funcionamiento de las cintas, los discos y los distintos tipos de ficheros (PRG, SEQ, REL, …).

En definitiva, una lectura muy recomendable para unos días de puente.