Ayuda con los slots

Página 2/3
1 | | 3

Por manolito74

Paladin (1013)

Imagen del manolito74

17-03-2014, 15:27

Hola Mohai:

Pues se agradecería que la gente que controláis más del Tema completéis dicho artículo con lo que consideréis necesario. El resto de los mortales os lo agradeceríamos. ;-)

Saludetes. ;-)

Por DarkSchneider

Paladin (882)

Imagen del DarkSchneider

17-03-2014, 15:51

Añado una pregunta.

¿El MSX1 dispone de SUBSLOTS o sólo MAINSLOTS?. Y de disponer sólo de MAINSLOTS, si desarrollas algo para MSX1, ¿podrías gestionar los SLOTS cómo si sólo hubiera MAINSLOTS, ignorando los SUBSLOTS?, es decir, no tocando nunca #FFFF dejándolos (el #FFFF de cada MAINSLOT) como vienen por defecto al arrancar.

Por Guillian

Prophet (3235)

Imagen del Guillian

17-03-2014, 18:02

Un MSX1 puede tener subslots, ya que forman parte de las especificaciones del estándar.

Por Miguel_Noe

Champion (443)

Imagen del Miguel_Noe

17-03-2014, 23:01

Guillian, puede o tiene??
Yo esto de los spots y los subslots no lo entiendo ni pa di..os.
Yo veo una memoria de 64kb a 8 bit y veo 65.536 posiciones y en cada posición puedo meter un valor de 0-255.
El único spots que conozco es el de los goonies. Wink

Por DarkSchneider

Paladin (882)

Imagen del DarkSchneider

18-03-2014, 09:39

Bueno pues a ver si lo he entendido bien. Lo que me interesa ahora mismo es identificar donde está cada cosa del sistema, para restaurarlo en caso de cambio, e identificar donde estaría el cartucho con mi software insertado.
Recién arrancado el programa, podemos guardar ese estado de la siguiente forma:
- Leer puerto I/O #A8. Asignación de páginas para MAINSLOTS.
- Localización de la MAIN-ROM leyendo #FFF7-#FFF8. ¿Cuál indica MAINSLOT y SUBSLOT?.
- Establecer que MAINSLOTS están expandidos leyendo #FCC1-#FCC4. Los básicos devuelven 0 y los expandidos 128 (#80 en hex).
- Para los expandidos, leer su estado inicial leyendo #FCC5-#FCC8. Contienen el registro #FFFF de cada página.

Ahora estaría la cuestión de localizar mi cartucho. Si se trata de un MAINSLOT sería fácil, al iniciarse y ejecutarse el INIT (o TEXT) supuestamente se ha asignado el SLOT, por lo tanto al leer el puerto #A8 deberíamos tener 1 o 2 para la página 1 (#4000). Sin embargo ahora hay un par de problemas:
- Si hay más de un cartucho insertado, ¿cómo identifico al mío?.
- Si está insertado en un expansor de slots, ahora estaría en un SUBLOT, supuestamente debería buscar en que subslot de los slots 1 o 2 está asignada la página 1, ¿es así?.
- ¿Cómo identifico en que slot está pinchada la RAM del sistema?. Es decir, si es siempre la página 3 al arrancar con lo cual bastaría con buscar su asignación de slot-subslot.
- En el caso de ser un MSX2, también necesitamos la localización de la SUB-ROM, pero no he visto que se guarde en ninguna parte.

Por Guillian

Prophet (3235)

Imagen del Guillian

18-03-2014, 09:39

Puede tenerlos, por lo tanto algunos MSX los tienen y otros no.
Si tú a un MSX le conectas un expansor de slots, en ese slot tendrá subslots.

Cada uno de los 4 bloques de 16K que ves de esos 64K pertenece a un slot concreto. Si cambias el slot seleccionado, cambias lo que ves.

[ANALOGÍA]
Imagínate que la memoria que ves es como un monitor de esos de vigilancia que muestra 4 cámaras a la vez. Tú solo puedes ver 1 monitor (64K memoria) a la vez, pero si cambias alguna de las cámaras seleccionadas (slot) verás una zona distinta.

Tienes 4 cámaras principales (slot primarios).

La cámara 0 apunta a la cocina (BIOS)
La cámara 1 a la calle parte delantera (slot 1)
La cámara 2 a la calle parte trasera (slot 2)
La cámara 3 a la biblioteca (memoria)

No os toméis el ejemplo al pie de la letra Tongue
[/ANALOGÍA]

Por Miguel_Noe

Champion (443)

Imagen del Miguel_Noe

