Darth_Fistro
|
|
« 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
|
|
« 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. 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 Y no se puede ubicar el bin directamente en $C000, entonces?? 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
|
|
« Respuesta #17 : 21 de Enero de 2006, 12:17:59 pm » |
|
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 . 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
|
|
« Respuesta #18 : 21 de Enero de 2006, 12:25:47 pm » |
|
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. 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. 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 Con el asmsx y un editor de textos te creas un archivo tipo: .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
|
|
« Respuesta #19 : 21 de Enero de 2006, 12:29:37 pm » |
|
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 La verdad es que no lo he probado; pero supongo que pasarán cosas raras...
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Darth_Fistro
|
|
« Respuesta #20 : 21 de Enero de 2006, 12:31:31 pm » |
|
Uarrrgg, se ha comido un trozo del texto 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.
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
Darth_Fistro
|
|
« Respuesta #21 : 21 de Enero de 2006, 12:34:03 pm » |
|
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 La verdad es que no lo he probado; pero supongo que pasarán cosas raras... ¡Cierto! 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
|
|
« Respuesta #22 : 21 de Enero de 2006, 12:45:33 pm » |
|
Ok, comprendido 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... 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!!
|
|
« Última modificación: 21 de Enero de 2006, 12:49:54 pm por Imanok »
|
En línea
|
|
|
|
jltursan
|
|
« Respuesta #23 : 21 de Enero de 2006, 06:03:17 pm » |
|
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 . A lo mejor puede convertirse en un modelo para que lo incluya en el ROMCreator.
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Imanok
|
|
« 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
|
|
« 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
|
|
« 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
|
|
« Respuesta #27 : 23 de Enero de 2006, 11:11:44 am » |
|
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
|
|
« Respuesta #28 : 23 de Enero de 2006, 12:03:51 pm » |
|
Okey Mackey!
|
|
|
En línea
|
|
|
|
Imanok
|
|
« 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.... 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!!
|
|
|
En línea
|
|
|
|
|