mirror of
https://github.com/holub/mame
synced 2025-06-30 07:58:56 +03:00
some tispeak vfd fixes (still need to fix DP segment in snmath)
This commit is contained in:
parent
a726125d5a
commit
8c3e43d56b
@ -2234,6 +2234,7 @@ mbdtower // Milton Bradley
|
||||
|
||||
// hh_tms1k tispeak.c
|
||||
snspell
|
||||
snspellp
|
||||
snspella
|
||||
snspellb
|
||||
snspelluk
|
||||
|
@ -146,6 +146,8 @@ void hh_tms1k_state::machine_start()
|
||||
m_inp_mux = 0;
|
||||
m_power_led = false;
|
||||
m_power_on = false;
|
||||
m_grid = 0;
|
||||
m_plate = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_display_maxy));
|
||||
@ -162,6 +164,8 @@ void hh_tms1k_state::machine_start()
|
||||
save_item(NAME(m_r));
|
||||
save_item(NAME(m_inp_mux));
|
||||
save_item(NAME(m_power_on));
|
||||
save_item(NAME(m_grid));
|
||||
save_item(NAME(m_plate));
|
||||
}
|
||||
|
||||
void hh_tms1k_state::machine_reset()
|
||||
|
@ -48,7 +48,7 @@ above expectations. TI continued to manufacture many products for this line.
|
||||
with no module inserted
|
||||
|
||||
Speak & Spell (US), 1980
|
||||
- MCU: TMC0271* (same as 1979 version)
|
||||
- MCU: same as 1979 version
|
||||
- TMS51xx: TMC0281D
|
||||
- VSM: 16KB CD2350(rev.A)
|
||||
- notes: only 1 VSM, meaning much smaller internal vocabulary
|
||||
@ -74,6 +74,7 @@ above expectations. TI continued to manufacture many products for this line.
|
||||
- MCU: TMC0271* (assume same as US 1979 version)
|
||||
- TMS51xx: CD2801
|
||||
- VSM: 16KB CD62175
|
||||
- VFD: same as Speak & Math(!)
|
||||
- notes: this one has a dedicated voice actor
|
||||
|
||||
Speak & Spell (France) "La Dictee Magique", 1980
|
||||
@ -89,12 +90,14 @@ above expectations. TI continued to manufacture many products for this line.
|
||||
Speak & Spell (Italy) "Grillo Parlante", 1982
|
||||
- MCU & TMS51xx: same as French 1980 version
|
||||
- VSM: 16KB CD62190
|
||||
- VFD: same as Speak & Math
|
||||
- notes: it appears that TI ran out of original snspell VFDs in the early 80s?
|
||||
|
||||
Speak & Spell Compact (US), 1981
|
||||
- MCU: CD8011**
|
||||
- TMS51xx: TMC0281D
|
||||
- VSM: 16KB CD2354, CD2354(rev.A)
|
||||
- notes: no display, MCU is TMS1100 instead of TMS0270
|
||||
- notes: no display, MCU is TMS1100 instead of TMS0270, overall similar to Touch & Tell
|
||||
|
||||
Speak & Spell Compact (UK) "Speak & Write", 1981
|
||||
- MCU & TMS51xx: same as US 1981 version
|
||||
@ -140,6 +143,7 @@ Speak & Math:
|
||||
- TMS51xx: CD2801
|
||||
- VSM(1/2): 16KB CD2392
|
||||
- VSM(2/2): 16KB CD2393
|
||||
- VFD: NEC FIP9xxx
|
||||
- notes: As with the Speak & Spell, the voice actor was a radio announcer.
|
||||
However, the phrase "is greater than or less than" had to be added in a
|
||||
hurry by one of the TI employees in a hurry, the day before a demo.
|
||||
@ -166,6 +170,7 @@ Speak & Read:
|
||||
- TMS51xx: CD2801
|
||||
- VSM(1/2): 16KB CD2394(rev.A)
|
||||
- VSM(2/2): 16KB CD2395(rev.A)
|
||||
- VFD: same as Language Tutor, rightmost digit unused
|
||||
|
||||
Speak & Read modules:
|
||||
|
||||
@ -297,6 +302,7 @@ A later device, called Language Teacher, was released without speech hardware.
|
||||
Language Tutor (US), 1978
|
||||
- MCU: TMC0275*
|
||||
- TMS51xx: CD2801
|
||||
- VFD: NEC FIP10xxx
|
||||
- notes: external module is required (see below)
|
||||
|
||||
Language Tutor modules:
|
||||
@ -344,6 +350,7 @@ Language Tutor modules:
|
||||
|
||||
// internal artwork
|
||||
#include "lantutor.lh"
|
||||
#include "snmath.lh"
|
||||
#include "snspell.lh"
|
||||
#include "tntell.lh" // keyboard overlay
|
||||
|
||||
@ -478,7 +485,7 @@ DRIVER_INIT_MEMBER(tispeak_state, lantutor)
|
||||
|
||||
void tispeak_state::prepare_display()
|
||||
{
|
||||
display_matrix_seg(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0, 0x3fff);
|
||||
display_matrix_seg(16, 16, m_plate, (m_r & 0x8000) ? m_grid : 0, 0x3fff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snspell_write_r)
|
||||
@ -491,14 +498,16 @@ WRITE16_MEMBER(tispeak_state::snspell_write_r)
|
||||
// R15: filament on
|
||||
// other bits: MCU internal use
|
||||
m_r = m_inp_mux = data;
|
||||
m_grid = data & 0x1ff;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snspell_write_o)
|
||||
{
|
||||
// reorder opla to led14seg, plus DP as d14 and AP as d15:
|
||||
// note: lantutor and snread VFD has an accent triangle instead of DP, and no AP
|
||||
// E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
|
||||
m_plate = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
@ -523,9 +532,9 @@ void tispeak_state::snspell_power_off()
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snmath_write_o)
|
||||
{
|
||||
// reorder opla to led14seg, plus DP as d14 and AP as d15:
|
||||
// [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
|
||||
// reorder opla to led14seg, plus DP as d14 and CT as d15:
|
||||
// [DP],D,C,H,F,B,I,M,L,K,N,J,[CT],E,G,A (sidenote: TI KLMN = MAME MLNK)
|
||||
m_plate = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
@ -536,6 +545,7 @@ WRITE16_MEMBER(tispeak_state::lantutor_write_r)
|
||||
{
|
||||
// same as default, except R13 is used for an extra digit
|
||||
m_r = m_inp_mux = data;
|
||||
m_grid = data & 0x21ff;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
@ -909,7 +919,7 @@ static MACHINE_CONFIG_START( snmath, tispeak_state )
|
||||
MCFG_TMS0270_WRITE_PDC_CB(DEVWRITELINE("tms5100", tms5110_device, pdc_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_snspell) // max 9 digits
|
||||
MCFG_DEFAULT_LAYOUT(layout_snmath)
|
||||
|
||||
/* no video! */
|
||||
|
||||
@ -928,6 +938,8 @@ static MACHINE_CONFIG_DERIVED( sns_cd2801, snmath )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_snspell)
|
||||
|
||||
/* cartridge */
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "snspell")
|
||||
MCFG_GENERIC_EXTENSIONS("vsm")
|
||||
@ -950,6 +962,12 @@ static MACHINE_CONFIG_DERIVED( sns_tmc0281d, sns_cd2801 )
|
||||
MCFG_FRAGMENT_ADD(tms5110_route)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( sns_cd2801_m, sns_cd2801 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_DEFAULT_LAYOUT(layout_snmath)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( snread, snmath )
|
||||
|
||||
@ -957,6 +975,8 @@ static MACHINE_CONFIG_DERIVED( snread, snmath )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_lantutor)
|
||||
|
||||
/* cartridge */
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "snread")
|
||||
MCFG_GENERIC_EXTENSIONS("vsm")
|
||||
@ -1025,6 +1045,8 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#define rom_snspellp rom_snspell // until we have a correct dump
|
||||
|
||||
ROM_START( snspell )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // typed in from patent US4189779, verified by 2 sources
|
||||
@ -1289,14 +1311,15 @@ ROM_END
|
||||
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1978, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version/patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||
COMP( 1979, snspella, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // incomplete dump, uses patent MCU ROM
|
||||
COMP( 1978, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // incomplete dump, uses patent MCU ROM
|
||||
COMP( 1978, snspellp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||
COMP( 1979, snspella, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1980, snspellb, snspell, 0, sns_tmc0281d,snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1978, snspelluk, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1981, snspelluka, snspell, 0, sns_cd2801, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1981, snspelluka, snspell, 0, sns_cd2801_m,snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1979, snspelljp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1980, snspellfr, snspell, 0, sns_cd2801, snspell, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
|
||||
COMP( 1982, snspellit, snspell, 0, sns_cd2801, snspell, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
COMP( 1982, snspellit, snspell, 0, sns_cd2801_m,snspell, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
|
||||
|
||||
COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||
COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
@ -1306,8 +1329,8 @@ COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspe
|
||||
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
|
||||
COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU
|
||||
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
|
||||
COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
|
||||
|
||||
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
|
@ -49,6 +49,9 @@ public:
|
||||
int m_display_maxy; // display matrix number of rows
|
||||
int m_display_maxx; // display matrix number of columns (max 31 for now)
|
||||
|
||||
UINT32 m_grid; // VFD current row data
|
||||
UINT32 m_plate; // VFD current column data
|
||||
|
||||
UINT32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
|
||||
UINT16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
|
||||
UINT32 m_display_cache[0x20]; // (internal use)
|
||||
|
@ -20,6 +20,8 @@
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="111" top="0" bottom="19" />
|
||||
|
||||
<!-- 10 digits (snread doesn't use the last digit) -->
|
||||
|
||||
<bezel name="digit0" element="digit"><bounds x="0" y="4" width="10" height="15" /></bezel>
|
||||
<bezel name="digit1" element="digit"><bounds x="11" y="4" width="10" height="15" /></bezel>
|
||||
<bezel name="digit2" element="digit"><bounds x="22" y="4" width="10" height="15" /></bezel>
|
||||
|
@ -25,9 +25,9 @@
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="100" top="0" bottom="15" />
|
||||
<bounds left="0" right="89" top="0" bottom="15" />
|
||||
|
||||
<!-- 9 digits (snspell has 8, snmath has 9) -->
|
||||
<!-- 8 digits -->
|
||||
|
||||
<bezel name="digit0" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
|
||||
<bezel name="lamp14" element="lamp_dp"><bounds x="9" y="13.5" width="1.5" height="1.5" /></bezel>
|
||||
@ -61,9 +61,5 @@
|
||||
<bezel name="lamp714" element="lamp_dp"><bounds x="86" y="13.5" width="1.5" height="1.5" /></bezel>
|
||||
<bezel name="lamp715" element="lamp_ap"><bounds x="87.5" y="0" width="0.5" height="3.5" /></bezel>
|
||||
|
||||
<bezel name="digit8" element="digit"><bounds x="88" y="0" width="10" height="15" /></bezel>
|
||||
<bezel name="lamp814" element="lamp_dp"><bounds x="97" y="13.5" width="1.5" height="1.5" /></bezel>
|
||||
<bezel name="lamp815" element="lamp_ap"><bounds x="98.5" y="0" width="0.5" height="3.5" /></bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
Loading…
Reference in New Issue
Block a user