Minimal changes to get m6502 to compile (won't work) master multi_arch
authorNick Downing <nick.downing@lifx.co>
Sun, 30 Jun 2019 13:10:54 +0000 (23:10 +1000)
committerNick Downing <nick.downing@lifx.co>
Sun, 30 Jun 2019 13:11:24 +0000 (23:11 +1000)
26 files changed:
Makefile
m6502/cpu.c [new file with mode: 0644]
m6502/cpu.h [new file with mode: 0644]
m6502/debugger.h [new file with mode: 0644]
m6502/emu.h [new file with mode: 0644]
m6502/m6502.c [new file with mode: 0644]
m6502/m6502.cpp [deleted file]
m6502/m6502.h
m6502/m6502.inc [moved from m6502/m6502.hxx with 58% similarity]
m6502/m6502d.c [new file with mode: 0644]
m6502/m6502d.cpp [deleted file]
m6502/m6502d.h
m6502/m6502d.inc [moved from m6502/m6502d.hxx with 98% similarity]
m6502/m6502make.py
m6502/m65c02.c [new file with mode: 0644]
m6502/m65c02.cpp [deleted file]
m6502/m65c02.h
m6502/m65c02.inc [moved from m6502/m65c02.hxx with 74% similarity]
m6502/m65c02d.c [moved from m6502/m65c02d.cpp with 73% similarity]
m6502/m65c02d.h
m6502/m65c02d.inc [moved from m6502/m65c02d.hxx with 98% similarity]
m6502/n.sh
m6502/om6502.lst
z180/cpu.c
z180/cpu.h
z180/debugger.h

index 36839ac..c2641cb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,8 @@
 # You will need gcc if you choose the optimised compile below
 CC?=gcc
 
-# Set this to either PDP11 or Z180
-CPU=Z180
+# Set this to either PDP11 or Z180 or M6502
+CPU=M6502
 
 # Set the CFLAGS, LDFLAGS for speed or debugging. If you don't want 2.11BSD
 # emulation, then remove the -DEMU211 flag.
@@ -47,7 +47,14 @@ SRCS=        aout.c aout.h main.c \
        bsdtrap.h bsd_ioctl.c bsd_signal.c magic.c v1trap.c v1trap.h
 PDP11_SRCS= pdp11/cpu.c pdp11/branch.c pdp11/double.c pdp11/ea.c pdp11/itab.c \
        pdp11/ke11a.c pdp11/single.c pdp11/fp.c pdp11/debug.c
-Z180_SRCS= z180/cpu.c
+Z180_SRCS= z180/cpu.c z180/cpu.h z180/debugger.h z180/emu.h z180/logmacro.h \
+       z180/z180.c z180/z180cb.inc z180/z180dasm.c z180/z180dasm.h \
+       z180/z180dd.inc z180/z180ed.inc z180/z180fd.inc z180/z180.h \
+       z180/z180op.inc z180/z180ops.inc z180/z180tbl.inc z180/z180xy.inc
+M6502_SRCS= m6502/cpu.c m6502/cpu.h m6502/emu.h \
+       m6502/m6502.c m6502/m6502d.c m6502/m6502d.h m6502/m6502d.inc \
+       m6502/m6502.h m6502/m6502.inc m6502/m65c02.c m6502/m65c02d.c \
+       m6502/m65c02d.h m6502/m65c02d.inc m6502/m65c02.h m6502/m65c02.inc
 OBJS=  aout.o bsd_ioctl.o bsd_signal.o bsdtrap.o \
        magic.o main.o \
        v7trap.o
@@ -57,6 +64,8 @@ OBJS+=        v1trap.o pdp11/branch.o pdp11/cpu.o pdp11/debug.o \
        pdp11/single.o
 else ifeq ($(CPU),Z180)
 OBJS+= z180/cpu.o z180/z180.o z180/z180dasm.o
+else ifeq ($(CPU),M6502)
+OBJS+= m6502/cpu.o m6502/m6502.o m6502/m6502d.o
 endif
 
 apout: $(OBJS)
@@ -111,5 +120,9 @@ z180/z180.o: z180/z180.c z180/z180ops.inc z180/z180tbl.inc z180/z180cb.inc \
        z180/z180xy.inc z180/z180dd.inc z180/z180fd.inc z180/z180ed.inc \
        z180/z180op.inc z180/z180.h z180/debugger.h z180/emu.h \
        z180/logmacro.h Makefile
-z180/z180.o: z180/z180dasm.c z180/z180dasm.h z180/debugger.h z180/emu.h \
+z180/z180dasm.o: z180/z180dasm.c z180/z180dasm.h z180/debugger.h z180/emu.h \
        z180/logmacro.h Makefile
+m6502/cpu.o: m6502/cpu.c defines.h m6502/emu.h m6502/m6502.h
+m6502/m6502.o: m6502/m6502.c m6502/emu.h m6502/debugger.h m6502/m6502.h \
+       m6502/m6502d.h m6502/m6502.inc
+m6502/m6502d.o: m6502/m6502d.c m6502/emu.h m6502/m6502d.h m6502/m6502d.inc
diff --git a/m6502/cpu.c b/m6502/cpu.c
new file mode 100644 (file)
index 0000000..198969c
--- /dev/null
@@ -0,0 +1,93 @@
+/* cpu.c - this holds the main loop for the emulator, plus generic
+ * functions to deal with exceptional instructions and events
+ *
+ * $Revision: 1.26 $
+ * $Date: 2008/05/15 07:52:45 $
+ */
+#include <assert.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include "cpu.h"
+#include "emu.h"
+#include "m6502.h"
+
+u_int16_t *adptr;              /* used in memory access macros */
+
+void debugger_instruction_hook(offs_t address) {
+}
+
+const char *tag(void) {
+  return "nick";
+}
+uint8_t opcodes_r8(offs_t address) {
+  uint8_t data;
+  ll_byte(address, data);
+  return data;
+}
+uint8_t params_r8(offs_t address) {
+  uint8_t data;
+  ll_byte(address, data);
+  return data;
+}
+//uint16_t params_r16(offs_t address) {
+//  uint16_t data;
+//  ll_word(address, data);
+//  return data;
+//}
+
+u8 m_iospace_read_byte(offs_t address) {
+  return 0;
+}
+u8 m_program_read_byte(offs_t address) {
+  uint8_t data;
+  ll_byte(address, data);
+  return data;
+}
+u8 m_ocache_read_byte(offs_t address) {
+  uint8_t data;
+  ll_byte(address, data);
+  return data;
+}
+u8 m_cache_read_byte(offs_t address) {
+  uint8_t data;
+  ll_byte(address, data);
+  return data;
+}
+void m_iospace_write_byte(offs_t address, u8 data) {
+}
+void m_program_write_byte(offs_t address, u8 data) {
+  sl_byte(address, data);
+}
+void m_ocache_write_byte(offs_t address, u8 data) {
+  sl_byte(address, data);
+}
+void m_cache_write_byte(offs_t address, u8 data) {
+  sl_byte(address, data);
+}
+
+int debug_flags;
+int total_cycles(void) {
+  return 0;
+}
+
+void internal_update() {} // { internal_update(total_cycles()); }
+
+uint8_t m6502_device_mi_default_normal_read(uint16_t adr) { abort(); } //return mintf->m6502_device_mi_default_normal_read(adr); }
+uint8_t m6502_device_memory_interface_read_9(uint16_t adr) { abort(); } //return mintf->m6502_device_memory_interface_read_9(adr); }
+void m6502_device_mi_default_normal_write(uint16_t adr, uint8_t val) { abort(); } //mintf->m6502_device_mi_default_normal_write(adr, val); }
+void m6502_device_memory_interface_write_9(uint16_t adr, uint8_t val) { abort(); } //mintf->m6502_device_memory_interface_write_9(adr, val); }
+uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr) { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(adr); }
+uint8_t read_pc() { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(PC++); }
+uint8_t read_pc_noinc() { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(PC); }
+
+/*static*/ /*inline*/ bool page_changing(uint16_t base, int delta) { return ((base + delta) ^ base) & 0xff00; }
+/*static*/ /*inline*/ uint16_t set_l(uint16_t base, uint8_t val) { return (base & 0xff00) | val; }
+/*static*/ /*inline*/ uint16_t set_h(uint16_t base, uint8_t val) { return (base & 0x00ff) | (val << 8); }
+
+/*inline*/ void dec_SP() { SP = set_l(SP, SP-1); }
+/*inline*/ void inc_SP() { SP = set_l(SP, SP+1); }
+
+void run(void) {
+  //m_icount = 1000;
+  m6502_device_execute_run();
+}
diff --git a/m6502/cpu.h b/m6502/cpu.h
new file mode 100644 (file)
index 0000000..78c7b16
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _M6502_CPU_H
+#define _M6502_CPU_H
+
+#include "defines.h"
+
+/* Macros to read and write loctions in
+ * main memory.
+ */
+
+extern u_int16_t *adptr;
+
+#define copylong(to,from) \
+       buf = (char *) &(to); buf2 = (char *) &(from); \
+       buf[0]=buf2[2]; buf[1]=buf2[3]; buf[2]=buf2[0]; buf[3]=buf2[1]
+
+/* lli_word() - Load a word from the given ispace logical address. */
+#define lli_word(addr, word) \
+       { adptr= (u_int16_t *)&(ispace[addr]); word= *adptr; }
+
+/* ll_word() - Load a word from the given logical address. */
+#define ll_word(addr, word) \
+       { adptr= (u_int16_t *)&(dspace[addr]); word= *adptr; }
+
+/* sl_word() - Store a word at the given logical address. */
+#ifdef WRITEBASE
+#define sl_word(addr, word) \
+       { if ((u_int16_t)addr < dwrite_base) seg_fault(); \
+         adptr= (u_int16_t *)&(dspace[addr]); *adptr= word; }
+#else
+#define sl_word(addr, word) \
+       { adptr= (u_int16_t *)&(dspace[addr]); *adptr= word; }
+#endif
+
+/* lli_byte() - Load a byte from the given logical ispace address. */
+#define lli_byte(addr, byte) \
+    byte = ispace[addr];
+
+/* ll_byte() - Load a byte from the given logical address. */
+#define ll_byte(addr, byte) \
+    byte = dspace[addr];
+
+/* sl_byte() - Store a byte at the given logical address. */
+#ifdef WRITEBASE
+#define sl_byte(addr, byte) \
+       { if (addr < dwrite_base) seg_fault(); \
+         dspace[addr]= byte; }
+#else
+#define sl_byte(addr, byte) \
+       { dspace[addr]= byte; }
+#endif
+
+void run(void);
+
+#endif
diff --git a/m6502/debugger.h b/m6502/debugger.h
new file mode 100644 (file)
index 0000000..65807f3
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _M6502_DEBUGGER_H
+#define _M6502_DEBUGGER_H
+
+void debugger_instruction_hook(offs_t address);
+
+#endif
diff --git a/m6502/emu.h b/m6502/emu.h
new file mode 100644 (file)
index 0000000..8cfb2ae
--- /dev/null
@@ -0,0 +1,116 @@
+#ifndef _EMU_H
+#define _EMU_H 1
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef int8_t s8;
+typedef int16_t s16;
+typedef int32_t s32;
+
+// this must be large enough to hold a physical address:
+typedef uint32_t offs_t;
+
+//#include <memory>
+#include <stdlib.h>
+#include "rassert.h"
+
+//class device_state_entry {
+//};
+//
+//class device_t {
+//public:
+//  virtual void m6502_device_device_start() = 0;
+//  virtual void m6502_device_device_reset() = 0;
+//};
+//
+//class cpu_device : public device_t {
+//public:
+//  int *m_icountptr;
+//
+//  cpu_device() : m_icountptr(NULL) {}
+//  virtual uint32_t execute_min_cycles() const = 0;
+//  virtual uint32_t execute_max_cycles() const = 0;
+//  virtual uint32_t execute_input_lines() const = 0;
+//  virtual uint32_t execute_default_irq_vector(int inputnum) const = 0;
+//  virtual bool execute_input_edge_triggered(int inputnum) const = 0;
+//  virtual void m6502_device_execute_run() = 0;
+//  virtual void m6502_device_execute_burn(int32_t cycles) = 0;
+//  virtual void m6502_device_execute_set_input(int inputnum, int state) = 0;
+//  void set_icountptr(int &icount) {
+//    assert(!m_icountptr);
+//    m_icountptr = &icount;
+//  }
+//  int standard_irq_callback_member(device_t &device, int irqline) {
+//    return standard_irq_callback(device, irqline);
+//  }
+//  virtual int standard_irq_callback(device_t &device, int irqline) = 0;
+//};
+//
+//class machine_config {
+//};
+//
+//class address_space {
+//public:
+//  virtual u8 read_byte(offs_t address) = 0;
+u8 m_iospace_read_byte(offs_t address);
+u8 m_program_read_byte(offs_t address);
+u8 m_ocache_read_byte(offs_t address);
+u8 m_cache_read_byte(offs_t address);
+//  virtual void write_byte(offs_t address, u8 data) = 0;
+void m_iospace_write_byte(offs_t address, u8 data);
+void m_program_write_byte(offs_t address, u8 data);
+void m_ocache_write_byte(offs_t address, u8 data);
+void m_cache_write_byte(offs_t address, u8 data);
+//};
+
+// PAIR is an endian-safe union useful for representing 32-bit CPU registers
+typedef union PAIR
+{
+//#ifdef LSB_FIRST
+  struct { u8 l,h,h2,h3; } b;
+  struct { u16 l,h; } w;
+  struct { s8 l,h,h2,h3; } sb;
+  struct { s16 l,h; } sw;
+//#else
+//  struct { u8 h3,h2,h,l; } b;
+//  struct { s8 h3,h2,h,l; } sb;
+//  struct { u16 h,l; } w;
+//  struct { s16 h,l; } sw;
+//#endif
+  u32 d;
+  s32 sd;
+} PAIR;
+
+enum {
+  INPUT_LINE_NMI = -1,
+  // device specific input lines start at 0
+  INPUT_LINE_IRQ0 = 0,
+  INPUT_LINE_IRQ1 = 1 
+};
+
+enum {
+  CLEAR_LINE,
+  ASSERT_LINE
+};
+
+const char *tag(void);
+uint8_t opcodes_r8(offs_t address);
+uint8_t params_r8(offs_t address);
+//uint16_t params_r16(offs_t address);
+enum {
+  STEP_OUT = 1,
+  STEP_OVER = 2,
+  SUPPORTED = 4
+};
+
+extern int debug_flags;
+#define DEBUG_FLAG_ENABLED 1
+int total_cycles(void);
+
+#endif
diff --git a/m6502/m6502.c b/m6502/m6502.c
new file mode 100644 (file)
index 0000000..17388c9
--- /dev/null
@@ -0,0 +1,621 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+/***************************************************************************
+
+    m6502.c
+
+    MOS Technology 6502, original NMOS variant
+
+***************************************************************************/
+
+#include "emu.h"
+#include "debugger.h"
+#include "m6502.h"
+#include "m6502d.h"
+
+//DEFINE_DEVICE_TYPE(M6502, m6502_device, "m6502", "MOS Technology M6502")
+//
+//m6502_device_m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+//     m6502_device_m6502_device(mconfig, M6502, tag, owner, clock)
+//{
+//}
+//
+//m6502_device_m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+//     cpu_device(mconfig, type, tag, owner, clock),
+//     sync_w(*this),
+//     program_config("program", ENDIANNESS_LITTLE, 8, 16),
+//     sprogram_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16), PPC(0), NPC(0), PC(0), SP(0), TMP(0), TMP2(0), A(0), X(0), Y(0), P(0), IR(0), inst_state_base(0), mintf(nullptr),
+//     inst_state(0), inst_substate(0), icount(0), nmi_state(false), irq_state(false), apu_irq_state(false), v_state(false), irq_taken(false), sync(false), inhibit_interrupts(false)
+//{
+//     cache_disabled = false;
+//}
+
+void m6502_device_device_start()
+{
+//     if(cache_disabled)
+//             mintf = std_make_unique<mi_default_nd>();
+//     else
+//             mintf = std_make_unique<mi_default_normal>();
+
+       m6502_device_init();
+}
+
+void m6502_device_init()
+{
+//     mintf->program  = &space(AS_PROGRAM);
+//     mintf->sprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : mintf->program;
+//
+//     mintf->cache  = mintf->program->cache<0, 0, ENDIANNESS_LITTLE>();
+//     mintf->scache = mintf->sprogram->cache<0, 0, ENDIANNESS_LITTLE>();
+//
+//     sync_w.resolve_safe();
+//
+//     XPC = 0;
+//
+//     state_add(STATE_GENPC,     "GENPC",     XPC).callexport().noshow();
+//     state_add(STATE_GENPCBASE, "CURPC",     XPC).callexport().noshow();
+//     state_add(STATE_GENSP,     "GENSP",     SP).noshow();
+//     state_add(STATE_GENFLAGS,  "GENFLAGS",  P).callimport().formatstr("%6s").noshow();
+//     state_add(M6502_PC,        "PC",        NPC).callimport();
+//     state_add(M6502_A,         "A",         A);
+//     state_add(M6502_X,         "X",         X);
+//     state_add(M6502_Y,         "Y",         Y);
+//     state_add(M6502_P,         "P",         P).callimport();
+//     state_add(M6502_S,         "SP",        SP);
+//     state_add(M6502_IR,        "IR",        IR);
+//
+//     save_item(NAME(PC));
+//     save_item(NAME(NPC));
+//     save_item(NAME(PPC));
+//     save_item(NAME(A));
+//     save_item(NAME(X));
+//     save_item(NAME(Y));
+//     save_item(NAME(P));
+//     save_item(NAME(SP));
+//     save_item(NAME(TMP));
+//     save_item(NAME(TMP2));
+//     save_item(NAME(IR));
+//     save_item(NAME(nmi_state));
+//     save_item(NAME(irq_state));
+//     save_item(NAME(apu_irq_state));
+//     save_item(NAME(v_state));
+//     save_item(NAME(inst_state));
+//     save_item(NAME(inst_substate));
+//     save_item(NAME(inst_state_base));
+//     save_item(NAME(irq_taken));
+//     save_item(NAME(inhibit_interrupts));
+//
+//     set_icountptr(icount);
+
+       PC = 0x0000;
+       NPC = 0x0000;
+       A = 0x00;
+       X = 0x80;
+       Y = 0x00;
+       P = 0x36;
+       SP = 0x01bd;
+       TMP = 0x0000;
+       TMP2 = 0x00;
+       IR = 0x00;
+       nmi_state = false;
+       irq_state = false;
+       apu_irq_state = false;
+       irq_taken = false;
+       v_state = false;
+       inst_state = STATE_RESET;
+       inst_substate = 0;
+       inst_state_base = 0;
+//     sync = false;
+       inhibit_interrupts = false;
+       count_before_instruction_step = 0;
+}
+
+void m6502_device_device_reset()
+{
+       inst_state = STATE_RESET;
+       inst_substate = 0;
+       inst_state_base = 0;
+       nmi_state = false;
+       irq_state = false;
+       apu_irq_state = false;
+       irq_taken = false;
+       v_state = false;
+//     sync = false;
+//     sync_w(CLEAR_LINE);
+       inhibit_interrupts = false;
+}
+
+
+uint32_t m6502_device_execute_min_cycles() /*const*/
+{
+       return 1;
+}
+
+uint32_t m6502_device_execute_max_cycles() /*const*/
+{
+       return 10;
+}
+
+uint32_t m6502_device_execute_input_lines() /*const*/
+{
+       return NMI_LINE+1;
+}
+
+bool m6502_device_execute_input_edge_triggered(int inputnum) /*const*/
+{
+       return inputnum == NMI_LINE;
+}
+
+void m6502_device_do_adc_d(uint8_t val)
+{
+       uint8_t c = P & F_C ? 1 : 0;
+       P &= ~(F_N|F_V|F_Z|F_C);
+       uint8_t al = (A & 15) + (val & 15) + c;
+       if(al > 9)
+               al += 6;
+       uint8_t ah = (A >> 4) + (val >> 4) + (al > 15);
+       if(!(uint8_t)(A + val + c))
+               P |= F_Z;
+       else if(ah & 8)
+               P |= F_N;
+       if(~(A^val) & (A^(ah << 4)) & 0x80)
+               P |= F_V;
+       if(ah > 9)
+               ah += 6;
+       if(ah > 15)
+               P |= F_C;
+       A = (ah << 4) | (al & 15);
+}
+
+void m6502_device_do_adc_nd(uint8_t val)
+{
+       uint16_t sum;
+       sum = A + val + (P & F_C ? 1 : 0);
+       P &= ~(F_N|F_V|F_Z|F_C);
+       if(!(uint8_t)(sum))
+               P |= F_Z;
+       else if((int8_t)(sum) < 0)
+               P |= F_N;
+       if(~(A^val) & (A^sum) & 0x80)
+               P |= F_V;
+       if(sum & 0xff00)
+               P |= F_C;
+       A = sum;
+}
+
+void m6502_device_do_adc(uint8_t val)
+{
+       if(P & F_D)
+               m6502_device_do_adc_d(val);
+       else
+               m6502_device_do_adc_nd(val);
+}
+
+void m6502_device_do_arr_nd()
+{
+       bool c = P & F_C;
+       P &= ~(F_N|F_Z|F_C|F_V);
+       A >>= 1;
+       if(c)
+               A |= 0x80;
+       if(!A)
+               P |= F_Z;
+       else if((int8_t)(A)<0)
+               P |= F_N;
+       if(A & 0x40)
+               P |= F_V|F_C;
+       if(A & 0x20)
+               P ^= F_V;
+}
+
+void m6502_device_do_arr_d()
+{
+       // The adc/ror interaction gives an extremely weird result
+       bool c = P & F_C;
+       P &= ~(F_N|F_Z|F_C|F_V);
+       uint8_t a = A >> 1;
+       if(c)
+               a |= 0x80;
+       if(!a)
+               P |= F_Z;
+       else if((int8_t)(a) < 0)
+               P |= F_N;
+       if((a ^ A) & 0x40)
+               P |= F_V;
+
+       if((A & 0x0f) >= 0x05)
+               a = ((a + 6) & 0x0f) | (a & 0xf0);
+
+       if((A & 0xf0) >= 0x50) {
+               a += 0x60;
+               P |= F_C;
+       }
+       A = a;
+}
+
+void m6502_device_do_arr()
+{
+       if(P & F_D)
+               m6502_device_do_arr_d();
+       else
+               m6502_device_do_arr_nd();
+}
+
+void m6502_device_do_cmp(uint8_t val1, uint8_t val2)
+{
+       P &= ~(F_N|F_Z|F_C);
+       uint16_t r = val1-val2;
+       if(!r)
+               P |= F_Z;
+       else if((int8_t)(r) < 0)
+               P |= F_N;
+       if(!(r & 0xff00))
+               P |= F_C;
+}
+
+void m6502_device_do_sbc_d(uint8_t val)
+{
+       uint8_t c = P & F_C ? 0 : 1;
+       P &= ~(F_N|F_V|F_Z|F_C);
+       uint16_t diff = A - val - c;
+       uint8_t al = (A & 15) - (val & 15) - c;
+       if((int8_t)(al) < 0)
+               al -= 6;
+       uint8_t ah = (A >> 4) - (val >> 4) - ((int8_t)(al) < 0);
+       if(!(uint8_t)(diff))
+               P |= F_Z;
+       else if(diff & 0x80)
+               P |= F_N;
+       if((A^val) & (A^diff) & 0x80)
+               P |= F_V;
+       if(!(diff & 0xff00))
+               P |= F_C;
+       if((int8_t)(ah) < 0)
+               ah -= 6;
+       A = (ah << 4) | (al & 15);
+}
+
+void m6502_device_do_sbc_nd(uint8_t val)
+{
+       uint16_t diff = A - val - (P & F_C ? 0 : 1);
+       P &= ~(F_N|F_V|F_Z|F_C);
+       if(!(uint8_t)(diff))
+               P |= F_Z;
+       else if((int8_t)(diff) < 0)
+               P |= F_N;
+       if((A^val) & (A^diff) & 0x80)
+               P |= F_V;
+       if(!(diff & 0xff00))
+               P |= F_C;
+       A = diff;
+}
+
+void m6502_device_do_sbc(uint8_t val)
+{
+       if(P & F_D)
+               m6502_device_do_sbc_d(val);
+       else
+               m6502_device_do_sbc_nd(val);
+}
+
+void m6502_device_do_bit(uint8_t val)
+{
+       P &= ~(F_N|F_Z|F_V);
+       uint8_t r = A & val;
+       if(!r)
+               P |= F_Z;
+       if(val & 0x80)
+               P |= F_N;
+       if(val & 0x40)
+               P |= F_V;
+}
+
+uint8_t m6502_device_do_asl(uint8_t v)
+{
+       P &= ~(F_N|F_Z|F_C);
+       uint8_t r = v<<1;
+       if(!r)
+               P |= F_Z;
+       else if((int8_t)(r) < 0)
+               P |= F_N;
+       if(v & 0x80)
+               P |= F_C;
+       return r;
+}
+
+uint8_t m6502_device_do_lsr(uint8_t v)
+{
+       P &= ~(F_N|F_Z|F_C);
+       if(v & 1)
+               P |= F_C;
+       v >>= 1;
+       if(!v)
+               P |= F_Z;
+       return v;
+}
+
+uint8_t m6502_device_do_ror(uint8_t v)
+{
+       bool c = P & F_C;
+       P &= ~(F_N|F_Z|F_C);
+       if(v & 1)
+               P |= F_C;
+       v >>= 1;
+       if(c)
+               v |= 0x80;
+       if(!v)
+               P |= F_Z;
+       else if((int8_t)(v)<0)
+               P |= F_N;
+       return v;
+}
+
+uint8_t m6502_device_do_rol(uint8_t v)
+{
+       bool c = P & F_C;
+       P &= ~(F_N|F_Z|F_C);
+       if(v & 0x80)
+               P |= F_C;
+       v <<= 1;
+       if(c)
+               v |= 0x01;
+       if(!v)
+               P |= F_Z;
+       else if((int8_t)(v)<0)
+               P |= F_N;
+       return v;
+}
+
+uint8_t m6502_device_do_asr(uint8_t v)
+{
+       P &= ~(F_N|F_Z|F_C);
+       if(v & 1)
+               P |= F_C;
+       v >>= 1;
+       if(!v)
+               P |= F_Z;
+       else if(v & 0x40) {
+               P |= F_N;
+               v |= 0x80;
+       }
+       return v;
+}
+
+offs_t m6502_device_pc_to_external(u16 pc)
+{
+       return pc;
+}
+
+void m6502_device_execute_run()
+{
+       if(inst_substate)
+               m6502_device_do_exec_partial();
+
+       while(icount > 0) {
+               if(inst_state < 0xff00) {
+                       PPC = NPC;
+                       inst_state = IR | inst_state_base;
+                       if(/*machine().*/debug_flags & DEBUG_FLAG_ENABLED)
+                               debugger_instruction_hook(m6502_device_pc_to_external(NPC));
+               }
+               m6502_device_do_exec_full();
+       }
+}
+
+void m6502_device_execute_set_input(int inputnum, int state)
+{
+       switch(inputnum) {
+       case IRQ_LINE: irq_state = state == ASSERT_LINE; break;
+       case APU_IRQ_LINE: apu_irq_state = state == ASSERT_LINE; break;
+       case NMI_LINE: nmi_state = nmi_state || (state == ASSERT_LINE); break;
+       case m6502_device_V_LINE:
+               if(!v_state && state == ASSERT_LINE)
+                       P |= F_V;
+               v_state = state == ASSERT_LINE;
+               break;
+       }
+}
+
+
+//device_memory_interface_space_config_vector m6502_device_memory_space_config() /*const*/
+//{
+//     if(has_configured_map(AS_OPCODES))
+//             return device_memory_interface_space_config_vector {
+//                     std_make_pair(AS_PROGRAM, &program_config),
+//                     std_make_pair(AS_OPCODES, &sprogram_config)
+//             };
+//     else
+//             return device_memory_interface_space_config_vector {
+//                     std_make_pair(AS_PROGRAM, &program_config)
+//             };
+//}
+//
+//
+//void m6502_device_state_import(const device_state_entry &entry)
+//{
+//     switch(entry.index()) {
+//     case STATE_GENFLAGS:
+//     case M6502_P:
+//             P = P | (F_B|F_E);
+//             break;
+//     case M6502_PC:
+//             PC = NPC;
+//             irq_taken = false;
+//             m6502_device_prefetch();
+//             PPC = NPC;
+//             inst_state = IR | inst_state_base;
+//             break;
+//     }
+//}
+//
+//void m6502_device_state_export(const device_state_entry &entry)
+//{
+//     switch(entry.index()) {
+//     case STATE_GENPC:     XPC = m6502_device_pc_to_external(PPC); break;
+//     case STATE_GENPCBASE: XPC = m6502_device_pc_to_external(NPC); break;
+//     }
+//}
+//
+//void m6502_device_state_std_string_export(const device_state_entry &entry, std_string &str) /*const*/
+//{
+//     switch(entry.index()) {
+//     case STATE_GENFLAGS:
+//     case M6502_P:
+//             str = std_string_format("%c%c%c%c%c%c",
+//                                             P & F_N ? 'N' : '.',
+//                                             P & F_V ? 'V' : '.',
+//                                             P & F_D ? 'D' : '.',
+//                                             P & F_I ? 'I' : '.',
+//                                             P & F_Z ? 'Z' : '.',
+//                                             P & F_C ? 'C' : '.');
+//             break;
+//     }
+//}
+
+void m6502_device_prefetch()
+{
+//     sync = true;
+//     sync_w(ASSERT_LINE);
+       NPC = PC;
+//     IR = mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(PC);
+//     sync = false;
+//     sync_w(CLEAR_LINE);
+
+       if((nmi_state || ((irq_state || apu_irq_state) && !(P & F_I))) && !inhibit_interrupts) {
+               irq_taken = true;
+               IR = 0x00;
+       } else
+               PC++;
+}
+
+void m6502_device_prefetch_noirq()
+{
+//     sync = true;
+//     sync_w(ASSERT_LINE);
+       NPC = PC;
+//     IR = mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(PC);
+//     sync = false;
+//     sync_w(CLEAR_LINE);
+       PC++;
+}
+
+void m6502_device_set_nz(uint8_t v)
+{
+       P &= ~(F_Z|F_N);
+       if(v & 0x80)
+               P |= F_N;
+       if(!v)
+               P |= F_Z;
+}
+
+//std_unique_ptr<util_disasm_interface> m6502_device_m65c02_device_create_disassembler()
+//{
+//     return std_make_unique<m6502_disassembler>();
+//}
+//
+//uint8_t m6502_device_memory_interface_read_9(uint16_t adr)
+//{
+//     return m6502_device_mi_default_normal_read(adr);
+//}
+//
+//void m6502_device_memory_interface_write_9(uint16_t adr, uint8_t val)
+//{
+//     m6502_device_mi_default_normal_write(adr, val);
+//}
+//
+//
+//uint8_t m6502_device_mi_default_normal_read(uint16_t adr)
+//{
+//     return program->read_byte(adr);
+//}
+//
+//uint8_t m6502_device_mi_default_normal_read_sync(uint16_t adr)
+//{
+//     return scache->read_byte(adr);
+//}
+//
+//uint8_t m6502_device_mi_default_normal_read_arg(uint16_t adr)
+//{
+//     return cache->read_byte(adr);
+//}
+//
+//
+//void m6502_device_mi_default_normal_write(uint16_t adr, uint8_t val)
+//{
+//     program->write_byte(adr, val);
+//}
+//
+//uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(uint16_t adr)
+//{
+//     return sprogram->read_byte(adr);
+//}
+//
+//uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr)
+//{
+//     return program->read_byte(adr);
+//}
+//
+//m6502_mcu_device_m6502_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+//     m6502_device_m6502_device(mconfig, type, tag, owner, clock)
+//{
+//}
+
+
+void m6502_mcu_device_recompute_bcount(uint64_t event_time)
+{
+       if(!event_time || event_time >= total_cycles() + icount) {
+               bcount = 0;
+               return;
+       }
+       bcount = total_cycles() + icount - event_time;
+}
+
+void m6502_mcu_device_execute_run()
+{
+       internal_update(total_cycles());
+
+       icount -= count_before_instruction_step;
+       if(icount < 0) {
+               count_before_instruction_step = -icount;
+               icount = 0;
+       } else
+               count_before_instruction_step = 0;
+
+       while(bcount && icount <= bcount)
+               internal_update(total_cycles() + icount - bcount);
+
+       if(icount > 0 && inst_substate)
+               m6502_device_do_exec_partial();
+
+       while(icount > 0) {
+               while(icount > bcount) {
+                       if(inst_state < 0xff00) {
+                               PPC = NPC;
+                               inst_state = IR | inst_state_base;
+                               if(/*machine().*/debug_flags & DEBUG_FLAG_ENABLED)
+                                       debugger_instruction_hook(NPC);
+                       }
+                       m6502_device_do_exec_full();
+               }
+               if(icount > 0)
+                       while(bcount && icount <= bcount)
+                               internal_update(total_cycles() + icount - bcount);
+               if(icount > 0 && inst_substate)
+                       m6502_device_do_exec_partial();
+       }
+       if(icount < 0) {
+               count_before_instruction_step = -icount;
+               icount = 0;
+       }
+}
+
+void m6502_mcu_device_add_event(uint64_t *event_time, uint64_t new_event)
+{
+       if(!new_event)
+               return;
+       if(!*event_time || *event_time > new_event)
+               *event_time = new_event;
+}
+
+
+#include "m6502.inc"
diff --git a/m6502/m6502.cpp b/m6502/m6502.cpp
deleted file mode 100644 (file)
index 2249ee5..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-/***************************************************************************
-
-    m6502.c
-
-    MOS Technology 6502, original NMOS variant
-
-***************************************************************************/
-
-#include "emu.h"
-#include "debugger.h"
-#include "m6502.h"
-#include "m6502d.h"
-
-DEFINE_DEVICE_TYPE(M6502, m6502_device, "m6502", "MOS Technology M6502")
-
-m6502_device::m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
-       m6502_device(mconfig, M6502, tag, owner, clock)
-{
-}
-
-m6502_device::m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
-       cpu_device(mconfig, type, tag, owner, clock),
-       sync_w(*this),
-       program_config("program", ENDIANNESS_LITTLE, 8, 16),
-       sprogram_config("decrypted_opcodes", ENDIANNESS_LITTLE, 8, 16), PPC(0), NPC(0), PC(0), SP(0), TMP(0), TMP2(0), A(0), X(0), Y(0), P(0), IR(0), inst_state_base(0), mintf(nullptr),
-       inst_state(0), inst_substate(0), icount(0), nmi_state(false), irq_state(false), apu_irq_state(false), v_state(false), irq_taken(false), sync(false), inhibit_interrupts(false)
-{
-       cache_disabled = false;
-}
-
-void m6502_device::device_start()
-{
-       if(cache_disabled)
-               mintf = std::make_unique<mi_default_nd>();
-       else
-               mintf = std::make_unique<mi_default_normal>();
-
-       init();
-}
-
-void m6502_device::init()
-{
-       mintf->program  = &space(AS_PROGRAM);
-       mintf->sprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : mintf->program;
-
-       mintf->cache  = mintf->program->cache<0, 0, ENDIANNESS_LITTLE>();
-       mintf->scache = mintf->sprogram->cache<0, 0, ENDIANNESS_LITTLE>();
-
-       sync_w.resolve_safe();
-
-       XPC = 0;
-
-       state_add(STATE_GENPC,     "GENPC",     XPC).callexport().noshow();
-       state_add(STATE_GENPCBASE, "CURPC",     XPC).callexport().noshow();
-       state_add(STATE_GENSP,     "GENSP",     SP).noshow();
-       state_add(STATE_GENFLAGS,  "GENFLAGS",  P).callimport().formatstr("%6s").noshow();
-       state_add(M6502_PC,        "PC",        NPC).callimport();
-       state_add(M6502_A,         "A",         A);
-       state_add(M6502_X,         "X",         X);
-       state_add(M6502_Y,         "Y",         Y);
-       state_add(M6502_P,         "P",         P).callimport();
-       state_add(M6502_S,         "SP",        SP);
-       state_add(M6502_IR,        "IR",        IR);
-
-       save_item(NAME(PC));
-       save_item(NAME(NPC));
-       save_item(NAME(PPC));
-       save_item(NAME(A));
-       save_item(NAME(X));
-       save_item(NAME(Y));
-       save_item(NAME(P));
-       save_item(NAME(SP));
-       save_item(NAME(TMP));
-       save_item(NAME(TMP2));
-       save_item(NAME(IR));
-       save_item(NAME(nmi_state));
-       save_item(NAME(irq_state));
-       save_item(NAME(apu_irq_state));
-       save_item(NAME(v_state));
-       save_item(NAME(inst_state));
-       save_item(NAME(inst_substate));
-       save_item(NAME(inst_state_base));
-       save_item(NAME(irq_taken));
-       save_item(NAME(inhibit_interrupts));
-
-       set_icountptr(icount);
-
-       PC = 0x0000;
-       NPC = 0x0000;
-       A = 0x00;
-       X = 0x80;
-       Y = 0x00;
-       P = 0x36;
-       SP = 0x01bd;
-       TMP = 0x0000;
-       TMP2 = 0x00;
-       IR = 0x00;
-       nmi_state = false;
-       irq_state = false;
-       apu_irq_state = false;
-       irq_taken = false;
-       v_state = false;
-       inst_state = STATE_RESET;
-       inst_substate = 0;
-       inst_state_base = 0;
-       sync = false;
-       inhibit_interrupts = false;
-       count_before_instruction_step = 0;
-}
-
-void m6502_device::device_reset()
-{
-       inst_state = STATE_RESET;
-       inst_substate = 0;
-       inst_state_base = 0;
-       nmi_state = false;
-       irq_state = false;
-       apu_irq_state = false;
-       irq_taken = false;
-       v_state = false;
-       sync = false;
-       sync_w(CLEAR_LINE);
-       inhibit_interrupts = false;
-}
-
-
-uint32_t m6502_device::execute_min_cycles() const
-{
-       return 1;
-}
-
-uint32_t m6502_device::execute_max_cycles() const
-{
-       return 10;
-}
-
-uint32_t m6502_device::execute_input_lines() const
-{
-       return NMI_LINE+1;
-}
-
-bool m6502_device::execute_input_edge_triggered(int inputnum) const
-{
-       return inputnum == NMI_LINE;
-}
-
-void m6502_device::do_adc_d(uint8_t val)
-{
-       uint8_t c = P & F_C ? 1 : 0;
-       P &= ~(F_N|F_V|F_Z|F_C);
-       uint8_t al = (A & 15) + (val & 15) + c;
-       if(al > 9)
-               al += 6;
-       uint8_t ah = (A >> 4) + (val >> 4) + (al > 15);
-       if(!uint8_t(A + val + c))
-               P |= F_Z;
-       else if(ah & 8)
-               P |= F_N;
-       if(~(A^val) & (A^(ah << 4)) & 0x80)
-               P |= F_V;
-       if(ah > 9)
-               ah += 6;
-       if(ah > 15)
-               P |= F_C;
-       A = (ah << 4) | (al & 15);
-}
-
-void m6502_device::do_adc_nd(uint8_t val)
-{
-       uint16_t sum;
-       sum = A + val + (P & F_C ? 1 : 0);
-       P &= ~(F_N|F_V|F_Z|F_C);
-       if(!uint8_t(sum))
-               P |= F_Z;
-       else if(int8_t(sum) < 0)
-               P |= F_N;
-       if(~(A^val) & (A^sum) & 0x80)
-               P |= F_V;
-       if(sum & 0xff00)
-               P |= F_C;
-       A = sum;
-}
-
-void m6502_device::do_adc(uint8_t val)
-{
-       if(P & F_D)
-               do_adc_d(val);
-       else
-               do_adc_nd(val);
-}
-
-void m6502_device::do_arr_nd()
-{
-       bool c = P & F_C;
-       P &= ~(F_N|F_Z|F_C|F_V);
-       A >>= 1;
-       if(c)
-               A |= 0x80;
-       if(!A)
-               P |= F_Z;
-       else if(int8_t(A)<0)
-               P |= F_N;
-       if(A & 0x40)
-               P |= F_V|F_C;
-       if(A & 0x20)
-               P ^= F_V;
-}
-
-void m6502_device::do_arr_d()
-{
-       // The adc/ror interaction gives an extremely weird result
-       bool c = P & F_C;
-       P &= ~(F_N|F_Z|F_C|F_V);
-       uint8_t a = A >> 1;
-       if(c)
-               a |= 0x80;
-       if(!a)
-               P |= F_Z;
-       else if(int8_t(a) < 0)
-               P |= F_N;
-       if((a ^ A) & 0x40)
-               P |= F_V;
-
-       if((A & 0x0f) >= 0x05)
-               a = ((a + 6) & 0x0f) | (a & 0xf0);
-
-       if((A & 0xf0) >= 0x50) {
-               a += 0x60;
-               P |= F_C;
-       }
-       A = a;
-}
-
-void m6502_device::do_arr()
-{
-       if(P & F_D)
-               do_arr_d();
-       else
-               do_arr_nd();
-}
-
-void m6502_device::do_cmp(uint8_t val1, uint8_t val2)
-{
-       P &= ~(F_N|F_Z|F_C);
-       uint16_t r = val1-val2;
-       if(!r)
-               P |= F_Z;
-       else if(int8_t(r) < 0)
-               P |= F_N;
-       if(!(r & 0xff00))
-               P |= F_C;
-}
-
-void m6502_device::do_sbc_d(uint8_t val)
-{
-       uint8_t c = P & F_C ? 0 : 1;
-       P &= ~(F_N|F_V|F_Z|F_C);
-       uint16_t diff = A - val - c;
-       uint8_t al = (A & 15) - (val & 15) - c;
-       if(int8_t(al) < 0)
-               al -= 6;
-       uint8_t ah = (A >> 4) - (val >> 4) - (int8_t(al) < 0);
-       if(!uint8_t(diff))
-               P |= F_Z;
-       else if(diff & 0x80)
-               P |= F_N;
-       if((A^val) & (A^diff) & 0x80)
-               P |= F_V;
-       if(!(diff & 0xff00))
-               P |= F_C;
-       if(int8_t(ah) < 0)
-               ah -= 6;
-       A = (ah << 4) | (al & 15);
-}
-
-void m6502_device::do_sbc_nd(uint8_t val)
-{
-       uint16_t diff = A - val - (P & F_C ? 0 : 1);
-       P &= ~(F_N|F_V|F_Z|F_C);
-       if(!uint8_t(diff))
-               P |= F_Z;
-       else if(int8_t(diff) < 0)
-               P |= F_N;
-       if((A^val) & (A^diff) & 0x80)
-               P |= F_V;
-       if(!(diff & 0xff00))
-               P |= F_C;
-       A = diff;
-}
-
-void m6502_device::do_sbc(uint8_t val)
-{
-       if(P & F_D)
-               do_sbc_d(val);
-       else
-               do_sbc_nd(val);
-}
-
-void m6502_device::do_bit(uint8_t val)
-{
-       P &= ~(F_N|F_Z|F_V);
-       uint8_t r = A & val;
-       if(!r)
-               P |= F_Z;
-       if(val & 0x80)
-               P |= F_N;
-       if(val & 0x40)
-               P |= F_V;
-}
-
-uint8_t m6502_device::do_asl(uint8_t v)
-{
-       P &= ~(F_N|F_Z|F_C);
-       uint8_t r = v<<1;
-       if(!r)
-               P |= F_Z;
-       else if(int8_t(r) < 0)
-               P |= F_N;
-       if(v & 0x80)
-               P |= F_C;
-       return r;
-}
-
-uint8_t m6502_device::do_lsr(uint8_t v)
-{
-       P &= ~(F_N|F_Z|F_C);
-       if(v & 1)
-               P |= F_C;
-       v >>= 1;
-       if(!v)
-               P |= F_Z;
-       return v;
-}
-
-uint8_t m6502_device::do_ror(uint8_t v)
-{
-       bool c = P & F_C;
-       P &= ~(F_N|F_Z|F_C);
-       if(v & 1)
-               P |= F_C;
-       v >>= 1;
-       if(c)
-               v |= 0x80;
-       if(!v)
-               P |= F_Z;
-       else if(int8_t(v)<0)
-               P |= F_N;
-       return v;
-}
-
-uint8_t m6502_device::do_rol(uint8_t v)
-{
-       bool c = P & F_C;
-       P &= ~(F_N|F_Z|F_C);
-       if(v & 0x80)
-               P |= F_C;
-       v <<= 1;
-       if(c)
-               v |= 0x01;
-       if(!v)
-               P |= F_Z;
-       else if(int8_t(v)<0)
-               P |= F_N;
-       return v;
-}
-
-uint8_t m6502_device::do_asr(uint8_t v)
-{
-       P &= ~(F_N|F_Z|F_C);
-       if(v & 1)
-               P |= F_C;
-       v >>= 1;
-       if(!v)
-               P |= F_Z;
-       else if(v & 0x40) {
-               P |= F_N;
-               v |= 0x80;
-       }
-       return v;
-}
-
-offs_t m6502_device::pc_to_external(u16 pc)
-{
-       return pc;
-}
-
-void m6502_device::execute_run()
-{
-       if(inst_substate)
-               do_exec_partial();
-
-       while(icount > 0) {
-               if(inst_state < 0xff00) {
-                       PPC = NPC;
-                       inst_state = IR | inst_state_base;
-                       if(machine().debug_flags & DEBUG_FLAG_ENABLED)
-                               debugger_instruction_hook(pc_to_external(NPC));
-               }
-               do_exec_full();
-       }
-}
-
-void m6502_device::execute_set_input(int inputnum, int state)
-{
-       switch(inputnum) {
-       case IRQ_LINE: irq_state = state == ASSERT_LINE; break;
-       case APU_IRQ_LINE: apu_irq_state = state == ASSERT_LINE; break;
-       case NMI_LINE: nmi_state = nmi_state || (state == ASSERT_LINE); break;
-       case V_LINE:
-               if(!v_state && state == ASSERT_LINE)
-                       P |= F_V;
-               v_state = state == ASSERT_LINE;
-               break;
-       }
-}
-
-
-device_memory_interface::space_config_vector m6502_device::memory_space_config() const
-{
-       if(has_configured_map(AS_OPCODES))
-               return space_config_vector {
-                       std::make_pair(AS_PROGRAM, &program_config),
-                       std::make_pair(AS_OPCODES, &sprogram_config)
-               };
-       else
-               return space_config_vector {
-                       std::make_pair(AS_PROGRAM, &program_config)
-               };
-}
-
-
-void m6502_device::state_import(const device_state_entry &entry)
-{
-       switch(entry.index()) {
-       case STATE_GENFLAGS:
-       case M6502_P:
-               P = P | (F_B|F_E);
-               break;
-       case M6502_PC:
-               PC = NPC;
-               irq_taken = false;
-               prefetch();
-               PPC = NPC;
-               inst_state = IR | inst_state_base;
-               break;
-       }
-}
-
-void m6502_device::state_export(const device_state_entry &entry)
-{
-       switch(entry.index()) {
-       case STATE_GENPC:     XPC = pc_to_external(PPC); break;
-       case STATE_GENPCBASE: XPC = pc_to_external(NPC); break;
-       }
-}
-
-void m6502_device::state_string_export(const device_state_entry &entry, std::string &str) const
-{
-       switch(entry.index()) {
-       case STATE_GENFLAGS:
-       case M6502_P:
-               str = string_format("%c%c%c%c%c%c",
-                                               P & F_N ? 'N' : '.',
-                                               P & F_V ? 'V' : '.',
-                                               P & F_D ? 'D' : '.',
-                                               P & F_I ? 'I' : '.',
-                                               P & F_Z ? 'Z' : '.',
-                                               P & F_C ? 'C' : '.');
-               break;
-       }
-}
-
-void m6502_device::prefetch()
-{
-       sync = true;
-       sync_w(ASSERT_LINE);
-       NPC = PC;
-       IR = mintf->read_sync(PC);
-       sync = false;
-       sync_w(CLEAR_LINE);
-
-       if((nmi_state || ((irq_state || apu_irq_state) && !(P & F_I))) && !inhibit_interrupts) {
-               irq_taken = true;
-               IR = 0x00;
-       } else
-               PC++;
-}
-
-void m6502_device::prefetch_noirq()
-{
-       sync = true;
-       sync_w(ASSERT_LINE);
-       NPC = PC;
-       IR = mintf->read_sync(PC);
-       sync = false;
-       sync_w(CLEAR_LINE);
-       PC++;
-}
-
-void m6502_device::set_nz(uint8_t v)
-{
-       P &= ~(F_Z|F_N);
-       if(v & 0x80)
-               P |= F_N;
-       if(!v)
-               P |= F_Z;
-}
-
-std::unique_ptr<util::disasm_interface> m6502_device::create_disassembler()
-{
-       return std::make_unique<m6502_disassembler>();
-}
-
-uint8_t m6502_device::memory_interface::read_9(uint16_t adr)
-{
-       return read(adr);
-}
-
-void m6502_device::memory_interface::write_9(uint16_t adr, uint8_t val)
-{
-       write(adr, val);
-}
-
-
-uint8_t m6502_device::mi_default_normal::read(uint16_t adr)
-{
-       return program->read_byte(adr);
-}
-
-uint8_t m6502_device::mi_default_normal::read_sync(uint16_t adr)
-{
-       return scache->read_byte(adr);
-}
-
-uint8_t m6502_device::mi_default_normal::read_arg(uint16_t adr)
-{
-       return cache->read_byte(adr);
-}
-
-
-void m6502_device::mi_default_normal::write(uint16_t adr, uint8_t val)
-{
-       program->write_byte(adr, val);
-}
-
-uint8_t m6502_device::mi_default_nd::read_sync(uint16_t adr)
-{
-       return sprogram->read_byte(adr);
-}
-
-uint8_t m6502_device::mi_default_nd::read_arg(uint16_t adr)
-{
-       return program->read_byte(adr);
-}
-
-m6502_mcu_device::m6502_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
-       m6502_device(mconfig, type, tag, owner, clock)
-{
-}
-
-
-void m6502_mcu_device::recompute_bcount(uint64_t event_time)
-{
-       if(!event_time || event_time >= total_cycles() + icount) {
-               bcount = 0;
-               return;
-       }
-       bcount = total_cycles() + icount - event_time;
-}
-
-void m6502_mcu_device::execute_run()
-{
-       internal_update(total_cycles());
-
-       icount -= count_before_instruction_step;
-       if(icount < 0) {
-               count_before_instruction_step = -icount;
-               icount = 0;
-       } else
-               count_before_instruction_step = 0;
-
-       while(bcount && icount <= bcount)
-               internal_update(total_cycles() + icount - bcount);
-
-       if(icount > 0 && inst_substate)
-               do_exec_partial();
-
-       while(icount > 0) {
-               while(icount > bcount) {
-                       if(inst_state < 0xff00) {
-                               PPC = NPC;
-                               inst_state = IR | inst_state_base;
-                               if(machine().debug_flags & DEBUG_FLAG_ENABLED)
-                                       debugger_instruction_hook(NPC);
-                       }
-                       do_exec_full();
-               }
-               if(icount > 0)
-                       while(bcount && icount <= bcount)
-                               internal_update(total_cycles() + icount - bcount);
-               if(icount > 0 && inst_substate)
-                       do_exec_partial();
-       }
-       if(icount < 0) {
-               count_before_instruction_step = -icount;
-               icount = 0;
-       }
-}
-
-void m6502_mcu_device::add_event(uint64_t &event_time, uint64_t new_event)
-{
-       if(!new_event)
-               return;
-       if(!event_time || event_time > new_event)
-               event_time = new_event;
-}
-
-
-#include "cpu/m6502/m6502.hxx"
index b6034d9..222b7d6 100644 (file)
 #ifndef MAME_CPU_M6502_M6502_H
 #define MAME_CPU_M6502_M6502_H
 
