MODE 2

Si tienes alguna duda y crees que alguien podría resolverla, ponla aquí. || If you have any doubt about programming, post it here.

Moderador: CEZ

Responder

que valor hay en el bus de expansion

Siempre es #FF
1
100%
Es un valor constante, pero no siempre el mismo
0
No hay votos
Varia de un valor a otro, pero fijo segun la maquina
0
No hay votos
 
Votos totales: 1

Avatar de Usuario
Z80user
16 bits
16 bits
Mensajes: 94
Registrado: 15 Ene 2006 21:49
Ubicación: Ciudad Real

MODE 2

Mensaje por Z80user »

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.
Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Mensaje por na_th_an »

Ben o Metalbrain u otros serán mejores para hablarte del tema, pero por lo que yo sé, es necesario hacer esa tabla.
Avatar de Usuario
Metalbrain
128 bits
128 bits
Mensajes: 1717
Registrado: 16 Oct 2005 15:56
Ubicación: Sevilla
Contactar:

Mensaje por Metalbrain »

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.
Avatar de Usuario
davidcm
32 bits
32 bits
Mensajes: 547
Registrado: 18 Sep 2007 22:25
Ubicación: Barcelona
Contactar:

Mensaje por davidcm »

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?
"The sore in my soul. The mark in my heart. Her acid reign."
Avatar de Usuario
Metalbrain
128 bits
128 bits
Mensajes: 1717
Registrado: 16 Oct 2005 15:56
Ubicación: Sevilla
Contactar:

Mensaje por Metalbrain »

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?
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.
Avatar de Usuario
WoodMaster
32 bits
32 bits
Mensajes: 697
Registrado: 13 Jul 2007 15:31
Ubicación: Fi algharb alandalus

Mensaje por WoodMaster »

Metalbrain escribió:
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?
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.
Eso solo es caracteristo del Spectrum o en el msx y cpc sucede el mismo? (perdonad por la ignorancia)
Avatar de Usuario
utopian
128 bits
128 bits
Mensajes: 1692
Registrado: 15 Sep 2005 07:24
Ubicación: Leganés, Madrid, Spain

Mensaje por utopian »

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 :P
Avatar de Usuario
WoodMaster
32 bits
32 bits
Mensajes: 697
Registrado: 13 Jul 2007 15:31
Ubicación: Fi algharb alandalus

Mensaje por WoodMaster »

utopian, eso es interesante, gracias por la info.
Avatar de Usuario
davidcm
32 bits
32 bits
Mensajes: 547
Registrado: 18 Sep 2007 22:25
Ubicación: Barcelona
Contactar:

Mensaje por davidcm »

En CPC, las ROMs no se mapean directamente en memoria, sino que su contenido se vuelca en RAM, de ahí que podamos utilizar la IM 1 O:-) Esto se debe a que el CPC podía mapear más de una ROM en posiciones medianamente arbitrarias :-)
"The sore in my soul. The mark in my heart. Her acid reign."
Avatar de Usuario
Benway
Site Admin
Site Admin
Mensajes: 9241
Registrado: 24 Dic 2005 10:18
Ubicación: Madrid
Contactar:

Mensaje por Benway »

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 :P (obviamente, esto último es coña :P)
Un saludo.
Imagen - Imagen - Imagen
DaDMaN
128 bits
128 bits
Mensajes: 1636
Registrado: 14 Mar 2006 00:29
Ubicación: Palma de Mallorca
Contactar:

Mensaje por DaDMaN »

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 :P (obviamente, esto último es coña :P)
:x :x :x :x :x :x :x :x

:D
GRAFISTA CEZ - TEAM

ImagenImagen

GRAFISTA CEZ - TEAM
Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Mensaje por na_th_an »

Por lo menos es mejor que la del MSX, que es como la de Spectrum pero lavada con un detergente que no es micolor :lol: ;) ;) ;)
Avatar de Usuario
Z80user
16 bits
16 bits
Mensajes: 94
Registrado: 15 Ene 2006 21:49
Ubicación: Ciudad Real

Mensaje por Z80user »

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.
Responder