correcciones , he olvidado colocar algunos $$$$$$$
DI
exx ; Guarda config actual en [BC']
para luego restaurarla.
in a,($a8)
ld c,a
ld a,($FFFF)
ld b,a
exx
ld e, 0
ld hl,$4000
ld c,0
slot: in a,($a8)
and $33
or c
out ($a8),a
ld b,0
sslot: ld a,($FFFF)
cpl
and $F3
or b
ld ($FFFF),a
ld a,(hl)
cpl
ld (hl),a
cp (hl)
cpl
ld (hl),a
jr z, salida
ld a,b
add a, $04
ld b,a
and $0C
jr nz, sslot
ld a,c
add a, $44
ld c,a
and $0C
jr nz, slot
ld e,$FF ; Indica que no hay RAM para la página 1.
salida: exx ; [C]= slot [B]= sslot
ld a,c
out ($a8),a
ld a,b
ld ($FFFF),a
exx
EI
ld a,e
ld (var1),a ; =0 se encontró RAM.
ld a,c
ld (var2),a ; número de slot en bits 2 y 3.
(%0000xx00)
ld a,b
ld (var3),a ; número de sub-slot en bits 2 y 3
(%0000xx00)
ret
Flyguille
----- Original Message -----
From: "Flyguille" <Flyguille(_en_)arnet(_punto_)com(_punto_)ar>
To: <hispamsx(_en_)yahoogroups(_punto_)com>
Sent: Thursday, November 04, 2004 1:24 PM
Subject: Re: [hispamsx] Gestion de memoria
Existe un problema fundamental, para cambiar el SUB-SLOT, primero debes
cambiar el SLOT de la página 3, y después cambiar el SubSlot.
Suponiendo que el código que realiza el procedimiento está en la página 2
($8000-$BFFF) y deseamos buscar la RAM para la página 1 ($4000-$7FFF).
DI
exx ; Guarda config actual en [BC']
para luego restaurarla.
in a,(a8)
ld c,a
ld a,($FFFF)
ld b,a
exx
ld e, 0
ld hl,$4000
ld c,0
slot: in a,(a8)
and $33
or c
out (a8),a
ld b,0
sslot: ld a,($FFFF)
cpl
and $F3
or b
ld ($FFFF),a
ld a,(hl)
cpl
ld (hl),a
cp (hl)
cpl
ld (hl),a
jr z, salida
ld a,b
add a, $04
ld b,a
and $0C
jr nz, sslot
ld a,c
add a, $44
ld c,a
and $0C
jr nz, slot
ld e,$FF ; Indica que no hay RAM para la página 1.
salida: exx ; [C]= slot [B]= sslot
ld a,c
out ($a8),a
ld a,b
ld ($FFFF),a
exx
EI
ld a,e
ld (var1),a ; =0 se encontró RAM.
ld a,c
ld (var2),a ; número de slot en bits 2 y 3.
(%0000xx00)
ld a,b
ld (var3),a ; número de sub-slot en bits 2 y 3
(%0000xx00)
ret
Flyguille
----- Original Message -----
From: "Eduardo Robsy Petrus" <robsypetrus(_en_)hotmail(_punto_)com>
To: <hispamsx(_en_)yahoogroups(_punto_)com>
Sent: Thursday, November 04, 2004 12:14 PM
Subject: [hispamsx] Gestion de memoria
El WAVeR v.3 sigue dandome problemas con la gestion de memoria. Lo que
hago
para localizar 64 KB de RAM es lo siguiente:
-Detecto si es un MSX1 o un MSX2 o superior. A continuacion:
-MSX1: busco RAM en las paginas 0 y 1 recorriendo recursivamente todos los
slots (0-3). Si no encuentro nada, error de memoria. Lo hago usando el
registro A8h del PPI a pelo. Para comprobar si hay RAM hago lo siguiente:
LD HL,4000h ; es un ejemplo
LD A,(HL)
NEG A
LD (HL),A
XOR (HL)
JR Z,RAM_ENCONTRADA
-MSX2: supongo que tendra siempre como minimo 64 KB en un mismo slot.
Copio
el slot al que apuntan las paginas 2 y 3 para las paginas 0 y 1,
manipulando
directamente el puerto A8h. A continuacion, hago lo mismo con la posicion
de
memoria FFFFh.
Que puedo estar haciendo mal?
Un saludo,
Eduardo Robsy
_________________________________________________________________
Dale rienda suelta a tu tiempo libre. Encuentra mil ideas para exprimir tu
ocio con MSN Entretenimiento. http://entretenimiento.msn.es/
*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos
hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
http://es.docs.yahoo.com/info/utos.html
*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos
hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
http://es.docs.yahoo.com/info/utos.html