-class m6502_device : public cpu_device {
-public:
+//class m6502_device : public cpu_device {
+//public:
        enum {
                IRQ_LINE = INPUT_LINE_IRQ0,
                APU_IRQ_LINE = INPUT_LINE_IRQ1,
                NMI_LINE = INPUT_LINE_NMI,
-               V_LINE   = INPUT_LINE_IRQ0 + 16
+               m6502_device_V_LINE   = INPUT_LINE_IRQ0 + 16
        };
 
-       m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-       bool get_sync() const { return sync; }
-       void disable_cache() { cache_disabled = true; }
-
-       auto sync_cb() { return sync_w.bind(); }
-
-       devcb_write_line sync_w;
-
-protected:
-       m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
-       class memory_interface {
-       public:
-               address_space *program, *sprogram;
-               memory_access_cache<0, 0, ENDIANNESS_LITTLE> *cache, *scache;
-
-               virtual ~memory_interface() {}
-               virtual uint8_t read(uint16_t adr) = 0;
-               virtual uint8_t read_9(uint16_t adr);
-               virtual uint8_t read_sync(uint16_t adr) = 0;
-               virtual uint8_t read_arg(uint16_t adr) = 0;
-               virtual void write(uint16_t adr, uint8_t val) = 0;
-               virtual void write_9(uint16_t adr, uint8_t val);
-       };
-
-       class mi_default_normal : public memory_interface {
-       public:
-               virtual ~mi_default_normal() {}
-               virtual uint8_t read(uint16_t adr) override;
-               virtual uint8_t read_sync(uint16_t adr) override;
-               virtual uint8_t read_arg(uint16_t adr) override;
-               virtual void write(uint16_t adr, uint8_t val) override;
-       };
-
-       class mi_default_nd : public mi_default_normal {
-       public:
-               virtual ~mi_default_nd() {}
-               virtual uint8_t read_sync(uint16_t adr) override;
-               virtual uint8_t read_arg(uint16_t adr) override;
-       };
+//     m6502_device_m6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+//
+//     bool get_sync() /*const*/ { return sync; }
+//     void disable_cache() { cache_disabled = true; }
+//
+//     auto sync_cb() { return sync_w.bind(); }
+//
+//     devcb_write_line sync_w;
+//
+//protected:
+//     m6502_device_m6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+//
+//     class memory_interface {
+//     public:
+//             address_space *program, *sprogram;
+//             memory_access_cache<0, 0, ENDIANNESS_LITTLE> *cache, *scache;
+//
+//             /*virtual*/ ~memory_interface() {}
+               /*virtual*/ uint8_t m6502_device_mi_default_normal_read(uint16_t adr) /*= 0*/;
+               /*virtual*/ uint8_t m6502_device_memory_interface_read_9(uint16_t adr);
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(uint16_t adr) /*= 0*/;
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr) /*= 0*/;
+               /*virtual*/ void m6502_device_mi_default_normal_write(uint16_t adr, uint8_t val) /*= 0*/;
+               /*virtual*/ void m6502_device_memory_interface_write_9(uint16_t adr, uint8_t val);
+//     };
+//
+//     class mi_default_normal : public memory_interface {
+//     public:
+//             /*virtual*/ ~mi_default_normal() {}
+               /*virtual*/ uint8_t m6502_device_mi_default_normal_read(uint16_t adr) /*override*/;
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(uint16_t adr) /*override*/;
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr) /*override*/;
+               /*virtual*/ void m6502_device_mi_default_normal_write(uint16_t adr, uint8_t val) /*override*/;
+//     };
+//
+//     class mi_default_nd : public mi_default_normal {
+//     public:
+//             /*virtual*/ ~mi_default_nd() {}
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_sync(uint16_t adr) /*override*/;
+               /*virtual*/ uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr) /*override*/;
+//     };
 
        enum {
                STATE_RESET = 0xff00
@@ -78,32 +78,32 @@ protected:
                F_C = 0x01
        };
 
-       virtual void init();
-
-       // device-level overrides
-       virtual void device_start() override;
-       virtual void device_reset() override;
-
-       // device_execute_interface overrides
-       virtual uint32_t execute_min_cycles() const override;
-       virtual uint32_t execute_max_cycles() const override;
-       virtual uint32_t execute_input_lines() const override;
-       virtual void execute_run() override;
-       virtual void execute_set_input(int inputnum, int state) override;
-       virtual bool execute_input_edge_triggered(int inputnum) const override;
-
-       // device_memory_interface overrides
-       virtual space_config_vector memory_space_config() const override;
-
-       // device_state_interface overrides
-       virtual void state_import(const device_state_entry &entry) override;
-       virtual void state_export(const device_state_entry &entry) override;
-       virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
-
-       // device_disasm_interface overrides
-       virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
-
-       address_space_config program_config, sprogram_config;
+       /*virtual*/ void m6502_device_init();
+
+       // device-level /*override*/s
+       /*virtual*/ void m6502_device_device_start() /*override*/;
+       /*virtual*/ void m6502_device_device_reset() /*override*/;
+
+       // device_execute_interface /*override*/s
+       /*virtual*/ uint32_t m6502_device_execute_min_cycles() /*const*/ /*override*/;
+       /*virtual*/ uint32_t m6502_device_execute_max_cycles() /*const*/ /*override*/;
+       /*virtual*/ uint32_t m6502_device_execute_input_lines() /*const*/ /*override*/;
+       /*virtual*/ void m6502_device_execute_run() /*override*/;
+       /*virtual*/ void m6502_device_execute_set_input(int inputnum, int state) /*override*/;
+       /*virtual*/ bool m6502_device_execute_input_edge_triggered(int inputnum) /*const*/ /*override*/;
+
+//     // device_memory_interface /*override*/s
+//     /*virtual*/ device_memory_interface_space_config_vector m6502_device_memory_space_config() /*const*/ /*override*/;
+//
+//     // device_state_interface /*override*/s
+//     /*virtual*/ void m6502_device_state_import(const device_state_entry &entry) /*override*/;
+//     /*virtual*/ void m6502_device_state_export(const device_state_entry &entry) /*override*/;
+//     /*virtual*/ void m6502_device_state_std_string_export(const device_state_entry &entry, std_string &str) /*const*/ /*override*/;
+//
+//     // device_util_disasm_interface /*override*/s
+//     /*virtual*/ std_unique_ptr<util_util_disasm_interface> m6502_device_m65c02_device_create_disassembler() /*override*/;
+//
+//     address_space_config program_config, sprogram_config;
 
        uint16_t  PPC;                    /* previous program counter */
        uint16_t  NPC;                    /* next start-of-instruction program counter */
@@ -118,53 +118,53 @@ protected:
        uint8_t   IR;                     /* Prefetched instruction register */
        int     inst_state_base;        /* Current instruction bank */
 
-       std::unique_ptr<memory_interface> mintf;
+//     std_unique_ptr<memory_interface> mintf;
        int inst_state, inst_substate;
        int icount, bcount, count_before_instruction_step;
        bool nmi_state, irq_state, apu_irq_state, v_state;
-       bool irq_taken, sync, cache_disabled, inhibit_interrupts;
-
-       uint8_t read(uint16_t adr) { return mintf->read(adr); }
-       uint8_t read_9(uint16_t adr) { return mintf->read_9(adr); }
-       void write(uint16_t adr, uint8_t val) { mintf->write(adr, val); }
-       void write_9(uint16_t adr, uint8_t val) { mintf->write_9(adr, val); }
-       uint8_t read_arg(uint16_t adr) { return mintf->read_arg(adr); }
-       uint8_t read_pc() { return mintf->read_arg(PC++); }
-       uint8_t read_pc_noinc() { return mintf->read_arg(PC); }
-       void prefetch();
-       void prefetch_noirq();
-       void set_nz(uint8_t v);
+       bool irq_taken, /*sync,*/ cache_disabled, inhibit_interrupts;
+
+//     uint8_t m6502_device_mi_default_normal_read(uint16_t adr) { abort(); } //return mintf->m6502_device_mi_default_normal_read(adr); }
+//     uint8_t m6502_device_memory_interface_read_9(uint16_t adr) { abort(); } //return mintf->m6502_device_memory_interface_read_9(adr); }
+//     void m6502_device_mi_default_normal_write(uint16_t adr, uint8_t val) { abort(); } //mintf->m6502_device_mi_default_normal_write(adr, val); }
+//     void m6502_device_memory_interface_write_9(uint16_t adr, uint8_t val) { abort(); } //mintf->m6502_device_memory_interface_write_9(adr, val); }
+//     uint8_t m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(uint16_t adr) { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(adr); }
+       uint8_t read_pc(); // { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(PC++); }
+       uint8_t read_pc_noinc(); // { abort(); } //return mintf->m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(PC); }
+       void m6502_device_prefetch();
+       void m6502_device_prefetch_noirq();
+       void m6502_device_set_nz(uint8_t v);
 
        u32 XPC;
-       virtual offs_t pc_to_external(u16 pc); // For paged PCs
-       virtual void do_exec_full();
-       virtual void do_exec_partial();
-
-       // inline helpers
-       static inline bool page_changing(uint16_t base, int delta) { return ((base + delta) ^ base) & 0xff00; }
-       static inline uint16_t set_l(uint16_t base, uint8_t val) { return (base & 0xff00) | val; }
-       static inline uint16_t set_h(uint16_t base, uint8_t val) { return (base & 0x00ff) | (val << 8); }
-
-       inline void dec_SP() { SP = set_l(SP, SP-1); }
-       inline void inc_SP() { SP = set_l(SP, SP+1); }
-
-       void do_adc_d(uint8_t val);
-       void do_adc_nd(uint8_t val);
-       void do_sbc_d(uint8_t val);
-       void do_sbc_nd(uint8_t val);
-       void do_arr_d();
-       void do_arr_nd();
-
-       void do_adc(uint8_t val);
-       void do_cmp(uint8_t val1, uint8_t val2);
-       void do_sbc(uint8_t val);
-       void do_bit(uint8_t val);
-       void do_arr();
-       uint8_t do_asl(uint8_t v);
-       uint8_t do_lsr(uint8_t v);
-       uint8_t do_ror(uint8_t v);
-       uint8_t do_rol(uint8_t v);
-       uint8_t do_asr(uint8_t v);
+       /*virtual*/ offs_t m6502_device_pc_to_external(u16 pc); // For paged PCs
+       /*virtual*/ void m6502_device_do_exec_full();
+       /*virtual*/ void m6502_device_do_exec_partial();
+
+       // /*inline*/ helpers
+       /*static*/ /*inline*/ bool page_changing(uint16_t base, int delta); // { return ((base + delta) ^ base) & 0xff00; }
+       /*static*/ /*inline*/ uint16_t set_l(uint16_t base, uint8_t val); // { return (base & 0xff00) | val; }
+       /*static*/ /*inline*/ uint16_t set_h(uint16_t base, uint8_t val); // { return (base & 0x00ff) | (val << 8); }
+
+       /*inline*/ void dec_SP(); // { SP = set_l(SP, SP-1); }
+       /*inline*/ void inc_SP(); // { SP = set_l(SP, SP+1); }
+
+       void m6502_device_do_adc_d(uint8_t val);
+       void m6502_device_do_adc_nd(uint8_t val);
+       void m6502_device_do_sbc_d(uint8_t val);
+       void m6502_device_do_sbc_nd(uint8_t val);
+       void m6502_device_do_arr_d();
+       void m6502_device_do_arr_nd();
+
+       void m6502_device_do_adc(uint8_t val);
+       void m6502_device_do_cmp(uint8_t val1, uint8_t val2);
+       void m6502_device_do_sbc(uint8_t val);
+       void m6502_device_do_bit(uint8_t val);
+       void m6502_device_do_arr();
+       uint8_t m6502_device_do_asl(uint8_t v);
+       uint8_t m6502_device_do_lsr(uint8_t v);
+       uint8_t m6502_device_do_ror(uint8_t v);
+       uint8_t m6502_device_do_rol(uint8_t v);
+       uint8_t m6502_device_do_asr(uint8_t v);
 
 #define O(o) void o ## _full(); void o ## _partial()
 
@@ -263,19 +263,19 @@ protected:
        O(kil_non);
 
 #undef O
-};
-
-class m6502_mcu_device : public m6502_device {
-protected:
-       m6502_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
-       void internal_update() { internal_update(total_cycles()); }
-       virtual void internal_update(uint64_t current_time) = 0;
-       void recompute_bcount(uint64_t event_time);
-       static void add_event(uint64_t &event_time, uint64_t new_event);
-
-       virtual void execute_run() override;
-};
+//};
+//
+//class m6502_mcu_device : public m6502_device {
+//protected:
+//     m6502_mcu_device_m6502_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+//
+       void internal_update(); // { internal_update(total_cycles()); }
+//     /*virtual*/ void internal_update(uint64_t current_time) /*= 0*/;
+       void m6502_mcu_device_recompute_bcount(uint64_t event_time);
+       /*static*/ void m6502_mcu_device_add_event(uint64_t *event_time, uint64_t new_event);
+
+       /*virtual*/ void m6502_device_execute_run() /*override*/;
+//};
 
 enum {
        M6502_PC = 1,
@@ -288,11 +288,11 @@ enum {
 };
 
 enum {
-       M6502_IRQ_LINE = m6502_device::IRQ_LINE,
-       M6502_NMI_LINE = m6502_device::NMI_LINE,
-       M6502_SET_OVERFLOW = m6502_device::V_LINE
+       M6502_IRQ_LINE = IRQ_LINE,
+       M6502_NMI_LINE = NMI_LINE,
+       M6502_SET_OVERFLOW = m6502_device_V_LINE
 };
 
-DECLARE_DEVICE_TYPE(M6502, m6502_device)
+//DECLARE_DEVICE_TYPE(M6502, m6502_device)
 
 #endif // MAME_CPU_M6502_M6502_H
similarity index 58%
rename from m6502/m6502.hxx
rename to m6502/m6502.inc
index 267bec1..8d48ece 100644 (file)
@@ -1,4 +1,4 @@
-void m6502_device::adc_aba_full()
+void m6502_device_adc_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10,18 +10,18 @@ void m6502_device::adc_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_aba_partial()
+void m6502_device_adc_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -38,14 +38,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -53,7 +53,7 @@ case 4:
 }
 
 
