Previous 199869 Revisions Next

r31221 Monday 7th July, 2014 at 19:30:15 UTC by hap
(MESS)

New System Drivers Supported:
-----------------------------
Texas Instruments Compact Computer 40 [hap, Jon Guidry]


I'm still working on this, looking for bugs in tms7000 core now
[src/mess]mess.lst mess.mak
[src/mess/drivers]cc40.c*

trunk/src/mess/drivers/cc40.c
r0r31221
1// license:BSD-3-Clause
2// copyright-holders:hap
3/***************************************************************************
4
5  ---------------------------------------------
6  | ---------------------------------------   |
7  | |                                     |   |
8  | | LCD 1 line, 31 chars + indicators   |   |
9  | |                                     |   ---------------
10  | ---------------------------------------                 |
11  |                                                         |
12  |                                                         |
13  |                                                         |
14  |                           *HD44100H                     |
15  |       *HD44780A00                                       |
16  |                                                         |
17  |                                                         |
18  |                                                         |
19  ----|||||||||||-----------------------------|||||||||||----
20      |||||||||||                             |||||||||||
21  ----|||||||||||-----------------------------|||||||||||----
22  |                                                         |
23  |            HM6116LP-4    HM6116LP-4                     |
24  |                                                         |
25  |                                                         |
26  |             HM6116LP-4                    TMX70C20N2L   |
27  |                                                         |
28  |                              AMI 8304BXH                |
29  |             HN61256PC09                                 |
30  |                                             *Cartridge  |
31  |                                           ---------------
32  |                                           |
33  |       -------------------------------------
34  |*HEXBUS|
35  ---------
36
37  HM6116LP-4    - Hitachi 2KB SRAM
38  HN61256PC09   - Hitachi DIP-28 32KB CMOS Mask PROM
39  TMX70C20N2L   - Texas Instruments TMS70C20 CPU (128 bytes RAM, 2KB ROM) @ 2.5MHz - "X" implies prototype?
40  AMI 8304BXH   - 74-pin QFP AMI Gate Array
41  HD44100H      - 60-pin QFP Hitachi HD44100 LCD Driver
42  HD44780A00    - 80-pin TFP Hitachi HD44780 LCD Controller
43 
44  *             - indicates that it's on the other side of the PCB
45 
46
47  TODO:
48  - x
49
50***************************************************************************/
51
52#include "emu.h"
53#include "cpu/tms7000/tms7000.h"
54#include "video/hd44780.h"
55#include "sound/dac.h"
56
57
58class cc40_state : public driver_device
59{
60public:
61   cc40_state(const machine_config &mconfig, device_type type, const char *tag)
62      : driver_device(mconfig, type, tag),
63      m_maincpu(*this, "maincpu"),
64      m_dac(*this, "dac")
65   { }
66
67   required_device<tms70c20_device> m_maincpu;
68   required_device<dac_device> m_dac;
69   
70   ioport_port *m_key_matrix[8];
71
72   UINT8 m_power;
73   UINT8 m_bus_control;
74   UINT8 m_banks;
75   UINT8 m_clock_control;
76   UINT8 m_key_select;
77
78   DECLARE_READ8_MEMBER(bus_control_r);
79   DECLARE_WRITE8_MEMBER(bus_control_w);
80   DECLARE_WRITE8_MEMBER(power_w);
81   DECLARE_WRITE8_MEMBER(sound_w);
82   DECLARE_READ8_MEMBER(battery_r);
83   DECLARE_READ8_MEMBER(bankswitch_r);
84   DECLARE_WRITE8_MEMBER(bankswitch_w);
85   DECLARE_READ8_MEMBER(clock_r);
86   DECLARE_WRITE8_MEMBER(clock_w);
87   DECLARE_READ8_MEMBER(keyboard_r);
88   DECLARE_WRITE8_MEMBER(keyboard_w);
89
90   virtual void machine_reset();
91   virtual void machine_start();
92   DECLARE_PALETTE_INIT(cc40);
93};
94
95
96/***************************************************************************
97
98  Video
99
100***************************************************************************/
101
102PALETTE_INIT_MEMBER(cc40_state, cc40)
103{
104   palette.set_pen_color(0, rgb_t(138, 146, 148));
105   palette.set_pen_color(1, rgb_t(92, 83, 88));
106}
107
108
109/***************************************************************************
110
111  I/O, Memory Maps
112
113***************************************************************************/
114
115READ8_MEMBER(cc40_state::bus_control_r)
116{
117   return m_bus_control;
118}
119
120WRITE8_MEMBER(cc40_state::bus_control_w)
121{
122   m_bus_control = data;
123}
124
125WRITE8_MEMBER(cc40_state::power_w)
126{
127   // d0: power-on hold latch
128   m_power = data & 1;
129   
130   // stop running
131   if (!m_power)
132      m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
133}
134
135WRITE8_MEMBER(cc40_state::sound_w)
136{
137   // d0: piezo control
138   m_dac->write_signed8((data & 1) ? 0x7f : 0);
139}
140
141READ8_MEMBER(cc40_state::battery_r)
142{
143   // d0: low battery sense line (0 = low power)
144   return 1;
145}
146
147READ8_MEMBER(cc40_state::bankswitch_r)
148{
149   return m_banks;
150}
151
152WRITE8_MEMBER(cc40_state::bankswitch_w)
153{
154   // d0-d1: system rom bankswitch
155   membank("bank1")->set_entry(data & 3);
156   
157   // d1-d2: cartridge rom bankswitch
158   
159   m_banks = data & 0x0f;
160}
161
162READ8_MEMBER(cc40_state::clock_r)
163{
164   return m_clock_control;
165}
166
167WRITE8_MEMBER(cc40_state::clock_w)
168{
169   // d3: enable clock divider
170   if (data & 8)
171   {
172      if (m_clock_control != (data & 0x0f))
173      {
174         // d0-d2: clock divider (2.5MHz /3 to /17 in steps of 2)
175         double div = (~data & 7) * 2 + 1;
176         m_maincpu->set_clock_scale(1 / div);
177      }
178   }
179   else if (m_clock_control & 8)
180   {
181      // high to low
182      m_maincpu->set_clock_scale(1);
183   }
184   
185   m_clock_control = data & 0x0f;
186}
187
188READ8_MEMBER(cc40_state::keyboard_r)
189{
190   UINT8 ret = 0;
191
192   // read selected keyboard rows
193   for (int i = 0; i < 8; i++)
194   {
195      if (m_key_select >> i & 1)
196         ret |= m_key_matrix[i]->read();
197   }
198   
199   return ret;
200}
201
202WRITE8_MEMBER(cc40_state::keyboard_w)
203{
204   // d(0-7): select keyboard column
205   m_key_select = data;
206}
207
208
209static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, cc40_state )
210   ADDRESS_MAP_UNMAP_HIGH
211
212   AM_RANGE(0x0110, 0x0110) AM_READWRITE(bus_control_r, bus_control_w)
213   AM_RANGE(0x0111, 0x0111) AM_WRITE(power_w)
214   AM_RANGE(0x0112, 0x0112) AM_NOP // hexbus data
215   AM_RANGE(0x0113, 0x0113) AM_NOP // hexbus available
216   AM_RANGE(0x0114, 0x0114) AM_NOP // hexbus handshake
217   AM_RANGE(0x0115, 0x0115) AM_WRITE(sound_w)
218   AM_RANGE(0x0116, 0x0116) AM_READ(battery_r)
219   AM_RANGE(0x0119, 0x0119) AM_READWRITE(bankswitch_r, bankswitch_w)
220   AM_RANGE(0x011a, 0x011a) AM_READWRITE(clock_r, clock_w)
221   AM_RANGE(0x011e, 0x011f) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
222
223   AM_RANGE(0x0800, 0x0fff) AM_RAM
224   AM_RANGE(0x1000, 0x17ff) AM_RAM
225   AM_RANGE(0x3000, 0x37ff) AM_RAM
226   AM_RANGE(0xd000, 0xefff) AM_ROMBANK("bank1")
227ADDRESS_MAP_END
228
229static ADDRESS_MAP_START( main_io_map, AS_IO, 8, cc40_state )
230   AM_RANGE(TMS7000_PORTA, TMS7000_PORTA) AM_READ(keyboard_r)
231   AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_WRITE(keyboard_w)
232ADDRESS_MAP_END
233
234
235
236/***************************************************************************
237
238  Inputs
239
240***************************************************************************/
241
242static INPUT_PORTS_START( cc40 )
243   // 8x8 keyboard matrix, RESET and ON buttons are not on it
244   // The numpad number keys are shared with the ones on the main keyboard.
245   // Unused entries are not connected, but some might have a purpose for factory testing(?)
246   PORT_START("IN0")
247   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('1') PORT_CHAR('!')
248   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('2') PORT_CHAR('"')
249   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR('3') PORT_CHAR('#')
250   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR('4') PORT_CHAR('$')
251   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('5') PORT_CHAR('%')
252   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('6') PORT_CHAR('^')
253   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('7') PORT_CHAR('&')
254   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('8') PORT_CHAR('(')
255
256   PORT_START("IN1")
257   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
258   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
259   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
260   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
261   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
262   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
263   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
264   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
265
266   PORT_START("IN2")
267   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
268   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
269   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
270   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
271   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
272   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
273   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
274   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
275
276   PORT_START("IN3")
277   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
278   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
279   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
280   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
281   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
282   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
283   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
284   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
285
286   PORT_START("IN4")
287   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
288   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
289   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
290   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
291   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
292   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('?')
293   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
294   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
295
296   PORT_START("IN5")
297   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') PORT_CHAR('\'')
298   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("CLR  UCL")
299   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
300   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
301   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
302   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("/")
303   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
304   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('9') PORT_CHAR(')')
305
306   PORT_START("IN6")
307   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
308   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_CHAR('>')
309   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+")
310   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13) PORT_NAME("ENTER")
311   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
312   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
313   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
314   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*")
315
316   PORT_START("IN7")
317   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT")
318   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL")
319   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("BREAK")
320   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("RUN")
321   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
322   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("FN")
323   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("OFF")
324   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
325INPUT_PORTS_END
326
327
328/***************************************************************************
329
330  Machine Config
331
332***************************************************************************/
333
334void cc40_state::machine_reset()
335{
336   m_power = 1;
337}
338
339void cc40_state::machine_start()
340{
341   static const char *const tags[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" };
342   for (int i = 0; i < 8; i++)
343      m_key_matrix[i] = ioport(tags[i]);
344   
345   UINT8 *ROM = memregion("maincpu")->base();
346   membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x2000);
347   membank("bank1")->set_entry(0);
348   
349   // zerofill
350   m_power = 0;
351   m_bus_control = 0;
352   m_banks = 0;
353   m_clock_control = 0;
354   m_key_select = 0;
355   
356   // register for savestates
357   save_item(NAME(m_power));
358   save_item(NAME(m_bus_control));
359   save_item(NAME(m_banks));
360   save_item(NAME(m_clock_control));
361   save_item(NAME(m_key_select));
362}
363
364static MACHINE_CONFIG_START( cc40, cc40_state )
365
366   /* basic machine hardware */
367   MCFG_CPU_ADD("maincpu", TMS70C20, XTAL_2_5MHz)
368   MCFG_CPU_PROGRAM_MAP(main_map)
369   MCFG_CPU_IO_MAP(main_io_map)
370
371   /* video hardware */
372   MCFG_SCREEN_ADD("screen", LCD)
373   MCFG_SCREEN_REFRESH_RATE(60)
374   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
375   MCFG_SCREEN_SIZE(6*16, 9*2)
376   MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
377   MCFG_DEFAULT_LAYOUT(layout_lcd)
378   MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
379   MCFG_SCREEN_PALETTE("palette")
380
381   MCFG_PALETTE_ADD("palette", 2)
382   MCFG_PALETTE_INIT_OWNER(cc40_state, cc40)
383
384   MCFG_HD44780_ADD("hd44780")
385   MCFG_HD44780_LCD_SIZE(2, 16) // internal: 2*16, external: 1*31 + indicators
386
387   /* sound hardware */
388   MCFG_SPEAKER_STANDARD_MONO("mono")
389
390   MCFG_DAC_ADD("dac")
391   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
392MACHINE_CONFIG_END
393
394
395/***************************************************************************
396
397  Game drivers
398
399***************************************************************************/
400
401ROM_START( cc40 )
402   ROM_REGION( 0x18000, "maincpu", 0 )
403   ROM_LOAD( "tms70c20.bin", 0xf800, 0x0800, CRC(a21bf6ab) SHA1(3da8435ecbee143e7fa149ee8e1c92949bade1d8) )
404   ROM_LOAD( "cc40.bin", 0x10000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) )
405ROM_END
406
407
408COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", GAME_NOT_WORKING )
Property changes on: trunk/src/mess/drivers/cc40.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/mess/mess.mak
r31220r31221
19161916   $(MESS_VIDEO)/avigo.o       \
19171917   $(MESS_DRIVERS)/avigo.o     \
19181918   $(MESS_DRIVERS)/evmbug.o    \
1919   $(MESS_DRIVERS)/cc40.o      \
19191920
19201921$(MESSOBJ)/tiger.a:             \
19211922   $(MESS_DRIVERS)/gamecom.o   \
trunk/src/mess/mess.lst
r31220r31221
10201020ti990_4v   // 1976 TI 990/4 with video display terminal
10211021990189  // 1978 TM 990/189
10221022990189v   // 1980 TM 990/189 with Color Video Board
1023cc40      // 1983 TI CC-40
10231024
10241025ti99_224  // 1983 TI 99/2 (24kb ROMs)
10251026ti99_232  // 1983 TI 99/2 (32kb ROMs)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team