summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/uniflex_dsk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/uniflex_dsk.cpp')
-rw-r--r--src/lib/formats/uniflex_dsk.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/lib/formats/uniflex_dsk.cpp b/src/lib/formats/uniflex_dsk.cpp
index fe682417b09..59c243531dd 100644
--- a/src/lib/formats/uniflex_dsk.cpp
+++ b/src/lib/formats/uniflex_dsk.cpp
@@ -13,6 +13,7 @@
#include "imageutl.h"
#include "ioprocs.h"
+#include "multibyte.h"
uniflex_format::uniflex_format() : wd177x_format(formats)
@@ -55,20 +56,20 @@ int uniflex_format::find_size(util::random_read &io, uint32_t form_factor, const
size_t actual;
io.read_at(1 * 512, sir, sizeof(sir), actual);
- uint16_t fdn_block_count = pick_integer_be(sir, 0x10, 2);
- uint32_t last_block_number = pick_integer_be(sir, 0x12, 3);
- uint32_t free_block_count = pick_integer_be(sir, 0x15, 3);
- uint16_t fdn_free_count = pick_integer_be(sir, 0x15, 2);
+ uint16_t fdn_block_count = get_u16be(&sir[0x10]);
+ uint32_t last_block_number = get_u24be(&sir[0x12]);
+ uint32_t free_block_count = get_u24be(&sir[0x15]);
+ uint16_t fdn_free_count = get_u16be(&sir[0x15]); // FIXME: offset should be different from previous?
- uint16_t volume_number = pick_integer_be(sir, 0x36, 2);
+ uint16_t volume_number = get_u16be(&sir[0x36]);
uint8_t disk_density = sir[0x3a];
uint8_t disk_side_info = sir[0x3b];
- uint32_t volbc_start_addr = pick_integer_be(sir, 0x3c, 3);
- uint16_t swap_size = pick_integer_be(sir, 0x3f, 2);
+ uint32_t volbc_start_addr = get_u24be(&sir[0x3c]);
+ uint16_t swap_size = get_u16be(&sir[0x3f]);
LOG_FORMATS("UniFLEX floppy dsk size %d\n", (uint32_t)size);
- LOG_FORMATS(" time = %u %u\n", (uint32_t) pick_integer_be(sir, 0x08, 4), (uint32_t) pick_integer_be(sir, 0x0c, 4));
+ LOG_FORMATS(" time = %u %u\n", get_u32be(&sir[0x08]), get_u32be(&sir[0x0c]));
LOG_FORMATS(" fdn_block_count: %d\n", fdn_block_count);
LOG_FORMATS(" file system name: ");
@@ -90,7 +91,7 @@ int uniflex_format::find_size(util::random_read &io, uint32_t form_factor, const
LOG_FORMATS(" swap_size: %d\n", swap_size);
// The first eight bytes appear to be zeros.
- if (pick_integer_be(sir, 0x00, 8) != 0)
+ if (get_u64be(&sir[0x00]) != 0)
return -1;
for(int i=0; formats[i].form_factor; i++) {