3 ms·
I was just using this the other day! I'm hobbling together a Genesis/MegaDrive emulator in Rust, and also trying to wrap my head around the m68k at the same ti
by totallymike 10y ago
I was just using this the other day!
I'm hobbling together a Genesis/MegaDrive emulator in Rust, and also trying to wrap my head around the m68k at the same time.
It's tough to find good documentation about how the cpu works, and this is a fantastic reference.
- mikepavone 10y agoThe official documentation is actually pretty decent, but it takes a while to get a feel where all the things you need are. It's complicated by the fact that the documentation is split between the 68K family programmer's manual, which has more general info about the architecture across all CPUs in the family, and the 68000/68010 user's manual, which has info specific to those implementations. Motorola's patents for the 68000 are also quite informative (see US patents 4,325,121, 4,296,469 and 4,307,445) if you're interested in the low level details of the implementation. The first of those actually contains a complete microcode/nanocode listing of a pre-release version of the CPU. For Genesis/Megadrive emulation generally, you should check out this thread [1] on SpritesMind. It contains links to other forum topics with useful info about the hardware (68K included) discovered by the community. [1] http://gendev.spritesmind.net/forum/viewtopic.php?f=2&t=2227 http://gendev.spritesmind.net/forum/viewtopic.php?f=2&t=2227
- totallymike 10y agoThis is marvelous. Thank you! I have copies of the two Motorola manuals, and they are comprehensive and quite useful. The OP is tremendously helpful as well because it's a bit higher level. Now I can flip between the manual for opcodes and the tutorial for assembler names and contextual understanding. I'm excited to dig into this thread as well. There's a lot here that looks fascinating. Particularly the microcode exploration, the reference on the sound chip, and the interrupt handling. Not to mention timing information. I haven't gotten much further in my experimentation than rudimentary execution of a few opcodes, and have mostly been floundering around trying to make the code and project feel ergonomic. I'm discovering (and expected) that there is quite a lot of stuff you want to set up early on in a project like this. Mainly debugging and other sundry tooling. I'm away from my laptop, but I'll try to post the code somewhere tomorrow.