Thanks Tim, I must have gotten my memcpy backwards.
Believe it or not, the one I posted is not the complete one. :'(
Well, this is what is missing:
The floppy uses interrupt line 6 (IRQ 6) for its interrupts. If you have reprogrammed the PIC say to handle the master interrupts from 0x20 and the slave interrupts from 0x28, the the floppy's interrupts should be installed at interrupt service routine 0x26.
An example floppy ISR could be
(NASM format)
Code:
extern _floppy_int_count
_floppy_int:
inc word [_floppy_int_count]
mov al,0x20 ;acknowledge interrupt to PIC
out 0x20,al
iret
then in the C code,
Code:
unsigned short floppy_int_count=0;
void wait_floppy_interrupt()
{
while(floppy_int_count <= 0);
floppy_int_count--;
return;
}
This is one method. Another is to use interprocess communication code such as send and receive to send messages to a floppy server that will handle the interrupts. this is the method i used, as it saves cpu cycles due to the suspension of the server until an interrupt occurs. during that time, another task is allocated the cpu ie running