mirror of
https://github.com/holub/mame
synced 2025-06-05 04:16:28 +03:00
sm5*: added sm530 disasm (nw)
This commit is contained in:
parent
e198e9c771
commit
0fae49dc31
@ -1984,6 +1984,9 @@ if (CPUS["SM510"]~=null) then
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm510op.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm510core.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm511core.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm530.h",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm530op.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm530core.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm500.h",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm500op.cpp",
|
||||
MAME_DIR .. "src/devices/cpu/sm510/sm500core.cpp",
|
||||
|
@ -235,8 +235,8 @@ protected:
|
||||
virtual void get_opcode_param() { }
|
||||
virtual void update_w_latch() { }
|
||||
|
||||
u8 ram_r();
|
||||
void ram_w(u8 data);
|
||||
virtual u8 ram_r();
|
||||
virtual void ram_w(u8 data);
|
||||
void pop_stack();
|
||||
void push_stack();
|
||||
virtual void do_branch(u8 pu, u8 pm, u8 pl);
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
const char *const sm510_common_disassembler::s_mnemonics[] =
|
||||
{
|
||||
// SM510
|
||||
"?", "",
|
||||
"LB", "LBL", "SBM", "EXBLA", "INCB", "DECB",
|
||||
"ATPL", "RTN0", "RTN1", "TL", "TML", "TM", "T",
|
||||
@ -25,22 +26,29 @@ const char *const sm510_common_disassembler::s_mnemonics[] =
|
||||
"PRE", "SME", "RME", "TMEL",
|
||||
"SKIP", "CEND", "IDIV", "DR", "DTA", "CLKLO", "CLKHI",
|
||||
|
||||
//
|
||||
// SM500
|
||||
"COMCB", "RTN", "RTNS", "SSR", "TR", "TRS", "RBM",
|
||||
"ADDC", "PDTW", "TW", "DTW",
|
||||
"ATS", "EXKSA", "EXKFA",
|
||||
"RMF", "SMF", "COMCN",
|
||||
"TA", "TM", "TG",
|
||||
|
||||
//
|
||||
// SM530
|
||||
"SABM", "SABL", "EXBL",
|
||||
"TG", "TBA",
|
||||
"KETA", "ATF", "SDS", "RDS",
|
||||
"INIS",
|
||||
|
||||
// SM590
|
||||
"NOP", "CCTRL", "INBL", "DEBL", "XBLA", "ADCS", "TR",
|
||||
//
|
||||
// "
|
||||
"TAX", "LBLX", "MTR", "STR", "INBM", "DEBM", "RTA", "BLTA", "EXAX", "TBA", "ADS", "ADC", "LBMX", "TLS"
|
||||
};
|
||||
|
||||
// number of bits per opcode parameter, 8 or larger means 2-byte opcode
|
||||
const u8 sm510_common_disassembler::s_bits[] =
|
||||
{
|
||||
// SM510
|
||||
0, 8,
|
||||
4, 8, 0, 0, 0, 0,
|
||||
0, 0, 0, 4+8, 2+8, 6, 6,
|
||||
@ -52,21 +60,28 @@ const u8 sm510_common_disassembler::s_bits[] =
|
||||
8, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0,
|
||||
|
||||
//
|
||||
// SM500
|
||||
0, 0, 0, 4, 6, 6, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0,
|
||||
0, 0, 0,
|
||||
0, 2, 0,
|
||||
|
||||
//
|
||||
// SM530
|
||||
0, 0, 0,
|
||||
2, 0,
|
||||
0, 0, 0, 0,
|
||||
0,
|
||||
|
||||
// SM590
|
||||
0, 0, 0, 0, 0, 0, 7,
|
||||
//
|
||||
// "
|
||||
4, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2+8
|
||||
};
|
||||
|
||||
const u32 sm510_common_disassembler::s_flags[] =
|
||||
{
|
||||
// SM510
|
||||
0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, STEP_OUT, STEP_OUT, 0, STEP_OVER, STEP_OVER, 0,
|
||||
@ -78,16 +93,22 @@ const u32 sm510_common_disassembler::s_flags[] =
|
||||
0, 0, 0, 0,
|
||||
0, STEP_OVER, 0, 0, 0, 0, 0,
|
||||
|
||||
//
|
||||
// SM500
|
||||
0, STEP_OUT, STEP_OUT, 0, 0, STEP_OVER, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0,
|
||||
0, 0, 0,
|
||||
0, 0, 0,
|
||||
|
||||
//
|
||||
// SM530
|
||||
0, 0, 0,
|
||||
0, 0,
|
||||
0, 0, 0, 0,
|
||||
0,
|
||||
|
||||
// SM590
|
||||
0, 0, 0, 0, 0, 0, STEP_OVER,
|
||||
//
|
||||
// "
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, STEP_OVER
|
||||
};
|
||||
|
||||
@ -150,7 +171,7 @@ offs_t sm510_common_disassembler::common_disasm(const u8 *lut_mnemonic, const u8
|
||||
}
|
||||
}
|
||||
|
||||
return len | s_flags[instr] |SUPPORTED;
|
||||
return len | s_flags[instr] | SUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
@ -312,6 +333,38 @@ offs_t sm5a_disassembler::disassemble(std::ostream &stream, offs_t pc, const dat
|
||||
}
|
||||
|
||||
|
||||
// SM530 disasm
|
||||
|
||||
const u8 sm530_disassembler::sm530_mnemonic[0x100] =
|
||||
{
|
||||
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
|
||||
mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, // 0 - note: $00 has synonym SKIP
|
||||
mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, // 1
|
||||
mLDA, mLDA, mLDA, mLDA, mEXC, mEXC, mEXC, mEXC, mEXCI, mEXCI, mEXCI, mEXCI, mEXCD, mEXCD, mEXCD, mEXCD, // 2
|
||||
mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, // 3
|
||||
|
||||
mRM, mRM, mRM, mRM, mSM, mSM, mSM, mSM, mTM2, mTM2, mTM2, mTM2, mINCB, mDECB, mRDS, mSDS, // 4
|
||||
mKTA, mKETA, mDTA, mCOMA, mADD, mADDC, mRC, mSC, mTABL, mTAM, mEXBL, mTC, mATS, mATF, mATBP, 0, // 5
|
||||
mTL, mTL, mTL, mTL, mTL, mTL, mTL, mTL, mRTN, mRTNS, mATPL, mLBL, mTG2, mTG2, mTG2, mTG2, // 6
|
||||
mIDIV, mINIS, mSABM, mSABL, mCEND, mTMEL, mRME, mSME, mPRE, mTBA, 0, 0, 0, 0, 0, 0, // 7
|
||||
|
||||
mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, // 8
|
||||
mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, // 9
|
||||
mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, // A
|
||||
mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, mTR, // B
|
||||
|
||||
mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, // C
|
||||
mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, // D
|
||||
mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, // E
|
||||
mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS, mTRS // F
|
||||
};
|
||||
|
||||
offs_t sm530_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms)
|
||||
{
|
||||
return common_disasm(sm530_mnemonic, nullptr, stream, pc, opcodes, params, 6);
|
||||
}
|
||||
|
||||
|
||||
// SM590 disasm
|
||||
|
||||
const u8 sm590_disassembler::sm590_mnemonic[0x100] =
|
||||
@ -324,7 +377,7 @@ const u8 sm590_disassembler::sm590_mnemonic[0x100] =
|
||||
|
||||
mLDA, mEXC, mEXCI, mEXCD, mCOMA, mTAM, mATR, mMTR, mRC, mSC, mSTR, mCCTRL,mRTN, mRTNS, 0, 0, // 4
|
||||
mINBM, mDEBM, mINBL, mDEBL, mTC, mRTA, mBLTA, mXBLA, 0, 0, 0, 0, mATX, mEXAX, 0, 0, // 5
|
||||
mTMI, mTMI, mTMI, mTMI, mTBA, mTBA, mTBA, mTBA, mRM, mRM, mRM, mRM, mSM, mSM, mSM, mSM, // 6
|
||||
mTMI, mTMI, mTMI, mTMI, mTBA2, mTBA2, mTBA2, mTBA2, mRM, mRM, mRM, mRM, mSM, mSM, mSM, mSM, // 6
|
||||
mADD, mADS, mADC, mADCS, mLBMX, mLBMX, mLBMX, mLBMX, mTL, mTL, mTL, mTL, mTLS, mTLS, mTLS, mTLS, // 7
|
||||
|
||||
mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, mTR7, // 8
|
||||
@ -344,25 +397,8 @@ offs_t sm590_disassembler::disassemble(std::ostream &stream, offs_t pc, const da
|
||||
return common_disasm(sm590_mnemonic, nullptr, stream, pc, opcodes, params, 7);
|
||||
}
|
||||
|
||||
u32 sm510_common_disassembler::opcode_alignment() const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sm510_common_disassembler::interface_flags() const
|
||||
{
|
||||
return NONLINEAR_PC|PAGED2LEVEL;
|
||||
}
|
||||
|
||||
u32 sm510_common_disassembler::page_address_bits() const
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
u32 sm510_common_disassembler::page2_address_bits() const
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
// Sarayan's little helpers
|
||||
|
||||
offs_t sm510_common_disassembler::pc_linear_to_real(offs_t pc) const
|
||||
{
|
||||
@ -386,16 +422,6 @@ offs_t sm510_common_disassembler::pc_real_to_linear(offs_t pc) const
|
||||
return (pc & ~0x3f) | r2l[pc & 0x3f];
|
||||
}
|
||||
|
||||
u32 sm590_disassembler::page_address_bits() const
|
||||
{
|
||||
return 7;
|
||||
}
|
||||
|
||||
u32 sm590_disassembler::page2_address_bits() const
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
offs_t sm590_disassembler::pc_linear_to_real(offs_t pc) const
|
||||
{
|
||||
static const u8 l2r[128] = {
|
||||
@ -425,4 +451,3 @@ offs_t sm590_disassembler::pc_real_to_linear(offs_t pc) const
|
||||
};
|
||||
return (pc & ~0x7f) | r2l[pc & 0x7f];
|
||||
}
|
||||
|
||||
|
@ -17,10 +17,10 @@ public:
|
||||
sm510_common_disassembler() = default;
|
||||
virtual ~sm510_common_disassembler() = default;
|
||||
|
||||
virtual u32 opcode_alignment() const override;
|
||||
virtual u32 interface_flags() const override;
|
||||
virtual u32 page_address_bits() const override;
|
||||
virtual u32 page2_address_bits() const override;
|
||||
virtual u32 opcode_alignment() const override { return 1; }
|
||||
virtual u32 interface_flags() const override { return NONLINEAR_PC | PAGED2LEVEL; }
|
||||
virtual u32 page_address_bits() const override { return 6; }
|
||||
virtual u32 page2_address_bits() const override { return 4; }
|
||||
virtual offs_t pc_linear_to_real(offs_t pc) const override;
|
||||
virtual offs_t pc_real_to_linear(offs_t pc) const override;
|
||||
|
||||
@ -46,10 +46,16 @@ protected:
|
||||
mRMF, mSMF, mCOMCN,
|
||||
mTA, mTM2, mTG,
|
||||
|
||||
// SM530 common
|
||||
mSABM, mSABL, mEXBL,
|
||||
mTG2, mTBA,
|
||||
mKETA, mATF, mSDS, mRDS,
|
||||
mINIS,
|
||||
|
||||
// SM590 aliases
|
||||
mNOP, mCCTRL, mINBL, mDEBL, mXBLA, mADCS, mTR7,
|
||||
// SM590 uniques
|
||||
mTAX, mLBLX, mMTR, mSTR, mINBM, mDEBM, mRTA, mBLTA, mEXAX, mTBA, mADS, mADC, mLBMX, mTLS
|
||||
mTAX, mLBLX, mMTR, mSTR, mINBM, mDEBM, mRTA, mBLTA, mEXAX, mTBA2, mADS, mADC, mLBMX, mTLS
|
||||
};
|
||||
|
||||
static const char *const s_mnemonics[];
|
||||
@ -111,6 +117,18 @@ private:
|
||||
static const u8 sm5a_extended[0x10];
|
||||
};
|
||||
|
||||
class sm530_disassembler : public sm510_common_disassembler
|
||||
{
|
||||
public:
|
||||
sm530_disassembler() = default;
|
||||
virtual ~sm530_disassembler() = default;
|
||||
|
||||
virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) override;
|
||||
|
||||
private:
|
||||
static const u8 sm530_mnemonic[0x100];
|
||||
};
|
||||
|
||||
class sm590_disassembler : public sm510_common_disassembler
|
||||
{
|
||||
public:
|
||||
@ -119,8 +137,8 @@ public:
|
||||
|
||||
virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) override;
|
||||
|
||||
virtual u32 page_address_bits() const override;
|
||||
virtual u32 page2_address_bits() const override;
|
||||
virtual u32 page_address_bits() const override { return 7; }
|
||||
virtual u32 page2_address_bits() const override { return 2; }
|
||||
virtual offs_t pc_linear_to_real(offs_t pc) const override;
|
||||
virtual offs_t pc_real_to_linear(offs_t pc) const override;
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
Sharp SM511 MCU core implementation
|
||||
|
||||
TODO:
|
||||
- undocumented/guessed opcodes:
|
||||
- verify undocumented/guessed opcodes:
|
||||
* $01 is guessed as DIV to ACC transfer, unknown which bits
|
||||
* $5d is certainly CEND
|
||||
* $65 is certainly divider reset, but not sure if it behaves same as on SM510
|
||||
@ -55,7 +55,7 @@ std::unique_ptr<util::disasm_interface> sm511_device::create_disassembler()
|
||||
|
||||
// device definitions
|
||||
sm511_device::sm511_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: sm511_device(mconfig, SM511, tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, address_map_constructor(FUNC(sm511_device::program_4k), this), 7 /* data width */, address_map_constructor(FUNC(sm511_device::data_96_32x4), this))
|
||||
: sm511_device(mconfig, SM511, tag, owner, clock, 2 /* stack levels */, 12 /* prg width */, address_map_constructor(FUNC(sm511_device::program_4k), this), 7 /* data width */, address_map_constructor(FUNC(sm511_device::data_96_32x4), this))
|
||||
{
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ sm511_device::sm511_device(const machine_config &mconfig, device_type type, cons
|
||||
}
|
||||
|
||||
sm512_device::sm512_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: sm511_device(mconfig, SM512, tag, owner, clock, 2, 12, address_map_constructor(FUNC(sm512_device::program_4k), this), 7, address_map_constructor(FUNC(sm512_device::data_80_48x4), this))
|
||||
: sm511_device(mconfig, SM512, tag, owner, clock, 2, 12, address_map_constructor(FUNC(sm512_device::program_4k), this), 7, address_map_constructor(FUNC(sm512_device::data_80_48x4), this))
|
||||
{
|
||||
}
|
||||
|
||||
|
49
src/devices/cpu/sm510/sm530.h
Normal file
49
src/devices/cpu/sm510/sm530.h
Normal file
@ -0,0 +1,49 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
/*
|
||||
|
||||
Sharp SM530 MCU family cores
|
||||
|
||||
*/
|
||||
|
||||
#ifndef MAME_CPU_SM510_SM530_H
|
||||
#define MAME_CPU_SM510_SM530_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "sm510.h"
|
||||
|
||||
|
||||
class sm530_device : public sm511_device
|
||||
{
|
||||
public:
|
||||
sm530_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 32768);
|
||||
|
||||
protected:
|
||||
sm530_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);
|
||||
|
||||
void program_2k(address_map &map);
|
||||
void data_64_24x4(address_map &map);
|
||||
|
||||
virtual void device_reset() override;
|
||||
|
||||
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||
virtual void execute_one() override;
|
||||
virtual void get_opcode_param() override;
|
||||
|
||||
virtual u8 ram_r() override;
|
||||
virtual void ram_w(u8 data) override;
|
||||
};
|
||||
|
||||
class sm531_device : public sm530_device
|
||||
{
|
||||
public:
|
||||
sm531_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 32768);
|
||||
};
|
||||
|
||||
|
||||
|
||||
DECLARE_DEVICE_TYPE(SM530, sm530_device)
|
||||
DECLARE_DEVICE_TYPE(SM531, sm531_device)
|
||||
|
||||
#endif // MAME_CPU_SM510_SM530_H
|
83
src/devices/cpu/sm510/sm530core.cpp
Normal file
83
src/devices/cpu/sm510/sm530core.cpp
Normal file
@ -0,0 +1,83 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
/*
|
||||
|
||||
Sharp SM530 MCU core implementation
|
||||
|
||||
TODO:
|
||||
- everything
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "sm530.h"
|
||||
#include "sm510d.h"
|
||||
#include "debugger.h"
|
||||
|
||||
|
||||
// MCU types
|
||||
DEFINE_DEVICE_TYPE(SM530, sm530_device, "sm530", "Sharp SM530") // x
|
||||
DEFINE_DEVICE_TYPE(SM531, sm531_device, "sm531", "Sharp SM531") // x
|
||||
|
||||
|
||||
// internal memory maps
|
||||
void sm530_device::program_2k(address_map &map)
|
||||
{
|
||||
map(0x000, 0x7ff).rom();
|
||||
}
|
||||
|
||||
void sm530_device::data_64_24x4(address_map &map)
|
||||
{
|
||||
map(0x00, 0x3f).ram();
|
||||
map(0x40, 0x4b).ram();
|
||||
map(0x50, 0x5b).ram();
|
||||
}
|
||||
|
||||
|
||||
// disasm
|
||||
std::unique_ptr<util::disasm_interface> sm530_device::create_disassembler()
|
||||
{
|
||||
return std::make_unique<sm530_disassembler>();
|
||||
}
|
||||
|
||||
|
||||
// device definitions
|
||||
sm530_device::sm530_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: sm530_device(mconfig, SM530, tag, owner, clock, 1 /* stack levels */, 11 /* prg width */, address_map_constructor(FUNC(sm530_device::program_2k), this), 7 /* data width */, address_map_constructor(FUNC(sm530_device::data_64_24x4), this))
|
||||
{
|
||||
}
|
||||
|
||||
sm530_device::sm530_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)
|
||||
: sm511_device(mconfig, type, tag, owner, clock, stack_levels, prgwidth, program, datawidth, data)
|
||||
{
|
||||
}
|
||||
|
||||
sm531_device::sm531_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: sm530_device(mconfig, SM531, tag, owner, clock, 1, 11, address_map_constructor(FUNC(sm531_device::program_2k), this), 7, address_map_constructor(FUNC(sm531_device::data_64_24x4), this))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void sm530_device::device_reset()
|
||||
{
|
||||
sm510_base_device::device_reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// execute
|
||||
//-------------------------------------------------
|
||||
|
||||
void sm530_device::get_opcode_param()
|
||||
{
|
||||
}
|
||||
|
||||
void sm530_device::execute_one()
|
||||
{
|
||||
}
|
23
src/devices/cpu/sm510/sm530op.cpp
Normal file
23
src/devices/cpu/sm510/sm530op.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
|
||||
// SM530 shared opcode handlers
|
||||
|
||||
#include "emu.h"
|
||||
#include "sm530.h"
|
||||
|
||||
|
||||
// internal helpers
|
||||
|
||||
u8 sm530_device::ram_r()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sm530_device::ram_w(u8 data)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
// instruction set
|
@ -434,6 +434,7 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "sm500", le, 0, []() -> util::disasm_interface * { return new sm500_disassembler; } },
|
||||
{ "sm510", le, 0, []() -> util::disasm_interface * { return new sm510_disassembler; } },
|
||||
{ "sm511", le, 0, []() -> util::disasm_interface * { return new sm511_disassembler; } },
|
||||
{ "sm530", le, 0, []() -> util::disasm_interface * { return new sm530_disassembler; } },
|
||||
{ "sm590", le, 0, []() -> util::disasm_interface * { return new sm590_disassembler; } },
|
||||
{ "sm5a", le, 0, []() -> util::disasm_interface * { return new sm5a_disassembler; } },
|
||||
{ "sm8500", le, 0, []() -> util::disasm_interface * { return new sm8500_disassembler; } },
|
||||
|
Loading…
Reference in New Issue
Block a user