-void m6502_device::adc_abx_full()
+void m6502_device_adc_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -67,7 +67,7 @@ void m6502_device::adc_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -75,18 +75,18 @@ void m6502_device::adc_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_abx_partial()
+void m6502_device_adc_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -105,7 +105,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -114,14 +114,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -129,7 +129,7 @@ case 5:
 }
 
 
-void m6502_device::adc_aby_full()
+void m6502_device_adc_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -143,7 +143,7 @@ void m6502_device::adc_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -151,18 +151,18 @@ void m6502_device::adc_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_aby_partial()
+void m6502_device_adc_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -181,7 +181,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -190,14 +190,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -205,7 +205,7 @@ case 5:
 }
 
 
-void m6502_device::adc_idx_full()
+void m6502_device_adc_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -213,30 +213,30 @@ void m6502_device::adc_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_idx_partial()
+void m6502_device_adc_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -248,29 +248,29 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -278,7 +278,7 @@ case 6:
 }
 
 
-void m6502_device::adc_idy_full()
+void m6502_device_adc_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -286,32 +286,32 @@ void m6502_device::adc_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_adc(read(TMP+Y));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_idy_partial()
+void m6502_device_adc_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -323,31 +323,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_adc(read(TMP+Y));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -355,22 +355,22 @@ case 6:
 }
 
 
-void m6502_device::adc_imm_full()
+void m6502_device_adc_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_imm_partial()
+void m6502_device_adc_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -380,11 +380,11 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -392,7 +392,7 @@ case 2:
 }
 
 
-void m6502_device::adc_zpg_full()
+void m6502_device_adc_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -400,18 +400,18 @@ void m6502_device::adc_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_zpg_partial()
+void m6502_device_adc_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -423,14 +423,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -438,7 +438,7 @@ case 3:
 }
 
 
-void m6502_device::adc_zpx_full()
+void m6502_device_adc_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -446,22 +446,22 @@ void m6502_device::adc_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::adc_zpx_partial()
+void m6502_device_adc_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -473,19 +473,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -493,7 +493,7 @@ case 4:
 }
 
 
-void m6502_device::and_aba_full()
+void m6502_device_and_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -505,18 +505,18 @@ void m6502_device::and_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_aba_partial()
+void m6502_device_and_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -533,14 +533,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -548,7 +548,7 @@ case 4:
 }
 
 
-void m6502_device::and_abx_full()
+void m6502_device_and_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -562,7 +562,7 @@ void m6502_device::and_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -570,18 +570,18 @@ void m6502_device::and_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_abx_partial()
+void m6502_device_and_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -600,7 +600,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -609,14 +609,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -624,7 +624,7 @@ case 5:
 }
 
 
-void m6502_device::and_aby_full()
+void m6502_device_and_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -638,7 +638,7 @@ void m6502_device::and_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -646,18 +646,18 @@ void m6502_device::and_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_aby_partial()
+void m6502_device_and_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -676,7 +676,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -685,14 +685,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -700,22 +700,22 @@ case 5:
 }
 
 
-void m6502_device::and_imm_full()
+void m6502_device_and_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A &= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_imm_partial()
+void m6502_device_and_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -725,11 +725,11 @@ case 1:
        A &= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -737,7 +737,7 @@ case 2:
 }
 
 
-void m6502_device::and_idx_full()
+void m6502_device_and_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -745,32 +745,32 @@ void m6502_device::and_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_idx_partial()
+void m6502_device_and_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -782,31 +782,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -814,7 +814,7 @@ case 6:
 }
 
 
-void m6502_device::and_idy_full()
+void m6502_device_and_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -822,34 +822,34 @@ void m6502_device::and_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       A &= read(TMP+Y);
+       A &= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_idy_partial()
+void m6502_device_and_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -861,33 +861,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A &= read(TMP+Y);
+       A &= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -895,7 +895,7 @@ case 6:
 }
 
 
-void m6502_device::and_zpg_full()
+void m6502_device_and_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -903,18 +903,18 @@ void m6502_device::and_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_zpg_partial()
+void m6502_device_and_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -926,14 +926,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -941,7 +941,7 @@ case 3:
 }
 
 
-void m6502_device::and_zpx_full()
+void m6502_device_and_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -949,22 +949,22 @@ void m6502_device::and_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A &= read(uint8_t(TMP+X));
+       A &= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::and_zpx_partial()
+void m6502_device_and_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -976,19 +976,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A &= read(uint8_t(TMP+X));
+       A &= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -996,7 +996,7 @@ case 4:
 }
 
 
-void m6502_device::asl_aba_full()
+void m6502_device_asl_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1008,26 +1008,26 @@ void m6502_device::asl_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asl_aba_partial()
+void m6502_device_asl_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1044,24 +1044,24 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1069,7 +1069,7 @@ case 6:
 }
 
 
-void m6502_device::asl_abx_full()
+void m6502_device_asl_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1081,32 +1081,32 @@ void m6502_device::asl_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asl_abx_partial()
+void m6502_device_asl_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1123,31 +1123,31 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1155,22 +1155,22 @@ case 7:
 }
 
 
-void m6502_device::asl_acc_full()
+void m6502_device_asl_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        read_pc_noinc();
        icount--;
 
-       A = do_asl(A);
+       A = m6502_device_do_asl(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asl_acc_partial()
+void m6502_device_asl_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1180,11 +1180,11 @@ case 1:
        read_pc_noinc();
        icount--;
 
-       A = do_asl(A);
+       A = m6502_device_do_asl(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1192,7 +1192,7 @@ case 2:
 }
 
 
-void m6502_device::asl_zpg_full()
+void m6502_device_asl_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1200,26 +1200,26 @@ void m6502_device::asl_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asl_zpg_partial()
+void m6502_device_asl_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1231,24 +1231,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1256,7 +1256,7 @@ case 5:
 }
 
 
-void m6502_device::asl_zpx_full()
+void m6502_device_asl_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1264,32 +1264,32 @@ void m6502_device::asl_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asl_zpx_partial()
+void m6502_device_asl_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1301,31 +1301,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1333,7 +1333,7 @@ case 6:
 }
 
 
-void m6502_device::bcc_rel_full()
+void m6502_device_bcc_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1346,25 +1346,25 @@ void m6502_device::bcc_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bcc_rel_partial()
+void m6502_device_bcc_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1381,22 +1381,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1404,7 +1404,7 @@ case 4:
 }
 
 
-void m6502_device::bcs_rel_full()
+void m6502_device_bcs_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1417,25 +1417,25 @@ void m6502_device::bcs_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bcs_rel_partial()
+void m6502_device_bcs_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1452,22 +1452,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1475,7 +1475,7 @@ case 4:
 }
 
 
-void m6502_device::beq_rel_full()
+void m6502_device_beq_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1488,25 +1488,25 @@ void m6502_device::beq_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::beq_rel_partial()
+void m6502_device_beq_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1523,22 +1523,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1546,7 +1546,7 @@ case 4:
 }
 
 
-void m6502_device::bit_aba_full()
+void m6502_device_bit_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1558,16 +1558,16 @@ void m6502_device::bit_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bit_aba_partial()
+void m6502_device_bit_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1584,12 +1584,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1597,7 +1597,7 @@ case 4:
 }
 
 
-void m6502_device::bit_zpg_full()
+void m6502_device_bit_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1605,16 +1605,16 @@ void m6502_device::bit_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bit_zpg_partial()
+void m6502_device_bit_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1626,12 +1626,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1639,7 +1639,7 @@ case 3:
 }
 
 
-void m6502_device::bmi_rel_full()
+void m6502_device_bmi_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1652,25 +1652,25 @@ void m6502_device::bmi_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bmi_rel_partial()
+void m6502_device_bmi_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1687,22 +1687,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1710,7 +1710,7 @@ case 4:
 }
 
 
-void m6502_device::bne_rel_full()
+void m6502_device_bne_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1723,25 +1723,25 @@ void m6502_device::bne_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bne_rel_partial()
+void m6502_device_bne_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1758,22 +1758,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1781,7 +1781,7 @@ case 4:
 }
 
 
-void m6502_device::bpl_rel_full()
+void m6502_device_bpl_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1794,25 +1794,25 @@ void m6502_device::bpl_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bpl_rel_partial()
+void m6502_device_bpl_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1829,22 +1829,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1852,7 +1852,7 @@ case 4:
 }
 
 
-void m6502_device::brk_imp_full()
+void m6502_device_brk_imp_full()
 {
 
        // The 6502 bug when a nmi occurs in a brk is reproduced (case !irq_taken && nmi_state)
@@ -1872,19 +1872,19 @@ void m6502_device::brk_imp_full()
        }
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(SP, PC >> 8);
+       m6502_device_mi_default_normal_write(SP, PC >> 8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(SP, irq_taken ? P & ~F_B : P);
+       m6502_device_mi_default_normal_write(SP, irq_taken ? P & ~F_B : P);
        icount--;
 
        dec_SP();
@@ -1892,30 +1892,30 @@ void m6502_device::brk_imp_full()
        if(nmi_state) {
 
        if(icount == 0) { inst_substate = 6; return; }
-               PC = read_arg(0xfffa);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffa);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-               PC = set_h(PC, read_arg(0xfffb));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffb));
        icount--;
 
                nmi_state = false;
 
-               standard_irq_callback(NMI_LINE);
+//             standard_irq_callback(NMI_LINE);
 
        } else {
 
        if(icount == 0) { inst_substate = 8; return; }
-               PC = read_arg(0xfffe);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 9; return; }
-               PC = set_h(PC, read_arg(0xffff));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xffff));
        icount--;
 
                if(irq_taken)
 
                      standard_irq_callback(IRQ_LINE);
; //                  standard_irq_callback(IRQ_LINE);
 
        }
 
@@ -1924,14 +1924,14 @@ void m6502_device::brk_imp_full()
        P |= F_I; // Do *not* move after the prefetch
 
        if(icount == 0) { inst_substate = 10; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
 
 }
 
-void m6502_device::brk_imp_partial()
+void m6502_device_brk_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1956,21 +1956,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(SP, PC >> 8);
+       m6502_device_mi_default_normal_write(SP, PC >> 8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(SP, irq_taken ? P & ~F_B : P);
+       m6502_device_mi_default_normal_write(SP, irq_taken ? P & ~F_B : P);
        icount--;
 
        dec_SP();
@@ -1979,33 +1979,33 @@ case 5:
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-               PC = read_arg(0xfffa);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffa);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-               PC = set_h(PC, read_arg(0xfffb));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffb));
        icount--;
 
                nmi_state = false;
 
-               standard_irq_callback(NMI_LINE);
+//             standard_irq_callback(NMI_LINE);
 
        } else {
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-               PC = read_arg(0xfffe);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 9; return; }
 case 9:
-               PC = set_h(PC, read_arg(0xffff));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xffff));
        icount--;
 
                if(irq_taken)
 
                      standard_irq_callback(IRQ_LINE);
; //                  standard_irq_callback(IRQ_LINE);
 
        }
 
@@ -2015,7 +2015,7 @@ case 9:
 
        if(icount == 0) { inst_substate = 10; return; }
 case 10:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
@@ -2025,7 +2025,7 @@ case 10:
 }
 
 
-void m6502_device::bvc_rel_full()
+void m6502_device_bvc_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2038,25 +2038,25 @@ void m6502_device::bvc_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bvc_rel_partial()
+void m6502_device_bvc_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2073,22 +2073,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2096,7 +2096,7 @@ case 4:
 }
 
 
-void m6502_device::bvs_rel_full()
+void m6502_device_bvs_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2109,25 +2109,25 @@ void m6502_device::bvs_rel_full()
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::bvs_rel_partial()
+void m6502_device_bvs_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2144,22 +2144,22 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               if(page_changing(PC, int8_t(TMP))) {
+               if(page_changing(PC, (int8_t)(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+                       m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+(int8_t)(TMP)));
        icount--;
 
                }
 
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2167,7 +2167,7 @@ case 4:
 }
 
 
-void m6502_device::clc_imp_full()
+void m6502_device_clc_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2177,12 +2177,12 @@ void m6502_device::clc_imp_full()
        P &= ~F_C;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::clc_imp_partial()
+void m6502_device_clc_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2196,7 +2196,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2204,7 +2204,7 @@ case 2:
 }
 
 
-void m6502_device::cld_imp_full()
+void m6502_device_cld_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2214,12 +2214,12 @@ void m6502_device::cld_imp_full()
        P &= ~F_D;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cld_imp_partial()
+void m6502_device_cld_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2233,7 +2233,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2241,7 +2241,7 @@ case 2:
 }
 
 
-void m6502_device::cli_imp_full()
+void m6502_device_cli_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2249,14 +2249,14 @@ void m6502_device::cli_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P &= ~F_I; // Do *not* move it before the prefetch
 
 }
 
-void m6502_device::cli_imp_partial()
+void m6502_device_cli_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2268,7 +2268,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P &= ~F_I; // Do *not* move it before the prefetch
@@ -2278,7 +2278,7 @@ case 2:
 }
 
 
-void m6502_device::clv_imp_full()
+void m6502_device_clv_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2288,12 +2288,12 @@ void m6502_device::clv_imp_full()
        P &= ~F_V;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::clv_imp_partial()
+void m6502_device_clv_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2307,7 +2307,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2315,7 +2315,7 @@ case 2:
 }
 
 
-void m6502_device::cmp_aba_full()
+void m6502_device_cmp_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2327,18 +2327,18 @@ void m6502_device::cmp_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_aba_partial()
+void m6502_device_cmp_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2355,14 +2355,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2370,7 +2370,7 @@ case 4:
 }
 
 
-void m6502_device::cmp_abx_full()
+void m6502_device_cmp_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2384,7 +2384,7 @@ void m6502_device::cmp_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2392,18 +2392,18 @@ void m6502_device::cmp_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_abx_partial()
+void m6502_device_cmp_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2422,7 +2422,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2431,14 +2431,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2446,7 +2446,7 @@ case 5:
 }
 
 
-void m6502_device::cmp_aby_full()
+void m6502_device_cmp_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2460,7 +2460,7 @@ void m6502_device::cmp_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -2468,18 +2468,18 @@ void m6502_device::cmp_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_aby_partial()
+void m6502_device_cmp_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2498,7 +2498,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -2507,14 +2507,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2522,7 +2522,7 @@ case 5:
 }
 
 
-void m6502_device::cmp_idx_full()
+void m6502_device_cmp_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2530,30 +2530,30 @@ void m6502_device::cmp_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_cmp(A, read(TMP));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_idx_partial()
+void m6502_device_cmp_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2565,29 +2565,29 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_cmp(A, read(TMP));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2595,7 +2595,7 @@ case 6:
 }
 
 
-void m6502_device::cmp_idy_full()
+void m6502_device_cmp_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2603,32 +2603,32 @@ void m6502_device::cmp_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_cmp(A, read(TMP+Y));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_idy_partial()
+void m6502_device_cmp_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2640,31 +2640,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_cmp(A, read(TMP+Y));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2672,22 +2672,22 @@ case 6:
 }
 
 
-void m6502_device::cmp_imm_full()
+void m6502_device_cmp_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_imm_partial()
+void m6502_device_cmp_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2697,11 +2697,11 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2709,7 +2709,7 @@ case 2:
 }
 
 
-void m6502_device::cmp_zpg_full()
+void m6502_device_cmp_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2717,18 +2717,18 @@ void m6502_device::cmp_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_zpg_partial()
+void m6502_device_cmp_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2740,14 +2740,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2755,7 +2755,7 @@ case 3:
 }
 
 
-void m6502_device::cmp_zpx_full()
+void m6502_device_cmp_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2763,22 +2763,22 @@ void m6502_device::cmp_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cmp_zpx_partial()
+void m6502_device_cmp_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2790,19 +2790,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_cmp(A, TMP);
+       m6502_device_do_cmp(A, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2810,7 +2810,7 @@ case 4:
 }
 
 
-void m6502_device::cpx_aba_full()
+void m6502_device_cpx_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2822,18 +2822,18 @@ void m6502_device::cpx_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpx_aba_partial()
+void m6502_device_cpx_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2850,14 +2850,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2865,22 +2865,22 @@ case 4:
 }
 
 
-void m6502_device::cpx_imm_full()
+void m6502_device_cpx_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpx_imm_partial()
+void m6502_device_cpx_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2890,11 +2890,11 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2902,7 +2902,7 @@ case 2:
 }
 
 
-void m6502_device::cpx_zpg_full()
+void m6502_device_cpx_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2910,18 +2910,18 @@ void m6502_device::cpx_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpx_zpg_partial()
+void m6502_device_cpx_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2933,14 +2933,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(X, TMP);
+       m6502_device_do_cmp(X, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2948,7 +2948,7 @@ case 3:
 }
 
 
-void m6502_device::cpy_aba_full()
+void m6502_device_cpy_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2960,18 +2960,18 @@ void m6502_device::cpy_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpy_aba_partial()
+void m6502_device_cpy_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2988,14 +2988,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3003,22 +3003,22 @@ case 4:
 }
 
 
-void m6502_device::cpy_imm_full()
+void m6502_device_cpy_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpy_imm_partial()
+void m6502_device_cpy_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3028,11 +3028,11 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3040,7 +3040,7 @@ case 2:
 }
 
 
-void m6502_device::cpy_zpg_full()
+void m6502_device_cpy_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3048,18 +3048,18 @@ void m6502_device::cpy_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::cpy_zpg_partial()
+void m6502_device_cpy_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3071,14 +3071,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_cmp(Y, TMP);
+       m6502_device_do_cmp(Y, TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3086,7 +3086,7 @@ case 3:
 }
 
 
-void m6502_device::dec_aba_full()
+void m6502_device_dec_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3098,28 +3098,28 @@ void m6502_device::dec_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dec_aba_partial()
+void m6502_device_dec_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3136,26 +3136,26 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3163,7 +3163,7 @@ case 6:
 }
 
 
-void m6502_device::dec_abx_full()
+void m6502_device_dec_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3175,34 +3175,34 @@ void m6502_device::dec_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dec_abx_partial()
+void m6502_device_dec_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3219,33 +3219,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3253,7 +3253,7 @@ case 7:
 }
 
 
-void m6502_device::dec_zpg_full()
+void m6502_device_dec_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3261,28 +3261,28 @@ void m6502_device::dec_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dec_zpg_partial()
+void m6502_device_dec_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3294,26 +3294,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3321,7 +3321,7 @@ case 5:
 }
 
 
-void m6502_device::dec_zpx_full()
+void m6502_device_dec_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3329,34 +3329,34 @@ void m6502_device::dec_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dec_zpx_partial()
+void m6502_device_dec_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3368,33 +3368,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3402,7 +3402,7 @@ case 6:
 }
 
 
-void m6502_device::dex_imp_full()
+void m6502_device_dex_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3411,15 +3411,15 @@ void m6502_device::dex_imp_full()
 
        X--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dex_imp_partial()
+void m6502_device_dex_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3431,11 +3431,11 @@ case 1:
 
        X--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3443,7 +3443,7 @@ case 2:
 }
 
 
-void m6502_device::dey_imp_full()
+void m6502_device_dey_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3452,15 +3452,15 @@ void m6502_device::dey_imp_full()
 
        Y--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dey_imp_partial()
+void m6502_device_dey_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3472,11 +3472,11 @@ case 1:
 
        Y--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3484,7 +3484,7 @@ case 2:
 }
 
 
-void m6502_device::eor_aba_full()
+void m6502_device_eor_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3496,18 +3496,18 @@ void m6502_device::eor_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_aba_partial()
+void m6502_device_eor_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3524,14 +3524,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3539,7 +3539,7 @@ case 4:
 }
 
 
-void m6502_device::eor_abx_full()
+void m6502_device_eor_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3553,7 +3553,7 @@ void m6502_device::eor_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -3561,18 +3561,18 @@ void m6502_device::eor_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_abx_partial()
+void m6502_device_eor_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3591,7 +3591,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -3600,14 +3600,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3615,7 +3615,7 @@ case 5:
 }
 
 
-void m6502_device::eor_aby_full()
+void m6502_device_eor_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3629,7 +3629,7 @@ void m6502_device::eor_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -3637,18 +3637,18 @@ void m6502_device::eor_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_aby_partial()
+void m6502_device_eor_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3667,7 +3667,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -3676,14 +3676,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3691,7 +3691,7 @@ case 5:
 }
 
 
-void m6502_device::eor_idx_full()
+void m6502_device_eor_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3699,32 +3699,32 @@ void m6502_device::eor_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_idx_partial()
+void m6502_device_eor_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3736,31 +3736,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3768,7 +3768,7 @@ case 6:
 }
 
 
-void m6502_device::eor_idy_full()
+void m6502_device_eor_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3776,34 +3776,34 @@ void m6502_device::eor_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       A ^= read(TMP+Y);
+       A ^= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_idy_partial()
+void m6502_device_eor_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3815,33 +3815,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A ^= read(TMP+Y);
+       A ^= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3849,22 +3849,22 @@ case 6:
 }
 
 
-void m6502_device::eor_imm_full()
+void m6502_device_eor_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A ^= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_imm_partial()
+void m6502_device_eor_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3874,11 +3874,11 @@ case 1:
        A ^= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3886,7 +3886,7 @@ case 2:
 }
 
 
-void m6502_device::eor_zpg_full()
+void m6502_device_eor_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3894,18 +3894,18 @@ void m6502_device::eor_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_zpg_partial()
+void m6502_device_eor_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3917,14 +3917,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3932,7 +3932,7 @@ case 3:
 }
 
 
-void m6502_device::eor_zpx_full()
+void m6502_device_eor_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3940,22 +3940,22 @@ void m6502_device::eor_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A ^= read(uint8_t(TMP+X));
+       A ^= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::eor_zpx_partial()
+void m6502_device_eor_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3967,19 +3967,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A ^= read(uint8_t(TMP+X));
+       A ^= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3987,7 +3987,7 @@ case 4:
 }
 
 
-void m6502_device::inc_aba_full()
+void m6502_device_inc_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3999,28 +3999,28 @@ void m6502_device::inc_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::inc_aba_partial()
+void m6502_device_inc_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4037,26 +4037,26 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4064,7 +4064,7 @@ case 6:
 }
 
 
-void m6502_device::inc_abx_full()
+void m6502_device_inc_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4076,34 +4076,34 @@ void m6502_device::inc_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::inc_abx_partial()
+void m6502_device_inc_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4120,33 +4120,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4154,7 +4154,7 @@ case 7:
 }
 
 
-void m6502_device::inc_zpg_full()
+void m6502_device_inc_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4162,28 +4162,28 @@ void m6502_device::inc_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::inc_zpg_partial()
+void m6502_device_inc_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4195,26 +4195,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4222,7 +4222,7 @@ case 5:
 }
 
 
-void m6502_device::inc_zpx_full()
+void m6502_device_inc_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4230,34 +4230,34 @@ void m6502_device::inc_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::inc_zpx_partial()
+void m6502_device_inc_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4269,33 +4269,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4303,7 +4303,7 @@ case 6:
 }
 
 
-void m6502_device::inx_imp_full()
+void m6502_device_inx_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4312,15 +4312,15 @@ void m6502_device::inx_imp_full()
 
        X++;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::inx_imp_partial()
+void m6502_device_inx_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4332,11 +4332,11 @@ case 1:
 
        X++;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4344,7 +4344,7 @@ case 2:
 }
 
 
-void m6502_device::iny_imp_full()
+void m6502_device_iny_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4353,15 +4353,15 @@ void m6502_device::iny_imp_full()
 
        Y++;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::iny_imp_partial()
+void m6502_device_iny_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4373,11 +4373,11 @@ case 1:
 
        Y++;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4385,7 +4385,7 @@ case 2:
 }
 
 
-void m6502_device::jmp_adr_full()
+void m6502_device_jmp_adr_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4399,12 +4399,12 @@ void m6502_device::jmp_adr_full()
        PC = TMP;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::jmp_adr_partial()
+void m6502_device_jmp_adr_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4423,7 +4423,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4431,7 +4431,7 @@ case 3:
 }
 
 
-void m6502_device::jmp_ind_full()
+void m6502_device_jmp_ind_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4443,20 +4443,20 @@ void m6502_device::jmp_ind_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       PC = set_h(PC, read(set_l(TMP, TMP+1)));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(set_l(TMP, TMP+1)));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::jmp_ind_partial()
+void m6502_device_jmp_ind_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4473,17 +4473,17 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       PC = set_h(PC, read(set_l(TMP, TMP+1)));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(set_l(TMP, TMP+1)));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4491,7 +4491,7 @@ case 5:
 }
 
 
-void m6502_device::jsr_adr_full()
+void m6502_device_jsr_adr_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4499,17 +4499,17 @@ void m6502_device::jsr_adr_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(SP, PC>>8);
+       m6502_device_mi_default_normal_write(SP, PC>>8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
@@ -4521,12 +4521,12 @@ void m6502_device::jsr_adr_full()
        PC = TMP;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::jsr_adr_partial()
+void m6502_device_jsr_adr_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4538,19 +4538,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(SP, PC>>8);
+       m6502_device_mi_default_normal_write(SP, PC>>8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
@@ -4564,7 +4564,7 @@ case 5:
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4572,7 +4572,7 @@ case 6:
 }
 
 
-void m6502_device::lda_aba_full()
+void m6502_device_lda_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4584,18 +4584,18 @@ void m6502_device::lda_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_aba_partial()
+void m6502_device_lda_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4612,14 +4612,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4627,7 +4627,7 @@ case 4:
 }
 
 
-void m6502_device::lda_abx_full()
+void m6502_device_lda_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4641,24 +4641,24 @@ void m6502_device::lda_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       A = read(TMP + X);
+       A = m6502_device_mi_default_normal_read(TMP + X);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_abx_partial()
+void m6502_device_lda_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4677,21 +4677,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A = read(TMP + X);
+       A = m6502_device_mi_default_normal_read(TMP + X);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4699,7 +4699,7 @@ case 5:
 }
 
 
-void m6502_device::lda_aby_full()
+void m6502_device_lda_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4713,24 +4713,24 @@ void m6502_device::lda_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       A = read(TMP + Y);
+       A = m6502_device_mi_default_normal_read(TMP + Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_aby_partial()
+void m6502_device_lda_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4749,21 +4749,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A = read(TMP + Y);
+       A = m6502_device_mi_default_normal_read(TMP + Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4771,7 +4771,7 @@ case 5:
 }
 
 
-void m6502_device::lda_idx_full()
+void m6502_device_lda_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4779,32 +4779,32 @@ void m6502_device::lda_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_idx_partial()
+void m6502_device_lda_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4816,31 +4816,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4848,7 +4848,7 @@ case 6:
 }
 
 
-void m6502_device::lda_idy_full()
+void m6502_device_lda_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4856,34 +4856,34 @@ void m6502_device::lda_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       A = read(TMP+Y);
+       A = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_idy_partial()
+void m6502_device_lda_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4895,33 +4895,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A = read(TMP+Y);
+       A = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4929,22 +4929,22 @@ case 6:
 }
 
 
-void m6502_device::lda_imm_full()
+void m6502_device_lda_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A = read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_imm_partial()
+void m6502_device_lda_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4954,11 +4954,11 @@ case 1:
        A = read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4966,7 +4966,7 @@ case 2:
 }
 
 
-void m6502_device::lda_zpg_full()
+void m6502_device_lda_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4974,18 +4974,18 @@ void m6502_device::lda_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_zpg_partial()
+void m6502_device_lda_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4997,14 +4997,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5012,7 +5012,7 @@ case 3:
 }
 
 
-void m6502_device::lda_zpx_full()
+void m6502_device_lda_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5020,22 +5020,22 @@ void m6502_device::lda_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A = read(uint8_t(TMP+X));
+       A = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lda_zpx_partial()
+void m6502_device_lda_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5047,19 +5047,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A = read(uint8_t(TMP+X));
+       A = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5067,7 +5067,7 @@ case 4:
 }
 
 
-void m6502_device::ldx_aba_full()
+void m6502_device_ldx_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5079,18 +5079,18 @@ void m6502_device::ldx_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       X = read(TMP);
+       X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldx_aba_partial()
+void m6502_device_ldx_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5107,14 +5107,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       X = read(TMP);
+       X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5122,7 +5122,7 @@ case 4:
 }
 
 
-void m6502_device::ldx_aby_full()
+void m6502_device_ldx_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5136,24 +5136,24 @@ void m6502_device::ldx_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       X = read(TMP + Y);
+       X = m6502_device_mi_default_normal_read(TMP + Y);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldx_aby_partial()
+void m6502_device_ldx_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5172,21 +5172,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       X = read(TMP + Y);
+       X = m6502_device_mi_default_normal_read(TMP + Y);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5194,22 +5194,22 @@ case 5:
 }
 
 
-void m6502_device::ldx_imm_full()
+void m6502_device_ldx_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        X = read_pc();
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldx_imm_partial()
+void m6502_device_ldx_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5219,11 +5219,11 @@ case 1:
        X = read_pc();
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5231,7 +5231,7 @@ case 2:
 }
 
 
-void m6502_device::ldx_zpg_full()
+void m6502_device_ldx_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5239,18 +5239,18 @@ void m6502_device::ldx_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       X = read(TMP);
+       X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldx_zpg_partial()
+void m6502_device_ldx_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5262,14 +5262,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       X = read(TMP);
+       X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5277,7 +5277,7 @@ case 3:
 }
 
 
-void m6502_device::ldx_zpy_full()
+void m6502_device_ldx_zpy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5285,22 +5285,22 @@ void m6502_device::ldx_zpy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       X = read(uint8_t(TMP+Y));
+       X = m6502_device_mi_default_normal_read((uint8_t)(TMP+Y));
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldx_zpy_partial()
+void m6502_device_ldx_zpy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5312,19 +5312,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       X = read(uint8_t(TMP+Y));
+       X = m6502_device_mi_default_normal_read((uint8_t)(TMP+Y));
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5332,7 +5332,7 @@ case 4:
 }
 
 
-void m6502_device::ldy_aba_full()
+void m6502_device_ldy_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5344,18 +5344,18 @@ void m6502_device::ldy_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldy_aba_partial()
+void m6502_device_ldy_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5372,14 +5372,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5387,7 +5387,7 @@ case 4:
 }
 
 
-void m6502_device::ldy_abx_full()
+void m6502_device_ldy_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5401,7 +5401,7 @@ void m6502_device::ldy_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -5409,18 +5409,18 @@ void m6502_device::ldy_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldy_abx_partial()
+void m6502_device_ldy_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5439,7 +5439,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -5448,14 +5448,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5463,22 +5463,22 @@ case 5:
 }
 
 
-void m6502_device::ldy_imm_full()
+void m6502_device_ldy_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        Y = read_pc();
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldy_imm_partial()
+void m6502_device_ldy_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5488,11 +5488,11 @@ case 1:
        Y = read_pc();
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5500,7 +5500,7 @@ case 2:
 }
 
 
-void m6502_device::ldy_zpg_full()
+void m6502_device_ldy_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5508,18 +5508,18 @@ void m6502_device::ldy_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldy_zpg_partial()
+void m6502_device_ldy_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5531,14 +5531,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       Y = read(TMP);
+       Y = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5546,7 +5546,7 @@ case 3:
 }
 
 
-void m6502_device::ldy_zpx_full()
+void m6502_device_ldy_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5554,22 +5554,22 @@ void m6502_device::ldy_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       Y = read(uint8_t(TMP+X));
+       Y = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ldy_zpx_partial()
+void m6502_device_ldy_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5581,19 +5581,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       Y = read(uint8_t(TMP+X));
+       Y = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5601,7 +5601,7 @@ case 4:
 }
 
 
-void m6502_device::lsr_aba_full()
+void m6502_device_lsr_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5613,26 +5613,26 @@ void m6502_device::lsr_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lsr_aba_partial()
+void m6502_device_lsr_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5649,24 +5649,24 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5674,7 +5674,7 @@ case 6:
 }
 
 
-void m6502_device::lsr_abx_full()
+void m6502_device_lsr_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5686,32 +5686,32 @@ void m6502_device::lsr_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lsr_abx_partial()
+void m6502_device_lsr_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5728,31 +5728,31 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5760,22 +5760,22 @@ case 7:
 }
 
 
-void m6502_device::lsr_acc_full()
+void m6502_device_lsr_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        read_pc_noinc();
        icount--;
 
