mirror of
https://github.com/holub/mame
synced 2025-07-06 02:18:09 +03:00
c64: Emulated the TIB Disc Drive DD-001 cartridge. [Curt Coder]
New working software list items ------------------------------- c64_cart: Disc Drive DD-001 (v1.1) [Steve Gray], Disc Drive DD-001 (v1.0) [LHS] c64_flop_misc: Games and Utility Disc (v1.1) [LHS]
This commit is contained in:
parent
cb09c70bcb
commit
27fdce1f58
@ -7146,6 +7146,36 @@ license:CC0-1.0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="tibdd001">
|
||||
<description>Disc Drive DD-001 (v1.1)</description>
|
||||
<year>1991</year>
|
||||
<publisher>TIB</publisher>
|
||||
<part name="cart" interface="c64_cart">
|
||||
<feature name="slot" value="tibdd001" />
|
||||
<feature name="game" value="1" />
|
||||
<feature name="exrom" value="0" />
|
||||
|
||||
<dataarea name="roml" size="0x2000">
|
||||
<rom name="rom_dd001_v1.1.bin" size="0x2000" crc="d266b628" sha1="24d178560dad3d955ebbe15f4274d966e031142d"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="tibdd001a" cloneof="tibdd001">
|
||||
<description>Disc Drive DD-001 (v1.0)</description>
|
||||
<year>1991</year>
|
||||
<publisher>TIB</publisher>
|
||||
<part name="cart" interface="c64_cart">
|
||||
<feature name="slot" value="tibdd001" />
|
||||
<feature name="game" value="1" />
|
||||
<feature name="exrom" value="0" />
|
||||
|
||||
<dataarea name="roml" size="0x2000">
|
||||
<rom name="rom_dd001_v1.0.bin" size="0x2000" crc="58f83983" sha1="f18cfb42c8e2c9152e18b129d01408f702271363"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Dummy cartridge entries to allow requirement mappings from c64_flop -->
|
||||
|
||||
<software name="cpm">
|
||||
|
@ -841,6 +841,19 @@ license:CC0-1.0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="tibdd001">
|
||||
<description>Games and Utility Disc (v1.1)</description>
|
||||
<year>1991</year>
|
||||
<publisher>TIB</publisher>
|
||||
<sharedfeat name="requirement" value="c64_cart:tibdd001"/>
|
||||
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="dd001boot.img" size="737280" crc="a91cabd1" sha1="6a430a246978f9af418e5c6db618e5cb85affd4e"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Demos -->
|
||||
|
||||
<software name="2ndreal">
|
||||
|
@ -986,6 +986,8 @@ if (BUSES["C64"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/c64/swiftlink.h",
|
||||
MAME_DIR .. "src/devices/bus/c64/system3.cpp",
|
||||
MAME_DIR .. "src/devices/bus/c64/system3.h",
|
||||
MAME_DIR .. "src/devices/bus/c64/tibdd001.cpp",
|
||||
MAME_DIR .. "src/devices/bus/c64/tibdd001.h",
|
||||
MAME_DIR .. "src/devices/bus/c64/tdos.cpp",
|
||||
MAME_DIR .. "src/devices/bus/c64/tdos.h",
|
||||
MAME_DIR .. "src/devices/bus/c64/turbo232.cpp",
|
||||
|
@ -1932,6 +1932,18 @@ if opt_tool(FORMATS, "TI99_DSK") then
|
||||
}
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
--
|
||||
--@src/lib/formats/tibdd001_dsk.h,FORMATS["TIBDD001_DSK"] = true
|
||||
--------------------------------------------------
|
||||
|
||||
if opt_tool(FORMATS, "TIBDD001_DSK") then
|
||||
files {
|
||||
MAME_DIR.. "src/lib/formats/tibdd001_dsk.cpp",
|
||||
MAME_DIR.. "src/lib/formats/tibdd001_dsk.h",
|
||||
}
|
||||
end
|
||||
|
||||
--------------------------------------------------
|
||||
--
|
||||
--@src/lib/formats/tiki100_dsk.h,FORMATS["TIKI100_DSK"] = true
|
||||
|
@ -349,6 +349,7 @@ void c64_expansion_slot_device::set_passthrough()
|
||||
#include "sw8k.h"
|
||||
#include "swiftlink.h"
|
||||
#include "system3.h"
|
||||
#include "tibdd001.h"
|
||||
#include "tdos.h"
|
||||
#include "turbo232.h"
|
||||
#include "vizastar.h"
|
||||
@ -381,6 +382,7 @@ void c64_expansion_cards(device_slot_interface &device)
|
||||
device.option_add("speakez", C64_SPEAKEASY);
|
||||
device.option_add("supercpu", C64_SUPERCPU);
|
||||
device.option_add("swiftlink", C64_SWIFTLINK);
|
||||
device.option_add("tibdd001", C64_TIB_DD_001);
|
||||
device.option_add("turbo232", C64_TURBO232);
|
||||
device.option_add("buscard", C64_BUSCARD);
|
||||
device.option_add("buscard2", C64_BUSCARD2);
|
||||
|
162
src/devices/bus/c64/tibdd001.cpp
Normal file
162
src/devices/bus/c64/tibdd001.cpp
Normal file
@ -0,0 +1,162 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIB Disc Drive DD-001 cartridge emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
/*
|
||||
|
||||
PCB Layout
|
||||
----------
|
||||
|
||||
|---------------|
|
||||
| CN1 |
|
||||
| |
|
||||
| FDC |
|
||||
| 16MHz|
|
||||
| LS00 LS00 |
|
||||
| ROM |
|
||||
| |
|
||||
|||||||||||||||
|
||||
|
||||
Notes: (All ICs shown)
|
||||
FDC - GoldStar GM82C765B Floppy Disk Subsystem Controller
|
||||
ROM - Texas Instruments TMS2764JL-25 8Kx8 EPROM
|
||||
CN1 - floppy connector
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "tibdd001.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS/CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define GM82C765B_TAG "u4"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(C64_TIB_DD_001, c64_tib_dd_001_device, "c64_tibdd001", "C64 TIB Disc Drive DD-001 cartridge")
|
||||
|
||||
|
||||
static void tib_dd_001_floppies(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("35dd", FLOPPY_35_DD);
|
||||
}
|
||||
|
||||
void c64_tib_dd_001_device::floppy_formats(format_registration &fr)
|
||||
{
|
||||
fr.add_mfm_containers();
|
||||
fr.add(FLOPPY_TIB_DD_001_FORMAT);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void c64_tib_dd_001_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
WD37C65C(config, m_fdc, 16'000'000);
|
||||
m_fdc->hdl_wr_callback().set(FUNC(c64_tib_dd_001_device::motor_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, m_floppy, tib_dd_001_floppies, "35dd", c64_tib_dd_001_device::floppy_formats, true).enable_sound(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// c64_tib_dd_001_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
c64_tib_dd_001_device::c64_tib_dd_001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, C64_TIB_DD_001, tag, owner, clock),
|
||||
device_c64_expansion_card_interface(mconfig, *this),
|
||||
m_fdc(*this, GM82C765B_TAG),
|
||||
m_floppy(*this, GM82C765B_TAG":0")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void c64_tib_dd_001_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void c64_tib_dd_001_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// c64_cd_r - cartridge data read
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t c64_tib_dd_001_device::c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
|
||||
{
|
||||
if (!roml)
|
||||
{
|
||||
data = m_roml[offset & 0x1fff];
|
||||
}
|
||||
|
||||
if (sphi2 && !io1)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
{
|
||||
data = m_fdc->fifo_r();
|
||||
}
|
||||
else
|
||||
{
|
||||
data = m_fdc->msr_r();
|
||||
}
|
||||
}
|
||||
|
||||
if (sphi2 && !io2)
|
||||
{
|
||||
m_fdc->reset();
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// c64_cd_w - cartridge data write
|
||||
//-------------------------------------------------
|
||||
|
||||
void c64_tib_dd_001_device::c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2)
|
||||
{
|
||||
if (sphi2 && !io1)
|
||||
{
|
||||
if (BIT(offset, 0))
|
||||
{
|
||||
m_fdc->fifo_w(data);
|
||||
}
|
||||
}
|
||||
|
||||
if (sphi2 && !io2)
|
||||
{
|
||||
m_fdc->reset();
|
||||
}
|
||||
}
|
61
src/devices/bus/c64/tibdd001.h
Normal file
61
src/devices/bus/c64/tibdd001.h
Normal file
@ -0,0 +1,61 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
TIB Disc Drive DD-001 cartridge emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef MAME_BUS_C64_TIB_DD_001_H
|
||||
#define MAME_BUS_C64_TIB_DD_001_H
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "exp.h"
|
||||
#include "formats/tibdd001_dsk.h"
|
||||
#include "imagedev/floppy.h"
|
||||
#include "machine/upd765.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> c64_tib_dd_001_device
|
||||
|
||||
class c64_tib_dd_001_device : public device_t,
|
||||
public device_c64_expansion_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
c64_tib_dd_001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
// device_c64_expansion_card_interface overrides
|
||||
virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override;
|
||||
virtual void c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override;
|
||||
|
||||
private:
|
||||
static void floppy_formats(format_registration &fr);
|
||||
|
||||
required_device<upd765_family_device> m_fdc;
|
||||
required_device<floppy_connector> m_floppy;
|
||||
|
||||
void motor_w(int state) { m_floppy->get_device()->mon_w(!state); }
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(C64_TIB_DD_001, c64_tib_dd_001_device)
|
||||
|
||||
|
||||
#endif // MAME_BUS_C64_TIB_DD_001_H
|
40
src/lib/formats/tibdd001_dsk.cpp
Normal file
40
src/lib/formats/tibdd001_dsk.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/*********************************************************************
|
||||
|
||||
formats/tibdd001_dsk.cpp
|
||||
|
||||
TIB Disc Drive DD-001 disk images
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
#include "formats/tibdd001_dsk.h"
|
||||
|
||||
tib_dd_001_format::tib_dd_001_format() : upd765_format(formats)
|
||||
{
|
||||
}
|
||||
|
||||
const char *tib_dd_001_format::name() const
|
||||
{
|
||||
return "tibdd001";
|
||||
}
|
||||
|
||||
const char *tib_dd_001_format::description() const
|
||||
{
|
||||
return "TIB Disc Drive DD-001 floppy disk image";
|
||||
}
|
||||
|
||||
const char *tib_dd_001_format::extensions() const
|
||||
{
|
||||
return "img";
|
||||
}
|
||||
|
||||
const tib_dd_001_format::format tib_dd_001_format::formats[] = {
|
||||
{ /* 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
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
const tib_dd_001_format FLOPPY_TIB_DD_001_FORMAT;
|
33
src/lib/formats/tibdd001_dsk.h
Normal file
33
src/lib/formats/tibdd001_dsk.h
Normal file
@ -0,0 +1,33 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/*********************************************************************
|
||||
|
||||
formats/tibdd001_dsk.h
|
||||
|
||||
TIB Disc Drive DD-001 disk images
|
||||
|
||||
*********************************************************************/
|
||||
#ifndef MAME_FORMATS_TIB_DD_001_DSK_H
|
||||
#define MAME_FORMATS_TIB_DD_001_DSK_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "flopimg.h"
|
||||
#include "upd765_dsk.h"
|
||||
|
||||
class tib_dd_001_format : public upd765_format
|
||||
{
|
||||
public:
|
||||
tib_dd_001_format();
|
||||
|
||||
virtual const char *name() const override;
|
||||
virtual const char *description() const override;
|
||||
virtual const char *extensions() const override;
|
||||
|
||||
private:
|
||||
static const format formats[];
|
||||
};
|
||||
|
||||
extern const tib_dd_001_format FLOPPY_TIB_DD_001_FORMAT;
|
||||
|
||||
#endif // MAME_FORMATS_TIB_DD_001_DSK_H
|
Loading…
Reference in New Issue
Block a user