Skip to content
A Python implementation of Notch's DCPU-16 (complete with assembler, disassembler, debugger and video terminal implementations) http://jtauber.github.com/dcpu16py/
Python
Find file
Latest commit 89acf95 @jtauber PEP8 compliance
Failed to load latest commit information.
dcpu16os @ 9ce8dc6 changed extension so GitHub picks up on language as DCPU-16 assembly
examples @ 32ec88f changed extension so GitHub picks up on language as DCPU-16 assembly
plugins
terminals PEP8 compliance
test_binaries Add hello2 and fibonacci test binaries
.gitignore added gitignore with pyc and obj files
.gitmodules added operating system as submodule
LICENSE added license; fixes #2
README.md Fix README.
asm.py
asm_pyparsing.py PEP8 compliance
dcpu16.py PEP8 compliance
disasm.py whitespace
emuplugin.py PEP8 compliance
example.dasm16 changed extension so GitHub picks up on language as DCPU-16 assembly
tests.py PEP8 compliance
tox.ini PEP8 compliance

README.md

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 :-)

Status

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.obj will assemble Notch's example to object code
  • ./disasm.py example.obj will disassemble the given object code
  • ./dcpu16.py example.obj will execute it (but won't show anything without extra options)

There is also an experimental pyparsing-based assembler ./asm_pyparsing.py contributed by Peter Waller. You'll need to pip install pyparsing to run it.

./dcpu16.py takes a number of options:

  • --debug runs the emulate in debug mode, enabling you to step through each instruction
  • --trace dumps the registers and stack after every step (implied by --debug)
  • --speed outputs the speed the emulator is running at in kHz
  • --term TERM specifies a terminal to use for text output (null, debug, curses, pygame or qt)

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.

Examples

Now see https://github.com/jtauber/DCPU-16-Examples

Something went wrong with that request. Please try again.