-       A = do_lsr(A);
+       A = m6502_device_do_lsr(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lsr_acc_partial()
+void m6502_device_lsr_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5785,11 +5785,11 @@ case 1:
        read_pc_noinc();
        icount--;
 
-       A = do_lsr(A);
+       A = m6502_device_do_lsr(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5797,7 +5797,7 @@ case 2:
 }
 
 
-void m6502_device::lsr_zpg_full()
+void m6502_device_lsr_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5805,26 +5805,26 @@ void m6502_device::lsr_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lsr_zpg_partial()
+void m6502_device_lsr_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5836,24 +5836,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5861,7 +5861,7 @@ case 5:
 }
 
 
-void m6502_device::lsr_zpx_full()
+void m6502_device_lsr_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5869,32 +5869,32 @@ void m6502_device::lsr_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lsr_zpx_partial()
+void m6502_device_lsr_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5906,31 +5906,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5938,7 +5938,7 @@ case 6:
 }
 
 
-void m6502_device::nop_imp_full()
+void m6502_device_nop_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5946,12 +5946,12 @@ void m6502_device::nop_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_imp_partial()
+void m6502_device_nop_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -5963,7 +5963,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -5971,7 +5971,7 @@ case 2:
 }
 
 
-void m6502_device::ora_aba_full()
+void m6502_device_ora_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -5983,18 +5983,18 @@ void m6502_device::ora_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_aba_partial()
+void m6502_device_ora_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6011,14 +6011,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6026,7 +6026,7 @@ case 4:
 }
 
 
-void m6502_device::ora_abx_full()
+void m6502_device_ora_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6040,7 +6040,7 @@ void m6502_device::ora_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -6048,18 +6048,18 @@ void m6502_device::ora_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_abx_partial()
+void m6502_device_ora_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6078,7 +6078,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -6087,14 +6087,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6102,7 +6102,7 @@ case 5:
 }
 
 
-void m6502_device::ora_aby_full()
+void m6502_device_ora_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6116,7 +6116,7 @@ void m6502_device::ora_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -6124,18 +6124,18 @@ void m6502_device::ora_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_aby_partial()
+void m6502_device_ora_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6154,7 +6154,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -6163,14 +6163,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6178,22 +6178,22 @@ case 5:
 }
 
 
-void m6502_device::ora_imm_full()
+void m6502_device_ora_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A |= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_imm_partial()
+void m6502_device_ora_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6203,11 +6203,11 @@ case 1:
        A |= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6215,7 +6215,7 @@ case 2:
 }
 
 
-void m6502_device::ora_idx_full()
+void m6502_device_ora_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6223,32 +6223,32 @@ void m6502_device::ora_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_idx_partial()
+void m6502_device_ora_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6260,31 +6260,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6292,7 +6292,7 @@ case 6:
 }
 
 
-void m6502_device::ora_idy_full()
+void m6502_device_ora_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6300,34 +6300,34 @@ void m6502_device::ora_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       A |= read(TMP+Y);
+       A |= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_idy_partial()
+void m6502_device_ora_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6339,33 +6339,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A |= read(TMP+Y);
+       A |= m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6373,7 +6373,7 @@ case 6:
 }
 
 
-void m6502_device::ora_zpg_full()
+void m6502_device_ora_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6381,18 +6381,18 @@ void m6502_device::ora_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_zpg_partial()
+void m6502_device_ora_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6404,14 +6404,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6419,7 +6419,7 @@ case 3:
 }
 
 
-void m6502_device::ora_zpx_full()
+void m6502_device_ora_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6427,22 +6427,22 @@ void m6502_device::ora_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A |= read(uint8_t(TMP+X));
+       A |= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ora_zpx_partial()
+void m6502_device_ora_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6454,19 +6454,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A |= read(uint8_t(TMP+X));
+       A |= m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6474,7 +6474,7 @@ case 4:
 }
 
 
-void m6502_device::pha_imp_full()
+void m6502_device_pha_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6482,18 +6482,18 @@ void m6502_device::pha_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(SP, A);
+       m6502_device_mi_default_normal_write(SP, A);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::pha_imp_partial()
+void m6502_device_pha_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6505,14 +6505,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(SP, A);
+       m6502_device_mi_default_normal_write(SP, A);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6520,7 +6520,7 @@ case 3:
 }
 
 
-void m6502_device::php_imp_full()
+void m6502_device_php_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6528,18 +6528,18 @@ void m6502_device::php_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(SP, P);
+       m6502_device_mi_default_normal_write(SP, P);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::php_imp_partial()
+void m6502_device_php_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6551,14 +6551,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(SP, P);
+       m6502_device_mi_default_normal_write(SP, P);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6566,7 +6566,7 @@ case 3:
 }
 
 
-void m6502_device::pla_imp_full()
+void m6502_device_pla_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6574,24 +6574,24 @@ void m6502_device::pla_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       A = read(SP);
+       A = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::pla_imp_partial()
+void m6502_device_pla_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6603,21 +6603,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A = read(SP);
+       A = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6625,7 +6625,7 @@ case 4:
 }
 
 
-void m6502_device::plp_imp_full()
+void m6502_device_plp_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6633,24 +6633,24 @@ void m6502_device::plp_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(SP) | (F_B|F_E);
+       TMP = m6502_device_mi_default_normal_read(SP) | (F_B|F_E);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P = TMP; // Do *not* move it before the prefetch
 
 }
 
-void m6502_device::plp_imp_partial()
+void m6502_device_plp_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6662,19 +6662,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(SP) | (F_B|F_E);
+       TMP = m6502_device_mi_default_normal_read(SP) | (F_B|F_E);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P = TMP; // Do *not* move it before the prefetch
@@ -6684,7 +6684,7 @@ case 4:
 }
 
 
-void m6502_device::rol_aba_full()
+void m6502_device_rol_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6696,26 +6696,26 @@ void m6502_device::rol_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rol_aba_partial()
+void m6502_device_rol_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6732,24 +6732,24 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6757,7 +6757,7 @@ case 6:
 }
 
 
-void m6502_device::rol_abx_full()
+void m6502_device_rol_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6769,32 +6769,32 @@ void m6502_device::rol_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rol_abx_partial()
+void m6502_device_rol_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6811,31 +6811,31 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6843,22 +6843,22 @@ case 7:
 }
 
 
-void m6502_device::rol_acc_full()
+void m6502_device_rol_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        read_pc_noinc();
        icount--;
 
-       A = do_rol(A);
+       A = m6502_device_do_rol(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rol_acc_partial()
+void m6502_device_rol_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6868,11 +6868,11 @@ case 1:
        read_pc_noinc();
        icount--;
 
-       A = do_rol(A);
+       A = m6502_device_do_rol(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6880,7 +6880,7 @@ case 2:
 }
 
 
-void m6502_device::rol_zpg_full()
+void m6502_device_rol_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6888,26 +6888,26 @@ void m6502_device::rol_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rol_zpg_partial()
+void m6502_device_rol_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6919,24 +6919,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -6944,7 +6944,7 @@ case 5:
 }
 
 
-void m6502_device::rol_zpx_full()
+void m6502_device_rol_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -6952,32 +6952,32 @@ void m6502_device::rol_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rol_zpx_partial()
+void m6502_device_rol_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -6989,31 +6989,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7021,7 +7021,7 @@ case 6:
 }
 
 
-void m6502_device::ror_aba_full()
+void m6502_device_ror_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7033,26 +7033,26 @@ void m6502_device::ror_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ror_aba_partial()
+void m6502_device_ror_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7069,24 +7069,24 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7094,7 +7094,7 @@ case 6:
 }
 
 
-void m6502_device::ror_abx_full()
+void m6502_device_ror_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7106,32 +7106,32 @@ void m6502_device::ror_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ror_abx_partial()
+void m6502_device_ror_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7148,31 +7148,31 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7180,22 +7180,22 @@ case 7:
 }
 
 
-void m6502_device::ror_acc_full()
+void m6502_device_ror_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        read_pc_noinc();
        icount--;
 
-       A = do_ror(A);
+       A = m6502_device_do_ror(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ror_acc_partial()
+void m6502_device_ror_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7205,11 +7205,11 @@ case 1:
        read_pc_noinc();
        icount--;
 
-       A = do_ror(A);
+       A = m6502_device_do_ror(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7217,7 +7217,7 @@ case 2:
 }
 
 
-void m6502_device::ror_zpg_full()
+void m6502_device_ror_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7225,26 +7225,26 @@ void m6502_device::ror_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ror_zpg_partial()
+void m6502_device_ror_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7256,24 +7256,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7281,7 +7281,7 @@ case 5:
 }
 
 
-void m6502_device::ror_zpx_full()
+void m6502_device_ror_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7289,32 +7289,32 @@ void m6502_device::ror_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ror_zpx_partial()
+void m6502_device_ror_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7326,31 +7326,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7358,7 +7358,7 @@ case 6:
 }
 
 
-void m6502_device::rti_imp_full()
+void m6502_device_rti_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7366,34 +7366,34 @@ void m6502_device::rti_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       P = read(SP) | (F_B|F_E);
+       P = m6502_device_mi_default_normal_read(SP) | (F_B|F_E);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
-       PC = read(SP);
+       PC = m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
-       PC = set_h(PC, read(SP));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(SP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rti_imp_partial()
+void m6502_device_rti_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7405,33 +7405,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       P = read(SP) | (F_B|F_E);
+       P = m6502_device_mi_default_normal_read(SP) | (F_B|F_E);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       PC = read(SP);
+       PC = m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       PC = set_h(PC, read(SP));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(SP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7439,7 +7439,7 @@ case 6:
 }
 
 
-void m6502_device::rts_imp_full()
+void m6502_device_rts_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7447,19 +7447,19 @@ void m6502_device::rts_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       PC = read(SP);
+       PC = m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
-       PC = set_h(PC, read(SP));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(SP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
@@ -7467,12 +7467,12 @@ void m6502_device::rts_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rts_imp_partial()
+void m6502_device_rts_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7484,21 +7484,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       PC = read(SP);
+       PC = m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       PC = set_h(PC, read(SP));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(SP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
@@ -7508,7 +7508,7 @@ case 5:
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7516,7 +7516,7 @@ case 6:
 }
 
 
-void m6502_device::sbc_aba_full()
+void m6502_device_sbc_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7528,18 +7528,18 @@ void m6502_device::sbc_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_aba_partial()
+void m6502_device_sbc_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7556,14 +7556,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7571,7 +7571,7 @@ case 4:
 }
 
 
-void m6502_device::sbc_abx_full()
+void m6502_device_sbc_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7585,7 +7585,7 @@ void m6502_device::sbc_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -7593,18 +7593,18 @@ void m6502_device::sbc_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_abx_partial()
+void m6502_device_sbc_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7623,7 +7623,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -7632,14 +7632,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7647,7 +7647,7 @@ case 5:
 }
 
 
-void m6502_device::sbc_aby_full()
+void m6502_device_sbc_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7661,7 +7661,7 @@ void m6502_device::sbc_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -7669,18 +7669,18 @@ void m6502_device::sbc_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_aby_partial()
+void m6502_device_sbc_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7699,7 +7699,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -7708,14 +7708,14 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7723,7 +7723,7 @@ case 5:
 }
 
 
-void m6502_device::sbc_idx_full()
+void m6502_device_sbc_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7731,30 +7731,30 @@ void m6502_device::sbc_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_idx_partial()
+void m6502_device_sbc_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7766,29 +7766,29 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7796,7 +7796,7 @@ case 6:
 }
 
 
-void m6502_device::sbc_idy_full()
+void m6502_device_sbc_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7804,32 +7804,32 @@ void m6502_device::sbc_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_sbc(read(TMP+Y));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_idy_partial()
+void m6502_device_sbc_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7841,31 +7841,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_sbc(read(TMP+Y));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7873,22 +7873,22 @@ case 6:
 }
 
 
-void m6502_device::sbc_imm_full()
+void m6502_device_sbc_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_imm_partial()
+void m6502_device_sbc_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7898,11 +7898,11 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7910,7 +7910,7 @@ case 2:
 }
 
 
-void m6502_device::sbc_zpg_full()
+void m6502_device_sbc_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7918,18 +7918,18 @@ void m6502_device::sbc_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_zpg_partial()
+void m6502_device_sbc_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7941,14 +7941,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -7956,7 +7956,7 @@ case 3:
 }
 
 
-void m6502_device::sbc_zpx_full()
+void m6502_device_sbc_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -7964,22 +7964,22 @@ void m6502_device::sbc_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbc_zpx_partial()
+void m6502_device_sbc_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -7991,19 +7991,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8011,7 +8011,7 @@ case 4:
 }
 
 
-void m6502_device::sec_imp_full()
+void m6502_device_sec_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8021,12 +8021,12 @@ void m6502_device::sec_imp_full()
        P |= F_C;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sec_imp_partial()
+void m6502_device_sec_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8040,7 +8040,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8048,7 +8048,7 @@ case 2:
 }
 
 
-void m6502_device::sed_imp_full()
+void m6502_device_sed_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8058,12 +8058,12 @@ void m6502_device::sed_imp_full()
        P |= F_D;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sed_imp_partial()
+void m6502_device_sed_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8077,7 +8077,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8085,7 +8085,7 @@ case 2:
 }
 
 
-void m6502_device::sei_imp_full()
+void m6502_device_sei_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8093,14 +8093,14 @@ void m6502_device::sei_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P |= F_I; // Do *not* move it before the prefetch
 
 }
 
-void m6502_device::sei_imp_partial()
+void m6502_device_sei_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8112,7 +8112,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        P |= F_I; // Do *not* move it before the prefetch
@@ -8122,7 +8122,7 @@ case 2:
 }
 
 
-void m6502_device::sta_aba_full()
+void m6502_device_sta_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8134,16 +8134,16 @@ void m6502_device::sta_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_aba_partial()
+void m6502_device_sta_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8160,12 +8160,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8173,7 +8173,7 @@ case 4:
 }
 
 
-void m6502_device::sta_abx_full()
+void m6502_device_sta_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8185,20 +8185,20 @@ void m6502_device::sta_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP+X, A);
+       m6502_device_mi_default_normal_write(TMP+X, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_abx_partial()
+void m6502_device_sta_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8215,17 +8215,17 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP+X, A);
+       m6502_device_mi_default_normal_write(TMP+X, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8233,7 +8233,7 @@ case 5:
 }
 
 
-void m6502_device::sta_aby_full()
+void m6502_device_sta_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8245,20 +8245,20 @@ void m6502_device::sta_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP+Y, A);
+       m6502_device_mi_default_normal_write(TMP+Y, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_aby_partial()
+void m6502_device_sta_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8275,17 +8275,17 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP+Y, A);
+       m6502_device_mi_default_normal_write(TMP+Y, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8293,7 +8293,7 @@ case 5:
 }
 
 
-void m6502_device::sta_idx_full()
+void m6502_device_sta_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8301,30 +8301,30 @@ void m6502_device::sta_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_idx_partial()
+void m6502_device_sta_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8336,29 +8336,29 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8366,7 +8366,7 @@ case 6:
 }
 
 
-void m6502_device::sta_idy_full()
+void m6502_device_sta_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8374,28 +8374,28 @@ void m6502_device::sta_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP+Y, A);
+       m6502_device_mi_default_normal_write(TMP+Y, A);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_idy_partial()
+void m6502_device_sta_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8407,27 +8407,27 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP+Y, A);
+       m6502_device_mi_default_normal_write(TMP+Y, A);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8435,7 +8435,7 @@ case 6:
 }
 
 
-void m6502_device::sta_zpg_full()
+void m6502_device_sta_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8443,16 +8443,16 @@ void m6502_device::sta_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_zpg_partial()
+void m6502_device_sta_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8464,12 +8464,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8477,7 +8477,7 @@ case 3:
 }
 
 
-void m6502_device::sta_zpx_full()
+void m6502_device_sta_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8485,20 +8485,20 @@ void m6502_device::sta_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(uint8_t(TMP+X), A);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+X), A);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sta_zpx_partial()
+void m6502_device_sta_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8510,17 +8510,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(uint8_t(TMP+X), A);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+X), A);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8528,7 +8528,7 @@ case 4:
 }
 
 
-void m6502_device::stx_aba_full()
+void m6502_device_stx_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8540,16 +8540,16 @@ void m6502_device::stx_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, X);
+       m6502_device_mi_default_normal_write(TMP, X);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::stx_aba_partial()
+void m6502_device_stx_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8566,12 +8566,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, X);
+       m6502_device_mi_default_normal_write(TMP, X);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8579,7 +8579,7 @@ case 4:
 }
 
 
-void m6502_device::stx_zpg_full()
+void m6502_device_stx_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8587,16 +8587,16 @@ void m6502_device::stx_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(TMP, X);
+       m6502_device_mi_default_normal_write(TMP, X);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::stx_zpg_partial()
+void m6502_device_stx_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8608,12 +8608,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(TMP, X);
+       m6502_device_mi_default_normal_write(TMP, X);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8621,7 +8621,7 @@ case 3:
 }
 
 
-void m6502_device::stx_zpy_full()
+void m6502_device_stx_zpy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8629,20 +8629,20 @@ void m6502_device::stx_zpy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(uint8_t(TMP+Y), X);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+Y), X);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::stx_zpy_partial()
+void m6502_device_stx_zpy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8654,17 +8654,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(uint8_t(TMP+Y), X);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+Y), X);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8672,7 +8672,7 @@ case 4:
 }
 
 
-void m6502_device::sty_aba_full()
+void m6502_device_sty_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8684,16 +8684,16 @@ void m6502_device::sty_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, Y);
+       m6502_device_mi_default_normal_write(TMP, Y);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sty_aba_partial()
+void m6502_device_sty_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8710,12 +8710,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, Y);
+       m6502_device_mi_default_normal_write(TMP, Y);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8723,7 +8723,7 @@ case 4:
 }
 
 
-void m6502_device::sty_zpg_full()
+void m6502_device_sty_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8731,16 +8731,16 @@ void m6502_device::sty_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(TMP, Y);
+       m6502_device_mi_default_normal_write(TMP, Y);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sty_zpg_partial()
+void m6502_device_sty_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8752,12 +8752,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(TMP, Y);
+       m6502_device_mi_default_normal_write(TMP, Y);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8765,7 +8765,7 @@ case 3:
 }
 
 
-void m6502_device::sty_zpx_full()
+void m6502_device_sty_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8773,20 +8773,20 @@ void m6502_device::sty_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(uint8_t(TMP+X), Y);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+X), Y);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sty_zpx_partial()
+void m6502_device_sty_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8798,17 +8798,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(uint8_t(TMP+X), Y);
+       m6502_device_mi_default_normal_write((uint8_t)(TMP+X), Y);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8816,7 +8816,7 @@ case 4:
 }
 
 
-void m6502_device::tax_imp_full()
+void m6502_device_tax_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8825,15 +8825,15 @@ void m6502_device::tax_imp_full()
 
        X = A;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::tax_imp_partial()
+void m6502_device_tax_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8845,11 +8845,11 @@ case 1:
 
        X = A;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8857,7 +8857,7 @@ case 2:
 }
 
 
-void m6502_device::tay_imp_full()
+void m6502_device_tay_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8866,15 +8866,15 @@ void m6502_device::tay_imp_full()
 
        Y = A;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::tay_imp_partial()
+void m6502_device_tay_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8886,11 +8886,11 @@ case 1:
 
        Y = A;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8898,7 +8898,7 @@ case 2:
 }
 
 
-void m6502_device::tsx_imp_full()
+void m6502_device_tsx_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8907,15 +8907,15 @@ void m6502_device::tsx_imp_full()
 
        X = SP;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::tsx_imp_partial()
+void m6502_device_tsx_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8927,11 +8927,11 @@ case 1:
 
        X = SP;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8939,7 +8939,7 @@ case 2:
 }
 
 
-void m6502_device::txa_imp_full()
+void m6502_device_txa_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8948,15 +8948,15 @@ void m6502_device::txa_imp_full()
 
        A = X;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::txa_imp_partial()
+void m6502_device_txa_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -8968,11 +8968,11 @@ case 1:
 
        A = X;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -8980,7 +8980,7 @@ case 2:
 }
 
 
-void m6502_device::txs_imp_full()
+void m6502_device_txs_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -8990,12 +8990,12 @@ void m6502_device::txs_imp_full()
        SP = set_l(SP, X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::txs_imp_partial()
+void m6502_device_txs_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9009,7 +9009,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9017,7 +9017,7 @@ case 2:
 }
 
 
-void m6502_device::tya_imp_full()
+void m6502_device_tya_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9026,15 +9026,15 @@ void m6502_device::tya_imp_full()
 
        A = Y;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::tya_imp_partial()
+void m6502_device_tya_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9046,11 +9046,11 @@ case 1:
 
        A = Y;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9058,43 +9058,43 @@ case 2:
 }
 
 
-void m6502_device::reset_full()
+void m6502_device_reset_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
-       PC = read_arg(0xfffc);
+       PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffc);
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       PC = set_h(PC, read_arg(0xfffd));
+       PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffd));
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
 
 }
 
-void m6502_device::reset_partial()
+void m6502_device_reset_partial()
 {
 switch(inst_substate) {
 case 0:
 
        if(icount == 0) { inst_substate = 1; return; }
 case 1:
-       PC = read_arg(0xfffc);
+       PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffc);
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       PC = set_h(PC, read_arg(0xfffd));
+       PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffd));
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
@@ -9104,7 +9104,7 @@ case 3:
 }
 
 
-void m6502_device::dcp_aba_full()
+void m6502_device_dcp_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9116,28 +9116,28 @@ void m6502_device::dcp_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_aba_partial()
+void m6502_device_dcp_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9154,26 +9154,26 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9181,7 +9181,7 @@ case 6:
 }
 
 
-void m6502_device::dcp_abx_full()
+void m6502_device_dcp_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9193,34 +9193,34 @@ void m6502_device::dcp_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_abx_partial()
+void m6502_device_dcp_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9237,33 +9237,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9271,7 +9271,7 @@ case 7:
 }
 
 
-void m6502_device::dcp_aby_full()
+void m6502_device_dcp_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9283,34 +9283,34 @@ void m6502_device::dcp_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_aby_partial()
+void m6502_device_dcp_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9327,33 +9327,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9361,7 +9361,7 @@ case 7:
 }
 
 
-void m6502_device::dcp_idx_full()
+void m6502_device_dcp_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9369,42 +9369,42 @@ void m6502_device::dcp_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_idx_partial()
+void m6502_device_dcp_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9416,43 +9416,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9460,7 +9460,7 @@ case 8:
 }
 
 
-void m6502_device::dcp_idy_full()
+void m6502_device_dcp_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9468,42 +9468,42 @@ void m6502_device::dcp_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_idy_partial()
+void m6502_device_dcp_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9515,43 +9515,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9559,7 +9559,7 @@ case 8:
 }
 
 
-void m6502_device::dcp_zpg_full()
+void m6502_device_dcp_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9567,28 +9567,28 @@ void m6502_device::dcp_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_zpg_partial()
+void m6502_device_dcp_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9600,26 +9600,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9627,7 +9627,7 @@ case 5:
 }
 
 
-void m6502_device::dcp_zpx_full()
+void m6502_device_dcp_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9635,34 +9635,34 @@ void m6502_device::dcp_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::dcp_zpx_partial()
+void m6502_device_dcp_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9674,33 +9674,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_cmp(A, TMP2);
+       m6502_device_do_cmp(A, TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9708,7 +9708,7 @@ case 6:
 }
 
 
-void m6502_device::isb_aba_full()
+void m6502_device_isb_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9720,28 +9720,28 @@ void m6502_device::isb_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_aba_partial()
+void m6502_device_isb_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9758,26 +9758,26 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9785,7 +9785,7 @@ case 6:
 }
 
 
-void m6502_device::isb_abx_full()
+void m6502_device_isb_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9797,34 +9797,34 @@ void m6502_device::isb_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_abx_partial()
+void m6502_device_isb_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9841,33 +9841,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9875,7 +9875,7 @@ case 7:
 }
 
 
-void m6502_device::isb_aby_full()
+void m6502_device_isb_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9887,34 +9887,34 @@ void m6502_device::isb_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_aby_partial()
+void m6502_device_isb_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -9931,33 +9931,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -9965,7 +9965,7 @@ case 7:
 }
 
 
-void m6502_device::isb_idx_full()
+void m6502_device_isb_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -9973,42 +9973,42 @@ void m6502_device::isb_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_idx_partial()
+void m6502_device_isb_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10020,43 +10020,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10064,7 +10064,7 @@ case 8:
 }
 
 
-void m6502_device::isb_idy_full()
+void m6502_device_isb_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10072,42 +10072,42 @@ void m6502_device::isb_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_idy_partial()
+void m6502_device_isb_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10119,43 +10119,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10163,7 +10163,7 @@ case 8:
 }
 
 
-void m6502_device::isb_zpg_full()
+void m6502_device_isb_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10171,28 +10171,28 @@ void m6502_device::isb_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_zpg_partial()
+void m6502_device_isb_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10204,26 +10204,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10231,7 +10231,7 @@ case 5:
 }
 
 
-void m6502_device::isb_zpx_full()
+void m6502_device_isb_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10239,34 +10239,34 @@ void m6502_device::isb_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::isb_zpx_partial()
+void m6502_device_isb_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10278,33 +10278,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2++;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_sbc(TMP2);
+       m6502_device_do_sbc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10312,7 +10312,7 @@ case 6:
 }
 
 
-void m6502_device::lax_aba_full()
+void m6502_device_lax_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10324,18 +10324,18 @@ void m6502_device::lax_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_aba_partial()
+void m6502_device_lax_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10352,14 +10352,14 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10367,7 +10367,7 @@ case 4:
 }
 
 
-void m6502_device::lax_aby_full()
+void m6502_device_lax_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10381,24 +10381,24 @@ void m6502_device::lax_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       A = X = read(TMP+Y);
+       A = X = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_aby_partial()
+void m6502_device_lax_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10417,21 +10417,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A = X = read(TMP+Y);
+       A = X = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10439,7 +10439,7 @@ case 5:
 }
 
 
-void m6502_device::lax_idx_full()
+void m6502_device_lax_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10447,32 +10447,32 @@ void m6502_device::lax_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_idx_partial()
+void m6502_device_lax_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10484,31 +10484,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10516,7 +10516,7 @@ case 6:
 }
 
 
-void m6502_device::lax_idy_full()
+void m6502_device_lax_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10524,34 +10524,34 @@ void m6502_device::lax_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       A = X = read(TMP+Y);
+       A = X = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_idy_partial()
+void m6502_device_lax_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10563,33 +10563,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       A = X = read(TMP+Y);
+       A = X = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10597,7 +10597,7 @@ case 6:
 }
 
 
-void m6502_device::lax_zpg_full()
+void m6502_device_lax_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10605,18 +10605,18 @@ void m6502_device::lax_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_zpg_partial()
+void m6502_device_lax_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10628,14 +10628,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10643,7 +10643,7 @@ case 3:
 }
 
 
-void m6502_device::lax_zpy_full()
+void m6502_device_lax_zpy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10651,24 +10651,24 @@ void m6502_device::lax_zpy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
 
        if(icount == 0) { inst_substate = 3; return; }
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lax_zpy_partial()
+void m6502_device_lax_zpy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10680,21 +10680,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       A = X = read(TMP);
+       A = X = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10702,7 +10702,7 @@ case 4:
 }
 
 
-void m6502_device::rla_aba_full()
+void m6502_device_rla_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10714,30 +10714,30 @@ void m6502_device::rla_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_aba_partial()
+void m6502_device_rla_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10754,28 +10754,28 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10783,7 +10783,7 @@ case 6:
 }
 
 
-void m6502_device::rla_abx_full()
+void m6502_device_rla_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10795,36 +10795,36 @@ void m6502_device::rla_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_abx_partial()
+void m6502_device_rla_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10841,35 +10841,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10877,7 +10877,7 @@ case 7:
 }
 
 
-void m6502_device::rla_aby_full()
+void m6502_device_rla_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10889,36 +10889,36 @@ void m6502_device::rla_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_aby_partial()
+void m6502_device_rla_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -10935,35 +10935,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -10971,7 +10971,7 @@ case 7:
 }
 
 
-void m6502_device::rla_idx_full()
+void m6502_device_rla_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10979,44 +10979,44 @@ void m6502_device::rla_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_idx_partial()
+void m6502_device_rla_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11028,45 +11028,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11074,7 +11074,7 @@ case 8:
 }
 
 
-void m6502_device::rla_idy_full()
+void m6502_device_rla_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11082,44 +11082,44 @@ void m6502_device::rla_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_idy_partial()
+void m6502_device_rla_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11131,45 +11131,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11177,7 +11177,7 @@ case 8:
 }
 
 
-void m6502_device::rla_zpg_full()
+void m6502_device_rla_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11185,30 +11185,30 @@ void m6502_device::rla_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_zpg_partial()
+void m6502_device_rla_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11220,28 +11220,28 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11249,7 +11249,7 @@ case 5:
 }
 
 
-void m6502_device::rla_zpx_full()
+void m6502_device_rla_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11257,36 +11257,36 @@ void m6502_device::rla_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rla_zpx_partial()
+void m6502_device_rla_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11298,35 +11298,35 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A &= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11334,7 +11334,7 @@ case 6:
 }
 
 
-void m6502_device::rra_aba_full()
+void m6502_device_rra_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11346,28 +11346,28 @@ void m6502_device::rra_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_aba_partial()
+void m6502_device_rra_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11384,26 +11384,26 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11411,7 +11411,7 @@ case 6:
 }
 
 
-void m6502_device::rra_abx_full()
+void m6502_device_rra_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11423,34 +11423,34 @@ void m6502_device::rra_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_abx_partial()
+void m6502_device_rra_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11467,33 +11467,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11501,7 +11501,7 @@ case 7:
 }
 
 
-void m6502_device::rra_aby_full()
+void m6502_device_rra_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11513,34 +11513,34 @@ void m6502_device::rra_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_aby_partial()
+void m6502_device_rra_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11557,33 +11557,33 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11591,7 +11591,7 @@ case 7:
 }
 
 
-void m6502_device::rra_idx_full()
+void m6502_device_rra_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11599,42 +11599,42 @@ void m6502_device::rra_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_idx_partial()
+void m6502_device_rra_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11646,43 +11646,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11690,7 +11690,7 @@ case 8:
 }
 
 
-void m6502_device::rra_idy_full()
+void m6502_device_rra_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11698,42 +11698,42 @@ void m6502_device::rra_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_idy_partial()
+void m6502_device_rra_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11745,43 +11745,43 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11789,7 +11789,7 @@ case 8:
 }
 
 
-void m6502_device::rra_zpg_full()
+void m6502_device_rra_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11797,28 +11797,28 @@ void m6502_device::rra_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_zpg_partial()
+void m6502_device_rra_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11830,26 +11830,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11857,7 +11857,7 @@ case 5:
 }
 
 
-void m6502_device::rra_zpx_full()
+void m6502_device_rra_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11865,34 +11865,34 @@ void m6502_device::rra_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::rra_zpx_partial()
+void m6502_device_rra_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11904,33 +11904,33 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       do_adc(TMP2);
+       m6502_device_do_adc(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11938,7 +11938,7 @@ case 6:
 }
 
 
-void m6502_device::sax_aba_full()
+void m6502_device_sax_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -11952,16 +11952,16 @@ void m6502_device::sax_aba_full()
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sax_aba_partial()
+void m6502_device_sax_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -11980,12 +11980,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -11993,7 +11993,7 @@ case 4:
 }
 
 
-void m6502_device::sax_idx_full()
+void m6502_device_sax_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12001,32 +12001,32 @@ void m6502_device::sax_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sax_idx_partial()
+void m6502_device_sax_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12038,31 +12038,31 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12070,7 +12070,7 @@ case 6:
 }
 
 
-void m6502_device::sax_zpg_full()
+void m6502_device_sax_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12080,16 +12080,16 @@ void m6502_device::sax_zpg_full()
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sax_zpg_partial()
+void m6502_device_sax_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12103,12 +12103,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12116,7 +12116,7 @@ case 3:
 }
 
 
-void m6502_device::sax_zpy_full()
+void m6502_device_sax_zpy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12124,24 +12124,24 @@ void m6502_device::sax_zpy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
 
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sax_zpy_partial()
+void m6502_device_sax_zpy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12153,21 +12153,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
 
        TMP2 = A & X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12175,7 +12175,7 @@ case 4:
 }
 
 
-void m6502_device::sbx_imm_full()
+void m6502_device_sbx_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12194,15 +12194,15 @@ void m6502_device::sbx_imm_full()
 
        X -= TMP2;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sbx_imm_partial()
+void m6502_device_sbx_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12224,11 +12224,11 @@ case 1:
 
        X -= TMP2;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12236,7 +12236,7 @@ case 2:
 }
 
 
-void m6502_device::sha_aby_full()
+void m6502_device_sha_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12248,7 +12248,7 @@ void m6502_device::sha_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = A & X & ((TMP >> 8)+1);
@@ -12262,16 +12262,16 @@ void m6502_device::sha_aby_full()
                TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sha_aby_partial()
+void m6502_device_sha_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12288,7 +12288,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = A & X & ((TMP >> 8)+1);
@@ -12303,12 +12303,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12316,7 +12316,7 @@ case 5:
 }
 
 
-void m6502_device::sha_idy_full()
+void m6502_device_sha_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12324,15 +12324,15 @@ void m6502_device::sha_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = A & X & ((TMP >> 8)+1);
@@ -12346,16 +12346,16 @@ void m6502_device::sha_idy_full()
                TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sha_idy_partial()
+void m6502_device_sha_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12367,17 +12367,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = A & X & ((TMP >> 8)+1);
@@ -12392,12 +12392,12 @@ case 4:
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12405,7 +12405,7 @@ case 6:
 }
 
 
-void m6502_device::shs_aby_full()
+void m6502_device_shs_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12417,7 +12417,7 @@ void m6502_device::shs_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        SP = set_l(SP, A & X);
@@ -12433,16 +12433,16 @@ void m6502_device::shs_aby_full()
                TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::shs_aby_partial()
+void m6502_device_shs_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12459,7 +12459,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        SP = set_l(SP, A & X);
@@ -12476,12 +12476,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12489,7 +12489,7 @@ case 5:
 }
 
 
-void m6502_device::shx_aby_full()
+void m6502_device_shx_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12501,7 +12501,7 @@ void m6502_device::shx_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = X & ((TMP >> 8)+1);
@@ -12515,16 +12515,16 @@ void m6502_device::shx_aby_full()
                TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::shx_aby_partial()
+void m6502_device_shx_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12541,7 +12541,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP2 = X & ((TMP >> 8)+1);
@@ -12556,12 +12556,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12569,7 +12569,7 @@ case 5:
 }
 
 
-void m6502_device::shy_abx_full()
+void m6502_device_shy_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12581,7 +12581,7 @@ void m6502_device::shy_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP2 = Y & ((TMP >> 8)+1);
@@ -12595,16 +12595,16 @@ void m6502_device::shy_abx_full()
                TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::shy_abx_partial()
+void m6502_device_shy_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12621,7 +12621,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP2 = Y & ((TMP >> 8)+1);
@@ -12636,12 +12636,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12649,7 +12649,7 @@ case 5:
 }
 
 
-void m6502_device::slo_aba_full()
+void m6502_device_slo_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12661,30 +12661,30 @@ void m6502_device::slo_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_aba_partial()
+void m6502_device_slo_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12701,28 +12701,28 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12730,7 +12730,7 @@ case 6:
 }
 
 
-void m6502_device::slo_abx_full()
+void m6502_device_slo_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12742,36 +12742,36 @@ void m6502_device::slo_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_abx_partial()
+void m6502_device_slo_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12788,35 +12788,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12824,7 +12824,7 @@ case 7:
 }
 
 
-void m6502_device::slo_aby_full()
+void m6502_device_slo_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12836,36 +12836,36 @@ void m6502_device::slo_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_aby_partial()
+void m6502_device_slo_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12882,35 +12882,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -12918,7 +12918,7 @@ case 7:
 }
 
 
-void m6502_device::slo_idx_full()
+void m6502_device_slo_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -12926,44 +12926,44 @@ void m6502_device::slo_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_idx_partial()
+void m6502_device_slo_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -12975,45 +12975,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13021,7 +13021,7 @@ case 8:
 }
 
 
-void m6502_device::slo_idy_full()
+void m6502_device_slo_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13029,44 +13029,44 @@ void m6502_device::slo_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_idy_partial()
+void m6502_device_slo_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13078,45 +13078,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13124,7 +13124,7 @@ case 8:
 }
 
 
-void m6502_device::slo_zpg_full()
+void m6502_device_slo_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13132,30 +13132,30 @@ void m6502_device::slo_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_zpg_partial()
+void m6502_device_slo_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13167,28 +13167,28 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13196,7 +13196,7 @@ case 5:
 }
 
 
-void m6502_device::slo_zpx_full()
+void m6502_device_slo_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13204,36 +13204,36 @@ void m6502_device::slo_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::slo_zpx_partial()
+void m6502_device_slo_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13245,35 +13245,35 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A |= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13281,7 +13281,7 @@ case 6:
 }
 
 
-void m6502_device::sre_aba_full()
+void m6502_device_sre_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13293,30 +13293,30 @@ void m6502_device::sre_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_aba_partial()
+void m6502_device_sre_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13333,28 +13333,28 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13362,7 +13362,7 @@ case 6:
 }
 
 
-void m6502_device::sre_abx_full()
+void m6502_device_sre_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13374,36 +13374,36 @@ void m6502_device::sre_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_abx_partial()
+void m6502_device_sre_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13420,35 +13420,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13456,7 +13456,7 @@ case 7:
 }
 
 
-void m6502_device::sre_aby_full()
+void m6502_device_sre_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13468,36 +13468,36 @@ void m6502_device::sre_aby_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_aby_partial()
+void m6502_device_sre_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13514,35 +13514,35 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13550,7 +13550,7 @@ case 7:
 }
 
 
-void m6502_device::sre_idx_full()
+void m6502_device_sre_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13558,44 +13558,44 @@ void m6502_device::sre_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_idx_partial()
+void m6502_device_sre_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13607,45 +13607,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13653,7 +13653,7 @@ case 8:
 }
 
 
-void m6502_device::sre_idy_full()
+void m6502_device_sre_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13661,44 +13661,44 @@ void m6502_device::sre_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_idy_partial()
+void m6502_device_sre_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13710,45 +13710,45 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+Y));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        TMP += Y;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13756,7 +13756,7 @@ case 8:
 }
 
 
-void m6502_device::sre_zpg_full()
+void m6502_device_sre_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13764,30 +13764,30 @@ void m6502_device::sre_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_zpg_partial()
+void m6502_device_sre_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13799,28 +13799,28 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13828,7 +13828,7 @@ case 5:
 }
 
 
-void m6502_device::sre_zpx_full()
+void m6502_device_sre_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13836,36 +13836,36 @@ void m6502_device::sre_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::sre_zpx_partial()
+void m6502_device_sre_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13877,35 +13877,35 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        A ^= TMP2;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13913,14 +13913,14 @@ case 6:
 }
 
 
-void m6502_device::anc_imm_full()
+void m6502_device_anc_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A &= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(A & 0x80)
 
@@ -13931,12 +13931,12 @@ void m6502_device::anc_imm_full()
                P &= ~F_C;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::anc_imm_partial()
+void m6502_device_anc_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13946,7 +13946,7 @@ case 1:
        A &= read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(A & 0x80)
 
@@ -13958,7 +13958,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -13966,7 +13966,7 @@ case 2:
 }
 
 
-void m6502_device::ane_imm_full()
+void m6502_device_ane_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -13975,15 +13975,15 @@ void m6502_device::ane_imm_full()
 
        A &= TMP2 & X;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::ane_imm_partial()
+void m6502_device_ane_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -13995,11 +13995,11 @@ case 1:
 
        A &= TMP2 & X;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14007,22 +14007,22 @@ case 2:
 }
 
 
-void m6502_device::asr_imm_full()
+void m6502_device_asr_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A &= read_pc();
        icount--;
 
-       A = do_lsr(A);
+       A = m6502_device_do_lsr(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::asr_imm_partial()
+void m6502_device_asr_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14032,11 +14032,11 @@ case 1:
        A &= read_pc();
        icount--;
 
-       A = do_lsr(A);
+       A = m6502_device_do_lsr(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14044,22 +14044,22 @@ case 2:
 }
 
 
-void m6502_device::arr_imm_full()
+void m6502_device_arr_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A &= read_pc();
        icount--;
 
-       do_arr();
+       m6502_device_do_arr();
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::arr_imm_partial()
+void m6502_device_arr_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14069,11 +14069,11 @@ case 1:
        A &= read_pc();
        icount--;
 
-       do_arr();
+       m6502_device_do_arr();
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14081,7 +14081,7 @@ case 2:
 }
 
 
-void m6502_device::las_aby_full()
+void m6502_device_las_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14095,28 +14095,28 @@ void m6502_device::las_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP+Y);
+       TMP2 = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
        A = TMP2 | 0x51;
 
        X = 0xff;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::las_aby_partial()
+void m6502_device_las_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14135,25 +14135,25 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP+Y);
+       TMP2 = m6502_device_mi_default_normal_read(TMP+Y);
        icount--;
 
        A = TMP2 | 0x51;
 
        X = 0xff;
 
-       set_nz(TMP2);
+       m6502_device_set_nz(TMP2);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14161,22 +14161,22 @@ case 5:
 }
 
 
-void m6502_device::lxa_imm_full()
+void m6502_device_lxa_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        A = X = read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::lxa_imm_partial()
+void m6502_device_lxa_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14186,11 +14186,11 @@ case 1:
        A = X = read_pc();
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14198,7 +14198,7 @@ case 2:
 }
 
 
-void m6502_device::nop_aba_full()
+void m6502_device_nop_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14210,16 +14210,16 @@ void m6502_device::nop_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_aba_partial()
+void m6502_device_nop_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14236,12 +14236,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14249,7 +14249,7 @@ case 4:
 }
 
 
-void m6502_device::nop_abx_full()
+void m6502_device_nop_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14263,22 +14263,22 @@ void m6502_device::nop_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(TMP + X);
+       m6502_device_mi_default_normal_read(TMP + X);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_abx_partial()
+void m6502_device_nop_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14297,19 +14297,19 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(TMP + X);
+       m6502_device_mi_default_normal_read(TMP + X);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14317,7 +14317,7 @@ case 5:
 }
 
 
-void m6502_device::nop_imm_full()
+void m6502_device_nop_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14325,12 +14325,12 @@ void m6502_device::nop_imm_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_imm_partial()
+void m6502_device_nop_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14342,7 +14342,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14350,7 +14350,7 @@ case 2:
 }
 
 
-void m6502_device::nop_zpg_full()
+void m6502_device_nop_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14358,16 +14358,16 @@ void m6502_device::nop_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_zpg_partial()
+void m6502_device_nop_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14379,12 +14379,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14392,7 +14392,7 @@ case 3:
 }
 
 
