diff options
Diffstat (limited to 'src/devices/cpu/sm510/sm510d.cpp')
-rw-r--r-- | src/devices/cpu/sm510/sm510d.cpp | 94 |
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); } |