Manual de Basic Spectrum 48k. |
Capítulo 20
Almacenamiento en cintaResumen
Los métodos básicos para utilizar la grabadora de cassette para conservar (SAVE), cargar (LOAD) y verificar (VERIFY) programas se dan en el fascículo de introducción. Esta sección debe ser objeto de lectura e intentarse realizar los procedimientos antes de seguir más adelante. Hemos visto que LOAD borra el anterior programa y las variables existentes en el ordenador antes de cargar los nuevos procedentes de la cinta; hay otra sentencia, MERGE, que no hace lo mismo. MERGE sólo borra una variable o línea de programa anterior si ha de hacerlo porque haya una nueva con el mismo nombre o número de línea. Introduzca por el teclado el programa de "dados" incluido en el capítulo 11 y consérvelo en cinta, como "dice" (dados). Ahora introduzca y ejecute lo siguiente:
y luego, proceda como para la verificación, pero sustituyendo VERIFY "dice" por: MERGE "dice"
Si efectúa el listado del programa, puede ver que han sobrevivido las líneas 1 y 2, pero que las líneas 10 y 20 se han sustituido por las del programa de dados. x también ha sobrevivido (pruebe PRINT x). Ya ha visto formas sencillas de las cuatro sentencias utilizadas con la cinta de cassette: SAVE registra el programa y las variables en cassette. VERIFY comprueba el programa y las variables en cassette con respecto a los ya existentes en el ordenador. LOAD borra del ordenador todos sus programas y variables anteriores y les sustituye por otros nuevos extraídos de cassette. MERGE es como LOAD con la salvedad de que no borra una variable o línea de programa anterior, a no ser que haya de hacerlo porque su nombre o número de línea sea coincidente con una nueva procedente del cassette. En cada una de ellas, la palabra clave va seguida por una cadena; para SAVE ello proporciona un nombre para el programa en cinta, mientras que para las otras tres, comunica al ordenador qué programa buscar. Mientras realiza la búsqueda, imprime el nombre de cada programa que encuentra. Hay un par de peculiaridades interesantes para todo ello. Para VERIFY, LOAD y MERGE, puede proporcionar la cadena vacía como el nombre para buscar; entonces, el ordenador no tiene que preocuparse del nombre, sino que toma el primer programa que se encuentra. Una variante en SAVE adopta la forma: SAVE cadena LINE número
Un programa conservado con su empleo se registra de tal forma que cuando sea objeto de nueva lectura por LOAD (pero no MERGE) salta automáticamente a la línea con el número dado, con la que se ejecuta por sí misma. Hasta ahora, los únicos tipos de información que hemos almacenado en cassette han sido programas junto con sus variables. Hay, asimismo, otras dos tipos denominados matrices y bytes. Las matrices se tratan con pocas diferencias. Puede conservar matrices en cinta con el empleo de DATA en una sentencia SAVE, mediante: SAVE cadena DATA nombre de matriz()
La cadena es el nombre que la información tendrá en la cinta y opera en exactamente la misma forma que cuando conserva un programa o bytes ordinarios. El nombre de la matriz especifica la matriz que desea conservar, por lo que es simplemente una letra seguida por $. Recuerde los paréntesis en lo sucesivo; podría considerar que son lógicamente innecesarios pero, no obstante, ha de ponerlos para hacerlo más fácil para el ordenador. Están claras las funciones independientes de la cadena y del nombre de la matriz. Si dice, por ejemplo: SAVE "Bloggs" DATA b()
entonces, SAVE toma la matriz b del ordenador y la almacena en cinta con el nombre "Bloggs". Cuando teclea: VERIFY "Bloggs" DATA b()
el ordenador buscará una matriz de números almacenada en cinta con el nombre "Bloggs" (cuando la encuentre, escribirá "Matriz de números: Bloggs") y la comprobará con respecto a la matriz b en el ordenador. LOAD "Bloggs" DATA b()
encuentra la matriz en la cinta y luego (si hay espacio para ella en el ordenador) borra cualquier matriz ya existente, denominada b y carga la nueva matriz procedente de la cinta, a la que llama b. No puede utilizar MERGE con matrices almacenadas. Puede almacenar matrices de caracteres (cadenas) de la misma forma. Cuando el ordenador está buscando la cinta y encuentra una de estas, escribe "Matriz de caracteres": seguida por el nombre. Cuando carga una matriz de caracteres, no borrará solamente cualquier matriz de caracteres anterior con el mismo nombre, sino también cualquier cadena con el mismo nombre. El almacenamiento de bytes se utiliza para fragmentos de información sin ninguna referencia a lo que se aplica la información que podría ser: una imagen de televisión o gráfico definido por el usuario o algo que haya elaborado por si mismo. Se muestra con el empleo de la palabra CODE, como en: SAVE "imagen" CODE 16384,6912
La unidad de almacenamiento en memoria es el byte (un número entre 0 y 255) y cada byte tiene una dirección (que es un número entre 0 y 65535). El primer número después de CODE es la dirección del primer byte que ha de almacenarse en cinta y el segundo es el número de bytes a almacenar. En nuestro caso, 16384 es la dirección del primer byte en el fichero de presentación visual (que contiene la imagen de televisión) y 6912 es el número de bytes en la misma, por lo que estamos conservando una copia de la pantalla de televisión (haga la prueba). El nombre "imagen" opera lo mismo que los nombres para programas. Para volverle a cargar, utilice: LOAD "imagen" CODE
Puede poner números después de CODE en la forma: LOAD nombre CODE comienzo, longitud
En este caso, la longitud es simplemente una medida de seguridad; cuando el ordenador ha encontrado los bytes en cinta con el nombre correcto, no obstante, rehusará cargarles si hay más que la longitud de los mismos, puesto que, evidentemente, hay más datos de los que esperaba y podría el ordenador sobreescribir algo que no tuviera usted intención de modificar. Dará el informe de error R Tape loading error. Puede omitir longitud y, entonces, el ordenador efectuará la lectura de cuantos bytes haya. Comienzo indica la dirección en donde ha de volverse a cargar el primer byte y que puede ser diferente de la dirección en la que fue conservado, aunque si son las mismas puede omitir comienzo en la sentencia LOAD. CODE 16384, 6912 es tan útil para conservar y cargar la imagen que puede sustituirle por SCREEN$, por ejemplo:
SAVE "imagen" SCREEN$
LOAD "imagen" SCREEN$ Este es un caso raro para el que no operará VERIFY. Tenga en cuenta que VERIFY escribe los nombres de lo que encuentra en la cinta, de modo que en el momento en que llega a la verificación se ha cambiado el fichero de la presentación visual y falla la verificación. En todos los demás casos, debe utilizar VERIFY siempre que emplee SAVE. A continuación se da un resumen de las cuatro sentencias utilizadas en este capítulo. Nombre significa cualquier expresión de cadena y se refiere al nombre con el que se almacena la información en cassette. Debe estar constituido por los caracteres de impresión en ASCII, de los que sólo se utilizan los 10 primeros. Hay cuatro clases de información que se pueden almacenar en cinta: programa y variables (juntas), matrices de números, matrices de caracteres y bytes puros. Cuando VERIFY, LOAD y MERGE están buscando información en la cinta con un nombre dado y de una clase dada, imprimen en la pantalla la clase y el nombre de toda la información que encuentran. La clase se indica por "Programa:", "Matriz de números:", "Matriz de caracteres:" o "Bytes:". Si nombre era la cadena vacía, toman el primer lote de información de la clase adecuada, haciendo caso omiso de su nombre. SAVE Conserva información en cinta bajo el nombre dado. El error F se produce cuando el nombre está vacío o tiene 11 o más caracteres. SAVE siempre pone un mensaje "Start tape, then press any key" (ponga en marcha la cinta, luego pulse cualquier tecla) y espera a que se pulse una tecla antes de conservar algo.
VERIFY Comprueba la información en cinta con respecto a la información existente en memoria. La falta de verificación da el informe de error R Tape loading error (error de carga de cinta).
LOAD carga nueva información a partir de la cinta, borrando de la memoria la anterior información.
MERGE Carga la nueva información desde cassette sin borrar la anterior información de la memoria.
Ejercicios
|
Manual de Basic Spectrum 48k. |