18-03-2014, 15:12

64 Kb lo partimos en 4 trozos/bloque.
Y los subslots? En el ejemplo de las cámaras,es dividir cada imagen ( cocina,p,delatara...biblioteca), en otros trozos???
Las paginas coincide con los slot?

Por Guillian

Prophet (3235)

Imagen del Guillian

18-03-2014, 16:33

Miguel_Noe wrote:

Y los subslots? En el ejemplo de las cámaras,es dividir cada imagen ( cocina,p,delatara...biblioteca), en otros trozos???

Mas que dividir es como si cada cámara tuviese cuatro objetivos que apuntasen a zonas distintas y tu pudieras elegir cual de ellos quieres ver.

Miguel_Noe wrote:

Las paginas coincide con los slot?

No sé si entiendo bien la pregunta. Si te refieres a qué zona del slot ves cuando lo seleccionas, entonces te diré que ves la de la pagina donde pones el slot.

Por DarkSchneider

Paladin (882)

Imagen del DarkSchneider

18-03-2014, 16:36

Creo que se suelen confundir slots con páginas. A ver viéndolo desde otra perspectiva.

El Z80 direcciona 64KB que el MSX divide en 4 páginas de 16KB. Cada una de estas páginas se identifica por su dirección de inicio, que son #0000, #4000, #8000, #C000.

Cada página anterior (segmento de 16 KB) puede asignarse a cualquier slot/subslot de los 16 posibles en la arquitectura MSX. Si un slot no está expandido, pues es único (slot 0, 1, 2 y 3). Si está expandido, se subdivide a su vez en otros 4 (si el slot 0 estuviera expandido sería 0-0, 0-1, 0-2 y 0-3).

Pues bien, a cada uno de esos 0, 1, 2 y 3, o x-0, x-1, x-2, y x-3 si está expandido, se le puede asignar una página de las 4 que vimos al principio.

Pues ya la cuestión es juguetear con dichas asignaciones para acceder al dispositivo (que estará "pinchado" en algún slot/sublot). Los quebraderos de cabeza suelen venir por identificar que es lo que hay pinchado en cada subslot. Luego la asignación es sencilla.
Por ejemplo, podrías asignar la página #8000 al slot 1 y así si tuvieras un cartucho insertado en el slot 1 podrías leer de la ROM. Si tuvieras una ampliación de RAM de 32KB en el slot 2 de cartucho, pues podrías asignar la página #C000 y/o #8000 a slot 2 y accederías a dicha RAM accediendo al rango #8000-#FFFF.

Los problemas más bien como digo suelen venir de la identificación y configuración, que son las cosas que pregunto yo arriba.

Por Guillian

Prophet (3235)

Imagen del Guillian

18-03-2014, 19:30

DarkSchneider wrote:

- Localización de la MAIN-ROM leyendo #FFF7-#FFF8. ¿Cuál indica MAINSLOT y SUBSLOT?.

El slot de la BIOS lo indica #FCC1, que siempre es el 0-0 (no conozco ningún caso en que sea distinto)

DarkSchneider wrote:

- Si hay más de un cartucho insertado, ¿cómo identifico al mío?.

Mirando el slot/subslot que hay asignado en la página donde se ejecuta tu cartucho.
Si se ejecuta en la página 1 (#4000-#7FFF) tienes que mirar los bits 2-3 del puerto #A8 (llamando a RSLREG #138 de la BIOS)
Una vez que sabes el slot primario miras si está expandido (#FCC1 + tu slot) y en caso de estarlo, miras el subslot con los bits 2-3 de (#FCC5 + tu slot)
Juntando ambos valores obtienes el slot/subslot de tu cartucho %1000SSPP (SS = subslot, PP = slot primario)

DarkSchneider wrote:

- ¿Cómo identifico en que slot está pinchada la RAM del sistema?. Es decir, si es siempre la página 3 al arrancar con lo cual bastaría con buscar su asignación de slot-subslot.

Por defecto la RAM está en la página 3 cuando la BIOS ejecuta un cartucho. Pero tendrás que comprobar tú su tamaño (8-16K) y buscarla por el resto de slots y subslots si necesitas RAM en otras páginas.
Lo normal es que esté en el mismo slot que la que hay seleccionada en la página 3, pero no tiene por qué ser así.

DarkSchneider wrote:

- En el caso de ser un MSX2, también necesitamos la localización de la SUB-ROM, pero no he visto que se guarde en ninguna parte.

¿Para qué necesitas localizar la subROM? Puedes llamarla usando la BIOS.

Página 2/3
1 | | 3