From 6f47f6617f7555526b6c4e4758192ff683f64c2d Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Wed, 7 Aug 2013 21:15:15 +0000 Subject: [PATCH] Added raw formats for PC-98 --- .gitattributes | 2 + hash/pc98.xml | 2 +- src/lib/formats/pc98_dsk.c | 87 ++++++++++++++++++++++++++++++++++++++ src/lib/formats/pc98_dsk.h | 33 +++++++++++++++ src/lib/lib.mak | 1 + src/mess/drivers/pc9801.c | 2 + 6 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 src/lib/formats/pc98_dsk.c create mode 100644 src/lib/formats/pc98_dsk.h diff --git a/.gitattributes b/.gitattributes index 0c2f9cf63cd..cc424467fe2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2101,6 +2101,8 @@ src/lib/formats/p6001_cas.c svneol=native#text/plain src/lib/formats/p6001_cas.h svneol=native#text/plain src/lib/formats/pasti_dsk.c svneol=native#text/plain src/lib/formats/pasti_dsk.h svneol=native#text/plain +src/lib/formats/pc98_dsk.c svneol=native#text/plain +src/lib/formats/pc98_dsk.h svneol=native#text/plain src/lib/formats/pc98fdi_dsk.c svneol=native#text/plain src/lib/formats/pc98fdi_dsk.h svneol=native#text/plain src/lib/formats/pc_dsk.c svneol=native#text/plain diff --git a/hash/pc98.xml b/hash/pc98.xml index d0e48ab74ec..64815783af6 100644 --- a/hash/pc98.xml +++ b/hash/pc98.xml @@ -9230,7 +9230,7 @@ How to load this? <unknown> - + diff --git a/src/lib/formats/pc98_dsk.c b/src/lib/formats/pc98_dsk.c new file mode 100644 index 00000000000..1f4352bf455 --- /dev/null +++ b/src/lib/formats/pc98_dsk.c @@ -0,0 +1,87 @@ +/********************************************************************* + + formats/pc98_dsk.c + + PC-98 disk images + +*********************************************************************/ + +#include + +#include "formats/pc98_dsk.h" + + +/* ----------------------------------------------------------------------- */ + +pc98_format::pc98_format() : upd765_format(formats) +{ +} + +const char *pc98_format::name() const +{ + return "pc98"; +} + +const char *pc98_format::description() const +{ + return "PC-98 floppy disk image"; +} + +const char *pc98_format::extensions() const +{ + return "dsk,ima,img,ufi,360"; +} + +const pc98_format::format pc98_format::formats[] = { + { /* 160K 5 1/4 inch double density single sided */ + floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM, + 2000, 8, 40, 1, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 320K 5 1/4 inch double density */ + floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 8, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 180K 5 1/4 inch double density single sided */ + floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM, + 2000, 9, 40, 1, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 360K 5 1/4 inch double density */ + floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 9, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 400K 5 1/4 inch double density - gaps unverified */ + floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 10, 40, 2, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 720K 5 1/4 inch quad density - gaps unverified */ + floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM, + 2000, 9, 80, 2, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 1200K 5 1/4 inch high density */ + floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM, + 1200, 15, 40, 2, 512, {}, 1, {}, 80, 50, 22, 84 + }, + { /* 720K 3 1/2 inch double density */ + floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM, + 2000, 9, 80, 2, 512, {}, 1, {}, 80, 50, 22, 80 + }, + { /* 1200K 3 1/2 inch high density (japanese variant) - gaps unverified */ + floppy_image::FF_35, floppy_image::DSHD, floppy_image::MFM, + 1200, 15, 40, 2, 512, {}, 1, {}, 80, 50, 22, 84 + }, + { /* 1440K 3 1/2 inch high density */ + floppy_image::FF_35, floppy_image::DSHD, floppy_image::MFM, + 1000, 18, 80, 2, 512, {}, 1, {}, 80, 50, 22, 108 + }, + { /* 2880K 3 1/2 inch extended density - gaps unverified */ + floppy_image::FF_35, floppy_image::DSED, floppy_image::MFM, + 500, 36, 80, 2, 512, {}, 1, {}, 80, 50, 41, 80 + }, + { + floppy_image::FF_525, floppy_image::DSHD, floppy_image::MFM, + 1200, 16, 77, 2, 512, {}, 1, {}, 80, 50, 22, 84 + }, + {} +}; + +const floppy_format_type FLOPPY_PC98_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/pc98_dsk.h b/src/lib/formats/pc98_dsk.h new file mode 100644 index 00000000000..50fe38676a6 --- /dev/null +++ b/src/lib/formats/pc98_dsk.h @@ -0,0 +1,33 @@ +/********************************************************************* + + formats/pc98_dsk.h + + PC disk images + +*********************************************************************/ + +#ifndef PC98_DSK_H +#define PC98_DSK_H + +#include "flopimg.h" +#include "upd765_dsk.h" + +/**************************************************************************/ + + +class pc98_format : public upd765_format +{ +public: + pc98_format(); + + virtual const char *name() const; + virtual const char *description() const; + virtual const char *extensions() const; + +private: + static const format formats[]; +}; + +extern const floppy_format_type FLOPPY_PC98_FORMAT; + +#endif /* PC_DSK_H */ diff --git a/src/lib/lib.mak b/src/lib/lib.mak index a5317f61494..38e23f6e66e 100644 --- a/src/lib/lib.mak +++ b/src/lib/lib.mak @@ -163,6 +163,7 @@ FORMATSOBJS = \ $(LIBOBJ)/formats/p6001_cas.o \ $(LIBOBJ)/formats/pasti_dsk.o \ $(LIBOBJ)/formats/pc_dsk.o \ + $(LIBOBJ)/formats/pc98_dsk.o \ $(LIBOBJ)/formats/pc98fdi_dsk.o \ $(LIBOBJ)/formats/pmd_cas.o \ $(LIBOBJ)/formats/primoptp.o \ diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index 327186fa8f7..a14e772a4e6 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -411,6 +411,7 @@ Keyboard TX commands: #include "machine/ram.h" +#include "formats/pc98_dsk.h" #include "formats/pc98fdi_dsk.h" #include "machine/pc9801_26.h" @@ -3624,6 +3625,7 @@ INTERRUPT_GEN_MEMBER(pc9801_state::pc9801_vrtc_irq) FLOPPY_FORMATS_MEMBER( pc9801_state::floppy_formats ) + FLOPPY_PC98_FORMAT, FLOPPY_PC98FDI_FORMAT FLOPPY_FORMATS_END