Previous 199869 Revisions Next

r30879 Saturday 7th June, 2014 at 19:03:13 UTC by Wilbert Pol
(MESS) msx.c: Added preliminary support for the Midisaurus BM-012 Midi interface cartridge (nw)
[src/emu/bus]bus.mak
[src/emu/bus/msx_cart]bm_012.c* bm_012.h* cartridge.c
[src/emu/machine]z80pio.c z80pio.h

trunk/src/emu/machine/z80pio.c
r30878r30879
660660               // next word is mask control
661661               m_next_control_word = MASK;
662662            }
663            else
664            {
665               // set interrupt enable
666               m_ie = BIT(m_icw, 7) ? true : false;
667               check_interrupts();
668            }
663669            break;
664670
665671         case 0x03: // set interrupt enable flip-flop
trunk/src/emu/machine/z80pio.h
r30878r30879
123123   void port_a_write(UINT8 data) { port_write(PORT_A, data); }
124124   void port_b_write(UINT8 data) { port_write(PORT_B, data); }
125125   DECLARE_WRITE8_MEMBER( pa_w ) { port_a_write(data); }
126   DECLARE_READ8_MEMBER( pa_r ) { return port_a_read(); }
127   DECLARE_WRITE8_MEMBER( pb_w ) { port_b_write(data); }
128   DECLARE_READ8_MEMBER( pb_r ) { return port_b_read(); }
126129
127130   // standard read/write, with C/D in bit 1, B/A in bit 0
128131   DECLARE_READ8_MEMBER( read );
trunk/src/emu/bus/bus.mak
r30878r30879
409409OBJDIRS += $(BUSOBJ)/msx_cart
410410BUSOBJS += $(BUSOBJ)/msx_cart/arc.o
411411BUSOBJS += $(BUSOBJ)/msx_cart/ascii.o
412BUSOBJS += $(BUSOBJ)/msx_cart/bm_012.o
412413BUSOBJS += $(BUSOBJ)/msx_cart/cartridge.o
413414BUSOBJS += $(BUSOBJ)/msx_cart/crossblaim.o
414415BUSOBJS += $(BUSOBJ)/msx_cart/dooly.o
trunk/src/emu/bus/msx_cart/bm_012.c
r0r30879
1/***********************************************************************************
2
3Emulation for the MSX BM-012 Midi cartridge that was sold together with Midisaurus.
4
5TODO:
6- hook up all the other signals for the CTC, SIO
7- which type of SIO hookup is used? tmpz84c015af supports SIO/0, SIO/1, and SIO/2
8- since the SIO signals are not hooked up, the midi in/thru/out ports are also not
9  implemented yet
10- proper irq handling taking the irq priority into account is not implemented
11- the hookup between 2 PIOs is educated guess work; it could be incorrect
12
13***********************************************************************************/
14
15#include "emu.h"
16#include "bm_012.h"
17#include "cpu/z80/z80.h"
18
19
20const device_type MSX_CART_BM_012 = &device_creator<msx_cart_bm_012>;
21
22
23msx_cart_bm_012::msx_cart_bm_012(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
24   : device_t(mconfig, MSX_CART_BM_012, "MSX Cartridge - BM-012", tag, owner, clock, "msx_cart_bm_012", __FILE__)
25   , 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)
30   , m_bm012_pio(*this, "bm012_pio")
31{
32}
33
34
35static ADDRESS_MAP_START( bm_012_memory_map, AS_PROGRAM, 8, msx_cart_bm_012 )
36   AM_RANGE(0x0000, 0x7fff) AM_ROM
37   AM_RANGE(0xe000, 0xffff) AM_RAM
38ADDRESS_MAP_END
39
40
41static ADDRESS_MAP_START( bm_012_io_map, AS_IO, 8, msx_cart_bm_012 )
42   ADDRESS_MAP_UNMAP_HIGH
43   ADDRESS_MAP_GLOBAL_MASK(0xff)
44
45   // 10-13 - CTC channels 0-3
46   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("tmpz84_ctc", z80ctc_device, read, write)
47
48   // 18-1B - SIO
49   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("tmpz84_sio", z80dart_device, ba_cd_r, ba_cd_w)
50
51   // 1C-1F - PIO
52   AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("tmpz84_pio", z80pio_device, read_alt, write_alt)
53
54   // F0-F1 - WDT
55   // F4    - IRQ priority
56   AM_RANGE(0xf4, 0xf4) AM_WRITE(tmpz84c015af_f4_w)
57ADDRESS_MAP_END
58
59
60static const z80_daisy_config bm_012_daisy_chain[] =
61{
62   { "tmpz84_pio" },
63   { "tmpz84_sio" },
64   { "tmpz84_ctc" },
65   { NULL }
66};
67
68
69static MACHINE_CONFIG_FRAGMENT( msx_cart_bm_012 )
70   // 12MHz XTAL @ X1
71   // Toshiba TMPZ84C015AF-6 (@U5) components:
72   // - Z80
73   // - CTC
74   // - SIO
75   // - PIO
76   // - CGC
77   // - WDT
78   MCFG_CPU_ADD("tmpz84_cpu", Z80, XTAL_12MHz/2)         /* 6 MHz */
79   MCFG_CPU_PROGRAM_MAP(bm_012_memory_map)
80   MCFG_CPU_IO_MAP(bm_012_io_map)
81   MCFG_CPU_CONFIG(bm_012_daisy_chain)
82
83   MCFG_DEVICE_ADD("tmpz84_pio", Z80PIO, XTAL_12MHz/2)
84   MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
85   MCFG_Z80PIO_IN_PA_CB(DEVREAD8("bm012_pio", z80pio_device, pa_r))
86   MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("bm012_pio", z80pio_device, pa_w))
87   MCFG_Z80PIO_IN_PB_CB(DEVREAD8("bm012_pio", z80pio_device, pb_r))
88   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("bm012_pio", z80pio_device, pb_w))
89   MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("bm012_pio", z80pio_device, strobe_b))
90
91   MCFG_DEVICE_ADD("tmpz84_ctc", Z80CTC, XTAL_12MHz/2)
92   MCFG_Z80CTC_INTR_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
93
94   MCFG_Z80SIO0_ADD("tmpz84_sio", XTAL_12MHz/2, 0, 0, 0, 0)
95   MCFG_Z80DART_OUT_INT_CB(INPUTLINE("tmpz84_cpu", INPUT_LINE_IRQ0))
96
97   // Sony CXK5864BSP-10L  (8KB ram)
98   // Sharp LH0081A Z80A-PIO-0 - For communicating between the MSX and the TMP
99   MCFG_DEVICE_ADD("bm012_pio", Z80PIO, XTAL_3_579545MHz)  // ?????
100   MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("tmpz84_pio", z80pio_device, pa_w))
101   MCFG_Z80PIO_IN_PA_CB(DEVREAD8("tmpz84_pio", z80pio_device, pa_r))
102   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("tmpz84_pio", z80pio_device, pb_w))
103   MCFG_Z80PIO_IN_PB_CB(DEVREAD8("tmpz84_pio", z80pio_device, pb_r))
104   MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("tmpz84_pio", z80pio_device, strobe_b))
105
106MACHINE_CONFIG_END
107
108
109machine_config_constructor msx_cart_bm_012::device_mconfig_additions() const
110{
111   return MACHINE_CONFIG_NAME( msx_cart_bm_012 );
112}
113
114
115ROM_START( msx_cart_bm_012 )
116   ROM_REGION(0x8000, "tmpz84_cpu", 0)
117   // The rom chip at U4 is a 27256, but it contains the same 8KB duplicated 4 times
118   ROM_LOAD("midi_v1.00.u4", 0x0, 0x8000, CRC(840c9e74) SHA1(6d07637ad3a61b509221ed4650eed18442371010))
119ROM_END
120
121
122const rom_entry *msx_cart_bm_012::device_rom_region() const
123{
124   return ROM_NAME( msx_cart_bm_012 );
125}
126
127
128void msx_cart_bm_012::device_start()
129{
130   // Install IO read/write handlers
131   address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
132   space.install_write_handler(0x70, 0x73, write8_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target()));
133   space.install_read_handler(0x70, 0x73, read8_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target()));
134}
135
136
137void msx_cart_bm_012::device_reset()
138{
139}
140
141
142WRITE8_MEMBER(msx_cart_bm_012::tmpz84c015af_f4_w)
143{
144   m_irq_priority = data;
145}
146
147
Property changes on: trunk/src/emu/bus/msx_cart/bm_012.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/msx_cart/bm_012.h
r0r30879
1#ifndef __MSX_CART_BM_012_H
2#define __MSX_CART_BM_012_H
3
4#include "bus/msx_cart/cartridge.h"
5#include "machine/z80pio.h"
6#include "machine/z80ctc.h"
7#include "machine/z80dart.h"
8
9
10extern const device_type MSX_CART_BM_012;
11
12
13class msx_cart_bm_012 : public device_t
14               , public msx_cart_interface
15{
16public:
17   msx_cart_bm_012(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
18
19   // device-level overrides
20   virtual machine_config_constructor device_mconfig_additions() const;
21   virtual const rom_entry *device_rom_region() const;
22   virtual void device_start();
23   virtual void device_reset();
24
25   DECLARE_WRITE8_MEMBER(tmpz84c015af_f4_w);
26
27private:
28   // TMPZ84C015AF related
29   required_device<z80pio_device> m_tmpz84c015af_pio;
30   required_device<z80ctc_device> m_tmpz84c015af_ctc;
31   required_device<z80dart_device> m_tmpz84c015af_sio;
32   UINT8 m_irq_priority;
33
34   required_device<z80pio_device> m_bm012_pio;
35};
36
37
38#endif
Property changes on: trunk/src/emu/bus/msx_cart/bm_012.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/msx_cart/cartridge.c
r30878r30879
33#include "cartridge.h"
44#include "arc.h"
55#include "ascii.h"
6#include "bm_012.h"
67#include "crossblaim.h"
78#include "dooly.h"
89#include "fmpac.h"
r30878r30879
5354   SLOT_INTERFACE_INTERNAL("dooly", MSX_CART_DOOLY)
5455   SLOT_INTERFACE_INTERNAL("halnote", MSX_CART_HALNOTE)
5556   SLOT_INTERFACE_INTERNAL("arc", MSX_CART_ARC)
57   SLOT_INTERFACE("bm_012", MSX_CART_BM_012)
5658SLOT_INTERFACE_END
5759
5860

Previous 199869 Revisions Next


© 1997-2024 The MAME Team