INT 4B - Virtual DMA SpecificationA set of interrupt calls which permit the use of DMA even on systems running in protected or Virtual-86 mode with their address remapping, or systems such as Micro Channel PSIBM PS/2, any model/2s with multiple bus masters independently performing DMA operations. - LOCK DMAsee Direct Memory Access REGION AX = 8103h DX = flags (see #03220) ES:DI -> DMAsee Direct Memory Access descriptor structure (see #03221,#03222,#03223) Return: CF clear if successful DDS physical address field filled in DDS buffer ID field filled (0000h if no buffer allocated) CF set on error AL = error code (see #03218) DDS region size field filled wth maximum contiguous length in bytes BUGS: Windows 3.0 does not correctly support automatic remapping or copying in enhanced mode Windows 3.0 in enhanced mode does not return a correct code on error SeeAlso: AX=8104h,AX=8105h Bitfields for VDSsee Virtual DMA Specification flags: Bit(s) Description (Table 03220) 0 reserved (zero) 1 data should be copied into buffer (ignored if 2 set) 2 buffer should not be allocated if region noncontiguous or crosses physical alignment boundary specified by 4-5 3 don't attempt automatic remap 4 region must not cross 64K physical alignment boundary 5 region must not cross 128K physical alignment boundary 6-15 reserved (zero) Format of DMAsee Direct Memory Access descriptor structure (DDS): Offset Size Description (Table 03221) 00h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region size 04h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. offset 08h WORD segment/selector 0Ah WORD buffer ID 0Ch DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. physical address Format of Extended DMAsee Direct Memory Access descriptor structure (EDDS): Offset Size Description (Table 03222) 00h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region size 04h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. offset 08h WORD segment/selector 0Ah WORD reserved 0Ch WORD number available 0Eh WORD number used 10h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region 0 physical address 14h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region 0 size in bytes 18h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region 1 physical address 1Ch DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region 1 size in bytes ... Format of Extended DMAsee Direct Memory Access descriptor structure (EDDS) with page table entries: Offset Size Description (Table 03223) 00h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. region size 04h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. offset 08h WORD segment/selector 0Ah WORD reserved 0Ch WORD number available 0Eh WORD number used 10h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. page table entry 0 (same as 80386 page table entry) 14h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. page table entry 1 ... Note: bits 1-11 of the page table entries should be zero; bit 0 set if page is present and locked