adp.cpp: Add MC68230 to backgamn; clean up driver a little (nw)

This commit is contained in:
AJR 2017-12-17 21:03:03 -05:00
parent 7c4ebe5c11
commit 16cb9d5a87

View File

@ -158,6 +158,7 @@ Quick Jack administration/service mode:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/68230pit.h"
#include "machine/mc68681.h"
#include "machine/microtch.h"
#include "machine/msm6242.h"
@ -176,7 +177,7 @@ public:
: driver_device(mconfig, type, tag),
m_microtouch(*this, "microtouch"),
m_maincpu(*this, "maincpu"),
m_duart(*this, "duart68681"),
m_duart(*this, "duart"),
m_palette(*this, "palette"),
m_in0(*this, "IN0")
{ }
@ -197,7 +198,7 @@ public:
DECLARE_MACHINE_RESET(skattv);
DECLARE_PALETTE_INIT(adp);
DECLARE_PALETTE_INIT(fstation);
DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
IRQ_CALLBACK_MEMBER(duart_iack_handler);
//INTERRUPT_GEN_MEMBER(adp_int);
void skattva_nvram_init(nvram_device &nvram, void *base, size_t size);
};
@ -226,9 +227,9 @@ void adp_state::skattva_nvram_init(nvram_device &nvram, void *base, size_t size)
***************************************************************************/
WRITE_LINE_MEMBER(adp_state::duart_irq_handler)
IRQ_CALLBACK_MEMBER(adp_state::duart_iack_handler)
{
m_maincpu->set_input_line_and_vector(4, state, m_duart->get_irq_vector());
return m_duart->get_irq_vector();
}
MACHINE_START_MEMBER(adp_state,skattv)
@ -292,41 +293,42 @@ WRITE16_MEMBER(adp_state::input_w)
static ADDRESS_MAP_START( skattv_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( skattva_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w) // bad
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w) // bad
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status_r, address_w) // bad
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data_r, data_w) // bad
AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( backgamn_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x100000, 0x10003f) AM_RAM
AM_RANGE(0x200000, 0x20003f) AM_RAM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x100000, 0x10003f) AM_DEVREADWRITE8("pit", pit68230_device, read, write, 0x00ff)
AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0x300000, 0x300003) AM_NOP // ?
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("nvram") //work RAM
AM_RANGE(0x600006, 0x600007) AM_NOP //(r) is discarded (watchdog?)
ADDRESS_MAP_END
@ -334,24 +336,24 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( funland_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data_r, data_w)
AM_RANGE(0x800088, 0x800089) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
AM_RANGE(0x80008a, 0x80008b) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
AM_RANGE(0x80008c, 0x80008d) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
@ -539,17 +541,17 @@ static MACHINE_CONFIG_START( quickjac )
MCFG_CPU_ADD("maincpu", M68000, 8000000)
MCFG_CPU_PROGRAM_MAP(quickjac_mem)
//MCFG_CPU_VBLANK_INT_DRIVER("screen", adp_state, adp_int)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(adp_state, duart_iack_handler)
MCFG_MACHINE_START_OVERRIDE(adp_state,skattv)
MCFG_MACHINE_RESET_OVERRIDE(adp_state,skattv)
MCFG_DEVICE_ADD( "duart68681", MC68681, XTAL_8_664MHz / 2 )
MCFG_MC68681_IRQ_CALLBACK(WRITELINE(adp_state, duart_irq_handler))
MCFG_DEVICE_ADD( "duart", MC68681, XTAL_8_664MHz / 2 )
MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("microtouch", microtouch_device, rx))
MCFG_MC68681_INPORT_CALLBACK(IOPORT("DSW1"))
MCFG_MICROTOUCH_ADD( "microtouch", 9600, DEVWRITELINE("duart68681", mc68681_device, rx_a_w) )
MCFG_MICROTOUCH_ADD( "microtouch", 9600, DEVWRITELINE("duart", mc68681_device, rx_a_w) )
MCFG_NVRAM_ADD_NO_FILL("nvram")
@ -561,14 +563,14 @@ static MACHINE_CONFIG_START( quickjac )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("acrtc", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x10)
MCFG_PALETTE_INIT_OWNER(adp_state,adp)
MCFG_HD63484_ADD("hd63484", 0, adp_hd63484_map)
MCFG_HD63484_ADD("acrtc", 0, adp_hd63484_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, 3686400/2)
@ -593,13 +595,15 @@ static MACHINE_CONFIG_DERIVED( backgamn, skattv )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(backgamn_mem)
MCFG_DEVICE_ADD("pit", PIT68230, 800000)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fashiong, skattv )
MCFG_DEVICE_MODIFY("hd63484")
MCFG_DEVICE_MODIFY("acrtc")
MCFG_HD63484_ADDRESS_MAP(fashiong_hd63484_map)
MACHINE_CONFIG_END
@ -615,7 +619,7 @@ static MACHINE_CONFIG_DERIVED( funland, quickjac )
MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x100)
MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
MCFG_DEVICE_MODIFY("hd63484")
MCFG_DEVICE_MODIFY("acrtc")
MCFG_HD63484_ADDRESS_MAP(fstation_hd63484_map)
MACHINE_CONFIG_END