DMA (Direct Memory Access)

These functions are divided into two classes. The first class contains two basic functions: one for initializing the DMA controller chip, one for allocating a suitably aligned buffer. The second class is a set of wrapper functions for the Virtual DMA specification (VDS) API.

A set of programs demonstrating the various functions supplied in the library is available for downloading.


Basic Functions

Allocate a suitably aligned DMA buffer: dma_alloc()
Initialize and enable a DMA channel: dma_init()


VDS Wrapper Functions

Note that while these functions work well under 16-bit DOS, VDS services which automatically transfer data between the user's buffer and the VDS services' buffer always fail to successfully transfer the data under 32-bit DOS.

Get information about the VDS system: vds_info()
Allocate a VDS DMA buffer: vds_alloc()
Free a VDS DMA buffer: vds_free()
Lock a DMA buffer: vds_lock()
Unlock a DMA buffer: vds_unlock()
Scatter / Gather lock: vds_sglock()
Scatter / Gather unlock: vds_sgunlock()
Copy data between the user's buffer and the VDS DMA buffer: vds_copy()
Enable or disable address translation: vds_translate()