From: <pa...@us...> - 2008-07-22 07:48:57
|
Revision: 3723 http://fuse-emulator.svn.sourceforge.net/fuse-emulator/?rev=3723&view=rev Author: pak21 Date: 2008-07-22 07:49:06 +0000 (Tue, 22 Jul 2008) Log Message: ----------- Allow EDSK images with large sector sizes to work (patch #2024218) (Gergely Szasz) (thanks, Simon Owen). Modified Paths: -------------- trunk/fuse/disk/upd_fdc.c trunk/fuse/hacking/ChangeLog Modified: trunk/fuse/disk/upd_fdc.c =================================================================== --- trunk/fuse/disk/upd_fdc.c 2008-07-22 03:12:28 UTC (rev 3722) +++ trunk/fuse/disk/upd_fdc.c 2008-07-22 07:49:06 UTC (rev 3723) @@ -32,6 +32,8 @@ #include "ui/ui.h" #include "upd_fdc.h" +#define MAX_SIZE_CODE 8 + static const int UPD_FDC_MAIN_DRV_0_SEEK = 0x01; static const int UPD_FDC_MAIN_DRV_1_SEEK = 0x02; static const int UPD_FDC_MAIN_DRV_2_SEEK = 0x04; @@ -224,7 +226,7 @@ f->id_sector = d->fdd.data; fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); if( d->fdd.index ) f->rev--; - f->id_length = d->fdd.data > 6 ? 6 : d->fdd.data; + f->id_length = d->fdd.data > MAX_SIZE_CODE ? MAX_SIZE_CODE : d->fdd.data; f->sector_length = 0x80 << f->id_length; fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); if( d->fdd.index ) f->rev--; @@ -1280,7 +1282,7 @@ } /* EOSpeedlock hack */ - f->rlen = 0x80 << ( f->data_register[4] > 6 ? 6 : f->data_register[4] ); + f->rlen = 0x80 << ( f->data_register[4] > MAX_SIZE_CODE ? MAX_SIZE_CODE : f->data_register[4] ); if( f->data_register[4] == 0 && f->data_register[7] < 128 ) f->rlen = f->data_register[7]; f->first_rw = 1; /* always read at least one sector */ @@ -1288,7 +1290,7 @@ return; break; case UPD_CMD_READ_DIAG: /* READ TRACK */ - f->rlen = 0x80 << ( f->data_register[4] > 6 ? 6 : f->data_register[4] ); + f->rlen = 0x80 << ( f->data_register[4] > MAX_SIZE_CODE ? MAX_SIZE_CODE : f->data_register[4] ); if( f->data_register[4] == 0 && f->data_register[7] < 128 ) f->rlen = f->data_register[7]; head_load( f ); @@ -1302,7 +1304,7 @@ terminated = 1; break; } - f->rlen = 0x80 << ( f->data_register[4] > 6 ? 6 : f->data_register[4] ); + f->rlen = 0x80 << ( f->data_register[4] > MAX_SIZE_CODE ? MAX_SIZE_CODE : f->data_register[4] ); if( f->data_register[4] == 0 && f->data_register[7] < 128 ) f->rlen = f->data_register[7]; f->first_rw = 1; /* always write at least one sector */ @@ -1316,7 +1318,7 @@ terminated = 1; break; } - f->rlen = 0x80 << ( f->data_register[1] > 6 ? 6 : f->data_register[1] ); /* max 8192 byte/sector */ + f->rlen = 0x80 << ( f->data_register[1] > MAX_SIZE_CODE ? MAX_SIZE_CODE : f->data_register[1] ); /* max 8192 byte/sector */ head_load( f ); return; break; @@ -1325,7 +1327,7 @@ ( f->command_register & 0x0c ) >> 2 == 0x03 ? UPD_SCAN_HI : UPD_SCAN_LO; - f->rlen = 0x80 << ( f->data_register[4] > 6 ? 6 : f->data_register[4] ); + f->rlen = 0x80 << ( f->data_register[4] > MAX_SIZE_CODE ? MAX_SIZE_CODE : f->data_register[4] ); head_load( f ); return; break; Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2008-07-22 03:12:28 UTC (rev 3722) +++ trunk/fuse/hacking/ChangeLog 2008-07-22 07:49:06 UTC (rev 3723) @@ -2791,3 +2791,5 @@ gtk ui (Marek). 20080721 compat/unix/file.c: Win32: applied a minor fix to compat_file_open for Win32 (Marek). +20080721 disk/upd_fdc.c: allow EDSK images with large sector sizes to work + (patch #2024218) (Gergely Szasz) (thanks, Simon Owen). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |