Previous 199869 Revisions Next

r34289 Friday 9th January, 2015 at 16:03:20 UTC by Couriersud
Fix bug highlighted by Visual Studio Code Analysis. (nw)
[src/emu/cpu/tms0980]tms0980.c tms0980.h tms0980d.c
[src/emu/netlist]nl_setup.c
[src/mame]mame.lst
[src/mame/drivers]naomi.c
[src/mess]mess.lst mess.mak
[src/mess/drivers]tispeak.c
[src/mess/layout]lantutor.lay
[src/osd/modules/lib]osdlib_win32.c
[src/osd/modules/sync]sync_ntc.c sync_os2.c sync_sdl.c sync_tc.c sync_windows.c

trunk/src/emu/cpu/tms0980/tms0980.c
r242800r242801
775775
776776void tms0270_cpu_device::dynamic_output()
777777{
778   // R15: filament on (handled in the driver)
779   // R14: N/C by default
780   // R13: power off, trigger on falling edge
781   if ((m_r_prev >> 13 & 1) && !(m_r >> 13 & 1))
782      m_power_off(1);
783
778784   // R11: TMS5100 CTL port direction (0=read from TMS5100, 1=write to TMS5100)
779785   m_ctl_dir = m_r >> 11 & 1;
780786
r242800r242801
10781084   // write to output is done in dynamic_output
10791085}
10801086
1087void tms0270_cpu_device::op_off()
1088{
1089   // OFF was moved to R13, handled in dynamic_output
1090}
10811091
10821092
1093
10831094//-------------------------------------------------
10841095//  execute_run
10851096//-------------------------------------------------
trunk/src/emu/cpu/tms0980/tms0980.h
r242800r242801
320320   virtual void op_setr();
321321   virtual void op_rstr();
322322   virtual void op_tdo();
323   virtual void op_off();
323324
324325private:
325326   // state specific to interface with TMS5100
trunk/src/emu/cpu/tms0980/tms0980d.c
r242800r242801
11/*******************************************************************
22
3  TMS0980 disassembly
3tms0980d.c
4TMS0980 disassembly
45
56*******************************************************************/
67
r242800r242801
1617enum e_mnemonics {
1718   zA10AAC=0, zA6AAC, zA8AAC, zAC1AC, zACACC, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, zCALL, zCCLA,
1819   zCLA, zCLO, zCOMC, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, zDAN, zDMAN, zDMEA, zDNAA,
19   zDYN, zIA, zIMAC, zIYC, zKNEZ, zLDP, zLDX, zLDX3, zLDX4, zMNEA, zMNEZ,
20   zDYN, zIA, zIMAC, zIYC, zKNE, zKNEZ, zLDP, zLDX, zLDX3, zLDX4, zMNEA, zMNEZ,
2021   zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, zSAL, zSAMAN, zSBIT,
2122   zSBL, zSEAC, zSETR, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA,
2223   zTAY, zTBIT, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA,
r242800r242801
2627
2728
2829enum e_addressing {
29   zB0=0, zI2, zI3, zI4, zB7
30   zB0=0, zB2, zI2, zI3, zI4, zB7
3031};
3132
3233
3334static const char *const s_mnemonic[] = {
3435   "a10aac", "a6aac", "a8aac", "ac1ac", "acacc", "acnaa", "alec", "alem", "amaac", "branch", "call", "ccla",
3536   "cla", "clo", "comc", "comx", "comx8", "cpaiz", "ctmdyn", "dan", "dman", "dmea", "dnaa",
36   "dyn", "ia", "imac", "iyc", "knez", "ldp", "ldx", "ldx", "ldx", "mnea", "mnez",
37   "dyn", "ia", "imac", "iyc", "kne", "knez", "ldp", "ldx", "ldx", "ldx", "mnea", "mnez",
3738   "ndmea", "off", "rbit", "reac", "retn", "rstr", "sal", "saman", "sbit",
3839   "sbl", "seac", "setr", "tam", "tamacs", "tamdyn", "tamiy", "tamiyc", "tamza",
3940   "tay", "tbit", "tcmiy", "tcy", "tdo", "tka", "tkm", "tma",
r242800r242801
4546static const UINT32 s_flags[] = {
4647   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _OVER, 0,
4748   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950   0, 0, 0, 0, _OUT, 0, 0, 0, 0,
5051   0, 0, 0, 0, 0, 0, 0, 0, 0,
5152   0, 0, 0, 0, 0, 0, 0, 0,
r242800r242801
5758static const UINT8 s_addressing[] = {
5859   zB0, zB0, zB0, zI4, zI4, zI4, zI4, zB0, zB0, zB7, zB7, zB0,
5960   zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0,
60   zB0, zB0, zB0, zB0, zB0, zI4, zI2, zI3, zI4, zB0, zB0,
61   zB0, zB0, zI2, zB0, zB0, zB0, zB0, zB0, zI2,
62   zB0, zB0, zB0, zB0, zI4, zB0, zB0, zB0, zB0,
63   zB0, zI2, zI4, zI4, zB0, zB0, zB0, zB0,
61   zB0, zB0, zB0, zB0, zB0, zB0, zI4, zI2, zI3, zI4, zB0, zB0,
62   zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0, zB0,
63   zB0, zB0, zB0, zB0, zI4, zB0, zB0, zB0, zB2,
64   zB0, zB2, zI4, zI4, zB0, zB0, zB0, zB0,
6465   zB0, zB0, zB0, zB0, zI4, zB0, zI4,
6566   zB0
6667};
r242800r242801
6970static const UINT8 tms0980_mnemonic[512] = {
7071   /* 0x000 */
7172   zCOMX, zALEM, zYNEA, zXMA, zDYN, zIYC, zCLA, zDMAN,
72   zTKA, zMNEA, zTKM, zILL, zILL, zSETR, zKNEZ, zILL,
73   zTKA, zMNEA, zTKM, zILL, zILL, zSETR, zKNE, zILL,
7374   /* 0x010 */
7475   zDMEA, zDNAA, zCCLA, zNDMEA, zILL, zAMAAC, zILL, zILL,
7576   zCTMDYN, zXDA, zILL, zILL, zILL, zILL, zILL, zILL,
r242800r242801
233234   zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL,
234235};
235236
236
237237static const UINT8 tms0980_i2_value[4] =
238238{
239239   0x00, 0x02, 0x01, 0x03
r242800r242801
246246{
247247   0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
248248};
249static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
249250
250251
251252CPU_DISASSEMBLE( tms0980 ) {
r242800r242801
261262   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
262263
263264   switch( s_addressing[instr] ) {
264   default:
265265   case zB0:
266266      break;
267   case zB2:
268      dst += sprintf( dst, "%d", tms0980_bit_value[ op & 3 ] );
269      break;
267270   case zI2:
268271      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
269272      break;
r242800r242801
292295   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
293296
294297   switch( s_addressing[instr] ) {
295   default:
296298   case zB0:
297299      break;
300   case zB2:
301      dst += sprintf( dst, "%d", tms0980_bit_value[ op & 3 ] );
302      break;
298303   case zI2:
299304      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
300305      break;
r242800r242801
323328   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
324329
325330   switch( s_addressing[instr] ) {
326   default:
327331   case zB0:
328332      break;
333   case zB2:
334      dst += sprintf( dst, "%d", tms0980_bit_value[ op & 3 ] );
335      break;
329336   case zI2:
330337      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
331338      break;
trunk/src/emu/netlist/nl_setup.c
r242800r242801
9292template <class T>
9393static void remove_start_with(T &hm, pstring &sw)
9494{
95   for (int i = hm.count() - 1; i >= 0; i++)
95   for (int i = hm.count() - 1; i >= 0; i--)
9696   {
9797      pstring x = hm[i]->name();
9898      if (sw.equals(x.substr(0, sw.len())))
trunk/src/mame/drivers/naomi.c
r242800r242801
41894189   ROM_LOAD( "rom6.ic6s",    0x3000000, 0x800000, CRC(6832dd9f) SHA1(753c1fc998ef4522fae3e93b64f8c442d94e3e97) )
41904190   // note: this fails the ROM test on hardware with the same CRC, so it's not a "bad dump" in the traditional sense.
41914191   // we need someone with a second cartridge to verify if this is a Sega screwup or simply a damaged chip on this cart.
4192   // ROM test passes good with last two zero bytes replaced by 0x09 0x51
41934192   ROM_LOAD( "rom7.ic7s",    0x3800000, 0x800000, BAD_DUMP CRC(9b59e856) SHA1(7da728695cac132bb0ac59116ca400fff913f966) )
41944193   ROM_LOAD( "rom8.ic8s",    0x4000000, 0x800000, CRC(9bea71f4) SHA1(fa3734b072404612e29ed96b3bcb8d416fbe86e3) )
41954194   ROM_LOAD( "rom9.ic9s",    0x4800000, 0x800000, CRC(6029839d) SHA1(04c078e9422bf34a02f0b618a54981cd615da47d) )
r242800r242801
73727371   ROM_LOAD("317-0298-com.pic", 0x00, 0x4000, CRC(15971bf6) SHA1(815152ab05edb1789a26898cfd66b5a7c4a1f765) )
73737372ROM_END
73747373
7375ROM_START( shaktam )
7376   NAOMIGD_BIOS
7377   NAOMI_DEFAULT_EEPROM
7378
7379   DISK_REGION( "gdrom" )
7380   DISK_IMAGE_READONLY( "gds-0002b", 0, SHA1(c656497b44d5ca4743aa1a8d836af2bfa3484dd5) )
7381
7382   ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
7383   // key PIC is missing
7384   ROM_LOAD("317-xxxx-com.pic", 0x00, 0x4000, BAD_DUMP CRC(034b7299) SHA1(45118d5f65b21ae599e3ca8e35df847135708d44) )
7385ROM_END
7386
73877374ROM_START( sprtjam )
73887375   NAOMIGD_BIOS
73897376   NAOMI_DEFAULT_EEPROM
r242800r242801
73917378   DISK_REGION( "gdrom" )
73927379   DISK_IMAGE_READONLY( "gds-0003", 0, SHA1(79a0d8e1aa3e6f660ef4f302d9d54c1a6d2057e3) )
73937380
7394   ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
73957381   //PIC16C622A (317-0300-COM)
73967382   //(sticker 253-5508-0300)
7383   //ROM_LOAD("317-0300-com.data", 0x00, 0x50, CRC(9a08413f) SHA1(d57649dcc3af578d55a93dd7a3f41da62d580f54) )
7384
7385   ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
73977386   ROM_LOAD("317-0300-com.pic", 0x00, 0x4000, CRC(19a97214) SHA1(bcee1af2c16daabc7a0f723e1f9281a7c95600c6) )
73987387ROM_END
73997388
r242800r242801
90989087/* 0001  */ GAME( 2000, confmiss, naomigd, naomigd,  hotd2,   naomi_state, naomigd, ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
90999088// 0002  Shakatto Tambourine (GDS-0002)
91009089// 0002A Shakatto Tambourine (Rev A) (GDS-0002A)
9101/* 0002B */ GAME( 2000, shaktam,  naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine (Rev B) (GDS-0002B)", GAME_FLAGS )
9090// 0002B Shakatto Tambourine (Rev B) (GDS-0002B)
91029091/* 0003  */ GAME( 2000, sprtjam,  naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Sports Jam (GDS-0003)", GAME_FLAGS )
91039092/* 0004  */ GAME( 2000, slashout, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Slashout (GDS-0004)", GAME_FLAGS )
91049093/* 0005  */ GAME( 2001, spkrbtl,  naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Spikers Battle (GDS-0005)", GAME_FLAGS )
91059094/* 0006  */ GAME( 2001, vstrik3,  naomi2,  naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Striker 3 Ver. 2002 (GDS-0006)", GAME_FLAGS )
9106// 0007
9095// 0007  Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
91079096/* 0008  */ GAME( 2001, monkeyba, naomigd, naomigd,  monkeyba,naomi_state, naomigd, ROT0, "Sega", "Monkey Ball (GDS-0008)", GAME_FLAGS )
91089097// 0009  Dynamic Golf / Virtua Golf
91099098/* 0009A */ GAME( 2001, dygolf,   naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Dynamic Golf / Virtua Golf (Rev A) (GDS-0009A)", GAME_FLAGS )
r242800r242801
91139102// 0012A Virtua Fighter 4 (Rev A)
91149103/* 0012B */ GAME( 2001, vf4b,     vf4,     naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS )
91159104/* 0012C */ GAME( 2001, vf4c,     vf4,     naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Fighter 4 (Rev C) (GDS-0012C)", GAME_FLAGS )
9116/* 0013  */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR) (GDS-0013)", GAME_FLAGS )
9105/* 0013  */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine 2K1 SPR (GDS-0013)", GAME_FLAGS )
91179106/* 0014  */ GAME( 2001, beachspi, naomi2,  naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS )
91189107// 0015  Virtua Tennis 2 / Power Smash 2
91199108/* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", GAME_FLAGS )
9120/* 0016  */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS )
9109/* 0016  */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu 2K1 AUT (GDS-0016)", GAME_FLAGS )
91219110/* 0017  */ GAME( 2001, keyboard, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
91229111/* 0018  */ GAME( 2001, lupinsho, naomigd, naomigd,  hotd2,   naomi_state, naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
91239112// 0018A Lupin The Third - The Shooting (Rev A)
trunk/src/mame/mame.lst
r242800r242801
53745374ninjaslt2       // 2000.11 Ninja Assault (NJA2 Ver. A)
53755375ninjaslt        // 2000.11 Ninja Assault (NJA3 Ver. A)
53765376ninjaslt4       // 2000.11 Ninja Assault (NJA4 Ver. A)
5377            // 2000.11 Shakatto Tambourine (Rev B)
53775378wwfroyal        // 2000.11 WWF Royal Rumble
53785379sprtjam         // 2000.11.13 Sports Jam
53795380pjustic         // 2000.12 Moero Justice Gakuen / Project Justice
53805381samba2k         // 2000.12 Samba de Amigo Ver.2000
5381shaktam           // 2000.12.28 Shakatto Tambourine (Rev B)
53825382            // 2000.?? Boat Race Ocean Heats
53835383csmash          // 2000.?? Cosmic Smash
53845384csmasho         // 2000.?? Cosmic Smash (original)
r242800r242801
53885388sfz3ugd         // 2001.02 Street Fighter ZERO3 Upper
53895389gundmgd         // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (GD-ROM)
53905390gundmct         // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (cartridge)
5391shaktmsp        // 2001.04.04 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR)
53925391dygolf          // 2001.04.27 Dynamic Golf / Virtua Golf (Rev A)
5392            // 2001.04 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
5393shaktmsp        // 2001.04.04 Shakatto Tambourine 2K1 SPR
53935394monkeyba        // 2001.05 Monkey Ball
53945395zerogu2         // 2001.05 Zero Gunner 2
53955396cvsgd           // 2001.06 Capcom Vs. SNK Millennium Fight 2000 Pro
r242800r242801
54095410derbyoc2        // 2001.10 Derby Owners Club II (Rev B)
54105411inunoos         // 2001.10 Inu No Osanpo / Dog Walking (Rev A)
54115412vtenis2c        // 2001.10 Virtua Tennis 2 / Power Smash 2 (cartridge)
5412shaktamb        // 2001.10.17 Shakatto Tambourine Cho Powerup Chu (2K1 AUT)
5413shaktamb        // 2001.10.17 Shakatto Tambourine Cho Powerup Chu 2K1 AUT
54135414keyboard        // 2001.11 La Keyboard
54145415ikaruga         // 2001.12 Ikaruga
54155416lupinsho        // 2001.12 Lupin the Third: the Shooting
trunk/src/mess/drivers/tispeak.c
r242800r242801
77  (still need to write notes here..)
88
99  Other stuff on similar hardware:
10  - Language Tutor/Translator
1011  - Touch & Tell, but it runs on a TMS1100!
1112  - Speak & Spell Compact, Speak & Write (UK version), TMS1100? TMS0980?
1213  - Speak & Read
r242800r242801
2021#include "bus/generic/slot.h"
2122#include "bus/generic/carts.h"
2223
23#include "lantutor.lh"
2424#include "tispeak.lh"
2525
2626// The master clock is a single stage RC oscillator into TMS5100 RCOSC:
r242800r242801
5757   int m_filament_on;
5858   int m_power_on;
5959
60   UINT16 m_digit_state[0x10];
60   UINT16 m_digit_state[9];
6161   void display_update();
6262   TIMER_DEVICE_CALLBACK_MEMBER(delayed_filament_off);
6363
64   UINT32 m_cart_max_size;
65   UINT8* m_cart_base;
66   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
67   DECLARE_DRIVER_INIT(snspell);
68   DECLARE_DRIVER_INIT(lantutor);
69
7064   DECLARE_READ8_MEMBER(snspell_read_k);
7165   DECLARE_WRITE16_MEMBER(snmath_write_o);
7266   DECLARE_WRITE16_MEMBER(snspell_write_o);
7367   DECLARE_WRITE16_MEMBER(snspell_write_r);
74   DECLARE_WRITE16_MEMBER(lantutor_write_r);
7568
7669   DECLARE_INPUT_CHANGED_MEMBER(power_button);
70   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
7771   void power_off();
7872
73   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
7974   virtual void machine_reset();
8075   virtual void machine_start();
8176};
r242800r242801
9287{
9388   UINT32 size = m_cart->common_get_size("rom");
9489
95   if (size > m_cart_max_size)
90   // max size is 16KB
91   if (size > 0x4000)
9692   {
9793      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
9894      return IMAGE_INIT_FAIL;
r242800r242801
105101}
106102
107103
108DRIVER_INIT_MEMBER(tispeak_state, snspell)
109{
110   m_cart_max_size = 0x4000;
111   m_cart_base = memregion("tms6100")->base() + 0x8000;
112}
113104
114DRIVER_INIT_MEMBER(tispeak_state, lantutor)
115{
116   m_cart_max_size = 0x10000;
117   m_cart_base = memregion("tms6100")->base();
118}
119
120
121
122105/***************************************************************************
123106
124107  VFD Display
r242800r242801
153136   }
154137
155138   // update digit state
156   for (int i = 0; i < 0x10; i++)
139   for (int i = 0; i < 9; i++)
157140      if (m_r >> i & 1)
158141         m_digit_state[i] = m_o;
159142
160143   // send to output
161   for (int i = 0; i < 0x10; i++)
144   for (int i = 0; i < 9; i++)
162145   {
163146      // standard led14seg
164147      output_set_digit_value(i, m_filament_on ? m_digit_state[i] & 0x3fff : 0);
r242800r242801
195178WRITE16_MEMBER(tispeak_state::snspell_write_r)
196179{
197180   // R0-R7: input mux and select digit (+R8 if the device has 9 digits)
198   // R15: filament on (handled in display_update)
199   // R13: power-off request, on falling edge
200   if ((m_r >> 13 & 1) && !(data >> 13 & 1))
201      power_off();
202
181   // R15: filament on
203182   // other bits: MCU internal use
204183   m_r = data;
205184   display_update();
r242800r242801
224203   m_power_on = 0;
225204}
226205
206WRITE_LINE_MEMBER(tispeak_state::auto_power_off)
207{
208   // power-off request from the MCU, when [OFF] is pressed, also typically after a couple of minutes of idling
209   if (state)
210      power_off();
211}
227212
213
228214// snmath specific
229215
230216WRITE16_MEMBER(tispeak_state::snmath_write_o)
r242800r242801
237223}
238224
239225
240// lantutor specific
241226
242WRITE16_MEMBER(tispeak_state::lantutor_write_r)
243{
244   // same as default, except R13 is used for an extra digit
245   m_r = data;
246   display_update();
247}
248
249
250
251227/***************************************************************************
252228
253229  Inputs
r242800r242801
387363INPUT_PORTS_END
388364
389365
390static INPUT_PORTS_START( lantutor )
391   PORT_INCLUDE( snspell )
392366
393   PORT_MODIFY("IN.5") // R5
394   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Diacritical")
395   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Space")
396
397   PORT_MODIFY("IN.6") // R6
398   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_NAME("1")
399   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("2")
400   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("3")
401   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("4")
402   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("5")
403
404   PORT_MODIFY("IN.7") // R7
405   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("6")
406   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("7")
407   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("8")
408   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_NAME("9")
409   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("0")
410
411   PORT_MODIFY("IN.8") // Vss!
412   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("Translate")
413   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("Learn")
414   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("Phrase")
415   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Link")
416   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("Repeat")
417INPUT_PORTS_END
418
419
420
421367/***************************************************************************
422368
423369  Machine Config
r242800r242801
452398      astring region_tag;
453399      memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
454400      if (src)
455         memcpy(m_cart_base, src->base(), src->bytes());
401      {
402         UINT8 *dest_ptr = memregion("tms6100")->base() + 0x8000;
403         memcpy(dest_ptr, src->base(), src->bytes());
404      }
456405   }
457406}
458407
r242800r242801
464413   MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, snspell_read_k))
465414   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snmath_write_o))
466415   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, snspell_write_r))
416   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(tispeak_state, auto_power_off))
467417
468418   MCFG_TMS0270_READ_CTL_CB(DEVREAD8("tms5100", tms5100_device, ctl_r))
469419   MCFG_TMS0270_WRITE_CTL_CB(DEVWRITE8("tms5100", tms5100_device, ctl_w))
r242800r242801
501451   MCFG_SOFTWARE_LIST_ADD("cart_list", "snspell")
502452MACHINE_CONFIG_END
503453
504static MACHINE_CONFIG_DERIVED( lantutor, snmath )
505454
506   /* basic machine hardware */
507   MCFG_CPU_MODIFY("maincpu")
508   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o))
509   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, lantutor_write_r))
510455
511   MCFG_DEFAULT_LAYOUT(layout_lantutor)
512
513   /* cartridge */
514   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "lantutor")
515   MCFG_GENERIC_MANDATORY
516   MCFG_GENERIC_EXTENSIONS("vsm,bin")
517   MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge)
518
519   MCFG_SOFTWARE_LIST_ADD("cart_list", "lantutor")
520MACHINE_CONFIG_END
521
522
523
524456/***************************************************************************
525457
526458  Game driver(s)
r242800r242801
621553ROM_END
622554
623555
556
624557ROM_START( snmath )
625558   ROM_REGION( 0x1000, "maincpu", 0 )
626   // typed in from patent 4946391, verified with source code
559   // typed in from patent 4946391, verified with source code (mark BAD_DUMP just to be unsure)
627560   // BTANB note: Mix It does not work at all, this is an original bug in the prototype. There are probably other minor bugs too.
628   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) )
561   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, BAD_DUMP CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) )
629562
630563   ROM_REGION( 1246, "maincpu:ipla", 0 )
631564   ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
r242800r242801
659592ROM_END
660593
661594
662ROM_START( lantutor )
663   ROM_REGION( 0x1000, "maincpu", 0 )
664   ROM_LOAD( "us4631748_tmc0275", 0x0000, 0x1000, CRC(22818845) SHA1(1a84f15fb18ca66b1f2bf7491d76fbc56068984d) ) // extracted visually from patent 4631748, verified with source code
665595
666   ROM_REGION( 1246, "maincpu:ipla", 0 )
667   ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
668   ROM_REGION( 2127, "maincpu:mpla", 0 )
669   ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as tmc0275
670   ROM_REGION( 1246, "maincpu:opla", 0 )
671   ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, BAD_DUMP CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // taken from snspell, mostly looks correct
596COMP( 1978, snspell,    0,       0, snspell, snspell, driver_device, 0, "Texas Instruments", "Speak & Spell (US prototype)", GAME_IMPERFECT_SOUND ) // also US set 1
597COMP( 1980, snspella,   snspell, 0, snspell, snspell, driver_device, 0, "Texas Instruments", "Speak & Spell (US set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
598COMP( 1978, snspelluk,  snspell, 0, snspell, snspell, driver_device, 0, "Texas Instruments", "Speak & Spell (UK set 1)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
599COMP( 1981, snspelluka, snspell, 0, snspell, snspell, driver_device, 0, "Texas Instruments", "Speak & Spell (UK set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // different voice actor
600COMP( 1979, snspelljp,  snspell, 0, snspell, snspell, driver_device, 0, "Texas Instruments", "Speak & Spell (Japan)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
601COMP( 1980, ladictee,   snspell, 0, snspell, snspell, driver_device, 0, "Texas Instruments", "La Dictee Magique (France)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // doesn't work due to missing CD2702 MCU dump, German version has CD2702 too
672602
673   ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // cartridge area
674ROM_END
675
676
677
678COMP( 1978, snspell,    0,       0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US prototype)", GAME_IMPERFECT_SOUND ) // also US set 1
679COMP( 1980, snspella,   snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (US set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
680COMP( 1978, snspelluk,  snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK set 1)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
681COMP( 1981, snspelluka, snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (UK set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // different voice actor
682COMP( 1979, snspelljp,  snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "Speak & Spell (Japan)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
683COMP( 1980, ladictee,   snspell, 0, snspell,  snspell,  tispeak_state, snspell,  "Texas Instruments", "La Dictee Magique (France)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // doesn't work due to missing CD2702 MCU dump, German version has CD2702 too
684
685COMP( 1980, snmath,     0,       0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US prototype)", GAME_IMPERFECT_SOUND ) // also US set 1
686COMP( 1986, snmatha,    snmath,  0, snmath,   snmath,   driver_device, 0,        "Texas Instruments", "Speak & Math (US set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
687
688COMP( 1979, lantutor,   0,       0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
603COMP( 1980, snmath,     0,       0, snmath,  snmath,  driver_device, 0, "Texas Instruments", "Speak & Math (US prototype)", GAME_IMPERFECT_SOUND ) // also US set 1
604COMP( 1986, snmatha,    snmath,  0, snmath,  snmath,  driver_device, 0, "Texas Instruments", "Speak & Math (US set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
trunk/src/mess/layout/lantutor.lay
r242800r242801
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4<!-- define elements -->
5
6<!-- note: the TI Language Tutor 14seg digits look different from MAME's default, most notably the right half is wider -->
7
8   <element name="digit" defstate="0">
9      <led14seg><color red="0.2" green="1.0" blue="0.85" /></led14seg>
10   </element>
11
12   <element name="triangle_mark" defstate="0">
13      <text state="0" string="v"><color red="0.0235" green="0.1255" blue="0.1059" /></text>
14      <text state="1" string="v"><color red="0.2" green="1.0" blue="0.85" /></text>
15   </element>
16
17
18<!-- build screen -->
19
20   <view name="Internal Layout">
21      <bounds left="0" right="111" top="0" bottom="19" />
22
23      <bezel name="digit0" element="digit"><bounds x="0" y="4" width="10" height="15" /></bezel>
24      <bezel name="digit1" element="digit"><bounds x="11" y="4" width="10" height="15" /></bezel>
25      <bezel name="digit2" element="digit"><bounds x="22" y="4" width="10" height="15" /></bezel>
26      <bezel name="digit3" element="digit"><bounds x="33" y="4" width="10" height="15" /></bezel>
27      <bezel name="digit4" element="digit"><bounds x="44" y="4" width="10" height="15" /></bezel>
28      <bezel name="digit5" element="digit"><bounds x="55" y="4" width="10" height="15" /></bezel>
29      <bezel name="digit6" element="digit"><bounds x="66" y="4" width="10" height="15" /></bezel>
30      <bezel name="digit7" element="digit"><bounds x="77" y="4" width="10" height="15" /></bezel>
31      <bezel name="digit8" element="digit"><bounds x="88" y="4" width="10" height="15" /></bezel>
32      <bezel name="digit13" element="digit"><bounds x="99" y="4" width="10" height="15" /></bezel>
33
34      <bezel name="lamp0" element="triangle_mark"><bounds x="4" y="0" width="4" height="3" /></bezel>
35      <bezel name="lamp10" element="triangle_mark"><bounds x="15" y="0" width="4" height="3" /></bezel>
36      <bezel name="lamp20" element="triangle_mark"><bounds x="26" y="0" width="4" height="3" /></bezel>
37      <bezel name="lamp30" element="triangle_mark"><bounds x="37" y="0" width="4" height="3" /></bezel>
38      <bezel name="lamp40" element="triangle_mark"><bounds x="48" y="0" width="4" height="3" /></bezel>
39      <bezel name="lamp50" element="triangle_mark"><bounds x="59" y="0" width="4" height="3" /></bezel>
40      <bezel name="lamp60" element="triangle_mark"><bounds x="70" y="0" width="4" height="3" /></bezel>
41      <bezel name="lamp70" element="triangle_mark"><bounds x="81" y="0" width="4" height="3" /></bezel>
42      <bezel name="lamp80" element="triangle_mark"><bounds x="92" y="0" width="4" height="3" /></bezel>
43      <bezel name="lamp130" element="triangle_mark"><bounds x="103" y="0" width="4" height="3" /></bezel>
44
45   </view>
46</mamelayout>
trunk/src/mess/mess.lst
r242800r242801
10731073ladictee
10741074snmath
10751075snmatha
1076lantutor
10771076
10781077// Texas Instruments Calculators
10791078tisr16    // 1974 SR-16
trunk/src/mess/mess.mak
r242800r242801
21842184                     $(MESS_LAYOUT)/ti30.lh \
21852185                     $(MESS_LAYOUT)/tisr16.lh \
21862186                     $(MESS_LAYOUT)/wizatron.lh
2187$(MESS_DRIVERS)/tispeak.o:  $(MESS_LAYOUT)/lantutor.lh \
2188                     $(MESS_LAYOUT)/tispeak.lh
2187$(MESS_DRIVERS)/tispeak.o:  $(MESS_LAYOUT)/tispeak.lh
21892188$(MESS_DRIVERS)/tk80.o:     $(MESS_LAYOUT)/tk80.lh
21902189$(MESS_DRIVERS)/tm990189.o: $(MESS_LAYOUT)/tm990189.lh \
21912190                     $(MESS_LAYOUT)/tm990189v.lh
trunk/src/osd/modules/lib/osdlib_win32.c
r242800r242801
77#define WIN32_LEAN_AND_MEAN
88#include <windows.h>
99#include <stdlib.h>
10#ifndef _MSC_VER
1110#include <unistd.h>
12#endif
1311
1412// MAME headers
1513#include "osdlib.h"
trunk/src/osd/modules/sync/sync_ntc.c
r242800r242801
9191   osd_scalable_lock *lock;
9292
9393   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
94   if (lock == NULL)
95      return NULL;
9694
9795   memset(lock, 0, sizeof(*lock));
9896   lock->slot[0].haslock = TRUE;
r242800r242801
210208   osd_lock *lock;
211209
212210   lock = (osd_lock *)calloc(1, sizeof(osd_lock));
213   if (lock == NULL)
214      return NULL;
215211
216212   lock->holder = 0;
217213   lock->count = 0;
r242800r242801
351347   pthread_mutexattr_t mtxattr;
352348
353349   ev = (osd_event *)calloc(1, sizeof(osd_event));
354   if (ev == NULL)
355      return NULL;
356350
357351   pthread_mutexattr_init(&mtxattr);
358352   pthread_mutex_init(&ev->mutex, &mtxattr);
r242800r242801
478472   pthread_attr_t  attr;
479473
480474   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
481   if (thread == NULL)
482      return NULL;
483475   pthread_attr_init(&attr);
484476#ifndef SDLMAME_HAIKU
485477   pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
trunk/src/osd/modules/sync/sync_os2.c
r242800r242801
8080   osd_scalable_lock *lock;
8181
8282   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
83   if (lock == NULL)
84      return NULL;
8583
8684   memset(lock, 0, sizeof(*lock));
8785   lock->slot[0].haslock = TRUE;
r242800r242801
199197   osd_lock *lock;
200198
201199   lock = (osd_lock *)calloc(1, sizeof(osd_lock));
202   if (lock == NULL)
203      return NULL;
204200
205201   lock->holder = 0;
206202   lock->count = 0;
r242800r242801
339335   osd_event *ev;
340336
341337   ev = (osd_event *)calloc(1, sizeof(osd_event));
342   if (ev == NULL)
343      return NULL;
344338
345339   DosCreateMutexSem(NULL, &ev->hmtx, 0, FALSE);
346340   DosCreateEventSem(NULL, &ev->hev, 0, initialstate);
r242800r242801
428422   osd_thread *thread;
429423
430424   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
431   if (thread == NULL)
432      return NULL;
433425   thread->callback = callback;
434426   thread->param = cbparam;
435427   thread->thread = _beginthread(worker_thread_entry, NULL, 65535, thread);
trunk/src/osd/modules/sync/sync_sdl.c
r242800r242801
6767   osd_scalable_lock *lock;
6868
6969   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
70   if (lock == NULL)
71      return NULL;
7270
7371   lock->mutex = SDL_CreateMutex();
7472   return lock;
r242800r242801
102100   hidden_mutex_t *mutex;
103101
104102   mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
105   if (mutex == NULL)
106      return NULL;
107103
108104   mutex->id = SDL_CreateMutex();
109105
r242800r242801
195191   osd_event *ev;
196192
197193   ev = (osd_event *)calloc(1, sizeof(osd_event));
198   if (ev == NULL)
199      return NULL;
200194
201195   ev->mutex = SDL_CreateMutex();
202196   ev->cond = SDL_CreateCond();
r242800r242801
321315   osd_thread *thread;
322316
323317   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
324   if (thread == NULL)
325      return NULL;
326318   thread->callback = callback;
327319   thread->param = cbparam;
328320#ifdef SDLMAME_SDL2
trunk/src/osd/modules/sync/sync_tc.c
r242800r242801
7373   osd_scalable_lock *lock;
7474
7575   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
76   if (lock == NULL)
77      return NULL;
7876
7977   lock->lock = osd_lock_alloc();
8078   return lock;
r242800r242801
110108   pthread_mutexattr_t mtxattr;
111109
112110   mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
113   if (mutex == NULL)
114      return NULL;
115111
116112   pthread_mutexattr_init(&mtxattr);
117113   pthread_mutexattr_settype(&mtxattr, PTHREAD_MUTEX_RECURSIVE);
r242800r242801
186182   pthread_mutexattr_t mtxattr;
187183
188184   ev = (osd_event *)calloc(1, sizeof(osd_event));
189   if (ev == NULL)
190      return NULL;
191185
192186   pthread_mutexattr_init(&mtxattr);
193187   pthread_mutex_init(&ev->mutex, &mtxattr);
r242800r242801
313307   pthread_attr_t  attr;
314308
315309   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
316   if (thread == NULL)
317      return NULL;
318310   pthread_attr_init(&attr);
319311   pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
320312   if ( pthread_create(&thread->thread, &attr, callback, cbparam) != 0 )
trunk/src/osd/modules/sync/sync_windows.c
r242800r242801
271271   uintptr_t handle;
272272
273273   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
274   if (thread == NULL)
275      return NULL;
276274   thread->callback = callback;
277275   thread->param = cbparam;
278276   handle = _beginthreadex(NULL, 0, worker_thread_entry, thread, 0, NULL);
279   if (handle == 0)
280   {
281      free(thread);
282      return NULL;
283   }
284277   thread->handle = (HANDLE) handle;
285278   return thread;
286279}
r242800r242801
327320   osd_scalable_lock *lock;
328321
329322   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
330   if (lock == NULL)
331      return NULL;
332323
333324   memset(lock, 0, sizeof(*lock));
334325#if USE_SCALABLE_LOCKS


Previous 199869 Revisions Next


© 1997-2024 The MAME Team