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?
¿Cómo diferenciar el +2A/+3?
Moderador: Sir Cilve Sinclair
-
- Freddy Hardest
- Mensajes: 666
- Registrado: Vie Ago 15, 2008 2:43 pm
¿Cómo diferenciar el +2A/+3?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
- 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?
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.
- mittemot
- Herbert
- Mensajes: 75
- Registrado: Mar Oct 16, 2012 8:42 am
- Ubicación: Castellón
- Contactar:
Re: ¿Cómo diferenciar el +2A/+3?
ejecutando el comando CAT !
si funciona no es un +2A/+3 ni un 16/48K
si funciona no es un +2A/+3 ni un 16/48K
- Metalbrain
- Freddy Hardest
- Mensajes: 592
- Registrado: Lun May 07, 2007 8:17 am
- Ubicación: Sevilla
- Contactar:
Re: ¿Cómo diferenciar el +2A/+3?
Yo usé tanto en King's Valley como en Majikazo la siguiente rutina, para distinguir entre 128/+2, +2A/+3 o Pentagon:
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.
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.
-
- Jack The Nipper
- Mensajes: 115
- Registrado: Mar Sep 30, 2008 8:45 am
- Ubicación: Valencia
Re: ¿Cómo diferenciar el +2A/+3?
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.
Un saludo.
-
- Jack The Nipper
- Mensajes: 115
- Registrado: Mar Sep 30, 2008 8:45 am
- Ubicación: Valencia
Re: ¿Cómo diferenciar el +2A/+3?
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
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados