Previous 199869 Revisions Next

r26532 Sunday 8th December, 2013 at 04:36:30 UTC by Robbbert
(MESS) New Working system [Robbbert]
----------------------------------------

Multitech Microkit09
[src/mess]mess.lst mess.mak
[src/mess/drivers]mkit09.c*
[src/mess/layout]mkit09.lay*

trunk/src/mess/layout/mkit09.lay
r0r26532
1<?xml version="1.0"?>
2<mamelayout version="2">
3   <element name="digit" defstate="0">
4      <led7seg>
5         <color red="0.75" green="0.0" blue="0.0" />
6      </led7seg>
7   </element>
8   <element name="background">
9      <rect>
10         <bounds left="0" top="0" right="1" bottom="1" />
11         <color red="0.0" green="0.0" blue="0.0" />
12      </rect>
13   </element>
14
15   <view name="Default Layout">
16      <!-- Black background -->
17      <bezel element="background">
18         <bounds left="97" top="95" right="428" bottom="195" />
19      </bezel>
20      <bezel name="digit4" element="digit">
21         <bounds left="107" top="105" right="155" bottom="185" />
22      </bezel>
23      <bezel name="digit5" element="digit">
24         <bounds left="155" top="105" right="203" bottom="185" />
25      </bezel>
26      <bezel name="digit6" element="digit">
27         <bounds left="203" top="105" right="251" bottom="185" />
28      </bezel>
29      <bezel name="digit7" element="digit">
30         <bounds left="251" top="105" right="299" bottom="185" />
31      </bezel>
32      <bezel name="digit8" element="digit">
33         <bounds left="323" top="105" right="370" bottom="185" />
34      </bezel>
35      <bezel name="digit9" element="digit">
36         <bounds left="371" top="105" right="418" bottom="185" />
37      </bezel>
38   </view>
39</mamelayout>
Property changes on: trunk/src/mess/layout/mkit09.lay
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/mess/mess.mak
r26531r26532
14481448   $(MESS_DRIVERS)/mekd2.o     \
14491449
14501450$(MESSOBJ)/multitch.a:          \
1451   $(MESS_DRIVERS)/mkit09.o    \
14511452   $(MESS_DRIVERS)/mpf1.o      \
14521453
14531454$(MESSOBJ)/nakajima.a:          \
r26531r26532
23532354$(MESS_DRIVERS)/mk1.o:      $(MESS_LAYOUT)/mk1.lh
23542355$(MESS_DRIVERS)/mk14.o:     $(MESS_LAYOUT)/mk14.lh
23552356$(MESS_DRIVERS)/mk2.o:      $(MESS_LAYOUT)/mk2.lh
2357$(MESS_DRIVERS)/mkit09.o:   $(MESS_LAYOUT)/mkit09.lh
23562358$(MESS_DRIVERS)/mmd1.o:     $(MESS_LAYOUT)/mmd1.lh \
23572359                     $(MESS_LAYOUT)/mmd2.lh
23582360$(MESS_DRIVERS)/mpf1.o:     $(MESS_LAYOUT)/mpf1.lh \
trunk/src/mess/drivers/mkit09.c
r0r26532
1// license:MAME
2// copyright-holders:Robbbert
3/***************************************************************************
4
5    Multitech Microkit09
6
7    2013-12-08 Mostly working driver.
8
9ToDo:
10    - NMI & RST keys
11    - Test if Cassette works
12    - Test if Paste works
13    - Need software to test with
14
15****************************************************************************/
16
17#include "emu.h"
18#include "cpu/m6809/m6809.h"
19#include "machine/6821pia.h"
20#include "imagedev/cassette.h"
21#include "sound/wave.h"
22#include "mkit09.lh"
23
24
25class mkit09_state : public driver_device
26{
27public:
28   mkit09_state(const machine_config &mconfig, device_type type, const char *tag)
29      : driver_device(mconfig, type, tag)
30      , m_pia(*this, "pia")
31      , m_cass(*this, "cassette")
32      , m_maincpu(*this, "maincpu")
33   { }
34
35   DECLARE_READ8_MEMBER(pa_r);
36   DECLARE_READ8_MEMBER(pb_r);
37   DECLARE_WRITE8_MEMBER(pa_w);
38   DECLARE_WRITE8_MEMBER(pb_w);
39private:
40   UINT8 m_keydata;
41   virtual void machine_reset();
42   required_device<pia6821_device> m_pia;
43   required_device<cassette_image_device> m_cass;
44   required_device<cpu_device> m_maincpu;
45};
46
47
48static ADDRESS_MAP_START(mkit09_mem, AS_PROGRAM, 8, mkit09_state)
49   ADDRESS_MAP_UNMAP_HIGH
50   AM_RANGE(0x0000,0x07ff) AM_MIRROR(0x1800) AM_RAM
51   AM_RANGE(0xa004,0xa007) AM_MIRROR(0x1ff8) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
52   AM_RANGE(0xe000,0xe7ff) AM_MIRROR(0x1800) AM_ROM AM_REGION("roms", 0)
53ADDRESS_MAP_END
54
55static ADDRESS_MAP_START( mkit09_io, AS_IO, 8, mkit09_state)
56   ADDRESS_MAP_UNMAP_HIGH
57ADDRESS_MAP_END
58
59/* Input ports */
60static INPUT_PORTS_START( mkit09 )
61   PORT_START("X0")
62   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Inc") PORT_CODE(KEYCODE_UP) PORT_CHAR('^')
63   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
64   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
65   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
66   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
67   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
68   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
69   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
70
71   PORT_START("X1")
72   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_DOWN) PORT_CHAR('V')
73   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
74   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
75   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
76   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
77   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
78   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
79   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
80
81   PORT_START("X2")
82   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) PORT_CHAR('-')
83   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
84   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
85   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
86   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
87   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
88   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BP") PORT_CODE(KEYCODE_Q)
89   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
90
91   PORT_START("X3")
92   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REG") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
93   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GO") PORT_CODE(KEYCODE_G) PORT_CHAR('X')
94   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("cnt") PORT_CODE(KEYCODE_W)
95   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ofs") PORT_CODE(KEYCODE_O)
96   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L)
97   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P)
98   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X)
99   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
100
101   PORT_START("SPECIAL")
102   //PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_F10) PORT_CHANGED_MEMBER(DEVICE_SELF, mkit09_state, trigger_reset, 0)
103   //PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NMI") PORT_CODE(KEYCODE_ESC) PORT_CHANGED_MEMBER(DEVICE_SELF, mkit09_state, trigger_nmi, 0)
104INPUT_PORTS_END
105
106
107void mkit09_state::machine_reset()
108{
109   m_keydata = 0;
110}
111
112// read keyboard
113READ8_MEMBER( mkit09_state::pa_r )
114{
115   if (m_keydata < 4)
116   {
117      char kbdrow[4];
118      sprintf(kbdrow,"X%d",m_keydata);
119      return ioport(kbdrow)->read();
120   }
121     
122   return 0xff;
123}
124
125// read cassette
126READ8_MEMBER( mkit09_state::pb_r )
127{
128   return m_keydata | (m_cass->input() > +0.03) ? 0x80 : 0;
129}
130
131// write display segments
132WRITE8_MEMBER( mkit09_state::pa_w )
133{
134   data ^= 0xff;
135   if (m_keydata > 3)
136   {
137      output_set_digit_value(m_keydata, BITSWAP8(data, 7, 0, 5, 6, 4, 2, 1, 3));
138      m_keydata = 0;
139   }
140
141   return;
142}
143
144// write cassette, select keyboard row, select a digit
145WRITE8_MEMBER( mkit09_state::pb_w )
146{
147   m_cass->output(BIT(data, 6) ? -1.0 : +1.0);
148   m_keydata = data & 15;
149   return;
150}
151
152
153static const pia6821_interface mc6821_intf =
154{
155   DEVCB_DRIVER_MEMBER(mkit09_state, pa_r),     /* port A input */
156   DEVCB_DRIVER_MEMBER(mkit09_state, pb_r),     /* port B input */
157   DEVCB_NULL,     /* CA1 input */
158   DEVCB_NULL,     /* CB1 input */
159   DEVCB_NULL,     /* CA2 input */
160   DEVCB_NULL,     /* CB2 input */
161   DEVCB_DRIVER_MEMBER(mkit09_state, pa_w),     /* port A output */
162   DEVCB_DRIVER_MEMBER(mkit09_state, pb_w),     /* port B output */
163   DEVCB_NULL,     /* CA2 output */
164   DEVCB_NULL,     /* CB2 output */
165   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0),    /* IRQA output */
166   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0)     /* IRQB output */
167};
168
169static MACHINE_CONFIG_START( mkit09, mkit09_state )
170   /* basic machine hardware */
171   MCFG_CPU_ADD("maincpu",M6809, XTAL_4MHz)
172   MCFG_CPU_PROGRAM_MAP(mkit09_mem)
173   MCFG_CPU_IO_MAP(mkit09_io)
174
175   /* video hardware */
176   MCFG_DEFAULT_LAYOUT(layout_mkit09)
177
178   /* sound hardware */
179   MCFG_SPEAKER_STANDARD_MONO("mono")
180   MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
181   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
182
183   /* Devices */
184   MCFG_PIA6821_ADD("pia", mc6821_intf)
185   MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
186MACHINE_CONFIG_END
187
188/* ROM definition */
189ROM_START( mkit09 )
190   ROM_REGION( 0x800, "roms", 0 )
191   ROM_LOAD( "micromon.bin", 0x0000, 0x0800, CRC(c993c7c2) SHA1(2f54a2b423b925798f669f8a6d2cadeb8a82e968) )
192ROM_END
193
194/* Driver */
195
196/*    YEAR  NAME     PARENT  COMPAT   MACHINE     INPUT   CLASS          INIT    COMPANY         FULLNAME       FLAGS */
197COMP( 1983, mkit09,  0,      0,       mkit09,     mkit09, driver_device,   0,   "Multitech",  "Microkit09", 0 )
Property changes on: trunk/src/mess/drivers/mkit09.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/mess/mess.lst
r26531r26532
23002300mcb216
23012301cb308
23022302myvision
2303
2303mkit09

Previous 199869 Revisions Next


© 1997-2024 The MAME Team