1. help with physical addresses
- Posted by Hayden McKay <hmck1 at dodo.com.au> Sep 08, 2004
- 450 views
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
- Posted by Matt Lewis <matthewwalkerlewis at yahoo.com> Sep 08, 2004
- 460 views
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
- Posted by Hayden McKay <hmck1 at dodo.com.au> Sep 09, 2004
- 459 views
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.