| delorie.com/archives/browse.cgi | search |
| From: | Corelli Marco <mcorelli AT gtwparc DOT padova DOT ccr DOT it> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Accesing from 0xFFFF:F000 to 0xFFFF:FFFF physical memory address |
| Date: | Thu, 12 Oct 2000 18:00:10 +0200 |
| Organization: | IUnet |
| Lines: | 43 |
| Message-ID: | <39E5E00A.39A80E46@gtwparc.padova.ccr.it> |
| NNTP-Posting-Host: | proxy.iperv.it |
| Mime-Version: | 1.0 |
| X-Trace: | serv1.iunet.it 971366103 16412 151.4.122.158 (12 Oct 2000 15:55:03 GMT) |
| X-Complaints-To: | newsmaster AT iunet DOT it |
| NNTP-Posting-Date: | 12 Oct 2000 15:55:03 GMT |
| X-Mailer: | Mozilla 4.75 [en] (Win98; U) |
| X-Accept-Language: | en |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Hi All,
I need to access from 0xFFFC:0000 to 0xFFFF:FFFF physical addess to
program a Flash device but when I try to map the address 0xFFFF:F000 to
0xFFFF:FFFF my program crash !!!!
I use this code for map physical address to linear memory
int selector;
__dpmi_meminfo mem;
mem.address = 0xFFFF0000L;
mem.size = 0x10000;
//* Mapping physical address...
if ( __dpmi_physical_address_mapping( &mem ) == -1 )
printf ( "\nERR: __dpmi_physical_address_mapping" ) ;
//* Create new selector to access physical address
selector = __dpmi_allocate_ldt_descriptors ( 1 ) ;
if ( *selector == -1 )
printf ( "\nERR: __dpmi_allocate_ldt_descriptors\n" ) ;
//* Set current base segment
if ( __dpmi_set_segment_base_address ( selector, mem.address ) == -1 )
printf ( "\nERR: __dpmi_set_segment_base_address\n" ) ;
//* Set segment limit
if ( __dpmi_set_segment_limit ( selector, mem.size - 1 ) == -1 )
printf ( "\nERR: __dpmi_set_segment_limit\n" ) ;
and access the location :
byte_read = _farpeekb ( selector, offset ) ;
at this time my program crash !!!!
Bye Marco
N.B.
If I run my program in a DOS window under Win98 all is OK !!!!
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |