A Python implementation of Notch's DCPU-16.
Complete with assembler, disassembler, debugger and video terminal implementations.
See http://0x10c.com/doc/dcpu-16.txt for specification of the CPU.
Notch apparently started doing a 6502 emulator first. Given I did one in Python https://github.com/jtauber/applepy it only seems fitting I now do a DCPU-16 implementation in Python too :-)
Runs a number of example programs successfully. Should be feature-complete at the CPU level.
A dissassembler and (two) assemblers are also included as well as the emulator. The emulator includes a debugger.
./asm.py example.dasm16 example.objwill assemble Notch's example to object code
./disasm.py example.objwill disassemble the given object code
./dcpu16.py example.objwill execute it (but won't show anything without extra options)
There is also an experimental pyparsing-based assembler
contributed by Peter Waller. You'll need to
pip install pyparsing to run it.
./dcpu16.py takes a number of options:
--debugruns the emulate in debug mode, enabling you to step through each instruction
--tracedumps the registers and stack after every step (implied by
--speedoutputs the speed the emulator is running at in kHz
--term TERMspecifies a terminal to use for text output (
I'm working on an operating system for the DCPU-16 at https://github.com/jtauber/dcpu16os and also plan an implementation of Forth at some point.