Sat, 19 Apr 2014 02:19:39 -0600
fixed timing on OSes that set a minimum time for sleeps (previously the main loop code assumed no minimum sleep time; the new version uses longer sleeps less frequently)
philpem@0 | 1 | The history of Musashi for anyone who might be interested: |
philpem@0 | 2 | --------------------------------------------------------- |
philpem@0 | 3 | |
philpem@0 | 4 | Musashi was born out of sheer boredom. |
philpem@0 | 5 | I needed something to code, and so having had fun with a few of the emulators |
philpem@0 | 6 | around, I decided to try my hand at CPU emulation. |
philpem@0 | 7 | I had owned an Amiga for many years and had done some assembly coding on it so |
philpem@0 | 8 | I figured it would be the ideal chip to cut my teeth on. |
philpem@0 | 9 | Had I known then how much work was involved in emulating a chip like this, I |
philpem@0 | 10 | may not have even started ;-) |
philpem@0 | 11 | |
philpem@0 | 12 | |
philpem@0 | 13 | |
philpem@0 | 14 | 12-May-1998: First outline |
philpem@0 | 15 | |
philpem@0 | 16 | 11-Jun-1998: Early disassembler |
philpem@0 | 17 | |
philpem@0 | 18 | 20-Nov-1998: First prototype v0.1 |
philpem@0 | 19 | |
philpem@0 | 20 | 04-Dec-1998: Final prototype v0.4 |
philpem@0 | 21 | |
philpem@0 | 22 | 20-Dec-1998: Beta release of Musashi v0.5 that could run Rastan Saga under MAME |
philpem@0 | 23 | (barely). |
philpem@0 | 24 | |
philpem@0 | 25 | 06-Jan-1999: Musashi 1.0 released |
philpem@0 | 26 | |
philpem@0 | 27 | 17-Mar-1999: Musashi 2.0 released |
philpem@0 | 28 | - Major code overhaul. |
philpem@0 | 29 | - Replaced monolithic codebase with a code generator program. |
philpem@0 | 30 | - Added correct m68000 timing. |
philpem@0 | 31 | - Moved timing into the opcode handlers. |
philpem@0 | 32 | |
philpem@0 | 33 | 25-Mar-1999: Musashi 2.1 released |
philpem@0 | 34 | - Added support for m68010. |
philpem@0 | 35 | - Many bugfixes. |
philpem@0 | 36 | |
philpem@0 | 37 | 13-May-1999: Musashi 2.2 released |
philpem@0 | 38 | - Added support for m68020. |
philpem@0 | 39 | - Lots of bugfixes. |
philpem@0 | 40 | |
philpem@0 | 41 | 05-Apr-2000: Musashi 3.0 released |
philpem@0 | 42 | - Major code overhaul. |
philpem@0 | 43 | - Rewrote code generator program and changed the format of |
philpem@0 | 44 | m68k_in.c. |
philpem@0 | 45 | - Added support for m68ec020. |
philpem@0 | 46 | - Removed timing from the opcode handlers. |
philpem@0 | 47 | - Added correct timing for m68000, m68010, and m68020. |
philpem@0 | 48 | Note: 68020 timing is the cache timing from the manual. |
philpem@0 | 49 | - Removed the m68k_peek_xxx() and m68k_poke_xxx() instructions and |
philpem@0 | 50 | replaced them with m68k_get_reg() and m68k_set_reg(). |
philpem@0 | 51 | - Added support for function codes. |
philpem@0 | 52 | - Revamped m68kconf.h to be easier to configure and more powerful. |
philpem@0 | 53 | - Added option to separate immediate and normal reads. |
philpem@0 | 54 | - Added support for (undocumented) m68000 instruction prefetch. |
philpem@0 | 55 | - Rewrote indexed addressing mode handling. |
philpem@0 | 56 | - Rewrote interrupt handling. |
philpem@0 | 57 | - Fixed a masking bug for m68k_get_reg() when requesting the PC. |
philpem@0 | 58 | - Moved the instruction table sorting routine to m68kmake.c so |
philpem@0 | 59 | that it is invoked at compile time rather than at runtime. |
philpem@0 | 60 | - Rewrote the exception handling routines to support different |
philpem@0 | 61 | stack frames (needed for m68020 emulation). |
philpem@0 | 62 | - Rewrote faster status register and condition code flag handling |
philpem@0 | 63 | functions / macros. |
philpem@0 | 64 | - Fixed function code handling to fetch from program space when |
philpem@0 | 65 | using pc-relative addressing. |
philpem@0 | 66 | - Fixed initial program counter and stack pointer fetching on |
philpem@0 | 67 | reset (loads from program space now). |
philpem@0 | 68 | - A lot of code cleanup. |
philpem@0 | 69 | - LOTS of bugfixes (especially in the m68020 code). |
philpem@0 | 70 | |
philpem@0 | 71 | 28-May-2000: Musashi 3.1 released |
philpem@0 | 72 | - Fixed bug in m68k_get_reg() that retrieved the wrong value for |
philpem@0 | 73 | the status register. |
philpem@0 | 74 | - Fixed register bug in movec. |
philpem@0 | 75 | - Fixed cpu type comparison problem that caused indexed |
philpem@0 | 76 | addressing modes to be incorrectly interpreted when in m68ec020 |
philpem@0 | 77 | mode. |
philpem@0 | 78 | - Added code to speed up busy waiting on some branch instructions. |
philpem@0 | 79 | - Fixed some bfxxx opcode bugs. |
philpem@0 | 80 | |
philpem@0 | 81 | 14-Aug-2000: Musashi 3.2 released |
philpem@0 | 82 | - Fixed RTE bug that killed the program counter when in m68020 |
philpem@0 | 83 | mode. |
philpem@0 | 84 | - Minor fixes in negx and nbcd. |
philpem@0 | 85 | - renamed d68k.c to m68kdasm.c and merged d68k.h into m68k.h. |
philpem@0 | 86 | d68k_read_xxx() instructions have been renamed to |
philpem@0 | 87 | m68k_read_xxx_disassembler(). |
philpem@0 | 88 | - Rewrote exception processing and fixed 68020 stack frame |
philpem@0 | 89 | problems. |
philpem@0 | 90 | - FINALLY fixed the mull and divl instructions. |
philpem@0 | 91 | - Added 64-bit safe code fixes. |
philpem@0 | 92 | - Added 64-bit optimizations (these will only be ANSI compliant |
philpem@0 | 93 | under c9x, and so to use them you must turn on M68K_USE_64_BIT |
philpem@0 | 94 | in m68kconf.h). |
philpem@0 | 95 | |
philpem@0 | 96 | 27-Jan-2001: Musashi 3.3 released |
philpem@0 | 97 | Note: This is the last release of Musashi before I separate the |
philpem@0 | 98 | 68020 core. |
philpem@0 | 99 | - Fixed problem when displaying negative numbers in disassembler |
philpem@0 | 100 | - Fixed cpu type selector - was allowing 020 instructions to be |
philpem@0 | 101 | disassembled when in 000 mode. |
philpem@0 | 102 | - Fixed opcode jumptable generator (ambiguous operators in the |
philpem@0 | 103 | test for f-line ops) |
philpem@0 | 104 | - Fixed signed/unsigned problem in divl and mull opcodes (not |
philpem@0 | 105 | sure if this was causing an error but best to be sure) |
philpem@0 | 106 | - Cleaned up the naming scheme for the opcode handlers |
philpem@0 | 107 | |
philpem@0 | 108 | 02-Feb-2001: Musashi 3.3.1 released |
philpem@0 | 109 | Note: due to the pc-relative requirement for some new drivers |
philpem@0 | 110 | in MAME, I've released this small update. |
philpem@0 | 111 | - Added pc-relative read modes |
philpem@0 | 112 | - small optimizations to the exception handling that will help |
philpem@0 | 113 | when splitting the cores |
philpem@0 | 114 | - Updated the example (oops!) |