Page 1 of 1

DMA transfers

Posted: Mon Jan 14, 2002 12:00 am
by Scobl
Hello!

Could you please help me with DMA transfers!

I am trying to write a floppy driver for my operating system and I got confused by the DMA chip.
If I understood correctly, the floppy controller can transfer one byte at a time. To transfer a byte
from floppy to memory you first have to initialize DMA chip and then FDC. For example I want to transfer
one sector to memory (512 bytes). Which mode sould I use on DMA chip: single, block or demand?

In single mode I get the byte, but do I have to reprogram the DMA controller once I got the byte or will it
continue until it reaches TC?

In block and demand modes I know the DMA chip will transfer all the bytes until it reaches TC, but how about
memory refresh on channel 0? Will FDC handle that or do i have to tell the DMA controller to wait every 15 msec?

And how do I know when a channel reaches TC, do I get an interrupt from a floppy controller or do I have
to poll DMA once a while?

How much memory can a DMA controller see: 1 Meg or 16? In one tutorial they said that the external latch register
holds only 4 bits of 20 bit address, in other tut they said that the address is 24 bit long and the external latch register
can hold up to 8 bits?

Is it true that although there are four independant channels, only one of them can be active at a time?


I hope you can help me. Thank you.

Dima.