From 720b1e580233915d2e9a49665b04400ee50584ff Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 28 Dec 2016 18:56:53 -0500 Subject: [PATCH] Attempted to ensure proper CRC generation for FM-format input. --- Storage/Disk/Encodings/MFM.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/Storage/Disk/Encodings/MFM.cpp b/Storage/Disk/Encodings/MFM.cpp index 3bbb786e9..60799bc4c 100644 --- a/Storage/Disk/Encodings/MFM.cpp +++ b/Storage/Disk/Encodings/MFM.cpp @@ -89,10 +89,33 @@ class FMEncoder: public Encoder { )); } - void add_index_address_mark() { output_short(FMIndexAddressMark); } - void add_ID_address_mark() { output_short(FMIDAddressMark); } - void add_data_address_mark() { output_short(FMDataAddressMark); } - void add_deleted_data_address_mark() { output_short(FMDeletedDataAddressMark); } + void add_index_address_mark() + { + crc_generator_.reset(); + crc_generator_.add(MFMIndexAddressByte); + output_short(FMIndexAddressMark); + } + + void add_ID_address_mark() + { + crc_generator_.reset(); + crc_generator_.add(MFMIDAddressByte); + output_short(FMIDAddressMark); + } + + void add_data_address_mark() + { + crc_generator_.reset(); + crc_generator_.add(MFMDataAddressByte); + output_short(FMDataAddressMark); + } + + void add_deleted_data_address_mark() + { + crc_generator_.reset(); + crc_generator_.add(MFMDeletedDataAddressByte); + output_short(FMDeletedDataAddressMark); + } }; static uint8_t logarithmic_size_for_size(size_t size)