Previous 199869 Revisions Next

r31328 Saturday 19th July, 2014 at 22:24:15 UTC by hap
cc40 added lcd indicators, cartridge load, battery ram
[src/emu/cpu/tms7000]tms7000.c tms7000.h
[src/mess/drivers]cc40.c
[src/mess/layout]cc40.lay

trunk/src/emu/cpu/tms7000/tms7000.c
r31327r31328
2323 *  - memory modes with IOCNT0, currently ignored
2424 *  - timer event counter mode (timer control register, bit 6)
2525 *  - TMS70x1/2 serial port and timer 3
26 *  - TMS70C46 is same as TMS70C40, except with support for memory mapped I/O?
2627 *  - when they're needed, add TMS70Cx2, TMS7742, TMS77C82, SE70xxx
2728 *
2829 *****************************************************************************/
r31327r31328
5051const device_type TMS70C00 = &device_creator<tms70c00_device>;
5152const device_type TMS70C20 = &device_creator<tms70c20_device>;
5253const device_type TMS70C40 = &device_creator<tms70c40_device>;
54const device_type TMS70C46 = &device_creator<tms70c46_device>;
5355const device_type TMS7001 = &device_creator<tms7001_device>;
5456const device_type TMS7041 = &device_creator<tms7041_device>;
5557const device_type TMS7002 = &device_creator<tms7002_device>;
r31327r31328
149151{
150152}
151153
154tms70c46_device::tms70c46_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
155   : tms7000_device(mconfig, TMS70C46, "TMS70C46", tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), TMS7000_CHIP_IS_CMOS, "tms70c46", __FILE__)
156{
157}
158
152159tms7001_device::tms7001_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
153160   : tms7000_device(mconfig, TMS7001, "TMS7001", tag, owner, clock, ADDRESS_MAP_NAME(tms7001_mem), TMS7000_CHIP_FAMILY_70X2, "tms7001", __FILE__)
154161{
trunk/src/emu/cpu/tms7000/tms7000.h
r31327r31328
303303};
304304
305305
306class tms70c46_device : public tms7000_device
307{
308public:
309   tms70c46_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
310};
311
312
306313class tms7001_device : public tms7000_device
307314{
308315public:
r31327r31328
338345extern const device_type TMS70C00;
339346extern const device_type TMS70C20;
340347extern const device_type TMS70C40;
348extern const device_type TMS70C46;
341349extern const device_type TMS7001;
342350extern const device_type TMS7041;
343351extern const device_type TMS7002;
trunk/src/mess/layout/cc40.lay
r31327r31328
11<?xml version="1.0"?>
22<mamelayout version="2">
33
4   <element name="static_bg">
5      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
6   </element>
7
8<!-- define lcd indicators -->
9
10   <element name="ind_left" defstate="0">
11      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
12      <text string="&lt;" align="1" state="0">
13         <color red="0.494" green="0.501" blue="0.522" />
14      </text>
15      <text string="&lt;" align="1" state="1">
16         <color red="0.361" green="0.325" blue="0.345" />
17      </text>
18   </element>
19
20   <element name="ind_right" defstate="0">
21      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
22      <text string="&gt;" align="2" state="0">
23         <color red="0.494" green="0.501" blue="0.522" />
24      </text>
25      <text string="&gt;" align="2" state="1">
26         <color red="0.361" green="0.325" blue="0.345" />
27      </text>
28   </element>
29
30   <element name="ind_shift" defstate="0">
31      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
32      <text string="SHIFT" state="0">
33         <color red="0.494" green="0.501" blue="0.522" />
34      </text>
35      <text string="SHIFT" state="1">
36         <color red="0.361" green="0.325" blue="0.345" />
37      </text>
38   </element>
39
40   <element name="ind_ctl" defstate="0">
41      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
42      <text string="CTL" state="0">
43         <color red="0.494" green="0.501" blue="0.522" />
44      </text>
45      <text string="CTL" state="1">
46         <color red="0.361" green="0.325" blue="0.345" />
47      </text>
48   </element>
49
50   <element name="ind_fn" defstate="0">
51      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
52      <text string="FN" state="0">
53         <color red="0.494" green="0.501" blue="0.522" />
54      </text>
55      <text string="FN" state="1">
56         <color red="0.361" green="0.325" blue="0.345" />
57      </text>
58   </element>
59
60   <element name="ind_deg" defstate="0">
61      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
62      <text string="DEG" state="0">
63         <color red="0.494" green="0.501" blue="0.522" />
64      </text>
65      <text string="DEG" state="1">
66         <color red="0.361" green="0.325" blue="0.345" />
67      </text>
68   </element>
69
70   <element name="ind_rad" defstate="0">
71      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
72      <text string="RAD" state="0">
73         <color red="0.494" green="0.501" blue="0.522" />
74      </text>
75      <text string="RAD" state="1">
76         <color red="0.361" green="0.325" blue="0.345" />
77      </text>
78   </element>
79
80   <element name="ind_grad" defstate="0">
81      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
82      <text string="GRAD" state="0">
83         <color red="0.494" green="0.501" blue="0.522" />
84      </text>
85      <text string="GRAD" state="1">
86         <color red="0.361" green="0.325" blue="0.345" />
87      </text>
88   </element>
89
90   <element name="ind_io" defstate="0">
91      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
92      <text string="I/O" state="0">
93         <color red="0.494" green="0.501" blue="0.522" />
94      </text>
95      <text string="I/O" state="1">
96         <color red="0.361" green="0.325" blue="0.345" />
97      </text>
98   </element>
99
100   <element name="ind_ucl" defstate="0">
101      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
102      <text string="UCL" state="0">
103         <color red="0.494" green="0.501" blue="0.522" />
104      </text>
105      <text string="UCL" state="1">
106         <color red="0.361" green="0.325" blue="0.345" />
107      </text>
108   </element>
109
110   <element name="ind_error" defstate="0">
111      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
112      <text string="ERROR" state="0">
113         <color red="0.494" green="0.501" blue="0.522" />
114      </text>
115      <text string="ERROR" state="1">
116         <color red="0.361" green="0.325" blue="0.345" />
117      </text>
118   </element>
119
120   <element name="ind_user" defstate="0">
121      <rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect>
122      <text string="v" state="0">
123         <color red="0.494" green="0.501" blue="0.522" />
124      </text>
125      <text string="v" state="1">
126         <color red="0.361" green="0.325" blue="0.345" />
127      </text>
128   </element>
129
130   <element name="ind_low" defstate="0">
131      <rect state="0"><color red="0.494" green="0.501" blue="0.522" /></rect>
132      <rect state="1"><color red="0.361" green="0.325" blue="0.345" /></rect>
133      <text string="LOW">
134         <color red="0.5412" green="0.57255" blue="0.5804" />
135      </text>
136   </element>
137
138
139
4140   <view name="Internal Layout">
141      <bounds left="0" top="0" right="189" bottom="32" />
142
5143      <screen index="0">
6         <bounds left="0" top="0" right="1488" bottom="72" />
144         <bounds x="1" y="11" width="187" height="10" />
7145      </screen>
146
147<!-- draw background around lcd screen matrix part -->
148
149      <bezel element="static_bg">
150         <bounds left="0" top="0" right="188" bottom="11.25" />
151      </bezel>
152      <bezel element="static_bg">
153         <bounds left="0" top="0" right="1.25" bottom="32" />
154      </bezel>
155      <bezel element="static_bg">
156         <bounds left="187.75" top="0" right="189" bottom="32" />
157      </bezel>
158      <bezel element="static_bg">
159         <bounds left="0" top="20.75" right="188" bottom="32" />
160      </bezel>
161
162<!-- draw top row of lcd indicators -->
163
164      <bezel name="lamp10" element="ind_left">
165         <bounds x="1.5" y="1" width="20" height="5" />
166      </bezel>
167
168      <bezel name="lamp4" element="ind_right">
169         <bounds x="167.5" y="1" width="20" height="5" />
170      </bezel>
171
172      <bezel name="lamp11" element="ind_shift">
173         <bounds x="7" y="3" width="20" height="5" />
174      </bezel>
175      <bezel name="lamp12" element="ind_ctl">
176         <bounds x="29" y="3" width="20" height="5" />
177      </bezel>
178      <bezel name="lamp13" element="ind_fn">
179         <bounds x="51" y="3" width="20" height="5" />
180      </bezel>
181      <bezel name="lamp14" element="ind_deg">
182         <bounds x="73" y="3" width="20" height="5" />
183      </bezel>
184      <bezel name="lamp0" element="ind_rad">
185         <bounds x="95" y="3" width="20" height="5" />
186      </bezel>
187      <bezel name="lamp1" element="ind_grad">
188         <bounds x="117" y="3" width="20" height="5" />
189      </bezel>
190      <bezel name="lamp2" element="ind_io">
191         <bounds x="139" y="3" width="20" height="5" />
192      </bezel>
193      <bezel name="lamp3" element="ind_ucl">
194         <bounds x="161" y="3" width="20" height="5" />
195      </bezel>
196
197<!-- draw bottom row of lcd indicators -->
198
199      <bezel name="lamp60" element="ind_error">
200         <bounds x="7" y="24" width="20" height="5" />
201      </bezel>
202
203      <bezel name="lamp61" element="ind_user">
204         <bounds x="29" y="26" width="20" height="5" />
205      </bezel>
206      <bezel name="lamp62" element="ind_user">
207         <bounds x="51" y="26" width="20" height="5" />
208      </bezel>
209      <bezel name="lamp63" element="ind_user">
210         <bounds x="73" y="26" width="20" height="5" />
211      </bezel>
212      <bezel name="lamp50" element="ind_user">
213         <bounds x="95" y="26" width="20" height="5" />
214      </bezel>
215      <bezel name="lamp51" element="ind_user">
216         <bounds x="117" y="26" width="20" height="5" />
217      </bezel>
218      <bezel name="lamp52" element="ind_user">
219         <bounds x="139" y="26" width="20" height="5" />
220      </bezel>
221
222      <bezel name="lamp53" element="ind_low">
223         <bounds x="165" y="25.5" width="12" height="5" />
224      </bezel>
225
226
8227   </view>
9228</mamelayout>
trunk/src/mess/drivers/cc40.c
r31327r31328
22// copyright-holders:hap
33/***************************************************************************
44
5  Texas Instruments Compact Computer 40 (aka CC-40)
6
57  ---------------------------------------------
68  | ---------------------------------------   |
79  | |                                     |   |
r31327r31328
4345 
4446  *             - indicates that it's on the other side of the PCB
4547 
48 
49  CC-40 is powered by 4 AA batteries. These will also save internal RAM,
50  provided that the machine is turned off properly. If a program is running,
51  you may have to press BREAK before turning the CC-40 off.
52 
53  To run a cartridge that doesn't automatically boot, use the command
54  run"dir" to see which program(s) can be loaded. Load a program with
55  run"<shortname of program in list>"
4656
57
4758  TODO:
59  - some strange bugs with cartridge software, maybe TMS7000 bug?
60  - other RAM configurations (6KB(default), 12KB, 18KB, external)
61  - Hexbus interface and peripherals
4862  - HD44100 is not accessed by the CPU, is it connected to the HD44780?
4963    Probably responsible for the LCD indicators, how?
5064
r31327r31328
5468#include "cpu/tms7000/tms7000.h"
5569#include "video/hd44780.h"
5670#include "sound/dac.h"
71#include "machine/nvram.h"
72#include "imagedev/cartslot.h"
5773
5874#include "cc40.lh"
5975
r31327r31328
7389   ioport_port *m_key_matrix[8];
7490
7591   UINT8 m_power;
76   UINT8 m_bus_control;
7792   UINT8 m_banks;
7893   UINT8 m_clock_control;
7994   UINT8 m_key_select;
r31327r31328
8196   void update_lcd_indicator(UINT8 y, UINT8 x, int state);
8297
8398   DECLARE_READ8_MEMBER(bus_control_r);
84   DECLARE_WRITE8_MEMBER(bus_control_w);
8599   DECLARE_WRITE8_MEMBER(power_w);
86100   DECLARE_WRITE8_MEMBER(sound_w);
87101   DECLARE_READ8_MEMBER(battery_r);
r31327r31328
95109   virtual void machine_reset();
96110   virtual void machine_start();
97111   DECLARE_PALETTE_INIT(cc40);
112   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cc40_cartridge);
98113};
99114
100115
101116/***************************************************************************
102117
118  File Handling
119
120***************************************************************************/
121
122DEVICE_IMAGE_LOAD_MEMBER(cc40_state, cc40_cartridge)
123{
124   UINT8* pos = memregion("user1")->base();
125   offs_t size;
126
127   if (image.software_entry() == NULL)
128      size = image.length();
129   else
130      size = image.get_software_region_length("rom");
131
132   // max size is 4*32KB
133   if (size >= 0x20000)
134   {
135      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
136      return IMAGE_INIT_FAIL;
137   }
138
139   if (image.software_entry() == NULL)
140   {
141      if (image.fread(pos, size) != size)
142      {
143         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read file");
144         return IMAGE_INIT_FAIL;
145      }
146   }
147   else
148      memcpy(pos, image.get_software_region("rom"), size);
149
150   return IMAGE_INIT_PASS;
151}
152
153
154
155/***************************************************************************
156
103157  Video
104158
105159***************************************************************************/
r31327r31328
112166
113167void cc40_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
114168{
115   ;
169   // reference _________________...
170   // output#  |10  11     12     13     14      0      1      2      3   4
171   // above    | <  SHIFT  CTL    FN     DEG    RAD    GRAD   I/O    UCL  >
172   // ---- raw lcd screen here ----
173   // under    |    ERROR   v      v      v      v      v      v    _LOW
174   // output#  |    60     61     62     63     50     51     52     53
175   output_set_lamp_value(y * 10 + x, state);
116176}
117177
118178static HD44780_PIXEL_UPDATE(cc40_pixel_update)
r31327r31328
126186   else if (line < 2 && pos < 16)
127187   {
128188      // internal: 2*16, external: 1*31 + indicators
129      bitmap.pix16(y, line*16*6 + pos*6 + x) = state;
189      bitmap.pix16(1 + y, 1 + line*16*6 + pos*6 + x) = state;
130190   }
131191}
132192
r31327r31328
140200
141201READ8_MEMBER(cc40_state::bus_control_r)
142202{
143   return m_bus_control;
203   // According to TI's official documentation, this register is set with predefined values
204   // describing system hardware configuration, but there doesn't seem to be any indication
205   // that it's used at all.
206   return 0x4c;
144207}
145208
146WRITE8_MEMBER(cc40_state::bus_control_w)
147{
148   m_bus_control = data;
149}
150
151209WRITE8_MEMBER(cc40_state::power_w)
152210{
153211   // d0: power-on hold latch
r31327r31328
178236WRITE8_MEMBER(cc40_state::bankswitch_w)
179237{
180238   // d0-d1: system rom bankswitch
181   membank("bank1")->set_entry(data & 3);
239   membank("sysbank")->set_entry(data & 3);
182240   
183   // d1-d2: cartridge rom bankswitch
184   
241   // d2-d3: cartridge rom bankswitch
242   membank("cartbank")->set_entry(data >> 2 & 3);
243
185244   m_banks = data & 0x0f;
186245}
187246
r31327r31328
235294static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, cc40_state )
236295   ADDRESS_MAP_UNMAP_HIGH
237296
238   AM_RANGE(0x0110, 0x0110) AM_READWRITE(bus_control_r, bus_control_w)
297   AM_RANGE(0x0110, 0x0110) AM_READ(bus_control_r)
239298   AM_RANGE(0x0111, 0x0111) AM_WRITE(power_w)
240299   AM_RANGE(0x0112, 0x0112) AM_NOP // hexbus data
241300   AM_RANGE(0x0113, 0x0113) AM_NOP // hexbus available
r31327r31328
246305   AM_RANGE(0x011a, 0x011a) AM_READWRITE(clock_r, clock_w)
247306   AM_RANGE(0x011e, 0x011f) AM_DEVREADWRITE("hd44780", hd44780_device, read, write)
248307
249   AM_RANGE(0x0800, 0x0fff) AM_RAM
250   AM_RANGE(0x1000, 0x17ff) AM_RAM
251   AM_RANGE(0x3000, 0x37ff) AM_RAM
252   AM_RANGE(0xd000, 0xefff) AM_ROMBANK("bank1")
308   AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("nvram1")
309   AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("nvram2")
310   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("nvram3")
311
312   AM_RANGE(0x0000, 0x4fff) AM_UNMAP // cartridge rom is at $5000-$cfff - direct address, not relative
313   AM_RANGE(0x0000, 0xcfff) AM_MASK(0x7fff) AM_ROMBANK("cartbank")
314
315   AM_RANGE(0xd000, 0xefff) AM_ROMBANK("sysbank")
253316ADDRESS_MAP_END
254317
255318static ADDRESS_MAP_START( main_io_map, AS_IO, 8, cc40_state )
r31327r31328
322385   PORT_START("IN5")
323386   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') PORT_CHAR('\'')
324387   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("CLR  UCL")
325   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
326   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
327   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
388   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("Cursor Left  DEL")
389   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("Cursor Right  INS")
390   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_NAME("Cursor Up  PB")
328391   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("/")
329   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
392   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_NAME("Cursor Down")
330393   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('9') PORT_CHAR(')')
331394
332395   PORT_START("IN6")
r31327r31328
351414INPUT_PORTS_END
352415
353416
417
354418/***************************************************************************
355419
356420  Machine Config
r31327r31328
360424void cc40_state::machine_reset()
361425{
362426   m_power = 1;
427   
428   address_space &space = m_maincpu->space(AS_PROGRAM);
429   bankswitch_w(space, 0, 0);
363430}
364431
365432void cc40_state::machine_start()
r31327r31328
368435   for (int i = 0; i < 8; i++)
369436      m_key_matrix[i] = ioport(tags[i]);
370437   
371   UINT8 *ROM = memregion("maincpu")->base();
372   membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x2000);
373   membank("bank1")->set_entry(0);
374   
438   membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000);
439   membank("cartbank")->configure_entries(0, 4, memregion("user1")->base(), 0x8000);
440
375441   // zerofill
376442   m_power = 0;
377   m_bus_control = 0;
378443   m_banks = 0;
379444   m_clock_control = 0;
380445   m_key_select = 0;
381446   
382447   // register for savestates
383448   save_item(NAME(m_power));
384   save_item(NAME(m_bus_control));
385449   save_item(NAME(m_banks));
386450   save_item(NAME(m_clock_control));
387451   save_item(NAME(m_key_select));
r31327r31328
394458   MCFG_CPU_PROGRAM_MAP(main_map)
395459   MCFG_CPU_IO_MAP(main_io_map)
396460
461   MCFG_NVRAM_ADD_0FILL("nvram1")
462   MCFG_NVRAM_ADD_0FILL("nvram2")
463   MCFG_NVRAM_ADD_0FILL("nvram3")
464
397465   /* video hardware */
398466   MCFG_SCREEN_ADD("screen", LCD)
399   MCFG_SCREEN_REFRESH_RATE(60)
467   MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
400468   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
401   MCFG_SCREEN_SIZE(6*31, 9*1)
402   MCFG_SCREEN_VISIBLE_AREA(0, 6*31-1, 0, 9*1-1)
469   MCFG_SCREEN_SIZE(6*31+1, 9*1+1)
470   MCFG_SCREEN_VISIBLE_AREA(0, 6*31, 0, 9*1)
403471   MCFG_DEFAULT_LAYOUT(layout_cc40)
404472   MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
405473   MCFG_SCREEN_PALETTE("palette")
r31327r31328
416484
417485   MCFG_DAC_ADD("dac")
418486   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
487
488   /* cartridge */
489   MCFG_CARTSLOT_ADD("cart")
490   MCFG_CARTSLOT_EXTENSION_LIST("256,bin,rom")
491   MCFG_CARTSLOT_NOT_MANDATORY
492   MCFG_CARTSLOT_LOAD(cc40_state, cc40_cartridge)
493   MCFG_CARTSLOT_INTERFACE("cc40_cart")
494   MCFG_SOFTWARE_LIST_ADD("cart_list", "cc40_cart")
419495MACHINE_CONFIG_END
420496
421497
498
422499/***************************************************************************
423500
424501  Game drivers
r31327r31328
426503***************************************************************************/
427504
428505ROM_START( cc40 )
429   ROM_REGION( 0x18000, "maincpu", 0 )
430   ROM_LOAD( "tms70c20.bin", 0xf800, 0x0800, CRC(a21bf6ab) SHA1(3da8435ecbee143e7fa149ee8e1c92949bade1d8) )
431   ROM_LOAD( "cc40.bin", 0x10000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) )
506   ROM_REGION( 0x10000, "maincpu", 0 )
507   ROM_LOAD( "tms70c20.bin", 0xf800, 0x0800, CRC(a21bf6ab) SHA1(3da8435ecbee143e7fa149ee8e1c92949bade1d8) ) // internal cpu rom
508
509   ROM_REGION( 0x8000, "system", 0 )
510   ROM_LOAD( "cc40.bin",     0x0000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) ) // system rom, banked
511   
512   ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) // cartridge area, max 4*32KB
432513ROM_END
433514
434515
435COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", GAME_NOT_WORKING )
516COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", GAME_SUPPORTS_SAVE )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team