HispaMSX

RE: ayuda con z88dk & assembler

2005-04-11 21:00:53

--- 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




<Anterior en la conversación] Conversación actual [Siguiente en la conversación>