summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/lib/formats/st_dsk.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/lib/formats/st_dsk.c')
-rw-r--r--trunk/src/lib/formats/st_dsk.c605
1 files changed, 605 insertions, 0 deletions
diff --git a/trunk/src/lib/formats/st_dsk.c b/trunk/src/lib/formats/st_dsk.c
new file mode 100644
index 00000000000..8804583270f
--- /dev/null
+++ b/trunk/src/lib/formats/st_dsk.c
@@ -0,0 +1,605 @@
+/*********************************************************************
+
+ formats/st_dsk.c
+
+ Atari ST generic 9/10/11 sector-per-track formats
+
+*********************************************************************/
+
+#include "formats/st_dsk.h"
+
+st_gen_format::st_gen_format(const char *name,const char *extensions,const char *description,const char *param_guidelines) :
+ floppy_image_format_t(name,extensions,description,param_guidelines)
+{
+}
+
+#define SECTOR_42_HEADER(cid) \
+ { CRC_CCITT_START, cid }, \
+ { RAW, 0x4489, 3 }, \
+ { MFM, 0xfe, 1 }, \
+ { TRACK_ID }, \
+ { HEAD_ID }, \
+ { MFM, 0x42, 1 }, \
+ { MFM, 0x02, 1 }, \
+ { CRC_END, cid }, \
+ { CRC, cid }
+
+#define NORMAL_SECTOR(cid) \
+ { CRC_CCITT_START, cid }, \
+ { RAW, 0x4489, 3 }, \
+ { MFM, 0xfe, 1 }, \
+ { TRACK_ID }, \
+ { HEAD_ID }, \
+ { SECTOR_ID }, \
+ { SIZE_ID }, \
+ { CRC_END, cid }, \
+ { CRC, cid }, \
+ { MFM, 0x4e, 22 }, \
+ { MFM, 0x00, 12 }, \
+ { CRC_CCITT_START, cid+1 }, \
+ { RAW, 0x4489, 3 }, \
+ { MFM, 0xfb, 1 }, \
+ { SECTOR_DATA, -1 }, \
+ { CRC_END, cid+1 }, \
+ { CRC, cid+1 }
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_9[] = {
+ { MFM, 0x4e, 501 },
+ { MFM, 0x00, 12 },
+
+ SECTOR_42_HEADER(1),
+
+ { MFM, 0x4e, 22 },
+ { MFM, 0x00, 12 },
+
+ { SECTOR_LOOP_START, 1, 9 },
+ NORMAL_SECTOR(2),
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ { SECTOR_LOOP_END },
+
+ SECTOR_42_HEADER(4),
+
+ { MFM, 0x4e, 157 },
+
+ { END }
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_0[] = {
+ { MFM, 0x4e, 46 },
+ SECTOR_42_HEADER(1),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 10 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END }
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_1[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 10, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 9 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_2[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 9, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 8 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_3[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 8, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 7 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_4[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 7, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 6 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_5[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 6, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 5 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_6[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 5, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 4 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_7[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 4, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 3 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_8[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 3, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 2 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_10_9[] = {
+ { MFM, 0x4e, 20 },
+ { SECTOR_LOOP_START, 2, 10 },
+ { MFM, 0x4e, 40 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(1),
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 26 },
+ SECTOR_42_HEADER(3),
+ { MFM, 0x4e, 5 },
+
+ { SECTOR_LOOP_START, 1, 1 },
+ { MFM, 0x00, 12 },
+ NORMAL_SECTOR(4),
+ { MFM, 0x4e, 40 },
+ { SECTOR_LOOP_END },
+
+ { MFM, 0x4e, 49 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e *const st_gen_format::desc_fcp_10[] = {
+ desc_fcp_10_0,
+ desc_fcp_10_1,
+ desc_fcp_10_2,
+ desc_fcp_10_3,
+ desc_fcp_10_4,
+ desc_fcp_10_5,
+ desc_fcp_10_6,
+ desc_fcp_10_7,
+ desc_fcp_10_8,
+ desc_fcp_10_9,
+};
+
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_0[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_1[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_2[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_3[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_4[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_5[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_6[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_7[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_8[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_9[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+const floppy_image_format_t::desc_e st_gen_format::desc_fcp_11_10[] = {
+ { MFM, 0x4e, 3 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 2, 2 }, NORMAL_SECTOR( 5), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 8, 8 }, NORMAL_SECTOR( 7), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 3, 3 }, NORMAL_SECTOR( 9), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 9, 9 }, NORMAL_SECTOR(11), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 4, 4 }, NORMAL_SECTOR(13), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 10, 10 }, NORMAL_SECTOR(15), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 5, 5 }, NORMAL_SECTOR(17), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 11, 11 }, NORMAL_SECTOR(19), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 6, 6 }, NORMAL_SECTOR(21), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 1, 1 }, NORMAL_SECTOR( 1), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 2 }, { MFM, 0x00, 2 },
+ { SECTOR_LOOP_START, 7, 7 }, NORMAL_SECTOR( 3), { SECTOR_LOOP_END },
+ { MFM, 0x4e, 23 },
+ { END },
+};
+
+
+const floppy_image_format_t::desc_e *const st_gen_format::desc_fcp_11[] = {
+ desc_fcp_11_0,
+ desc_fcp_11_1,
+ desc_fcp_11_2,
+ desc_fcp_11_3,
+ desc_fcp_11_4,
+ desc_fcp_11_5,
+ desc_fcp_11_6,
+ desc_fcp_11_7,
+ desc_fcp_11_8,
+ desc_fcp_11_9,
+ desc_fcp_11_10,
+};