mn1400: add device skeleton
This commit is contained in:
parent
90e394850a
commit
dff3955a3a
@ -2267,10 +2267,20 @@ if opt_tool(CPUS, "RSP") then
|
|||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
-- Matsushita (Panasonic) MN1400, disassembler only
|
-- Matsushita (Panasonic) MN1400
|
||||||
--@src/devices/cpu/mn1400/mn1400d.h,CPUS["MN1400"] = true
|
--@src/devices/cpu/mn1400/mn1400.h,CPUS["MN1400"] = true
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
||||||
|
if CPUS["MN1400"] then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/cpu/mn1400/mn1400base.cpp",
|
||||||
|
MAME_DIR .. "src/devices/cpu/mn1400/mn1400base.h",
|
||||||
|
MAME_DIR .. "src/devices/cpu/mn1400/mn1400.cpp",
|
||||||
|
MAME_DIR .. "src/devices/cpu/mn1400/mn1400.h",
|
||||||
|
MAME_DIR .. "src/devices/cpu/mn1400/mn1400op.cpp",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
if opt_tool(CPUS, "MN1400") then
|
if opt_tool(CPUS, "MN1400") then
|
||||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1400/mn1400d.cpp")
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1400/mn1400d.cpp")
|
||||||
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1400/mn1400d.h")
|
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mn1400/mn1400d.h")
|
||||||
|
62
src/devices/cpu/mn1400/mn1400.cpp
Normal file
62
src/devices/cpu/mn1400/mn1400.cpp
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/*
|
||||||
|
|
||||||
|
Matsushita MN1400 MCU
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- stuff
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "mn1400.h"
|
||||||
|
|
||||||
|
#include "mn1400d.h"
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(MN1400, mn1400_cpu_device, "mn1400", "Matsushita MN1400")
|
||||||
|
|
||||||
|
|
||||||
|
// 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, 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))
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
// 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// disasm
|
||||||
|
std::unique_ptr<util::disasm_interface> mn1400_cpu_device::create_disassembler()
|
||||||
|
{
|
||||||
|
return std::make_unique<mn1400_disassembler>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// execute
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
bool mn1400_cpu_device::op_has_param(u8 op)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mn1400_cpu_device::execute_one()
|
||||||
|
{
|
||||||
|
op_illegal();
|
||||||
|
}
|
49
src/devices/cpu/mn1400/mn1400.h
Normal file
49
src/devices/cpu/mn1400/mn1400.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/*
|
||||||
|
|
||||||
|
Matsushita MN1400 MCU
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MAME_CPU_MN1400_MN1400_H
|
||||||
|
#define MAME_CPU_MN1400_MN1400_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "mn1400base.h"
|
||||||
|
|
||||||
|
// pinout reference
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
class mn1400_cpu_device : public mn1400_base_device
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
|
||||||
|
// device_disasm_interface overrides
|
||||||
|
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||||
|
|
||||||
|
// device_execute_interface overrides
|
||||||
|
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
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(MN1400, mn1400_cpu_device)
|
||||||
|
|
||||||
|
#endif // MAME_CPU_MN1400_MN1400_H
|
131
src/devices/cpu/mn1400/mn1400base.cpp
Normal file
131
src/devices/cpu/mn1400/mn1400base.cpp
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/*
|
||||||
|
|
||||||
|
Matsushita (Panasonic) MN1400 family MCU cores
|
||||||
|
|
||||||
|
x
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#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) :
|
||||||
|
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_prgwidth(prgwidth),
|
||||||
|
m_datawidth(datawidth)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void mn1400_base_device::device_start()
|
||||||
|
{
|
||||||
|
m_program = &space(AS_PROGRAM);
|
||||||
|
m_data = &space(AS_DATA);
|
||||||
|
m_prgmask = (1 << m_prgwidth) - 1;
|
||||||
|
m_datamask = (1 << m_datawidth) - 1;
|
||||||
|
|
||||||
|
// resolve callbacks
|
||||||
|
|
||||||
|
// zerofill
|
||||||
|
m_pc = 0;
|
||||||
|
m_prev_pc = 0;
|
||||||
|
m_op = 0;
|
||||||
|
m_prev_op = 0;
|
||||||
|
m_param = 0;
|
||||||
|
|
||||||
|
m_a = 0;
|
||||||
|
m_x = 0;
|
||||||
|
m_y = 0;
|
||||||
|
|
||||||
|
// register for savestates
|
||||||
|
save_item(NAME(m_pc));
|
||||||
|
save_item(NAME(m_prev_pc));
|
||||||
|
save_item(NAME(m_op));
|
||||||
|
save_item(NAME(m_prev_op));
|
||||||
|
save_item(NAME(m_param));
|
||||||
|
|
||||||
|
save_item(NAME(m_a));
|
||||||
|
save_item(NAME(m_x));
|
||||||
|
save_item(NAME(m_y));
|
||||||
|
|
||||||
|
// register state for debugger
|
||||||
|
state_add(STATE_GENPC, "GENPC", m_pc).formatstr("%03X").noshow();
|
||||||
|
state_add(STATE_GENPCBASE, "CURPC", m_prev_pc).formatstr("%03X").noshow();
|
||||||
|
|
||||||
|
m_state_count = 0;
|
||||||
|
state_add(++m_state_count, "PC", m_pc).formatstr("%03X"); // 1
|
||||||
|
state_add(++m_state_count, "A", m_a).formatstr("%01X"); // 2
|
||||||
|
state_add(++m_state_count, "X", m_x).formatstr("%01X"); // 3
|
||||||
|
state_add(++m_state_count, "Y", m_y).formatstr("%01X"); // 4
|
||||||
|
|
||||||
|
set_icountptr(m_icount);
|
||||||
|
}
|
||||||
|
|
||||||
|
device_memory_interface::space_config_vector mn1400_base_device::memory_space_config() const
|
||||||
|
{
|
||||||
|
return space_config_vector {
|
||||||
|
std::make_pair(AS_PROGRAM, &m_program_config),
|
||||||
|
std::make_pair(AS_DATA, &m_data_config)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_reset - device-specific reset
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void mn1400_base_device::device_reset()
|
||||||
|
{
|
||||||
|
m_pc = m_prev_pc = 0;
|
||||||
|
m_op = m_prev_op = 0;
|
||||||
|
m_param = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// execute
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void mn1400_base_device::cycle()
|
||||||
|
{
|
||||||
|
m_icount--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mn1400_base_device::increment_pc()
|
||||||
|
{
|
||||||
|
m_pc = (m_pc + 1) & m_prgmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mn1400_base_device::execute_run()
|
||||||
|
{
|
||||||
|
while (m_icount > 0)
|
||||||
|
{
|
||||||
|
// remember previous state
|
||||||
|
m_prev_op = m_op;
|
||||||
|
m_prev_pc = m_pc;
|
||||||
|
|
||||||
|
// fetch next opcode
|
||||||
|
m_op = m_program->read_byte(m_pc);
|
||||||
|
debugger_instruction_hook(m_pc);
|
||||||
|
increment_pc();
|
||||||
|
cycle();
|
||||||
|
|
||||||
|
// 2-byte opcodes
|
||||||
|
if (op_has_param(m_op))
|
||||||
|
{
|
||||||
|
m_param = m_program->read_byte(m_pc);
|
||||||
|
increment_pc();
|
||||||
|
cycle();
|
||||||
|
}
|
||||||
|
|
||||||
|
execute_one();
|
||||||
|
}
|
||||||
|
}
|
74
src/devices/cpu/mn1400/mn1400base.h
Normal file
74
src/devices/cpu/mn1400/mn1400base.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
/*
|
||||||
|
|
||||||
|
Matsushita (Panasonic) MN1400 family MCU cores
|
||||||
|
|
||||||
|
Don't include this file, include the specific device header instead,
|
||||||
|
for example mn1400.h
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MAME_CPU_MN1400_MN1400BASE_H
|
||||||
|
#define MAME_CPU_MN1400_MN1400BASE_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
class mn1400_base_device : public cpu_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// configuration helpers
|
||||||
|
// I/O ports:
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
virtual void device_reset() override;
|
||||||
|
|
||||||
|
// device_execute_interface overrides
|
||||||
|
virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 3 - 1) / 3; } // 3-phase clock
|
||||||
|
virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 3); }
|
||||||
|
virtual u32 execute_min_cycles() const noexcept override { return 1; }
|
||||||
|
virtual u32 execute_max_cycles() const noexcept override { return 2; }
|
||||||
|
virtual void execute_run() override;
|
||||||
|
virtual void execute_one() = 0;
|
||||||
|
|
||||||
|
// device_memory_interface overrides
|
||||||
|
virtual space_config_vector memory_space_config() const override;
|
||||||
|
|
||||||
|
address_space_config m_program_config;
|
||||||
|
address_space_config m_data_config;
|
||||||
|
address_space *m_program;
|
||||||
|
address_space *m_data;
|
||||||
|
|
||||||
|
int m_icount;
|
||||||
|
int m_state_count;
|
||||||
|
|
||||||
|
int m_prgwidth; // ROM/RAM address size
|
||||||
|
int m_datawidth; // "
|
||||||
|
u16 m_prgmask; // "
|
||||||
|
u16 m_datamask; // "
|
||||||
|
|
||||||
|
virtual void cycle();
|
||||||
|
virtual void increment_pc();
|
||||||
|
virtual bool op_has_param(u8 op) = 0;
|
||||||
|
|
||||||
|
u16 m_pc;
|
||||||
|
u16 m_prev_pc;
|
||||||
|
u8 m_op;
|
||||||
|
u8 m_prev_op;
|
||||||
|
u8 m_param;
|
||||||
|
|
||||||
|
u8 m_a;
|
||||||
|
u8 m_x;
|
||||||
|
u8 m_y;
|
||||||
|
|
||||||
|
// i/o handlers
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAME_CPU_MN1400_MN1400BASE_H
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
const char *const mn1400_disassembler::s_mnemonics[] =
|
const char *const mn1400_disassembler::s_mnemonics[] =
|
||||||
{
|
{
|
||||||
"?",
|
"?", "?",
|
||||||
"L", "LD", "LI", "LIC", "LDC", "ST", "STD", "STIC", "STDC",
|
"L", "LD", "LI", "LIC", "LDC", "ST", "STD", "STIC", "STDC",
|
||||||
"LX", "LY", "TAX", "TAY", "TYA", "TACU", "TACL", "TCAU", "TCAL",
|
"LX", "LY", "TAX", "TAY", "TYA", "TACU", "TACL", "TCAU", "TCAL",
|
||||||
"NOP", "AND", "ANDI", "OR", "XOR", "A", "AI", "CPL", "C", "CI", "CY",
|
"NOP", "AND", "ANDI", "OR", "XOR", "A", "AI", "CPL", "C", "CI", "CY",
|
||||||
@ -27,7 +27,7 @@ const char *const mn1400_disassembler::s_mnemonics[] =
|
|||||||
// number of bits per opcode parameter
|
// number of bits per opcode parameter
|
||||||
const u8 mn1400_disassembler::s_bits[] =
|
const u8 mn1400_disassembler::s_bits[] =
|
||||||
{
|
{
|
||||||
0,
|
0, 8,
|
||||||
0, 2, 4, 0, 0, 0, 2, 0, 0,
|
0, 2, 4, 0, 0, 0, 2, 0, 0,
|
||||||
3, 4, 0, 0, 0, 0, 0, 0, 0,
|
3, 4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4,
|
0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4,
|
||||||
@ -42,7 +42,7 @@ const u8 mn1400_disassembler::s_bits[] =
|
|||||||
|
|
||||||
const u32 mn1400_disassembler::s_flags[] =
|
const u32 mn1400_disassembler::s_flags[] =
|
||||||
{
|
{
|
||||||
0,
|
0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@ -62,7 +62,7 @@ const u8 mn1400_disassembler::mn1400_mnemonic[0x100] =
|
|||||||
mNOP, mTAX, mTYA, mTAY, mAND, mOR, mXOR, mA, mCPL, mC, mST, mSTIC, mSTDC, mL, mLIC, mLDC, // 0
|
mNOP, mTAX, mTYA, mTAY, mAND, mOR, mXOR, mA, mCPL, mC, mST, mSTIC, mSTDC, mL, mLIC, mLDC, // 0
|
||||||
mOTE, mOTMD, mOTD, mCCO, mINA, mINB, mRCO, mSCO, mTACL, mTACU, mTCAL, mTCAU, mDC, mEC, mSL, mRET, // 1
|
mOTE, mOTMD, mOTD, mCCO, mINA, mINB, mRCO, mSCO, mTACL, mTACU, mTCAL, mTCAU, mDC, mEC, mSL, mRET, // 1
|
||||||
mLD, mLD, mLD, mLD, mSTD, mSTD, mSTD, mSTD, mRC, mRP, mSC, mSP, mICY, mDCY, mICM, mDCM, // 2
|
mLD, mLD, mLD, mLD, mSTD, mSTD, mSTD, mSTD, mRC, mRP, mSC, mSP, mICY, mDCY, mICM, mDCM, // 2
|
||||||
mLX, mLX, mLX, mLX, mLX, mLX, mLX, mLX, 0, 0, mBSN0, mBS0, mBSN1, mBS1, mBSN01,mBS01, // 3
|
mLX, mLX, mLX, mLX, mLX, mLX, mLX, mLX, 1, 1, mBSN0, mBS0, mBSN1, mBS1, mBSN01,mBS01, // 3
|
||||||
|
|
||||||
mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, // 4
|
mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, mCAL, // 4
|
||||||
mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, // 5
|
mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, mLI, // 5
|
||||||
@ -76,7 +76,7 @@ const u8 mn1400_disassembler::mn1400_mnemonic[0x100] =
|
|||||||
|
|
||||||
mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, // C
|
mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, mRM, // C
|
||||||
mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, // D
|
mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, mTB, // D
|
||||||
0, 0, mBNZ, mBZ, mBNC, mBC, mBNCZ, mBCZ, mBNP, mBP, mBNPZ, mBPZ, mBNPC, mBPC, mBNPCZ,mBPCZ, // E
|
1, 1, mBNZ, mBZ, mBNC, mBC, mBNCZ, mBCZ, mBNP, mBP, mBNPZ, mBPZ, mBNPC, mBPC, mBNPCZ,mBPCZ, // E
|
||||||
mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE // F
|
mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE, mOTIE // F
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -100,7 +100,9 @@ offs_t mn1400_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
|
|||||||
param |= (op & ((1 << (bits - 8)) - 1)) << 8;
|
param |= (op & ((1 << (bits - 8)) - 1)) << 8;
|
||||||
else
|
else
|
||||||
param |= pc & 0x700;
|
param |= pc & 0x700;
|
||||||
util::stream_format(stream, "$%03X", param);
|
|
||||||
|
if (instr > 1)
|
||||||
|
util::stream_format(stream, "$%03X", param);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
enum e_mnemonics
|
enum e_mnemonics
|
||||||
{
|
{
|
||||||
mILL,
|
mILL, mILL2,
|
||||||
mL, mLD, mLI, mLIC, mLDC, mST, mSTD, mSTIC, mSTDC,
|
mL, mLD, mLI, mLIC, mLDC, mST, mSTD, mSTIC, mSTDC,
|
||||||
mLX, mLY, mTAX, mTAY, mTYA, mTACU, mTACL, mTCAU, mTCAL,
|
mLX, mLY, mTAX, mTAY, mTYA, mTACU, mTACL, mTCAU, mTCAL,
|
||||||
mNOP, mAND, mANDI, mOR, mXOR, mA, mAI, mCPL, mC, mCI, mCY,
|
mNOP, mAND, mANDI, mOR, mXOR, mA, mAI, mCPL, mC, mCI, mCY,
|
||||||
|
18
src/devices/cpu/mn1400/mn1400op.cpp
Normal file
18
src/devices/cpu/mn1400/mn1400op.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
|
||||||
|
// MN1400 common opcode handlers
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "mn1400.h"
|
||||||
|
|
||||||
|
|
||||||
|
// internal helpers
|
||||||
|
|
||||||
|
void mn1400_cpu_device::op_illegal()
|
||||||
|
{
|
||||||
|
logerror("unknown opcode $%02X at $%03X\n", m_op, m_prev_pc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// opcodes
|
Loading…
Reference in New Issue
Block a user