include vmm.inc
VMMCall _Allocate_Temp_V86_Data_Area, <nBytes, flags>
or eax, eax ; zero if error
jz error
mov [Address], eax ; address of temporary block
Allocates a block of memory from the global V86 data area. The block is for exclusive use by the virtual device during system initialization only. A virtual device typically allocates a temporary block to serve as a buffer for calls to MS-DOS or BIOS functions. A virtual device makes such calls using the Simulate_Int service while inside a nested execution block. This service is only available during initialization. Uses EAX, ECX, EDX, and Flags.
This service always aligns the temporary block on a paragraph boundary and fills the block with zeros.
Virtual devices must free the temporary block as soon as possible. The system provides only one temporary data area, therefore only one temporary block can be allocated at a time. Attempts to allocate a temporary block when it is already allocated will result in an error.
_Free_Temp_V86_Data_Area