Unir bloques de datos de un TAP

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
radiosity
rst 0
Mensajes: 26
Registrado: Dom Dic 15, 2013 9:10 am

Unir bloques de datos de un TAP

Mensaje por radiosity » Lun Mar 12, 2018 1:04 pm

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.

Jose Manuel
Sabreman
Mensajes: 459
Registrado: Mar Abr 17, 2007 1:25 pm
Ubicación: Madrid
Contactar:

Re: Unir bloques de datos de un TAP

Mensaje por Jose Manuel » Lun Mar 12, 2018 10:31 pm

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:
El Trastero del Spectrum
http://trastero.speccy.org/

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados