1. Help! Question about PC DMA controller programming
Would anybody help me with DMA controller programming?
I wrote a driver for my ADC/DAC card using DMA in IBM PC/AT for DOS.
There were a code in it:
unsigned p1 , p2 ;
...
asm {
mov al,59h //DMA channel1 mode setting, single byte input, autoinitialization
out 8,al }
...
do
p1 = DMApos() ;
printf("%x\n",p1);
while( p1 < p2 ) ;
...
where:
unsigned DMApos() { //getting current address of channel 1
asm {
cli
out 0ch,al //clear low byte flip/flop
in al,2 //read channel 1 current address low byte
mov ah,al
in al,2 //read channel 1 current address high byte
xchg al,ah
sti }
return _AX ; }
When I remove printf or redirect it to nul: some data incoming from
ADC are lost :-(. WHY?!
The DMA controller was programed to single byte input,
autoinitialization ( out 8,59h ), period of DRQ's was about
10 - 100 microseconds.
So, the questions:
1. What do 8237 do with DRQ's between port 2 readings?
Can it loss DRQ's in this time?
2. Can it loss DRQ's while other DRQ treatment or memory refresh?
In my computer DRQ0 seems to be unused.
3. Can it loss DRQ's during autoinitialization?
Best regards,
Waldemar G. Saitseff
Speech Technology Center
Phone: (812)532-5903
2. HP Precision Scan / PDF file
3. C(++) library for low level PC stuff (serial, DMA, video , you know) recommendations
4. Port speed on Dial-up connections:DecServer
5. Software Interface for PC DMA controler?
6. Money 2002 Income Tax Rates
7. Problems programming PC DMA (cache coherency, etc.)...
8. OS/2 Warp 4 and Cogeco Wave
9. DMA control registers PC vs 386
10. Software Interface for PC DMA Controller?
11. Help needed programming PC-AT DMA controller
12. Programming the PC's DMA controller
13. 8237A DMA Chip on the PC