src/musashi/example/sim.h

Fri, 12 Apr 2013 12:34:32 +0100

author
Philip Pemberton <philpem@philpem.me.uk>
date
Fri, 12 Apr 2013 12:34:32 +0100
branch
experimental_memory_mapper_v2
changeset 140
1e4c45b144c4
parent 0
8bf1bf91a36d
permissions
-rw-r--r--

Fix read-after-write logic

In some cases (notably reading from a page after having written to it), the
mapper may change the pagestate from "accessed and written" ("dirty"; PS0,PS1)
to "accessed but not written" (clean; PS1,!PS0). This should never, ever, EVER
happen. Once a page is dirty, it remains so until the 68k clears the DIRTY
bit.

Once again, this wonderful bit of logic was missing from the TRM.

philpem@0 1 #ifndef SIM__HEADER
philpem@0 2 #define SIM__HEADER
philpem@0 3
philpem@0 4 unsigned int m68k_read_memory_8(unsigned int address);
philpem@0 5 unsigned int m68k_read_memory_16(unsigned int address);
philpem@0 6 unsigned int m68k_read_memory_32(unsigned int address);
philpem@0 7 void m68k_write_memory_8(unsigned int address, unsigned int value);
philpem@0 8 void m68k_write_memory_16(unsigned int address, unsigned int value);
philpem@0 9 void m68k_write_memory_32(unsigned int address, unsigned int value);
philpem@0 10 void cpu_pulse_reset(void);
philpem@0 11 void cpu_set_fc(unsigned int fc);
philpem@0 12 int cpu_irq_ack(int level);
philpem@0 13
philpem@0 14 #endif /* SIM__HEADER */