diff options
author | 2019-06-09 12:47:45 -0400 | |
---|---|---|
committer | 2019-06-09 12:47:45 -0400 | |
commit | a610524c5f8907897905ce109fc714b2201183de (patch) | |
tree | 4d8e64798621635a80f2b7e7cc43ceabb2365445 | |
parent | 8e0b5daec725e1fb30ac5ec066187d2d8f2d3659 (diff) |
ap2_dsk: only save 40 tracks if the disk originally had that many [R. Belmont]
-rw-r--r-- | src/lib/formats/ap2_dsk.cpp | 9 | ||||
-rw-r--r-- | src/lib/formats/ap2_dsk.h | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/formats/ap2_dsk.cpp b/src/lib/formats/ap2_dsk.cpp index 7a888079293..2aa883ca143 100644 --- a/src/lib/formats/ap2_dsk.cpp +++ b/src/lib/formats/ap2_dsk.cpp @@ -606,10 +606,13 @@ const floppy_image_format_t::desc_e a2_16sect_format::mac_gcr[] = { bool a2_16sect_format::load(io_generic *io, uint32_t form_factor, floppy_image *image) { + uint64_t size = io_generic_size(io); + m_prodos_order = false; + m_tracks = (size == (40 * 16 * 256)) ? 40 : 35; int fpos = 0; - for(int track=0; track < APPLE2_TRACK_COUNT; track++) { + for(int track=0; track < m_tracks; track++) { std::vector<uint32_t> track_data; uint8_t sector_data[256*16]; static const unsigned char pascal_block1[4] = { 0x08, 0xa5, 0x0f, 0x29 }; @@ -781,7 +784,7 @@ bool a2_16sect_format::save(io_generic *io, floppy_image *image) // data postamble is good #define DATAPOST 16 for (auto & elem : visualgrid) { - for (int j = 0; j < APPLE2_TRACK_COUNT; j++) { + for (int j = 0; j < m_tracks; j++) { elem[j] = 0; } } @@ -791,7 +794,7 @@ bool a2_16sect_format::save(io_generic *io, floppy_image *image) int pos_data = 0; - for(int track=0; track < APPLE2_TRACK_COUNT; track++) { + for(int track=0; track < m_tracks; track++) { uint8_t sectdata[(256)*16]; memset(sectdata, 0, sizeof(sectdata)); int nsect = 16; diff --git a/src/lib/formats/ap2_dsk.h b/src/lib/formats/ap2_dsk.h index f2f5e005f8c..b5b08db663b 100644 --- a/src/lib/formats/ap2_dsk.h +++ b/src/lib/formats/ap2_dsk.h @@ -57,6 +57,8 @@ private: void update_chk(const uint8_t *data, int size, uint32_t &chk); bool m_prodos_order; + + int m_tracks; }; extern const floppy_format_type FLOPPY_A216S_FORMAT; |