mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
(MESS) super6: Refactored to modern floppy system. (nw)
(MESS) super6: Added original BIOS. [Al Kossow]
This commit is contained in:
parent
65ce18899b
commit
17ad25efff
@ -1,11 +1,3 @@
|
||||
/*
|
||||
|
||||
ADC Super Six SBC
|
||||
|
||||
Skeleton driver
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
TODO:
|
||||
@ -199,7 +191,7 @@ READ8_MEMBER( super6_state::fdc_r )
|
||||
|
||||
m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, ASSERT_LINE);
|
||||
|
||||
return !wd17xx_intrq_r(m_fdc) << 7;
|
||||
return !m_fdc->intrq_r() << 7;
|
||||
}
|
||||
|
||||
|
||||
@ -225,15 +217,19 @@ WRITE8_MEMBER( super6_state::fdc_w )
|
||||
*/
|
||||
|
||||
// disk drive select
|
||||
wd17xx_set_drive(m_fdc, data & 0x03);
|
||||
floppy_mon_w(m_floppy0, 0);
|
||||
floppy_mon_w(m_floppy1, 0);
|
||||
floppy_image_device *m_floppy = NULL;
|
||||
|
||||
if (BIT(data, 0)) m_floppy = m_floppy0->get_device();
|
||||
if (BIT(data, 1)) m_floppy = m_floppy1->get_device();
|
||||
|
||||
m_fdc->set_floppy(m_floppy);
|
||||
if (m_floppy) m_floppy->mon_w(0);
|
||||
|
||||
// head select
|
||||
wd17xx_set_side(m_fdc, BIT(data, 2));
|
||||
if (m_floppy) m_floppy->ss_w(BIT(data, 2));
|
||||
|
||||
// disk density
|
||||
wd17xx_dden_w(m_fdc, !BIT(data, 3));
|
||||
m_fdc->dden_w(!BIT(data, 3));
|
||||
}
|
||||
|
||||
|
||||
@ -285,7 +281,7 @@ static ADDRESS_MAP_START( super6_io, AS_IO, 8, super6_state )
|
||||
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY(Z80DART_TAG, z80dart_ba_cd_r, z80dart_ba_cd_w)
|
||||
AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
|
||||
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
|
||||
AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE_LEGACY(WD2793_TAG, wd17xx_r, wd17xx_w)
|
||||
AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_t, read, write)
|
||||
AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_DEVREADWRITE_LEGACY(Z80DMA_TAG, z80dma_r, z80dma_w)
|
||||
AM_RANGE(0x14, 0x14) AM_READWRITE(fdc_r, fdc_w)
|
||||
AM_RANGE(0x15, 0x15) AM_READ_PORT("J7") AM_WRITE(s100_w)
|
||||
@ -349,7 +345,7 @@ INPUT_PORTS_END
|
||||
// Z80CTC_INTERFACE( ctc_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(super6_state::ctc_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( super6_state::ctc_tick )
|
||||
{
|
||||
m_ctc->trg0(1);
|
||||
m_ctc->trg0(0);
|
||||
@ -448,49 +444,34 @@ static COM8116_INTERFACE( brg_intf )
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// floppy_interface super6_floppy_interface
|
||||
// floppy_format_type floppy_formats
|
||||
//-------------------------------------------------
|
||||
|
||||
static const floppy_interface super6_floppy_interface =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
FLOPPY_STANDARD_5_25_DSHD,
|
||||
LEGACY_FLOPPY_OPTIONS_NAME(default),
|
||||
"floppy_5_25",
|
||||
const floppy_format_type super6_state::floppy_formats[] = {
|
||||
FLOPPY_IMD_FORMAT,
|
||||
FLOPPY_MFM_FORMAT,
|
||||
FLOPPY_MFI_FORMAT,
|
||||
NULL
|
||||
};
|
||||
|
||||
static SLOT_INTERFACE_START( super6_floppies )
|
||||
SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// wd17xx_interface fdc_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER( super6_state::intrq_w )
|
||||
void super6_state::fdc_intrq_w(bool state)
|
||||
{
|
||||
if (state) m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
|
||||
|
||||
m_ctc->trg3(!state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( super6_state::drq_w )
|
||||
void super6_state::fdc_drq_w(bool state)
|
||||
{
|
||||
if (state) m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
|
||||
|
||||
m_dma->rdy_w(state);
|
||||
}
|
||||
|
||||
static const wd17xx_interface fdc_intf =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_LINE_MEMBER(super6_state, intrq_w),
|
||||
DEVCB_DRIVER_LINE_MEMBER(super6_state, drq_w),
|
||||
{ FLOPPY_0, FLOPPY_1, NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// z80_daisy_config super6_daisy_chain
|
||||
@ -509,14 +490,14 @@ static const z80_daisy_config super6_daisy_chain[] =
|
||||
// GENERIC_TERMINAL_INTERFACE( terminal_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(super6_state::dummy_w)
|
||||
WRITE8_MEMBER( super6_state::dummy_w )
|
||||
{
|
||||
// handled in Z80DART_INTERFACE
|
||||
}
|
||||
|
||||
static GENERIC_TERMINAL_INTERFACE( terminal_intf )
|
||||
{
|
||||
DEVCB_DRIVER_MEMBER(super6_state,dummy_w)
|
||||
DEVCB_DRIVER_MEMBER(super6_state, dummy_w)
|
||||
};
|
||||
|
||||
|
||||
@ -531,6 +512,10 @@ static GENERIC_TERMINAL_INTERFACE( terminal_intf )
|
||||
|
||||
void super6_state::machine_start()
|
||||
{
|
||||
// floppy callbacks
|
||||
m_fdc->setup_intrq_cb(wd2793_t::line_cb(FUNC(super6_state::fdc_intrq_w), this));
|
||||
m_fdc->setup_drq_cb(wd2793_t::line_cb(FUNC(super6_state::fdc_drq_w), this));
|
||||
|
||||
// state saving
|
||||
save_item(NAME(m_s100));
|
||||
save_item(NAME(m_bank0));
|
||||
@ -572,9 +557,10 @@ static MACHINE_CONFIG_START( super6, super6_state )
|
||||
MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_24MHz/4, dart_intf)
|
||||
MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_24MHz/6, dma_intf)
|
||||
MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_24MHz/4, pio_intf)
|
||||
MCFG_WD2793_ADD(WD2793_TAG, fdc_intf)
|
||||
MCFG_WD2793x_ADD(WD2793_TAG, 1000000)
|
||||
MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, brg_intf)
|
||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(super6_floppy_interface)
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", super6_floppies, "525dd", NULL, super6_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", super6_floppies, NULL, NULL, super6_state::floppy_formats)
|
||||
MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 4800)
|
||||
|
||||
// internal ram
|
||||
@ -597,7 +583,11 @@ MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( super6 )
|
||||
ROM_REGION( 0x800, Z80_TAG, 0 )
|
||||
ROM_LOAD( "digitex monitor 1.2a 6oct1983.u29", 0x000, 0x800, CRC(a4c33ce4) SHA1(46dde43ea51d295f2b3202c2d0e1883bde1a8da7) )
|
||||
ROM_DEFAULT_BIOS( "v36" )
|
||||
ROM_SYSTEM_BIOS( 0, "v36", "ADC S6 v3.6" )
|
||||
ROMX_LOAD( "adcs6_v3.6.u29", 0x000, 0x800, CRC(386fd22a) SHA1(9c177990aa180ab93be9c4641e92ae934627e661), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "v12", "Digitex Monitor v1.2a" )
|
||||
ROMX_LOAD( "digitex monitor 1.2a 6oct1983.u29", 0x000, 0x800, CRC(a4c33ce4) SHA1(46dde43ea51d295f2b3202c2d0e1883bde1a8da7), ROM_BIOS(2) )
|
||||
|
||||
ROM_REGION( 0x800, "plds", 0 )
|
||||
ROM_LOAD( "pal16l8.u16", 0x000, 0x800, NO_DUMP )
|
||||
|
@ -3,11 +3,12 @@
|
||||
#ifndef __SUPER6__
|
||||
#define __SUPER6__
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/z80/z80daisy.h"
|
||||
#include "formats/basicdsk.h"
|
||||
#include "formats/hxcmfm_dsk.h"
|
||||
#include "formats/imd_dsk.h"
|
||||
#include "formats/mfi_dsk.h"
|
||||
#include "imagedev/flopdrv.h"
|
||||
#include "machine/com8116.h"
|
||||
#include "machine/z80ctc.h"
|
||||
@ -16,7 +17,7 @@
|
||||
#include "machine/z80pio.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/terminal.h"
|
||||
#include "machine/wd17xx.h"
|
||||
#include "machine/wd1772.h"
|
||||
|
||||
#define Z80_TAG "u30"
|
||||
#define Z80CTC_TAG "u20"
|
||||
@ -41,8 +42,8 @@ public:
|
||||
m_fdc(*this, WD2793_TAG),
|
||||
m_brg(*this, BR1945_TAG),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_floppy0(*this, FLOPPY_0),
|
||||
m_floppy1(*this, FLOPPY_1),
|
||||
m_floppy0(*this, WD2793_TAG":0"),
|
||||
m_floppy1(*this, WD2793_TAG":1"),
|
||||
m_terminal(*this, TERMINAL_TAG)
|
||||
{ }
|
||||
|
||||
@ -51,11 +52,11 @@ public:
|
||||
required_device<z80dart_device> m_dart;
|
||||
required_device<z80dma_device> m_dma;
|
||||
required_device<z80pio_device> m_pio;
|
||||
required_device<device_t> m_fdc;
|
||||
required_device<wd2793_t> m_fdc;
|
||||
required_device<com8116_device> m_brg;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<device_t> m_floppy0;
|
||||
required_device<device_t> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<serial_terminal_device> m_terminal;
|
||||
|
||||
virtual void machine_start();
|
||||
@ -68,8 +69,9 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( bank1_w );
|
||||
DECLARE_WRITE8_MEMBER( baud_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( fr_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( intrq_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( drq_w );
|
||||
void fdc_intrq_w(bool state);
|
||||
void fdc_drq_w(bool state);
|
||||
static const floppy_format_type floppy_formats[];
|
||||
|
||||
void bankswitch();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user