Recuperar gráfico de pantalla tras la carga

Moderador: Fundadores

Avatar de Usuario
Bubu
Demonio segundo orden
Demonio segundo orden
Mensajes: 1125
Registrado: 02 May 2013, 20:35

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Bubu »

Eeeeeeeh, no tan rápido, truhán, JAajjajAjAjA, nos gustaría que pusieras unos pantallazos de los ídems que estás cargando con el pograma ;-)
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
Avatar de Usuario
Fermars
Demonio segundo orden
Demonio segundo orden
Mensajes: 1195
Registrado: 20 Feb 2014, 16:58
Ubicación: El Escorial
Been thanked: 3 times

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Fermars »

Bubu escribió:Eeeeeeeh, no tan rápido, truhán, JAajjajAjAjA, nos gustaría que pusieras unos pantallazos de los ídems que estás cargando con el pograma ;-)
JAJAJAJA, :)) :)) :| A ver, aunque quedaría chulo mostrar pantallazos de juegos a intervalos regulares con este programa a modo de "salvapantallas", la finalidad por la que empezó todo esto no era precisamente esa. Lo que me interesaba era tener varias pantallas cargadas en memoria para hacer pruebas de impresión con las ZX Printers (por este post) rápidamente sin tener que ir cargando de una en una, o perder la anterior por cargar una nueva o editar el código BASIC. Para este propósito lo único que tendría que hacer es al pulsar la tecla 1 por ejemplo, que se haga un COPY de la pantalla guardada en esa dirección y así con el resto. La idea era cargar las pantallas de varios juegos, el Jetpac, PSSST, Cookie y algunas otras clásicas y siempre probar con las mismas para comprobar y comparar la calidad de las impresoras reparadas con respecto a la impresora original. Pero esto con lo anterior ya lo tengo conseguido.

Ahora, ¡por preguntar! :D ;) vamos a ver si podemos terminar el Salvapantallas del Spectrum y cuando funcione hago un vídeo. Lo único que habría que hacer es que se muestren 5 pantallas o más (cuantas más mejor, habría que probar el programa de compresión de elfoscuro) cada 10 segundos y de forma aleatoria. Entiendo que habría que cambiar los INKEYS$ por PAUSE y algún RANDOMIZE por algún lado. Y por último, guardar todo esto en un programa que se cargue solo, es decir, que no haya que ir cargando las pantallas de los juegos cada vez que se quiera ejecutar. Quizá un volcado completo de la memoria estaría bien, pero no se si es posible. ¿Voy mal encaminado?
Fernando
Avatar de Usuario
Bubu
Demonio segundo orden
Demonio segundo orden
Mensajes: 1125
Registrado: 02 May 2013, 20:35

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Bubu »

Vas bien, vas bien :-)
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
Avatar de Usuario
Fermars
Demonio segundo orden
Demonio segundo orden
Mensajes: 1195
Registrado: 20 Feb 2014, 16:58
Ubicación: El Escorial
Been thanked: 3 times

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Fermars »

Finalmente, tras varias horas y muchas peleas (de verdad, que soy muy malo programando), he podido hacer las dos cosas que había comentado. El Salvapantallas del Spectrum para mostrar 5 pantallas una tras otra y la impresión de la pantalla que se muestre en ese momento,
Como lo prometido es deuda, he grabado un breve vídeo donde se puede ver el resultado:



Solo me queda un par de dudas que no se si me podéis resolver.

La primera es ¿existe alguna forma de grabar todo junto para evitar tener que cargar las pantallas? La idea es, una vez lo tenga todo en memoria, volvarlo a cinta o Microdrive para después poder cargarlo todo junto sin tener que cargar las pantallas de una en una.

La segunda tiene que ver con la memoria. He estado dándole vueltas a lo de meter 6 pantallas en la memoria del Spectrum y tengo un lío bastante grande acerca de las direcciones que puedo usar, se que está la compresión que sugirió elfoscuro pero es por trastear y aprender. Recuerdo hace tiempo (lo he buscado pero no lo encuentro) que Microhobby publicó un mapa de la memoria bastante simple, un gráfico de colores a dos páginas donde se mostraban todos los áreas y para qué se usaba cada uno, quizá eso me hubiera ayudado. 6 pantallas (aproximadamente) serían 41K ¿cual es la primera y última dirección que podemos usar para guardar pantallas?
Fernando
Avatar de Usuario
Bubu
Demonio segundo orden
Demonio segundo orden
Mensajes: 1125
Registrado: 02 May 2013, 20:35

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Bubu »

