Previous 199869 Revisions Next

r31088 Monday 23rd June, 2014 at 18:18:55 UTC by Wilbert Pol
(MESS) msx.c: Updated bm_012 cartridge to use the tmpz84c015 implementation. (nw)
[src/emu/bus/msx_cart]bm_012.c bm_012.h

trunk/src/emu/bus/msx_cart/bm_012.h
r31087r31088
22#define __MSX_CART_BM_012_H
33
44#include "bus/msx_cart/cartridge.h"
5#include "machine/z80pio.h"
6#include "machine/z80ctc.h"
7#include "machine/z80dart.h"
5#include "cpu/z80/tmpz84c015.h"
86#include "bus/midi/midi.h"
97
108
r31087r31088
2119   virtual machine_config_constructor device_mconfig_additions() const;
2220   virtual const rom_entry *device_rom_region() const;
2321   virtual void device_start();
24   virtual void device_reset();
2522
26   DECLARE_WRITE8_MEMBER(tmpz84c015af_f4_w);
2723   DECLARE_WRITE_LINE_MEMBER(midi_in);
2824
2925private:
30   // TMPZ84C015AF related
31   required_device<z80pio_device> m_tmpz84c015af_pio;
32   required_device<z80ctc_device> m_tmpz84c015af_ctc;
33   required_device<z80dart_device> m_tmpz84c015af_sio;
34   UINT8 m_irq_priority;
35
26   required_device<tmpz84c015_device> m_tmpz84c015af;
3627   required_device<z80pio_device> m_bm012_pio;
3728   required_device<midi_port_device> m_mdthru;
3829};
trunk/src/emu/bus/msx_cart/bm_012.c
r31087r31088
2323msx_cart_bm_012::msx_cart_bm_012(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2424   : device_t(mconfig, MSX_CART_BM_012, "MSX Cartridge - BM-012", tag, owner, clock, "msx_cart_bm_012", __FILE__)
2525   , msx_cart_interface(mconfig, *this)
26   , m_tmpz84c015af_pio(*this, "tmpz84_pio")
27   , m_tmpz84c015af_ctc(*this, "tmpz84_ctc")
28   , m_tmpz84c015af_sio(*this, "tmpz84_sio")
29   , m_irq_priority(0)
26   , m_tmpz84c015af(*this, "tmpz84c015af")
3027   , m_bm012_pio(*this, "bm012_pio")
3128   , m_mdthru(*this, "mdthru")
3229{
r31087r31088
3936ADDRESS_MAP_END
4037
4138
42static ADDRESS_MAP_START( bm_012_io_map, AS_IO, 8, msx_cart_bm_012 )
43   ADDRESS_MAP_UNMAP_HIGH
44   ADDRESS_MAP_GLOBAL_MASK(0xff)
45
46   // 10-13 - CTC channels 0-3
47   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("tmpz84_ctc", z80ctc_device, read, write)
48
49   // 18-1B - SIO
50   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("tmpz84_sio", z80dart_device, ba_cd_r, ba_cd_w)
51
52   // 1C-1F - PIO
53   AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("tmpz84_pio", z80pio_device, read_alt, write_alt)
54
55   // F0-F1 - WDT
56   // F4    - IRQ priority
57   AM_RANGE(0xf4, 0xf4) AM_WRITE(tmpz84c015af_f4_w)
58ADDRESS_MAP_END
59
60
61static const z80_daisy_config bm_012_daisy_chain[] =
62{
63   { "tmpz84_pio" },
64   { "tmpz84_sio" },
65   { "tmpz84_ctc" },
66   { NULL }
67};
68
69
7039static MACHINE_CONFIG_FRAGMENT( msx_cart_bm_012 )
7140   // 12MHz XTAL @ X1
7241   // Toshiba TMPZ84C015AF-6 (@U5) components:
r31087r31088
7645   // - PIO
7746   // - CGC
7847   // - WDT
79   MCFG_CPU_ADD("tmpz84_cpu", Z80, XTAL_12MHz/2)         /* 6 MHz */
48   MCFG_CPU_ADD("tmpz84c015af", TMPZ84C015, XTAL_12MHz/2)         /* 6 MHz */
8049   MCFG_CPU_PROGRAM_MAP(bm_012_memory_map)
81   MCFG_CPU_IO_MAP(bm_012_io_map)
82   MCFG_CPU_CONFIG(bm_012_daisy_chain)
50   // PIO callbacks
51   MCFG_TMPZ84C015_IN_PA_CB(DEVREAD8("bm012_pio", z80pio_device, pa_r))
52   MCFG_TMPZ84C015_OUT_PA_CB(DEVWRITE8("bm012_pio", z80pio_device, pa_w))
53   MCFG_TMPZ84C015_IN_PB_CB(DEVREAD8("bm012_pio", z80pio_device, pb_r))
54   MCFG_TMPZ84C015_OUT_PB_CB(DEVWRITE8("bm012_pio", z80pio_device, pb_w))
55   MCFG_TMPZ84C015_OUT_BRDY_CB(DEVWRITELINE("bm012_pio", z80pio_device, strobe_b))
56   // SIO callbacks
57   MCFG_TMPZ84C015_OUT_TXDA_CB(DEVWRITELINE("mdout", midi_port_device, write_txd))
8358
84   MCFG_DEVICE_ADD("tmpz84_pio", Z80PIO, XTAL_12MHz/2)
85   MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
86   MCFG_Z80PIO_IN_PA_CB(DEVREAD8("bm012_pio", z80pio_device, pa_r))
87   MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("bm012_pio", z80pio_device, pa_w))
88   MCFG_Z80PIO_IN_PB_CB(DEVREAD8("bm012_pio", z80pio_device, pb_r))
89   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("bm012_pio", z80pio_device, pb_w))
90   MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("bm012_pio", z80pio_device, strobe_b))
91
92   MCFG_DEVICE_ADD("tmpz84_ctc", Z80CTC, XTAL_12MHz/2)
93   MCFG_Z80CTC_INTR_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
94
95   MCFG_Z80SIO0_ADD("tmpz84_sio", XTAL_12MHz/2, 0, 0, 0, 0)
96   MCFG_Z80DART_OUT_INT_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
97   MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("mdout", midi_port_device, write_txd))
98
9959   // Sony CXK5864BSP-10L  (8KB ram)
10060   // Sharp LH0081A Z80A-PIO-0 - For communicating between the MSX and the TMP
10161   MCFG_DEVICE_ADD("bm012_pio", Z80PIO, XTAL_3_579545MHz)  // ?????
102   MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("tmpz84_pio", z80pio_device, pa_w))
103   MCFG_Z80PIO_IN_PA_CB(DEVREAD8("tmpz84_pio", z80pio_device, pa_r))
104   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("tmpz84_pio", z80pio_device, pb_w))
105   MCFG_Z80PIO_IN_PB_CB(DEVREAD8("tmpz84_pio", z80pio_device, pb_r))
106   MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("tmpz84_pio", z80pio_device, strobe_b))
62   MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("tmpz84c015af", tmpz84c015_device, pa_w))
63   MCFG_Z80PIO_IN_PA_CB(DEVREAD8("tmpz84c015af", tmpz84c015_device, pa_r))
64   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("tmpz84c015af", tmpz84c015_device, pb_w))
65   MCFG_Z80PIO_IN_PB_CB(DEVREAD8("tmpz84c015af", tmpz84c015_device, pb_r))
66   MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("tmpz84c015af", tmpz84c015_device, strobe_b))
10767
10868   // MIDI ports
10969   MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
r31087r31088
12282
12383
12484ROM_START( msx_cart_bm_012 )
125   ROM_REGION(0x8000, "tmpz84_cpu", 0)
85   ROM_REGION(0x8000, "tmpz84c015af", 0)
12686   // The rom chip at U4 is a 27256, but it contains the same 8KB duplicated 4 times
12787   ROM_LOAD("midi_v1.00.u4", 0x0, 0x8000, CRC(840c9e74) SHA1(6d07637ad3a61b509221ed4650eed18442371010))
12888ROM_END
r31087r31088
143103}
144104
145105
146void msx_cart_bm_012::device_reset()
147{
148}
149
150
151WRITE8_MEMBER(msx_cart_bm_012::tmpz84c015af_f4_w)
152{
153   m_irq_priority = data;
154}
155
156
157106WRITE_LINE_MEMBER(msx_cart_bm_012::midi_in)
158107{
159108   m_mdthru->write_txd(state);
160   m_tmpz84c015af_sio->rxb_w(state);
109   m_tmpz84c015af->rxb_w(state);
161110}
162111
163112

Previous 199869 Revisions Next


© 1997-2024 The MAME Team