OSDN Git Service

[VM][MC6809] Re-implement correct BUSREQ.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 15 Mar 2015 17:47:39 +0000 (02:47 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 15 Mar 2015 17:47:39 +0000 (02:47 +0900)
source/src/vm/mc6809.cpp

index 03e7ddd..2b86c8c 100644 (file)
@@ -385,12 +385,7 @@ void MC6809::cpu_irq(void)
 
 int MC6809::run(int clock)
 {
-       if ((int_state & MC6809_HALT_BIT) != 0) {       // 0x80
-               icount -= 2;
-               icount -= extra_icount;
-               extra_icount = 0;
-               return icount;
-       } else  if((int_state & MC6809_INSN_HALT) != 0) {       // 0x80
+       if((int_state & MC6809_INSN_HALT) != 0) {       // 0x80
                uint8 dmy = RM(PCD);
                icount -= 2;
                icount -= extra_icount;
@@ -420,7 +415,11 @@ int MC6809::run(int clock)
 void MC6809::run_one_opecode()
 {
 
-       if(int_state & MC6809_NMI_BIT) {
+       if ((int_state & MC6809_HALT_BIT) != 0) {       // 0x80
+               icount = 0;
+               extra_icount = 0;
+               return icount;
+       } else  if(int_state & MC6809_NMI_BIT) {
                int_state &= ~MC6809_NMI_BIT;
                int_state &= ~MC6809_SYNC_IN; /* clear SYNC flag */
                int_state |=  MC6809_SYNC_OUT; /* clear SYNC flag */