- the skip flag (SK) in command 'read sector' is ignored now. The floppy
command codes 0x46 and 0xc6 are using the normal read function.
This commit is contained in:
parent
53128ce079
commit
43f9f8287b
@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// $Id: floppy.cc,v 1.40 2002-06-23 18:04:07 vruppert Exp $
|
// $Id: floppy.cc,v 1.41 2002-07-15 20:11:33 vruppert Exp $
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||||
@ -87,7 +87,7 @@ bx_floppy_ctrl_c::~bx_floppy_ctrl_c(void)
|
|||||||
void
|
void
|
||||||
bx_floppy_ctrl_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
bx_floppy_ctrl_c::init(bx_devices_c *d, bx_cmos_c *cmos)
|
||||||
{
|
{
|
||||||
BX_DEBUG(("Init $Id: floppy.cc,v 1.40 2002-06-23 18:04:07 vruppert Exp $"));
|
BX_DEBUG(("Init $Id: floppy.cc,v 1.41 2002-07-15 20:11:33 vruppert Exp $"));
|
||||||
BX_FD_THIS devices = d;
|
BX_FD_THIS devices = d;
|
||||||
|
|
||||||
BX_REGISTER_DMA8_CHANNEL(2, bx_floppy.dma_read, bx_floppy.dma_write, "Floppy Drive");
|
BX_REGISTER_DMA8_CHANNEL(2, bx_floppy.dma_read, bx_floppy.dma_write, "Floppy Drive");
|
||||||
@ -478,7 +478,9 @@ bx_floppy_ctrl_c::write(Bit32u address, Bit32u value, unsigned io_len)
|
|||||||
case 0xc5: /* write normal data */
|
case 0xc5: /* write normal data */
|
||||||
BX_FD_THIS s.command_size = 9;
|
BX_FD_THIS s.command_size = 9;
|
||||||
break;
|
break;
|
||||||
|
case 0x46:
|
||||||
case 0x66:
|
case 0x66:
|
||||||
|
case 0xc6:
|
||||||
case 0xe6: /* read normal data */
|
case 0xe6: /* read normal data */
|
||||||
BX_FD_THIS s.command_size = 9;
|
BX_FD_THIS s.command_size = 9;
|
||||||
break;
|
break;
|
||||||
@ -797,8 +799,10 @@ bx_floppy_ctrl_c::floppy_command(void)
|
|||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x66: // read normal data, MT=0
|
case 0x46: // read normal data, MT=0, SK=0
|
||||||
case 0xe6: // read normal data, MT=1
|
case 0x66: // read normal data, MT=0, SK=1
|
||||||
|
case 0xc6: // read normal data, MT=1, SK=0
|
||||||
|
case 0xe6: // read normal data, MT=1, SK=1
|
||||||
case 0x45: // write normal data, MT=0
|
case 0x45: // write normal data, MT=0
|
||||||
case 0xc5: // write normal data, MT=1
|
case 0xc5: // write normal data, MT=1
|
||||||
BX_FD_THIS s.multi_track = (BX_FD_THIS s.command[0] >> 7);
|
BX_FD_THIS s.multi_track = (BX_FD_THIS s.command[0] >> 7);
|
||||||
@ -939,7 +943,7 @@ bx_floppy_ctrl_c::floppy_command(void)
|
|||||||
BX_FD_THIS s.sector[drive] = sector;
|
BX_FD_THIS s.sector[drive] = sector;
|
||||||
BX_FD_THIS s.head[drive] = head;
|
BX_FD_THIS s.head[drive] = head;
|
||||||
|
|
||||||
if ((BX_FD_THIS s.command[0] & 0x7f) == 0x66) { // read
|
if ((BX_FD_THIS s.command[0] & 0x4f) == 0x46) { // read
|
||||||
floppy_xfer(drive, logical_sector*512, BX_FD_THIS s.floppy_buffer,
|
floppy_xfer(drive, logical_sector*512, BX_FD_THIS s.floppy_buffer,
|
||||||
512, FROM_FLOPPY);
|
512, FROM_FLOPPY);
|
||||||
BX_FD_THIS s.floppy_buffer_index = 0;
|
BX_FD_THIS s.floppy_buffer_index = 0;
|
||||||
@ -1083,7 +1087,9 @@ bx_floppy_ctrl_c::timer()
|
|||||||
raise_interrupt();
|
raise_interrupt();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x66: // read normal data
|
case 0x46: // read normal data
|
||||||
|
case 0x66:
|
||||||
|
case 0xc6:
|
||||||
case 0xe6:
|
case 0xe6:
|
||||||
case 0x45: // write normal data
|
case 0x45: // write normal data
|
||||||
case 0xc5:
|
case 0xc5:
|
||||||
|
Loading…
Reference in New Issue
Block a user