Previous 199869 Revisions Next

r34018 Monday 22nd December, 2014 at 20:09:01 UTC by hap
added cartslot
[hash]snspell.xml*
[src/emu/cpu/tms0980]tms0980.c
[src/mess/drivers]tispeak.c

trunk/hash/snspell.xml
r0r242530
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="snspell" description="Speak &amp; Spell modules">
5
6
7   <software name="vpower">
8      <description>Vowel Power</description>
9      <year>1978</year>
10      <publisher>Texas Instruments</publisher>
11      <info name="serial" value="CD2302"/>
12      <part name="cart" interface="snspell">
13         <dataarea name="rom" size="0x4000">
14            <rom name="cd2302.vsm" size="0x4000" crc="e4135cff" sha1="eab92188fb19545f677ede926c2c0b6af26b7e25" offset="0" />
15         </dataarea>
16      </part>
17   </software>
18
19</softwarelist>
trunk/src/emu/cpu/tms0980/tms0980.c
r242529r242530
161161// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling
162162// - 48-term output PLA above the RAM (rotate opla 90 degrees)
163163const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
164// newer TMS0270 chips (eg. Speak & Math) have 42 pins
164165// TMS0260 is similar? except opla is 32 instead of 48 terms
165166
166167
trunk/src/mess/drivers/tispeak.c
r242529r242530
1010#include "cpu/tms0980/tms0980.h"
1111#include "sound/tms5110.h"
1212#include "machine/tms6100.h"
13#include "bus/generic/slot.h"
14#include "bus/generic/carts.h"
1315
1416#include "tispeak.lh"
1517
18// The master clock is a single stage RC oscillator into TMS5100 RCOSC:
19// C is 68pf, R is a 50kohm trimpot wich is set to 33.6kohm. CPUCLK is this/2, ROMCLK is this/4.
20// The osc freq curve is unknown. Let's assume it is set to the default frequency,
21// which is 640kHz according to the TMS5100 documentation.
1622
23#define MASTER_CLOCK (640000)
24
25
1726class tispeak_state : public driver_device
1827{
1928public:
r242529r242530
2231      m_maincpu(*this, "maincpu"),
2332      m_tms5100(*this, "tms5100"),
2433      m_tms6100(*this, "tms6100"),
34      m_cart(*this, "cartslot"),
2535      m_filoff_timer(*this, "filoff"),
2636      m_button_matrix(*this, "IN")
2737   { }
r242529r242530
2939   required_device<tms0270_cpu_device> m_maincpu;
3040   required_device<tms5100_device> m_tms5100;
3141   required_device<tms6100_device> m_tms6100;
42   optional_device<generic_slot_device> m_cart;
3243   required_device<timer_device> m_filoff_timer;
3344   required_ioport_array<9> m_button_matrix;
3445
r242529r242530
5061   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
5162   void power_off();
5263
64   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
5365   virtual void machine_reset();
5466   virtual void machine_start();
5567};
r242529r242530
5870
5971/***************************************************************************
6072
73  File Handling
74
75***************************************************************************/
76
77DEVICE_IMAGE_LOAD_MEMBER(tispeak_state, tispeak_cartridge)
78{
79   UINT32 size = m_cart->common_get_size("rom");
80
81   // max size is 16KB
82   if (size > 0x4000)
83   {
84      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
85      return IMAGE_INIT_FAIL;
86   }
87
88   m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
89   m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
90
91   return IMAGE_INIT_PASS;
92}
93
94
95
96/***************************************************************************
97
6198  VFD Display
6299
63100***************************************************************************/
r242529r242530
188225{
189226   int on = (int)(FPTR)param;
190227   
191   if (on)
228   if (on && !m_power_on)
192229   {
193230      m_power_on = 1;
194231      m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
195232   }
196   else if (m_power_on)
233   else if (!on && m_power_on)
197234      power_off();
198235}
199236
r242529r242530
345382   save_item(NAME(m_o));
346383   save_item(NAME(m_filament_on));
347384   save_item(NAME(m_power_on));
385   
386   // init cartridge
387   astring region_tag;
388   memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
389   if (src)
390   {
391      UINT8 *dest_ptr = memregion("tms6100")->base() + 0x8000;
392      memcpy(dest_ptr, src->base(), src->bytes());
393   }
348394}
349395
350396
351static MACHINE_CONFIG_START( snspell, tispeak_state )
397static MACHINE_CONFIG_START( snmath, tispeak_state )
352398
353399   /* basic machine hardware */
354   MCFG_CPU_ADD("maincpu", TMS0270, XTAL_640kHz/2)
400   MCFG_CPU_ADD("maincpu", TMS0270, MASTER_CLOCK/2)
355401   MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, snspell_read_k))
356   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o))
402   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snmath_write_o))
357403   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, snspell_write_r))
358404   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(tispeak_state, auto_power_off))
359405
r242529r242530
367413   /* no video! */
368414
369415   /* sound hardware */
370   MCFG_DEVICE_ADD("tms6100", TMS6100, 0)
416   MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
371417
372418   MCFG_SPEAKER_STANDARD_MONO("mono")
373   MCFG_SOUND_ADD("tms5100", TMS5100, XTAL_640kHz)
419   MCFG_SOUND_ADD("tms5100", TMS5100, MASTER_CLOCK)
374420   MCFG_TMS5110_M0_CB(DEVWRITELINE("tms6100", tms6100_device, tms6100_m0_w))
375421   MCFG_TMS5110_M1_CB(DEVWRITELINE("tms6100", tms6100_device, tms6100_m1_w))
376422   MCFG_TMS5110_ADDR_CB(DEVWRITE8("tms6100", tms6100_device, tms6100_addr_w))
r242529r242530
379425   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
380426MACHINE_CONFIG_END
381427
382static MACHINE_CONFIG_DERIVED( snmath, snspell )
428static MACHINE_CONFIG_DERIVED( snspell, snmath )
383429
384430   /* basic machine hardware */
385431   MCFG_CPU_MODIFY("maincpu")
386   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snmath_write_o))
432   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o))
433   
434   /* cartridge */
435   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "snspell")
436   MCFG_GENERIC_EXTENSIONS("vsm")
437   MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge)
438
439   MCFG_SOFTWARE_LIST_ADD("cart_list", "snspell")
387440MACHINE_CONFIG_END
388441
389442
r242529r242530
405458   ROM_REGION( 1246, "maincpu:opla", 0 )
406459   ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
407460
408   ROM_REGION( 0x8000, "tms6100", 0 )
461   ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
409462   ROM_LOAD( "tmc0351.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) )
410463   ROM_LOAD( "tmc0352.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) )
411464ROM_END
412465
413466ROM_START( snmath )
414467   ROM_REGION( 0x1000, "maincpu", 0 )
415   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, BAD_DUMP CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) ) // typed in from patent 4946391, verified with source code (mark BAD_DUMP just to be unsure)
468   // typed in from patent 4946391, verified with source code (mark BAD_DUMP just to be unsure)
469   // BTANB note: Mix It does not work at all, this is an original bug in the prototype. There are probably other minor bugs too.
470   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, BAD_DUMP CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) )
416471
417472   ROM_REGION( 1246, "maincpu:ipla", 0 )
418473   ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team