Previous 199869 Revisions Next

r34290 Friday 9th January, 2015 at 16:03:34 UTC by Couriersud
Merge branch 'master' of https://github.com/mamedev/mame.git
[src/emu/cpu/tms0980]tms0980.c tms0980.h tms0980d.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
r242801r242802
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
784778   // R11: TMS5100 CTL port direction (0=read from TMS5100, 1=write to TMS5100)
785779   m_ctl_dir = m_r >> 11 & 1;
786780
r242801r242802
10841078   // write to output is done in dynamic_output
10851079}
10861080
1087void tms0270_cpu_device::op_off()
1088{
1089   // OFF was moved to R13, handled in dynamic_output
1090}
10911081
10921082
1093
10941083//-------------------------------------------------
10951084//  execute_run
10961085//-------------------------------------------------
trunk/src/emu/cpu/tms0980/tms0980.h
r242801r242802
320320   virtual void op_setr();
321321   virtual void op_rstr();
322322   virtual void op_tdo();
323   virtual void op_off();
324323
325324private:
326325   // state specific to interface with TMS5100
trunk/src/emu/cpu/tms0980/tms0980d.c
r242801r242802
11/*******************************************************************
22
3tms0980d.c
4TMS0980 disassembly
3  TMS0980 disassembly
54
65*******************************************************************/
76
r242801r242802
1716enum e_mnemonics {
1817   zA10AAC=0, zA6AAC, zA8AAC, zAC1AC, zACACC, zACNAA, zALEC, zALEM, zAMAAC, zBRANCH, zCALL, zCCLA,
1918   zCLA, zCLO, zCOMC, zCOMX, zCOMX8, zCPAIZ, zCTMDYN, zDAN, zDMAN, zDMEA, zDNAA,
20   zDYN, zIA, zIMAC, zIYC, zKNE, zKNEZ, zLDP, zLDX, zLDX3, zLDX4, zMNEA, zMNEZ,
19   zDYN, zIA, zIMAC, zIYC, zKNEZ, zLDP, zLDX, zLDX3, zLDX4, zMNEA, zMNEZ,
2120   zNDMEA, zOFF, zRBIT, zREAC, zRETN, zRSTR, zSAL, zSAMAN, zSBIT,
2221   zSBL, zSEAC, zSETR, zTAM, zTAMACS, zTAMDYN, zTAMIY, zTAMIYC, zTAMZA,
2322   zTAY, zTBIT, zTCMIY, zTCY, zTDO, zTKA, zTKM, zTMA,
r242801r242802
2726
2827
2928enum e_addressing {
30   zB0=0, zB2, zI2, zI3, zI4, zB7
29   zB0=0, zI2, zI3, zI4, zB7
3130};
3231
3332
3433static const char *const s_mnemonic[] = {
3534   "a10aac", "a6aac", "a8aac", "ac1ac", "acacc", "acnaa", "alec", "alem", "amaac", "branch", "call", "ccla",
3635   "cla", "clo", "comc", "comx", "comx8", "cpaiz", "ctmdyn", "dan", "dman", "dmea", "dnaa",
37   "dyn", "ia", "imac", "iyc", "kne", "knez", "ldp", "ldx", "ldx", "ldx", "mnea", "mnez",
36   "dyn", "ia", "imac", "iyc", "knez", "ldp", "ldx", "ldx", "ldx", "mnea", "mnez",
3837   "ndmea", "off", "rbit", "reac", "retn", "rstr", "sal", "saman", "sbit",
3938   "sbl", "seac", "setr", "tam", "tamacs", "tamdyn", "tamiy", "tamiyc", "tamza",
4039   "tay", "tbit", "tcmiy", "tcy", "tdo", "tka", "tkm", "tma",
r242801r242802
4645static const UINT32 s_flags[] = {
4746   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _OVER, 0,
4847   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
49   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5049   0, 0, 0, 0, _OUT, 0, 0, 0, 0,
5150   0, 0, 0, 0, 0, 0, 0, 0, 0,
5251   0, 0, 0, 0, 0, 0, 0, 0,
r242801r242802
5857static const UINT8 s_addressing[] = {
5958   zB0, zB0, zB0, zI4, zI4, zI4, zI4, zB0, zB0, zB7, zB7, zB0,
6059   zB0, zB0, zB0, zB0, zB0, zB0, zB0, 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,
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,
6564   zB0, zB0, zB0, zB0, zI4, zB0, zI4,
6665   zB0
6766};
r242801r242802
7069static const UINT8 tms0980_mnemonic[512] = {
7170   /* 0x000 */
7271   zCOMX, zALEM, zYNEA, zXMA, zDYN, zIYC, zCLA, zDMAN,
73   zTKA, zMNEA, zTKM, zILL, zILL, zSETR, zKNE, zILL,
72   zTKA, zMNEA, zTKM, zILL, zILL, zSETR, zKNEZ, zILL,
7473   /* 0x010 */
7574   zDMEA, zDNAA, zCCLA, zNDMEA, zILL, zAMAAC, zILL, zILL,
7675   zCTMDYN, zXDA, zILL, zILL, zILL, zILL, zILL, zILL,
r242801r242802
234233   zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL, zCALL,
235234};
236235
236
237237static const UINT8 tms0980_i2_value[4] =
238238{
239239   0x00, 0x02, 0x01, 0x03
r242801r242802
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 };
250249
251250
252251CPU_DISASSEMBLE( tms0980 ) {
r242801r242802
262261   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
263262
264263   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;
270267   case zI2:
271268      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
272269      break;
r242801r242802
295292   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
296293
297294   switch( s_addressing[instr] ) {
295   default:
298296   case zB0:
299297      break;
300   case zB2:
301      dst += sprintf( dst, "%d", tms0980_bit_value[ op & 3 ] );
302      break;
303298   case zI2:
304299      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
305300      break;
r242801r242802
328323   dst += sprintf( dst, "%-8s ", s_mnemonic[instr] );
329324
330325   switch( s_addressing[instr] ) {
326   default:
331327   case zB0:
332328      break;
333   case zB2:
334      dst += sprintf( dst, "%d", tms0980_bit_value[ op & 3 ] );
335      break;
336329   case zI2:
337330      dst += sprintf( dst, "%d", tms0980_i2_value[ op & 0x03 ] );
338331      break;
trunk/src/mame/drivers/naomi.c
r242801r242802
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
41924193   ROM_LOAD( "rom7.ic7s",    0x3800000, 0x800000, BAD_DUMP CRC(9b59e856) SHA1(7da728695cac132bb0ac59116ca400fff913f966) )
41934194   ROM_LOAD( "rom8.ic8s",    0x4000000, 0x800000, CRC(9bea71f4) SHA1(fa3734b072404612e29ed96b3bcb8d416fbe86e3) )
41944195   ROM_LOAD( "rom9.ic9s",    0x4800000, 0x800000, CRC(6029839d) SHA1(04c078e9422bf34a02f0b618a54981cd615da47d) )
r242801r242802
73717372   ROM_LOAD("317-0298-com.pic", 0x00, 0x4000, CRC(15971bf6) SHA1(815152ab05edb1789a26898cfd66b5a7c4a1f765) )
73727373ROM_END
73737374
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
73747387ROM_START( sprtjam )
73757388   NAOMIGD_BIOS
73767389   NAOMI_DEFAULT_EEPROM
r242801r242802
73787391   DISK_REGION( "gdrom" )
73797392   DISK_IMAGE_READONLY( "gds-0003", 0, SHA1(79a0d8e1aa3e6f660ef4f302d9d54c1a6d2057e3) )
73807393
7394   ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
73817395   //PIC16C622A (317-0300-COM)
73827396   //(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)
73867397   ROM_LOAD("317-0300-com.pic", 0x00, 0x4000, CRC(19a97214) SHA1(bcee1af2c16daabc7a0f723e1f9281a7c95600c6) )
73877398ROM_END
73887399
r242801r242802
90879098/* 0001  */ GAME( 2000, confmiss, naomigd, naomigd,  hotd2,   naomi_state, naomigd, ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
90889099// 0002  Shakatto Tambourine (GDS-0002)
90899100// 0002A Shakatto Tambourine (Rev A) (GDS-0002A)
9090// 0002B Shakatto Tambourine (Rev B) (GDS-0002B)
9101/* 0002B */ GAME( 2000, shaktam,  naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine (Rev B) (GDS-0002B)", GAME_FLAGS )
90919102/* 0003  */ GAME( 2000, sprtjam,  naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Sports Jam (GDS-0003)", GAME_FLAGS )
90929103/* 0004  */ GAME( 2000, slashout, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Slashout (GDS-0004)", GAME_FLAGS )
90939104/* 0005  */ GAME( 2001, spkrbtl,  naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Spikers Battle (GDS-0005)", GAME_FLAGS )
90949105/* 0006  */ GAME( 2001, vstrik3,  naomi2,  naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Striker 3 Ver. 2002 (GDS-0006)", GAME_FLAGS )
9095// 0007  Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
9106// 0007
90969107/* 0008  */ GAME( 2001, monkeyba, naomigd, naomigd,  monkeyba,naomi_state, naomigd, ROT0, "Sega", "Monkey Ball (GDS-0008)", GAME_FLAGS )
90979108// 0009  Dynamic Golf / Virtua Golf
90989109/* 0009A */ GAME( 2001, dygolf,   naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Dynamic Golf / Virtua Golf (Rev A) (GDS-0009A)", GAME_FLAGS )
r242801r242802
91029113// 0012A Virtua Fighter 4 (Rev A)
91039114/* 0012B */ GAME( 2001, vf4b,     vf4,     naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS )
91049115/* 0012C */ GAME( 2001, vf4c,     vf4,     naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Fighter 4 (Rev C) (GDS-0012C)", GAME_FLAGS )
9105/* 0013  */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine 2K1 SPR (GDS-0013)", 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 )
91069117/* 0014  */ GAME( 2001, beachspi, naomi2,  naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS )
91079118// 0015  Virtua Tennis 2 / Power Smash 2
91089119/* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", 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 )
9120/* 0016  */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS )
91109121/* 0017  */ GAME( 2001, keyboard, naomigd, naomigd,  naomi,   naomi_state, naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
91119122/* 0018  */ GAME( 2001, lupinsho, naomigd, naomigd,  hotd2,   naomi_state, naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
91129123// 0018A Lupin The Third - The Shooting (Rev A)
trunk/src/mame/mame.lst
r242801r242802
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)
53785377wwfroyal        // 2000.11 WWF Royal Rumble
53795378sprtjam         // 2000.11.13 Sports Jam
53805379pjustic         // 2000.12 Moero Justice Gakuen / Project Justice
53815380samba2k         // 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)
r242801r242802
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)
53915392dygolf          // 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
53945393monkeyba        // 2001.05 Monkey Ball
53955394zerogu2         // 2001.05 Zero Gunner 2
53965395cvsgd           // 2001.06 Capcom Vs. SNK Millennium Fight 2000 Pro
r242801r242802
54105409derbyoc2        // 2001.10 Derby Owners Club II (Rev B)
54115410inunoos         // 2001.10 Inu No Osanpo / Dog Walking (Rev A)
54125411vtenis2c        // 2001.10 Virtua Tennis 2 / Power Smash 2 (cartridge)
5413shaktamb        // 2001.10.17 Shakatto Tambourine Cho Powerup Chu 2K1 AUT
5412shaktamb        // 2001.10.17 Shakatto Tambourine Cho Powerup Chu (2K1 AUT)
54145413keyboard        // 2001.11 La Keyboard
54155414ikaruga         // 2001.12 Ikaruga
54165415lupinsho        // 2001.12 Lupin the Third: the Shooting
trunk/src/mess/drivers/tispeak.c
r242801r242802
77  (still need to write notes here..)
88
99  Other stuff on similar hardware:
10  - Language Tutor/Translator
1110  - Touch & Tell, but it runs on a TMS1100!
1211  - Speak & Spell Compact, Speak & Write (UK version), TMS1100? TMS0980?
1312  - Speak & Read
r242801r242802
2120#include "bus/generic/slot.h"
2221#include "bus/generic/carts.h"
2322
23#include "lantutor.lh"
2424#include "tispeak.lh"
2525
2626// The master clock is a single stage RC oscillator into TMS5100 RCOSC:
r242801r242802
5757   int m_filament_on;
5858   int m_power_on;
5959
60   UINT16 m_digit_state[9];
60   UINT16 m_digit_state[0x10];
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
6470   DECLARE_READ8_MEMBER(snspell_read_k);
6571   DECLARE_WRITE16_MEMBER(snmath_write_o);
6672   DECLARE_WRITE16_MEMBER(snspell_write_o);
6773   DECLARE_WRITE16_MEMBER(snspell_write_r);
74   DECLARE_WRITE16_MEMBER(lantutor_write_r);
6875
6976   DECLARE_INPUT_CHANGED_MEMBER(power_button);
70   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
7177   void power_off();
7278
73   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
7479   virtual void machine_reset();
7580   virtual void machine_start();
7681};
r242801r242802
8792{
8893   UINT32 size = m_cart->common_get_size("rom");
8994
90   // max size is 16KB
91   if (size > 0x4000)
95   if (size > m_cart_max_size)
9296   {
9397      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
9498      return IMAGE_INIT_FAIL;
r242801r242802
101105}
102106
103107
108DRIVER_INIT_MEMBER(tispeak_state, snspell)
109{
110   m_cart_max_size = 0x4000;
111   m_cart_base = memregion("tms6100")->base() + 0x8000;
112}
104113
114DRIVER_INIT_MEMBER(tispeak_state, lantutor)
115{
116   m_cart_max_size = 0x10000;
117   m_cart_base = memregion("tms6100")->base();
118}
119
120
121
105122/***************************************************************************
106123
107124  VFD Display
r242801r242802
136153   }
137154
138155   // update digit state
139   for (int i = 0; i < 9; i++)
156   for (int i = 0; i < 0x10; i++)
140157      if (m_r >> i & 1)
141158         m_digit_state[i] = m_o;
142159
143160   // send to output
144   for (int i = 0; i < 9; i++)
161   for (int i = 0; i < 0x10; i++)
145162   {
146163      // standard led14seg
147164      output_set_digit_value(i, m_filament_on ? m_digit_state[i] & 0x3fff : 0);
r242801r242802
178195WRITE16_MEMBER(tispeak_state::snspell_write_r)
179196{
180197   // R0-R7: input mux and select digit (+R8 if the device has 9 digits)
181   // R15: filament on
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
182203   // other bits: MCU internal use
183204   m_r = data;
184205   display_update();
r242801r242802
203224   m_power_on = 0;
204225}
205226
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}
212227
213
214228// snmath specific
215229
216230WRITE16_MEMBER(tispeak_state::snmath_write_o)
r242801r242802
223237}
224238
225239
240// lantutor specific
226241
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
227251/***************************************************************************
228252
229253  Inputs
r242801r242802
363387INPUT_PORTS_END
364388
365389
390static INPUT_PORTS_START( lantutor )
391   PORT_INCLUDE( snspell )
366392
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
367421/***************************************************************************
368422
369423  Machine Config
r242801r242802
398452      astring region_tag;
399453      memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
400454      if (src)
401      {
402         UINT8 *dest_ptr = memregion("tms6100")->base() + 0x8000;
403         memcpy(dest_ptr, src->base(), src->bytes());
404      }
455         memcpy(m_cart_base, src->base(), src->bytes());
405456   }
406457}
407458
r242801r242802
413464   MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, snspell_read_k))
414465   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snmath_write_o))
415466   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, snspell_write_r))
416   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(tispeak_state, auto_power_off))
417467
418468   MCFG_TMS0270_READ_CTL_CB(DEVREAD8("tms5100", tms5100_device, ctl_r))
419469   MCFG_TMS0270_WRITE_CTL_CB(DEVWRITE8("tms5100", tms5100_device, ctl_w))
r242801r242802
451501   MCFG_SOFTWARE_LIST_ADD("cart_list", "snspell")
452502MACHINE_CONFIG_END
453503
504static MACHINE_CONFIG_DERIVED( lantutor, snmath )
454505
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))
455510
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
456524/***************************************************************************
457525
458526  Game driver(s)
r242801r242802
553621ROM_END
554622
555623
556
557624ROM_START( snmath )
558625   ROM_REGION( 0x1000, "maincpu", 0 )
559   // typed in from patent 4946391, verified with source code (mark BAD_DUMP just to be unsure)
626   // typed in from patent 4946391, verified with source code
560627   // BTANB note: Mix It does not work at all, this is an original bug in the prototype. There are probably other minor bugs too.
561   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, BAD_DUMP CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) )
628   ROM_LOAD( "us4946391_t2074", 0x0000, 0x1000, CRC(011f0c2d) SHA1(d2e14d72e03ca864abd51da78ffb71a9da82f624) )
562629
563630   ROM_REGION( 1246, "maincpu:ipla", 0 )
564631   ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
r242801r242802
592659ROM_END
593660
594661
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
595665
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
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
602672
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 )
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 )
trunk/src/mess/layout/lantutor.lay
r0r242802
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
r242801r242802
10731073ladictee
10741074snmath
10751075snmatha
1076lantutor
10761077
10771078// Texas Instruments Calculators
10781079tisr16    // 1974 SR-16
trunk/src/mess/mess.mak
r242801r242802
21842184                     $(MESS_LAYOUT)/ti30.lh \
21852185                     $(MESS_LAYOUT)/tisr16.lh \
21862186                     $(MESS_LAYOUT)/wizatron.lh
2187$(MESS_DRIVERS)/tispeak.o:  $(MESS_LAYOUT)/tispeak.lh
2187$(MESS_DRIVERS)/tispeak.o:  $(MESS_LAYOUT)/lantutor.lh \
2188                     $(MESS_LAYOUT)/tispeak.lh
21882189$(MESS_DRIVERS)/tk80.o:     $(MESS_LAYOUT)/tk80.lh
21892190$(MESS_DRIVERS)/tm990189.o: $(MESS_LAYOUT)/tm990189.lh \
21902191                     $(MESS_LAYOUT)/tm990189v.lh
trunk/src/osd/modules/lib/osdlib_win32.c
r242801r242802
77#define WIN32_LEAN_AND_MEAN
88#include <windows.h>
99#include <stdlib.h>
10#ifndef _MSC_VER
1011#include <unistd.h>
12#endif
1113
1214// MAME headers
1315#include "osdlib.h"
trunk/src/osd/modules/sync/sync_ntc.c
r242801r242802
9191   osd_scalable_lock *lock;
9292
9393   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
94   if (lock == NULL)
95      return NULL;
9496
9597   memset(lock, 0, sizeof(*lock));
9698   lock->slot[0].haslock = TRUE;
r242801r242802
208210   osd_lock *lock;
209211
210212   lock = (osd_lock *)calloc(1, sizeof(osd_lock));
213   if (lock == NULL)
214      return NULL;
211215
212216   lock->holder = 0;
213217   lock->count = 0;
r242801r242802
347351   pthread_mutexattr_t mtxattr;
348352
349353   ev = (osd_event *)calloc(1, sizeof(osd_event));
354   if (ev == NULL)
355      return NULL;
350356
351357   pthread_mutexattr_init(&mtxattr);
352358   pthread_mutex_init(&ev->mutex, &mtxattr);
r242801r242802
472478   pthread_attr_t  attr;
473479
474480   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
481   if (thread == NULL)
482      return NULL;
475483   pthread_attr_init(&attr);
476484#ifndef SDLMAME_HAIKU
477485   pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
trunk/src/osd/modules/sync/sync_os2.c
r242801r242802
8080   osd_scalable_lock *lock;
8181
8282   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
83   if (lock == NULL)
84      return NULL;
8385
8486   memset(lock, 0, sizeof(*lock));
8587   lock->slot[0].haslock = TRUE;
r242801r242802
197199   osd_lock *lock;
198200
199201   lock = (osd_lock *)calloc(1, sizeof(osd_lock));
202   if (lock == NULL)
203      return NULL;
200204
201205   lock->holder = 0;
202206   lock->count = 0;
r242801r242802
335339   osd_event *ev;
336340
337341   ev = (osd_event *)calloc(1, sizeof(osd_event));
342   if (ev == NULL)
343      return NULL;
338344
339345   DosCreateMutexSem(NULL, &ev->hmtx, 0, FALSE);
340346   DosCreateEventSem(NULL, &ev->hev, 0, initialstate);
r242801r242802
422428   osd_thread *thread;
423429
424430   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
431   if (thread == NULL)
432      return NULL;
425433   thread->callback = callback;
426434   thread->param = cbparam;
427435   thread->thread = _beginthread(worker_thread_entry, NULL, 65535, thread);
trunk/src/osd/modules/sync/sync_sdl.c
r242801r242802
6767   osd_scalable_lock *lock;
6868
6969   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
70   if (lock == NULL)
71      return NULL;
7072
7173   lock->mutex = SDL_CreateMutex();
7274   return lock;
r242801r242802
100102   hidden_mutex_t *mutex;
101103
102104   mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
105   if (mutex == NULL)
106      return NULL;
103107
104108   mutex->id = SDL_CreateMutex();
105109
r242801r242802
191195   osd_event *ev;
192196
193197   ev = (osd_event *)calloc(1, sizeof(osd_event));
198   if (ev == NULL)
199      return NULL;
194200
195201   ev->mutex = SDL_CreateMutex();
196202   ev->cond = SDL_CreateCond();
r242801r242802
315321   osd_thread *thread;
316322
317323   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
324   if (thread == NULL)
325      return NULL;
318326   thread->callback = callback;
319327   thread->param = cbparam;
320328#ifdef SDLMAME_SDL2
trunk/src/osd/modules/sync/sync_tc.c
r242801r242802
7373   osd_scalable_lock *lock;
7474
7575   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
76   if (lock == NULL)
77      return NULL;
7678
7779   lock->lock = osd_lock_alloc();
7880   return lock;
r242801r242802
108110   pthread_mutexattr_t mtxattr;
109111
110112   mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
113   if (mutex == NULL)
114      return NULL;
111115
112116   pthread_mutexattr_init(&mtxattr);
113117   pthread_mutexattr_settype(&mtxattr, PTHREAD_MUTEX_RECURSIVE);
r242801r242802
182186   pthread_mutexattr_t mtxattr;
183187
184188   ev = (osd_event *)calloc(1, sizeof(osd_event));
189   if (ev == NULL)
190      return NULL;
185191
186192   pthread_mutexattr_init(&mtxattr);
187193   pthread_mutex_init(&ev->mutex, &mtxattr);
r242801r242802
307313   pthread_attr_t  attr;
308314
309315   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
316   if (thread == NULL)
317      return NULL;
310318   pthread_attr_init(&attr);
311319   pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
312320   if ( pthread_create(&thread->thread, &attr, callback, cbparam) != 0 )
trunk/src/osd/modules/sync/sync_windows.c
r242801r242802
271271   uintptr_t handle;
272272
273273   thread = (osd_thread *)calloc(1, sizeof(osd_thread));
274   if (thread == NULL)
275      return NULL;
274276   thread->callback = callback;
275277   thread->param = cbparam;
276278   handle = _beginthreadex(NULL, 0, worker_thread_entry, thread, 0, NULL);
279   if (handle == 0)
280   {
281      free(thread);
282      return NULL;
283   }
277284   thread->handle = (HANDLE) handle;
278285   return thread;
279286}
r242801r242802
320327   osd_scalable_lock *lock;
321328
322329   lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
330   if (lock == NULL)
331      return NULL;
323332
324333   memset(lock, 0, sizeof(*lock));
325334#if USE_SCALABLE_LOCKS


Previous 199869 Revisions Next


© 1997-2024 The MAME Team