mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
spellb: disconnect from hh_tms1k_state class
This commit is contained in:
parent
c1636c4dcf
commit
99b033cfd2
@ -24,7 +24,7 @@ license:CC0-1.0
|
||||
</software>
|
||||
|
||||
<software name="capa">
|
||||
<description>Capablanca Edition - Master Chess Endgame</description>
|
||||
<description>Capablanca Edition: Master Chess Endgame</description>
|
||||
<year>1981</year>
|
||||
<publisher>Applied Concepts</publisher>
|
||||
<part name="cart" interface="ggm">
|
||||
@ -38,7 +38,7 @@ license:CC0-1.0
|
||||
</software>
|
||||
|
||||
<software name="morphy">
|
||||
<description>Morphy Edition - Master Chess</description>
|
||||
<description>Morphy Edition: Master Chess</description>
|
||||
<year>1981</year>
|
||||
<publisher>Applied Concepts</publisher>
|
||||
<part name="cart" interface="ggm">
|
||||
@ -53,7 +53,7 @@ license:CC0-1.0
|
||||
</software>
|
||||
|
||||
<software name="sandy" cloneof="morphy">
|
||||
<description>Sandy Edition - Master Chess</description>
|
||||
<description>Sandy Edition: Master Chess</description>
|
||||
<year>1981</year>
|
||||
<publisher>Sandy Electronic</publisher>
|
||||
<part name="cart" interface="ggm">
|
||||
@ -68,7 +68,7 @@ license:CC0-1.0
|
||||
</software>
|
||||
|
||||
<software name="steinitz">
|
||||
<description>Steinitz Edition-4 - Master Chess</description>
|
||||
<description>Steinitz Edition-4: Master Chess</description>
|
||||
<year>1982</year>
|
||||
<publisher>Applied Concepts</publisher>
|
||||
<part name="cart" interface="ggm">
|
||||
|
@ -56,8 +56,8 @@ public:
|
||||
void clear_row(offs_t offset, u64 data = 0) { sync(); m_rowdata[offset] = 0; m_rowsel &= ~(u64(1) << offset); }
|
||||
|
||||
// directly handle element current brightness
|
||||
double read_element_bri(u8 y, u8 x) { return m_bri[y][x]; }
|
||||
void write_element_bri(u8 y, u8 x, double b) { m_bri[y][x] = b; }
|
||||
double read_element_bri(u8 y, u8 x) { sync(); return m_bri[y][x]; }
|
||||
void write_element_bri(u8 y, u8 x, double b) { sync(); m_bri[y][x] = b; }
|
||||
bool element_on(u8 y, u8 x) { return (read_element_bri(y, x) > m_levels[m_level_min]); }
|
||||
bool row_on(u8 y) { return element_on(y, m_width); }
|
||||
|
||||
|
@ -201,7 +201,7 @@ INPUT_PORTS_END
|
||||
|
||||
void boris_state::boris(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
F8(config, m_maincpu, 2_MHz_XTAL); // MK3850
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &boris_state::main_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &boris_state::main_io);
|
||||
@ -210,7 +210,7 @@ void boris_state::boris(machine_config &config)
|
||||
f3853_device &smi(F3853(config, "smi", 2_MHz_XTAL));
|
||||
smi.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(8, 16);
|
||||
m_display->set_segmask(0xff, 0xffff);
|
||||
m_display->set_bri_levels(0.05);
|
||||
|
@ -11,9 +11,9 @@ Hardware notes:
|
||||
- 8-digit 7seg led panel
|
||||
|
||||
Two versions exist, a blue one(seen with SC80265P) and a brown one(seen with
|
||||
either MCU). The one emulated here is from a brown version with the SC80265P.
|
||||
Motorola SC80265P is a 3870 clone, it's assumed that the program is the same
|
||||
as SL90259.
|
||||
either SC80265P or SL90259). The one emulated here is from a brown version with
|
||||
the SC80265P. Motorola SC80265P is a 3870 clone, it's assumed that the program
|
||||
is the same as SL90259.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
@ -182,7 +182,7 @@ INPUT_PORTS_END
|
||||
|
||||
void borisdpl_state::borisdpl(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
F8(config, m_maincpu, 3000000/2); // frequency approximated from video reference
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &borisdpl_state::main_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &borisdpl_state::main_io);
|
||||
@ -196,7 +196,7 @@ void borisdpl_state::borisdpl(machine_config &config)
|
||||
psu.read_b().set(FUNC(borisdpl_state::ram_address_r));
|
||||
psu.write_b().set(FUNC(borisdpl_state::ram_address_w));
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(8, 7);
|
||||
m_display->set_segmask(0xff, 0x7f);
|
||||
config.set_default_layout(layout_aci_borisdpl);
|
||||
|
@ -18,22 +18,22 @@ There were also some standalone machines, eg. Morphy Encore, Odin Encore.
|
||||
Cartridge pins are A0-A15, D0-D7, external RAM CS and RAM WR.
|
||||
|
||||
The opening/endgame cartridges are meant to be ejected/inserted while playing:
|
||||
switch power switch to MEM (internal RAM gets powered by rechargable battery),
|
||||
swap cartridge, switch power switch back to ON. In other words, don't power
|
||||
cycle the machine (or MAME).
|
||||
Press RANK, switch power switch to MEM (internal RAM gets powered by rechargable
|
||||
battery), swap cartridge, switch power switch back to ON. In other words, don't
|
||||
power cycle the machine (or MAME).
|
||||
|
||||
Known chess cartridges (*denotes not dumped):
|
||||
- Chess/Boris 2.5 (aka Sargon 2.5)
|
||||
- *Gruenfeld Edition - Master Chess Openings
|
||||
- Morphy Edition - Master Chess
|
||||
- Capablanca Edition - Master Chess Endgame
|
||||
- Sandy Edition - Master Chess (German language version of Morphy)
|
||||
- Steinitz Edition-4 - Master Chess
|
||||
- *Monitor Edition - Master Kriegspiel
|
||||
- *Gruenfeld Edition: Master Chess Openings
|
||||
- Morphy Edition: Master Chess
|
||||
- Capablanca Edition: Master Chess Endgame
|
||||
- Sandy Edition: Master Chess (German language version of Morphy)
|
||||
- Steinitz Edition-4: Master Chess
|
||||
- *Monitor Edition: Master Kriegspiel
|
||||
|
||||
Other games:
|
||||
- *Borchek Edition - Master Checkers
|
||||
- *Odin Edition - Master Reversi
|
||||
- *Borchek Edition: Master Checkers
|
||||
- *Odin Edition: Master Reversi
|
||||
- *Las Vegas 21
|
||||
- *Wits End (unreleased?)
|
||||
- *Lunar Lander (unreleased?)
|
||||
@ -134,6 +134,12 @@ void ggm_state::machine_start()
|
||||
save_item(NAME(m_shift_clock));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Power
|
||||
******************************************************************************/
|
||||
|
||||
void ggm_state::machine_reset()
|
||||
{
|
||||
// it determines whether it's a cold boot or warm boot ("MEM" switch), with CA1
|
||||
@ -161,11 +167,9 @@ void ggm_state::update_reset(ioport_value state)
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
Cartridge
|
||||
******************************************************************************/
|
||||
|
||||
// cartridge
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER(ggm_state::load_cart)
|
||||
{
|
||||
u32 size = m_cart->common_get_size("rom");
|
||||
@ -206,7 +210,10 @@ void ggm_state::extram_w(offs_t offset, u8 data)
|
||||
}
|
||||
|
||||
|
||||
// 6522 ports
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
******************************************************************************/
|
||||
|
||||
void ggm_state::update_display()
|
||||
{
|
||||
@ -240,7 +247,8 @@ void ggm_state::select_w(u8 data)
|
||||
|
||||
void ggm_state::control_w(u8 data)
|
||||
{
|
||||
// PB0: DC/DC converter, toggles once per IRQ (probably for VFD, not needed for emulation)
|
||||
// PB0: DC/DC converter, toggles once per IRQ
|
||||
// (probably for VFD, not needed for emulation)
|
||||
|
||||
// PB7: speaker out
|
||||
m_dac->write(BIT(data, 7));
|
||||
@ -434,7 +442,7 @@ INPUT_PORTS_END
|
||||
|
||||
void ggm_state::ggm(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
M6502(config, m_maincpu, 2_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ggm_state::main_map);
|
||||
|
||||
@ -449,17 +457,17 @@ void ggm_state::ggm(machine_config &config)
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(8, 16);
|
||||
m_display->set_segmask(0xff, 0x3fff);
|
||||
m_display->set_bri_levels(0.05);
|
||||
config.set_default_layout(layout_aci_ggm);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||
|
||||
/* cartridge */
|
||||
// cartridge
|
||||
GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "ggm");
|
||||
m_cart->set_device_load(FUNC(ggm_state::load_cart));
|
||||
m_cart->set_device_unload(FUNC(ggm_state::unload_cart));
|
||||
|
@ -254,7 +254,7 @@ INPUT_PORTS_END
|
||||
|
||||
void prodigy_state::prodigy(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
M6502(config, m_maincpu, 2_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &prodigy_state::main_map);
|
||||
|
||||
@ -270,12 +270,12 @@ void prodigy_state::prodigy(machine_config &config)
|
||||
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
|
||||
m_board->set_delay(attotime::from_msec(150));
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(6, 8);
|
||||
m_display->set_segmask(0xf, 0xff);
|
||||
config.set_default_layout(layout_aci_prodigy);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ uint32_t chessking_state::screen_update(screen_device &screen, bitmap_rgb32 &bit
|
||||
uint8_t data2 = m_videoram[0x6000 + offset + x/8];
|
||||
uint8_t pix = BIT(data, ~x & 7) | BIT(data2, ~x & 7) << 1;
|
||||
|
||||
rgb_t pens[4] = { rgb_t::white(), rgb_t(0x55,0x55,0x55), rgb_t(0xaa,0xaa,0xaa), rgb_t::black() };
|
||||
static const rgb_t pens[4] = { rgb_t::white(), rgb_t(0x55,0x55,0x55), rgb_t(0xaa,0xaa,0xaa), rgb_t::black() };
|
||||
dst[x] = pens[pix];
|
||||
}
|
||||
}
|
||||
@ -353,8 +353,8 @@ void chessking_state::chesskng(machine_config &config)
|
||||
******************************************************************************/
|
||||
|
||||
ROM_START( chesskng )
|
||||
ROM_REGION( 0x040000, "maincpu", 0 )
|
||||
ROM_LOAD( "etmate-cch.u6", 0x000000, 0x040000, CRC(a4d1764b) SHA1(ccfae1e985f6ad316ff192206fbc0f8bcd4e44d5) )
|
||||
ROM_REGION( 0x40000, "maincpu", 0 )
|
||||
ROM_LOAD( "etmate-cch.u6", 0x00000, 0x40000, CRC(a4d1764b) SHA1(ccfae1e985f6ad316ff192206fbc0f8bcd4e44d5) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
@ -61,6 +61,7 @@ public:
|
||||
gmaster_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_ram(*this, "ram"),
|
||||
m_lcd(*this, "lcd%u", 0),
|
||||
m_screen(*this, "screen"),
|
||||
m_speaker(*this, "speaker")
|
||||
@ -73,6 +74,7 @@ protected:
|
||||
|
||||
private:
|
||||
required_device<upd78c11_device> m_maincpu;
|
||||
required_shared_ptr<u8> m_ram;
|
||||
required_device_array<sed1520_device, 2> m_lcd;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
@ -86,13 +88,11 @@ private:
|
||||
|
||||
void main_map(address_map &map);
|
||||
|
||||
u8 m_ram[0x800] = { };
|
||||
u8 m_chipsel = 0;
|
||||
};
|
||||
|
||||
void gmaster_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_ram));
|
||||
save_item(NAME(m_chipsel));
|
||||
}
|
||||
|
||||
@ -171,7 +171,7 @@ void gmaster_state::io_w(offs_t offset, u8 data)
|
||||
void gmaster_state::main_map(address_map &map)
|
||||
{
|
||||
// 0x0000-0x0fff is internal ROM
|
||||
map(0x4000, 0x47ff).mirror(0x3800).rw(FUNC(gmaster_state::io_r), FUNC(gmaster_state::io_w));
|
||||
map(0x4000, 0x47ff).mirror(0x3800).rw(FUNC(gmaster_state::io_r), FUNC(gmaster_state::io_w)).share("ram");
|
||||
map(0x8000, 0xfeff).r("cartslot", FUNC(generic_slot_device::read_rom));
|
||||
// 0xff00-0xffff is internal RAM
|
||||
}
|
||||
|
@ -681,7 +681,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
|
||||
// which one is active(if any). If it matches with the internal ROM or
|
||||
// external module, the game continues.
|
||||
|
||||
// pick overlay code from machine config, see comment section above for reference
|
||||
// pick overlay code from input config, see comment section above for reference
|
||||
m_overlay = m_inputs[10]->read();
|
||||
|
||||
// try to get it from (external) layout
|
||||
|
@ -3,86 +3,99 @@
|
||||
// thanks-to:Sean Riddle
|
||||
/***************************************************************************
|
||||
|
||||
** subclass of hh_tms1k_state (hh_tms1k.h, hh_tms1k.cpp) **
|
||||
Texas Instruments Spelling B hardware
|
||||
|
||||
Texas Instruments Spelling B hardware
|
||||
The Spelling B was introduced together with the Speak & Spell. It is a
|
||||
handheld educational toy with booklet. Two revisions of the hardware exist.
|
||||
|
||||
The Spelling B was introduced together with the Speak & Spell. It is a
|
||||
handheld educational toy with booklet. Two revisions of the hardware exist.
|
||||
1st version:
|
||||
|
||||
1st version:
|
||||
Spelling B (US), 1978
|
||||
- TMS0270 MCU TMC0272 (die label: 0272A T0270B)
|
||||
- TMS1980 MCU TMC1984 (die label: 1980A 84A)
|
||||
- 8-digit cyan VFD (seen with and without apostrophe)
|
||||
|
||||
Spelling B (US), 1978
|
||||
- TMS0270 MCU TMC0272 (die label: 0272A T0270B)
|
||||
- TMS1980 MCU TMC1984 (die label: 1980A 84A)
|
||||
- 8-digit cyan VFD (seen with and without apostrophe)
|
||||
2nd version:
|
||||
|
||||
2nd version:
|
||||
Spelling B (US), 1980
|
||||
- TMS0270 MCU TMC0274
|
||||
- TMC0355 4KB VSM ROM CD2602
|
||||
- 8-digit cyan VFD
|
||||
- 1-bit sound (indicated by a music note symbol on the top-right of the casing)
|
||||
- note: much rarer than the 1978 version, not much luck finding one on eBay.
|
||||
The words/indexes from the documentation are the same as the older version.
|
||||
|
||||
Spelling B (US), 1980
|
||||
- TMS0270 MCU TMC0274
|
||||
- TMC0355 4KB VSM ROM CD2602
|
||||
- 8-digit cyan VFD
|
||||
- 1-bit sound (indicated by a music note symbol on the top-right of the casing)
|
||||
- note: much rarer than the 1978 version, not much luck finding one on eBay.
|
||||
The words/indexes from the documentation are the same as the older version.
|
||||
Spelling ABC (UK), 1980: exact same hardware as US 2nd version (the 1st version
|
||||
was also sold in the UK earlier, but not renamed)
|
||||
|
||||
Spelling ABC (UK), 1980: exact same hardware as US 2nd version (the 1st version
|
||||
was also sold in the UK earlier, but not renamed)
|
||||
Spelling ABC (Germany), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2607
|
||||
|
||||
Spelling ABC (Germany), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2607
|
||||
Mr. Challenger (US), 1979
|
||||
- TMS0270 MCU TMC0273
|
||||
- TMC0355 4KB VSM ROM CD2601
|
||||
- 8-digit cyan VFD
|
||||
- 1-bit sound
|
||||
|
||||
Mr. Challenger (US), 1979
|
||||
- TMS0270 MCU TMC0273
|
||||
- TMC0355 4KB VSM ROM CD2601
|
||||
- 8-digit cyan VFD
|
||||
- 1-bit sound
|
||||
Letterlogic (UK), 1980: exact same hardware as US Mr. Challenger
|
||||
- note: stylized as "LETTERlogic", same for other language versions
|
||||
|
||||
Letterlogic (UK), 1980: exact same hardware as US Mr. Challenger
|
||||
- note: stylized as "LETTERlogic", same for other language versions
|
||||
Letterlogic (France), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2603
|
||||
|
||||
Letterlogic (France), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2603
|
||||
|
||||
Letterlogic (Germany), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2604
|
||||
Letterlogic (Germany), 1980: different VSM
|
||||
- TMC0355 4KB VSM ROM CD2604
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "hh_tms1k.h"
|
||||
|
||||
#include "cpu/tms1000/tms0270.h"
|
||||
#include "cpu/tms1000/tms0980.h"
|
||||
#include "machine/tms6100.h"
|
||||
#include "sound/spkrdev.h"
|
||||
#include "video/pwm.h"
|
||||
|
||||
#include "speaker.h"
|
||||
|
||||
// internal artwork
|
||||
#include "spellb.lh"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class tispellb_state : public hh_tms1k_state
|
||||
class spellb_state : public driver_device
|
||||
{
|
||||
public:
|
||||
tispellb_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
hh_tms1k_state(mconfig, type, tag),
|
||||
spellb_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_subcpu(*this, "subcpu"),
|
||||
m_tms6100(*this, "tms6100")
|
||||
m_tms6100(*this, "tms6100"),
|
||||
m_display(*this, "display"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_inputs(*this, "IN.%u", 0)
|
||||
{ }
|
||||
|
||||
void rev1(machine_config &config);
|
||||
void rev2(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(power_on);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
// devices
|
||||
required_device<tms1k_base_device> m_maincpu;
|
||||
optional_device<tms1k_base_device> m_subcpu;
|
||||
optional_device<tms6100_device> m_tms6100;
|
||||
required_device<pwm_display_device> m_display;
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
required_ioport_array<8> m_inputs;
|
||||
|
||||
u8 m_rev1_ctl = 0;
|
||||
u16 m_sub_o = 0;
|
||||
u16 m_sub_r = 0;
|
||||
|
||||
virtual void set_power(bool state) override;
|
||||
void power_off();
|
||||
void power_subcpu();
|
||||
void update_display();
|
||||
|
||||
@ -99,61 +112,87 @@ private:
|
||||
void rev2_write_o(u16 data);
|
||||
void rev2_write_r(u32 data);
|
||||
|
||||
virtual void machine_start() override;
|
||||
bool m_power_on = false;
|
||||
u32 m_r = 0;
|
||||
u16 m_grid = 0;
|
||||
u16 m_plate = 0;
|
||||
u16 m_sub_o = 0;
|
||||
u16 m_sub_r = 0;
|
||||
u8 m_rev1_ctl = 0;
|
||||
};
|
||||
|
||||
void tispellb_state::machine_start()
|
||||
void spellb_state::machine_start()
|
||||
{
|
||||
hh_tms1k_state::machine_start();
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_rev1_ctl));
|
||||
save_item(NAME(m_power_on));
|
||||
save_item(NAME(m_r));
|
||||
save_item(NAME(m_grid));
|
||||
save_item(NAME(m_plate));
|
||||
save_item(NAME(m_sub_o));
|
||||
save_item(NAME(m_sub_r));
|
||||
save_item(NAME(m_rev1_ctl));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
/******************************************************************************
|
||||
Power
|
||||
******************************************************************************/
|
||||
|
||||
I/O
|
||||
void spellb_state::machine_reset()
|
||||
{
|
||||
m_power_on = true;
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
|
||||
power_subcpu();
|
||||
}
|
||||
|
||||
***************************************************************************/
|
||||
INPUT_CHANGED_MEMBER(spellb_state::power_on)
|
||||
{
|
||||
if (newval && !m_power_on)
|
||||
machine_reset();
|
||||
}
|
||||
|
||||
// common
|
||||
void spellb_state::power_off()
|
||||
{
|
||||
m_power_on = false;
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||
power_subcpu();
|
||||
|
||||
void tispellb_state::power_subcpu()
|
||||
m_display->clear();
|
||||
}
|
||||
|
||||
void spellb_state::power_subcpu()
|
||||
{
|
||||
if (m_subcpu)
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, m_power_on ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
void tispellb_state::set_power(bool state)
|
||||
{
|
||||
hh_tms1k_state::set_power(state);
|
||||
power_subcpu();
|
||||
}
|
||||
|
||||
void tispellb_state::update_display()
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
******************************************************************************/
|
||||
|
||||
// common
|
||||
|
||||
void spellb_state::update_display()
|
||||
{
|
||||
// almost same as snspell
|
||||
u16 gridmask = m_display->row_on(15) ? 0xffff : 0x8000;
|
||||
m_display->matrix(m_grid & gridmask, m_plate);
|
||||
}
|
||||
|
||||
void tispellb_state::main_write_o(u16 data)
|
||||
void spellb_state::main_write_o(u16 data)
|
||||
{
|
||||
// reorder opla to led14seg, plus DP as d14 and AP as d15, same as snspell
|
||||
m_plate = bitswap<16>(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
|
||||
update_display();
|
||||
}
|
||||
|
||||
void tispellb_state::main_write_r(u32 data)
|
||||
void spellb_state::main_write_r(u32 data)
|
||||
{
|
||||
// R0-R6: input mux
|
||||
// R0-R7: select digit
|
||||
// R15: filament on
|
||||
m_inp_mux = data & 0x7f;
|
||||
m_grid = data & 0x80ff;
|
||||
update_display();
|
||||
|
||||
@ -161,25 +200,33 @@ void tispellb_state::main_write_r(u32 data)
|
||||
if (~data & m_r & 0x2000)
|
||||
power_off();
|
||||
|
||||
// R0-R6: input mux
|
||||
m_r = data;
|
||||
}
|
||||
|
||||
u8 tispellb_state::main_read_k()
|
||||
u8 spellb_state::main_read_k()
|
||||
{
|
||||
// K: multiplexed inputs (note: the Vss row is always on)
|
||||
return m_inputs[7]->read() | read_inputs(7);
|
||||
u8 data = 0;
|
||||
|
||||
// K: multiplexed inputs
|
||||
for (int i = 0; i < 7; i++)
|
||||
if (BIT(m_r, i))
|
||||
data |= m_inputs[i]->read();
|
||||
|
||||
// Vss row is always on
|
||||
return data | m_inputs[7]->read();
|
||||
}
|
||||
|
||||
|
||||
// 1st revision mcu/mcu comms
|
||||
|
||||
void tispellb_state::rev1_ctl_w(u8 data)
|
||||
void spellb_state::rev1_ctl_w(u8 data)
|
||||
{
|
||||
// main CTL write data
|
||||
m_rev1_ctl = data & 0xf;
|
||||
}
|
||||
|
||||
u8 tispellb_state::sub_read_k()
|
||||
u8 spellb_state::sub_read_k()
|
||||
{
|
||||
// sub K8421 <- main CTL3210 (does not use external CS)
|
||||
if (m_r & 0x1000)
|
||||
@ -188,19 +235,19 @@ u8 tispellb_state::sub_read_k()
|
||||
return m_sub_o | (m_plate & 0xe) | (m_plate >> 6 & 1);
|
||||
}
|
||||
|
||||
void tispellb_state::sub_write_o(u16 data)
|
||||
void spellb_state::sub_write_o(u16 data)
|
||||
{
|
||||
// sub O write data
|
||||
m_sub_o = bitswap<4>(data,6,0,4,3);
|
||||
}
|
||||
|
||||
u8 tispellb_state::rev1_ctl_r()
|
||||
u8 spellb_state::rev1_ctl_r()
|
||||
{
|
||||
// main CTL3210 <- sub O6043
|
||||
return m_sub_o;
|
||||
}
|
||||
|
||||
void tispellb_state::sub_write_r(u16 data)
|
||||
void spellb_state::sub_write_r(u16 data)
|
||||
{
|
||||
// sub R: unused?
|
||||
m_sub_r = data;
|
||||
@ -209,7 +256,7 @@ void tispellb_state::sub_write_r(u16 data)
|
||||
|
||||
// 2nd revision specifics
|
||||
|
||||
void tispellb_state::rev2_write_o(u16 data)
|
||||
void spellb_state::rev2_write_o(u16 data)
|
||||
{
|
||||
// SEG DP: speaker out
|
||||
m_speaker->level_w(data >> 15 & 1);
|
||||
@ -218,7 +265,7 @@ void tispellb_state::rev2_write_o(u16 data)
|
||||
main_write_o(data & 0x6fff);
|
||||
}
|
||||
|
||||
void tispellb_state::rev2_write_r(u32 data)
|
||||
void spellb_state::rev2_write_r(u32 data)
|
||||
{
|
||||
// R12: TMC0355 CS
|
||||
// R4: TMC0355 M1
|
||||
@ -235,11 +282,9 @@ void tispellb_state::rev2_write_r(u32 data)
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Inputs
|
||||
|
||||
***************************************************************************/
|
||||
/******************************************************************************
|
||||
Input Ports
|
||||
******************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( spellb )
|
||||
PORT_START("IN.0") // R0
|
||||
@ -295,7 +340,7 @@ static INPUT_PORTS_START( spellb )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("Missing Letter")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_NAME("Mystery Word")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("Scramble")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Spelling B/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Spelling B/On") PORT_CHANGED_MEMBER(DEVICE_SELF, spellb_state, power_on, 0)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("Starts With")
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -315,7 +360,7 @@ static INPUT_PORTS_START( spellabc )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("Was Fehlt?")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_NAME(u8"Wörter Rätsel")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("Wirr Warr")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Lerne ABC/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Lerne ABC/On") PORT_CHANGED_MEMBER(DEVICE_SELF, spellb_state, power_on, 0)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("Anfang Mit")
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -331,7 +376,7 @@ static INPUT_PORTS_START( mrchalgr )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("Crazy Letters")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_NAME("Letter Guesser")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("Word Challenge")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Mystery Word/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Mystery Word/On") PORT_CHANGED_MEMBER(DEVICE_SELF, spellb_state, power_on, 0)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("Replay")
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -351,7 +396,7 @@ static INPUT_PORTS_START( letterlf )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("Suite Folle")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_NAME("Devin")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("Duel")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Mot Mystere/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME("Mot Mystere/On") PORT_CHANGED_MEMBER(DEVICE_SELF, spellb_state, power_on, 0)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("Rejouez")
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -371,32 +416,30 @@ static INPUT_PORTS_START( letterlg )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_NAME("Lettern Salat")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_NAME("Lettern Rater")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_NAME("Wettstreit")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME(u8"Wörter Rätsel/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, true)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F1) PORT_CHAR('6') PORT_NAME(u8"Wörter Rätsel/On") PORT_CHANGED_MEMBER(DEVICE_SELF, spellb_state, power_on, 0)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_NAME("Wiedergabe")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
/******************************************************************************
|
||||
Machine Configs
|
||||
******************************************************************************/
|
||||
|
||||
Machine Config
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void tispellb_state::rev1(machine_config &config)
|
||||
void spellb_state::rev1(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
TMS0270(config, m_maincpu, 320000); // approximation
|
||||
m_maincpu->read_k().set(FUNC(tispellb_state::main_read_k));
|
||||
m_maincpu->write_o().set(FUNC(tispellb_state::main_write_o));
|
||||
m_maincpu->write_r().set(FUNC(tispellb_state::main_write_r));
|
||||
m_maincpu->read_ctl().set(FUNC(tispellb_state::rev1_ctl_r));
|
||||
m_maincpu->write_ctl().set(FUNC(tispellb_state::rev1_ctl_w));
|
||||
m_maincpu->read_k().set(FUNC(spellb_state::main_read_k));
|
||||
m_maincpu->write_o().set(FUNC(spellb_state::main_write_o));
|
||||
m_maincpu->write_r().set(FUNC(spellb_state::main_write_r));
|
||||
m_maincpu->read_ctl().set(FUNC(spellb_state::rev1_ctl_r));
|
||||
m_maincpu->write_ctl().set(FUNC(spellb_state::rev1_ctl_w));
|
||||
|
||||
TMS1980(config, m_subcpu, 320000); // approximation
|
||||
m_subcpu->read_k().set(FUNC(tispellb_state::sub_read_k));
|
||||
m_subcpu->write_o().set(FUNC(tispellb_state::sub_write_o));
|
||||
m_subcpu->write_r().set(FUNC(tispellb_state::sub_write_r));
|
||||
m_subcpu->read_k().set(FUNC(spellb_state::sub_read_k));
|
||||
m_subcpu->write_o().set(FUNC(spellb_state::sub_write_o));
|
||||
m_subcpu->write_r().set(FUNC(spellb_state::sub_write_r));
|
||||
|
||||
config.set_perfect_quantum(m_maincpu);
|
||||
|
||||
@ -408,13 +451,13 @@ void tispellb_state::rev1(machine_config &config)
|
||||
// no sound!
|
||||
}
|
||||
|
||||
void tispellb_state::rev2(machine_config &config)
|
||||
void spellb_state::rev2(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
TMS0270(config, m_maincpu, 320000); // approximation
|
||||
m_maincpu->read_k().set(FUNC(tispellb_state::main_read_k));
|
||||
m_maincpu->write_o().set(FUNC(tispellb_state::rev2_write_o));
|
||||
m_maincpu->write_r().set(FUNC(tispellb_state::rev2_write_r));
|
||||
m_maincpu->read_k().set(FUNC(spellb_state::main_read_k));
|
||||
m_maincpu->write_o().set(FUNC(spellb_state::rev2_write_o));
|
||||
m_maincpu->write_r().set(FUNC(spellb_state::rev2_write_r));
|
||||
m_maincpu->read_ctl().set(m_tms6100, FUNC(tms6100_device::data_r));
|
||||
m_maincpu->write_ctl().set(m_tms6100, FUNC(tms6100_device::add_w));
|
||||
|
||||
@ -433,11 +476,9 @@ void tispellb_state::rev2(machine_config &config)
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
|
||||
***************************************************************************/
|
||||
/******************************************************************************
|
||||
ROM Definitions
|
||||
******************************************************************************/
|
||||
|
||||
ROM_START( spellb )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
@ -541,11 +582,15 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
COMP( 1980, spellb, 0, 0, rev2, spellb, tispellb_state, empty_init, "Texas Instruments", "Spelling B (US, 1980 version)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1978, spellba, spellb, 0, rev1, spellb, tispellb_state, empty_init, "Texas Instruments", "Spelling B (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1980, spellabc, spellb, 0, rev2, spellabc, tispellb_state, empty_init, "Texas Instruments", "Spelling ABC (Germany)", MACHINE_SUPPORTS_SAVE )
|
||||
/******************************************************************************
|
||||
Drivers
|
||||
******************************************************************************/
|
||||
|
||||
COMP( 1979, mrchalgr, 0, 0, rev2, mrchalgr, tispellb_state, empty_init, "Texas Instruments", "Mr. Challenger (US)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1980, letterlf, mrchalgr, 0, rev2, letterlf, tispellb_state, empty_init, "Texas Instruments", "Letterlogic (France)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1980, letterlg, mrchalgr, 0, rev2, letterlg, tispellb_state, empty_init, "Texas Instruments", "Letterlogic (Germany)", MACHINE_SUPPORTS_SAVE )
|
||||
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
COMP( 1980, spellb, 0, 0, rev2, spellb, spellb_state, empty_init, "Texas Instruments", "Spelling B (US, 1980 version)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1978, spellba, spellb, 0, rev1, spellb, spellb_state, empty_init, "Texas Instruments", "Spelling B (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
|
||||
COMP( 1980, spellabc, spellb, 0, rev2, spellabc, spellb_state, empty_init, "Texas Instruments", "Spelling ABC (Germany)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
COMP( 1979, mrchalgr, 0, 0, rev2, mrchalgr, spellb_state, empty_init, "Texas Instruments", "Mr. Challenger (US)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1980, letterlf, mrchalgr, 0, rev2, letterlf, spellb_state, empty_init, "Texas Instruments", "Letterlogic (France)", MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1980, letterlg, mrchalgr, 0, rev2, letterlg, spellb_state, empty_init, "Texas Instruments", "Letterlogic (Germany)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -292,7 +292,7 @@ INPUT_PORTS_END
|
||||
|
||||
void k28_state::k28(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
// basic machine hardware
|
||||
I8021(config, m_maincpu, 3.579545_MHz_XTAL);
|
||||
m_maincpu->bus_out_cb().set(FUNC(k28_state::mcu_p0_w));
|
||||
m_maincpu->p1_in_cb().set(FUNC(k28_state::mcu_p1_r));
|
||||
@ -305,13 +305,13 @@ void k28_state::k28(machine_config &config)
|
||||
|
||||
TIMER(config, "on_button").configure_generic(nullptr);
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
MM5445(config, m_vfd).output_cb().set(FUNC(k28_state::vfd_output_w));
|
||||
PWM_DISPLAY(config, m_display).set_size(9, 16);
|
||||
m_display->set_segmask(0x1ff, 0x3fff);
|
||||
config.set_default_layout(layout_k28);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
VOTRAX_SC01(config, "speech", 760000).add_route(ALL_OUTPUTS, "mono", 0.5); // measured 760kHz on its RC pin
|
||||
}
|
||||
|
@ -7,15 +7,20 @@ Tiger Electronics K28 (model 7-232) Sold in Hong Kong, distributed in US as:
|
||||
- Coleco: Talking Teacher
|
||||
- Sears: Talkatron: Learning Computer
|
||||
|
||||
K28 model 7-232 (HK), 1985
|
||||
1981 K28 models 7-230 and 7-231 are on different hardware, showing a different
|
||||
keyboard, VFD, and use the SC-01 speech chip. --> driver k28.cpp
|
||||
|
||||
TODO:
|
||||
- emulate LCD
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Hardware notes:
|
||||
- MCU: TMS1400 MP7324 (die label: TMS1400, MP7324, 28L 01D D000 R100)
|
||||
- TMS51xx: TMS5110A
|
||||
- VSM: 16KB CM62084
|
||||
- LCD: SMOS SMC1112 MCU to 8*14-seg display
|
||||
|
||||
1981 K28 models 7-230 and 7-231 are on different hardware, showing a different
|
||||
keyboard, VFD, and use the SC-01 speech chip. --> driver k28.cpp
|
||||
|
||||
K28 modules: (* denotes not dumped)
|
||||
- Spelling I: VSM: 16KB CM62086
|
||||
- Spelling II: VSM: 16KB CM62085?
|
||||
@ -29,9 +34,6 @@ K28 modules: (* denotes not dumped)
|
||||
|
||||
note: these won't work on the 1981 version(s)
|
||||
|
||||
TODO:
|
||||
- emulate LCD
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -79,7 +81,6 @@ private:
|
||||
optional_device<generic_slot_device> m_cart;
|
||||
required_ioport_array<9> m_inputs;
|
||||
|
||||
void update_display(u8 old, u8 data);
|
||||
u8 read_k();
|
||||
void write_o(u16 data);
|
||||
void write_r(u32 data);
|
||||
@ -152,11 +153,6 @@ DEVICE_IMAGE_LOAD_MEMBER(k28m2_state::cart_load)
|
||||
I/O
|
||||
******************************************************************************/
|
||||
|
||||
void k28m2_state::update_display(u8 old, u8 data)
|
||||
{
|
||||
// ?
|
||||
}
|
||||
|
||||
void k28m2_state::write_r(u32 data)
|
||||
{
|
||||
// R1234: TMS5100 CTL8421
|
||||
@ -170,7 +166,7 @@ void k28m2_state::write_r(u32 data)
|
||||
m_inp_mux = (m_inp_mux & 0xff) | (data << 3 & 0x100);
|
||||
|
||||
// R7-R10: LCD data
|
||||
update_display(m_r >> 7 & 0xf, data >> 7 & 0xf);
|
||||
//TODO..
|
||||
|
||||
// R6: power-off request, on falling edge
|
||||
if (~data & m_r & 0x40)
|
||||
|
Loading…
Reference in New Issue
Block a user