forked from KolibriOS/kolibrios
115 lines
5.2 KiB
Plaintext
115 lines
5.2 KiB
Plaintext
|
The history of Musashi for anyone who might be interested:
|
||
|
---------------------------------------------------------
|
||
|
|
||
|
Musashi was born out of sheer boredom.
|
||
|
I needed something to code, and so having had fun with a few of the emulators
|
||
|
around, I decided to try my hand at CPU emulation.
|
||
|
I had owned an Amiga for many years and had done some assembly coding on it so
|
||
|
I figured it would be the ideal chip to cut my teeth on.
|
||
|
Had I known then how much work was involved in emulating a chip like this, I
|
||
|
may not have even started ;-)
|
||
|
|
||
|
|
||
|
|
||
|
12-May-1998: First outline
|
||
|
|
||
|
11-Jun-1998: Early disassembler
|
||
|
|
||
|
20-Nov-1998: First prototype v0.1
|
||
|
|
||
|
04-Dec-1998: Final prototype v0.4
|
||
|
|
||
|
20-Dec-1998: Beta release of Musashi v0.5 that could run Rastan Saga under MAME
|
||
|
(barely).
|
||
|
|
||
|
06-Jan-1999: Musashi 1.0 released
|
||
|
|
||
|
17-Mar-1999: Musashi 2.0 released
|
||
|
- Major code overhaul.
|
||
|
- Replaced monolithic codebase with a code generator program.
|
||
|
- Added correct m68000 timing.
|
||
|
- Moved timing into the opcode handlers.
|
||
|
|
||
|
25-Mar-1999: Musashi 2.1 released
|
||
|
- Added support for m68010.
|
||
|
- Many bugfixes.
|
||
|
|
||
|
13-May-1999: Musashi 2.2 released
|
||
|
- Added support for m68020.
|
||
|
- Lots of bugfixes.
|
||
|
|
||
|
05-Apr-2000: Musashi 3.0 released
|
||
|
- Major code overhaul.
|
||
|
- Rewrote code generator program and changed the format of
|
||
|
m68k_in.c.
|
||
|
- Added support for m68ec020.
|
||
|
- Removed timing from the opcode handlers.
|
||
|
- Added correct timing for m68000, m68010, and m68020.
|
||
|
Note: 68020 timing is the cache timing from the manual.
|
||
|
- Removed the m68k_peek_xxx() and m68k_poke_xxx() instructions and
|
||
|
replaced them with m68k_get_reg() and m68k_set_reg().
|
||
|
- Added support for function codes.
|
||
|
- Revamped m68kconf.h to be easier to configure and more powerful.
|
||
|
- Added option to separate immediate and normal reads.
|
||
|
- Added support for (undocumented) m68000 instruction prefetch.
|
||
|
- Rewrote indexed addressing mode handling.
|
||
|
- Rewrote interrupt handling.
|
||
|
- Fixed a masking bug for m68k_get_reg() when requesting the PC.
|
||
|
- Moved the instruction table sorting routine to m68kmake.c so
|
||
|
that it is invoked at compile time rather than at runtime.
|
||
|
- Rewrote the exception handling routines to support different
|
||
|
stack frames (needed for m68020 emulation).
|
||
|
- Rewrote faster status register and condition code flag handling
|
||
|
functions / macros.
|
||
|
- Fixed function code handling to fetch from program space when
|
||
|
using pc-relative addressing.
|
||
|
- Fixed initial program counter and stack pointer fetching on
|
||
|
reset (loads from program space now).
|
||
|
- A lot of code cleanup.
|
||
|
- LOTS of bugfixes (especially in the m68020 code).
|
||
|
|
||
|
28-May-2000: Musashi 3.1 released
|
||
|
- Fixed bug in m68k_get_reg() that retrieved the wrong value for
|
||
|
the status register.
|
||
|
- Fixed register bug in movec.
|
||
|
- Fixed cpu type comparison problem that caused indexed
|
||
|
addressing modes to be incorrectly interpreted when in m68ec020
|
||
|
mode.
|
||
|
- Added code to speed up busy waiting on some branch instructions.
|
||
|
- Fixed some bfxxx opcode bugs.
|
||
|
|
||
|
14-Aug-2000: Musashi 3.2 released
|
||
|
- Fixed RTE bug that killed the program counter when in m68020
|
||
|
mode.
|
||
|
- Minor fixes in negx and nbcd.
|
||
|
- renamed d68k.c to m68kdasm.c and merged d68k.h into m68k.h.
|
||
|
d68k_read_xxx() instructions have been renamed to
|
||
|
m68k_read_xxx_disassembler().
|
||
|
- Rewrote exception processing and fixed 68020 stack frame
|
||
|
problems.
|
||
|
- FINALLY fixed the mull and divl instructions.
|
||
|
- Added 64-bit safe code fixes.
|
||
|
- Added 64-bit optimizations (these will only be ANSI compliant
|
||
|
under c9x, and so to use them you must turn on M68K_USE_64_BIT
|
||
|
in m68kconf.h).
|
||
|
|
||
|
27-Jan-2001: Musashi 3.3 released
|
||
|
Note: This is the last release of Musashi before I separate the
|
||
|
68020 core.
|
||
|
- Fixed problem when displaying negative numbers in disassembler
|
||
|
- Fixed cpu type selector - was allowing 020 instructions to be
|
||
|
disassembled when in 000 mode.
|
||
|
- Fixed opcode jumptable generator (ambiguous operators in the
|
||
|
test for f-line ops)
|
||
|
- Fixed signed/unsigned problem in divl and mull opcodes (not
|
||
|
sure if this was causing an error but best to be sure)
|
||
|
- Cleaned up the naming scheme for the opcode handlers
|
||
|
|
||
|
02-Feb-2001: Musashi 3.3.1 released
|
||
|
Note: due to the pc-relative requirement for some new drivers
|
||
|
in MAME, I've released this small update.
|
||
|
- Added pc-relative read modes
|
||
|
- small optimizations to the exception handling that will help
|
||
|
when splitting the cores
|
||
|
- Updated the example (oops!)
|