MODE 2
Moderador: CEZ
- Z80user
- 16 bits

- Mensajes: 94
- Registrado: 15 Ene 2006 21:49
- Ubicación: Ciudad Real
MODE 2
Estoy pensando en usar el mode 2 para hacer multitarea : que suene la musica y reconozca el teclado, aparte de repartir tareas a cada cierto intervalo de tiempo.
Lei en un articulo de Microhhoby (no se cual esactamente, se fue la luz y no se la revista esacta) acerca de Sprites, y para asegurarse de que siempre se produciria un salto a una direccion en particular, rellenaba 257 direcciones de memoria para que fuese el que fuese el dato introducido en el bus del sistema, siempre saltase a la misma direccion.
Hay que ser tan precavidos para estas lindes, o no es tan fiero el leon?
El juego es para que corra en un 128K, +2 gris, y +2A/B, para el +3 de momento no, por no tener uno, ni este unidad de cinta.
Lei en un articulo de Microhhoby (no se cual esactamente, se fue la luz y no se la revista esacta) acerca de Sprites, y para asegurarse de que siempre se produciria un salto a una direccion en particular, rellenaba 257 direcciones de memoria para que fuese el que fuese el dato introducido en el bus del sistema, siempre saltase a la misma direccion.
Hay que ser tan precavidos para estas lindes, o no es tan fiero el leon?
El juego es para que corra en un 128K, +2 gris, y +2A/B, para el +3 de momento no, por no tener uno, ni este unidad de cinta.
- na_th_an
- 256 bits

- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
- Metalbrain
- 128 bits

- Mensajes: 1717
- Registrado: 16 Oct 2005 15:56
- Ubicación: Sevilla
- Contactar:
Que yo sepa lo normal es que esté fijo a #FF en todas las máquinas, pero si hay algo conectado en el bus de expansión (un interface para joystick, un DivIDE, lo que sea), el valor puede ser cualquiera, es aleatorio y no nos podemos fiar, así que lo más seguro siempre es desperdiciar la memoria para hacer la tabla.
- davidcm
- 32 bits

- Mensajes: 547
- Registrado: 18 Sep 2007 22:25
- Ubicación: Barcelona
- Contactar:
En mi más somera ignorancia y teniendo en cuenta que yo soy más CPCero que otra cosa... por qué en Spectrum siempre (o siempre que yo haya podido constatar) se utiliza IM 2?
Saludos.
Posible autorrespuesta: ¿por el mapeado de la ROM tal vez?
Saludos.
Posible autorrespuesta: ¿por el mapeado de la ROM tal vez?
"The sore in my soul. The mark in my heart. Her acid reign."
- Metalbrain
- 128 bits

- Mensajes: 1717
- Registrado: 16 Oct 2005 15:56
- Ubicación: Sevilla
- Contactar:
En efecto, los modos IM0 e IM1 apuntan a la ROM y no se puede modificar nada, así que para tener nuestra propia rutina hay que usar IM2 a la fuerza.davidcm escribió:En mi más somera ignorancia y teniendo en cuenta que yo soy más CPCero que otra cosa... por qué en Spectrum siempre (o siempre que yo haya podido constatar) se utiliza IM 2?
Posible autorrespuesta: ¿por el mapeado de la ROM tal vez?
- WoodMaster
- 32 bits

- Mensajes: 697
- Registrado: 13 Jul 2007 15:31
- Ubicación: Fi algharb alandalus
Eso solo es caracteristo del Spectrum o en el msx y cpc sucede el mismo? (perdonad por la ignorancia)Metalbrain escribió:En efecto, los modos IM0 e IM1 apuntan a la ROM y no se puede modificar nada, así que para tener nuestra propia rutina hay que usar IM2 a la fuerza.davidcm escribió:En mi más somera ignorancia y teniendo en cuenta que yo soy más CPCero que otra cosa... por qué en Spectrum siempre (o siempre que yo haya podido constatar) se utiliza IM 2?
Posible autorrespuesta: ¿por el mapeado de la ROM tal vez?
- utopian
- 128 bits

- Mensajes: 1692
- Registrado: 15 Sep 2005 07:24
- Ubicación: Leganés, Madrid, Spain
El modo IM1 siempre saltará a la posición $0038 cuando se ejecute una interrupción, es cuestión del diseño del Z80. Generalmente los sistemas basados en el z80 ponían la ROM en la zona baja de memoria, para que el manejador de interrupciones se ejecutase siempre desde ROM.
Al menos el MSX tiene una pequeña ventaja. La ROM es "inteligente" y pensó que podríamos querer ejecutar cosas con las interrupciones, así que hay un handler en memoria ($fd9f, si no me equivoco de memoria) que puedes hacer apuntar donde tú quieras, y se ejecuta la función que hayas definido... Nunca sabré por qué no se les ocurrió a los de Sinclair
Al menos el MSX tiene una pequeña ventaja. La ROM es "inteligente" y pensó que podríamos querer ejecutar cosas con las interrupciones, así que hay un handler en memoria ($fd9f, si no me equivoco de memoria) que puedes hacer apuntar donde tú quieras, y se ejecuta la función que hayas definido... Nunca sabré por qué no se les ocurrió a los de Sinclair
- WoodMaster
- 32 bits

