Floppy Read Error
Posted: Mon Jul 10, 2006 12:09 am
Hi all. I wrote my floppy read function. But it doesn't read.
I used this function; fdc.read_sector( 0, 1, 0x08, 0 );
It must read to 0 address. But it don't. What is the problem?
Thanks.
Code: Select all
// Read Sector
void tfdc::read_sector( unsigned short lba, unsigned char sector_count, unsigned short selector, unsigned int offset )
{
// Data
tdma dma;
// Setup DMA
cli();
dma.set_dma_channel( dma_channel );
dma.disable_channel();
dma.set_control_byte_mask( dma_single_mode, dma_address_increment, dma_auto_init, dma_read_transfer );
dma.clear_flip_flop();
dma.set_address( 0 );
dma.set_transfer_length( sector_count * 512 );
dma.set_buffer_info();
sti();
dma.enable_channel();
// Prepare Driver
prepare_driver( true );
// Setup FDC
outport( data_register, 70 ); // Single Track Operation, Double Density, Do Not Skip
outport( data_register, fdc_floppy_driver + get_head( lba ) * 4 );
outport( data_register, get_cylinder( lba ) );
outport( data_register, get_head( lba ) );
outport( data_register, get_sector( lba ) );
outport( data_register, fdc_sector_size );
outport( data_register, fdc_sector_count );
outport( data_register, fdc_length_of_gap3 );
outport( data_register, 0xFF );
// Read Result
fdc_command_status0 = inport( data_register );
fdc_command_status1 = inport( data_register );
fdc_command_status2 = inport( data_register );
}
It must read to 0 address. But it don't. What is the problem?
Thanks.