Grabación y carga de ficheros; imágenes D64

En las entradas anteriores hemos revisado cómo hacer E/S con diversos dispositivos: teclado, joysticks, dispositivos conectados al puerto serie, dispositivos conectados al puerto paralelo, etc. Pero esta discusión sobre E/S no estaría completa sin revisar dos de las operaciones de E/S más frecuentes: grabar y cargar ficheros, ya sea con cinta o disco.

Las próximas entradas versarán sobre grabación y carga de ficheros. En ambos casos usaremos las rutinas del Kernal, ya que hacerlo desde cero, por ejemplo, usando el puerto serie, sería demasiado duro.

Pero antes de adentrarnos en los detalles del ensamblador y las rutinas del Kernal, vamos a ver cómo hacer en VICE todo lo que sigue:

  • Crear una imagen D64 nueva.
  • Grabar un fichero desde BASIC.
  • Cargar un fichero desde BASIC.

Para crear una imagen D64 nueva, es decir, un disco vacío, debemos seleccionar la opción File > Attach Disk Image > Drive 8 (o el número de unidad que queramos usar). Dentro de la ventana que emerge debemos rellenar el nombre del fichero (ej. DISCO.D64), el nombre del disco (ej. entradasalida), el tipo (d64), y pulsar “Create Image”.

Aparecerá la imagen D64 nueva en el recuadro superior y, si la seleccionamos, veremos que es un disco vacío:

Crear D64

Pulsando “Attach” dejaremos el disco conectado a nuestro C64 como unidad 8.

Repasar cómo se graban y cargan ficheros desde BASIC es interesante porque, como veremos en las próximas entradas, hacerlo desde ensamblador es muy similar, al menos conceptualmente.

Para grabar un fichero (un programa) desde BASIC, lo primero es definir el citado programa. Teclearemos un programa sencillo como el que sigue:

10 PRINT “HOLA”

20 GOTO 10

Para grabar el programa a cinta, se puede usar SAVE o SAVE “NOMBRE”. Si se quiere grabar a disco lo habitual es hacer SAVE “NOMBRE”, 8.

La sintaxis general es SAVE “NOMBRE”, DISPOSITIVO, DIRECCIÓN, donde:

  • NOMBRE es el nombre del fichero.
  • DISPOSITIVO normalmente es 1 (cinta) u 8 (disco).
  • DIRECCIÓN normalmente no existe, en cuyo caso el programa se graba sin información de dirección, o 1, en cuyo caso el programa se graba con una cabecera que indica la dirección de carga del programa.

La cabecera de dirección, cuando está presente, puede usarse a la hora de cargar el fichero. Pero no es obligatorio respetarla, todo depende del usuario o del programa que haga la carga.

Probemos a hacer SAVE “MIPROGRAMA”, 8 para grabar nuestro programa. Si ahora volvemos a File > Attach Disk Image > Drive 8, y seleccionamos la imagen DISCO.D64, veremos que tiene un fichero de tipo PRG:

MiPrograma

Igualmente, podemos ver el contenido de la imagen/disco con LOAD “$”, 8, ya que “$” representa el directorio del disco:

MiPrograma2

Finalmente, para cargar “MIPROGRAMA” desde BASIC tendríamos que hacer LOAD, LOAD “MIPROGRAMA”, LOAD “MIPROGRAMA”, 8, etc., en función de que queramos cargar un programa concreto o no, queramos hacerlo desde cinta o disco, etc. Otra opción habitual es usar el “*” para representar el primer programa.

Nuevamente, la sintaxis general es LOAD “NOMBRE”, DISPOSITIVO, DIRECCIÓN, donde:

  • NOMBRE es el nombre del fichero.
  • DISPOSITIVO normalmente es 1 (cinta) u 8 (disco).
  • DIRECCIÓN normalmente no existe, en cuyo caso el programa se carga en la zona de BASIC (porque ahora estamos hablando de BASIC), o 1, en cuyo caso el programa se carga en la dirección indicada en la cabecera del fichero.

Si probamos a hacer LOAD “MIPROGRAMA”, 8 recuperaremos el programa:

MiPrograma3

Todo lo que hemos visto en esta entrada (crear imágenes D64 nuevas, grabar ficheros desde BASIC, y cargar ficheros desde BASIC), nos servirá de base para las entradas que siguen, ya dedicadas a la grabación y carga de ficheros desde ensamblador.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s