- Mensajes: 697
- Registrado: 13 Jul 2007 15:31
- Ubicación: Fi algharb alandalus
- davidcm
- 32 bits

- Mensajes: 547
- Registrado: 18 Sep 2007 22:25
- Ubicación: Barcelona
- Contactar:
- Benway
- Site Admin

- Mensajes: 9241
- Registrado: 24 Dic 2005 10:18
- Ubicación: Madrid
- Contactar:
He llegado tarde al hilo, z80user, pero veo que Metalbrain ya te ha resuelto la duda 
Muy interesante eso que comentas del "volcado de rom en ram" del CPC... a ver si termino de aprender ensamblador, y a programar "aceptablemente" el Spectrum, y empiezo a cotillear el Amstrad... aunque no sé... no me gusta su paleta de colores
(obviamente, esto último es coña
)
Muy interesante eso que comentas del "volcado de rom en ram" del CPC... a ver si termino de aprender ensamblador, y a programar "aceptablemente" el Spectrum, y empiezo a cotillear el Amstrad... aunque no sé... no me gusta su paleta de colores
-
DaDMaN
- 128 bits

- Mensajes: 1636
- Registrado: 14 Mar 2006 00:29
- Ubicación: Palma de Mallorca
- Contactar:
Benway escribió:He llegado tarde al hilo, z80user, pero veo que Metalbrain ya te ha resuelto la duda
Muy interesante eso que comentas del "volcado de rom en ram" del CPC... a ver si termino de aprender ensamblador, y a programar "aceptablemente" el Spectrum, y empiezo a cotillear el Amstrad... aunque no sé... no me gusta su paleta de colores(obviamente, esto último es coña
)
GRAFISTA CEZ - TEAM


GRAFISTA CEZ - TEAM


GRAFISTA CEZ - TEAM
- na_th_an
- 256 bits

- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
- Z80user
- 16 bits

- Mensajes: 94
- Registrado: 15 Ene 2006 21:49
- Ubicación: Ciudad Real
Habia pensado usar 3 colores en cada bloque de 8X8 pixels, aunque no se como andara el invento, aun no lo he llegado a probar, lo que si se que es cierto que emuladores pocos.
Lo de la encuesta lo he puesto para tener una respuesta en las paginas, obiando poner que segun que perifericos se tengan conectados, osea, unicamente con la maquina en si, y nada conectado al bus de expansion.
Del DivIDE, a nivel de bus creo que no modifica nada, aunque no tengo uno para probarlo, y el bus de datos a las GAL no se como esta al 100%, pero a los 74XX, es a puertas de entrada y salidas triestado, asi que no creo que mande nada. No llege a empollarme el funcionamiento del DivIDE entero, sino mas bien por encima, como mapea la ROM y la RAM, y como siendo invisible se puede ejecutar la ROM del DivIDEy al comprobar, leer la posicion de memoria de la ROM del Spectrum.
El mode 2, lo queria usar para que suene musica y realizar "cambios de tareas" para alternar el uso de la CPU entre reproducir musica, manejar un puntero de raton (hay que ganar ciclos de reloj), mostrar mensajes de texto esplazandose (pendiente de aprobacion) y otras funciones periodicas.
Lo de la encuesta lo he puesto para tener una respuesta en las paginas, obiando poner que segun que perifericos se tengan conectados, osea, unicamente con la maquina en si, y nada conectado al bus de expansion.
Del DivIDE, a nivel de bus creo que no modifica nada, aunque no tengo uno para probarlo, y el bus de datos a las GAL no se como esta al 100%, pero a los 74XX, es a puertas de entrada y salidas triestado, asi que no creo que mande nada. No llege a empollarme el funcionamiento del DivIDE entero, sino mas bien por encima, como mapea la ROM y la RAM, y como siendo invisible se puede ejecutar la ROM del DivIDEy al comprobar, leer la posicion de memoria de la ROM del Spectrum.
El mode 2, lo queria usar para que suene musica y realizar "cambios de tareas" para alternar el uso de la CPU entre reproducir musica, manejar un puntero de raton (hay que ganar ciclos de reloj), mostrar mensajes de texto esplazandose (pendiente de aprobacion) y otras funciones periodicas.


