Karoshi MSX Community
05 de Julio de 2021, 01:00:34 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 [2] 3
  Imprimir  
Autor Tema: SR5 -> SR2  (Leído 16845 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #15 : 21 de Enero de 2006, 12:04:34 pm »

Cierto. El programa de José Luis es magnífico aunque no pienses incluso incluir complejas rutinas en c.m. Con tan sólo volcar el juego de caracteres (que de todas formas, si quieres cambiar el que viene por defecto, tendrías que meter montones de datas) ya vale la pena a cualquiera que programe en basic, pues con un simple cargador (una llamada a la BIOS) y los datos, te ahorras más espacio que tener que meterlo en datas y además es casi instantáneo (nada de "POR FAVOR, ESPERE...").
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #16 : 21 de Enero de 2006, 12:09:35 pm »

Para ver hasta donde se extiende tu BASIC, puedes cargar el archivo .BAS (tokenizado) en el ROMCreator y te indicará el rango de memoria que ocupa, el binario podrá ocupar la zona comprendida entre la dirección de fin del BASIC y la direccion $BFFF, ni un byte más, ni un byte menos. Sad

Ya, eso ya lo he visto. Me refería a, sin saber previamente cuánto me va a ocupar el programa basic, donde puedo ubicar el BIN para que no entren en conflicto, ocupe lo que ocupe el programa basic.

Aunque eso no es del todo cierto, claro. Si en el binario tienes datos comprimidos, los puedes descomprimir libremente en la página 3 ($C000) que siempre es RAM; así podrás aprovechar aún más el poco espacio libre que te deje el BASIC Wink

Y no se puede ubicar el bin directamente en $C000, entonces??

Citar
Cierto. El programa de José Luis es magnífico aunque no pienses incluso incluir complejas rutinas en c.m. Con tan sólo volcar el juego de caracteres (que de todas formas, si quieres cambiar el que viene por defecto, tendrías que meter montones de datas) ya vale la pena a cualquiera que programe en basic, pues con un simple cargador (una llamada a la BIOS) y los datos, te ahorras más espacio que tener que meterlo en datas y además es casi instantáneo (nada de "POR FAVOR, ESPERE...").

Para eso es precisamente para lo que lo quiero usar (bueno, y según como vaya la cosa con el tema del sonido, puede que también para posibles músicas).
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #17 : 21 de Enero de 2006, 12:17:59 pm »

Citar
donde puedo ubicar el BIN para que no entren en conflicto, ocupe lo que ocupe el programa basic.

Siempre habrá peligro de colisión ya que ambos tendrán que entrar en la página 2, el truco del almendruco es que ya que el BASIC va pegado al extremo superior, &H8000; puedes alejar lo máximo posible el binario pegándolo a &HBFFF. El problema es que tendrás que vigilar que a medida que tu BASIC crezca no acabe pisando el binario, en cuanto eso pase, se acabó, o reduces tamaño o comprimes datos Tongue.

Citar
Y no se puede ubicar el bin directamente en $C000, entonces??

Directamente no (que yo sepa), una ROM BASIC oficial únicamente ocupa la página 2 ($8000-$BFFF), todo lo que quieras meter tiene que ir apretado ahí. Eres libre después de mover cosas a $C000; pero ya una vez que el programa ha arrancado, claro. Hay que aprovechar hasta el último byte de la página... cmptr:)
En línea

Doom dee doom dee doom
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #18 : 21 de Enero de 2006, 12:25:47 pm »

Citar

Ya, eso ya lo he visto. Me refería a, sin saber previamente cuánto me va a ocupar el programa basic, donde puedo ubicar el BIN para que no entren en conflicto, ocupe lo que ocupe el programa basic.

Tienes que tener siempre en cuenta lo que ocupa el basic, ya que la rom va a ocupar 16kbs (la página 2 completa), por tanto esos 16kbs serán basic+c.m. en cualquier caso. Si quieres sentirte seguro al meter el basic, haz un clear y reserva memoria y ya está. ¿Quieres dejar 8kbs para el basic y así asegurarte 8kbs para el c.m.? Pues haces un clear 200,32768+8192 y en cuantito te pongas a meter el programa basic y te pases de la raya, te saldrá un "out of memory". Esto es a lo bestia, pero es para que te vayas guiando, ya que NO puedes ocupar los 16kbs con basic solamente.