-void m6502_device::nop_zpx_full()
+void m6502_device_nop_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14400,20 +14400,20 @@ void m6502_device::nop_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(uint8_t(TMP+X));
+       m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m6502_device::nop_zpx_partial()
+void m6502_device_nop_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14425,17 +14425,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(uint8_t(TMP+X));
+       m6502_device_mi_default_normal_read((uint8_t)(TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -14443,7 +14443,7 @@ case 4:
 }
 
 
-void m6502_device::kil_non_full()
+void m6502_device_kil_non_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -14451,28 +14451,28 @@ void m6502_device::kil_non_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(0xffff);
+       m6502_device_mi_default_normal_read(0xffff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(0xfffe);
+       m6502_device_mi_default_normal_read(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(0xfffe);
+       m6502_device_mi_default_normal_read(0xfffe);
        icount--;
 
        for(;;) {
 
        if(icount == 0) { inst_substate = 5; return; }
-               read(0xffff);
+               m6502_device_mi_default_normal_read(0xffff);
        icount--;
 
        }
 
 }
 
-void m6502_device::kil_non_partial()
+void m6502_device_kil_non_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -14484,24 +14484,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(0xffff);
+       m6502_device_mi_default_normal_read(0xffff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(0xfffe);
+       m6502_device_mi_default_normal_read(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(0xfffe);
+       m6502_device_mi_default_normal_read(0xfffe);
        icount--;
 
        for(;;) {
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-               read(0xffff);
+               m6502_device_mi_default_normal_read(0xffff);
        icount--;
 
        }
@@ -14513,531 +14513,531 @@ case 5:
 
 
 
-void m6502_device::do_exec_full()
+void m6502_device_do_exec_full()
 {
        switch(inst_state) {
 
-       case 0x00: brk_imp_full(); break;
-       case 0x01: ora_idx_full(); break;
-       case 0x02: kil_non_full(); break;
-       case 0x03: slo_idx_full(); break;
-       case 0x04: nop_zpg_full(); break;
-       case 0x05: ora_zpg_full(); break;
-       case 0x06: asl_zpg_full(); break;
-       case 0x07: slo_zpg_full(); break;
-       case 0x08: php_imp_full(); break;
-       case 0x09: ora_imm_full(); break;
-       case 0x0a: asl_acc_full(); break;
-       case 0x0b: anc_imm_full(); break;
-       case 0x0c: nop_aba_full(); break;
-       case 0x0d: ora_aba_full(); break;
-       case 0x0e: asl_aba_full(); break;
-       case 0x0f: slo_aba_full(); break;
-       case 0x10: bpl_rel_full(); break;
-       case 0x11: ora_idy_full(); break;
-       case 0x12: kil_non_full(); break;
-       case 0x13: slo_idy_full(); break;
-       case 0x14: nop_zpx_full(); break;
-       case 0x15: ora_zpx_full(); break;
-       case 0x16: asl_zpx_full(); break;
-       case 0x17: slo_zpx_full(); break;
-       case 0x18: clc_imp_full(); break;
-       case 0x19: ora_aby_full(); break;
-       case 0x1a: nop_imp_full(); break;
-       case 0x1b: slo_aby_full(); break;
-       case 0x1c: nop_abx_full(); break;
-       case 0x1d: ora_abx_full(); break;
-       case 0x1e: asl_abx_full(); break;
-       case 0x1f: slo_abx_full(); break;
-       case 0x20: jsr_adr_full(); break;
-       case 0x21: and_idx_full(); break;
-       case 0x22: kil_non_full(); break;
-       case 0x23: rla_idx_full(); break;
-       case 0x24: bit_zpg_full(); break;
-       case 0x25: and_zpg_full(); break;
-       case 0x26: rol_zpg_full(); break;
-       case 0x27: rla_zpg_full(); break;
-       case 0x28: plp_imp_full(); break;
-       case 0x29: and_imm_full(); break;
-       case 0x2a: rol_acc_full(); break;
-       case 0x2b: anc_imm_full(); break;
-       case 0x2c: bit_aba_full(); break;
-       case 0x2d: and_aba_full(); break;
-       case 0x2e: rol_aba_full(); break;
-       case 0x2f: rla_aba_full(); break;
-       case 0x30: bmi_rel_full(); break;
-       case 0x31: and_idy_full(); break;
-       case 0x32: kil_non_full(); break;
-       case 0x33: rla_idy_full(); break;
-       case 0x34: nop_zpx_full(); break;
-       case 0x35: and_zpx_full(); break;
-       case 0x36: rol_zpx_full(); break;
-       case 0x37: rla_zpx_full(); break;
-       case 0x38: sec_imp_full(); break;
-       case 0x39: and_aby_full(); break;
-       case 0x3a: nop_imp_full(); break;
-       case 0x3b: rla_aby_full(); break;
-       case 0x3c: nop_abx_full(); break;
-       case 0x3d: and_abx_full(); break;
-       case 0x3e: rol_abx_full(); break;
-       case 0x3f: rla_abx_full(); break;
-       case 0x40: rti_imp_full(); break;
-       case 0x41: eor_idx_full(); break;
-       case 0x42: kil_non_full(); break;
-       case 0x43: sre_idx_full(); break;
-       case 0x44: nop_zpg_full(); break;
-       case 0x45: eor_zpg_full(); break;
-       case 0x46: lsr_zpg_full(); break;
-       case 0x47: sre_zpg_full(); break;
-       case 0x48: pha_imp_full(); break;
-       case 0x49: eor_imm_full(); break;
-       case 0x4a: lsr_acc_full(); break;
-       case 0x4b: asr_imm_full(); break;
-       case 0x4c: jmp_adr_full(); break;
-       case 0x4d: eor_aba_full(); break;
-       case 0x4e: lsr_aba_full(); break;
-       case 0x4f: sre_aba_full(); break;
-       case 0x50: bvc_rel_full(); break;
-       case 0x51: eor_idy_full(); break;
-       case 0x52: kil_non_full(); break;
-       case 0x53: sre_idy_full(); break;
-       case 0x54: nop_zpx_full(); break;
-       case 0x55: eor_zpx_full(); break;
-       case 0x56: lsr_zpx_full(); break;
-       case 0x57: sre_zpx_full(); break;
-       case 0x58: cli_imp_full(); break;
-       case 0x59: eor_aby_full(); break;
-       case 0x5a: nop_imp_full(); break;
-       case 0x5b: sre_aby_full(); break;
-       case 0x5c: nop_abx_full(); break;
-       case 0x5d: eor_abx_full(); break;
-       case 0x5e: lsr_abx_full(); break;
-       case 0x5f: sre_abx_full(); break;
-       case 0x60: rts_imp_full(); break;
-       case 0x61: adc_idx_full(); break;
-       case 0x62: kil_non_full(); break;
-       case 0x63: rra_idx_full(); break;
-       case 0x64: nop_zpg_full(); break;
-       case 0x65: adc_zpg_full(); break;
-       case 0x66: ror_zpg_full(); break;
-       case 0x67: rra_zpg_full(); break;
-       case 0x68: pla_imp_full(); break;
-       case 0x69: adc_imm_full(); break;
-       case 0x6a: ror_acc_full(); break;
-       case 0x6b: arr_imm_full(); break;
-       case 0x6c: jmp_ind_full(); break;
-       case 0x6d: adc_aba_full(); break;
-       case 0x6e: ror_aba_full(); break;
-       case 0x6f: rra_aba_full(); break;
-       case 0x70: bvs_rel_full(); break;
-       case 0x71: adc_idy_full(); break;
-       case 0x72: kil_non_full(); break;
-       case 0x73: rra_idy_full(); break;
-       case 0x74: nop_zpx_full(); break;
-       case 0x75: adc_zpx_full(); break;
-       case 0x76: ror_zpx_full(); break;
-       case 0x77: rra_zpx_full(); break;
-       case 0x78: sei_imp_full(); break;
-       case 0x79: adc_aby_full(); break;
-       case 0x7a: nop_imp_full(); break;
-       case 0x7b: rra_aby_full(); break;
-       case 0x7c: nop_abx_full(); break;
-       case 0x7d: adc_abx_full(); break;
-       case 0x7e: ror_abx_full(); break;
-       case 0x7f: rra_abx_full(); break;
-       case 0x80: nop_imm_full(); break;
-       case 0x81: sta_idx_full(); break;
-       case 0x82: nop_imm_full(); break;
-       case 0x83: sax_idx_full(); break;
-       case 0x84: sty_zpg_full(); break;
-       case 0x85: sta_zpg_full(); break;
-       case 0x86: stx_zpg_full(); break;
-       case 0x87: sax_zpg_full(); break;
-       case 0x88: dey_imp_full(); break;
-       case 0x89: nop_imm_full(); break;
-       case 0x8a: txa_imp_full(); break;
-       case 0x8b: ane_imm_full(); break;
-       case 0x8c: sty_aba_full(); break;
-       case 0x8d: sta_aba_full(); break;
-       case 0x8e: stx_aba_full(); break;
-       case 0x8f: sax_aba_full(); break;
-       case 0x90: bcc_rel_full(); break;
-       case 0x91: sta_idy_full(); break;
-       case 0x92: kil_non_full(); break;
-       case 0x93: sha_idy_full(); break;
-       case 0x94: sty_zpx_full(); break;
-       case 0x95: sta_zpx_full(); break;
-       case 0x96: stx_zpy_full(); break;
-       case 0x97: sax_zpy_full(); break;
-       case 0x98: tya_imp_full(); break;
-       case 0x99: sta_aby_full(); break;
-       case 0x9a: txs_imp_full(); break;
-       case 0x9b: shs_aby_full(); break;
-       case 0x9c: shy_abx_full(); break;
-       case 0x9d: sta_abx_full(); break;
-       case 0x9e: shx_aby_full(); break;
-       case 0x9f: sha_aby_full(); break;
-       case 0xa0: ldy_imm_full(); break;
-       case 0xa1: lda_idx_full(); break;
-       case 0xa2: ldx_imm_full(); break;
-       case 0xa3: lax_idx_full(); break;
-       case 0xa4: ldy_zpg_full(); break;
-       case 0xa5: lda_zpg_full(); break;
-       case 0xa6: ldx_zpg_full(); break;
-       case 0xa7: lax_zpg_full(); break;
-       case 0xa8: tay_imp_full(); break;
-       case 0xa9: lda_imm_full(); break;
-       case 0xaa: tax_imp_full(); break;
-       case 0xab: lxa_imm_full(); break;
-       case 0xac: ldy_aba_full(); break;
-       case 0xad: lda_aba_full(); break;
-       case 0xae: ldx_aba_full(); break;
-       case 0xaf: lax_aba_full(); break;
-       case 0xb0: bcs_rel_full(); break;
-       case 0xb1: lda_idy_full(); break;
-       case 0xb2: kil_non_full(); break;
-       case 0xb3: lax_idy_full(); break;
-       case 0xb4: ldy_zpx_full(); break;
-       case 0xb5: lda_zpx_full(); break;
-       case 0xb6: ldx_zpy_full(); break;
-       case 0xb7: lax_zpy_full(); break;
-       case 0xb8: clv_imp_full(); break;
-       case 0xb9: lda_aby_full(); break;
-       case 0xba: tsx_imp_full(); break;
-       case 0xbb: las_aby_full(); break;
-       case 0xbc: ldy_abx_full(); break;
-       case 0xbd: lda_abx_full(); break;
-       case 0xbe: ldx_aby_full(); break;
-       case 0xbf: lax_aby_full(); break;
-       case 0xc0: cpy_imm_full(); break;
-       case 0xc1: cmp_idx_full(); break;
-       case 0xc2: nop_imm_full(); break;
-       case 0xc3: dcp_idx_full(); break;
-       case 0xc4: cpy_zpg_full(); break;
-       case 0xc5: cmp_zpg_full(); break;
-       case 0xc6: dec_zpg_full(); break;
-       case 0xc7: dcp_zpg_full(); break;
-       case 0xc8: iny_imp_full(); break;
-       case 0xc9: cmp_imm_full(); break;
-       case 0xca: dex_imp_full(); break;
-       case 0xcb: sbx_imm_full(); break;
-       case 0xcc: cpy_aba_full(); break;
-       case 0xcd: cmp_aba_full(); break;
-       case 0xce: dec_aba_full(); break;
-       case 0xcf: dcp_aba_full(); break;
-       case 0xd0: bne_rel_full(); break;
-       case 0xd1: cmp_idy_full(); break;
-       case 0xd2: kil_non_full(); break;
-       case 0xd3: dcp_idy_full(); break;
-       case 0xd4: nop_zpx_full(); break;
-       case 0xd5: cmp_zpx_full(); break;
-       case 0xd6: dec_zpx_full(); break;
-       case 0xd7: dcp_zpx_full(); break;
-       case 0xd8: cld_imp_full(); break;
-       case 0xd9: cmp_aby_full(); break;
-       case 0xda: nop_imp_full(); break;
-       case 0xdb: dcp_aby_full(); break;
-       case 0xdc: nop_abx_full(); break;
-       case 0xdd: cmp_abx_full(); break;
-       case 0xde: dec_abx_full(); break;
-       case 0xdf: dcp_abx_full(); break;
-       case 0xe0: cpx_imm_full(); break;
-       case 0xe1: sbc_idx_full(); break;
-       case 0xe2: nop_imm_full(); break;
-       case 0xe3: isb_idx_full(); break;
-       case 0xe4: cpx_zpg_full(); break;
-       case 0xe5: sbc_zpg_full(); break;
-       case 0xe6: inc_zpg_full(); break;
-       case 0xe7: isb_zpg_full(); break;
-       case 0xe8: inx_imp_full(); break;
-       case 0xe9: sbc_imm_full(); break;
-       case 0xea: nop_imp_full(); break;
-       case 0xeb: sbc_imm_full(); break;
-       case 0xec: cpx_aba_full(); break;
-       case 0xed: sbc_aba_full(); break;
-       case 0xee: inc_aba_full(); break;
-       case 0xef: isb_aba_full(); break;
-       case 0xf0: beq_rel_full(); break;
-       case 0xf1: sbc_idy_full(); break;
-       case 0xf2: kil_non_full(); break;
-       case 0xf3: isb_idy_full(); break;
-       case 0xf4: nop_zpx_full(); break;
-       case 0xf5: sbc_zpx_full(); break;
-       case 0xf6: inc_zpx_full(); break;
-       case 0xf7: isb_zpx_full(); break;
-       case 0xf8: sed_imp_full(); break;
-       case 0xf9: sbc_aby_full(); break;
-       case 0xfa: nop_imp_full(); break;
-       case 0xfb: isb_aby_full(); break;
-       case 0xfc: nop_abx_full(); break;
-       case 0xfd: sbc_abx_full(); break;
-       case 0xfe: inc_abx_full(); break;
-       case 0xff: isb_abx_full(); break;
-       case STATE_RESET: reset_full(); break;
+       case 0x00: m6502_device_brk_imp_full(); break;
+       case 0x01: m6502_device_ora_idx_full(); break;
+       case 0x02: m6502_device_kil_non_full(); break;
+       case 0x03: m6502_device_slo_idx_full(); break;
+       case 0x04: m6502_device_nop_zpg_full(); break;
+       case 0x05: m6502_device_ora_zpg_full(); break;
+       case 0x06: m6502_device_asl_zpg_full(); break;
+       case 0x07: m6502_device_slo_zpg_full(); break;
+       case 0x08: m6502_device_php_imp_full(); break;
+       case 0x09: m6502_device_ora_imm_full(); break;
+       case 0x0a: m6502_device_asl_acc_full(); break;
+       case 0x0b: m6502_device_anc_imm_full(); break;
+       case 0x0c: m6502_device_nop_aba_full(); break;
+       case 0x0d: m6502_device_ora_aba_full(); break;
+       case 0x0e: m6502_device_asl_aba_full(); break;
+       case 0x0f: m6502_device_slo_aba_full(); break;
+       case 0x10: m6502_device_bpl_rel_full(); break;
+       case 0x11: m6502_device_ora_idy_full(); break;
+       case 0x12: m6502_device_kil_non_full(); break;
+       case 0x13: m6502_device_slo_idy_full(); break;
+       case 0x14: m6502_device_nop_zpx_full(); break;
+       case 0x15: m6502_device_ora_zpx_full(); break;
+       case 0x16: m6502_device_asl_zpx_full(); break;
+       case 0x17: m6502_device_slo_zpx_full(); break;
+       case 0x18: m6502_device_clc_imp_full(); break;
+       case 0x19: m6502_device_ora_aby_full(); break;
+       case 0x1a: m6502_device_nop_imp_full(); break;
+       case 0x1b: m6502_device_slo_aby_full(); break;
+       case 0x1c: m6502_device_nop_abx_full(); break;
+       case 0x1d: m6502_device_ora_abx_full(); break;
+       case 0x1e: m6502_device_asl_abx_full(); break;
+       case 0x1f: m6502_device_slo_abx_full(); break;
+       case 0x20: m6502_device_jsr_adr_full(); break;
+       case 0x21: m6502_device_and_idx_full(); break;
+       case 0x22: m6502_device_kil_non_full(); break;
+       case 0x23: m6502_device_rla_idx_full(); break;
+       case 0x24: m6502_device_bit_zpg_full(); break;
+       case 0x25: m6502_device_and_zpg_full(); break;
+       case 0x26: m6502_device_rol_zpg_full(); break;
+       case 0x27: m6502_device_rla_zpg_full(); break;
+       case 0x28: m6502_device_plp_imp_full(); break;
+       case 0x29: m6502_device_and_imm_full(); break;
+       case 0x2a: m6502_device_rol_acc_full(); break;
+       case 0x2b: m6502_device_anc_imm_full(); break;
+       case 0x2c: m6502_device_bit_aba_full(); break;
+       case 0x2d: m6502_device_and_aba_full(); break;
+       case 0x2e: m6502_device_rol_aba_full(); break;
+       case 0x2f: m6502_device_rla_aba_full(); break;
+       case 0x30: m6502_device_bmi_rel_full(); break;
+       case 0x31: m6502_device_and_idy_full(); break;
+       case 0x32: m6502_device_kil_non_full(); break;
+       case 0x33: m6502_device_rla_idy_full(); break;
+       case 0x34: m6502_device_nop_zpx_full(); break;
+       case 0x35: m6502_device_and_zpx_full(); break;
+       case 0x36: m6502_device_rol_zpx_full(); break;
+       case 0x37: m6502_device_rla_zpx_full(); break;
+       case 0x38: m6502_device_sec_imp_full(); break;
+       case 0x39: m6502_device_and_aby_full(); break;
+       case 0x3a: m6502_device_nop_imp_full(); break;
+       case 0x3b: m6502_device_rla_aby_full(); break;
+       case 0x3c: m6502_device_nop_abx_full(); break;
+       case 0x3d: m6502_device_and_abx_full(); break;
+       case 0x3e: m6502_device_rol_abx_full(); break;
+       case 0x3f: m6502_device_rla_abx_full(); break;
+       case 0x40: m6502_device_rti_imp_full(); break;
+       case 0x41: m6502_device_eor_idx_full(); break;
+       case 0x42: m6502_device_kil_non_full(); break;
+       case 0x43: m6502_device_sre_idx_full(); break;
+       case 0x44: m6502_device_nop_zpg_full(); break;
+       case 0x45: m6502_device_eor_zpg_full(); break;
+       case 0x46: m6502_device_lsr_zpg_full(); break;
+       case 0x47: m6502_device_sre_zpg_full(); break;
+       case 0x48: m6502_device_pha_imp_full(); break;
+       case 0x49: m6502_device_eor_imm_full(); break;
+       case 0x4a: m6502_device_lsr_acc_full(); break;
+       case 0x4b: m6502_device_asr_imm_full(); break;
+       case 0x4c: m6502_device_jmp_adr_full(); break;
+       case 0x4d: m6502_device_eor_aba_full(); break;
+       case 0x4e: m6502_device_lsr_aba_full(); break;
+       case 0x4f: m6502_device_sre_aba_full(); break;
+       case 0x50: m6502_device_bvc_rel_full(); break;
+       case 0x51: m6502_device_eor_idy_full(); break;
+       case 0x52: m6502_device_kil_non_full(); break;
+       case 0x53: m6502_device_sre_idy_full(); break;
+       case 0x54: m6502_device_nop_zpx_full(); break;
+       case 0x55: m6502_device_eor_zpx_full(); break;
+       case 0x56: m6502_device_lsr_zpx_full(); break;
+       case 0x57: m6502_device_sre_zpx_full(); break;
+       case 0x58: m6502_device_cli_imp_full(); break;
+       case 0x59: m6502_device_eor_aby_full(); break;
+       case 0x5a: m6502_device_nop_imp_full(); break;
+       case 0x5b: m6502_device_sre_aby_full(); break;
+       case 0x5c: m6502_device_nop_abx_full(); break;
+       case 0x5d: m6502_device_eor_abx_full(); break;
+       case 0x5e: m6502_device_lsr_abx_full(); break;
+       case 0x5f: m6502_device_sre_abx_full(); break;
+       case 0x60: m6502_device_rts_imp_full(); break;
+       case 0x61: m6502_device_adc_idx_full(); break;
+       case 0x62: m6502_device_kil_non_full(); break;
+       case 0x63: m6502_device_rra_idx_full(); break;
+       case 0x64: m6502_device_nop_zpg_full(); break;
+       case 0x65: m6502_device_adc_zpg_full(); break;
+       case 0x66: m6502_device_ror_zpg_full(); break;
+       case 0x67: m6502_device_rra_zpg_full(); break;
+       case 0x68: m6502_device_pla_imp_full(); break;
+       case 0x69: m6502_device_adc_imm_full(); break;
+       case 0x6a: m6502_device_ror_acc_full(); break;
+       case 0x6b: m6502_device_arr_imm_full(); break;
+       case 0x6c: m6502_device_jmp_ind_full(); break;
+       case 0x6d: m6502_device_adc_aba_full(); break;
+       case 0x6e: m6502_device_ror_aba_full(); break;
+       case 0x6f: m6502_device_rra_aba_full(); break;
+       case 0x70: m6502_device_bvs_rel_full(); break;
+       case 0x71: m6502_device_adc_idy_full(); break;
+       case 0x72: m6502_device_kil_non_full(); break;
+       case 0x73: m6502_device_rra_idy_full(); break;
+       case 0x74: m6502_device_nop_zpx_full(); break;
+       case 0x75: m6502_device_adc_zpx_full(); break;
+       case 0x76: m6502_device_ror_zpx_full(); break;
+       case 0x77: m6502_device_rra_zpx_full(); break;
+       case 0x78: m6502_device_sei_imp_full(); break;
+       case 0x79: m6502_device_adc_aby_full(); break;
+       case 0x7a: m6502_device_nop_imp_full(); break;
+       case 0x7b: m6502_device_rra_aby_full(); break;
+       case 0x7c: m6502_device_nop_abx_full(); break;
+       case 0x7d: m6502_device_adc_abx_full(); break;
+       case 0x7e: m6502_device_ror_abx_full(); break;
+       case 0x7f: m6502_device_rra_abx_full(); break;
+       case 0x80: m6502_device_nop_imm_full(); break;
+       case 0x81: m6502_device_sta_idx_full(); break;
+       case 0x82: m6502_device_nop_imm_full(); break;
+       case 0x83: m6502_device_sax_idx_full(); break;
+       case 0x84: m6502_device_sty_zpg_full(); break;
+       case 0x85: m6502_device_sta_zpg_full(); break;
+       case 0x86: m6502_device_stx_zpg_full(); break;
+       case 0x87: m6502_device_sax_zpg_full(); break;
+       case 0x88: m6502_device_dey_imp_full(); break;
+       case 0x89: m6502_device_nop_imm_full(); break;
+       case 0x8a: m6502_device_txa_imp_full(); break;
+       case 0x8b: m6502_device_ane_imm_full(); break;
+       case 0x8c: m6502_device_sty_aba_full(); break;
+       case 0x8d: m6502_device_sta_aba_full(); break;
+       case 0x8e: m6502_device_stx_aba_full(); break;
+       case 0x8f: m6502_device_sax_aba_full(); break;
+       case 0x90: m6502_device_bcc_rel_full(); break;
+       case 0x91: m6502_device_sta_idy_full(); break;
+       case 0x92: m6502_device_kil_non_full(); break;
+       case 0x93: m6502_device_sha_idy_full(); break;
+       case 0x94: m6502_device_sty_zpx_full(); break;
+       case 0x95: m6502_device_sta_zpx_full(); break;
+       case 0x96: m6502_device_stx_zpy_full(); break;
+       case 0x97: m6502_device_sax_zpy_full(); break;
+       case 0x98: m6502_device_tya_imp_full(); break;
+       case 0x99: m6502_device_sta_aby_full(); break;
+       case 0x9a: m6502_device_txs_imp_full(); break;
+       case 0x9b: m6502_device_shs_aby_full(); break;
+       case 0x9c: m6502_device_shy_abx_full(); break;
+       case 0x9d: m6502_device_sta_abx_full(); break;
+       case 0x9e: m6502_device_shx_aby_full(); break;
+       case 0x9f: m6502_device_sha_aby_full(); break;
+       case 0xa0: m6502_device_ldy_imm_full(); break;
+       case 0xa1: m6502_device_lda_idx_full(); break;
+       case 0xa2: m6502_device_ldx_imm_full(); break;
+       case 0xa3: m6502_device_lax_idx_full(); break;
+       case 0xa4: m6502_device_ldy_zpg_full(); break;
+       case 0xa5: m6502_device_lda_zpg_full(); break;
+       case 0xa6: m6502_device_ldx_zpg_full(); break;
+       case 0xa7: m6502_device_lax_zpg_full(); break;
+       case 0xa8: m6502_device_tay_imp_full(); break;
+       case 0xa9: m6502_device_lda_imm_full(); break;
+       case 0xaa: m6502_device_tax_imp_full(); break;
+       case 0xab: m6502_device_lxa_imm_full(); break;
+       case 0xac: m6502_device_ldy_aba_full(); break;
+       case 0xad: m6502_device_lda_aba_full(); break;
+       case 0xae: m6502_device_ldx_aba_full(); break;
+       case 0xaf: m6502_device_lax_aba_full(); break;
+       case 0xb0: m6502_device_bcs_rel_full(); break;
+       case 0xb1: m6502_device_lda_idy_full(); break;
+       case 0xb2: m6502_device_kil_non_full(); break;
+       case 0xb3: m6502_device_lax_idy_full(); break;
+       case 0xb4: m6502_device_ldy_zpx_full(); break;
+       case 0xb5: m6502_device_lda_zpx_full(); break;
+       case 0xb6: m6502_device_ldx_zpy_full(); break;
+       case 0xb7: m6502_device_lax_zpy_full(); break;
+       case 0xb8: m6502_device_clv_imp_full(); break;
+       case 0xb9: m6502_device_lda_aby_full(); break;
+       case 0xba: m6502_device_tsx_imp_full(); break;
+       case 0xbb: m6502_device_las_aby_full(); break;
+       case 0xbc: m6502_device_ldy_abx_full(); break;
+       case 0xbd: m6502_device_lda_abx_full(); break;
+       case 0xbe: m6502_device_ldx_aby_full(); break;
+       case 0xbf: m6502_device_lax_aby_full(); break;
+       case 0xc0: m6502_device_cpy_imm_full(); break;
+       case 0xc1: m6502_device_cmp_idx_full(); break;
+       case 0xc2: m6502_device_nop_imm_full(); break;
+       case 0xc3: m6502_device_dcp_idx_full(); break;
+       case 0xc4: m6502_device_cpy_zpg_full(); break;
+       case 0xc5: m6502_device_cmp_zpg_full(); break;
+       case 0xc6: m6502_device_dec_zpg_full(); break;
+       case 0xc7: m6502_device_dcp_zpg_full(); break;
+       case 0xc8: m6502_device_iny_imp_full(); break;
+       case 0xc9: m6502_device_cmp_imm_full(); break;
+       case 0xca: m6502_device_dex_imp_full(); break;
+       case 0xcb: m6502_device_sbx_imm_full(); break;
+       case 0xcc: m6502_device_cpy_aba_full(); break;
+       case 0xcd: m6502_device_cmp_aba_full(); break;
+       case 0xce: m6502_device_dec_aba_full(); break;
+       case 0xcf: m6502_device_dcp_aba_full(); break;
+       case 0xd0: m6502_device_bne_rel_full(); break;
+       case 0xd1: m6502_device_cmp_idy_full(); break;
+       case 0xd2: m6502_device_kil_non_full(); break;
+       case 0xd3: m6502_device_dcp_idy_full(); break;
+       case 0xd4: m6502_device_nop_zpx_full(); break;
+       case 0xd5: m6502_device_cmp_zpx_full(); break;
+       case 0xd6: m6502_device_dec_zpx_full(); break;
+       case 0xd7: m6502_device_dcp_zpx_full(); break;
+       case 0xd8: m6502_device_cld_imp_full(); break;
+       case 0xd9: m6502_device_cmp_aby_full(); break;
+       case 0xda: m6502_device_nop_imp_full(); break;
+       case 0xdb: m6502_device_dcp_aby_full(); break;
+       case 0xdc: m6502_device_nop_abx_full(); break;
+       case 0xdd: m6502_device_cmp_abx_full(); break;
+       case 0xde: m6502_device_dec_abx_full(); break;
+       case 0xdf: m6502_device_dcp_abx_full(); break;
+       case 0xe0: m6502_device_cpx_imm_full(); break;
+       case 0xe1: m6502_device_sbc_idx_full(); break;
+       case 0xe2: m6502_device_nop_imm_full(); break;
+       case 0xe3: m6502_device_isb_idx_full(); break;
+       case 0xe4: m6502_device_cpx_zpg_full(); break;
+       case 0xe5: m6502_device_sbc_zpg_full(); break;
+       case 0xe6: m6502_device_inc_zpg_full(); break;
+       case 0xe7: m6502_device_isb_zpg_full(); break;
+       case 0xe8: m6502_device_inx_imp_full(); break;
+       case 0xe9: m6502_device_sbc_imm_full(); break;
+       case 0xea: m6502_device_nop_imp_full(); break;
+       case 0xeb: m6502_device_sbc_imm_full(); break;
+       case 0xec: m6502_device_cpx_aba_full(); break;
+       case 0xed: m6502_device_sbc_aba_full(); break;
+       case 0xee: m6502_device_inc_aba_full(); break;
+       case 0xef: m6502_device_isb_aba_full(); break;
+       case 0xf0: m6502_device_beq_rel_full(); break;
+       case 0xf1: m6502_device_sbc_idy_full(); break;
+       case 0xf2: m6502_device_kil_non_full(); break;
+       case 0xf3: m6502_device_isb_idy_full(); break;
+       case 0xf4: m6502_device_nop_zpx_full(); break;
+       case 0xf5: m6502_device_sbc_zpx_full(); break;
+       case 0xf6: m6502_device_inc_zpx_full(); break;
+       case 0xf7: m6502_device_isb_zpx_full(); break;
+       case 0xf8: m6502_device_sed_imp_full(); break;
+       case 0xf9: m6502_device_sbc_aby_full(); break;
+       case 0xfa: m6502_device_nop_imp_full(); break;
+       case 0xfb: m6502_device_isb_aby_full(); break;
+       case 0xfc: m6502_device_nop_abx_full(); break;
+       case 0xfd: m6502_device_sbc_abx_full(); break;
+       case 0xfe: m6502_device_inc_abx_full(); break;
+       case 0xff: m6502_device_isb_abx_full(); break;
+       case STATE_RESET: m6502_device_reset_full(); break;
        }
 }
 
-void m6502_device::do_exec_partial()
+void m6502_device_do_exec_partial()
 {
        switch(inst_state) {
 
-       case 0x00: brk_imp_partial(); break;
-       case 0x01: ora_idx_partial(); break;
-       case 0x02: kil_non_partial(); break;
-       case 0x03: slo_idx_partial(); break;
-       case 0x04: nop_zpg_partial(); break;
-       case 0x05: ora_zpg_partial(); break;
-       case 0x06: asl_zpg_partial(); break;
-       case 0x07: slo_zpg_partial(); break;
-       case 0x08: php_imp_partial(); break;
-       case 0x09: ora_imm_partial(); break;
-       case 0x0a: asl_acc_partial(); break;
-       case 0x0b: anc_imm_partial(); break;
-       case 0x0c: nop_aba_partial(); break;
-       case 0x0d: ora_aba_partial(); break;
-       case 0x0e: asl_aba_partial(); break;
-       case 0x0f: slo_aba_partial(); break;
-       case 0x10: bpl_rel_partial(); break;
-       case 0x11: ora_idy_partial(); break;
-       case 0x12: kil_non_partial(); break;
-       case 0x13: slo_idy_partial(); break;
-       case 0x14: nop_zpx_partial(); break;
-       case 0x15: ora_zpx_partial(); break;
-       case 0x16: asl_zpx_partial(); break;
-       case 0x17: slo_zpx_partial(); break;
-       case 0x18: clc_imp_partial(); break;
-       case 0x19: ora_aby_partial(); break;
-       case 0x1a: nop_imp_partial(); break;
-       case 0x1b: slo_aby_partial(); break;
-       case 0x1c: nop_abx_partial(); break;
-       case 0x1d: ora_abx_partial(); break;
-       case 0x1e: asl_abx_partial(); break;
-       case 0x1f: slo_abx_partial(); break;
-       case 0x20: jsr_adr_partial(); break;
-       case 0x21: and_idx_partial(); break;
-       case 0x22: kil_non_partial(); break;
-       case 0x23: rla_idx_partial(); break;
-       case 0x24: bit_zpg_partial(); break;
-       case 0x25: and_zpg_partial(); break;
-       case 0x26: rol_zpg_partial(); break;
-       case 0x27: rla_zpg_partial(); break;
-       case 0x28: plp_imp_partial(); break;
-       case 0x29: and_imm_partial(); break;
-       case 0x2a: rol_acc_partial(); break;
-       case 0x2b: anc_imm_partial(); break;
-       case 0x2c: bit_aba_partial(); break;
-       case 0x2d: and_aba_partial(); break;
-       case 0x2e: rol_aba_partial(); break;
-       case 0x2f: rla_aba_partial(); break;
-       case 0x30: bmi_rel_partial(); break;
-       case 0x31: and_idy_partial(); break;
-       case 0x32: kil_non_partial(); break;
-       case 0x33: rla_idy_partial(); break;
-       case 0x34: nop_zpx_partial(); break;
-       case 0x35: and_zpx_partial(); break;
-       case 0x36: rol_zpx_partial(); break;
-       case 0x37: rla_zpx_partial(); break;
-       case 0x38: sec_imp_partial(); break;
-       case 0x39: and_aby_partial(); break;
-       case 0x3a: nop_imp_partial(); break;
-       case 0x3b: rla_aby_partial(); break;
-       case 0x3c: nop_abx_partial(); break;
-       case 0x3d: and_abx_partial(); break;
-       case 0x3e: rol_abx_partial(); break;
-       case 0x3f: rla_abx_partial(); break;
-       case 0x40: rti_imp_partial(); break;
-       case 0x41: eor_idx_partial(); break;
-       case 0x42: kil_non_partial(); break;
-       case 0x43: sre_idx_partial(); break;
-       case 0x44: nop_zpg_partial(); break;
-       case 0x45: eor_zpg_partial(); break;
-       case 0x46: lsr_zpg_partial(); break;
-       case 0x47: sre_zpg_partial(); break;
-       case 0x48: pha_imp_partial(); break;
-       case 0x49: eor_imm_partial(); break;
-       case 0x4a: lsr_acc_partial(); break;
-       case 0x4b: asr_imm_partial(); break;
-       case 0x4c: jmp_adr_partial(); break;
-       case 0x4d: eor_aba_partial(); break;
-       case 0x4e: lsr_aba_partial(); break;
-       case 0x4f: sre_aba_partial(); break;
-       case 0x50: bvc_rel_partial(); break;
-       case 0x51: eor_idy_partial(); break;
-       case 0x52: kil_non_partial(); break;
-       case 0x53: sre_idy_partial(); break;
-       case 0x54: nop_zpx_partial(); break;
-       case 0x55: eor_zpx_partial(); break;
-       case 0x56: lsr_zpx_partial(); break;
-       case 0x57: sre_zpx_partial(); break;
-       case 0x58: cli_imp_partial(); break;
-       case 0x59: eor_aby_partial(); break;
-       case 0x5a: nop_imp_partial(); break;
-       case 0x5b: sre_aby_partial(); break;
-       case 0x5c: nop_abx_partial(); break;
-       case 0x5d: eor_abx_partial(); break;
-       case 0x5e: lsr_abx_partial(); break;
-       case 0x5f: sre_abx_partial(); break;
-       case 0x60: rts_imp_partial(); break;
-       case 0x61: adc_idx_partial(); break;
-       case 0x62: kil_non_partial(); break;
-       case 0x63: rra_idx_partial(); break;
-       case 0x64: nop_zpg_partial(); break;
-       case 0x65: adc_zpg_partial(); break;
-       case 0x66: ror_zpg_partial(); break;
-       case 0x67: rra_zpg_partial(); break;
-       case 0x68: pla_imp_partial(); break;
-       case 0x69: adc_imm_partial(); break;
-       case 0x6a: ror_acc_partial(); break;
-       case 0x6b: arr_imm_partial(); break;
-       case 0x6c: jmp_ind_partial(); break;
-       case 0x6d: adc_aba_partial(); break;
-       case 0x6e: ror_aba_partial(); break;
-       case 0x6f: rra_aba_partial(); break;
-       case 0x70: bvs_rel_partial(); break;
-       case 0x71: adc_idy_partial(); break;
-       case 0x72: kil_non_partial(); break;
-       case 0x73: rra_idy_partial(); break;
-       case 0x74: nop_zpx_partial(); break;
-       case 0x75: adc_zpx_partial(); break;
-       case 0x76: ror_zpx_partial(); break;
-       case 0x77: rra_zpx_partial(); break;
-       case 0x78: sei_imp_partial(); break;
-       case 0x79: adc_aby_partial(); break;
-       case 0x7a: nop_imp_partial(); break;
-       case 0x7b: rra_aby_partial(); break;
-       case 0x7c: nop_abx_partial(); break;
-       case 0x7d: adc_abx_partial(); break;
-       case 0x7e: ror_abx_partial(); break;
-       case 0x7f: rra_abx_partial(); break;
-       case 0x80: nop_imm_partial(); break;
-       case 0x81: sta_idx_partial(); break;
-       case 0x82: nop_imm_partial(); break;
-       case 0x83: sax_idx_partial(); break;
-       case 0x84: sty_zpg_partial(); break;
-       case 0x85: sta_zpg_partial(); break;
-       case 0x86: stx_zpg_partial(); break;
-       case 0x87: sax_zpg_partial(); break;
-       case 0x88: dey_imp_partial(); break;
-       case 0x89: nop_imm_partial(); break;
-       case 0x8a: txa_imp_partial(); break;
-       case 0x8b: ane_imm_partial(); break;
-       case 0x8c: sty_aba_partial(); break;
-       case 0x8d: sta_aba_partial(); break;
-       case 0x8e: stx_aba_partial(); break;
-       case 0x8f: sax_aba_partial(); break;
-       case 0x90: bcc_rel_partial(); break;
-       case 0x91: sta_idy_partial(); break;
-       case 0x92: kil_non_partial(); break;
-       case 0x93: sha_idy_partial(); break;
-       case 0x94: sty_zpx_partial(); break;
-       case 0x95: sta_zpx_partial(); break;
-       case 0x96: stx_zpy_partial(); break;
-       case 0x97: sax_zpy_partial(); break;
-       case 0x98: tya_imp_partial(); break;
-       case 0x99: sta_aby_partial(); break;
-       case 0x9a: txs_imp_partial(); break;
-       case 0x9b: shs_aby_partial(); break;
-       case 0x9c: shy_abx_partial(); break;
-       case 0x9d: sta_abx_partial(); break;
-       case 0x9e: shx_aby_partial(); break;
-       case 0x9f: sha_aby_partial(); break;
-       case 0xa0: ldy_imm_partial(); break;
-       case 0xa1: lda_idx_partial(); break;
-       case 0xa2: ldx_imm_partial(); break;
-       case 0xa3: lax_idx_partial(); break;
-       case 0xa4: ldy_zpg_partial(); break;
-       case 0xa5: lda_zpg_partial(); break;
-       case 0xa6: ldx_zpg_partial(); break;
-       case 0xa7: lax_zpg_partial(); break;
-       case 0xa8: tay_imp_partial(); break;
-       case 0xa9: lda_imm_partial(); break;
-       case 0xaa: tax_imp_partial(); break;
-       case 0xab: lxa_imm_partial(); break;
-       case 0xac: ldy_aba_partial(); break;
-       case 0xad: lda_aba_partial(); break;
-       case 0xae: ldx_aba_partial(); break;
-       case 0xaf: lax_aba_partial(); break;
-       case 0xb0: bcs_rel_partial(); break;
-       case 0xb1: lda_idy_partial(); break;
-       case 0xb2: kil_non_partial(); break;
-       case 0xb3: lax_idy_partial(); break;
-       case 0xb4: ldy_zpx_partial(); break;
-       case 0xb5: lda_zpx_partial(); break;
-       case 0xb6: ldx_zpy_partial(); break;
-       case 0xb7: lax_zpy_partial(); break;
-       case 0xb8: clv_imp_partial(); break;
-       case 0xb9: lda_aby_partial(); break;
-       case 0xba: tsx_imp_partial(); break;
-       case 0xbb: las_aby_partial(); break;
-       case 0xbc: ldy_abx_partial(); break;
-       case 0xbd: lda_abx_partial(); break;
-       case 0xbe: ldx_aby_partial(); break;
-       case 0xbf: lax_aby_partial(); break;
-       case 0xc0: cpy_imm_partial(); break;
-       case 0xc1: cmp_idx_partial(); break;
-       case 0xc2: nop_imm_partial(); break;
-       case 0xc3: dcp_idx_partial(); break;
-       case 0xc4: cpy_zpg_partial(); break;
-       case 0xc5: cmp_zpg_partial(); break;
-       case 0xc6: dec_zpg_partial(); break;
-       case 0xc7: dcp_zpg_partial(); break;
-       case 0xc8: iny_imp_partial(); break;
-       case 0xc9: cmp_imm_partial(); break;
-       case 0xca: dex_imp_partial(); break;
-       case 0xcb: sbx_imm_partial(); break;
-       case 0xcc: cpy_aba_partial(); break;
-       case 0xcd: cmp_aba_partial(); break;
-       case 0xce: dec_aba_partial(); break;
-       case 0xcf: dcp_aba_partial(); break;
-       case 0xd0: bne_rel_partial(); break;
-       case 0xd1: cmp_idy_partial(); break;
-       case 0xd2: kil_non_partial(); break;
-       case 0xd3: dcp_idy_partial(); break;
-       case 0xd4: nop_zpx_partial(); break;
-       case 0xd5: cmp_zpx_partial(); break;
-       case 0xd6: dec_zpx_partial(); break;
-       case 0xd7: dcp_zpx_partial(); break;
-       case 0xd8: cld_imp_partial(); break;
-       case 0xd9: cmp_aby_partial(); break;
-       case 0xda: nop_imp_partial(); break;
-       case 0xdb: dcp_aby_partial(); break;
-       case 0xdc: nop_abx_partial(); break;
-       case 0xdd: cmp_abx_partial(); break;
-       case 0xde: dec_abx_partial(); break;
-       case 0xdf: dcp_abx_partial(); break;
-       case 0xe0: cpx_imm_partial(); break;
-       case 0xe1: sbc_idx_partial(); break;
-       case 0xe2: nop_imm_partial(); break;
-       case 0xe3: isb_idx_partial(); break;
-       case 0xe4: cpx_zpg_partial(); break;
-       case 0xe5: sbc_zpg_partial(); break;
-       case 0xe6: inc_zpg_partial(); break;
-       case 0xe7: isb_zpg_partial(); break;
-       case 0xe8: inx_imp_partial(); break;
-       case 0xe9: sbc_imm_partial(); break;
-       case 0xea: nop_imp_partial(); break;
-       case 0xeb: sbc_imm_partial(); break;
-       case 0xec: cpx_aba_partial(); break;
-       case 0xed: sbc_aba_partial(); break;
-       case 0xee: inc_aba_partial(); break;
-       case 0xef: isb_aba_partial(); break;
-       case 0xf0: beq_rel_partial(); break;
-       case 0xf1: sbc_idy_partial(); break;
-       case 0xf2: kil_non_partial(); break;
-       case 0xf3: isb_idy_partial(); break;
-       case 0xf4: nop_zpx_partial(); break;
-       case 0xf5: sbc_zpx_partial(); break;
-       case 0xf6: inc_zpx_partial(); break;
-       case 0xf7: isb_zpx_partial(); break;
-       case 0xf8: sed_imp_partial(); break;
-       case 0xf9: sbc_aby_partial(); break;
-       case 0xfa: nop_imp_partial(); break;
-       case 0xfb: isb_aby_partial(); break;
-       case 0xfc: nop_abx_partial(); break;
-       case 0xfd: sbc_abx_partial(); break;
-       case 0xfe: inc_abx_partial(); break;
-       case 0xff: isb_abx_partial(); break;
-       case STATE_RESET: reset_partial(); break;
+       case 0x00: m6502_device_brk_imp_partial(); break;
+       case 0x01: m6502_device_ora_idx_partial(); break;
+       case 0x02: m6502_device_kil_non_partial(); break;
+       case 0x03: m6502_device_slo_idx_partial(); break;
+       case 0x04: m6502_device_nop_zpg_partial(); break;
+       case 0x05: m6502_device_ora_zpg_partial(); break;
+       case 0x06: m6502_device_asl_zpg_partial(); break;
+       case 0x07: m6502_device_slo_zpg_partial(); break;
+       case 0x08: m6502_device_php_imp_partial(); break;
+       case 0x09: m6502_device_ora_imm_partial(); break;
+       case 0x0a: m6502_device_asl_acc_partial(); break;
+       case 0x0b: m6502_device_anc_imm_partial(); break;
+       case 0x0c: m6502_device_nop_aba_partial(); break;
+       case 0x0d: m6502_device_ora_aba_partial(); break;
+       case 0x0e: m6502_device_asl_aba_partial(); break;
+       case 0x0f: m6502_device_slo_aba_partial(); break;
+       case 0x10: m6502_device_bpl_rel_partial(); break;
+       case 0x11: m6502_device_ora_idy_partial(); break;
+       case 0x12: m6502_device_kil_non_partial(); break;
+       case 0x13: m6502_device_slo_idy_partial(); break;
+       case 0x14: m6502_device_nop_zpx_partial(); break;
+       case 0x15: m6502_device_ora_zpx_partial(); break;
+       case 0x16: m6502_device_asl_zpx_partial(); break;
+       case 0x17: m6502_device_slo_zpx_partial(); break;
+       case 0x18: m6502_device_clc_imp_partial(); break;
+       case 0x19: m6502_device_ora_aby_partial(); break;
+       case 0x1a: m6502_device_nop_imp_partial(); break;
+       case 0x1b: m6502_device_slo_aby_partial(); break;
+       case 0x1c: m6502_device_nop_abx_partial(); break;
+       case 0x1d: m6502_device_ora_abx_partial(); break;
+       case 0x1e: m6502_device_asl_abx_partial(); break;
+       case 0x1f: m6502_device_slo_abx_partial(); break;
+       case 0x20: m6502_device_jsr_adr_partial(); break;
+       case 0x21: m6502_device_and_idx_partial(); break;
+       case 0x22: m6502_device_kil_non_partial(); break;
+       case 0x23: m6502_device_rla_idx_partial(); break;
+       case 0x24: m6502_device_bit_zpg_partial(); break;
+       case 0x25: m6502_device_and_zpg_partial(); break;
+       case 0x26: m6502_device_rol_zpg_partial(); break;
+       case 0x27: m6502_device_rla_zpg_partial(); break;
+       case 0x28: m6502_device_plp_imp_partial(); break;
+       case 0x29: m6502_device_and_imm_partial(); break;
+       case 0x2a: m6502_device_rol_acc_partial(); break;
+       case 0x2b: m6502_device_anc_imm_partial(); break;
+       case 0x2c: m6502_device_bit_aba_partial(); break;
+       case 0x2d: m6502_device_and_aba_partial(); break;
+       case 0x2e: m6502_device_rol_aba_partial(); break;
+       case 0x2f: m6502_device_rla_aba_partial(); break;
+       case 0x30: m6502_device_bmi_rel_partial(); break;
+       case 0x31: m6502_device_and_idy_partial(); break;
+       case 0x32: m6502_device_kil_non_partial(); break;
+       case 0x33: m6502_device_rla_idy_partial(); break;
+       case 0x34: m6502_device_nop_zpx_partial(); break;
+       case 0x35: m6502_device_and_zpx_partial(); break;
+       case 0x36: m6502_device_rol_zpx_partial(); break;
+       case 0x37: m6502_device_rla_zpx_partial(); break;
+       case 0x38: m6502_device_sec_imp_partial(); break;
+       case 0x39: m6502_device_and_aby_partial(); break;
+       case 0x3a: m6502_device_nop_imp_partial(); break;
+       case 0x3b: m6502_device_rla_aby_partial(); break;
+       case 0x3c: m6502_device_nop_abx_partial(); break;
+       case 0x3d: m6502_device_and_abx_partial(); break;
+       case 0x3e: m6502_device_rol_abx_partial(); break;
+       case 0x3f: m6502_device_rla_abx_partial(); break;
+       case 0x40: m6502_device_rti_imp_partial(); break;
+       case 0x41: m6502_device_eor_idx_partial(); break;
+       case 0x42: m6502_device_kil_non_partial(); break;
+       case 0x43: m6502_device_sre_idx_partial(); break;
+       case 0x44: m6502_device_nop_zpg_partial(); break;
+       case 0x45: m6502_device_eor_zpg_partial(); break;
+       case 0x46: m6502_device_lsr_zpg_partial(); break;
+       case 0x47: m6502_device_sre_zpg_partial(); break;
+       case 0x48: m6502_device_pha_imp_partial(); break;
+       case 0x49: m6502_device_eor_imm_partial(); break;
+       case 0x4a: m6502_device_lsr_acc_partial(); break;
+       case 0x4b: m6502_device_asr_imm_partial(); break;
+       case 0x4c: m6502_device_jmp_adr_partial(); break;
+       case 0x4d: m6502_device_eor_aba_partial(); break;
+       case 0x4e: m6502_device_lsr_aba_partial(); break;
+       case 0x4f: m6502_device_sre_aba_partial(); break;
+       case 0x50: m6502_device_bvc_rel_partial(); break;
+       case 0x51: m6502_device_eor_idy_partial(); break;
+       case 0x52: m6502_device_kil_non_partial(); break;
+       case 0x53: m6502_device_sre_idy_partial(); break;
+       case 0x54: m6502_device_nop_zpx_partial(); break;
+       case 0x55: m6502_device_eor_zpx_partial(); break;
+       case 0x56: m6502_device_lsr_zpx_partial(); break;
+       case 0x57: m6502_device_sre_zpx_partial(); break;
+       case 0x58: m6502_device_cli_imp_partial(); break;
+       case 0x59: m6502_device_eor_aby_partial(); break;
+       case 0x5a: m6502_device_nop_imp_partial(); break;
+       case 0x5b: m6502_device_sre_aby_partial(); break;
+       case 0x5c: m6502_device_nop_abx_partial(); break;
+       case 0x5d: m6502_device_eor_abx_partial(); break;
+       case 0x5e: m6502_device_lsr_abx_partial(); break;
+       case 0x5f: m6502_device_sre_abx_partial(); break;
+       case 0x60: m6502_device_rts_imp_partial(); break;
+       case 0x61: m6502_device_adc_idx_partial(); break;
+       case 0x62: m6502_device_kil_non_partial(); break;
+       case 0x63: m6502_device_rra_idx_partial(); break;
+       case 0x64: m6502_device_nop_zpg_partial(); break;
+       case 0x65: m6502_device_adc_zpg_partial(); break;
+       case 0x66: m6502_device_ror_zpg_partial(); break;
+       case 0x67: m6502_device_rra_zpg_partial(); break;
+       case 0x68: m6502_device_pla_imp_partial(); break;
+       case 0x69: m6502_device_adc_imm_partial(); break;
+       case 0x6a: m6502_device_ror_acc_partial(); break;
+       case 0x6b: m6502_device_arr_imm_partial(); break;
+       case 0x6c: m6502_device_jmp_ind_partial(); break;
+       case 0x6d: m6502_device_adc_aba_partial(); break;
+       case 0x6e: m6502_device_ror_aba_partial(); break;
+       case 0x6f: m6502_device_rra_aba_partial(); break;
+       case 0x70: m6502_device_bvs_rel_partial(); break;
+       case 0x71: m6502_device_adc_idy_partial(); break;
+       case 0x72: m6502_device_kil_non_partial(); break;
+       case 0x73: m6502_device_rra_idy_partial(); break;
+       case 0x74: m6502_device_nop_zpx_partial(); break;
+       case 0x75: m6502_device_adc_zpx_partial(); break;
+       case 0x76: m6502_device_ror_zpx_partial(); break;
+       case 0x77: m6502_device_rra_zpx_partial(); break;
+       case 0x78: m6502_device_sei_imp_partial(); break;
+       case 0x79: m6502_device_adc_aby_partial(); break;
+       case 0x7a: m6502_device_nop_imp_partial(); break;
+       case 0x7b: m6502_device_rra_aby_partial(); break;
+       case 0x7c: m6502_device_nop_abx_partial(); break;
+       case 0x7d: m6502_device_adc_abx_partial(); break;
+       case 0x7e: m6502_device_ror_abx_partial(); break;
+       case 0x7f: m6502_device_rra_abx_partial(); break;
+       case 0x80: m6502_device_nop_imm_partial(); break;
+       case 0x81: m6502_device_sta_idx_partial(); break;
+       case 0x82: m6502_device_nop_imm_partial(); break;
+       case 0x83: m6502_device_sax_idx_partial(); break;
+       case 0x84: m6502_device_sty_zpg_partial(); break;
+       case 0x85: m6502_device_sta_zpg_partial(); break;
+       case 0x86: m6502_device_stx_zpg_partial(); break;
+       case 0x87: m6502_device_sax_zpg_partial(); break;
+       case 0x88: m6502_device_dey_imp_partial(); break;
+       case 0x89: m6502_device_nop_imm_partial(); break;
+       case 0x8a: m6502_device_txa_imp_partial(); break;
+       case 0x8b: m6502_device_ane_imm_partial(); break;
+       case 0x8c: m6502_device_sty_aba_partial(); break;
+       case 0x8d: m6502_device_sta_aba_partial(); break;
+       case 0x8e: m6502_device_stx_aba_partial(); break;
+       case 0x8f: m6502_device_sax_aba_partial(); break;
+       case 0x90: m6502_device_bcc_rel_partial(); break;
+       case 0x91: m6502_device_sta_idy_partial(); break;
+       case 0x92: m6502_device_kil_non_partial(); break;
+       case 0x93: m6502_device_sha_idy_partial(); break;
+       case 0x94: m6502_device_sty_zpx_partial(); break;
+       case 0x95: m6502_device_sta_zpx_partial(); break;
+       case 0x96: m6502_device_stx_zpy_partial(); break;
+       case 0x97: m6502_device_sax_zpy_partial(); break;
+       case 0x98: m6502_device_tya_imp_partial(); break;
+       case 0x99: m6502_device_sta_aby_partial(); break;
+       case 0x9a: m6502_device_txs_imp_partial(); break;
+       case 0x9b: m6502_device_shs_aby_partial(); break;
+       case 0x9c: m6502_device_shy_abx_partial(); break;
+       case 0x9d: m6502_device_sta_abx_partial(); break;
+       case 0x9e: m6502_device_shx_aby_partial(); break;
+       case 0x9f: m6502_device_sha_aby_partial(); break;
+       case 0xa0: m6502_device_ldy_imm_partial(); break;
+       case 0xa1: m6502_device_lda_idx_partial(); break;
+       case 0xa2: m6502_device_ldx_imm_partial(); break;
+       case 0xa3: m6502_device_lax_idx_partial(); break;
+       case 0xa4: m6502_device_ldy_zpg_partial(); break;
+       case 0xa5: m6502_device_lda_zpg_partial(); break;
+       case 0xa6: m6502_device_ldx_zpg_partial(); break;
+       case 0xa7: m6502_device_lax_zpg_partial(); break;
+       case 0xa8: m6502_device_tay_imp_partial(); break;
+       case 0xa9: m6502_device_lda_imm_partial(); break;
+       case 0xaa: m6502_device_tax_imp_partial(); break;
+       case 0xab: m6502_device_lxa_imm_partial(); break;
+       case 0xac: m6502_device_ldy_aba_partial(); break;
+       case 0xad: m6502_device_lda_aba_partial(); break;
+       case 0xae: m6502_device_ldx_aba_partial(); break;
+       case 0xaf: m6502_device_lax_aba_partial(); break;
+       case 0xb0: m6502_device_bcs_rel_partial(); break;
+       case 0xb1: m6502_device_lda_idy_partial(); break;
+       case 0xb2: m6502_device_kil_non_partial(); break;
+       case 0xb3: m6502_device_lax_idy_partial(); break;
+       case 0xb4: m6502_device_ldy_zpx_partial(); break;
+       case 0xb5: m6502_device_lda_zpx_partial(); break;
+       case 0xb6: m6502_device_ldx_zpy_partial(); break;
+       case 0xb7: m6502_device_lax_zpy_partial(); break;
+       case 0xb8: m6502_device_clv_imp_partial(); break;
+       case 0xb9: m6502_device_lda_aby_partial(); break;
+       case 0xba: m6502_device_tsx_imp_partial(); break;
+       case 0xbb: m6502_device_las_aby_partial(); break;
+       case 0xbc: m6502_device_ldy_abx_partial(); break;
+       case 0xbd: m6502_device_lda_abx_partial(); break;
+       case 0xbe: m6502_device_ldx_aby_partial(); break;
+       case 0xbf: m6502_device_lax_aby_partial(); break;
+       case 0xc0: m6502_device_cpy_imm_partial(); break;
+       case 0xc1: m6502_device_cmp_idx_partial(); break;
+       case 0xc2: m6502_device_nop_imm_partial(); break;
+       case 0xc3: m6502_device_dcp_idx_partial(); break;
+       case 0xc4: m6502_device_cpy_zpg_partial(); break;
+       case 0xc5: m6502_device_cmp_zpg_partial(); break;
+       case 0xc6: m6502_device_dec_zpg_partial(); break;
+       case 0xc7: m6502_device_dcp_zpg_partial(); break;
+       case 0xc8: m6502_device_iny_imp_partial(); break;
+       case 0xc9: m6502_device_cmp_imm_partial(); break;
+       case 0xca: m6502_device_dex_imp_partial(); break;
+       case 0xcb: m6502_device_sbx_imm_partial(); break;
+       case 0xcc: m6502_device_cpy_aba_partial(); break;
+       case 0xcd: m6502_device_cmp_aba_partial(); break;
+       case 0xce: m6502_device_dec_aba_partial(); break;
+       case 0xcf: m6502_device_dcp_aba_partial(); break;
+       case 0xd0: m6502_device_bne_rel_partial(); break;
+       case 0xd1: m6502_device_cmp_idy_partial(); break;
+       case 0xd2: m6502_device_kil_non_partial(); break;
+       case 0xd3: m6502_device_dcp_idy_partial(); break;
+       case 0xd4: m6502_device_nop_zpx_partial(); break;
+       case 0xd5: m6502_device_cmp_zpx_partial(); break;
+       case 0xd6: m6502_device_dec_zpx_partial(); break;
+       case 0xd7: m6502_device_dcp_zpx_partial(); break;
+       case 0xd8: m6502_device_cld_imp_partial(); break;
+       case 0xd9: m6502_device_cmp_aby_partial(); break;
+       case 0xda: m6502_device_nop_imp_partial(); break;
+       case 0xdb: m6502_device_dcp_aby_partial(); break;
+       case 0xdc: m6502_device_nop_abx_partial(); break;
+       case 0xdd: m6502_device_cmp_abx_partial(); break;
+       case 0xde: m6502_device_dec_abx_partial(); break;
+       case 0xdf: m6502_device_dcp_abx_partial(); break;
+       case 0xe0: m6502_device_cpx_imm_partial(); break;
+       case 0xe1: m6502_device_sbc_idx_partial(); break;
+       case 0xe2: m6502_device_nop_imm_partial(); break;
+       case 0xe3: m6502_device_isb_idx_partial(); break;
+       case 0xe4: m6502_device_cpx_zpg_partial(); break;
+       case 0xe5: m6502_device_sbc_zpg_partial(); break;
+       case 0xe6: m6502_device_inc_zpg_partial(); break;
+       case 0xe7: m6502_device_isb_zpg_partial(); break;
+       case 0xe8: m6502_device_inx_imp_partial(); break;
+       case 0xe9: m6502_device_sbc_imm_partial(); break;
+       case 0xea: m6502_device_nop_imp_partial(); break;
+       case 0xeb: m6502_device_sbc_imm_partial(); break;
+       case 0xec: m6502_device_cpx_aba_partial(); break;
+       case 0xed: m6502_device_sbc_aba_partial(); break;
+       case 0xee: m6502_device_inc_aba_partial(); break;
+       case 0xef: m6502_device_isb_aba_partial(); break;
+       case 0xf0: m6502_device_beq_rel_partial(); break;
+       case 0xf1: m6502_device_sbc_idy_partial(); break;
+       case 0xf2: m6502_device_kil_non_partial(); break;
+       case 0xf3: m6502_device_isb_idy_partial(); break;
+       case 0xf4: m6502_device_nop_zpx_partial(); break;
+       case 0xf5: m6502_device_sbc_zpx_partial(); break;
+       case 0xf6: m6502_device_inc_zpx_partial(); break;
+       case 0xf7: m6502_device_isb_zpx_partial(); break;
+       case 0xf8: m6502_device_sed_imp_partial(); break;
+       case 0xf9: m6502_device_sbc_aby_partial(); break;
+       case 0xfa: m6502_device_nop_imp_partial(); break;
+       case 0xfb: m6502_device_isb_aby_partial(); break;
+       case 0xfc: m6502_device_nop_abx_partial(); break;
+       case 0xfd: m6502_device_sbc_abx_partial(); break;
+       case 0xfe: m6502_device_inc_abx_partial(); break;
+       case 0xff: m6502_device_isb_abx_partial(); break;
+       case STATE_RESET: m6502_device_reset_partial(); break;
        }
 }
 
diff --git a/m6502/m6502d.c b/m6502/m6502d.c
new file mode 100644 (file)
index 0000000..87ad0d6
--- /dev/null
@@ -0,0 +1,198 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+/***************************************************************************
+
+    m6502d.cpp
+
+    MOS Technology 6502, original NMOS variant, disassembler
+
+***************************************************************************/
+
+#include "emu.h"
+#include "m6502d.h"
+#include "m6502d.inc"
+
+//m6502_base_disassembler_m6502_base_disassembler(const disasm_entry *_table) : table(_table)
+//{
+//}
+
+u32 m6502_base_disassembler_get_instruction_bank() /*const*/
+{
+       return 0;
+}
+
+u32 m6502_base_disassembler_opcode_alignment() /*const*/
+{
+       return 1;
+}
+
+offs_t m6502_base_disassembler_disassemble(FILE *stream, offs_t pc/*, const data_buffer &opcodes, const data_buffer &params*/)
+{
+       const m6502_base_disassembler_disasm_entry *e = table + (opcodes_r8(pc) | m6502_base_disassembler_get_instruction_bank());
+       uint32_t flags = e->flags | SUPPORTED;
+       fprintf(stream, "%s", e->opcode);
+
+       switch(e->mode) {
+       case DASM_non:
+               flags |= 1;
+               break;
+
+       case DASM_aba:
+               fprintf(stream, " $%02x%02x", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_abx:
+               fprintf(stream, " $%02x%02x, x", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_aby:
+               fprintf(stream, " $%02x%02x, y", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_acc:
+               fprintf(stream, " a");
+               flags |= 1;
+               break;
+
+       case DASM_adr:
+               fprintf(stream, " $%02x%02x", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_bzp:
+               fprintf(stream, "%d $%02x", (opcodes_r8(pc) >> 4) & 7, params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_iax:
+               fprintf(stream, " ($%02x%02x, x)", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_idx:
+               fprintf(stream, " ($%02x, x)", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_idy:
+               fprintf(stream, " ($%02x), y", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_idz:
+               fprintf(stream, " ($%02x), z", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_imm:
+               fprintf(stream, " #$%02x", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_imp:
+               flags |= 1;
+               break;
+
+       case DASM_ind:
+               fprintf(stream, " ($%02x%02x)", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_isy:
+               fprintf(stream, " ($%02x, s), y", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_iw2:
+               fprintf(stream, " #$%02x%02x", params_r8(pc+2), params_r8(pc+1));
+               flags |= 3;
+               break;
+
+       case DASM_iw3:
+               fprintf(stream, " #$%02x%02x%02x", params_r8(pc+3), params_r8(pc+2), params_r8(pc+1));
+               flags |= 4;
+               break;
+
+       case DASM_rel:
+               fprintf(stream, " $%04x", (pc & 0xf0000) | (uint16_t)(pc + 2 + (int8_t)(params_r8(pc+1))));
+               flags |= 2;
+               break;
+
+       case DASM_rw2:
+               fprintf(stream, " $%04x", (pc & 0xf0000) | (uint16_t)(pc + 2 + (int16_t)((params_r8(pc+2) << 8) | params_r8(pc+1))));
+               flags |= 3;
+               break;
+
+       case DASM_zpb:
+               fprintf(stream, "%d $%02x, $%04x", (opcodes_r8(pc) >> 4) & 7, params_r8(pc+1), (pc & 0xf0000) | (uint16_t)(pc + 3 + (int8_t)(params_r8(pc+2))));
+               flags |= 3;
+               break;
+
+       case DASM_zpg:
+               fprintf(stream, " $%02x", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_zpi:
+               fprintf(stream, " ($%02x)", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_zpx:
+               fprintf(stream, " $%02x, x", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_zpy:
+               fprintf(stream, " $%02x, y", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_imz:
+               fprintf(stream, " #$%02x, $%02x", params_r8(pc+1), params_r8(pc+2));
+               flags |= 3;
+               break;
+
+       case DASM_spg:
+               fprintf(stream, " \\$%02x", params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_biz:
+               fprintf(stream, " %d, $%02x", (opcodes_r8(pc) >> 5) & 7, params_r8(pc+1));
+               flags |= 2;
+               break;
+
+       case DASM_bzr:
+               fprintf(stream, " %d, $%02x, $%04x", (opcodes_r8(pc) >> 5) & 7, params_r8(pc+1), (pc & 0xf0000) | (uint16_t)(pc + 3 + (int8_t)(params_r8(pc+2))));
+               flags |= 3;
+               break;
+
+       case DASM_bar:
+               fprintf(stream, " %d, a, $%04x", (opcodes_r8(pc) >> 5) & 7, (pc & 0xf0000) | (uint16_t)(pc + 3 + (int8_t)(params_r8(pc+1))));
+               flags |= 2;
+               break;
+
+       case DASM_bac:
+               fprintf(stream, " %d, a", (opcodes_r8(pc) >> 5) & 7);
+               flags |= 1;
+               break;
+
+       case DASM_xa3:
+               fprintf(stream, " #$%02x%02x%02x", params_r8(pc+1), params_r8(pc+3), params_r8(pc+2));
+               flags |= 4;
+               break;
+
+       default:
+               fprintf(stderr, "Unhandled dasm mode %d\n", e->mode);
+               abort();
+       }
+       return flags;
+}
+
+//m6502_disassembler_m6502_disassembler() : m6502_base_disassembler_m6502_base_disassembler(disasm_entries)
+//{
+//}
diff --git a/m6502/m6502d.cpp b/m6502/m6502d.cpp
deleted file mode 100644 (file)
index 589aafd..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-/***************************************************************************
-
-    m6502d.cpp
-
-    MOS Technology 6502, original NMOS variant, disassembler
-
-***************************************************************************/
-
-#include "emu.h"
-#include "m6502d.h"
-#include "cpu/m6502/m6502d.hxx"
-
-m6502_base_disassembler::m6502_base_disassembler(const disasm_entry *_table) : table(_table)
-{
-}
-
-u32 m6502_base_disassembler::get_instruction_bank() const
-{
-       return 0;
-}
-
-u32 m6502_base_disassembler::opcode_alignment() const
-{
-       return 1;
-}
-
-offs_t m6502_base_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params)
-{
-       const disasm_entry &e = table[opcodes.r8(pc) | get_instruction_bank()];
-       uint32_t flags = e.flags | SUPPORTED;
-       util::stream_format(stream, "%s", e.opcode);
-
-       switch(e.mode) {
-       case DASM_non:
-               flags |= 1;
-               break;
-
-       case DASM_aba:
-               util::stream_format(stream, " $%02x%02x", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_abx:
-               util::stream_format(stream, " $%02x%02x, x", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_aby:
-               util::stream_format(stream, " $%02x%02x, y", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_acc:
-               util::stream_format(stream, " a");
-               flags |= 1;
-               break;
-
-       case DASM_adr:
-               util::stream_format(stream, " $%02x%02x", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_bzp:
-               util::stream_format(stream, "%d $%02x", (opcodes.r8(pc) >> 4) & 7, params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_iax:
-               util::stream_format(stream, " ($%02x%02x, x)", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_idx:
-               util::stream_format(stream, " ($%02x, x)", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_idy:
-               util::stream_format(stream, " ($%02x), y", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_idz:
-               util::stream_format(stream, " ($%02x), z", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_imm:
-               util::stream_format(stream, " #$%02x", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_imp:
-               flags |= 1;
-               break;
-
-       case DASM_ind:
-               util::stream_format(stream, " ($%02x%02x)", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_isy:
-               util::stream_format(stream, " ($%02x, s), y", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_iw2:
-               util::stream_format(stream, " #$%02x%02x", params.r8(pc+2), params.r8(pc+1));
-               flags |= 3;
-               break;
-
-       case DASM_iw3:
-               util::stream_format(stream, " #$%02x%02x%02x", params.r8(pc+3), params.r8(pc+2), params.r8(pc+1));
-               flags |= 4;
-               break;
-
-       case DASM_rel:
-               util::stream_format(stream, " $%04x", (pc & 0xf0000) | uint16_t(pc + 2 + int8_t(params.r8(pc+1))));
-               flags |= 2;
-               break;
-
-       case DASM_rw2:
-               util::stream_format(stream, " $%04x", (pc & 0xf0000) | uint16_t(pc + 2 + int16_t((params.r8(pc+2) << 8) | params.r8(pc+1))));
-               flags |= 3;
-               break;
-
-       case DASM_zpb:
-               util::stream_format(stream, "%d $%02x, $%04x", (opcodes.r8(pc) >> 4) & 7, params.r8(pc+1), (pc & 0xf0000) | uint16_t(pc + 3 + int8_t(params.r8(pc+2))));
-               flags |= 3;
-               break;
-
-       case DASM_zpg:
-               util::stream_format(stream, " $%02x", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_zpi:
-               util::stream_format(stream, " ($%02x)", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_zpx:
-               util::stream_format(stream, " $%02x, x", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_zpy:
-               util::stream_format(stream, " $%02x, y", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_imz:
-               util::stream_format(stream, " #$%02x, $%02x", params.r8(pc+1), params.r8(pc+2));
-               flags |= 3;
-               break;
-
-       case DASM_spg:
-               util::stream_format(stream, " \\$%02x", params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_biz:
-               util::stream_format(stream, " %d, $%02x", (opcodes.r8(pc) >> 5) & 7, params.r8(pc+1));
-               flags |= 2;
-               break;
-
-       case DASM_bzr:
-               util::stream_format(stream, " %d, $%02x, $%04x", (opcodes.r8(pc) >> 5) & 7, params.r8(pc+1), (pc & 0xf0000) | uint16_t(pc + 3 + int8_t(params.r8(pc+2))));
-               flags |= 3;
-               break;
-
-       case DASM_bar:
-               util::stream_format(stream, " %d, a, $%04x", (opcodes.r8(pc) >> 5) & 7, (pc & 0xf0000) | uint16_t(pc + 3 + int8_t(params.r8(pc+1))));
-               flags |= 2;
-               break;
-
-       case DASM_bac:
-               util::stream_format(stream, " %d, a", (opcodes.r8(pc) >> 5) & 7);
-               flags |= 1;
-               break;
-
-       case DASM_xa3:
-               util::stream_format(stream, " #$%02x%02x%02x", params.r8(pc+1), params.r8(pc+3), params.r8(pc+2));
-               flags |= 4;
-               break;
-
-       default:
-               fprintf(stderr, "Unhandled dasm mode %d\n", e.mode);
-               abort();
-       }
-       return flags;
-}
-
-m6502_disassembler::m6502_disassembler() : m6502_base_disassembler(disasm_entries)
-{
-}
index 5a02ddd..046a4e9 100644 (file)
 
 #pragma once
 
-class m6502_base_disassembler : public util::disasm_interface
-{
-public:
-       struct disasm_entry {
+#include <stdio.h>
+
+//class m6502_base_disassembler : public util_disasm_interface
+//{
+//public:
+       typedef struct m6502_base_disassembler_disasm_entry {
                const char *opcode;
                int mode;
                offs_t flags;
-       };
+       } m6502_base_disassembler_disasm_entry;
 
-       m6502_base_disassembler(const disasm_entry *table);
-       virtual ~m6502_base_disassembler() = default;
+//     m6502_base_disassembler_m6502_base_disassembler(const disasm_entry *table);
+//     /*virtual*/ ~m6502_base_disassembler_m6502_base_disassembler() = default;
 
-       virtual u32 opcode_alignment() const override;
-       virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params) override;
+       /*virtual*/ u32 m6502_base_disassembler_opcode_alignment() /*const*/ /*override*/;
+       /*virtual*/ offs_t m6502_base_disassembler_disassemble(FILE *stream, offs_t pc/*, const data_buffer &opcodes, const data_buffer &params*/) /*override*/;
 
-protected:
+//protected:
        enum {
                DASM_non,    /* no additional arguments */
                DASM_aba,    /* absolute */
@@ -63,20 +65,20 @@ protected:
                DASM_xa3     /* unknown XaviX opcode, 24-bit ROM pointer? */
        };
 
-       virtual u32 get_instruction_bank() const;
-
-private:
-       const disasm_entry *table;
-};
-
-class m6502_disassembler : public m6502_base_disassembler
-{
-public:
-       m6502_disassembler();
-       virtual ~m6502_disassembler() = default;
+       /*virtual*/ u32 m6502_base_disassembler_get_instruction_bank() /*const*/;
 
-private:
-       static const disasm_entry disasm_entries[0x100];
-};
+//private:
+       const m6502_base_disassembler_disasm_entry *table;
+//};
+//
+//class m6502_disassembler : public m6502_base_disassembler
+//{
+//public:
+//     m6502_disassembler_m6502_disassembler();
+//     /*virtual*/ ~m6502_disassembler_m6502_disassembler() = default;
+//
+//private:
+       /*static*/ const m6502_base_disassembler_disasm_entry m6502_disassembler_disasm_entries[0x100];
+//};
 
 #endif
similarity index 98%
rename from m6502/m6502d.hxx
rename to m6502/m6502d.inc
index 07b6b93..97fa910 100644 (file)
@@ -1,4 +1,4 @@
-const m6502_disassembler::disasm_entry m6502_disassembler::disasm_entries[0x100] = {
+const m6502_base_disassembler_disasm_entry m6502_disassembler_disasm_entries[0x100] = {
 
        { "brk", DASM_imp, 0 },
        { "ora", DASM_idx, 0 },
index ea51fe4..297b064 100755 (executable)
@@ -59,7 +59,7 @@ def emit(f, text):
     print(text, file=f)
 
 FULL_PROLOG="""\
-void %(device)s_device::%(opcode)s_full()
+void %(device)s_device_%(opcode)s_full()
 {
 """
 
@@ -82,7 +82,7 @@ FULL_NONE="""\
 """
 
 PARTIAL_PROLOG="""\
-void %(device)s_device::%(opcode)s_partial()
+void %(device)s_device_%(opcode)s_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -158,7 +158,7 @@ def save_opcodes(f, device, opcodes):
 
 
 DO_EXEC_FULL_PROLOG="""\
-void %(device)s_device::do_exec_full()
+void %(device)s_device_do_exec_full()
 {
 \tswitch(inst_state) {
 """
@@ -169,7 +169,7 @@ DO_EXEC_FULL_EPILOG="""\
 """
 
 DO_EXEC_PARTIAL_PROLOG="""\
-void %(device)s_device::do_exec_partial()
+void %(device)s_device_do_exec_partial()
 {
 \tswitch(inst_state) {
 """
@@ -180,7 +180,7 @@ DO_EXEC_PARTIAL_EPILOG="""\
 """
 
 DISASM_PROLOG="""\
-const %(device)s_disassembler::disasm_entry %(device)s_disassembler::disasm_entries[0x%(disasm_count)x] = {
+const %(device)s_disassembler_disasm_entry %(device)s_disassembler_disasm_entries[0x%(disasm_count)x] = {
 """
 
 DISASM_EPILOG="""\
diff --git a/m6502/m65c02.c b/m6502/m65c02.c
new file mode 100644 (file)
index 0000000..4d75122
--- /dev/null
@@ -0,0 +1,33 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+/***************************************************************************
+
+    m65c02.c
+
+    MOS Technology 6502, CMOS variant with some additional instructions
+    (but not the bitwise ones)
+
+***************************************************************************/
+
+#include "emu.h"
+#include "m65c02.h"
+#include "m65c02d.h"
+
+DEFINE_DEVICE_TYPE(M65C02, m65c02_device, "m65c02", "MOS Technology M65C02")
+
+m65c02_device_m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+       m6502_device_m6502_device(mconfig, M65C02, tag, owner, clock)
+{
+}
+
+m65c02_device_m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+       m6502_device_m6502_device(mconfig, type, tag, owner, clock)
+{
+}
+
+std_unique_ptr<util_util_disasm_interface> m65c02_device_create_disassembler()
+{
+       return std_make_unique<m65c02_disassembler>();
+}
+
+#include "cpu/m6502/m65c02.inc"
diff --git a/m6502/m65c02.cpp b/m6502/m65c02.cpp
deleted file mode 100644 (file)
index 80df7c7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-/***************************************************************************
-
-    m65c02.c
-
-    MOS Technology 6502, CMOS variant with some additional instructions
-    (but not the bitwise ones)
-
-***************************************************************************/
-
-#include "emu.h"
-#include "m65c02.h"
-#include "m65c02d.h"
-
-DEFINE_DEVICE_TYPE(M65C02, m65c02_device, "m65c02", "MOS Technology M65C02")
-
-m65c02_device::m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
-       m6502_device(mconfig, M65C02, tag, owner, clock)
-{
-}
-
-m65c02_device::m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
-       m6502_device(mconfig, type, tag, owner, clock)
-{
-}
-
-std::unique_ptr<util::disasm_interface> m65c02_device::create_disassembler()
-{
-       return std::make_unique<m65c02_disassembler>();
-}
-
-#include "cpu/m6502/m65c02.hxx"
index b267075..4fa9c08 100644 (file)
 
 class m65c02_device : public m6502_device {
 public:
-       m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+       m65c02_device_m65c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
 
-       virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
+       virtual std_unique_ptr<util_util_disasm_interface> m6502_device_m65c02_device_create_disassembler() override;
        virtual void do_exec_full() override;
        virtual void do_exec_partial() override;
 
 protected:
-       m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+       m65c02_device_m65c02_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
 
 #define O(o) void o ## _full(); void o ## _partial()
 
@@ -66,9 +66,9 @@ protected:
 };
 
 enum {
-       M65C02_IRQ_LINE = m6502_device::IRQ_LINE,
-       M65C02_NMI_LINE = m6502_device::NMI_LINE,
-       M65C02_SET_OVERFLOW = m6502_device::V_LINE
+       M65C02_IRQ_LINE = IRQ_LINE,
+       M65C02_NMI_LINE = NMI_LINE,
+       M65C02_SET_OVERFLOW = m6502_device_V_LINE
 };
 
 DECLARE_DEVICE_TYPE(M65C02, m65c02_device)
similarity index 74%
rename from m6502/m65c02.hxx
rename to m6502/m65c02.inc
index ee3369c..a36fe03 100644 (file)
@@ -1,4 +1,4 @@
-void m65c02_device::adc_c_aba_full()
+void m65c02_device_adc_c_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -10,10 +10,10 @@ void m65c02_device::adc_c_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -21,17 +21,17 @@ void m65c02_device::adc_c_aba_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_aba_partial()
+void m65c02_device_adc_c_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -48,10 +48,10 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -60,13 +60,13 @@ case 4:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -74,7 +74,7 @@ case 5:
 }
 
 
-void m65c02_device::adc_c_abx_full()
+void m65c02_device_adc_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -88,7 +88,7 @@ void m65c02_device::adc_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -96,10 +96,10 @@ void m65c02_device::adc_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -107,17 +107,17 @@ void m65c02_device::adc_c_abx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_abx_partial()
+void m65c02_device_adc_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -136,7 +136,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -145,10 +145,10 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -157,13 +157,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -171,7 +171,7 @@ case 6:
 }
 
 
-void m65c02_device::adc_c_aby_full()
+void m65c02_device_adc_c_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -185,7 +185,7 @@ void m65c02_device::adc_c_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -193,10 +193,10 @@ void m65c02_device::adc_c_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -204,17 +204,17 @@ void m65c02_device::adc_c_aby_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_aby_partial()
+void m65c02_device_adc_c_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -233,7 +233,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -242,10 +242,10 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -254,13 +254,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -268,7 +268,7 @@ case 6:
 }
 
 
-void m65c02_device::adc_c_idx_full()
+void m65c02_device_adc_c_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -276,21 +276,21 @@ void m65c02_device::adc_c_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -299,17 +299,17 @@ void m65c02_device::adc_c_idx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_idx_partial()
+void m65c02_device_adc_c_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -321,24 +321,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -348,13 +348,13 @@ case 6:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -362,7 +362,7 @@ case 7:
 }
 
 
-void m65c02_device::adc_c_idy_full()
+void m65c02_device_adc_c_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -370,23 +370,23 @@ void m65c02_device::adc_c_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_adc(read(TMP+Y));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(P & F_D) {
@@ -395,17 +395,17 @@ void m65c02_device::adc_c_idy_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_idy_partial()
+void m65c02_device_adc_c_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -417,26 +417,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_adc(read(TMP+Y));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(P & F_D) {
@@ -446,13 +446,13 @@ case 6:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -460,14 +460,14 @@ case 7:
 }
 
 
-void m65c02_device::adc_c_imm_full()
+void m65c02_device_adc_c_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -475,17 +475,17 @@ void m65c02_device::adc_c_imm_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_imm_partial()
+void m65c02_device_adc_c_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -495,7 +495,7 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -504,13 +504,13 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -518,7 +518,7 @@ case 3:
 }
 
 
-void m65c02_device::adc_c_zpg_full()
+void m65c02_device_adc_c_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -526,10 +526,10 @@ void m65c02_device::adc_c_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -537,17 +537,17 @@ void m65c02_device::adc_c_zpg_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_zpg_partial()
+void m65c02_device_adc_c_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -559,10 +559,10 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -571,13 +571,13 @@ case 3:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -585,7 +585,7 @@ case 4:
 }
 
 
-void m65c02_device::adc_c_zpi_full()
+void m65c02_device_adc_c_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -593,15 +593,15 @@ void m65c02_device::adc_c_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -610,17 +610,17 @@ void m65c02_device::adc_c_zpi_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_zpi_partial()
+void m65c02_device_adc_c_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -632,17 +632,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       do_adc(read(TMP));
+       m6502_device_do_adc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -652,13 +652,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -666,7 +666,7 @@ case 6:
 }
 
 
-void m65c02_device::adc_c_zpx_full()
+void m65c02_device_adc_c_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -674,14 +674,14 @@ void m65c02_device::adc_c_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -689,17 +689,17 @@ void m65c02_device::adc_c_zpx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::adc_c_zpx_partial()
+void m65c02_device_adc_c_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -711,15 +711,15 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_adc(TMP);
+       m6502_device_do_adc(TMP);
 
        if(P & F_D) {
 
@@ -728,13 +728,13 @@ case 4:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -742,7 +742,7 @@ case 5:
 }
 
 
-void m65c02_device::and_zpi_full()
+void m65c02_device_and_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -750,26 +750,26 @@ void m65c02_device::and_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::and_zpi_partial()
+void m65c02_device_and_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -781,24 +781,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A &= read(TMP);
+       A &= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -806,7 +806,7 @@ case 5:
 }
 
 
-void m65c02_device::asl_c_abx_full()
+void m65c02_device_asl_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -820,7 +820,7 @@ void m65c02_device::asl_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -828,26 +828,26 @@ void m65c02_device::asl_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::asl_c_abx_partial()
+void m65c02_device_asl_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -866,7 +866,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -875,24 +875,24 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_asl(TMP2);
+       TMP2 = m6502_device_do_asl(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -900,7 +900,7 @@ case 7:
 }
 
 
-void m65c02_device::bbr_zpb_full()
+void m65c02_device_bbr_zpb_full()
 {
 
        // Access pattern uncertain
@@ -910,7 +910,7 @@ void m65c02_device::bbr_zpb_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
@@ -928,12 +928,12 @@ void m65c02_device::bbr_zpb_full()
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bbr_zpb_partial()
+void m65c02_device_bbr_zpb_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -947,7 +947,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
@@ -968,7 +968,7 @@ case 4:
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -976,7 +976,7 @@ case 5:
 }
 
 
-void m65c02_device::bbs_zpb_full()
+void m65c02_device_bbs_zpb_full()
 {
 
        // Access pattern uncertain
@@ -986,7 +986,7 @@ void m65c02_device::bbs_zpb_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
@@ -1004,12 +1004,12 @@ void m65c02_device::bbs_zpb_full()
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bbs_zpb_partial()
+void m65c02_device_bbs_zpb_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1023,7 +1023,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
@@ -1044,7 +1044,7 @@ case 4:
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1052,7 +1052,7 @@ case 5:
 }
 
 
-void m65c02_device::bit_abx_full()
+void m65c02_device_bit_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1066,7 +1066,7 @@ void m65c02_device::bit_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -1074,16 +1074,16 @@ void m65c02_device::bit_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bit_abx_partial()
+void m65c02_device_bit_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1102,7 +1102,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -1111,12 +1111,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       do_bit(read(TMP));
+       m6502_device_do_bit(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1124,7 +1124,7 @@ case 5:
 }
 
 
-void m65c02_device::bit_imm_full()
+void m65c02_device_bit_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1140,12 +1140,12 @@ void m65c02_device::bit_imm_full()
                P |= F_Z;
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bit_imm_partial()
+void m65c02_device_bit_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1165,7 +1165,7 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1173,7 +1173,7 @@ case 2:
 }
 
 
-void m65c02_device::bit_zpx_full()
+void m65c02_device_bit_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1181,22 +1181,22 @@ void m65c02_device::bit_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_bit(TMP);
+       m6502_device_do_bit(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bit_zpx_partial()
+void m65c02_device_bit_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1208,19 +1208,19 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_bit(TMP);
+       m6502_device_do_bit(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1228,7 +1228,7 @@ case 4:
 }
 
 
-void m65c02_device::bra_rel_full()
+void m65c02_device_bra_rel_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1242,7 +1242,7 @@ void m65c02_device::bra_rel_full()
        if(page_changing(PC, int8_t(TMP))) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read_arg(set_l(PC, PC+int8_t(TMP)));
+               m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+int8_t(TMP)));
        icount--;
 
        }
@@ -1250,12 +1250,12 @@ void m65c02_device::bra_rel_full()
        PC += int8_t(TMP);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::bra_rel_partial()
+void m65c02_device_bra_rel_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1274,7 +1274,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read_arg(set_l(PC, PC+int8_t(TMP)));
+               m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(set_l(PC, PC+int8_t(TMP)));
        icount--;
 
        }
@@ -1283,7 +1283,7 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1291,7 +1291,7 @@ case 4:
 }
 
 
-void m65c02_device::brk_c_imp_full()
+void m65c02_device_brk_c_imp_full()
 {
 
        if(irq_taken || nmi_state) {
@@ -1309,19 +1309,19 @@ void m65c02_device::brk_c_imp_full()
        }
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(SP, PC >> 8);
+       m6502_device_mi_default_normal_write(SP, PC >> 8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(SP, irq_taken || nmi_state ? P & ~F_B : P);
+       m6502_device_mi_default_normal_write(SP, irq_taken || nmi_state ? P & ~F_B : P);
        icount--;
 
        dec_SP();
@@ -1329,11 +1329,11 @@ void m65c02_device::brk_c_imp_full()
        if(irq_taken && nmi_state) {
 
        if(icount == 0) { inst_substate = 6; return; }
-               PC = read_arg(0xfffa);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffa);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-               PC = set_h(PC, read_arg(0xfffb));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffb));
        icount--;
 
                nmi_state = false;
@@ -1343,11 +1343,11 @@ void m65c02_device::brk_c_imp_full()
        } else {
 
        if(icount == 0) { inst_substate = 8; return; }
-               PC = read_arg(0xfffe);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 9; return; }
-               PC = set_h(PC, read_arg(0xffff));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xffff));
        icount--;
 
                if(irq_taken)
@@ -1361,14 +1361,14 @@ void m65c02_device::brk_c_imp_full()
        P = (P | F_I) & ~F_D; // Do *not* move after the prefetch
 
        if(icount == 0) { inst_substate = 10; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
 
 }
 
-void m65c02_device::brk_c_imp_partial()
+void m65c02_device_brk_c_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1391,21 +1391,21 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(SP, PC >> 8);
+       m6502_device_mi_default_normal_write(SP, PC >> 8);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(SP, PC);
+       m6502_device_mi_default_normal_write(SP, PC);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(SP, irq_taken || nmi_state ? P & ~F_B : P);
+       m6502_device_mi_default_normal_write(SP, irq_taken || nmi_state ? P & ~F_B : P);
        icount--;
 
        dec_SP();
@@ -1414,12 +1414,12 @@ case 5:
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-               PC = read_arg(0xfffa);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffa);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-               PC = set_h(PC, read_arg(0xfffb));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffb));
        icount--;
 
                nmi_state = false;
@@ -1430,12 +1430,12 @@ case 7:
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-               PC = read_arg(0xfffe);
+               PC = m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xfffe);
        icount--;
 
        if(icount == 0) { inst_substate = 9; return; }
 case 9:
-               PC = set_h(PC, read_arg(0xffff));
+               PC = set_h(PC, m6502_device_mi_default_nd_m6502_device_mi_default_normal_read_arg(0xffff));
        icount--;
 
                if(irq_taken)
@@ -1450,7 +1450,7 @@ case 9:
 
        if(icount == 0) { inst_substate = 10; return; }
 case 10:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
        inst_state = -1;
@@ -1460,7 +1460,7 @@ case 10:
 }
 
 
-void m65c02_device::cmp_zpi_full()
+void m65c02_device_cmp_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1468,24 +1468,24 @@ void m65c02_device::cmp_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       do_cmp(A, read(TMP));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::cmp_zpi_partial()
+void m65c02_device_cmp_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1497,22 +1497,22 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       do_cmp(A, read(TMP));
+       m6502_device_do_cmp(A, m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1520,7 +1520,7 @@ case 5:
 }
 
 
-void m65c02_device::dec_acc_full()
+void m65c02_device_dec_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1529,15 +1529,15 @@ void m65c02_device::dec_acc_full()
 
        A--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::dec_acc_partial()
+void m65c02_device_dec_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1549,11 +1549,11 @@ case 1:
 
        A--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1561,7 +1561,7 @@ case 2:
 }
 
 
-void m65c02_device::eor_zpi_full()
+void m65c02_device_eor_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1569,26 +1569,26 @@ void m65c02_device::eor_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::eor_zpi_partial()
+void m65c02_device_eor_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1600,24 +1600,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A ^= read(TMP);
+       A ^= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1625,7 +1625,7 @@ case 5:
 }
 
 
-void m65c02_device::inc_acc_full()
+void m65c02_device_inc_acc_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1634,15 +1634,15 @@ void m65c02_device::inc_acc_full()
 
        A++;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::inc_acc_partial()
+void m65c02_device_inc_acc_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1654,11 +1654,11 @@ case 1:
 
        A++;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1666,7 +1666,7 @@ case 2:
 }
 
 
-void m65c02_device::jmp_iax_full()
+void m65c02_device_jmp_iax_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1678,26 +1678,26 @@ void m65c02_device::jmp_iax_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       PC = set_h(PC, read(TMP+1));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::jmp_iax_partial()
+void m65c02_device_jmp_iax_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1714,24 +1714,24 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       PC = set_h(PC, read(TMP+1));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1739,7 +1739,7 @@ case 6:
 }
 
 
-void m65c02_device::jmp_c_ind_full()
+void m65c02_device_jmp_c_ind_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1751,24 +1751,24 @@ void m65c02_device::jmp_c_ind_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       read(set_l(TMP, TMP+1));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       PC = set_h(PC, read(TMP+1));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::jmp_c_ind_partial()
+void m65c02_device_jmp_c_ind_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1785,22 +1785,22 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       PC = read(TMP);
+       PC = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       read(set_l(TMP, TMP+1));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       PC = set_h(PC, read(TMP+1));
+       PC = set_h(PC, m6502_device_mi_default_normal_read(TMP+1));
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1808,7 +1808,7 @@ case 6:
 }
 
 
-void m65c02_device::lda_zpi_full()
+void m65c02_device_lda_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1816,26 +1816,26 @@ void m65c02_device::lda_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::lda_zpi_partial()
+void m65c02_device_lda_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1847,24 +1847,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A = read(TMP);
+       A = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1872,7 +1872,7 @@ case 5:
 }
 
 
-void m65c02_device::lsr_c_abx_full()
+void m65c02_device_lsr_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -1886,7 +1886,7 @@ void m65c02_device::lsr_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -1894,26 +1894,26 @@ void m65c02_device::lsr_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::lsr_c_abx_partial()
+void m65c02_device_lsr_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -1932,7 +1932,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -1941,24 +1941,24 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_lsr(TMP2);
+       TMP2 = m6502_device_do_lsr(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1966,23 +1966,23 @@ case 7:
 }
 
 
-void m65c02_device::nop_c_imp_full()
+void m65c02_device_nop_c_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::nop_c_imp_partial()
+void m65c02_device_nop_c_imp_partial()
 {
 switch(inst_substate) {
 case 0:
 
        if(icount == 0) { inst_substate = 1; return; }
 case 1:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -1990,7 +1990,7 @@ case 1:
 }
 
 
-void m65c02_device::nop_c_aba_full()
+void m65c02_device_nop_c_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2022,12 +2022,12 @@ void m65c02_device::nop_c_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 8; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::nop_c_aba_partial()
+void m65c02_device_nop_c_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2069,7 +2069,7 @@ case 7:
 
        if(icount == 0) { inst_substate = 8; return; }
 case 8:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2077,7 +2077,7 @@ case 8:
 }
 
 
-void m65c02_device::nop_c_abx_full()
+void m65c02_device_nop_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2089,16 +2089,16 @@ void m65c02_device::nop_c_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::nop_c_abx_partial()
+void m65c02_device_nop_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2115,12 +2115,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2128,7 +2128,7 @@ case 4:
 }
 
 
-void m65c02_device::ora_zpi_full()
+void m65c02_device_ora_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2136,26 +2136,26 @@ void m65c02_device::ora_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::ora_zpi_partial()
+void m65c02_device_ora_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2167,24 +2167,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       A |= read(TMP);
+       A |= m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       set_nz(A);
+       m6502_device_set_nz(A);
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2192,7 +2192,7 @@ case 5:
 }
 
 
-void m65c02_device::phx_imp_full()
+void m65c02_device_phx_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2200,18 +2200,18 @@ void m65c02_device::phx_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(SP, X);
+       m6502_device_mi_default_normal_write(SP, X);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::phx_imp_partial()
+void m65c02_device_phx_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2223,14 +2223,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(SP, X);
+       m6502_device_mi_default_normal_write(SP, X);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2238,7 +2238,7 @@ case 3:
 }
 
 
-void m65c02_device::phy_imp_full()
+void m65c02_device_phy_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2246,18 +2246,18 @@ void m65c02_device::phy_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(SP, Y);
+       m6502_device_mi_default_normal_write(SP, Y);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::phy_imp_partial()
+void m65c02_device_phy_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2269,14 +2269,14 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(SP, Y);
+       m6502_device_mi_default_normal_write(SP, Y);
        icount--;
 
        dec_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2284,7 +2284,7 @@ case 3:
 }
 
 
-void m65c02_device::plx_imp_full()
+void m65c02_device_plx_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2292,24 +2292,24 @@ void m65c02_device::plx_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       X = read(SP);
+       X = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::plx_imp_partial()
+void m65c02_device_plx_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2321,21 +2321,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       X = read(SP);
+       X = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(X);
+       m6502_device_set_nz(X);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2343,7 +2343,7 @@ case 4:
 }
 
 
-void m65c02_device::ply_imp_full()
+void m65c02_device_ply_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2351,24 +2351,24 @@ void m65c02_device::ply_imp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
-       Y = read(SP);
+       Y = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::ply_imp_partial()
+void m65c02_device_ply_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2380,21 +2380,21 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(SP);
+       m6502_device_mi_default_normal_read(SP);
        icount--;
 
        inc_SP();
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       Y = read(SP);
+       Y = m6502_device_mi_default_normal_read(SP);
        icount--;
 
-       set_nz(Y);
+       m6502_device_set_nz(Y);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2402,7 +2402,7 @@ case 4:
 }
 
 
-void m65c02_device::rmb_bzp_full()
+void m65c02_device_rmb_bzp_full()
 {
 
        // Access pattern unknown but probable (built upon inc_zpg)
@@ -2412,26 +2412,26 @@ void m65c02_device::rmb_bzp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2 &= ~(1 << ((inst_state >> 4) & 7));
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::rmb_bzp_partial()
+void m65c02_device_rmb_bzp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2445,24 +2445,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2 &= ~(1 << ((inst_state >> 4) & 7));
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2470,7 +2470,7 @@ case 5:
 }
 
 
-void m65c02_device::rol_c_abx_full()
+void m65c02_device_rol_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2484,7 +2484,7 @@ void m65c02_device::rol_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2492,26 +2492,26 @@ void m65c02_device::rol_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::rol_c_abx_partial()
+void m65c02_device_rol_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2530,7 +2530,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2539,24 +2539,24 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_rol(TMP2);
+       TMP2 = m6502_device_do_rol(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2564,7 +2564,7 @@ case 7:
 }
 
 
-void m65c02_device::ror_c_abx_full()
+void m65c02_device_ror_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2578,7 +2578,7 @@ void m65c02_device::ror_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2586,26 +2586,26 @@ void m65c02_device::ror_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::ror_c_abx_partial()
+void m65c02_device_ror_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2624,7 +2624,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2633,24 +2633,24 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
-       TMP2 = do_ror(TMP2);
+       TMP2 = m6502_device_do_ror(TMP2);
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2658,7 +2658,7 @@ case 7:
 }
 
 
-void m65c02_device::sbc_c_aba_full()
+void m65c02_device_sbc_c_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2670,10 +2670,10 @@ void m65c02_device::sbc_c_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2681,17 +2681,17 @@ void m65c02_device::sbc_c_aba_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_aba_partial()
+void m65c02_device_sbc_c_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2708,10 +2708,10 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2720,13 +2720,13 @@ case 4:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2734,7 +2734,7 @@ case 5:
 }
 
 
-void m65c02_device::sbc_c_abx_full()
+void m65c02_device_sbc_c_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2748,7 +2748,7 @@ void m65c02_device::sbc_c_abx_full()
        if(page_changing(TMP, X)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2756,10 +2756,10 @@ void m65c02_device::sbc_c_abx_full()
        TMP += X;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2767,17 +2767,17 @@ void m65c02_device::sbc_c_abx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_abx_partial()
+void m65c02_device_sbc_c_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2796,7 +2796,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+X));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        }
@@ -2805,10 +2805,10 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2817,13 +2817,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2831,7 +2831,7 @@ case 6:
 }
 
 
-void m65c02_device::sbc_c_aby_full()
+void m65c02_device_sbc_c_aby_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2845,7 +2845,7 @@ void m65c02_device::sbc_c_aby_full()
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 3; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -2853,10 +2853,10 @@ void m65c02_device::sbc_c_aby_full()
        TMP += Y;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2864,17 +2864,17 @@ void m65c02_device::sbc_c_aby_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_aby_partial()
+void m65c02_device_sbc_c_aby_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2893,7 +2893,7 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
@@ -2902,10 +2902,10 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -2914,13 +2914,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -2928,7 +2928,7 @@ case 6:
 }
 
 
-void m65c02_device::sbc_c_idx_full()
+void m65c02_device_sbc_c_idx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -2936,21 +2936,21 @@ void m65c02_device::sbc_c_idx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -2959,17 +2959,17 @@ void m65c02_device::sbc_c_idx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_idx_partial()
+void m65c02_device_sbc_c_idx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -2981,24 +2981,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP2);
+       m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        TMP2 += X;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -3008,13 +3008,13 @@ case 6:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3022,7 +3022,7 @@ case 7:
 }
 
 
-void m65c02_device::sbc_c_idy_full()
+void m65c02_device_sbc_c_idy_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3030,23 +3030,23 @@ void m65c02_device::sbc_c_idy_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       do_sbc(read(TMP+Y));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(P & F_D) {
@@ -3055,17 +3055,17 @@ void m65c02_device::sbc_c_idy_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_idy_partial()
+void m65c02_device_sbc_c_idy_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3077,26 +3077,26 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2);
+       TMP = m6502_device_mi_default_normal_read(TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(page_changing(TMP, Y)) {
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-               read(set_l(TMP, TMP+Y));
+               m6502_device_mi_default_normal_read(set_l(TMP, TMP+Y));
        icount--;
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       do_sbc(read(TMP+Y));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP+Y));
        icount--;
 
        if(P & F_D) {
@@ -3106,13 +3106,13 @@ case 6:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 7; return; }
 case 7:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3120,14 +3120,14 @@ case 7:
 }
 
 
-void m65c02_device::sbc_c_imm_full()
+void m65c02_device_sbc_c_imm_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
        TMP = read_pc();
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3135,17 +3135,17 @@ void m65c02_device::sbc_c_imm_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_imm_partial()
+void m65c02_device_sbc_c_imm_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3155,7 +3155,7 @@ case 1:
        TMP = read_pc();
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3164,13 +3164,13 @@ case 2:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3178,7 +3178,7 @@ case 3:
 }
 
 
-void m65c02_device::sbc_c_zpg_full()
+void m65c02_device_sbc_c_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3186,10 +3186,10 @@ void m65c02_device::sbc_c_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3197,17 +3197,17 @@ void m65c02_device::sbc_c_zpg_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_zpg_partial()
+void m65c02_device_sbc_c_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3219,10 +3219,10 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP);
+       TMP = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3231,13 +3231,13 @@ case 3:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3245,7 +3245,7 @@ case 4:
 }
 
 
