delorie.com/djgpp/faq/lowlevel/unsup.html | search |
Calling real-mode DOS or BIOS services from protected-mode program requires a switch to real mode, so go32 catches the int instruction and tries to reissue it after the mode switch. However, some services require pointers to memory buffers. Real-mode DOS/BIOS functions can only access buffers in conventional memory, so go32 has to move data between your program and low memory to transparently support these services. But this means it should know about all these services to perform these chores correctly. While go32 supports many of these services, it doesn't support all of them. For those it doesn't support, you will have to call the _go32_dpmi_simulate_int() library function instead. It is documented in the libcref.i Info file (get and unzip the file djdocXXX.zip, then type
info libc.a alpha _go32_dpmi_simulate_intIn fact, it's best to always call _go32_dpmi_simulate_int(): this way you can be sure it will work no matter what services are supported by go32. _go32_dpmi_simulate_int() requires that you set up all the data as required by the service you are calling, including moving the data to and from low memory.
webmaster | delorie software privacy |
Copyright © 1995 | Updated Feb 1995 |