summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/imgtool/modules/pc_flop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/imgtool/modules/pc_flop.cpp')
-rw-r--r--src/tools/imgtool/modules/pc_flop.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/tools/imgtool/modules/pc_flop.cpp b/src/tools/imgtool/modules/pc_flop.cpp
index 211b7f7b938..6a242d16abf 100644
--- a/src/tools/imgtool/modules/pc_flop.cpp
+++ b/src/tools/imgtool/modules/pc_flop.cpp
@@ -9,11 +9,14 @@
****************************************************************************/
#include "imgtool.h"
-#include "formats/imageutl.h"
-#include "formats/pc_dsk.h"
#include "fat.h"
#include "iflopimg.h"
+#include "formats/pc_dsk_legacy.h"
+
+#include "multibyte.h"
+#include "opresolv.h"
+
#define FAT_SECLEN 512
@@ -31,10 +34,10 @@ static imgtoolerr_t fat_image_create(imgtool::image &image, imgtool::stream::ptr
/* set up just enough of a boot sector to specify geometry */
memset(buffer, 0, sizeof(buffer));
- place_integer_le(buffer, 24, 2, sectors);
- place_integer_le(buffer, 26, 2, heads);
- place_integer_le(buffer, 19, 2, (uint16_t) (((uint64_t) tracks * heads * sectors) >> 0));
- place_integer_le(buffer, 32, 4, (uint16_t) (((uint64_t) tracks * heads * sectors) >> 16));
+ put_u16le(&buffer[24], sectors);
+ put_u16le(&buffer[26], heads);
+ put_u16le(&buffer[19], uint16_t((uint64_t(tracks) * heads * sectors) >> 0));
+ put_u32le(&buffer[32], uint16_t((uint64_t(tracks) * heads * sectors) >> 16));
err = image.write_block(0, buffer);
if (err)
goto done;
@@ -44,7 +47,7 @@ static imgtoolerr_t fat_image_create(imgtool::image &image, imgtool::stream::ptr
imgtool_get_info_fct(&imgclass, IMGTOOLINFO_PTR_CREATE_PARTITION);
/* actually create the partition */
- err = fat_partition_create(image, 0, ((uint64_t) tracks) * heads * sectors);
+ err = fat_partition_create(image, 0, uint64_t(tracks) * heads * sectors);
if (err)
goto done;
@@ -64,11 +67,11 @@ static imgtoolerr_t fat_image_get_geometry(imgtool::image &image, uint32_t *trac
if (err)
return err;
- total_sectors = pick_integer_le(buffer, 19, 2)
- | (pick_integer_le(buffer, 32, 4) << 16);
+ total_sectors = get_u16le(&buffer[19])
+ | uint64_t(get_u32le(&buffer[32]) << 16);
- *sectors = pick_integer_le(buffer, 24, 2);
- *heads = pick_integer_le(buffer, 26, 2);
+ *sectors = get_u16le(&buffer[24]);
+ *heads = get_u16le(&buffer[26]);
*tracks = total_sectors / *heads / *sectors;
return IMGTOOLERR_SUCCESS;
}