Fermars escribió:Finalmente, tras varias horas y muchas peleas (de verdad, que soy muy malo programando), he podido hacer las dos cosas que había comentado. El Salvapantallas del Spectrum para mostrar 5 pantallas una tras otra y la impresión de la pantalla que se muestre en ese momento,
Como lo prometido es deuda, he grabado un breve vídeo donde se puede ver el resultado:

¡¡Me ha encantaaaaooo!! ¡¡Qué grande, con microdrive e impresora!!


Fermars escribió: Solo me queda un par de dudas que no se si me podéis resolver.
Pues vamos que nos vamos, a ver...


Fermars escribió: La primera es ¿existe alguna forma de grabar todo junto para evitar tener que cargar las pantallas? La idea es, una vez lo tenga todo en memoria, volvarlo a cinta o Microdrive para después poder cargarlo todo junto sin tener que cargar las pantallas de una en una.
En principio no, no se puede, ya que cuando enciendes el ordeñador, primero tendrías que cargar el pograma en BASIC y aluego los datos. Lo más que puedes hacer es cargar las 5 ó 6 pantallas del tirón, de una sola vez, pero siempre una vez hayas cargado el pograma BASIC primero, por lo que tendrías 2 cargas como mínimo. Si esto te parece bien dímelo y te cuento cómo es.

Fermars escribió: La segunda tiene que ver con la memoria. He estado dándole vueltas a lo de meter 6 pantallas en la memoria del Spectrum y tengo un lío bastante grande acerca de las direcciones que puedo usar, se que está la compresión que sugirió elfoscuro pero es por trastear y aprender. Recuerdo hace tiempo (lo he buscado pero no lo encuentro) que Microhobby publicó un mapa de la memoria bastante simple, un gráfico de colores a dos páginas donde se mostraban todos los áreas y para qué se usaba cada uno, quizá eso me hubiera ayudado. 6 pantallas (aproximadamente) serían 41K ¿cual es la primera y última dirección que podemos usar para guardar pantallas?
Podrás usar la memoria a partir de adonde llegue el BASIC, así que cuanto más largo sea el pograma BASIC menos memoria te quedará para pantallas, claro. Cada pantalla son 6.75 KB. Ten en cuén que la propia pantalla del monitor ya te ocupa 6.75 KB. Por tanto tenemos que 48 KB - 6.75 KB - 1 KB (del BASIC aprox.) = 40.25 KB, y entonces:

40.25 KB / 6.75 KB = 5.96 pantallas. No llega a 6.

Voy a mirar exácticamente cómo calcular lo que ocupa el BASIC para decírtelo más matemáticamente.
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9973
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por flopping »

Una cosa,¿no se pueden salvar las pantallas en memoria con la orden save"pantallas"code (direccion de inicio, longitud), y previamente claro, haber salvado el basic con save"programa" (start linea 1), por ejemlo? ¿o no seria posible por el poco espacio disponible, vamos creo que si tenemos todas las pantallas en memoria, hacer un copia de esos datos cargados no seria dificil, o si?.

De todas formas, hay otra solucion, le metemos un interface de copia y ejecutas el salvapantallas, entonces le das al interface y haces un sanp de toda la memoria, asi lo podrias tener todo sin complicaciones, jejejeeje
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
Bubu
Demonio segundo orden
Demonio segundo orden
Mensajes: 1125
Registrado: 02 May 2013, 20:35

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Bubu »

Fermars, en las páginas 313 y 314 del curso BASIC de MicroHobby tienes un detalle de cómo va la memoria BASIC:

http://www.robertp.net/MicroHobby/Micro ... ina313.htm

http://www.robertp.net/MicroHobby/Micro ... ina314.htm

De todas formas puedes ver hasta dónde puedes reservar haciendo varios CLEARs:

Código: Seleccionar todo

CLEAR 23000
Esto te devuelve

Código: Seleccionar todo

M RAMTOP no good, 0:1
Si haces CLEAR 24000, lo mismo. Pero si haces CLEAR 25000 y te lo permite, entóns a partir de 25000 puedes almacenar pantallas, hasta 65535.
Si algo funciona... no lo toques. ¡¡Pero ni de coña!!
Avatar de Usuario
elfoscuro
Demonio segundo orden
Demonio segundo orden
Mensajes: 1831
Registrado: 01 Abr 2013, 22:00
Been thanked: 26 times

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por elfoscuro »

Fermars:

- Puedes grabar todo desde el BASIC, con la línea:

