FreePascal Physical -> Linear address mapping (VESA)

Hi there - I recently moved from Borland Pascal to FreePascal and I am
having problems porting my object-oriented VESA units - the problem is I
recieve the physical address of the Linear Framebuffer from any given video
mode (it tells me it's at 0000E000h) but I can't convert this address into
anything useful.
I've tried an example from the VESA specification (converting it from C
code) but it just causes
Win95 to give me protection errors. What I want is either a TSegInfo or just
a standard Pointer that I can use as
the base address to write to the screen - I +ACo-am+ACo- activating the LFB bit when
opening the mode, and the mode does actually
open as normal, I just can't write to it. Can anyone post some example code
to convert the physical address it gives you into
a usable pointer with descriptor etc. (I've deleted my nonworking code, but
I could rewrite it and post if requested)

Thanks in advance.

Lors, Paradice Software
Christchurch, New Zealand
Creators of the only FreePascal DOS IDE that can autocomplete object