From: "Lequtis" Newsgroups: comp.os.msdos.djgpp Subject: Creating a VGA Selector Date: Sat, 22 Aug 1998 11:05:10 +0100 Organization: BT Internet Lines: 72 Message-ID: <6rm5ip$b4l$1@plutonium.btinternet.com> NNTP-Posting-Host: host5-99-54-140.btinternet.com To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Im having a problem creating a selector for the VGA memory region 0xA000:0000 ). Heres the test code I have written... #include #include #include int selector; unsigned long linear; void MakeSelector( unsigned long address, unsigned long size ) { // commented out since 0xA000:0000 is under the 1meg mark and the // linear address is the same as the physical one /* __dpmi_meminfo mi; mi.size = size; mi.address = address; __dpmi_physical_address_mapping(&mi); linear = mi.address; __dpmi_lock_linear_region(&mi);*/ selector = __dpmi_allocate_ldt_descriptors(1); __dpmi_set_segment_base_address(selector, address); __dpmi_set_segment_limit(selector, size - 1); }; void DestroySelector( void ) { __dpmi_meminfo mi; mi.address = linear; __dpmi_free_physical_address_mapping(&mi); linear = 0; __dpmi_free_ldt_descriptor(selector); }; int main( void ) { MakeSelector(0xA0000UL, 320*200); asm (" movw $0x13, %%ax\n int $0x10" :::"ax"); getch(); _farpokeb(selector, 10, 4); getch(); asm (" movw $0x03, %%ax\n int $0x10" :::"ax"); DestroySelector(); }; Any ideas?