Citar
Y no se puede ubicar el bin directamente en $C000, entonces??

No por lo comentado arriba. La rom te va a ocupar desde la 32768 hasta la 49152, o sea que nada de usar de $c000 en adelante. Por eso lo del clear, tienes que reservarte y asegurarte espacio para poder meter las datas.


Citar

Para eso es precisamente para lo que lo quiero usar (bueno, y según como vaya la cosa con el tema del sonido, puede que también para posibles músicas).

Pues con un poco más de 2kbs tienes para meter todo el juego de caracteres Smiley Con el asmsx y un editor de textos te creas un archivo tipo:

Código:

.bios
.page 1
.rom
.start INICIO
.size 16

;-------------------------------------------
; Inicialización
;-------------------------------------------

INICIO:
call DISSCR ;Oculta la pantalla
call ERAFNK ;Oculta teclas de función

        ld      hl,0f3e9h
        ld      [hl],15
        inc     hl
        ld      [hl],4
        inc     hl
        ld      [hl],1 ;color 15,4,1
call CHGCLR

        call    INIT32 ;Screen 1

        ld      bc,0e201h
        call    WRTVDP ;Screen ,2

ld hl,CARACTERES
ld de,0
ld bc,2048
call LDIRVM

CARACTERES:

db .... todo el rollo...
[quote][/quote]

Esto te inicializaría ya de paso screen 1, con los colores que quieras, hace un keyoff, sprites ampliados... eso que te ahorras en el basic y además con LDIRVM te vuelcas el set de caracteres en un plis plas. Si quieres para sc2 dímelo que hay que cambiar sólo unas cosillas y listo :)
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #19 : 21 de Enero de 2006, 12:29:37 pm »

Citar
Pues haces un clear 200,32768+8192 y en cuantito te pongas a meter el programa basic y te pases de la raya, te saldrá un "out of memory"

Pero cuidadín, que si es un programa BASIC que se está ejecutando en ROM, no puedes hacer una reserva de memoria sobre la propia página dos, tendría que hacerse el clear a partir de la dirección $C000, que ya es RAM de la buena  Wink
La verdad es que no lo he probado; pero supongo que pasarán cosas raras... Roll Eyes
En línea

Doom dee doom dee doom
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #20 : 21 de Enero de 2006, 12:31:31 pm »

Uarrrgg, se ha comido un trozo del texto  Angry

Bueno, Imanok, como te decía, con esto te haces de paso un screen1, con sprites ampliados, key off, colores, y además te vuelca el set de caracteres en un momento. Si quieres te lo modifico para screen2.

Y si necesitas aún así más memoria, siempre queda el método usado en la rom del Manicomio: rom en página 1,compresión, rutinas en asm, descompresión, cambio de página para conectar el intérprete y a rular. Esto dicho así no lo entiende ni el Nishi, pero te paso una plantilla con la estructura de la rom donde sólo tendrías que rellenar lo que falta y listo.  Grin
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #21 : 21 de Enero de 2006, 12:34:03 pm »

Citar
Pues haces un clear 200,32768+8192 y en cuantito te pongas a meter el programa basic y te pases de la raya, te saldrá un "out of memory"

Pero cuidadín, que si es un programa BASIC que se está ejecutando en ROM, no puedes hacer una reserva de memoria sobre la propia página dos, tendría que hacerse el clear a partir de la dirección $C000, que ya es RAM de la buena  Wink
La verdad es que no lo he probado; pero supongo que pasarán cosas raras... Roll Eyes

¡Cierto!  Cheesy Me refería a que mientras introduzca Imanok el listado basic en el intérprete, se haga un clear para que le avise en cuanto pase de cierta cantidad de memoria, más que nada para controlar cuánto le falta, etc. Es verdad que una vez hecho rom, el clear lo jode bastante todo, algo así ya me pasó en el Manicomio.
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #22 : 21 de Enero de 2006, 12:45:33 pm »

