86F: Correct the obtaining of the preceding bits in direct writes, fixes bit stream compliance.

This commit is contained in:
OBattler
2024-10-01 08:53:57 +02:00
parent 7e0c6e9b69
commit 1e84b46a5d

View File

@@ -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];