9999 SAVE "TODO" CODE 16384,49152: RUN

y una vez lo tengas todo en memoria, escribes:

RUN 9999

Y te grabará todo de golpe, incluido el BASIC, variables, pantallas, etc. Eso si, lo tendrás que cargar en el Spectrum con LOAD""CODE y no con LOAD"".

De todos modos, no es una manera bonita de hacerlo, porque grabas también la pantalla, y son casi 7K de carga inútil.

El problema que tienes con las 5-6 pantallas es culpa del interface 1. En un spectrum sin nada enchufado, caben 6 pantallas, eso si, si el BASIC es un poco complicado (y no mucho, que no hay mucho margen), tendrás que usar el cambio de VAL: si tienes LET BASE=24000, lo cambias a LET BASE=VAL"24000". Así ahorras algo de memoria al no tener números reales, y los FOR F=0 TO 24000 los cambias por FOR F=NOT PI TO VAL "24000". No es mucho, pero byte a byte, puede hacer que quepa BASIC+6 pantallas.

Con el interface 1, 2 o ZX printer, ya entran en juego los canales, es decir, una especie de buffer de impresora, microdrive, etc, que usa RAM, por lo que hay menos espacio. Ahí, ya tendrás que empezar a plantearte el tema de la compresión de pantallas que te puse, que es fácil que te permita poner 8 ó 10 pantallas en memoria.

He buscado en google algo sobre las variables del sistema, y he encontrado este enlace:

http://www.ssir.com.ar/VariablesZXSpectrum.pdf

De todas formas, te aconsejo leerte el manual del Spectrum, pero el inicial, no el del Plus.

http://trastero.speccy.org/cosas/manuales/manuales.htm

El primero que hay. Léete el capítulo 24 para la memoria, y el 25 para las variables del sistema. Por cierto, comparado con el manual del +, este manual es como la Larousse y el Hola ;-) Menudo cambio de manual (a peor). Mucho más bonito, pero mucho más vacío.

Un saludo.
Fin de impresión
Avatar de Usuario
Fermars
Demonio segundo orden
Demonio segundo orden
Mensajes: 1195
Registrado: 20 Feb 2014, 16:58
Ubicación: El Escorial
Been thanked: 3 times

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por Fermars »

Hola chicos, disculpad la demora en contestar. Podemos dar por zanjado el asunto salvo que alguien sienta curiosidad. En mi caso, me conformo con lo conseguido, es decir, lo que os enseñé en los vídeos.
Poder grabar todo junto supongo que, gracias a lo que habéis comentado), sería tan sencillo como crear una cabecera con autoejecución y después los datos comenzando en una dirección y una longitud X. Quizá podía probarlo en cinta a ver si me funciona, pero a mi me interesa tenerlo en microdrive porque la carga es mucho más rápida, así que quizá la única manera es grabarlo todo junto y después cargarlo con un SAVE *"m";1;"nombre_programa" CODE dirección,longitud. Lo he probado y guarda bien, es decir, el microdrive casi se llena, pero a la hora de cargar se queda eternamente girando y nunca para. Quizá es que no consigue reubicar los datos en memoria. He probado con lo que ha dicho "elfoscuro" en las direcciones "16384,49152" y también he probado a bajar la longitud (ya que con 5 pantallas no hace falta guardar tanto) calculando exactamente lo que ocupan las 5 pantallas en base a la dirección inicial que uso para la primera pantalla. El caso es que pasa igual, guarda pero luego no carga...

Os dejo los listados que usé en ambos vídeos, por si alguien los necesita o quiere copiarlos. Como no sabía como pasarlos del Spectrum al PC (copia-pega) pues he tirado de recursos y los he sacado impresos en la ZX Printer y después le he sacao una foto. ¡Que no se diga que hoy no se usan estos periféricos!, son muy útiles ;). Ahí podéis ver las direcciones que he usado.

Listados:

Imagen
Fernando
Avatar de Usuario
elfoscuro
Demonio segundo orden
Demonio segundo orden
Mensajes: 1831
Registrado: 01 Abr 2013, 22:00
Been thanked: 26 times

Re: Recuperar gráfico de pantalla tras la carga

Mensaje por elfoscuro »

Sobre el que no se pare:

http://microhobby.speccy.cz/mhf/136/MH136_07.jpg

Parece ser que era algo habitual en la época ;-)

Ahora, no te pares aquí. Investiga más, y mejora el sistema. Mhoogle es una gran herramienta de aprendizaje.

Un saludo.
Fin de impresión
Responder

Volver a “Sinclair”