Página 1 de 1

Unir bloques de datos de un TAP

Publicado: Lun Mar 12, 2018 1:04 pm
por radiosity
Hola,

Una pregunta sobre el almacenamiento de datos y su carga en la memoria del Spectrum.

Resulta que tengo un TAP que he montado con una aventura conversacional que estoy terminando con DAAD. El caso es que dentro del TAP esta el loader BASIC la pantalla de presentacion y luego se cargan 3 modulos diferentes, el interprete, la base de datos de la aventura y la base de datos gráfica. Lo que yo querria hacer es unir esos 3 bloques en uno solo y modificar el loader BASIC para que cargue correctamente. Y si fuera posible no solo saber como hacerlo sino el porque de hacerlo de esa forma.

Gracias.

Re: Unir bloques de datos de un TAP

Publicado: Lun Mar 12, 2018 10:31 pm
por Jose Manuel
Buenas,

Entiendo que los tres bloques son tipo CODE. Pues en este caso, pones clear dirección un byte menos que el bloque mas bajo para que no se corrompa, despues carga los tres bloques (primero el mas bajo y despues los sucesivos). Cuando ya has cargado los tres haces un SAVE"nombre" CODE dirección del primer bloque, diferencia fin del último bloque - inicio del primero.

Te pongo un ejemplo. Un bloque 30000,5256; otro 40000,4000 y el último 45000,256:

10 CLEAR 29999
20 LOAD "BLOQUE 1" CODE 30000 (ocupa hasta el 35255)
30 LOAD "BLOQUE 2" CODE 40000 (ocupa hasta el 43999)
40 LOAD "BLOQUE 3" CODE 45000 (ocupa hasta el 45255)
50 SAVE "BLOQUES" CODE 30000,15256

Lo que haces es salvar un solo bloque con lo que ocupan los tres. 15256 bytes es el número de bytes que ocupan desde 30000 (inicio) hasta 45255 (final).

Si quieres que ocupen menos y los bloques son redireccionables, puedes juntarlos mas para que la suma de los 3 ocupen menos.
En el ejemplo podrían ocupar sólo 9512 bytes (por ejemplo desde la posición 30000 hasta la 39511)

Saludos, J.M: