From 1e84b46a5db15645365f1a6b0aefdb7575946576 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 1 Oct 2024 08:53:57 +0200 Subject: [PATCH] 86F: Correct the obtaining of the preceding bits in direct writes, fixes bit stream compliance. --- src/floppy/fdd_86f.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/floppy/fdd_86f.c b/src/floppy/fdd_86f.c index 3fe1428a1..cf9e83694 100644 --- a/src/floppy/fdd_86f.c +++ b/src/floppy/fdd_86f.c @@ -1854,6 +1854,7 @@ d86f_write_direct_common(int drive, int side, uint16_t byte, uint8_t type, uint3 if (type == 0) { /* Byte write. */ encoded_byte = d86f_encode_byte(drive, 0, dbyte, dpbyte); + dev->preceding_bit[side] = encoded_byte & 1; if (!d86f_reverse_bytes(drive)) { mask_data = encoded_byte >> 8; encoded_byte &= 0xFF; @@ -1863,6 +1864,7 @@ d86f_write_direct_common(int drive, int side, uint16_t byte, uint8_t type, uint3 } else { /* Word write. */ encoded_byte = byte; + dev->preceding_bit[side] = (encoded_byte >> 8) & 1; if (d86f_reverse_bytes(drive)) { mask_data = encoded_byte >> 8; encoded_byte &= 0xFF; @@ -1871,8 +1873,6 @@ d86f_write_direct_common(int drive, int side, uint16_t byte, uint8_t type, uint3 } } - dev->preceding_bit[side] = encoded_byte & 1; - if (d86f_has_surface_desc(drive)) { /* Inverted track data, clear bits are now set. */ mask_data = ~dev->track_encoded_data[side][pos];