From f1232ee250514eb3d8d69cbeb2381fe529807497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20DEL=20NERO?= Date: Sun, 18 Jan 2026 20:08:55 +0100 Subject: [PATCH] FM sector reader : false sync word detection issue mitigation : now expect Ox00 before the sync word. --- .../tracks/track_formats/iso_ibm_fm_track.c | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/libhxcfe/sources/tracks/track_formats/iso_ibm_fm_track.c b/libhxcfe/sources/tracks/track_formats/iso_ibm_fm_track.c index 6931c94b..7583a473 100644 --- a/libhxcfe/sources/tracks/track_formats/iso_ibm_fm_track.c +++ b/libhxcfe/sources/tracks/track_formats/iso_ibm_fm_track.c @@ -189,17 +189,20 @@ int get_next_FM_sector(HXCFE* floppycontext,HXCFE_SIDE * track,HXCFE_SECTCFG * s //; 1 1 1 1 1 1 0 1 -- FD //11111011 - fm_buffer[0]=0x55; - fm_buffer[1]=0x11; - fm_buffer[2]=0x14; - fm_buffer[3]=0x55; + + fm_buffer[0]=0x44; + fm_buffer[1]=0x44; + fm_buffer[2]=0x55; + fm_buffer[3]=0x11; + fm_buffer[4]=0x14; + fm_buffer[5]=0x55; i=0; do { - fm_buffer[2] = (datamark[i] >> 8) & 0xFF; - fm_buffer[3] = datamark[i] & 0xFF; - bit_offset = searchBitStream(track->databuffer,track->tracklen,((88+16)*8*2),fm_buffer,4*8,old_bit_offset); + fm_buffer[4] = (datamark[i] >> 8) & 0xFF; + fm_buffer[5] = datamark[i] & 0xFF; + bit_offset = searchBitStream(track->databuffer,track->tracklen,((88+16)*8*2),fm_buffer,6*8,old_bit_offset); i++; }while(i<6 && bit_offset==-1 ); @@ -222,8 +225,8 @@ int get_next_FM_sector(HXCFE* floppycontext,HXCFE_SIDE * track,HXCFE_SECTCFG * s memset(tmp_sector_index,0,(1+sector_size+2) * sizeof(int)); - sector->startdataindex = bit_offset; - sector->endsectorindex = fmtobin(track->databuffer,tmp_sector_index,track->tracklen,tmp_sector,1+sector_size+2,bit_offset+(0*8),0); + sector->startdataindex = bit_offset+(2*8); + sector->endsectorindex = fmtobin(track->databuffer,tmp_sector_index,track->tracklen,tmp_sector,1+sector_size+2,bit_offset+(2*8),0); CRC16_Init(&CRC16_High,&CRC16_Low,(unsigned char*)crctable,0x1021,0xFFFF); for(k=0;k<1+sector_size+2;k++)