--- En hispamsx(_en_)yahoogroups(_punto_)com, "the_goulin" <msx@c...> escribió:
void peek(unsigned int direccion);
Esto no tiene mucho sentido. Si la función es de tipo void, ¿dónde
devuelves el valor leído? :-)
bueno, la idea es que el valor leido siempre quede en la variable
global VALOR :) pero tambien tiene sentido que lo devuelva.
Propuesta:
#define PEEK(direccion) (unsigned char)*(unsigned char*)(direccion)
O bien:
unsigned char peek(unsigned int direccion)
{
return *(unsigned char*)direccion;
}
O mejor:
unsigned char peek(unsigned char* direccion)
{
return *direccion;
}
Espero que te sirva (y espero no haber metido la gamba con tanto
puntero
y paréntesis).
po ci , me funciona bien, he solucionado el problema para acceder a la
ram pero continuare teniendo el problema para acceder a la VRAM
mediante las rutinas de sistema :P , si alguien sabe como solucionarlo
se lo agradeceria mucho.
Cuando dices que tienes problemas con las rutinas del sistema...¿te
refieres a que no puedes acceder a las rutinas de la BIOS?.
En caso de que puedas, utiliza RDVRM que te hace un vpeek en un pispas...
Sería algo así como (en el asMSX) :
ld hl,$0000 ; direccion VRAM
call RDVRM ; y en A, tendras el valor que buscas
Si no puedes, es posible que sea debido a que la pagina 0 (0000-3FFF)
no está disponible, en ese caso puedes probar a usar una llamada
interslot que quedaría como sigue :
ld hl,$0000 ; direccion VRAM
ld iy,($FCC1-1)
ld ix,$004A ; direccion de RDVRM
call CALSLT ; y en A deberia estar el valor...
Si alguno de estos códigos lo puedes recubrir con una función C, todo
arreglado :)
Saludillos y gracias lider