-void m65c02_device::sbc_c_zpi_full()
+void m65c02_device_sbc_c_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3253,15 +3253,15 @@ void m65c02_device::sbc_c_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -3270,17 +3270,17 @@ void m65c02_device::sbc_c_zpi_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_zpi_partial()
+void m65c02_device_sbc_c_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3292,17 +3292,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       do_sbc(read(TMP));
+       m6502_device_do_sbc(m6502_device_mi_default_normal_read(TMP));
        icount--;
 
        if(P & F_D) {
@@ -3312,13 +3312,13 @@ case 5:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3326,7 +3326,7 @@ case 6:
 }
 
 
-void m65c02_device::sbc_c_zpx_full()
+void m65c02_device_sbc_c_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3334,14 +3334,14 @@ void m65c02_device::sbc_c_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3349,17 +3349,17 @@ void m65c02_device::sbc_c_zpx_full()
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sbc_c_zpx_partial()
+void m65c02_device_sbc_c_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3371,15 +3371,15 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = read(uint8_t(TMP+X));
+       TMP = m6502_device_mi_default_normal_read(uint8_t(TMP+X));
        icount--;
 
-       do_sbc(TMP);
+       m6502_device_do_sbc(TMP);
 
        if(P & F_D) {
 
@@ -3388,13 +3388,13 @@ case 4:
                read_pc_noinc();
        icount--;
 
-               set_nz(A);
+               m6502_device_set_nz(A);
 
        }
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3402,7 +3402,7 @@ case 5:
 }
 
 
