summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sm510/sm510d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/sm510/sm510d.cpp')
-rw-r--r--src/devices/cpu/sm510/sm510d.cpp94
1 files changed, 35 insertions, 59 deletions
diff --git a/src/devices/cpu/sm510/sm510d.cpp b/src/devices/cpu/sm510/sm510d.cpp
index bc671cb5fca..78ec0d180eb 100644
--- a/src/devices/cpu/sm510/sm510d.cpp
+++ b/src/devices/cpu/sm510/sm510d.cpp
@@ -27,21 +27,15 @@ enum e_mnemonics
mPRE, mSME, mRME, mTMEL,
mSKIP, mCEND, mIDIV, mDR, mDTA, mCLKLO, mCLKHI,
- // SM500-specific
- mCOMCB, mRTN, mRTNS, mSSR, mTR, mTRS,
+ // SM500 common
+ mCOMCB, mRTN, mRTNS, mSSR, mTR, mTRS, mRBM,
mADDC, mPDTW, mTW, mDTW,
mATS, mEXKSA, mEXKFA,
mRMF, mSMF, mCOMCN,
mTA, mTM2, mTG,
- // KB1013VK1-2 aliases
- mLC, mLM, mLE, mLAF, mLAS, mLDF, mBS0, mBS1, mXL, mXM, mXI, mXEI, mXD, mXED, mXE, mBM0, mBM1, mSM1,
- mAM, mAC, mA10, mAS, mCLL, mCOM, mCLC, mSTC, mSCO, mSAO, mINC, mDEC, mSAM, mSAL, mNOP,
- mICD, mOAR, mOA0, mOA1, mDAF, mDAS, mABS, mABF, mCTB, mLD0, mEN,
- mBR, mLP, mCBR, mCMS, mRT, mRTS, mSI1, mSI0, mSYN, mTIM, mHLT,
-
// SM590 aliases
- mCCTRL, mINBL, mDEBL, mXBLA, mADCS, mTR7,
+ mNOP, mCCTRL, mINBL, mDEBL, mXBLA, mADCS, mTR7,
// SM590 uniques
mTAX, mLBLX, mMTR, mSTR, mINBM, mDEBM, mRTA, mBLTA, mEXAX, mTBA, mADS, mADC, mLBMX, mTLS
};
@@ -60,20 +54,14 @@ static const char *const s_mnemonics[] =
"SKIP", "CEND", "IDIV", "DR", "DTA", "CLKLO", "CLKHI",
//
- "COMCB", "RTN", "RTNS", "SSR", "TR", "TRS",
+ "COMCB", "RTN", "RTNS", "SSR", "TR", "TRS", "RBM",
"ADDC", "PDTW", "TW", "DTW",
"ATS", "EXKSA", "EXKFA",
"RMF", "SMF", "COMCN",
"TA", "TM", "TG",
//
- "LC", "LM", "LE", "LAF", "LAS", "LDF", "BS0", "BS1", "XL", "XM", "XI", "XEI", "XD", "XED", "XE", "BM0", "BM1", "SM1",
- "AM", "AC", "A10", "AS", "CLL", "COM", "CLC", "STC", "SCO", "SAO", "INC", "DEC", "SAM", "SAL", "NOP",
- "ICD", "OAR", "OA0", "OA1", "DAF", "DAS", "ABS", "ABF", "CTB", "LD0", "EN",
- "BR", "LP", "CBR", "CMS", "RT", "RTS", "SI1", "SI0", "SYN", "TIM", "HLT",
-
- //
- "CCTRL", "INBL", "DEBL", "XBLA", "ADCS", "TR",
+ "NOP", "CCTRL", "INBL", "DEBL", "XBLA", "ADCS", "TR",
//
"TAX", "LBLX", "MTR", "STR", "INBM", "DEBM", "RTA", "BLTA", "EXAX", "TBA", "ADS", "ADC", "LBMX", "TLS"
};
@@ -93,20 +81,14 @@ static const u8 s_bits[] =
0, 0, 0, 0, 0, 0, 0,
//
- 0, 0, 0, 4, 6, 6,
+ 0, 0, 0, 4, 6, 6, 0,
0, 0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 2, 0,
//
- 4, 0, 2, 8, 4, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2,
- 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0,
-
- //
- 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 7,
//
4, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2+8
};
@@ -128,20 +110,14 @@ static const u32 s_flags[] =
0, _OVER, 0, 0, 0, 0, 0,
//
- 0, _OUT, _OUT, 0, 0, _OVER,
+ 0, _OUT, _OUT, 0, 0, _OVER, 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, _OVER, 0, _OUT, _OUT, 0, 0, 0, 0, _OVER,
-
- //
- 0, 0, 0, 0, 0, _OVER,
+ 0, 0, 0, 0, 0, 0, _OVER,
//
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _OVER
};
@@ -342,45 +318,45 @@ CPU_DISASSEMBLE(sm500)
}
-// KB1013VK1-2 disasm
+// SM5A disasm
-static const u8 kb1013vk12_mnemonic[0x100] =
+static const u8 sm5a_mnemonic[0x100] =
{
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
- mNOP, mOAR, mBS1, mEN, mBM0, mBM0, mBM0, mBM0, mAM, mAC, mCOM, mXL, mBM1, mBM1, mBM1, mBM1, // 0
- mXM, mXE, mXE, mXE, mXI, mXEI, mXEI, mXEI, mLE, mLE, mLE, mLDA, mXD, mXED, mXED, mXED, // 1
- mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, mLC, // 2
- mAS, mAS, mAS, mAS, mAS, mAS, mAS, mAS, mAS, mAS, mA10, mAS, mAS, mAS, mAS, mAS, // 3
-
- mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, mLAS, // 4
- mSI1, mSI0, mSCO, mSAM, mSM1, mSM1, mSM1, mSM1, mTIM, mABS, mSAO, mSAL, mABF, mDAF, mEXT, mLAF, // 5
- mCTB, mDAS, mOA1, mOA0, mINC, mSYN, mCLC, mSTC, mCLL, mLD0, mICD, mBS0, mDEC, mCMS, mRT, mRTS, // 6
- mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, mLP, // 7
-
- mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, // 8
- mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, // 9
- mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, // A
- mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, mBR, // B
-
- mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, // C
- mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, // D
- mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, // E
- mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR, mCBR // F
+ mSKIP, mATR, mSBM, mATBP, mRM, mRM, mRM, mRM, mADD, mADDC, mCOMA, mEXBLA,mSM, mSM, mSM, mSM, // 0
+ mEXC, mEXC, mEXC, mEXC, mEXCI, mEXCI, mEXCI, mEXCI, mLDA, mLDA, mLDA, mLDA, mEXCD, mEXCD, mEXCD, mEXCD, // 1
+ mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, mLAX, // 2
+ mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, mADX, // 3
+
+ mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, mLB, // 4
+ mTA, mTB, mTC, mTAM, mTM2, mTM2, mTM2, mTM2, mTG, mPTW, mTA0, mTABL, mTW, mDTW, mEXT, mLBL, // 5
+ mCOMCN,mPDTW, mWR, mWS, mINCB, mIDIV, mRC, mSC, mRMF, mSMF, mKTA, mRBM, mDECB, mCOMCB,mRTN, mRTNS, // 6
+ mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, mSSR, // 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
};
-static const u8 kb1013vk12_extended[0x10] =
+static const u8 sm5a_extended[0x10] =
{
- mHLT, 0, 0, 0, mLDF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 5E 0
+ mCEND, 0, 0, 0, mDTA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 5E 0
};
-CPU_DISASSEMBLE(kb1013vk12)
+CPU_DISASSEMBLE(sm5a)
{
// create extended opcode table
u8 ext[0x100];
memset(ext, 0, 0x100);
- memcpy(ext + 0x00, kb1013vk12_extended, 0x10);
+ memcpy(ext + 0x00, sm5a_extended, 0x10);
- return sm510_common_disasm(kb1013vk12_mnemonic, ext, stream, pc, oprom, opram, 6);
+ return sm510_common_disasm(sm5a_mnemonic, ext, stream, pc, oprom, opram, 6);
}