Ok, comprendido  Smiley

Que si no se usa compresión para volcar luego a la página 3, hay que hacerlo a ojo de buen cubero, vamos... y para evitar sustos en la medida de lo posible, poner el BIN lo mas arriba posible en la página 2.

Ahora me toca experimentar y experimentar!... ya os comentaré si me atranco...

Citar
Bueno, Imanok, como te decía, con esto te haces de paso un screen1, con sprites ampliados, key off, colores, y además te vuelca el set de caracteres en un momento. Si quieres te lo modifico para screen2.

Y si necesitas aún así más memoria, siempre queda el método usado en la rom del Manicomio: rom en página 1,compresión, rutinas en asm, descompresión, cambio de página para conectar el intérprete y a rular. Esto dicho así no lo entiende ni el Nishi, pero te paso una plantilla con la estructura de la rom donde sólo tendrías que rellenar lo que falta y listo.

No será necesario (al menos por ahora, que aún no he empezado a teclear)... muchas gracias majos!!  Wink
« Última modificación: 21 de Enero de 2006, 12:49:54 pm por Imanok » En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #23 : 21 de Enero de 2006, 06:03:17 pm »

Citar
pero te paso una plantilla con la estructura de la rom donde sólo tendrías que rellenar lo que falta y listo.

Pues que rule esa plantilla Grin. A lo mejor puede convertirse en un modelo para que lo incluya en el ROMCreator.
En línea

Doom dee doom dee doom
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #24 : 23 de Enero de 2006, 09:19:46 am »

Una cosita más sobre el ROMcreator... cuando añade el bin a la rom, le quita la cabecera del BLOAD??
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #25 : 23 de Enero de 2006, 09:52:29 am »

Sip. El resultado final es un archivo ROM con la típica cabecera "AB" que no es cargable mediante BLOAD, LOAD ó demás comandos del BASIC.
En línea

Doom dee doom dee doom
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #26 : 23 de Enero de 2006, 10:06:44 am »

Sip. El resultado final es un archivo ROM con la típica cabecera "AB" que no es cargable mediante BLOAD, LOAD ó demás comandos del BASIC.

No sé si hablamos de lo mismo, pero por si acaso...

Me refiero a que si le quitas la cabecera BLOAD al bin que añades dentro de la rom.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #27 : 23 de Enero de 2006, 11:11:44 am »

Citar
Me refiero a que si le quitas la cabecera BLOAD al bin que añades dentro de la rom.

Claro, con lo de que la salida es un binario de tipo ROM me refiero a que cualquier otra cabecera ya no tiene uso, ni la cabecera del BASIC que has incluido (que usualmente cargarías con (C)LOAD) o la del binario (cargable con BLOAD).
Realmente esta ROM no es más que un volcado más o menos directo de la memoria entre $8000 y $BFFF; por eso, al incluir el binario dentro de este rango pierde su identidad y se hace uno con el todo...(joer, parezco un jedi... nnchks:))
En línea

Doom dee doom dee doom
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #28 : 23 de Enero de 2006, 12:03:51 pm »

Okey Mackey!  Wink
En línea
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #29 : 23 de Enero de 2006, 12:45:25 pm »

Bueno, Ockey Mackey... o no...

Releyendo otra vez, aún me quedan dudas... porque una cosa es que no se use y otra cosa es que no la incluyas... a ver si ésta es ya la refinitiva, que me estoy haciendo cansino....  Undecided

Cuando el ROMcreator "pega" el binario junto con el BASIC ... ¿pega TODO el binario (incluídos los 7 bytes de cabecera) o pega solo la parte "usable" y en el sitio donde indica esa cabecera?

Es que claro, si mi programa CM se ejecuta en 0B000h y está en un BIN cargable con BLOAD, y el ROMcreator lo pega todo, tendría que pegarlo en 0B000h -7, para que al hacer el DEFUSR se ejecute donde toque ...

Cansino, que soy un cansino!!  Tongue
En línea
Páginas: 1 [2] 3
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!