diff options
Diffstat (limited to 'src/devices/cpu')
-rw-r--r-- | src/devices/cpu/hmcs400/hmcs400.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/hmcs400/hmcs400.h | 2 | ||||
-rw-r--r-- | src/devices/cpu/mpk1839/kl1839vm1.h | 1 | ||||
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90.cpp | 56 | ||||
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90.h | 112 | ||||
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90d.cpp | 91 | ||||
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90d.h | 36 | ||||
-rw-r--r-- | src/devices/cpu/tms9900/tms9900.cpp | 4 | ||||
-rw-r--r-- | src/devices/cpu/tms9900/tms9980a.cpp | 4 | ||||
-rw-r--r-- | src/devices/cpu/z180/z180.cpp | 7 | ||||
-rw-r--r-- | src/devices/cpu/z180/z180.h | 2 | ||||
-rw-r--r-- | src/devices/cpu/z180/z180dasm.cpp | 1 | ||||
-rw-r--r-- | src/devices/cpu/z180/z180dasm.h | 1 | ||||
-rw-r--r-- | src/devices/cpu/z180/z180dd.hxx | 3 |
14 files changed, 176 insertions, 146 deletions
diff --git a/src/devices/cpu/hmcs400/hmcs400.cpp b/src/devices/cpu/hmcs400/hmcs400.cpp index 19249f2f6b8..c54b4beef93 100644 --- a/src/devices/cpu/hmcs400/hmcs400.cpp +++ b/src/devices/cpu/hmcs400/hmcs400.cpp @@ -608,7 +608,7 @@ void hmcs400_cpu_device::tm_w(offs_t offset, u8 data, u8 mem_mask) if (!access_mode(mem_mask)) return; - // TMA/TMB prescaler divide ratio + // TMA/TMB prescaler divide ratio masks static const int div[2][8] = { { 0x400, 0x200, 0x100, 0x40, 0x10, 4, 2, 1 }, diff --git a/src/devices/cpu/hmcs400/hmcs400.h b/src/devices/cpu/hmcs400/hmcs400.h index 10b3da0f1f9..8232dddb704 100644 --- a/src/devices/cpu/hmcs400/hmcs400.h +++ b/src/devices/cpu/hmcs400/hmcs400.h @@ -149,7 +149,7 @@ protected: u8 m_pmr; // port mode register u16 m_prescaler; // 11-bit clock prescaler u8 m_timer_mode[2]; // TMA/TMB: timer mode registers - u16 m_timer_div[2]; // timer prescaler divide ration derived from TMA/TMB + u16 m_timer_div[2]; // timer prescaler divide ratio masks from TMA/TMB u8 m_timer_count[2]; // TCA/TCA: timer counters u8 m_timer_load; // timer B reload register u8 m_timer_b_low; // timer B counter low latch diff --git a/src/devices/cpu/mpk1839/kl1839vm1.h b/src/devices/cpu/mpk1839/kl1839vm1.h index 18b79ecbbb1..69135aa2694 100644 --- a/src/devices/cpu/mpk1839/kl1839vm1.h +++ b/src/devices/cpu/mpk1839/kl1839vm1.h @@ -31,7 +31,6 @@ protected: // device_execute_interface overrides virtual u32 execute_min_cycles() const noexcept override { return 1; } virtual u32 execute_max_cycles() const noexcept override { return 16; } - virtual u32 execute_input_lines() const noexcept { return 1; } virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp index be2f05a181a..00e1bde96e4 100644 --- a/src/devices/cpu/tlcs90/tlcs90.cpp +++ b/src/devices/cpu/tlcs90/tlcs90.cpp @@ -6,10 +6,6 @@ emulation by Luca Elia, based on the Z80 core by Juergen Buchmueller - ChangeLog: - - 20150517 Fixed TRUN bit masking (timers start/stop handling) [Rainer Keuchel] - *************************************************************************************************************/ #include "emu.h" @@ -284,31 +280,28 @@ static uint8_t SZHV_dec[256]; /* zero, sign, half carry and overflow flags DEC r #define OP_16 0x80 - - - -#define OP( X,CT ) m_op = X; m_cyc_t = (CT*2); -#define OP16( X,CT ) OP( (X)|OP_16,CT ) - -#define OPCC( X,CF,CT ) OP( X, CT ) m_cyc_f = (CF*2); -#define OPCC16( X,CF,CT ) OPCC( (X)|OP_16,CF,CT ) - -#define BIT8( N,I ) m_mode##N = e_mode::BIT8; m_r##N = I; -#define I8( N,I ) m_mode##N = e_mode::I8; m_r##N = I; -#define D8( N,I ) m_mode##N = e_mode::D8; m_r##N = I; -#define I16( N,I ) m_mode##N = e_mode::I16; m_r##N = I; -#define D16( N,I ) m_mode##N = e_mode::D16; m_r##N = I; -#define R8( N,R ) m_mode##N = e_mode::R8; m_r##N = R; -#define R16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; -#define Q16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; if (m_r##N == SP) m_r##N = AF; -#define MI16( N,I ) m_mode##N = e_mode::MI16; m_r##N = I; -#define MR16( N,R ) m_mode##N = e_mode::MR16; m_r##N = R; -#define MR16D8( N,R,I ) m_mode##N = e_mode::MR16D8; m_r##N = R; m_r##N##b = I; -#define MR16R8( N,R,g ) m_mode##N = e_mode::MR16R8; m_r##N = R; m_r##N##b = g; -#define NONE( N ) m_mode##N = e_mode::NONE; -#define CC( N,cc ) m_mode##N = e_mode::CC; m_r##N = cc; -#define R16D8( N,R,I ) m_mode##N = e_mode::R16D8; m_r##N = R; m_r##N##b = I; -#define R16R8( N,R,g ) m_mode##N = e_mode::R16R8; m_r##N = R; m_r##N##b = g; +#define OP( X,CT ) m_op = X; m_cyc_t = (CT*2); +#define OP16( X,CT ) OP( (X)|OP_16,CT ) + +#define OPCC( X,CF,CT ) OP( X, CT ) m_cyc_f = (CF*2); +#define OPCC16( X,CF,CT ) OPCC( (X)|OP_16,CF,CT ) + +#define BIT8( N,I ) m_mode##N = e_mode::BIT8; m_r##N = I; +#define I8( N,I ) m_mode##N = e_mode::I8; m_r##N = I; +#define D8( N,I ) m_mode##N = e_mode::D8; m_r##N = I; +#define I16( N,I ) m_mode##N = e_mode::I16; m_r##N = I; +#define D16( N,I ) m_mode##N = e_mode::D16; m_r##N = I; +#define R8( N,R ) m_mode##N = e_mode::R8; m_r##N = R; +#define R16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; +#define Q16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; if (m_r##N == SP) m_r##N = AF; +#define MI16( N,I ) m_mode##N = e_mode::MI16; m_r##N = I; +#define MR16( N,R ) m_mode##N = e_mode::MR16; m_r##N = R; +#define MR16D8( N,R,I ) m_mode##N = e_mode::MR16D8; m_r##N = R; m_r##N##b = I; +#define MR16R8( N,R,g ) m_mode##N = e_mode::MR16R8; m_r##N = R; m_r##N##b = g; +#define NONE( N ) m_mode##N = e_mode::NONE; +#define CC( N,cc ) m_mode##N = e_mode::CC; m_r##N = cc; +#define R16D8( N,R,I ) m_mode##N = e_mode::R16D8; m_r##N = R; m_r##N##b = I; +#define R16R8( N,R,g ) m_mode##N = e_mode::R16R8; m_r##N = R; m_r##N##b = g; uint8_t tlcs90_device::RM8 (uint32_t a) { return m_program->read_byte( a ); } uint16_t tlcs90_device::RM16(uint32_t a) { return RM8(a) | (RM8( (a+1) & 0xffff ) << 8); } @@ -2130,11 +2123,6 @@ void tlcs90_device::device_reset() std::fill(std::begin(m_treg_16bit), std::end(m_treg_16bit), 0); } -void tlcs90_device::execute_burn(int32_t cycles) -{ - m_icount -= 4 * ((cycles + 3) / 4); -} - /************************************************************************************************************* diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h index 7479b699057..e7d07e3f7d7 100644 --- a/src/devices/cpu/tlcs90/tlcs90.h +++ b/src/devices/cpu/tlcs90/tlcs90.h @@ -5,7 +5,27 @@ #pragma once -enum tlcs90_e_irq { INTSWI = 0, INTNMI, INTWD, INT0, INTT0, INTT1, INTT2, INTT3, INTT4, INT1, INTT5, INT2, INTRX, INTTX, INTMAX }; +// TODO: too generic global enum +enum tlcs90_e_irq +{ + INTSWI = 0, + INTNMI, + INTWD, + INT0, + INTT0, + INTT1, + INTT2, + INTT3, + INTT4, + INT1, + INTT5, + INT2, + INTRX, + INTTX, + + INTMAX +}; + DECLARE_ENUM_INCDEC_OPERATORS(tlcs90_e_irq) class tlcs90_device : public cpu_device @@ -14,8 +34,8 @@ class tlcs90_device : public cpu_device //static constexpr int MAX_ANALOG_INPUTS = 16; protected: - TIMER_CALLBACK_MEMBER( t90_timer_callback ); - TIMER_CALLBACK_MEMBER( t90_timer4_callback ); + TIMER_CALLBACK_MEMBER(t90_timer_callback); + TIMER_CALLBACK_MEMBER(t90_timer4_callback); void tmp90840_regs(address_map &map); void tmp90840_mem(address_map &map); @@ -25,8 +45,18 @@ protected: void tmp91640_mem(address_map &map); void tmp91641_mem(address_map &map); - enum _e_op { UNKNOWN, NOP, EX, EXX, LD, LDW, LDA, LDI, LDIR, LDD, LDDR, CPI, CPIR, CPD, CPDR, PUSH, POP, JP, JR, CALL, CALLR, RET, RETI, HALT, DI, EI, SWI, DAA, CPL, NEG, LDAR, RCF, SCF, CCF, TSET, BIT, SET, RES, INC, DEC, INCX, DECX, INCW, DECW, ADD, ADC, SUB, SBC, AND, XOR, OR, CP, RLC, RRC, RL, RR, SLA, SRA, SLL, SRL, RLD, RRD, DJNZ, MUL, DIV }; - + enum _e_op + { + UNKNOWN, + NOP, EX, EXX, LD, LDW, LDA, LDI, LDIR, + LDD, LDDR, CPI, CPIR, CPD, CPDR, PUSH, POP, + JP, JR, CALL, CALLR, RET, RETI, HALT, DI, + EI, SWI, DAA, CPL, NEG, LDAR, RCF, SCF, + CCF, TSET, BIT, SET, RES, INC, DEC, INCX, + DECX, INCW, DECW, ADD, ADC, SUB, SBC, AND, + XOR, OR, CP, RLC, RRC, RL, RR, SLA, + SRA, SLL, SRL, RLD, RRD, DJNZ, MUL, DIV + }; public: // configuration @@ -47,7 +77,6 @@ protected: virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return inputnum == INPUT_LINE_NMI; } virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; - [[maybe_unused]] void execute_burn(int32_t cycles); // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; @@ -103,7 +132,8 @@ protected: void reserved_w(offs_t offset, uint8_t data); private: - enum class e_mode : u8 { + enum class e_mode : u8 + { NONE, BIT8, CC, I8, D8, R8, I16, D16, R16, @@ -116,13 +146,13 @@ private: devcb_read8::array<MAX_PORTS> m_port_read_cb; devcb_write8::array<MAX_PORTS> m_port_write_cb; - PAIR m_prvpc,m_pc,m_sp,m_af,m_bc,m_de,m_hl,m_ix,m_iy; - PAIR m_af2,m_bc2,m_de2,m_hl2; - uint8_t m_halt, m_after_EI; - uint16_t m_irq_state, m_irq_line_state, m_irq_mask; + PAIR m_prvpc, m_pc, m_sp, m_af, m_bc, m_de, m_hl, m_ix, m_iy; + PAIR m_af2, m_bc2, m_de2, m_hl2; + uint8_t m_halt, m_after_EI; + uint16_t m_irq_state, m_irq_line_state, m_irq_mask; address_space *m_program; - int m_icount; - int m_extra_cycles; // extra cycles for interrupts + int m_icount; + int m_extra_cycles; // extra cycles for interrupts uint8_t m_port_latch[MAX_PORTS]; @@ -133,13 +163,13 @@ private: uint8_t m_p8cr; uint8_t m_smmod; - uint32_t m_ixbase,m_iybase; + uint32_t m_ixbase,m_iybase; // Timers: 4 x 8-bit + 1 x 16-bit - emu_timer *m_timer[4+1]; - uint8_t m_timer_value[4]; - uint16_t m_timer4_value; - attotime m_timer_period; + emu_timer *m_timer[4+1]; + uint8_t m_timer_value[4]; + uint16_t m_timer4_value; + attotime m_timer_period; uint8_t m_tmod; uint8_t m_tclk; uint8_t m_trun; @@ -148,44 +178,44 @@ private: uint16_t m_treg_16bit[2]; // Work registers - uint8_t m_op; + uint8_t m_op; - e_mode m_mode1; - uint16_t m_r1,m_r1b; + e_mode m_mode1; + uint16_t m_r1, m_r1b; - e_mode m_mode2; - uint16_t m_r2,m_r2b; + e_mode m_mode2; + uint16_t m_r2, m_r2b; - int m_cyc_t,m_cyc_f; + int m_cyc_t, m_cyc_f; - uint32_t m_addr; + uint32_t m_addr; - inline uint8_t RM8 (uint32_t a); + inline uint8_t RM8(uint32_t a); inline uint16_t RM16(uint32_t a); - inline void WM8 (uint32_t a, uint8_t v); + inline void WM8(uint32_t a, uint8_t v); inline void WM16(uint32_t a, uint16_t v); - inline uint8_t RX8 (uint32_t a, uint32_t base); + inline uint8_t RX8(uint32_t a, uint32_t base); inline uint16_t RX16(uint32_t a, uint32_t base); - inline void WX8 (uint32_t a, uint8_t v, uint32_t base); + inline void WX8(uint32_t a, uint8_t v, uint32_t base); inline void WX16(uint32_t a, uint16_t v, uint32_t base); - inline uint8_t READ8(); + inline uint8_t READ8(); inline uint16_t READ16(); void decode(); - inline uint16_t r8( const uint16_t r ); - inline void w8( const uint16_t r, uint16_t value ); - inline uint16_t r16( const uint16_t r ); - inline void w16( const uint16_t r, uint16_t value ); + inline uint16_t r8(const uint16_t r); + inline void w8(const uint16_t r, uint16_t value); + inline uint16_t r16(const uint16_t r); + inline void w16(const uint16_t r, uint16_t value); inline uint8_t Read1_8(); inline uint16_t Read1_16(); inline uint8_t Read2_8(); inline uint16_t Read2_16(); - inline void Write1_8( uint8_t value ); - inline void Write1_16( uint16_t value ); - inline void Write2_8( uint8_t value ); - inline void Write2_16( uint16_t value ); - inline int Test( uint8_t cond ); - inline void Push( uint16_t rr ); - inline void Pop( uint16_t rr ); + inline void Write1_8(uint8_t value); + inline void Write1_16(uint16_t value); + inline void Write2_8(uint8_t value); + inline void Write2_16(uint16_t value); + inline int Test(uint8_t cond); + inline void Push(uint16_t rr); + inline void Pop(uint16_t rr); inline void halt(); inline void leave_halt(); inline void raise_irq(int irq); diff --git a/src/devices/cpu/tlcs90/tlcs90d.cpp b/src/devices/cpu/tlcs90/tlcs90d.cpp index 8f850d4c486..4254faddd2b 100644 --- a/src/devices/cpu/tlcs90/tlcs90d.cpp +++ b/src/devices/cpu/tlcs90/tlcs90d.cpp @@ -2,25 +2,39 @@ // copyright-holders:Luca Elia /************************************************************************************************************* - Toshiba TLCS-90 Series MCU's - - emulation by Luca Elia, based on the Z80 core by Juergen Buchmueller - - ChangeLog: - - 20150517 Fixed TRUN bit masking (timers start/stop handling) [Rainer Keuchel] + Toshiba TLCS-90 Series MCU's disassembler *************************************************************************************************************/ #include "emu.h" #include "tlcs90d.h" -const char *const tlcs90_disassembler::op_names[] = { "??", "nop", "ex", "exx", "ld", "ldw", "lda", "ldi", "ldir", "ldd", "lddr", "cpi", "cpir", "cpd", "cpdr", "push", "pop", "jp", "jr", "call", "callr", "ret", "reti", "halt", "di", "ei", "swi", "daa", "cpl", "neg", "ldar", "rcf", "scf", "ccf", "tset", "bit", "set", "res", "inc", "dec", "incx", "decx", "incw", "decw", "add", "adc", "sub", "sbc", "and", "xor", "or", "cp", "rlc", "rrc", "rl", "rr", "sla", "sra", "sll", "srl", "rld", "rrd", "djnz", "mul", "div" }; +const char *const tlcs90_disassembler::op_names[] = +{ + "??", + "nop", "ex", "exx", "ld", "ldw", "lda", "ldi", "ldir", + "ldd", "lddr", "cpi", "cpir", "cpd", "cpdr", "push", "pop", + "jp", "jr", "call", "callr","ret", "reti", "halt", "di", + "ei", "swi", "daa", "cpl", "neg", "ldar", "rcf", "scf", + "ccf", "tset", "bit", "set", "res", "inc", "dec", "incx", + "decx", "incw", "decw", "add", "adc", "sub", "sbc", "and", + "xor", "or", "cp", "rlc", "rrc", "rl", "rr", "sla", + "sra", "sll", "srl", "rld", "rrd", "djnz", "mul", "div" +}; -const char *const tlcs90_disassembler::r8_names[] = { "b", "c", "d", "e", "h", "l", "a" }; -const char *const tlcs90_disassembler::r16_names[] = { "bc", "de", "hl", "??", "ix", "iy", "sp", "af", "af'", "pc" }; +const char *const tlcs90_disassembler::r8_names[] = +{ + "b", "c", "d", "e", "h", "l", "a" +}; +const char *const tlcs90_disassembler::r16_names[] = +{ + "bc", "de", "hl", "??", "ix", "iy", "sp", "af", "af'", "pc" +}; -const char *const tlcs90_disassembler::cc_names[] = { "f", "lt", "le", "ule", "ov", "mi", "z", "c", "", "ge", "gt", "ugt", "nov", "pl", "nz", "nc" }; +const char *const tlcs90_disassembler::cc_names[] = +{ + "f", "lt", "le", "ule", "ov", "mi", "z", "c", "", "ge", "gt", "ugt", "nov", "pl", "nz", "nc" +}; u32 tlcs90_disassembler::opcode_alignment() const { @@ -32,7 +46,8 @@ tlcs90_disassembler::tlcs90_disassembler(uint16_t iobase, const char *const ir_n { } -const char *const tmp90840_disassembler::ir_names[0x40] = { +const char *const tmp90840_disassembler::ir_names[0x40] = +{ "P0", "P1", "P01CR/IRFL", "IRFH", "P2", "P2CR", "P3", "P3CR", "P4", "P4CR", "P5", "SMMOD", "P6", "P7", "P67CR", "SMCR", "P8", "P8CR", "WDMOD", "WDCR", "TREG0", "TREG1", "TREG2", "TREG3", @@ -48,7 +63,8 @@ tmp90840_disassembler::tmp90840_disassembler() { } -const char *const tmp90844_disassembler::ir_names[0x40] = { +const char *const tmp90844_disassembler::ir_names[0x40] = +{ "P0", "P0CR", "P1", "P1CR", "P2", "P2CR", "P3", "P3CR", "P4", "P4CR", "P5", "P6", "P7", "P67CR", "P23FR", "P4FR", "P67FR", "P25FR", "WDMOD", "WDCR", "TREG0", "TREG1", "TREG2", "TREG3", @@ -64,7 +80,8 @@ tmp90844_disassembler::tmp90844_disassembler() { } -const char *const tmp90c051_disassembler::ir_names[0x4c] = { +const char *const tmp90c051_disassembler::ir_names[0x4c] = +{ "P2", "P2CR", "P3", "P3CR", "P3FR", "P4", "P5", "P45CR", "P45FR", "P6", "P6CR", "P6FR", "TREG0", "TREG1", "TREG2", "TREG3", "T01MOD", "T23MOD", "TFFCR", "TRDC", @@ -143,28 +160,28 @@ const char *tlcs90_disassembler::internal_registers_names(uint16_t x) const #define ZF 0x40 #define SF 0x80 -#define OP( X,CT ) m_op = X; -#define OP16( X,CT ) m_op = X; - -#define OPCC( X,CF,CT ) m_op = X; -#define OPCC16( X,CF,CT ) m_op = X; - -#define BIT8( N,I ) m_mode##N = e_mode::BIT8; m_r##N = I; -#define I8( N,I ) m_mode##N = e_mode::I8; m_r##N = I; -#define D8( N,I ) m_mode##N = e_mode::D8; m_r##N = I; -#define I16( N,I ) m_mode##N = e_mode::I16; m_r##N = I; -#define D16( N,I ) m_mode##N = e_mode::D16; m_r##N = I; -#define R8( N,R ) m_mode##N = e_mode::R8; m_r##N = R; -#define R16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; -#define Q16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; if (m_r##N == SP) m_r##N = AF; -#define MI16( N,I ) m_mode##N = e_mode::MI16; m_r##N = I; -#define MR16( N,R ) m_mode##N = e_mode::MR16; m_r##N = R; -#define MR16D8( N,R,I ) m_mode##N = e_mode::MR16D8; m_r##N = R; m_r##N##b = I; -#define MR16R8( N,R,g ) m_mode##N = e_mode::MR16R8; m_r##N = R; m_r##N##b = g; -#define NONE( N ) m_mode##N = e_mode::NONE; -#define CC( N,cc ) m_mode##N = e_mode::CC; m_r##N = cc; -#define R16D8( N,R,I ) m_mode##N = e_mode::R16D8; m_r##N = R; m_r##N##b = I; -#define R16R8( N,R,g ) m_mode##N = e_mode::R16R8; m_r##N = R; m_r##N##b = g; +#define OP( X,CT ) m_op = X; +#define OP16( X,CT ) m_op = X; + +#define OPCC( X,CF,CT ) m_op = X; +#define OPCC16( X,CF,CT ) m_op = X; + +#define BIT8( N,I ) m_mode##N = e_mode::BIT8; m_r##N = I; +#define I8( N,I ) m_mode##N = e_mode::I8; m_r##N = I; +#define D8( N,I ) m_mode##N = e_mode::D8; m_r##N = I; +#define I16( N,I ) m_mode##N = e_mode::I16; m_r##N = I; +#define D16( N,I ) m_mode##N = e_mode::D16; m_r##N = I; +#define R8( N,R ) m_mode##N = e_mode::R8; m_r##N = R; +#define R16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; +#define Q16( N,R ) m_mode##N = e_mode::R16; m_r##N = R; if (m_r##N == SP) m_r##N = AF; +#define MI16( N,I ) m_mode##N = e_mode::MI16; m_r##N = I; +#define MR16( N,R ) m_mode##N = e_mode::MR16; m_r##N = R; +#define MR16D8( N,R,I ) m_mode##N = e_mode::MR16D8; m_r##N = R; m_r##N##b = I; +#define MR16R8( N,R,g ) m_mode##N = e_mode::MR16R8; m_r##N = R; m_r##N##b = g; +#define NONE( N ) m_mode##N = e_mode::NONE; +#define CC( N,cc ) m_mode##N = e_mode::CC; m_r##N = cc; +#define R16D8( N,R,I ) m_mode##N = e_mode::R16D8; m_r##N = R; m_r##N##b = I; +#define R16R8( N,R,g ) m_mode##N = e_mode::R16R8; m_r##N = R; m_r##N##b = g; uint8_t tlcs90_disassembler::READ8() { @@ -960,7 +977,7 @@ bool tlcs90_disassembler::stream_arg(std::ostream &stream, uint32_t pc, const ch if (reg_name) util::stream_format(stream, "%s(%s)", pre, reg_name); else - util::stream_format(stream, "%s($%04X)", pre, r ); + util::stream_format(stream, "%s($%04X)", pre, r); return true; case e_mode::R8: util::stream_format(stream, "%s%s", pre, r8_names[r] ); return true; case e_mode::R16: util::stream_format(stream, "%s%s", pre, r16_names[r] ); return true; diff --git a/src/devices/cpu/tlcs90/tlcs90d.h b/src/devices/cpu/tlcs90/tlcs90d.h index 2c71cd432d2..a8392e74eb3 100644 --- a/src/devices/cpu/tlcs90/tlcs90d.h +++ b/src/devices/cpu/tlcs90/tlcs90d.h @@ -2,13 +2,7 @@ // copyright-holders:Luca Elia /************************************************************************************************************* - Toshiba TLCS-90 Series MCU's - - emulation by Luca Elia, based on the Z80 core by Juergen Buchmueller - - ChangeLog: - - 20150517 Fixed TRUN bit masking (timers start/stop handling) [Rainer Keuchel] + Toshiba TLCS-90 Series MCU's disassembler *************************************************************************************************************/ @@ -28,9 +22,21 @@ protected: tlcs90_disassembler(uint16_t iobase, const char *const ir_names[]); private: - enum _e_op { UNKNOWN, NOP, EX, EXX, LD, LDW, LDA, LDI, LDIR, LDD, LDDR, CPI, CPIR, CPD, CPDR, PUSH, POP, JP, JR, CALL, CALLR, RET, RETI, HALT, DI, EI, SWI, DAA, CPL, NEG, LDAR, RCF, SCF, CCF, TSET, BIT, SET, RES, INC, DEC, INCX, DECX, INCW, DECW, ADD, ADC, SUB, SBC, AND, XOR, OR, CP, RLC, RRC, RL, RR, SLA, SRA, SLL, SRL, RLD, RRD, DJNZ, MUL, DIV }; + enum _e_op + { + UNKNOWN, + NOP, EX, EXX, LD, LDW, LDA, LDI, LDIR, + LDD, LDDR, CPI, CPIR, CPD, CPDR, PUSH, POP, + JP, JR, CALL, CALLR, RET, RETI, HALT, DI, + EI, SWI, DAA, CPL, NEG, LDAR, RCF, SCF, + CCF, TSET, BIT, SET, RES, INC, DEC, INCX, + DECX, INCW, DECW, ADD, ADC, SUB, SBC, AND, + XOR, OR, CP, RLC, RRC, RL, RR, SLA, + SRA, SLL, SRL, RLD, RRD, DJNZ, MUL, DIV + }; - enum class e_mode : u8 { + enum class e_mode : u8 + { NONE, BIT8, CC, I8, D8, R8, I16, D16, R16, @@ -46,18 +52,18 @@ private: const uint16_t m_iobase; const char *const *m_ir_names; - uint8_t m_op; + uint8_t m_op; - e_mode m_mode1; - uint16_t m_r1,m_r1b; + e_mode m_mode1; + uint16_t m_r1, m_r1b; - e_mode m_mode2; - uint16_t m_r2,m_r2b; + e_mode m_mode2; + uint16_t m_r2, m_r2b; offs_t m_addr; const data_buffer *m_opcodes; - inline uint8_t READ8(); + inline uint8_t READ8(); inline uint16_t READ16(); void decode(); diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp index cac2f42845b..5ae5cb54f6b 100644 --- a/src/devices/cpu/tms9900/tms9900.cpp +++ b/src/devices/cpu/tms9900/tms9900.cpp @@ -2771,10 +2771,6 @@ uint32_t tms99xx_device::execute_max_cycles() const noexcept return 124; } -// clocks to cycles, cycles to clocks = id -// execute_default_irq_vector = 0 -// execute_burn = nop - // device_disasm_interface overrides std::unique_ptr<util::disasm_interface> tms99xx_device::create_disassembler() diff --git a/src/devices/cpu/tms9900/tms9980a.cpp b/src/devices/cpu/tms9900/tms9980a.cpp index fc83e0b3c7b..9f5d058705b 100644 --- a/src/devices/cpu/tms9900/tms9980a.cpp +++ b/src/devices/cpu/tms9900/tms9980a.cpp @@ -283,10 +283,6 @@ uint32_t tms9980a_device::execute_max_cycles() const noexcept return 136; } -// clocks to cycles, cycles to clocks = id -// execute_default_irq_vector = 0 -// execute_burn = nop - // device_disasm_interface overrides std::unique_ptr<util::disasm_interface> tms9980a_device::create_disassembler() diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp index 3097427bd69..b7c11b2b175 100644 --- a/src/devices/cpu/z180/z180.cpp +++ b/src/devices/cpu/z180/z180.cpp @@ -2,7 +2,6 @@ // copyright-holders:Juergen Buchmueller /***************************************************************************** * - * z180.c * Portable Z180 emulator V0.3 * *****************************************************************************/ @@ -13,8 +12,8 @@ - HALT processing is not yet perfect. The manual states that during HALT, all dma and internal i/o incl. timers continue to work. Currently, only timers are implemented. Ideally, the - burn_cycles routine would go away and halt processing be - implemented in cpu_execute. + (currently unused) burn_cycles routine would go away and halt + processing be implemented in execute_run. - Documentation for RXS/CTS1 pin is contradictory. @@ -2015,7 +2014,7 @@ again: /**************************************************************************** * Burn 'cycles' T-states. Adjust R register for the lost time ****************************************************************************/ -void z180_device::execute_burn(int32_t cycles) +void z180_device::burn_cycles(int32_t cycles) { int extra_cycles = memory_wait_states(); diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h index 18aa0b5770f..4a8e0e5e4a5 100644 --- a/src/devices/cpu/z180/z180.h +++ b/src/devices/cpu/z180/z180.h @@ -147,7 +147,6 @@ protected: virtual uint32_t execute_default_irq_vector(int inputnum) const noexcept override { return 0xff; } virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return inputnum == INPUT_LINE_NMI; } virtual void execute_run() override; - [[maybe_unused]] void execute_burn(int32_t cycles); virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface implementation @@ -164,6 +163,7 @@ protected: virtual uint8_t z180_internal_port_read(uint8_t port); virtual void z180_internal_port_write(uint8_t port, uint8_t data); + [[maybe_unused]] void burn_cycles(int32_t cycles); address_space_config m_program_config; address_space_config m_io_config; diff --git a/src/devices/cpu/z180/z180dasm.cpp b/src/devices/cpu/z180/z180dasm.cpp index 393f9a51946..835c620770d 100644 --- a/src/devices/cpu/z180/z180dasm.cpp +++ b/src/devices/cpu/z180/z180dasm.cpp @@ -2,7 +2,6 @@ // copyright-holders:Juergen Buchmueller /***************************************************************************** * - * z180dasm.c * Portable Z8x180 disassembler * *****************************************************************************/ diff --git a/src/devices/cpu/z180/z180dasm.h b/src/devices/cpu/z180/z180dasm.h index a13c7d92fe1..1d6de1bbf5d 100644 --- a/src/devices/cpu/z180/z180dasm.h +++ b/src/devices/cpu/z180/z180dasm.h @@ -2,7 +2,6 @@ // copyright-holders:Juergen Buchmueller /***************************************************************************** * - * z180dasm.c * Portable Z8x180 disassembler * *****************************************************************************/ diff --git a/src/devices/cpu/z180/z180dd.hxx b/src/devices/cpu/z180/z180dd.hxx index d73c9720cf3..2bee2a99d62 100644 --- a/src/devices/cpu/z180/z180dd.hxx +++ b/src/devices/cpu/z180/z180dd.hxx @@ -1,6 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Juergen Buchmueller -OP(illegal,1) { +OP(illegal,1) +{ logerror("Z180 '%s' ill. opcode $%02x $%02x\n", tag(), m_copcodes.read_byte((_PCD-1)&0xffff), m_copcodes.read_byte(_PCD)); } |