For an introduction to what this code is and does, please see this article.
cd goody make ./goody
Requires the SDL2 headers and libraries to be installed. Also requires a sane development platform (i.e. not Windows) with at least a C++0x compiler.
Verified to compile without warnings and run at in Linux (Fedora 16) and Mac (10.9.4).
Structure of the code
lib/generator/ - Templates and opcode spec for the x86 emulator fetch/decode loop, which is automatically generated.
lib/ - The emulator code itself, including x86, CGA and devices.
tools/runner - The runner/debugger. Look at the source to see the available commands. You can put startup commands in
tools/disassemble - The disassembler. Takes a prefix as a parameter, not a filename, e.g.
prefix, and disassembles
prefix.asm, optionally reading
The disassembler works by following code paths from the entry point and disassembling all the reachable paths. But because it doesn't actually run the code, it misses entry points accessible through jump tables, e.g.
JMP BX. You can manually add
EntryPoint commands in the
Disassembly can be done incrementally. If
prefix.asm already exists, the disassembler will merge the comments in the existing file into the new disassembly. So you can disassemble, add an entry point to the
cfg file, run the disassembler again, and not lose your previous work.
runner can also generate a list of the entry points it actually runs through.
goody/ - The Goody remake proof-of-concept.
The code is licensed under the Whatever/Credit license: you may do whatever you want with the code; if you make something cool, credit is appreciated.
The file goody.com should not be redistributed. I got the unofficial blessing from Gonzo Suarez, one of the original authors, and it can be found in abandonware sites, but still. Don't redistribute it.