1. Calling 16-bit code

The vesa bios extensions for super vga cards provide a mechanism to
change which bank is mapped to the A000 memory segment.  This mechanism
is provided in two ways: first through the 10h video interrupt, and
second, through a call using a far pointer.  For speed reasons, I want
to use the pointer.  Unfortunately I can't figure out how to interface
correctly with the 16-bit routine.  I keep getting a general protection
fault when I try to call it from machine code.  I know that the calling
code must have the IP < 64k so that the 16-bit ret instruction will work
correctly.  I've tried using an operand override with the call
instruction but that still doesn't work.  I think what I'm trying to do
is called "thunking", is there a Causeway function that will do this for
me?  Can anyone help?

--
                  _____         _____        _____
   ________      /\    \       /\    \      /\    \
  /   \    \    /  \____\     /  \____\    /  \____\
 /  _  \____\  /   / ___/_   /   /____/   /   / ___/_
/  / \  |____|/   / /\____\ /    \    \  /   / /\____\
\  \_/ /    / \   \/ / ___/_\     \    \ \   \/ / ___/_
 \    /____/   \    / /\    \\/\   \    \ \    / /\    \
  \   \    \    \   \/  \____\  \   \    \ \   \/  \____\
   \   \    \    \      /    /   \   \____\ \      /    /
    \   \____\    \    /    /     \  /    /  \    /    /
     \  /    /     \  /    /       \/____/    \  /    /
      \/____/       \/____/xseal at harborside.com\/____/

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu