Previous 199869 Revisions Next

r30621 Friday 23rd May, 2014 at 20:12:18 UTC by Wilbert Pol
(MESS) msx.c: Added msx audio keyboard connector. Added Toshiba HX-MU901 keyboard emulation. (nw)
[src/emu/bus]bus.mak
[src/emu/bus/msx_cart]msx_audio.c msx_audio_kb.c* msx_audio_kb.h*

trunk/src/emu/bus/bus.mak
r30620r30621
415415BUSOBJS += $(BUSOBJ)/msx_cart/korean.o
416416BUSOBJS += $(BUSOBJ)/msx_cart/majutsushi.o
417417BUSOBJS += $(BUSOBJ)/msx_cart/msx_audio.o
418BUSOBJS += $(BUSOBJ)/msx_cart/msx_audio_kb.o
418419BUSOBJS += $(BUSOBJ)/msx_cart/msxdos2.o
419420BUSOBJS += $(BUSOBJ)/msx_cart/nomapper.o
420421BUSOBJS += $(BUSOBJ)/msx_cart/rtype.o
trunk/src/emu/bus/msx_cart/msx_audio_kb.c
r0r30621
1#include "emu.h"
2#include "msx_audio_kb.h"
3
4
5const device_type MSX_AUDIO_KBDC_PORT = &device_creator<msx_audio_kbdc_port_device>;
6
7
8msx_audio_kbdc_port_device::msx_audio_kbdc_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9   : device_t(mconfig, MSX_AUDIO_KBDC_PORT, "MSX Audio keyboard connector port", tag, owner, clock, "msx_audio_kbdc_port", __FILE__)
10   , device_slot_interface(mconfig, *this)
11{
12}
13
14
15void msx_audio_kbdc_port_device::device_start()
16{
17   m_keyboard = dynamic_cast<msx_audio_kb_port_interface *>(get_card_device());
18}
19
20
21WRITE8_MEMBER(msx_audio_kbdc_port_device::write)
22{
23   if (m_keyboard)
24   {
25      m_keyboard->write(space, offset, data);
26   }
27}
28
29
30READ8_MEMBER(msx_audio_kbdc_port_device::read)
31{
32   if (m_keyboard)
33   {
34      return m_keyboard->read(space, offset);
35   }
36   return 0xff;
37}
38
39
40extern const device_type MSX_AUDIO_KB_HXMU901;
41extern const device_type MSX_AUDIO_KB_NMS1160;
42
43
44class msx_hxmu901 : public device_t
45               , public msx_audio_kb_port_interface
46{
47public:
48   msx_hxmu901(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
49      : device_t(mconfig, MSX_AUDIO_KB_HXMU901, "Toshiba HXMU901", tag, owner, clock, "hxmu901", __FILE__)
50      , msx_audio_kb_port_interface(mconfig, *this)
51      , m_row(0)
52      , m_keyboard(*this, "KEY")
53   { };
54
55   virtual ioport_constructor device_input_ports() const;
56
57   virtual DECLARE_READ8_MEMBER(read)
58   {
59      UINT8 result = 0xff;
60
61      for (int i = 0; i < 8; i++)
62      {
63         if (BIT(m_row,i))
64         {
65            result &= m_keyboard[i]->read();
66         }
67      }
68      return result;
69   }
70
71   virtual DECLARE_WRITE8_MEMBER(write)
72   {
73      m_row = data;
74   }
75
76protected:
77   virtual void device_start() { }
78
79private:
80   UINT8 m_row;
81   required_ioport_array<8> m_keyboard;
82};
83
84
85static INPUT_PORTS_START( hxmu901)
86   PORT_START("KEY.0")
87   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C#1")
88   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D1")
89   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D#1")
90   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
91   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E1")
92   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1")
93   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F#1")
94   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C1")
95
96   PORT_START("KEY.1")
97   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G1")
98   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G#1")
99   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A1")
100   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
101   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A#1")
102   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B1")
103   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C2")
104   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
105
106   PORT_START("KEY.2")
107   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C#2")
108   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D2")
109   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D#2")
110   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
111   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E2")
112   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2")
113   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F#2")
114   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
115
116   PORT_START("KEY.3")
117   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G2")
118   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G#2")
119   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A2")
120   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
121   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A#2")
122   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B2")
123   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C3")
124   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
125
126   PORT_START("KEY.4")
127   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C#3")
128   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D3")
129   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D#3")
130   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
131   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E3")
132   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3")
133   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F#3")
134   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
135
136   PORT_START("KEY.5")
137   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G3")
138   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G#3")
139   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A3")
140   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
141   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A#3")
142   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B3")
143   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C4")
144   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
145
146   PORT_START("KEY.6")
147   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C#4")
148   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D4")
149   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D#4")
150   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
151   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E4")
152   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F4")
153   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F#4")
154   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
155
156   PORT_START("KEY.7")
157   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G4")
158   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G#4")
159   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A4")
160   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)  // Multi sensor related?
161   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A#4")
162   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B4")
163   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C5")
164   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
165INPUT_PORTS_END
166
167
168ioport_constructor msx_hxmu901::device_input_ports() const
169{
170   return INPUT_PORTS_NAME( hxmu901 );
171}
172
173
174class msx_nms1160 : public device_t
175               , public msx_audio_kb_port_interface
176{
177public:
178   msx_nms1160(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
179      : device_t(mconfig, MSX_AUDIO_KB_NMS1160, "Philips NMS-1160", tag, owner, clock, "nms1160", __FILE__)
180      , msx_audio_kb_port_interface(mconfig, *this)
181      , m_row(0)
182   { };
183
184//   virtual ioport_constructor device_input_ports() const;
185
186   virtual DECLARE_READ8_MEMBER(read)
187   {
188      return 0xff;
189   }
190
191   virtual DECLARE_WRITE8_MEMBER(write)
192   {
193      printf("msx_nms1160::write %02x\n", data);
194      m_row = data;
195   }
196
197protected:
198   virtual void device_start() { }
199
200private:
201   UINT8 m_row;
202};
203
204
205const device_type MSX_AUDIO_KB_HXMU901 = &device_creator<msx_hxmu901>;
206const device_type MSX_AUDIO_KB_NMS1160 = &device_creator<msx_nms1160>;
207
208
209SLOT_INTERFACE_START( msx_audio_keyboards )
210   SLOT_INTERFACE("hxmu901", MSX_AUDIO_KB_HXMU901)
211   SLOT_INTERFACE("nms1160", MSX_AUDIO_KB_NMS1160)
212SLOT_INTERFACE_END
213
214
Property changes on: trunk/src/emu/bus/msx_cart/msx_audio_kb.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/msx_cart/msx_audio_kb.h
r0r30621
1#ifndef __MSX_AUDIO_KB_H__
2#define __MSX_AUDIO_KB_H__
3
4
5extern const device_type MSX_AUDIO_KBDC_PORT;
6
7
8#define MCFG_MSX_AUDIO_KBDC_PORT_ADD(_tag, _slot_intf, _def_slot) \
9   MCFG_DEVICE_ADD(_tag, MSX_AUDIO_KBDC_PORT, 0 ) \
10   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
11
12
13class msx_audio_kb_port_interface : public device_slot_card_interface
14{
15public:
16   // construction/destruction
17   msx_audio_kb_port_interface(const machine_config &mconfig, device_t &device)
18      : device_slot_card_interface(mconfig, device)
19   { };
20
21   virtual DECLARE_READ8_MEMBER(read) { return 0xff; };
22   virtual DECLARE_WRITE8_MEMBER(write) { };
23};
24
25
26class msx_audio_kbdc_port_device : public device_t,
27                     public device_slot_interface
28{
29public:
30   // construction/destruction
31   msx_audio_kbdc_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
32
33   // device-level overrides
34   virtual void device_start();
35
36   // Physical connection simply consists of 8 input and 8 output lines split across 2 connectors
37   DECLARE_WRITE8_MEMBER(write);
38   DECLARE_READ8_MEMBER(read);
39
40   msx_audio_kb_port_interface *m_keyboard;
41};
42
43
44SLOT_INTERFACE_EXTERN( msx_audio_keyboards );
45
46
47#endif
Property changes on: trunk/src/emu/bus/msx_cart/msx_audio_kb.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/msx_cart/msx_audio.c
r30620r30621
55- Panasonic FS-CA1
66  - Y8950
77  - 4KB ram
8  - Connector for Toshiba HX-MU901 keyboard
89
910- Toshiba HX-MU900
1011  - Y8950
1112  - No midi ports
1213  - No ram
14  - Connector for Toshiba HX-MU901 keyboard
1315
1416- Philips NMS-1205
1517  - Y8950
1618  - Midi ports
1719  - 32KB sample ram
20  - Connector for Philips NMS-1160 keyboard
1821
22
23The keyboards:
24- Toshiba HX-MU901
25  - 49 keys: 4 full octaves + high C
26  - ENTER key
27  - SELECT key
28  - multi sensor (?)
29
30- Philips NMS-1160
31
1932**********************************************************************************/
2033
2134#include "emu.h"
2235#include "msx_audio.h"
36#include "bus/msx_cart/msx_audio_kb.h"
2337
38
2439const device_type MSX_CART_MSX_AUDIO_HXMU900 = &device_creator<msx_cart_msx_audio_hxmu900>;
2540const device_type MSX_CART_MSX_AUDIO_NMS1205 = &device_creator<msx_cart_msx_audio_nms1205>;
2641const device_type MSX_CART_MSX_AUDIO_FSCA1 = &device_creator<msx_cart_msx_audio_fsca1>;
r30620r30621
3954   MCFG_SPEAKER_STANDARD_MONO("mono")
4055   MCFG_SOUND_ADD("y8950", Y8950, XTAL_3_579545MHz)    // Not verified
4156   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
57   MCFG_Y8950_KEYBOARD_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
58   MCFG_Y8950_KEYBOARD_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
59
60   MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, NULL)
4261MACHINE_CONFIG_END
4362
4463
r30620r30621
7796
7897
7998
99
100
80101msx_cart_msx_audio_nms1205::msx_cart_msx_audio_nms1205(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
81102   : device_t(mconfig, MSX_CART_MSX_AUDIO_NMS1205, "MSX Cartridge - MSX-AUDIO NMS-1205", tag, owner, clock, "msx_audio_nms1205", __FILE__)
82103   , msx_cart_interface(mconfig, *this)
r30620r30621
93114   MCFG_SPEAKER_STANDARD_MONO("mono")
94115   MCFG_SOUND_ADD("y8950", Y8950, XTAL_3_579545MHz)
95116   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
117   MCFG_Y8950_KEYBOARD_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
118   MCFG_Y8950_KEYBOARD_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
96119
120   MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, NULL)
121
97122   MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
98123MACHINE_CONFIG_END
99124
r30620r30621
136161
137162
138163
164
139165msx_cart_msx_audio_fsca1::msx_cart_msx_audio_fsca1(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
140166   : device_t(mconfig, MSX_CART_MSX_AUDIO_FSCA1, "MSX Cartridge - MSX-AUDIO FS-CA1", tag, owner, clock, "msx_audio_fsca1", __FILE__)
141167   , msx_cart_interface(mconfig, *this)
r30620r30621
151177   MCFG_SPEAKER_STANDARD_MONO("mono")
152178   MCFG_SOUND_ADD("y8950", Y8950, XTAL_3_579545MHz)
153179   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
180   MCFG_Y8950_KEYBOARD_WRITE_HANDLER(DEVWRITE8("kbdc", msx_audio_kbdc_port_device, write))
181   MCFG_Y8950_KEYBOARD_READ_HANDLER(DEVREAD8("kbdc", msx_audio_kbdc_port_device, read))
182
183   MCFG_MSX_AUDIO_KBDC_PORT_ADD("kbdc", msx_audio_keyboards, NULL)
154184MACHINE_CONFIG_END
155185
156186
r30620r30621
234264   }
235265}
236266
267
237268READ8_MEMBER(msx_cart_msx_audio_fsca1::read_y8950)
238269{
239270   if (offset & 2)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team