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.

new topic     » topic index » view message » categorize

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

new topic     » goto parent     » topic index » view message » categorize

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.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu