summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/os9_dsk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/os9_dsk.cpp')
-rw-r--r--src/lib/formats/os9_dsk.cpp128
1 files changed, 64 insertions, 64 deletions
diff --git a/src/lib/formats/os9_dsk.cpp b/src/lib/formats/os9_dsk.cpp
index 8cd2bd985bf..4a56054a7ff 100644
--- a/src/lib/formats/os9_dsk.cpp
+++ b/src/lib/formats/os9_dsk.cpp
@@ -26,90 +26,90 @@ os9_format::os9_format() : wd177x_format(formats)
const char *os9_format::name() const
{
- return "os9";
+ return "os9";
}
const char *os9_format::description() const
{
- return "OS-9 floppy disk image";
+ return "OS-9 floppy disk image";
}
const char *os9_format::extensions() const
{
- return "dsk,os9";
+ return "dsk,os9";
}
int os9_format::identify(io_generic *io, uint32_t form_factor)
{
- int type = find_size(io, form_factor);
+ int type = find_size(io, form_factor);
- if (type != -1)
- return 75;
- return 0;
+ if (type != -1)
+ return 75;
+ return 0;
}
int os9_format::find_size(io_generic *io, uint32_t form_factor)
{
- uint64_t size = io_generic_size(io);
-
- uint8_t os9_header[0x20];
- io_generic_read(io, os9_header, 0, 0x20);
-
- int os9_total_sectors = pick_integer_be(os9_header, 0x00, 3);
- int os9_heads = BIT(os9_header[0x10], 0) ? 2 : 1;
- int os9_sectors = pick_integer_be(os9_header, 0x11, 2);
-
- if (os9_total_sectors > 0 && os9_heads > 0 && os9_sectors > 0) {
- int os9_tracks = os9_total_sectors / os9_sectors / os9_heads;
-
- // now let's see if we have valid info
- if ((os9_tracks * os9_heads * os9_sectors * 256) == size) {
- for(int i=0; formats[i].form_factor; i++) {
- const format &f = formats[i];
-
- if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
- continue;
-
- if(os9_tracks == f.track_count) {
- if( os9_heads == f.head_count ) {
- if(os9_sectors == f.sector_count ) {
- return i;
- }
- }
- }
- }
- }
- }
-
- return -1;
+ uint64_t size = io_generic_size(io);
+
+ uint8_t os9_header[0x20];
+ io_generic_read(io, os9_header, 0, 0x20);
+
+ int os9_total_sectors = pick_integer_be(os9_header, 0x00, 3);
+ int os9_heads = BIT(os9_header[0x10], 0) ? 2 : 1;
+ int os9_sectors = pick_integer_be(os9_header, 0x11, 2);
+
+ if (os9_total_sectors > 0 && os9_heads > 0 && os9_sectors > 0) {
+ int os9_tracks = os9_total_sectors / os9_sectors / os9_heads;
+
+ // now let's see if we have valid info
+ if ((os9_tracks * os9_heads * os9_sectors * 256) == size) {
+ for(int i=0; formats[i].form_factor; i++) {
+ const format &f = formats[i];
+
+ if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
+ continue;
+
+ if(os9_tracks == f.track_count) {
+ if( os9_heads == f.head_count ) {
+ if(os9_sectors == f.sector_count ) {
+ return i;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return -1;
}
const os9_format::format os9_format::formats[] = {
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
- 2000, 18, 35, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
- 2000, 18, 35, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
- 2000, 18, 40, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
- 2000, 18, 40, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
- 2000, 18, 80, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- { // 5"25 160K double density
- floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
- 2000, 18, 80, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
- },
- {}
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 18, 35, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 18, 35, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 18, 40, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 18, 40, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 18, 80, 1, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ { // 5"25 160K double density
+ floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 18, 80, 2, 256, {}, -1, {1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 17, 6, 12, 18}, 18, 28, 20
+ },
+ {}
};
const floppy_format_type FLOPPY_OS9_FORMAT = &floppy_image_format_creator<os9_format>;