Previous 199869 Revisions Next

r33969 Friday 19th December, 2014 at 22:54:04 UTC by hap
fixed status being reset too early
[src/emu/cpu/tms0980]tms0980.c

trunk/src/emu/cpu/tms0980/tms0980.c
r242480r242481
11561156         set_cki_bus();
11571157         m_ram_in = m_data->read_byte(m_ram_address) & 0xf;
11581158         m_dam_in = m_data->read_byte(m_ram_address | (0x10 << (m_x_bits-1))) & 0xf;
1159         m_ram_out = -1;
1160         m_status = 1;
11611159         m_p = 0;
11621160         m_n = 0;
11631161         m_carry_in = 0;
r242480r242481
11971195         // note: officially, only 1 alu operation is allowed per opcode
11981196         m_adder_out = m_p + m_n + m_carry_in;
11991197         int carry_out = m_adder_out >> 4 & 1;
1198         int status = 1;
1199         m_ram_out = -1;
12001200
1201         if (m_micro & M_C8) m_status &= carry_out;
1202         if (m_micro & M_NE) m_status &= (m_n != m_p); // COMP
1201         if (m_micro & M_C8)    status &= carry_out;
1202         if (m_micro & M_NE)    status &= (m_n != m_p); // COMP
1203         if (m_micro & M_CKM)   m_ram_out = m_cki_bus;
12031204
1204         if (m_micro & M_CKM) m_ram_out = m_cki_bus;
1205
12061205         // special status circuit
12071206         if (m_micro & M_SSE)
12081207         {
r242480r242481
12331232         if (m_fixed & F_SAL)   op_sal();
12341233         if (m_fixed & F_SBL)   op_sbl();
12351234         if (m_fixed & F_XDA)   op_xda();
1236
1237         // execute: write ram
1235         
1236         // after fixed opcode handling: store status, write ram
1237         m_status = status;
12381238         if (m_ram_out != -1)
12391239            m_data->write_byte(m_ram_address, m_ram_out);
12401240
r242480r242481
12481248
12491249      case 4:
12501250         // execute: register store 2/2
1251         if (m_micro & M_AUTA) m_a = m_adder_out & 0xf;
1252         if (m_micro & M_AUTY) m_y = m_adder_out & 0xf;
1253         if (m_micro & M_STSL) m_status_latch = m_status;
1251         if (m_micro & M_AUTA)  m_a = m_adder_out & 0xf;
1252         if (m_micro & M_AUTY)  m_y = m_adder_out & 0xf;
1253         if (m_micro & M_STSL)  m_status_latch = m_status;
12541254
12551255         // fetch: update pc, ram address 2/2
12561256         read_opcode();


Previous 199869 Revisions Next


© 1997-2024 The MAME Team