Date: Mon, 9 Jan 1995 14:12:06 +0500 From: hvb AT netrix DOT com To: sandmann AT new-orleans DOT neosoft DOT com Subject: Re: Accessing absolute addresses in memory (>1M) and ports. Cc: djgpp AT sun DOT soe DOT clarkson DOT edu Reply-To: hvb AT netrix DOT com Cc: djgpp AT sun DOT soe DOT clarkson DOT edu > > > Is it possible (and how?) to access ports and absolute addresses in > > memory (above 1M) with GNAT/DJGPP? > > ports can be accessed via inline assembler or via routines in pc.h > > Absolute addresses can be addressed under DPMI providers by using > DPMI call 0x0800, and the farptr.h functions. (BTW, this is > supported in the free DPMI and will be the *ONLY* way to access > physical memory locations > 1Mb in V2). > We have a number of memory mapped devices. Some of them are mapped to the 0xd000 page of the low 1MB, some of them are mapped to the area above 12MB of the physical memory addressing space. Will the call to the DPMI (0x0800) function allow me: - to map to the whole 16MB of the physical memory addressing space in one call, so effectively I will be able to obtain an equivalent offset to the 0xe0000000 offset that I have today? - or there is a limit to each region that I need to map to, so I have to call DPMI for each area? I understand that I should not access to any area outside my hardware devices area. > Under non-DPMI providers, add 0xe0000000 to the physical address > and use that as a pointer. Note, this feature disappears in V2. > > If you want to write to a single API and don't have DPMI, I can > let you have an early release of the free DPMI to use with V1.12 >