1. help with physical addresses
Im currently creating a library that is dependant on some memory managment
routines. The trouble is the referance I'm useing referes to a 32-bit
'physical address pointer' (CPU address). I useualy read 32-bit read mode
pointers useing: }}}
<eucode>
and_bits(peek4u(address),#FFFF) + (and_bits(peek4u(address+2),#FFFF) * 16)
</eucode>
{{{
I'm assuming I can simply read a 'physical address pointer' as so:
peek4u(address)
. assuming that this is a flat address.
I'm not completely sure on how I'm ment to be reading this.
Is this the correct way to read a '32-bit physical address pointer'?
n.b. This address later gets mapped useing int 31h, func 08h.
2. Re: help with physical addresses
Hayden McKay wrote:
>
>
> Im currently creating a library that is dependant on some memory managment
> routines. The trouble is the referance I'm useing referes to a 32-bit
> 'physical address pointer' (CPU address). I useualy read 32-bit read mode
> pointers useing:
and_bits(peek4u(address),#FFFF) + (and_bits(peek4u(address+2),#FFFF) * 16)
I think this should have been:
and_bits(peek4u(address),#FFFF) + (and_bits(peek4u(address+2),#FFFF) * #10000)
> I'm assuming I can simply read a 'physical address pointer' as so:
> }}}
<eucode> peek4u(address)</eucode>
{{{
. assuming that this is a flat address.
> I'm not completely sure on how I'm ment to be reading this.
> Is this the correct way to read a '32-bit physical address pointer'?
> n.b. This address later gets mapped useing int 31h, func 08h.
Yes, the above should really just be peek4u(address). The first peek4u
inside the and_bits() reads the whole address, and then you chop it off,
and then [incorrectly] get the other half of the pointer.
Matt Lewis
3. Re: help with physical addresses
The 'real mode' pointer is NOT a Physical address. The 'real mode' pointer
referes to a 'vbeFarPtr' explained in VBE30.PDF. If I change it it your
example, the returned address is invalid. (does not point to were it's ment to).
The PHYSICAL address is NOT a REAL mode pointer. The pysical address is a 32-bit
CPU address. I'm just not sure on how I'm ment to read the PHYSICAL address
Thanks for your help anyway.