-void m65c02_device::smb_bzp_full()
+void m65c02_device_smb_bzp_full()
 {
 
        // Access pattern unknown but probable (built upon inc_zpg)
@@ -3412,26 +3412,26 @@ void m65c02_device::smb_bzp_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2 |= 1 << ((inst_state >> 4) & 7);
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::smb_bzp_partial()
+void m65c02_device_smb_bzp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3445,24 +3445,24 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        TMP2 |= 1 << ((inst_state >> 4) & 7);
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3470,7 +3470,7 @@ case 5:
 }
 
 
-void m65c02_device::sta_zpi_full()
+void m65c02_device_sta_zpi_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3478,24 +3478,24 @@ void m65c02_device::sta_zpi_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::sta_zpi_partial()
+void m65c02_device_sta_zpi_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3507,22 +3507,22 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP = read(TMP2 & 0xff);
+       TMP = m6502_device_mi_default_normal_read(TMP2 & 0xff);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP = set_h(TMP, read((TMP2+1) & 0xff));
+       TMP = set_h(TMP, m6502_device_mi_default_normal_read((TMP2+1) & 0xff));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, A);
+       m6502_device_mi_default_normal_write(TMP, A);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3530,7 +3530,7 @@ case 5:
 }
 
 
-void m65c02_device::stp_imp_full()
+void m65c02_device_stp_imp_full()
 {
 
        for(;;) {
@@ -3541,7 +3541,7 @@ void m65c02_device::stp_imp_full()
 
 }
 
-void m65c02_device::stp_imp_partial()
+void m65c02_device_stp_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3558,7 +3558,7 @@ case 1:;
 }
 
 
-void m65c02_device::stz_aba_full()
+void m65c02_device_stz_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3570,16 +3570,16 @@ void m65c02_device::stz_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, 0x00);
+       m6502_device_mi_default_normal_write(TMP, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::stz_aba_partial()
+void m65c02_device_stz_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3596,12 +3596,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, 0x00);
+       m6502_device_mi_default_normal_write(TMP, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3609,7 +3609,7 @@ case 4:
 }
 
 
-void m65c02_device::stz_abx_full()
+void m65c02_device_stz_abx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3621,20 +3621,20 @@ void m65c02_device::stz_abx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP+X, 0x00);
+       m6502_device_mi_default_normal_write(TMP+X, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::stz_abx_partial()
+void m65c02_device_stz_abx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3651,17 +3651,17 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       read(set_l(TMP, TMP+X));
+       m6502_device_mi_default_normal_read(set_l(TMP, TMP+X));
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP+X, 0x00);
+       m6502_device_mi_default_normal_write(TMP+X, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3669,7 +3669,7 @@ case 5:
 }
 
 
-void m65c02_device::stz_zpg_full()
+void m65c02_device_stz_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3677,16 +3677,16 @@ void m65c02_device::stz_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       write(TMP, 0x00);
+       m6502_device_mi_default_normal_write(TMP, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::stz_zpg_partial()
+void m65c02_device_stz_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3698,12 +3698,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       write(TMP, 0x00);
+       m6502_device_mi_default_normal_write(TMP, 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3711,7 +3711,7 @@ case 3:
 }
 
 
-void m65c02_device::stz_zpx_full()
+void m65c02_device_stz_zpx_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3719,20 +3719,20 @@ void m65c02_device::stz_zpx_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(uint8_t(TMP+X), 0x00);
+       m6502_device_mi_default_normal_write(uint8_t(TMP+X), 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::stz_zpx_partial()
+void m65c02_device_stz_zpx_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3744,17 +3744,17 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       read(TMP);
+       m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(uint8_t(TMP+X), 0x00);
+       m6502_device_mi_default_normal_write(uint8_t(TMP+X), 0x00);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3762,7 +3762,7 @@ case 4:
 }
 
 
-void m65c02_device::trb_aba_full()
+void m65c02_device_trb_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3774,11 +3774,11 @@ void m65c02_device::trb_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -3792,16 +3792,16 @@ void m65c02_device::trb_aba_full()
        TMP2 &= ~A;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::trb_aba_partial()
+void m65c02_device_trb_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3818,12 +3818,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -3838,12 +3838,12 @@ case 4:
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3851,7 +3851,7 @@ case 6:
 }
 
 
-void m65c02_device::trb_zpg_full()
+void m65c02_device_trb_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3859,11 +3859,11 @@ void m65c02_device::trb_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -3877,16 +3877,16 @@ void m65c02_device::trb_zpg_full()
        TMP2 &= ~A;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::trb_zpg_partial()
+void m65c02_device_trb_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3898,12 +3898,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -3918,12 +3918,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -3931,7 +3931,7 @@ case 5:
 }
 
 
-void m65c02_device::tsb_aba_full()
+void m65c02_device_tsb_aba_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -3943,11 +3943,11 @@ void m65c02_device::tsb_aba_full()
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -3961,16 +3961,16 @@ void m65c02_device::tsb_aba_full()
        TMP2 |= A;
 
        if(icount == 0) { inst_substate = 5; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::tsb_aba_partial()
+void m65c02_device_tsb_aba_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -3987,12 +3987,12 @@ case 2:
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -4007,12 +4007,12 @@ case 4:
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 6; return; }
 case 6:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4020,7 +4020,7 @@ case 6:
 }
 
 
-void m65c02_device::tsb_zpg_full()
+void m65c02_device_tsb_zpg_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4028,11 +4028,11 @@ void m65c02_device::tsb_zpg_full()
        icount--;
 
        if(icount == 0) { inst_substate = 2; return; }
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -4046,16 +4046,16 @@ void m65c02_device::tsb_zpg_full()
        TMP2 |= A;
 
        if(icount == 0) { inst_substate = 4; return; }
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::tsb_zpg_partial()
+void m65c02_device_tsb_zpg_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4067,12 +4067,12 @@ case 1:
 
        if(icount == 0) { inst_substate = 2; return; }
 case 2:
-       TMP2 = read(TMP);
+       TMP2 = m6502_device_mi_default_normal_read(TMP);
        icount--;
 
        if(icount == 0) { inst_substate = 3; return; }
 case 3:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(A & TMP2)
@@ -4087,12 +4087,12 @@ case 3:
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       write(TMP, TMP2);
+       m6502_device_mi_default_normal_write(TMP, TMP2);
        icount--;
 
        if(icount == 0) { inst_substate = 5; return; }
 case 5:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4100,7 +4100,7 @@ case 5:
 }
 
 
-void m65c02_device::wai_imp_full()
+void m65c02_device_wai_imp_full()
 {
 
        if(icount == 0) { inst_substate = 1; return; }
@@ -4118,12 +4118,12 @@ void m65c02_device::wai_imp_full()
        }
 
        if(icount == 0) { inst_substate = 4; return; }
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
 
-void m65c02_device::wai_imp_partial()
+void m65c02_device_wai_imp_partial()
 {
 switch(inst_substate) {
 case 0:
@@ -4147,7 +4147,7 @@ case 3:;
 
        if(icount == 0) { inst_substate = 4; return; }
 case 4:
-       prefetch();
+       m6502_device_prefetch();
        icount--;
 
 }
@@ -4157,7 +4157,7 @@ case 4:
 
 
 
-void m65c02_device::do_exec_full()
+void m65c02_device_do_exec_full()
 {
        switch(inst_state) {
 
@@ -4421,7 +4421,7 @@ void m65c02_device::do_exec_full()
        }
 }
 
-void m65c02_device::do_exec_partial()
+void m65c02_device_do_exec_partial()
 {
        switch(inst_state) {
 
similarity index 73%
rename from m6502/m65c02d.cpp
rename to m6502/m65c02d.c
index 2c7b3b8..fa808ed 100644 (file)
@@ -11,8 +11,8 @@
 
 #include "emu.h"
 #include "m65c02d.h"
-#include "cpu/m6502/m65c02d.hxx"
+#include "cpu/m6502/m65c02d.inc"
 
-m65c02_disassembler::m65c02_disassembler() : m6502_base_disassembler(disasm_entries)
+m65c02_disassembler_m65c02_disassembler() : m6502_base_disassembler_m6502_base_disassembler(disasm_entries)
 {
 }
index 77b134c..113a21a 100644 (file)
@@ -19,8 +19,8 @@
 class m65c02_disassembler : public m6502_base_disassembler
 {
 public:
-       m65c02_disassembler();
-       virtual ~m65c02_disassembler() = default;
+       m65c02_disassembler_m65c02_disassembler();
+       virtual ~m65c02_disassembler_m65c02_disassembler() = default;
 
 private:
        static const disasm_entry disasm_entries[0x100];
similarity index 98%
rename from m6502/m65c02d.hxx
rename to m6502/m65c02d.inc
index 65a9e0a..aba2a0f 100644 (file)
@@ -1,4 +1,4 @@
-const m65c02_disassembler::disasm_entry m65c02_disassembler::disasm_entries[0x100] = {
+const m65c02_disassembler_disasm_entry m65c02_disassembler_disasm_entries[0x100] = {
 
        { "brk", DASM_imp, 0 },
        { "ora", DASM_idx, 0 },
index 664fbb0..6e38873 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-./m6502make.py s m6502 om6502.lst dm6502.lst m6502.hxx
-./m6502make.py d m6502 om6502.lst dm6502.lst m6502d.hxx
-./m6502make.py s m65c02 om65c02.lst dm65c02.lst m65c02.hxx
-./m6502make.py d m65c02 om65c02.lst dm65c02.lst m65c02d.hxx
+./m6502make.py s m6502 om6502.lst dm6502.lst m6502.inc
+./m6502make.py d m6502 om6502.lst dm6502.lst m6502d.inc
+./m6502make.py s m65c02 om65c02.lst dm65c02.lst m65c02.inc
+./m6502make.py d m65c02 om65c02.lst dm65c02.lst m65c02d.inc
index bd0f3cb..833fed8 100644 (file)
@@ -66,7 +66,7 @@ adc_zpg
 adc_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = read(uint8_t(TMP+X));
+       TMP = read((uint8_t)(TMP+X));
        do_adc(TMP);
        prefetch();
 
@@ -134,7 +134,7 @@ and_zpg
 and_zpx
        TMP = read_pc();
        read(TMP);
-       A &= read(uint8_t(TMP+X));
+       A &= read((uint8_t)(TMP+X));
        set_nz(A);
        prefetch();
 
@@ -174,7 +174,7 @@ asl_zpg
 asl_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_asl(TMP2);
@@ -185,10 +185,10 @@ bcc_rel
        TMP = read_pc();
        if(!(P & F_C)) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -196,10 +196,10 @@ bcs_rel
        TMP = read_pc();
        if(P & F_C) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -207,10 +207,10 @@ beq_rel
        TMP = read_pc();
        if(P & F_Z) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -229,10 +229,10 @@ bmi_rel
        TMP = read_pc();
        if(P & F_N) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -240,10 +240,10 @@ bne_rel
        TMP = read_pc();
        if(!(P & F_Z)) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -251,10 +251,10 @@ bpl_rel
        TMP = read_pc();
        if(!(P & F_N)) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -291,10 +291,10 @@ bvc_rel
        TMP = read_pc();
        if(!(P & F_V)) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -302,10 +302,10 @@ bvs_rel
        TMP = read_pc();
        if(P & F_V) {
                read_pc_noinc();
-               if(page_changing(PC, int8_t(TMP))) {
-                       read_arg(set_l(PC, PC+int8_t(TMP)));
+               if(page_changing(PC, (int8_t)(TMP))) {
+                       read_arg(set_l(PC, PC+(int8_t)(TMP)));
                }
-               PC += int8_t(TMP);
+               PC += (int8_t)(TMP);
        }
        prefetch();
 
@@ -391,7 +391,7 @@ cmp_zpg
 cmp_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = read(uint8_t(TMP+X));
+       TMP = read((uint8_t)(TMP+X));
        do_cmp(A, TMP);
        prefetch();
 
@@ -465,7 +465,7 @@ dec_zpg
 dec_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2--;
@@ -549,7 +549,7 @@ eor_zpg
 eor_zpx
        TMP = read_pc();
        read(TMP);
-       A ^= read(uint8_t(TMP+X));
+       A ^= read((uint8_t)(TMP+X));
        set_nz(A);
        prefetch();
 
@@ -587,7 +587,7 @@ inc_zpg
 inc_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2++;
@@ -693,7 +693,7 @@ lda_zpg
 lda_zpx
        TMP = read_pc();
        read(TMP);
-       A = read(uint8_t(TMP+X));
+       A = read((uint8_t)(TMP+X));
        set_nz(A);
        prefetch();
 
@@ -728,7 +728,7 @@ ldx_zpg
 ldx_zpy
        TMP = read_pc();
        read(TMP);
-       X = read(uint8_t(TMP+Y));
+       X = read((uint8_t)(TMP+Y));
        set_nz(X);
        prefetch();
 
@@ -764,7 +764,7 @@ ldy_zpg
 ldy_zpx
        TMP = read_pc();
        read(TMP);
-       Y = read(uint8_t(TMP+X));
+       Y = read((uint8_t)(TMP+X));
        set_nz(Y);
        prefetch();
 
@@ -804,7 +804,7 @@ lsr_zpg
 lsr_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_lsr(TMP2);
@@ -879,7 +879,7 @@ ora_zpg
 ora_zpx
        TMP = read_pc();
        read(TMP);
-       A |= read(uint8_t(TMP+X));
+       A |= read((uint8_t)(TMP+X));
        set_nz(A);
        prefetch();
 
@@ -947,7 +947,7 @@ rol_zpg
 rol_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_rol(TMP2);
@@ -990,7 +990,7 @@ ror_zpg
 ror_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_ror(TMP2);
@@ -1080,7 +1080,7 @@ sbc_zpg
 sbc_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = read(uint8_t(TMP+X));
+       TMP = read((uint8_t)(TMP+X));
        do_sbc(TMP);
        prefetch();
 
@@ -1144,7 +1144,7 @@ sta_zpg
 sta_zpx
        TMP = read_pc();
        read(TMP);
-       write(uint8_t(TMP+X), A);
+       write((uint8_t)(TMP+X), A);
        prefetch();
 
 stx_aba
@@ -1161,7 +1161,7 @@ stx_zpg
 stx_zpy
        TMP = read_pc();
        read(TMP);
-       write(uint8_t(TMP+Y), X);
+       write((uint8_t)(TMP+Y), X);
        prefetch();
 
 sty_aba
@@ -1178,7 +1178,7 @@ sty_zpg
 sty_zpx
        TMP = read_pc();
        read(TMP);
-       write(uint8_t(TMP+X), Y);
+       write((uint8_t)(TMP+X), Y);
        prefetch();
 
 tax_imp
@@ -1297,7 +1297,7 @@ dcp_zpg
 dcp_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2--;
@@ -1377,7 +1377,7 @@ isb_zpg
 isb_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2++;
@@ -1432,7 +1432,7 @@ lax_zpg
 lax_zpy
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
        A = X = read(TMP);
        set_nz(A);
        prefetch();
@@ -1515,7 +1515,7 @@ rla_zpg
 rla_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_rol(TMP2);
@@ -1596,7 +1596,7 @@ rra_zpg
 rra_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_ror(TMP2);
@@ -1630,7 +1630,7 @@ sax_zpg
 sax_zpy
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+Y);
+       TMP = (uint8_t)(TMP+Y);
        TMP2 = A & X;
        write(TMP, TMP2);
        prefetch();
@@ -1786,7 +1786,7 @@ slo_zpg
 slo_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_asl(TMP2);
@@ -1873,7 +1873,7 @@ sre_zpg
 sre_zpx
        TMP = read_pc();
        read(TMP);
-       TMP = uint8_t(TMP+X);
+       TMP = (uint8_t)(TMP+X);
        TMP2 = read(TMP);
        write(TMP, TMP2);
        TMP2 = do_lsr(TMP2);
@@ -1953,7 +1953,7 @@ nop_zpg
 nop_zpx
        TMP = read_pc();
        read(TMP);
-       read(uint8_t(TMP+X));
+       read((uint8_t)(TMP+X));
        prefetch();
 
 # system killers
index 68612f4..a986855 100644 (file)
@@ -7,7 +7,7 @@
 #include <assert.h>
 #include <stdbool.h>
 #include <unistd.h>
-#include "defines.h"
+#include "cpu.h"
 #include "emu.h"
 #include "z180.h"
 
index 30d66c0..ff07073 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _Z180_CPU_H
 #define _Z180_CPU_H
 
+#include "defines.h"
+
 /* Macros to read and write loctions in
  * main memory.
  */
index eccbbff..c18279e 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef _DEBUGGER_H
-#define _DEBUGGER_H
+#ifndef _Z180_DEBUGGER_H
+#define _Z180_DEBUGGER_H
 
 void debugger_instruction_hook(offs_t address);