mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
mcs48: burn opcode cycles before executing opcode
This commit is contained in:
parent
f5d61a984c
commit
4648aa6acf
@ -4,7 +4,7 @@
|
||||
|
||||
Videopac 40 cartridge emulation
|
||||
|
||||
3KB program ROM + 1KB bankswitched data ROM
|
||||
4KB ROM (program ROM is fixed, data ROM is 'bankswitched' via P11)
|
||||
|
||||
Used in:
|
||||
- #31: Musician
|
||||
|
@ -33,7 +33,7 @@ protected:
|
||||
virtual u8 read_rom0c(offs_t offset) override { return m_rom[offset + 0xc00]; }
|
||||
|
||||
virtual void write_p1(u8 data) override { m_control = data; }
|
||||
virtual void write_p2(u8 data) override { m_bank = data & 3; }
|
||||
virtual void write_p2(u8 data) override { m_bank = data; }
|
||||
virtual u8 io_read(offs_t offset) override;
|
||||
|
||||
private:
|
||||
|
@ -577,80 +577,82 @@ void mcs48_cpu_device::expander_operation(expander_op operation, uint8_t port)
|
||||
OPCODE HANDLERS
|
||||
***************************************************************************/
|
||||
|
||||
#define OPHANDLER(_name) int mcs48_cpu_device::_name()
|
||||
#define OPHANDLER(_name) void mcs48_cpu_device::_name()
|
||||
|
||||
|
||||
OPHANDLER( illegal )
|
||||
{
|
||||
burn_cycles(1);
|
||||
logerror("MCS-48 PC:%04X - Illegal opcode = %02x\n", m_pc - 1, program_r(m_pc - 1));
|
||||
return 0;
|
||||
}
|
||||
|
||||
OPHANDLER( add_a_r0 ) { execute_add(R0); return 0; }
|
||||
OPHANDLER( add_a_r1 ) { execute_add(R1); return 0; }
|
||||
OPHANDLER( add_a_r2 ) { execute_add(R2); return 0; }
|
||||
OPHANDLER( add_a_r3 ) { execute_add(R3); return 0; }
|
||||
OPHANDLER( add_a_r4 ) { execute_add(R4); return 0; }
|
||||
OPHANDLER( add_a_r5 ) { execute_add(R5); return 0; }
|
||||
OPHANDLER( add_a_r6 ) { execute_add(R6); return 0; }
|
||||
OPHANDLER( add_a_r7 ) { execute_add(R7); return 0; }
|
||||
OPHANDLER( add_a_xr0 ) { execute_add(ram_r(R0)); return 0; }
|
||||
OPHANDLER( add_a_xr1 ) { execute_add(ram_r(R1)); return 0; }
|
||||
OPHANDLER( add_a_n ) { execute_add(argument_fetch()); return 1; }
|
||||
OPHANDLER( add_a_r0 ) { burn_cycles(1); execute_add(R0); }
|
||||
OPHANDLER( add_a_r1 ) { burn_cycles(1); execute_add(R1); }
|
||||
OPHANDLER( add_a_r2 ) { burn_cycles(1); execute_add(R2); }
|
||||
OPHANDLER( add_a_r3 ) { burn_cycles(1); execute_add(R3); }
|
||||
OPHANDLER( add_a_r4 ) { burn_cycles(1); execute_add(R4); }
|
||||
OPHANDLER( add_a_r5 ) { burn_cycles(1); execute_add(R5); }
|
||||
OPHANDLER( add_a_r6 ) { burn_cycles(1); execute_add(R6); }
|
||||
OPHANDLER( add_a_r7 ) { burn_cycles(1); execute_add(R7); }
|
||||
OPHANDLER( add_a_xr0 ) { burn_cycles(1); execute_add(ram_r(R0)); }
|
||||
OPHANDLER( add_a_xr1 ) { burn_cycles(1); execute_add(ram_r(R1)); }
|
||||
OPHANDLER( add_a_n ) { burn_cycles(2); execute_add(argument_fetch()); }
|
||||
|
||||
OPHANDLER( adc_a_r0 ) { execute_addc(R0); return 0; }
|
||||
OPHANDLER( adc_a_r1 ) { execute_addc(R1); return 0; }
|
||||
OPHANDLER( adc_a_r2 ) { execute_addc(R2); return 0; }
|
||||
OPHANDLER( adc_a_r3 ) { execute_addc(R3); return 0; }
|
||||
OPHANDLER( adc_a_r4 ) { execute_addc(R4); return 0; }
|
||||
OPHANDLER( adc_a_r5 ) { execute_addc(R5); return 0; }
|
||||
OPHANDLER( adc_a_r6 ) { execute_addc(R6); return 0; }
|
||||
OPHANDLER( adc_a_r7 ) { execute_addc(R7); return 0; }
|
||||
OPHANDLER( adc_a_xr0 ) { execute_addc(ram_r(R0)); return 0; }
|
||||
OPHANDLER( adc_a_xr1 ) { execute_addc(ram_r(R1)); return 0; }
|
||||
OPHANDLER( adc_a_n ) { execute_addc(argument_fetch()); return 1; }
|
||||
OPHANDLER( adc_a_r0 ) { burn_cycles(1); execute_addc(R0); }
|
||||
OPHANDLER( adc_a_r1 ) { burn_cycles(1); execute_addc(R1); }
|
||||
OPHANDLER( adc_a_r2 ) { burn_cycles(1); execute_addc(R2); }
|
||||
OPHANDLER( adc_a_r3 ) { burn_cycles(1); execute_addc(R3); }
|
||||
OPHANDLER( adc_a_r4 ) { burn_cycles(1); execute_addc(R4); }
|
||||
OPHANDLER( adc_a_r5 ) { burn_cycles(1); execute_addc(R5); }
|
||||
OPHANDLER( adc_a_r6 ) { burn_cycles(1); execute_addc(R6); }
|
||||
OPHANDLER( adc_a_r7 ) { burn_cycles(1); execute_addc(R7); }
|
||||
OPHANDLER( adc_a_xr0 ) { burn_cycles(1); execute_addc(ram_r(R0)); }
|
||||
OPHANDLER( adc_a_xr1 ) { burn_cycles(1); execute_addc(ram_r(R1)); }
|
||||
OPHANDLER( adc_a_n ) { burn_cycles(2); execute_addc(argument_fetch()); }
|
||||
|
||||
OPHANDLER( anl_a_r0 ) { m_a &= R0; return 0; }
|
||||
OPHANDLER( anl_a_r1 ) { m_a &= R1; return 0; }
|
||||
OPHANDLER( anl_a_r2 ) { m_a &= R2; return 0; }
|
||||
OPHANDLER( anl_a_r3 ) { m_a &= R3; return 0; }
|
||||
OPHANDLER( anl_a_r4 ) { m_a &= R4; return 0; }
|
||||
OPHANDLER( anl_a_r5 ) { m_a &= R5; return 0; }
|
||||
OPHANDLER( anl_a_r6 ) { m_a &= R6; return 0; }
|
||||
OPHANDLER( anl_a_r7 ) { m_a &= R7; return 0; }
|
||||
OPHANDLER( anl_a_xr0 ) { m_a &= ram_r(R0); return 0; }
|
||||
OPHANDLER( anl_a_xr1 ) { m_a &= ram_r(R1); return 0; }
|
||||
OPHANDLER( anl_a_n ) { m_a &= argument_fetch(); return 1; }
|
||||
OPHANDLER( anl_a_r0 ) { burn_cycles(1); m_a &= R0; }
|
||||
OPHANDLER( anl_a_r1 ) { burn_cycles(1); m_a &= R1; }
|
||||
OPHANDLER( anl_a_r2 ) { burn_cycles(1); m_a &= R2; }
|
||||
OPHANDLER( anl_a_r3 ) { burn_cycles(1); m_a &= R3; }
|
||||
OPHANDLER( anl_a_r4 ) { burn_cycles(1); m_a &= R4; }
|
||||
OPHANDLER( anl_a_r5 ) { burn_cycles(1); m_a &= R5; }
|
||||
OPHANDLER( anl_a_r6 ) { burn_cycles(1); m_a &= R6; }
|
||||
OPHANDLER( anl_a_r7 ) { burn_cycles(1); m_a &= R7; }
|
||||
OPHANDLER( anl_a_xr0 ) { burn_cycles(1); m_a &= ram_r(R0); }
|
||||
OPHANDLER( anl_a_xr1 ) { burn_cycles(1); m_a &= ram_r(R1); }
|
||||
OPHANDLER( anl_a_n ) { burn_cycles(2); m_a &= argument_fetch(); }
|
||||
|
||||
OPHANDLER( anl_bus_n ) { bus_w(bus_r() & argument_fetch()); return 1; }
|
||||
OPHANDLER( anl_p1_n ) { port_w(1, m_p1 &= argument_fetch()); return 1; }
|
||||
OPHANDLER( anl_p2_n ) { port_w(2, m_p2 &= argument_fetch() | ~p2_mask()); return 1; }
|
||||
OPHANDLER( anld_p4_a ) { expander_operation(EXPANDER_OP_AND, 4); return 1; }
|
||||
OPHANDLER( anld_p5_a ) { expander_operation(EXPANDER_OP_AND, 5); return 1; }
|
||||
OPHANDLER( anld_p6_a ) { expander_operation(EXPANDER_OP_AND, 6); return 1; }
|
||||
OPHANDLER( anld_p7_a ) { expander_operation(EXPANDER_OP_AND, 7); return 1; }
|
||||
OPHANDLER( anl_bus_n ) { burn_cycles(2); bus_w(bus_r() & argument_fetch()); }
|
||||
OPHANDLER( anl_p1_n ) { burn_cycles(2); port_w(1, m_p1 &= argument_fetch()); }
|
||||
OPHANDLER( anl_p2_n ) { burn_cycles(2); port_w(2, m_p2 &= argument_fetch() | ~p2_mask()); }
|
||||
OPHANDLER( anld_p4_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_AND, 4); }
|
||||
OPHANDLER( anld_p5_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_AND, 5); }
|
||||
OPHANDLER( anld_p6_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_AND, 6); }
|
||||
OPHANDLER( anld_p7_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_AND, 7); }
|
||||
|
||||
OPHANDLER( call_0 ) { execute_call(argument_fetch() | 0x000); return 1; }
|
||||
OPHANDLER( call_1 ) { execute_call(argument_fetch() | 0x100); return 1; }
|
||||
OPHANDLER( call_2 ) { execute_call(argument_fetch() | 0x200); return 1; }
|
||||
OPHANDLER( call_3 ) { execute_call(argument_fetch() | 0x300); return 1; }
|
||||
OPHANDLER( call_4 ) { execute_call(argument_fetch() | 0x400); return 1; }
|
||||
OPHANDLER( call_5 ) { execute_call(argument_fetch() | 0x500); return 1; }
|
||||
OPHANDLER( call_6 ) { execute_call(argument_fetch() | 0x600); return 1; }
|
||||
OPHANDLER( call_7 ) { execute_call(argument_fetch() | 0x700); return 1; }
|
||||
OPHANDLER( call_0 ) { burn_cycles(2); execute_call(argument_fetch() | 0x000); }
|
||||
OPHANDLER( call_1 ) { burn_cycles(2); execute_call(argument_fetch() | 0x100); }
|
||||
OPHANDLER( call_2 ) { burn_cycles(2); execute_call(argument_fetch() | 0x200); }
|
||||
OPHANDLER( call_3 ) { burn_cycles(2); execute_call(argument_fetch() | 0x300); }
|
||||
OPHANDLER( call_4 ) { burn_cycles(2); execute_call(argument_fetch() | 0x400); }
|
||||
OPHANDLER( call_5 ) { burn_cycles(2); execute_call(argument_fetch() | 0x500); }
|
||||
OPHANDLER( call_6 ) { burn_cycles(2); execute_call(argument_fetch() | 0x600); }
|
||||
OPHANDLER( call_7 ) { burn_cycles(2); execute_call(argument_fetch() | 0x700); }
|
||||
|
||||
OPHANDLER( clr_a ) { m_a = 0; return 0; }
|
||||
OPHANDLER( clr_c ) { m_psw &= ~C_FLAG; return 0; }
|
||||
OPHANDLER( clr_f0 ) { m_psw &= ~F_FLAG; m_sts &= ~STS_F0; return 0; }
|
||||
OPHANDLER( clr_f1 ) { m_sts &= ~STS_F1; return 0; }
|
||||
OPHANDLER( clr_a ) { burn_cycles(1); m_a = 0; }
|
||||
OPHANDLER( clr_c ) { burn_cycles(1); m_psw &= ~C_FLAG; }
|
||||
OPHANDLER( clr_f0 ) { burn_cycles(1); m_psw &= ~F_FLAG; m_sts &= ~STS_F0; }
|
||||
OPHANDLER( clr_f1 ) { burn_cycles(1); m_sts &= ~STS_F1; }
|
||||
|
||||
OPHANDLER( cpl_a ) { m_a ^= 0xff; return 0; }
|
||||
OPHANDLER( cpl_c ) { m_psw ^= C_FLAG; return 0; }
|
||||
OPHANDLER( cpl_f0 ) { m_psw ^= F_FLAG; m_sts ^= STS_F0; return 0; }
|
||||
OPHANDLER( cpl_f1 ) { m_sts ^= STS_F1; return 0; }
|
||||
OPHANDLER( cpl_a ) { burn_cycles(1); m_a ^= 0xff; }
|
||||
OPHANDLER( cpl_c ) { burn_cycles(1); m_psw ^= C_FLAG; }
|
||||
OPHANDLER( cpl_f0 ) { burn_cycles(1); m_psw ^= F_FLAG; m_sts ^= STS_F0; }
|
||||
OPHANDLER( cpl_f1 ) { burn_cycles(1); m_sts ^= STS_F1; }
|
||||
|
||||
OPHANDLER( da_a )
|
||||
{
|
||||
burn_cycles(1);
|
||||
|
||||
if ((m_a & 0x0f) > 0x09 || (m_psw & A_FLAG))
|
||||
{
|
||||
m_a += 0x06;
|
||||
@ -664,50 +666,52 @@ OPHANDLER( da_a )
|
||||
}
|
||||
else
|
||||
m_psw &= ~C_FLAG;
|
||||
return 0;
|
||||
}
|
||||
|
||||
OPHANDLER( dec_a ) { m_a--; return 0; }
|
||||
OPHANDLER( dec_r0 ) { R0--; return 0; }
|
||||
OPHANDLER( dec_r1 ) { R1--; return 0; }
|
||||
OPHANDLER( dec_r2 ) { R2--; return 0; }
|
||||
OPHANDLER( dec_r3 ) { R3--; return 0; }
|
||||
OPHANDLER( dec_r4 ) { R4--; return 0; }
|
||||
OPHANDLER( dec_r5 ) { R5--; return 0; }
|
||||
OPHANDLER( dec_r6 ) { R6--; return 0; }
|
||||
OPHANDLER( dec_r7 ) { R7--; return 0; }
|
||||
OPHANDLER( dec_a ) { burn_cycles(1); m_a--; }
|
||||
OPHANDLER( dec_r0 ) { burn_cycles(1); R0--; }
|
||||
OPHANDLER( dec_r1 ) { burn_cycles(1); R1--; }
|
||||
OPHANDLER( dec_r2 ) { burn_cycles(1); R2--; }
|
||||
OPHANDLER( dec_r3 ) { burn_cycles(1); R3--; }
|
||||
OPHANDLER( dec_r4 ) { burn_cycles(1); R4--; }
|
||||
OPHANDLER( dec_r5 ) { burn_cycles(1); R5--; }
|
||||
OPHANDLER( dec_r6 ) { burn_cycles(1); R6--; }
|
||||
OPHANDLER( dec_r7 ) { burn_cycles(1); R7--; }
|
||||
|
||||
OPHANDLER( dis_i ) { m_xirq_enabled = false; return 0; }
|
||||
OPHANDLER( dis_tcnti ) { m_tirq_enabled = false; m_timer_overflow = false; return 0; }
|
||||
OPHANDLER( dis_i ) { burn_cycles(1); m_xirq_enabled = false; }
|
||||
OPHANDLER( dis_tcnti ) { burn_cycles(1); m_tirq_enabled = false; m_timer_overflow = false; }
|
||||
|
||||
OPHANDLER( djnz_r0 ) { execute_jcc(--R0 != 0); return 1; }
|
||||
OPHANDLER( djnz_r1 ) { execute_jcc(--R1 != 0); return 1; }
|
||||
OPHANDLER( djnz_r2 ) { execute_jcc(--R2 != 0); return 1; }
|
||||
OPHANDLER( djnz_r3 ) { execute_jcc(--R3 != 0); return 1; }
|
||||
OPHANDLER( djnz_r4 ) { execute_jcc(--R4 != 0); return 1; }
|
||||
OPHANDLER( djnz_r5 ) { execute_jcc(--R5 != 0); return 1; }
|
||||
OPHANDLER( djnz_r6 ) { execute_jcc(--R6 != 0); return 1; }
|
||||
OPHANDLER( djnz_r7 ) { execute_jcc(--R7 != 0); return 1; }
|
||||
OPHANDLER( djnz_r0 ) { burn_cycles(2); execute_jcc(--R0 != 0); }
|
||||
OPHANDLER( djnz_r1 ) { burn_cycles(2); execute_jcc(--R1 != 0); }
|
||||
OPHANDLER( djnz_r2 ) { burn_cycles(2); execute_jcc(--R2 != 0); }
|
||||
OPHANDLER( djnz_r3 ) { burn_cycles(2); execute_jcc(--R3 != 0); }
|
||||
OPHANDLER( djnz_r4 ) { burn_cycles(2); execute_jcc(--R4 != 0); }
|
||||
OPHANDLER( djnz_r5 ) { burn_cycles(2); execute_jcc(--R5 != 0); }
|
||||
OPHANDLER( djnz_r6 ) { burn_cycles(2); execute_jcc(--R6 != 0); }
|
||||
OPHANDLER( djnz_r7 ) { burn_cycles(2); execute_jcc(--R7 != 0); }
|
||||
|
||||
OPHANDLER( en_i ) { m_xirq_enabled = true; return 0; }
|
||||
OPHANDLER( en_tcnti ) { m_tirq_enabled = true; return 0; }
|
||||
OPHANDLER( en_dma ) { m_dma_enabled = true; port_w(2, m_p2); return 0; }
|
||||
OPHANDLER( en_flags ) { m_flags_enabled = true; port_w(2, m_p2); return 0; }
|
||||
OPHANDLER( en_i ) { burn_cycles(1); m_xirq_enabled = true; }
|
||||
OPHANDLER( en_tcnti ) { burn_cycles(1); m_tirq_enabled = true; }
|
||||
OPHANDLER( en_dma ) { burn_cycles(1); m_dma_enabled = true; port_w(2, m_p2); }
|
||||
OPHANDLER( en_flags ) { burn_cycles(1); m_flags_enabled = true; port_w(2, m_p2); }
|
||||
OPHANDLER( ent0_clk )
|
||||
{
|
||||
burn_cycles(1);
|
||||
|
||||
if (!m_t0_clk_func.isnull())
|
||||
m_t0_clk_func(clock() / 3);
|
||||
else
|
||||
logerror("T0 clock enabled\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
OPHANDLER( in_a_p0 ) { m_a = bus_r() & m_dbbo; return 1; }
|
||||
OPHANDLER( in_a_p1 ) { m_a = port_r(1) & m_p1; return 1; }
|
||||
OPHANDLER( in_a_p2 ) { m_a = port_r(2) & m_p2; return 1; }
|
||||
OPHANDLER( ins_a_bus ) { m_a = bus_r(); return 1; }
|
||||
OPHANDLER( in_a_p0 ) { burn_cycles(2); m_a = bus_r() & m_dbbo; }
|
||||
OPHANDLER( in_a_p1 ) { burn_cycles(2); m_a = port_r(1) & m_p1; }
|
||||
OPHANDLER( in_a_p2 ) { burn_cycles(2); m_a = port_r(2) & m_p2; }
|
||||
OPHANDLER( ins_a_bus ) { burn_cycles(2); m_a = bus_r(); }
|
||||
OPHANDLER( in_a_dbb )
|
||||
{
|
||||
burn_cycles(2);
|
||||
|
||||
/* acknowledge the IBF IRQ and clear the bit in STS */
|
||||
if ((m_sts & STS_IBF) != 0)
|
||||
standard_irq_callback(UPI41_INPUT_IBF);
|
||||
@ -717,137 +721,138 @@ OPHANDLER( in_a_dbb )
|
||||
if (m_flags_enabled && (m_p2 & P2_NIBF) == 0)
|
||||
port_w(2, m_p2 |= P2_NIBF);
|
||||
m_a = m_dbbi;
|
||||
return 1;
|
||||
}
|
||||
|
||||
OPHANDLER( inc_a ) { m_a++; return 0; }
|
||||
OPHANDLER( inc_r0 ) { R0++; return 0; }
|
||||
OPHANDLER( inc_r1 ) { R1++; return 0; }
|
||||
OPHANDLER( inc_r2 ) { R2++; return 0; }
|
||||
OPHANDLER( inc_r3 ) { R3++; return 0; }
|
||||
OPHANDLER( inc_r4 ) { R4++; return 0; }
|
||||
OPHANDLER( inc_r5 ) { R5++; return 0; }
|
||||
OPHANDLER( inc_r6 ) { R6++; return 0; }
|
||||
OPHANDLER( inc_r7 ) { R7++; return 0; }
|
||||
OPHANDLER( inc_xr0 ) { ram_w(R0, ram_r(R0) + 1); return 0; }
|
||||
OPHANDLER( inc_xr1 ) { ram_w(R1, ram_r(R1) + 1); return 0; }
|
||||
OPHANDLER( inc_a ) { burn_cycles(1); m_a++; }
|
||||
OPHANDLER( inc_r0 ) { burn_cycles(1); R0++; }
|
||||
OPHANDLER( inc_r1 ) { burn_cycles(1); R1++; }
|
||||
OPHANDLER( inc_r2 ) { burn_cycles(1); R2++; }
|
||||
OPHANDLER( inc_r3 ) { burn_cycles(1); R3++; }
|
||||
OPHANDLER( inc_r4 ) { burn_cycles(1); R4++; }
|
||||
OPHANDLER( inc_r5 ) { burn_cycles(1); R5++; }
|
||||
OPHANDLER( inc_r6 ) { burn_cycles(1); R6++; }
|
||||
OPHANDLER( inc_r7 ) { burn_cycles(1); R7++; }
|
||||
OPHANDLER( inc_xr0 ) { burn_cycles(1); ram_w(R0, ram_r(R0) + 1); }
|
||||
OPHANDLER( inc_xr1 ) { burn_cycles(1); ram_w(R1, ram_r(R1) + 1); }
|
||||
|
||||
OPHANDLER( jb_0 ) { execute_jcc((m_a & 0x01) != 0); return 1; }
|
||||
OPHANDLER( jb_1 ) { execute_jcc((m_a & 0x02) != 0); return 1; }
|
||||
OPHANDLER( jb_2 ) { execute_jcc((m_a & 0x04) != 0); return 1; }
|
||||
OPHANDLER( jb_3 ) { execute_jcc((m_a & 0x08) != 0); return 1; }
|
||||
OPHANDLER( jb_4 ) { execute_jcc((m_a & 0x10) != 0); return 1; }
|
||||
OPHANDLER( jb_5 ) { execute_jcc((m_a & 0x20) != 0); return 1; }
|
||||
OPHANDLER( jb_6 ) { execute_jcc((m_a & 0x40) != 0); return 1; }
|
||||
OPHANDLER( jb_7 ) { execute_jcc((m_a & 0x80) != 0); return 1; }
|
||||
OPHANDLER( jc ) { execute_jcc((m_psw & C_FLAG) != 0); return 1; }
|
||||
OPHANDLER( jf0 ) { execute_jcc((m_psw & F_FLAG) != 0); return 1; }
|
||||
OPHANDLER( jf1 ) { execute_jcc((m_sts & STS_F1) != 0); return 1; }
|
||||
OPHANDLER( jnc ) { execute_jcc((m_psw & C_FLAG) == 0); return 1; }
|
||||
OPHANDLER( jni ) { m_irq_polled = (m_irq_state == 0); execute_jcc(m_irq_state != 0); return 1; }
|
||||
OPHANDLER( jnibf ) { m_irq_polled = (m_sts & STS_IBF) != 0; execute_jcc((m_sts & STS_IBF) == 0); return 1; }
|
||||
OPHANDLER( jnt_0 ) { execute_jcc(test_r(0) == 0); return 1; }
|
||||
OPHANDLER( jnt_1 ) { execute_jcc(test_r(1) == 0); return 1; }
|
||||
OPHANDLER( jnz ) { execute_jcc(m_a != 0); return 1; }
|
||||
OPHANDLER( jobf ) { execute_jcc((m_sts & STS_OBF) != 0); return 1; }
|
||||
OPHANDLER( jtf ) { execute_jcc(m_timer_flag); m_timer_flag = false; return 1; }
|
||||
OPHANDLER( jt_0 ) { execute_jcc(test_r(0) != 0); return 1; }
|
||||
OPHANDLER( jt_1 ) { execute_jcc(test_r(1) != 0); return 1; }
|
||||
OPHANDLER( jz ) { execute_jcc(m_a == 0); return 1; }
|
||||
OPHANDLER( jb_0 ) { burn_cycles(2); execute_jcc((m_a & 0x01) != 0); }
|
||||
OPHANDLER( jb_1 ) { burn_cycles(2); execute_jcc((m_a & 0x02) != 0); }
|
||||
OPHANDLER( jb_2 ) { burn_cycles(2); execute_jcc((m_a & 0x04) != 0); }
|
||||
OPHANDLER( jb_3 ) { burn_cycles(2); execute_jcc((m_a & 0x08) != 0); }
|
||||
OPHANDLER( jb_4 ) { burn_cycles(2); execute_jcc((m_a & 0x10) != 0); }
|
||||
OPHANDLER( jb_5 ) { burn_cycles(2); execute_jcc((m_a & 0x20) != 0); }
|
||||
OPHANDLER( jb_6 ) { burn_cycles(2); execute_jcc((m_a & 0x40) != 0); }
|
||||
OPHANDLER( jb_7 ) { burn_cycles(2); execute_jcc((m_a & 0x80) != 0); }
|
||||
OPHANDLER( jc ) { burn_cycles(2); execute_jcc((m_psw & C_FLAG) != 0); }
|
||||
OPHANDLER( jf0 ) { burn_cycles(2); execute_jcc((m_psw & F_FLAG) != 0); }
|
||||
OPHANDLER( jf1 ) { burn_cycles(2); execute_jcc((m_sts & STS_F1) != 0); }
|
||||
OPHANDLER( jnc ) { burn_cycles(2); execute_jcc((m_psw & C_FLAG) == 0); }
|
||||
OPHANDLER( jni ) { burn_cycles(2); m_irq_polled = (m_irq_state == 0); execute_jcc(m_irq_state != 0); }
|
||||
OPHANDLER( jnibf ) { burn_cycles(2); m_irq_polled = (m_sts & STS_IBF) != 0; execute_jcc((m_sts & STS_IBF) == 0); }
|
||||
OPHANDLER( jnt_0 ) { burn_cycles(2); execute_jcc(test_r(0) == 0); }
|
||||
OPHANDLER( jnt_1 ) { burn_cycles(2); execute_jcc(test_r(1) == 0); }
|
||||
OPHANDLER( jnz ) { burn_cycles(2); execute_jcc(m_a != 0); }
|
||||
OPHANDLER( jobf ) { burn_cycles(2); execute_jcc((m_sts & STS_OBF) != 0); }
|
||||
OPHANDLER( jtf ) { burn_cycles(2); execute_jcc(m_timer_flag); m_timer_flag = false; }
|
||||
OPHANDLER( jt_0 ) { burn_cycles(2); execute_jcc(test_r(0) != 0); }
|
||||
OPHANDLER( jt_1 ) { burn_cycles(2); execute_jcc(test_r(1) != 0); }
|
||||
OPHANDLER( jz ) { burn_cycles(2); execute_jcc(m_a == 0); }
|
||||
|
||||
OPHANDLER( jmp_0 ) { execute_jmp(argument_fetch() | 0x000); return 1; }
|
||||
OPHANDLER( jmp_1 ) { execute_jmp(argument_fetch() | 0x100); return 1; }
|
||||
OPHANDLER( jmp_2 ) { execute_jmp(argument_fetch() | 0x200); return 1; }
|
||||
OPHANDLER( jmp_3 ) { execute_jmp(argument_fetch() | 0x300); return 1; }
|
||||
OPHANDLER( jmp_4 ) { execute_jmp(argument_fetch() | 0x400); return 1; }
|
||||
OPHANDLER( jmp_5 ) { execute_jmp(argument_fetch() | 0x500); return 1; }
|
||||
OPHANDLER( jmp_6 ) { execute_jmp(argument_fetch() | 0x600); return 1; }
|
||||
OPHANDLER( jmp_7 ) { execute_jmp(argument_fetch() | 0x700); return 1; }
|
||||
OPHANDLER( jmpp_xa ) { m_pc &= 0xf00; m_pc |= program_r(m_pc | m_a); return 1; }
|
||||
OPHANDLER( jmp_0 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x000); }
|
||||
OPHANDLER( jmp_1 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x100); }
|
||||
OPHANDLER( jmp_2 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x200); }
|
||||
OPHANDLER( jmp_3 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x300); }
|
||||
OPHANDLER( jmp_4 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x400); }
|
||||
OPHANDLER( jmp_5 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x500); }
|
||||
OPHANDLER( jmp_6 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x600); }
|
||||
OPHANDLER( jmp_7 ) { burn_cycles(2); execute_jmp(argument_fetch() | 0x700); }
|
||||
OPHANDLER( jmpp_xa ) { burn_cycles(2); m_pc &= 0xf00; m_pc |= program_r(m_pc | m_a); }
|
||||
|
||||
OPHANDLER( mov_a_n ) { m_a = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_a_psw ) { m_a = m_psw; return 0; }
|
||||
OPHANDLER( mov_a_r0 ) { m_a = R0; return 0; }
|
||||
OPHANDLER( mov_a_r1 ) { m_a = R1; return 0; }
|
||||
OPHANDLER( mov_a_r2 ) { m_a = R2; return 0; }
|
||||
OPHANDLER( mov_a_r3 ) { m_a = R3; return 0; }
|
||||
OPHANDLER( mov_a_r4 ) { m_a = R4; return 0; }
|
||||
OPHANDLER( mov_a_r5 ) { m_a = R5; return 0; }
|
||||
OPHANDLER( mov_a_r6 ) { m_a = R6; return 0; }
|
||||
OPHANDLER( mov_a_r7 ) { m_a = R7; return 0; }
|
||||
OPHANDLER( mov_a_xr0 ) { m_a = ram_r(R0); return 0; }
|
||||
OPHANDLER( mov_a_xr1 ) { m_a = ram_r(R1); return 0; }
|
||||
OPHANDLER( mov_a_t ) { m_a = m_timer; return 0; }
|
||||
OPHANDLER( mov_a_n ) { burn_cycles(2); m_a = argument_fetch(); }
|
||||
OPHANDLER( mov_a_psw ) { burn_cycles(1); m_a = m_psw; }
|
||||
OPHANDLER( mov_a_r0 ) { burn_cycles(1); m_a = R0; }
|
||||
OPHANDLER( mov_a_r1 ) { burn_cycles(1); m_a = R1; }
|
||||
OPHANDLER( mov_a_r2 ) { burn_cycles(1); m_a = R2; }
|
||||
OPHANDLER( mov_a_r3 ) { burn_cycles(1); m_a = R3; }
|
||||
OPHANDLER( mov_a_r4 ) { burn_cycles(1); m_a = R4; }
|
||||
OPHANDLER( mov_a_r5 ) { burn_cycles(1); m_a = R5; }
|
||||
OPHANDLER( mov_a_r6 ) { burn_cycles(1); m_a = R6; }
|
||||
OPHANDLER( mov_a_r7 ) { burn_cycles(1); m_a = R7; }
|
||||
OPHANDLER( mov_a_xr0 ) { burn_cycles(1); m_a = ram_r(R0); }
|
||||
OPHANDLER( mov_a_xr1 ) { burn_cycles(1); m_a = ram_r(R1); }
|
||||
OPHANDLER( mov_a_t ) { burn_cycles(1); m_a = m_timer; }
|
||||
|
||||
OPHANDLER( mov_psw_a ) { m_psw = m_a; update_regptr(); return 0; }
|
||||
OPHANDLER( mov_sts_a ) { m_sts = (m_sts & 0x0f) | (m_a & 0xf0); return 0; }
|
||||
OPHANDLER( mov_r0_a ) { R0 = m_a; return 0; }
|
||||
OPHANDLER( mov_r1_a ) { R1 = m_a; return 0; }
|
||||
OPHANDLER( mov_r2_a ) { R2 = m_a; return 0; }
|
||||
OPHANDLER( mov_r3_a ) { R3 = m_a; return 0; }
|
||||
OPHANDLER( mov_r4_a ) { R4 = m_a; return 0; }
|
||||
OPHANDLER( mov_r5_a ) { R5 = m_a; return 0; }
|
||||
OPHANDLER( mov_r6_a ) { R6 = m_a; return 0; }
|
||||
OPHANDLER( mov_r7_a ) { R7 = m_a; return 0; }
|
||||
OPHANDLER( mov_r0_n ) { R0 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r1_n ) { R1 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r2_n ) { R2 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r3_n ) { R3 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r4_n ) { R4 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r5_n ) { R5 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r6_n ) { R6 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_r7_n ) { R7 = argument_fetch(); return 1; }
|
||||
OPHANDLER( mov_t_a ) { m_timer = m_a; return 0; }
|
||||
OPHANDLER( mov_xr0_a ) { ram_w(R0, m_a); return 0; }
|
||||
OPHANDLER( mov_xr1_a ) { ram_w(R1, m_a); return 0; }
|
||||
OPHANDLER( mov_xr0_n ) { ram_w(R0, argument_fetch()); return 1; }
|
||||
OPHANDLER( mov_xr1_n ) { ram_w(R1, argument_fetch()); return 1; }
|
||||
OPHANDLER( mov_psw_a ) { burn_cycles(1); m_psw = m_a; update_regptr(); }
|
||||
OPHANDLER( mov_sts_a ) { burn_cycles(1); m_sts = (m_sts & 0x0f) | (m_a & 0xf0); }
|
||||
OPHANDLER( mov_r0_a ) { burn_cycles(1); R0 = m_a; }
|
||||
OPHANDLER( mov_r1_a ) { burn_cycles(1); R1 = m_a; }
|
||||
OPHANDLER( mov_r2_a ) { burn_cycles(1); R2 = m_a; }
|
||||
OPHANDLER( mov_r3_a ) { burn_cycles(1); R3 = m_a; }
|
||||
OPHANDLER( mov_r4_a ) { burn_cycles(1); R4 = m_a; }
|
||||
OPHANDLER( mov_r5_a ) { burn_cycles(1); R5 = m_a; }
|
||||
OPHANDLER( mov_r6_a ) { burn_cycles(1); R6 = m_a; }
|
||||
OPHANDLER( mov_r7_a ) { burn_cycles(1); R7 = m_a; }
|
||||
OPHANDLER( mov_r0_n ) { burn_cycles(2); R0 = argument_fetch(); }
|
||||
OPHANDLER( mov_r1_n ) { burn_cycles(2); R1 = argument_fetch(); }
|
||||
OPHANDLER( mov_r2_n ) { burn_cycles(2); R2 = argument_fetch(); }
|
||||
OPHANDLER( mov_r3_n ) { burn_cycles(2); R3 = argument_fetch(); }
|
||||
OPHANDLER( mov_r4_n ) { burn_cycles(2); R4 = argument_fetch(); }
|
||||
OPHANDLER( mov_r5_n ) { burn_cycles(2); R5 = argument_fetch(); }
|
||||
OPHANDLER( mov_r6_n ) { burn_cycles(2); R6 = argument_fetch(); }
|
||||
OPHANDLER( mov_r7_n ) { burn_cycles(2); R7 = argument_fetch(); }
|
||||
OPHANDLER( mov_t_a ) { burn_cycles(1); m_timer = m_a; }
|
||||
OPHANDLER( mov_xr0_a ) { burn_cycles(1); ram_w(R0, m_a); }
|
||||
OPHANDLER( mov_xr1_a ) { burn_cycles(1); ram_w(R1, m_a); }
|
||||
OPHANDLER( mov_xr0_n ) { burn_cycles(2); ram_w(R0, argument_fetch()); }
|
||||
OPHANDLER( mov_xr1_n ) { burn_cycles(2); ram_w(R1, argument_fetch()); }
|
||||
|
||||
OPHANDLER( movd_a_p4 ) { expander_operation(EXPANDER_OP_READ, 4); return 1; }
|
||||
OPHANDLER( movd_a_p5 ) { expander_operation(EXPANDER_OP_READ, 5); return 1; }
|
||||
OPHANDLER( movd_a_p6 ) { expander_operation(EXPANDER_OP_READ, 6); return 1; }
|
||||
OPHANDLER( movd_a_p7 ) { expander_operation(EXPANDER_OP_READ, 7); return 1; }
|
||||
OPHANDLER( movd_p4_a ) { expander_operation(EXPANDER_OP_WRITE, 4); return 1; }
|
||||
OPHANDLER( movd_p5_a ) { expander_operation(EXPANDER_OP_WRITE, 5); return 1; }
|
||||
OPHANDLER( movd_p6_a ) { expander_operation(EXPANDER_OP_WRITE, 6); return 1; }
|
||||
OPHANDLER( movd_p7_a ) { expander_operation(EXPANDER_OP_WRITE, 7); return 1; }
|
||||
OPHANDLER( movd_a_p4 ) { burn_cycles(2); expander_operation(EXPANDER_OP_READ, 4); }
|
||||
OPHANDLER( movd_a_p5 ) { burn_cycles(2); expander_operation(EXPANDER_OP_READ, 5); }
|
||||
OPHANDLER( movd_a_p6 ) { burn_cycles(2); expander_operation(EXPANDER_OP_READ, 6); }
|
||||
OPHANDLER( movd_a_p7 ) { burn_cycles(2); expander_operation(EXPANDER_OP_READ, 7); }
|
||||
OPHANDLER( movd_p4_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_WRITE, 4); }
|
||||
OPHANDLER( movd_p5_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_WRITE, 5); }
|
||||
OPHANDLER( movd_p6_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_WRITE, 6); }
|
||||
OPHANDLER( movd_p7_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_WRITE, 7); }
|
||||
|
||||
OPHANDLER( movp_a_xa ) { m_a = program_r((m_pc & 0xf00) | m_a); return 1; }
|
||||
OPHANDLER( movp3_a_xa ) { m_a = program_r(0x300 | m_a); return 1; }
|
||||
OPHANDLER( movp_a_xa ) { burn_cycles(2); m_a = program_r((m_pc & 0xf00) | m_a); }
|
||||
OPHANDLER( movp3_a_xa ) { burn_cycles(2); m_a = program_r(0x300 | m_a); }
|
||||
|
||||
OPHANDLER( movx_a_xr0 ) { m_a = ext_r(R0); return 1; }
|
||||
OPHANDLER( movx_a_xr1 ) { m_a = ext_r(R1); return 1; }
|
||||
OPHANDLER( movx_xr0_a ) { ext_w(R0, m_a); return 1; }
|
||||
OPHANDLER( movx_xr1_a ) { ext_w(R1, m_a); return 1; }
|
||||
OPHANDLER( movx_a_xr0 ) { burn_cycles(2); m_a = ext_r(R0); }
|
||||
OPHANDLER( movx_a_xr1 ) { burn_cycles(2); m_a = ext_r(R1); }
|
||||
OPHANDLER( movx_xr0_a ) { burn_cycles(2); ext_w(R0, m_a); }
|
||||
OPHANDLER( movx_xr1_a ) { burn_cycles(2); ext_w(R1, m_a); }
|
||||
|
||||
OPHANDLER( nop ) { return 0; }
|
||||
OPHANDLER( nop ) { burn_cycles(1); }
|
||||
|
||||
OPHANDLER( orl_a_r0 ) { m_a |= R0; return 0; }
|
||||
OPHANDLER( orl_a_r1 ) { m_a |= R1; return 0; }
|
||||
OPHANDLER( orl_a_r2 ) { m_a |= R2; return 0; }
|
||||
OPHANDLER( orl_a_r3 ) { m_a |= R3; return 0; }
|
||||
OPHANDLER( orl_a_r4 ) { m_a |= R4; return 0; }
|
||||
OPHANDLER( orl_a_r5 ) { m_a |= R5; return 0; }
|
||||
OPHANDLER( orl_a_r6 ) { m_a |= R6; return 0; }
|
||||
OPHANDLER( orl_a_r7 ) { m_a |= R7; return 0; }
|
||||
OPHANDLER( orl_a_xr0 ) { m_a |= ram_r(R0); return 0; }
|
||||
OPHANDLER( orl_a_xr1 ) { m_a |= ram_r(R1); return 0; }
|
||||
OPHANDLER( orl_a_n ) { m_a |= argument_fetch(); return 1; }
|
||||
OPHANDLER( orl_a_r0 ) { burn_cycles(1); m_a |= R0; }
|
||||
OPHANDLER( orl_a_r1 ) { burn_cycles(1); m_a |= R1; }
|
||||
OPHANDLER( orl_a_r2 ) { burn_cycles(1); m_a |= R2; }
|
||||
OPHANDLER( orl_a_r3 ) { burn_cycles(1); m_a |= R3; }
|
||||
OPHANDLER( orl_a_r4 ) { burn_cycles(1); m_a |= R4; }
|
||||
OPHANDLER( orl_a_r5 ) { burn_cycles(1); m_a |= R5; }
|
||||
OPHANDLER( orl_a_r6 ) { burn_cycles(1); m_a |= R6; }
|
||||
OPHANDLER( orl_a_r7 ) { burn_cycles(1); m_a |= R7; }
|
||||
OPHANDLER( orl_a_xr0 ) { burn_cycles(1); m_a |= ram_r(R0); }
|
||||
OPHANDLER( orl_a_xr1 ) { burn_cycles(1); m_a |= ram_r(R1); }
|
||||
OPHANDLER( orl_a_n ) { burn_cycles(2); m_a |= argument_fetch(); }
|
||||
|
||||
OPHANDLER( orl_bus_n ) { bus_w(bus_r() | argument_fetch()); return 1; }
|
||||
OPHANDLER( orl_p1_n ) { port_w(1, m_p1 |= argument_fetch()); return 1; }
|
||||
OPHANDLER( orl_p2_n ) { port_w(2, m_p2 |= argument_fetch() & p2_mask()); return 1; }
|
||||
OPHANDLER( orld_p4_a ) { expander_operation(EXPANDER_OP_OR, 4); return 1; }
|
||||
OPHANDLER( orld_p5_a ) { expander_operation(EXPANDER_OP_OR, 5); return 1; }
|
||||
OPHANDLER( orld_p6_a ) { expander_operation(EXPANDER_OP_OR, 6); return 1; }
|
||||
OPHANDLER( orld_p7_a ) { expander_operation(EXPANDER_OP_OR, 7); return 1; }
|
||||
OPHANDLER( orl_bus_n ) { burn_cycles(2); bus_w(bus_r() | argument_fetch()); }
|
||||
OPHANDLER( orl_p1_n ) { burn_cycles(2); port_w(1, m_p1 |= argument_fetch()); }
|
||||
OPHANDLER( orl_p2_n ) { burn_cycles(2); port_w(2, m_p2 |= argument_fetch() & p2_mask()); }
|
||||
OPHANDLER( orld_p4_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_OR, 4); }
|
||||
OPHANDLER( orld_p5_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_OR, 5); }
|
||||
OPHANDLER( orld_p6_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_OR, 6); }
|
||||
OPHANDLER( orld_p7_a ) { burn_cycles(2); expander_operation(EXPANDER_OP_OR, 7); }
|
||||
|
||||
OPHANDLER( outl_bus_a ) { bus_w(m_a); return 1; }
|
||||
OPHANDLER( outl_p0_a ) { bus_w(m_dbbo = m_a); return 1; }
|
||||
OPHANDLER( outl_p1_a ) { port_w(1, m_p1 = m_a); return 1; }
|
||||
OPHANDLER( outl_p2_a ) { uint8_t mask = p2_mask(); port_w(2, m_p2 = (m_p2 & ~mask) | (m_a & mask)); return 1; }
|
||||
OPHANDLER( outl_bus_a ) { burn_cycles(2); bus_w(m_a); }
|
||||
OPHANDLER( outl_p0_a ) { burn_cycles(2); bus_w(m_dbbo = m_a); }
|
||||
OPHANDLER( outl_p1_a ) { burn_cycles(2); port_w(1, m_p1 = m_a); }
|
||||
OPHANDLER( outl_p2_a ) { burn_cycles(2); uint8_t mask = p2_mask(); port_w(2, m_p2 = (m_p2 & ~mask) | (m_a & mask)); }
|
||||
OPHANDLER( out_dbb_a )
|
||||
{
|
||||
burn_cycles(2);
|
||||
|
||||
/* copy to the DBBO and update the bit in STS */
|
||||
m_dbbo = m_a;
|
||||
m_sts |= STS_OBF;
|
||||
@ -855,64 +860,63 @@ OPHANDLER( out_dbb_a )
|
||||
/* if P2 flags are enabled, update the state of P2 */
|
||||
if (m_flags_enabled && (m_p2 & P2_OBF) == 0)
|
||||
port_w(2, m_p2 |= P2_OBF);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
OPHANDLER( ret ) { pull_pc(); return 1; }
|
||||
OPHANDLER( ret ) { burn_cycles(2); pull_pc(); }
|
||||
OPHANDLER( retr )
|
||||
{
|
||||
burn_cycles(2);
|
||||
pull_pc_psw();
|
||||
|
||||
/* implicitly clear the IRQ in progress flip flop */
|
||||
m_irq_in_progress = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
OPHANDLER( rl_a ) { m_a = (m_a << 1) | (m_a >> 7); return 0; }
|
||||
OPHANDLER( rlc_a ) { uint8_t newc = m_a & C_FLAG; m_a = (m_a << 1) | (m_psw >> 7); m_psw = (m_psw & ~C_FLAG) | newc; return 0; }
|
||||
OPHANDLER( rl_a ) { burn_cycles(1); m_a = (m_a << 1) | (m_a >> 7); }
|
||||
OPHANDLER( rlc_a ) { burn_cycles(1); uint8_t newc = m_a & C_FLAG; m_a = (m_a << 1) | (m_psw >> 7); m_psw = (m_psw & ~C_FLAG) | newc; }
|
||||
|
||||
OPHANDLER( rr_a ) { m_a = (m_a >> 1) | (m_a << 7); return 0; }
|
||||
OPHANDLER( rrc_a ) { uint8_t newc = (m_a << 7) & C_FLAG; m_a = (m_a >> 1) | (m_psw & C_FLAG); m_psw = (m_psw & ~C_FLAG) | newc; return 0; }
|
||||
OPHANDLER( rr_a ) { burn_cycles(1); m_a = (m_a >> 1) | (m_a << 7); }
|
||||
OPHANDLER( rrc_a ) { burn_cycles(1); uint8_t newc = (m_a << 7) & C_FLAG; m_a = (m_a >> 1) | (m_psw & C_FLAG); m_psw = (m_psw & ~C_FLAG) | newc; }
|
||||
|
||||
OPHANDLER( sel_mb0 ) { m_a11 = 0x000; return 0; }
|
||||
OPHANDLER( sel_mb1 ) { m_a11 = 0x800; return 0; }
|
||||
OPHANDLER( sel_mb0 ) { burn_cycles(1); m_a11 = 0x000; }
|
||||
OPHANDLER( sel_mb1 ) { burn_cycles(1); m_a11 = 0x800; }
|
||||
|
||||
OPHANDLER( sel_rb0 ) { m_psw &= ~B_FLAG; update_regptr(); return 0; }
|
||||
OPHANDLER( sel_rb1 ) { m_psw |= B_FLAG; update_regptr(); return 0; }
|
||||
OPHANDLER( sel_rb0 ) { burn_cycles(1); m_psw &= ~B_FLAG; update_regptr(); }
|
||||
OPHANDLER( sel_rb1 ) { burn_cycles(1); m_psw |= B_FLAG; update_regptr(); }
|
||||
|
||||
OPHANDLER( stop_tcnt ) { m_timecount_enabled = 0; return 0; }
|
||||
OPHANDLER( stop_tcnt ) { burn_cycles(1); m_timecount_enabled = 0; }
|
||||
|
||||
OPHANDLER( strt_cnt ) { m_timecount_enabled = COUNTER_ENABLED; m_t1_history = test_r(1); return 0; }
|
||||
OPHANDLER( strt_t ) { m_timecount_enabled = TIMER_ENABLED; m_prescaler = 0; return 0; }
|
||||
OPHANDLER( strt_cnt ) { burn_cycles(1); m_timecount_enabled = COUNTER_ENABLED; m_t1_history = test_r(1); }
|
||||
OPHANDLER( strt_t ) { burn_cycles(1); m_timecount_enabled = TIMER_ENABLED; m_prescaler = 0; }
|
||||
|
||||
OPHANDLER( swap_a ) { m_a = (m_a << 4) | (m_a >> 4); return 0; }
|
||||
OPHANDLER( swap_a ) { burn_cycles(1); m_a = (m_a << 4) | (m_a >> 4); }
|
||||
|
||||
OPHANDLER( xch_a_r0 ) { uint8_t tmp = m_a; m_a = R0; R0 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r1 ) { uint8_t tmp = m_a; m_a = R1; R1 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r2 ) { uint8_t tmp = m_a; m_a = R2; R2 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r3 ) { uint8_t tmp = m_a; m_a = R3; R3 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r4 ) { uint8_t tmp = m_a; m_a = R4; R4 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r5 ) { uint8_t tmp = m_a; m_a = R5; R5 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r6 ) { uint8_t tmp = m_a; m_a = R6; R6 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_r7 ) { uint8_t tmp = m_a; m_a = R7; R7 = tmp; return 0; }
|
||||
OPHANDLER( xch_a_xr0 ) { uint8_t tmp = m_a; m_a = ram_r(R0); ram_w(R0, tmp); return 0; }
|
||||
OPHANDLER( xch_a_xr1 ) { uint8_t tmp = m_a; m_a = ram_r(R1); ram_w(R1, tmp); return 0; }
|
||||
OPHANDLER( xch_a_r0 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R0; R0 = tmp; }
|
||||
OPHANDLER( xch_a_r1 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R1; R1 = tmp; }
|
||||
OPHANDLER( xch_a_r2 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R2; R2 = tmp; }
|
||||
OPHANDLER( xch_a_r3 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R3; R3 = tmp; }
|
||||
OPHANDLER( xch_a_r4 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R4; R4 = tmp; }
|
||||
OPHANDLER( xch_a_r5 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R5; R5 = tmp; }
|
||||
OPHANDLER( xch_a_r6 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R6; R6 = tmp; }
|
||||
OPHANDLER( xch_a_r7 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = R7; R7 = tmp; }
|
||||
OPHANDLER( xch_a_xr0 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = ram_r(R0); ram_w(R0, tmp); }
|
||||
OPHANDLER( xch_a_xr1 ) { burn_cycles(1); uint8_t tmp = m_a; m_a = ram_r(R1); ram_w(R1, tmp); }
|
||||
|
||||
OPHANDLER( xchd_a_xr0 ) { uint8_t oldram = ram_r(R0); ram_w(R0, (oldram & 0xf0) | (m_a & 0x0f)); m_a = (m_a & 0xf0) | (oldram & 0x0f); return 0; }
|
||||
OPHANDLER( xchd_a_xr1 ) { uint8_t oldram = ram_r(R1); ram_w(R1, (oldram & 0xf0) | (m_a & 0x0f)); m_a = (m_a & 0xf0) | (oldram & 0x0f); return 0; }
|
||||
OPHANDLER( xchd_a_xr0 ) { burn_cycles(1); uint8_t oldram = ram_r(R0); ram_w(R0, (oldram & 0xf0) | (m_a & 0x0f)); m_a = (m_a & 0xf0) | (oldram & 0x0f); }
|
||||
OPHANDLER( xchd_a_xr1 ) { burn_cycles(1); uint8_t oldram = ram_r(R1); ram_w(R1, (oldram & 0xf0) | (m_a & 0x0f)); m_a = (m_a & 0xf0) | (oldram & 0x0f); }
|
||||
|
||||
OPHANDLER( xrl_a_r0 ) { m_a ^= R0; return 0; }
|
||||
OPHANDLER( xrl_a_r1 ) { m_a ^= R1; return 0; }
|
||||
OPHANDLER( xrl_a_r2 ) { m_a ^= R2; return 0; }
|
||||
OPHANDLER( xrl_a_r3 ) { m_a ^= R3; return 0; }
|
||||
OPHANDLER( xrl_a_r4 ) { m_a ^= R4; return 0; }
|
||||
OPHANDLER( xrl_a_r5 ) { m_a ^= R5; return 0; }
|
||||
OPHANDLER( xrl_a_r6 ) { m_a ^= R6; return 0; }
|
||||
OPHANDLER( xrl_a_r7 ) { m_a ^= R7; return 0; }
|
||||
OPHANDLER( xrl_a_xr0 ) { m_a ^= ram_r(R0); return 0; }
|
||||
OPHANDLER( xrl_a_xr1 ) { m_a ^= ram_r(R1); return 0; }
|
||||
OPHANDLER( xrl_a_n ) { m_a ^= argument_fetch(); return 1; }
|
||||
OPHANDLER( xrl_a_r0 ) { burn_cycles(1); m_a ^= R0; }
|
||||
OPHANDLER( xrl_a_r1 ) { burn_cycles(1); m_a ^= R1; }
|
||||
OPHANDLER( xrl_a_r2 ) { burn_cycles(1); m_a ^= R2; }
|
||||
OPHANDLER( xrl_a_r3 ) { burn_cycles(1); m_a ^= R3; }
|
||||
OPHANDLER( xrl_a_r4 ) { burn_cycles(1); m_a ^= R4; }
|
||||
OPHANDLER( xrl_a_r5 ) { burn_cycles(1); m_a ^= R5; }
|
||||
OPHANDLER( xrl_a_r6 ) { burn_cycles(1); m_a ^= R6; }
|
||||
OPHANDLER( xrl_a_r7 ) { burn_cycles(1); m_a ^= R7; }
|
||||
OPHANDLER( xrl_a_xr0 ) { burn_cycles(1); m_a ^= ram_r(R0); }
|
||||
OPHANDLER( xrl_a_xr1 ) { burn_cycles(1); m_a ^= ram_r(R1); }
|
||||
OPHANDLER( xrl_a_n ) { burn_cycles(2); m_a ^= argument_fetch(); }
|
||||
|
||||
|
||||
|
||||
@ -1317,9 +1321,8 @@ void mcs48_cpu_device::execute_run()
|
||||
// iterate over remaining cycles, guaranteeing at least one instruction
|
||||
do
|
||||
{
|
||||
// check interrupts - also burn the 1st opcode cycle:
|
||||
// timer is updated on S4 while I/O(for single cycle opcodes) happens on S5
|
||||
burn_cycles(check_irqs() + 1);
|
||||
// check interrupts
|
||||
burn_cycles(check_irqs());
|
||||
|
||||
m_prevpc = m_pc;
|
||||
m_irq_polled = false;
|
||||
@ -1327,7 +1330,7 @@ void mcs48_cpu_device::execute_run()
|
||||
|
||||
// fetch and process opcode
|
||||
unsigned opcode = opcode_fetch();
|
||||
burn_cycles((this->*m_opcode_table[opcode])());
|
||||
(this->*m_opcode_table[opcode])();
|
||||
|
||||
} while (m_icount > 0);
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ public:
|
||||
template <typename... T> void set_t0_clk_cb(T &&... args) { m_t0_clk_func.set(std::forward<T>(args)...); }
|
||||
|
||||
protected:
|
||||
typedef int (mcs48_cpu_device::*mcs48_ophandler)();
|
||||
typedef void (mcs48_cpu_device::*mcs48_ophandler)();
|
||||
|
||||
// construction/destruction
|
||||
mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rom_size, int ram_size, uint8_t feature_mask, const mcs48_ophandler *opcode_table);
|
||||
@ -264,246 +264,246 @@ protected:
|
||||
int check_irqs();
|
||||
void burn_cycles(int count);
|
||||
|
||||
int illegal();
|
||||
int add_a_r0();
|
||||
int add_a_r1();
|
||||
int add_a_r2();
|
||||
int add_a_r3();
|
||||
int add_a_r4();
|
||||
int add_a_r5();
|
||||
int add_a_r6();
|
||||
int add_a_r7();
|
||||
int add_a_xr0();
|
||||
int add_a_xr1();
|
||||
int add_a_n();
|
||||
int adc_a_r0();
|
||||
int adc_a_r1();
|
||||
int adc_a_r2();
|
||||
int adc_a_r3();
|
||||
int adc_a_r4();
|
||||
int adc_a_r5();
|
||||
int adc_a_r6();
|
||||
int adc_a_r7();
|
||||
int adc_a_xr0();
|
||||
int adc_a_xr1();
|
||||
int adc_a_n();
|
||||
int anl_a_r0();
|
||||
int anl_a_r1();
|
||||
int anl_a_r2();
|
||||
int anl_a_r3();
|
||||
int anl_a_r4();
|
||||
int anl_a_r5();
|
||||
int anl_a_r6();
|
||||
int anl_a_r7();
|
||||
int anl_a_xr0();
|
||||
int anl_a_xr1();
|
||||
int anl_a_n();
|
||||
int anl_bus_n();
|
||||
int anl_p1_n();
|
||||
int anl_p2_n();
|
||||
int anld_p4_a();
|
||||
int anld_p5_a();
|
||||
int anld_p6_a();
|
||||
int anld_p7_a();
|
||||
int call_0();
|
||||
int call_1();
|
||||
int call_2();
|
||||
int call_3();
|
||||
int call_4();
|
||||
int call_5();
|
||||
int call_6();
|
||||
int call_7();
|
||||
int clr_a();
|
||||
int clr_c();
|
||||
int clr_f0();
|
||||
int clr_f1();
|
||||
int cpl_a();
|
||||
int cpl_c();
|
||||
int cpl_f0();
|
||||
int cpl_f1();
|
||||
int da_a();
|
||||
int dec_a();
|
||||
int dec_r0();
|
||||
int dec_r1();
|
||||
int dec_r2();
|
||||
int dec_r3();
|
||||
int dec_r4();
|
||||
int dec_r5();
|
||||
int dec_r6();
|
||||
int dec_r7();
|
||||
int dis_i();
|
||||
int dis_tcnti();
|
||||
int djnz_r0();
|
||||
int djnz_r1();
|
||||
int djnz_r2();
|
||||
int djnz_r3();
|
||||
int djnz_r4();
|
||||
int djnz_r5();
|
||||
int djnz_r6();
|
||||
int djnz_r7();
|
||||
int en_i();
|
||||
int en_tcnti();
|
||||
int en_dma();
|
||||
int en_flags();
|
||||
int ent0_clk();
|
||||
int in_a_p0();
|
||||
int in_a_p1();
|
||||
int in_a_p2();
|
||||
int ins_a_bus();
|
||||
int in_a_dbb();
|
||||
int inc_a();
|
||||
int inc_r0();
|
||||
int inc_r1();
|
||||
int inc_r2();
|
||||
int inc_r3();
|
||||
int inc_r4();
|
||||
int inc_r5();
|
||||
int inc_r6();
|
||||
int inc_r7();
|
||||
int inc_xr0();
|
||||
int inc_xr1();
|
||||
int jb_0();
|
||||
int jb_1();
|
||||
int jb_2();
|
||||
int jb_3();
|
||||
int jb_4();
|
||||
int jb_5();
|
||||
int jb_6();
|
||||
int jb_7();
|
||||
int jc();
|
||||
int jf0();
|
||||
int jf1();
|
||||
int jnc();
|
||||
int jni();
|
||||
int jnibf();
|
||||
int jnt_0();
|
||||
int jnt_1();
|
||||
int jnz();
|
||||
int jobf();
|
||||
int jtf();
|
||||
int jt_0();
|
||||
int jt_1();
|
||||
int jz();
|
||||
int jmp_0();
|
||||
int jmp_1();
|
||||
int jmp_2();
|
||||
int jmp_3();
|
||||
int jmp_4();
|
||||
int jmp_5();
|
||||
int jmp_6();
|
||||
int jmp_7();
|
||||
int jmpp_xa();
|
||||
int mov_a_n();
|
||||
int mov_a_psw();
|
||||
int mov_a_r0();
|
||||
int mov_a_r1();
|
||||
int mov_a_r2();
|
||||
int mov_a_r3();
|
||||
int mov_a_r4();
|
||||
int mov_a_r5();
|
||||
int mov_a_r6();
|
||||
int mov_a_r7();
|
||||
int mov_a_xr0();
|
||||
int mov_a_xr1();
|
||||
int mov_a_t();
|
||||
int mov_psw_a();
|
||||
int mov_sts_a();
|
||||
int mov_r0_a();
|
||||
int mov_r1_a();
|
||||
int mov_r2_a();
|
||||
int mov_r3_a();
|
||||
int mov_r4_a();
|
||||
int mov_r5_a();
|
||||
int mov_r6_a();
|
||||
int mov_r7_a();
|
||||
int mov_r0_n();
|
||||
int mov_r1_n();
|
||||
int mov_r2_n();
|
||||
int mov_r3_n();
|
||||
int mov_r4_n();
|
||||
int mov_r5_n();
|
||||
int mov_r6_n();
|
||||
int mov_r7_n();
|
||||
int mov_t_a();
|
||||
int mov_xr0_a();
|
||||
int mov_xr1_a();
|
||||
int mov_xr0_n();
|
||||
int mov_xr1_n();
|
||||
int movd_a_p4();
|
||||
int movd_a_p5();
|
||||
int movd_a_p6();
|
||||
int movd_a_p7();
|
||||
int movd_p4_a();
|
||||
int movd_p5_a();
|
||||
int movd_p6_a();
|
||||
int movd_p7_a();
|
||||
int movp_a_xa();
|
||||
int movp3_a_xa();
|
||||
int movx_a_xr0();
|
||||
int movx_a_xr1();
|
||||
int movx_xr0_a();
|
||||
int movx_xr1_a();
|
||||
int nop();
|
||||
int orl_a_r0();
|
||||
int orl_a_r1();
|
||||
int orl_a_r2();
|
||||
int orl_a_r3();
|
||||
int orl_a_r4();
|
||||
int orl_a_r5();
|
||||
int orl_a_r6();
|
||||
int orl_a_r7();
|
||||
int orl_a_xr0();
|
||||
int orl_a_xr1();
|
||||
int orl_a_n();
|
||||
int orl_bus_n();
|
||||
int orl_p1_n();
|
||||
int orl_p2_n();
|
||||
int orld_p4_a();
|
||||
int orld_p5_a();
|
||||
int orld_p6_a();
|
||||
int orld_p7_a();
|
||||
int outl_bus_a();
|
||||
int outl_p0_a();
|
||||
int outl_p1_a();
|
||||
int outl_p2_a();
|
||||
int out_dbb_a();
|
||||
int ret();
|
||||
int retr();
|
||||
int rl_a();
|
||||
int rlc_a();
|
||||
int rr_a();
|
||||
int rrc_a();
|
||||
int sel_mb0();
|
||||
int sel_mb1();
|
||||
int sel_rb0();
|
||||
int sel_rb1();
|
||||
int stop_tcnt();
|
||||
int strt_cnt();
|
||||
int strt_t();
|
||||
int swap_a();
|
||||
int xch_a_r0();
|
||||
int xch_a_r1();
|
||||
int xch_a_r2();
|
||||
int xch_a_r3();
|
||||
int xch_a_r4();
|
||||
int xch_a_r5();
|
||||
int xch_a_r6();
|
||||
int xch_a_r7();
|
||||
int xch_a_xr0();
|
||||
int xch_a_xr1();
|
||||
int xchd_a_xr0();
|
||||
int xchd_a_xr1();
|
||||
int xrl_a_r0();
|
||||
int xrl_a_r1();
|
||||
int xrl_a_r2();
|
||||
int xrl_a_r3();
|
||||
int xrl_a_r4();
|
||||
int xrl_a_r5();
|
||||
int xrl_a_r6();
|
||||
int xrl_a_r7();
|
||||
int xrl_a_xr0();
|
||||
int xrl_a_xr1();
|
||||
int xrl_a_n();
|
||||
void illegal();
|
||||
void add_a_r0();
|
||||
void add_a_r1();
|
||||
void add_a_r2();
|
||||
void add_a_r3();
|
||||
void add_a_r4();
|
||||
void add_a_r5();
|
||||
void add_a_r6();
|
||||
void add_a_r7();
|
||||
void add_a_xr0();
|
||||
void add_a_xr1();
|
||||
void add_a_n();
|
||||
void adc_a_r0();
|
||||
void adc_a_r1();
|
||||
void adc_a_r2();
|
||||
void adc_a_r3();
|
||||
void adc_a_r4();
|
||||
void adc_a_r5();
|
||||
void adc_a_r6();
|
||||
void adc_a_r7();
|
||||
void adc_a_xr0();
|
||||
void adc_a_xr1();
|
||||
void adc_a_n();
|
||||
void anl_a_r0();
|
||||
void anl_a_r1();
|
||||
void anl_a_r2();
|
||||
void anl_a_r3();
|
||||
void anl_a_r4();
|
||||
void anl_a_r5();
|
||||
void anl_a_r6();
|
||||
void anl_a_r7();
|
||||
void anl_a_xr0();
|
||||
void anl_a_xr1();
|
||||
void anl_a_n();
|
||||
void anl_bus_n();
|
||||
void anl_p1_n();
|
||||
void anl_p2_n();
|
||||
void anld_p4_a();
|
||||
void anld_p5_a();
|
||||
void anld_p6_a();
|
||||
void anld_p7_a();
|
||||
void call_0();
|
||||
void call_1();
|
||||
void call_2();
|
||||
void call_3();
|
||||
void call_4();
|
||||
void call_5();
|
||||
void call_6();
|
||||
void call_7();
|
||||
void clr_a();
|
||||
void clr_c();
|
||||
void clr_f0();
|
||||
void clr_f1();
|
||||
void cpl_a();
|
||||
void cpl_c();
|
||||
void cpl_f0();
|
||||
void cpl_f1();
|
||||
void da_a();
|
||||
void dec_a();
|
||||
void dec_r0();
|
||||
void dec_r1();
|
||||
void dec_r2();
|
||||
void dec_r3();
|
||||
void dec_r4();
|
||||
void dec_r5();
|
||||
void dec_r6();
|
||||
void dec_r7();
|
||||
void dis_i();
|
||||
void dis_tcnti();
|
||||
void djnz_r0();
|
||||
void djnz_r1();
|
||||
void djnz_r2();
|
||||
void djnz_r3();
|
||||
void djnz_r4();
|
||||
void djnz_r5();
|
||||
void djnz_r6();
|
||||
void djnz_r7();
|
||||
void en_i();
|
||||
void en_tcnti();
|
||||
void en_dma();
|
||||
void en_flags();
|
||||
void ent0_clk();
|
||||
void in_a_p0();
|
||||
void in_a_p1();
|
||||
void in_a_p2();
|
||||
void ins_a_bus();
|
||||
void in_a_dbb();
|
||||
void inc_a();
|
||||
void inc_r0();
|
||||
void inc_r1();
|
||||
void inc_r2();
|
||||
void inc_r3();
|
||||
void inc_r4();
|
||||
void inc_r5();
|
||||
void inc_r6();
|
||||
void inc_r7();
|
||||
void inc_xr0();
|
||||
void inc_xr1();
|
||||
void jb_0();
|
||||
void jb_1();
|
||||
void jb_2();
|
||||
void jb_3();
|
||||
void jb_4();
|
||||
void jb_5();
|
||||
void jb_6();
|
||||
void jb_7();
|
||||
void jc();
|
||||
void jf0();
|
||||
void jf1();
|
||||
void jnc();
|
||||
void jni();
|
||||
void jnibf();
|
||||
void jnt_0();
|
||||
void jnt_1();
|
||||
void jnz();
|
||||
void jobf();
|
||||
void jtf();
|
||||
void jt_0();
|
||||
void jt_1();
|
||||
void jz();
|
||||
void jmp_0();
|
||||
void jmp_1();
|
||||
void jmp_2();
|
||||
void jmp_3();
|
||||
void jmp_4();
|
||||
void jmp_5();
|
||||
void jmp_6();
|
||||
void jmp_7();
|
||||
void jmpp_xa();
|
||||
void mov_a_n();
|
||||
void mov_a_psw();
|
||||
void mov_a_r0();
|
||||
void mov_a_r1();
|
||||
void mov_a_r2();
|
||||
void mov_a_r3();
|
||||
void mov_a_r4();
|
||||
void mov_a_r5();
|
||||
void mov_a_r6();
|
||||
void mov_a_r7();
|
||||
void mov_a_xr0();
|
||||
void mov_a_xr1();
|
||||
void mov_a_t();
|
||||
void mov_psw_a();
|
||||
void mov_sts_a();
|
||||
void mov_r0_a();
|
||||
void mov_r1_a();
|
||||
void mov_r2_a();
|
||||
void mov_r3_a();
|
||||
void mov_r4_a();
|
||||
void mov_r5_a();
|
||||
void mov_r6_a();
|
||||
void mov_r7_a();
|
||||
void mov_r0_n();
|
||||
void mov_r1_n();
|
||||
void mov_r2_n();
|
||||
void mov_r3_n();
|
||||
void mov_r4_n();
|
||||
void mov_r5_n();
|
||||
void mov_r6_n();
|
||||
void mov_r7_n();
|
||||
void mov_t_a();
|
||||
void mov_xr0_a();
|
||||
void mov_xr1_a();
|
||||
void mov_xr0_n();
|
||||
void mov_xr1_n();
|
||||
void movd_a_p4();
|
||||
void movd_a_p5();
|
||||
void movd_a_p6();
|
||||
void movd_a_p7();
|
||||
void movd_p4_a();
|
||||
void movd_p5_a();
|
||||
void movd_p6_a();
|
||||
void movd_p7_a();
|
||||
void movp_a_xa();
|
||||
void movp3_a_xa();
|
||||
void movx_a_xr0();
|
||||
void movx_a_xr1();
|
||||
void movx_xr0_a();
|
||||
void movx_xr1_a();
|
||||
void nop();
|
||||
void orl_a_r0();
|
||||
void orl_a_r1();
|
||||
void orl_a_r2();
|
||||
void orl_a_r3();
|
||||
void orl_a_r4();
|
||||
void orl_a_r5();
|
||||
void orl_a_r6();
|
||||
void orl_a_r7();
|
||||
void orl_a_xr0();
|
||||
void orl_a_xr1();
|
||||
void orl_a_n();
|
||||
void orl_bus_n();
|
||||
void orl_p1_n();
|
||||
void orl_p2_n();
|
||||
void orld_p4_a();
|
||||
void orld_p5_a();
|
||||
void orld_p6_a();
|
||||
void orld_p7_a();
|
||||
void outl_bus_a();
|
||||
void outl_p0_a();
|
||||
void outl_p1_a();
|
||||
void outl_p2_a();
|
||||
void out_dbb_a();
|
||||
void ret();
|
||||
void retr();
|
||||
void rl_a();
|
||||
void rlc_a();
|
||||
void rr_a();
|
||||
void rrc_a();
|
||||
void sel_mb0();
|
||||
void sel_mb1();
|
||||
void sel_rb0();
|
||||
void sel_rb1();
|
||||
void stop_tcnt();
|
||||
void strt_cnt();
|
||||
void strt_t();
|
||||
void swap_a();
|
||||
void xch_a_r0();
|
||||
void xch_a_r1();
|
||||
void xch_a_r2();
|
||||
void xch_a_r3();
|
||||
void xch_a_r4();
|
||||
void xch_a_r5();
|
||||
void xch_a_r6();
|
||||
void xch_a_r7();
|
||||
void xch_a_xr0();
|
||||
void xch_a_xr1();
|
||||
void xchd_a_xr0();
|
||||
void xchd_a_xr1();
|
||||
void xrl_a_r0();
|
||||
void xrl_a_r1();
|
||||
void xrl_a_r2();
|
||||
void xrl_a_r3();
|
||||
void xrl_a_r4();
|
||||
void xrl_a_r5();
|
||||
void xrl_a_r6();
|
||||
void xrl_a_r7();
|
||||
void xrl_a_xr0();
|
||||
void xrl_a_xr1();
|
||||
void xrl_a_n();
|
||||
};
|
||||
|
||||
class i8021_device : public mcs48_cpu_device
|
||||
|
Loading…
Reference in New Issue
Block a user