mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
mbc55x: updated to use the new wd fdc
This commit is contained in:
parent
64a8916420
commit
3e82eead53
@ -32,12 +32,6 @@ const unsigned char mbc55x_palette[SCREEN_NO_COLOURS][3] =
|
||||
{ 0x80,0x80,0x80 }, /* light grey */
|
||||
};
|
||||
|
||||
static const floppy_interface mbc55x_floppy_interface =
|
||||
{
|
||||
FLOPPY_STANDARD_5_25_DSSD_35,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(pc),
|
||||
"floppy_5_25"
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START(mbc55x_mem, AS_PROGRAM, 8, mbc55x_state)
|
||||
AM_RANGE( 0x00000, 0x0FFFF ) AM_RAMBANK(RAM_BANK00_TAG)
|
||||
@ -224,6 +218,23 @@ PALETTE_INIT_MEMBER(mbc55x_state, mbc55x)
|
||||
}
|
||||
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( mbc55x_state::floppy_formats )
|
||||
FLOPPY_PC_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
|
||||
// MBC-550 : 1 x 5.25" disk-drive (160 KB)
|
||||
// MBC-555 : 2 x 5.25" disk-drive (160 KB)
|
||||
// MBC-555-2 : 2 x 5.25" disk-drive (360 KB)
|
||||
// MBC-555-3 : 2 x 5.25" disk-drive (720 KB)
|
||||
|
||||
static SLOT_INTERFACE_START( mbc55x_floppies )
|
||||
SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
|
||||
SLOT_INTERFACE("dd", FLOPPY_525_DD)
|
||||
SLOT_INTERFACE("qd", FLOPPY_525_QD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( mbc55x, mbc55x_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD(MAINCPU_TAG, I8088, 3600000)
|
||||
@ -281,13 +292,12 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state )
|
||||
MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(mbc55x_state, vid_vsync_changed))
|
||||
|
||||
/* Backing storage */
|
||||
MCFG_DEVICE_ADD(FDC_TAG, FD1793, 0)
|
||||
MCFG_WD17XX_DEFAULT_DRIVE4_TAGS
|
||||
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(mbc55x_state, mbc55x_fdc_intrq_w))
|
||||
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(mbc55x_state, mbc55x_fdc_drq_w))
|
||||
MCFG_WD17XX_DDEN_CALLBACK(GND)
|
||||
MCFG_FD1793x_ADD(FDC_TAG, XTAL_1MHz)
|
||||
|
||||
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(mbc55x_floppy_interface)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", mbc55x_floppies, "qd", mbc55x_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", mbc55x_floppies, "qd", mbc55x_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":2", mbc55x_floppies, "", mbc55x_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", mbc55x_floppies, "", mbc55x_state::floppy_formats)
|
||||
|
||||
/* Software list */
|
||||
MCFG_SOFTWARE_LIST_ADD("disk_list","mbc55x")
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/pit8253.h"
|
||||
#include "machine/pic8259.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "sound/speaker.h"
|
||||
#include "video/mc6845.h"
|
||||
@ -98,19 +98,29 @@ public:
|
||||
m_ppi(*this, PPI8255_TAG),
|
||||
m_pic(*this, PIC8259_TAG),
|
||||
m_fdc(*this, FDC_TAG),
|
||||
m_floppy0(*this, FDC_TAG ":0"),
|
||||
m_floppy1(*this, FDC_TAG ":1"),
|
||||
m_floppy2(*this, FDC_TAG ":2"),
|
||||
m_floppy3(*this, FDC_TAG ":3"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_palette(*this, "palette")
|
||||
{
|
||||
}
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mc6845_device> m_crtc;
|
||||
required_device<i8251_device> m_kb_uart;
|
||||
required_device<pit8253_device> m_pit;
|
||||
required_device<i8255_device> m_ppi;
|
||||
required_device<pic8259_device> m_pic;
|
||||
required_device<fd1793_device> m_fdc;
|
||||
required_device<fd1793_t> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
required_device<floppy_connector> m_floppy3;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<palette_device> m_palette;
|
||||
|
@ -72,8 +72,25 @@ WRITE8_MEMBER( mbc55x_state::mbc55x_ppi_portb_w )
|
||||
|
||||
WRITE8_MEMBER( mbc55x_state::mbc55x_ppi_portc_w )
|
||||
{
|
||||
m_fdc->set_drive((data & 0x03));
|
||||
m_fdc->set_side(BIT(data, 2));
|
||||
floppy_image_device *floppy = NULL;
|
||||
|
||||
switch (data & 0x03)
|
||||
{
|
||||
case 0: floppy = m_floppy0->get_device(); break;
|
||||
case 1: floppy = m_floppy1->get_device(); break;
|
||||
case 2: floppy = m_floppy2->get_device(); break;
|
||||
case 3: floppy = m_floppy3->get_device(); break;
|
||||
}
|
||||
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
if (floppy)
|
||||
{
|
||||
floppy->mon_w(0);
|
||||
floppy->ss_w(BIT(data, 2));
|
||||
}
|
||||
|
||||
printf("port c %02x\n", data);
|
||||
}
|
||||
|
||||
/* Serial port USART, unimplemented as yet */
|
||||
|
Loading…
Reference in New Issue
Block a user