Cargar desde basic un binario que ocupa más de una página

Por Visualedu

Expert (75)

Imagen del Visualedu

21-09-2018, 23:43

Hola,
Si abro el opemMSX con la máquina Philips VG 8235 veo que sin cargar nada la página 2 (#8000-#BFFF) está vacía (todo #FF).
sin embargo en la página 3 (#C000-#FFFF) tiene trozos de código.

¿que debería hacer para cargar un binario que necesita 2 páginas de ram?.

Tengo un binario de 24 kb que, al cargarlo genera el error 'bad file mode' y creo que es porque sobreescribe esta zona de memoria.

Un saludo, visualedu

Login sesión o register para postear comentarios

Por paspallas

Resident (44)

Imagen del paspallas

22-09-2018, 13:19

Vaya por delante que yo de basic lo justo para cargar programas, trabajo en C y asm. Deberías intentar hacer el binario más pequeño, o bien ir cargando trozos "al vuelo" bajo demanda. La página tres tiene variables del sistema por eso ves "trozos de código".

Por Visualedu

Expert (75)

Imagen del Visualedu

23-09-2018, 10:27

Hola, el binario al que me refiero es un asm de 24kb (compilado con el sjasm).
Jó, lo de las variables de sistema no lo había tenido en cuenta (novato novato Smile ), yo solo contaba con la BIOS y el BASIC.
Supongo que te referirás a esto: http://map.grauw.nl/resources/msxsystemvars.php
Por lo que veo todas estas variables están muy abajo (#00xx) o muy arriba (#Fxxx).
Sin embargo algunos de estos 'trozos de código' están en zonas intermedias por ejemplo el inicio de la página 3 #C000.
Leyendo con el visor del openMSX veo lo siguiente:
https://drive.google.com/file/d/1_a5ZEQNi-rE2Eex7s8ZV5fmVFeZ...

¿son variables del MSXDOS?

En todo caso, al final lo que necesito es cargar y lanzar un asm que ocupa 24kb sin cargarme nada del sistema (en un msx que tenga, como mínimo, 32kb de ram).

Gracias, Visualedu

Por paspallas

Resident (44)

Imagen del paspallas

23-09-2018, 12:36

mmm. En ese caso no es una variable del sistema, sino que el propio msxdos está escribiendo el mensaje de error en esa zona de memoria. ¿Estás usando dos para algo o basic solo?. Siento no poder ser de más ayuda, pero como ya te he dicho yo programo accediendo directamente al hardware, sin basic, ni dos.

Por Manel46

Paladin (674)

Imagen del Manel46

23-09-2018, 20:17

La instrucción CLEAR, desde el basic, establece el tamaño del área de memoria a disposicion del usuario. Busca información sobre esto.
Ahora mismo no la tengo a mano, por aquí. El basic, poco lo uso.

Por Guillian

Prophet (3516)

Imagen del Guillian

23-09-2018, 20:01

Visualedu wrote:

¿son variables del MSXDOS?

Eso que ves en #C000-#C1FF es el sector 0 del disco que tenías en la unidad cuando arrancantes el ordenador.
En el proceso de inicio, se carga ese sector para ver si hay que arrancar algo desde el disco (MSX-DOS, un juego...)
Puedes usar esa zona sin problema para cargar tu programa.

Para evitar problemas a la hora de cargar un binario tan grande, lo que puedes hacer es dividirlo en dos, o más, partes. Por ejemplo, si estás usando gráficos, puedes cargar un fragmento que transfiera esos datos a la VRAM.
Otra opción es usar la página 1 (#4000-#7FFF) para almacenar parte de tu programa. Pero eso ya implica cambiar de slots.

Por Visualedu

Expert (75)

Imagen del Visualedu

24-09-2018, 18:58

Hola,
Gracias por la información!