¿Cómo diferenciar el +2A/+3?

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

¿Cómo diferenciar el +2A/+3?

Mensaje por zup » Lun Feb 18, 2013 5:59 pm

Me ha entrado la duda leyendo algún hilo de programación y pensando en mis cargadores... ¿cómo se diferencia un +2A o +3 del resto de equipos? Por lo que sé:

- Muchos programas utilizan la paginación para diferenciar entre los 128k y 48k (meten un valor en una página concreta, cambian de página y comparan si lo que obtienen es lo que esperan).
- Un 48k puede separarse de un 16k leyendo el valor de P RAMT (bueno, también lo separas de los 48k averiados, pero esa es otra historia).
- Se puede diferenciar un +2A de un +3 con DOS_SET_DRIVE (entras con a=255; si al volver a='M' entonces es un +2A sin disquetera... en cualquier otro caso es un equipo con disquetera). Otro método es que en un +2A sin disquetera no hay buffer de disco (o al menos en mis pruebas se comporta así), con lo que DOS_GET_1346 devuelve DE=0.
- Se puede diferenciar un +2e/+3e de un +2A/+3 usando la rutina DOS_VERSION. Si devuelve el flag de signo activado es un +2e/+3e, si no es un +2A/+3.

La pregunta es... ¿cómo diferenciar si estoy en un +2A/+3 y no en un 128k/+2?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: ¿Cómo diferenciar el +2A/+3?

Mensaje por na_th_an » Lun Feb 18, 2013 6:01 pm

Supongo que se puede intentar paginar una de las ROMs que tienen estos modelos y los 128/+2 no tienen. O probar alguna paginación especial de RAM y hacer comprobaciones.

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: ¿Cómo diferenciar el +2A/+3?

Mensaje por mittemot » Lun Feb 18, 2013 7:45 pm

ejecutando el comando CAT !
si funciona no es un +2A/+3 ni un 16/48K

Avatar de Usuario
Metalbrain
Freddy Hardest
Mensajes: 592
Registrado: Lun May 07, 2007 8:17 am
Ubicación: Sevilla
Contactar:

Re: ¿Cómo diferenciar el +2A/+3?

Mensaje por Metalbrain » Lun Feb 18, 2013 11:38 pm

Yo usé tanto en King's Valley como en Majikazo la siguiente rutina, para distinguir entre 128/+2, +2A/+3 o Pentagon:

Código: Seleccionar todo

      halt
      xor   a
      ld   b,a
      ld   c,a
      ld   r,a
      ld   hl,16384
test128k:   ld   a,(hl)
      ld   a,r
      ld   a,(hl)
      inc   bc
      jp   p,test128k


El bit alto de R se pone a 1 en la rutina de interrupción, y entonces se comprueba el valor de C para diferenciar el modelo. La rutina se basa en que el +2A/+3 tiene menos situaciones donde se da la contienda, pero esta ocupa 7 estados de cada 8, en lugar de 6 como en los modelos anteriores. De esta forma, el ld a,r (que tarda 9 estados) hace que se retrasen 7 estados extra en la segunda lectura en el caso del +2A, mientras que en un 128 normal entra sin hacer ninguna espera. El Pentagon por su parte no tiene ninguna contención. Por lo tanto, el valor de BC más bajo corresponde al +2A, el intermedio al 128 y el más alto al Pentagon.
SevenuP se escribe con u minúscula y P mayúscula.

K.O.D.
Jack The Nipper
Mensajes: 115
Registrado: Mar Sep 30, 2008 8:45 am
Ubicación: Valencia

Re: ¿Cómo diferenciar el +2A/+3?

Mensaje por K.O.D. » Mar Abr 23, 2013 11:40 pm

Igual no viene a cuento, pero si no recuerdo mal, había una rutina del +3DOS, creo que era DOS_VERSION que te proporcionaba el número de la versión del SO en ROM. No sé si los +3 y +2A diferirían en el mismo o algo. Lo que yo sí no sé es cómo diferenciar (no hablo ya a nivel software, sino a simple vista) un +2A de un +2B.

Un saludo.

K.O.D.
Jack The Nipper
Mensajes: 115
Registrado: Mar Sep 30, 2008 8:45 am
Ubicación: Valencia

Re: ¿Cómo diferenciar el +2A/+3?

Mensaje por K.O.D. » Mar Abr 23, 2013 11:41 pm

K.O.D. escribió:Igual no viene a cuento, pero si no recuerdo mal, había una rutina del +3DOS, creo que era DOS_VERSION que te proporcionaba el número de la versión del SO en ROM. No sé si los +3 y +2A diferirían en el mismo o algo. Lo que yo sí no sé es cómo diferenciar (no hablo ya a nivel software, sino a simple vista) un +2A de un +2B.

Un saludo.


Ups, olvidad este mensaje, veo que ya estaba escrito lo dicho : P

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados