86F: Correct the obtaining of the preceding bits in direct writes, fixes bit stream compliance.
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user