mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
mn1400: add mn1405 device
New clones marked not working ----------------------------- Scrabble Lexor: Computer Word Game (MN1405 version) [hap, Sean Riddle]
This commit is contained in:
parent
3e707ab942
commit
0d002a80b5
@ -2,7 +2,7 @@
|
||||
// copyright-holders:hap
|
||||
/*
|
||||
|
||||
Matsushita MN1400 MCU
|
||||
Matsushita MN1400, MN1405
|
||||
|
||||
TODO:
|
||||
- stuff
|
||||
@ -15,29 +15,23 @@ TODO:
|
||||
#include "mn1400d.h"
|
||||
|
||||
|
||||
// device definitions
|
||||
DEFINE_DEVICE_TYPE(MN1400, mn1400_cpu_device, "mn1400", "Matsushita MN1400")
|
||||
DEFINE_DEVICE_TYPE(MN1405, mn1405_cpu_device, "mn1405", "Matsushita MN1405")
|
||||
|
||||
|
||||
// constructor
|
||||
mn1400_cpu_device::mn1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
|
||||
mn1400_base_device(mconfig, type, tag, owner, clock, prgwidth, program, datawidth, data)
|
||||
mn1400_cpu_device::mn1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
|
||||
mn1400_base_device(mconfig, type, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data)
|
||||
{ }
|
||||
|
||||
mn1400_cpu_device::mn1400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
|
||||
mn1400_cpu_device(mconfig, MN1400, tag, owner, clock, 10, address_map_constructor(FUNC(mn1400_cpu_device::program_1024x8), this), 6, address_map_constructor(FUNC(mn1400_cpu_device::data_64x4), this))
|
||||
mn1400_cpu_device(mconfig, MN1400, tag, owner, clock, 2 /* stack levels */, 10 /* rom bits */, address_map_constructor(FUNC(mn1400_cpu_device::program_1kx8), this), 6 /* ram bits */, address_map_constructor(FUNC(mn1400_cpu_device::data_64x4), this))
|
||||
{ }
|
||||
|
||||
|
||||
// internal memory maps
|
||||
void mn1400_cpu_device::program_1024x8(address_map &map)
|
||||
{
|
||||
map(0x000, 0x3ff).rom();
|
||||
}
|
||||
|
||||
void mn1400_cpu_device::data_64x4(address_map &map)
|
||||
{
|
||||
map(0x00, 0x3f).ram();
|
||||
}
|
||||
mn1405_cpu_device::mn1405_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
|
||||
mn1400_cpu_device(mconfig, MN1405, tag, owner, clock, 2, 11, address_map_constructor(FUNC(mn1405_cpu_device::program_2kx8), this), 7, address_map_constructor(FUNC(mn1405_cpu_device::data_128x4), this))
|
||||
{ }
|
||||
|
||||
|
||||
// disasm
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:hap
|
||||
/*
|
||||
|
||||
Matsushita MN1400 MCU
|
||||
Matsushita MN1400, MN1405
|
||||
|
||||
*/
|
||||
|
||||
@ -25,7 +25,7 @@ public:
|
||||
mn1400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
protected:
|
||||
mn1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
|
||||
mn1400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
|
||||
|
||||
// device_disasm_interface overrides
|
||||
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||
@ -34,16 +34,20 @@ protected:
|
||||
virtual void execute_one() override;
|
||||
virtual bool op_has_param(u8 op) override;
|
||||
|
||||
void program_1024x8(address_map &map);
|
||||
void data_64x4(address_map &map);
|
||||
|
||||
// opcode helpers
|
||||
void op_illegal();
|
||||
|
||||
// opcode handlers
|
||||
};
|
||||
|
||||
class mn1405_cpu_device : public mn1400_cpu_device
|
||||
{
|
||||
public:
|
||||
mn1405_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
};
|
||||
|
||||
|
||||
DECLARE_DEVICE_TYPE(MN1400, mn1400_cpu_device)
|
||||
DECLARE_DEVICE_TYPE(MN1405, mn1405_cpu_device)
|
||||
|
||||
#endif // MAME_CPU_MN1400_MN1400_H
|
||||
|
@ -12,10 +12,11 @@ x
|
||||
#include "mn1400base.h"
|
||||
|
||||
|
||||
mn1400_base_device::mn1400_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
|
||||
mn1400_base_device::mn1400_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
|
||||
cpu_device(mconfig, type, tag, owner, clock),
|
||||
m_program_config("program", ENDIANNESS_LITTLE, 8, prgwidth, 0, program),
|
||||
m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data),
|
||||
m_stack_levels(stack_levels),
|
||||
m_prgwidth(prgwidth),
|
||||
m_datawidth(datawidth)
|
||||
{ }
|
||||
@ -90,6 +91,31 @@ void mn1400_base_device::device_reset()
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// common internal memory maps
|
||||
//-------------------------------------------------
|
||||
|
||||
void mn1400_base_device::program_1kx8(address_map &map)
|
||||
{
|
||||
map(0x000, 0x3ff).rom();
|
||||
}
|
||||
|
||||
void mn1400_base_device::program_2kx8(address_map &map)
|
||||
{
|
||||
map(0x000, 0x7ff).rom();
|
||||
}
|
||||
|
||||
void mn1400_base_device::data_64x4(address_map &map)
|
||||
{
|
||||
map(0x00, 0x3f).ram();
|
||||
}
|
||||
|
||||
void mn1400_base_device::data_128x4(address_map &map)
|
||||
{
|
||||
map(0x00, 0x7f).ram();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute
|
||||
//-------------------------------------------------
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
mn1400_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
|
||||
mn1400_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
@ -45,9 +45,15 @@ protected:
|
||||
address_space *m_program;
|
||||
address_space *m_data;
|
||||
|
||||
void program_1kx8(address_map &map);
|
||||
void program_2kx8(address_map &map);
|
||||
void data_64x4(address_map &map);
|
||||
void data_128x4(address_map &map);
|
||||
|
||||
int m_icount;
|
||||
int m_state_count;
|
||||
|
||||
int m_stack_levels;
|
||||
int m_prgwidth; // ROM/RAM address size
|
||||
int m_datawidth; // "
|
||||
u16 m_prgmask; // "
|
||||
|
@ -20,6 +20,9 @@ TODO:
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
// internal artwork
|
||||
#include "scrablexa.lh"
|
||||
|
||||
#include "hh_mn1400_test.lh" // common test-layout - use external artwork
|
||||
|
||||
|
||||
@ -155,6 +158,63 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
|
||||
Selchow & Righter Scrabble Lexor
|
||||
* PCB label: 2294HB
|
||||
* MN1405MS MCU (die label: 1405 MS-0)
|
||||
* 8-digit 14-seg LEDs, 2-bit sound
|
||||
|
||||
This is the MN1405 version, see scrablex.cpp for the MB8841 version.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
class scrablexa_state : public hh_mn1400_state
|
||||
{
|
||||
public:
|
||||
scrablexa_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
hh_mn1400_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void scrablexa(machine_config &config);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
// inputs
|
||||
|
||||
static INPUT_PORTS_START( scrablexa )
|
||||
INPUT_PORTS_END
|
||||
|
||||
// config
|
||||
|
||||
void scrablexa_state::scrablexa(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
MN1405(config, m_maincpu, 300000);
|
||||
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(1, 1);
|
||||
config.set_default_layout(layout_scrablexa);
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
// roms
|
||||
|
||||
ROM_START( scrablexa )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "mn1405ms", 0x0000, 0x0800, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
/*******************************************************************************
|
||||
@ -163,5 +223,7 @@ ROM_END
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1979, compperf, 0, 0, compperf, compperf, compperf_state, empty_init, "Lakeside", "Computer Perfection", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1979, compperf, 0, 0, compperf, compperf, compperf_state, empty_init, "Lakeside", "Computer Perfection", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
||||
SYST( 1980, scrablexa, scrablex, 0, scrablexa, scrablexa, scrablexa_state, empty_init, "Selchow & Righter", "Scrabble Lexor: Computer Word Game (MN1405 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
@ -11,7 +11,7 @@ Hardware notes:
|
||||
- Fujitsu MB8841 MCU
|
||||
- 8-digit 14-seg LEDs, 2-bit sound
|
||||
|
||||
There's also a version of this game on a Panasonic MN1405 MCU.
|
||||
There's also a version of this game on a Matsushita MN1405 MCU (see hh_mn1400.cpp).
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
@ -228,4 +228,4 @@ ROM_END
|
||||
*******************************************************************************/
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1980, scrablex, 0, 0, scrablex, scrablex, scrablex_state, empty_init, "Selchow & Righter", "Scrabble Lexor: Computer Word Game", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1980, scrablex, 0, 0, scrablex, scrablex, scrablex_state, empty_init, "Selchow & Righter", "Scrabble Lexor: Computer Word Game (MB8841 version)", MACHINE_SUPPORTS_SAVE )
|
||||
|
21
src/mame/layout/scrablexa.lay
Normal file
21
src/mame/layout/scrablexa.lay
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
license:CC0-1.0
|
||||
-->
|
||||
<mamelayout version="2">
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led14seg><color red="1.0" green="0.1" blue="0.15" /></led14seg>
|
||||
</element>
|
||||
|
||||
<view name="Internal Layout">
|
||||
<element name="digit0" ref="digit"><bounds x="0" y="0" width="10" height="15" /></element>
|
||||
<element name="digit1" ref="digit"><bounds x="10" y="0" width="10" height="15" /></element>
|
||||
<element name="digit2" ref="digit"><bounds x="20" y="0" width="10" height="15" /></element>
|
||||
<element name="digit3" ref="digit"><bounds x="30" y="0" width="10" height="15" /></element>
|
||||
<element name="digit4" ref="digit"><bounds x="40" y="0" width="10" height="15" /></element>
|
||||
<element name="digit5" ref="digit"><bounds x="50" y="0" width="10" height="15" /></element>
|
||||
<element name="digit6" ref="digit"><bounds x="60" y="0" width="10" height="15" /></element>
|
||||
<element name="digit7" ref="digit"><bounds x="70" y="0" width="10" height="15" /></element>
|
||||
</view>
|
||||
</mamelayout>
|
@ -18713,6 +18713,7 @@ gjungler // Gakken
|
||||
|
||||
@source:handheld/hh_mn1400.cpp
|
||||
compperf // Lakeside
|
||||
scrablexa // Selchow & Righter
|
||||
|
||||
@source:handheld/hh_pic16.cpp
|
||||
drdunk // Kmart
|
||||
|
Loading…
Reference in New Issue
Block a user