MAME has a very complete, cycle-accurate 8237A DMA device under the AMD part number: am9517a.c/.h.
There's also an older i8237 emulation that isn't as good; it couldn't support e.g. SoundBlaster and other ISA DMA in the MESS PC driver so am9517a.c was born. But some drivers haven't been converted to the better implementation yet.