Markus Persson이 현재 개발 중인 게임 0x10c에서 우주선을 제어하기 위한 목적으로 개발 중인 가상의 16비트 컴퓨터 명세. 게임 상에서는 일종의 IBM PC와 같은 지위를 가지고 있는 것으로 가정하고 있는 것 같다.
0x10c가 프로그래밍게임의 요소를 가지게 된 일등 공신으로서, 레딧에 dcpu16 서브레딧이 따로 있을 정도이다. 그리고 Persson은 이 서브레딧에다가 최신 명세를 올린다. 거의 공식 창구 취급. 게다가 이걸 해 보겠다고 어셈블리를 배우겠다는 족속들까지 생겨나서, sanxiyn은 DLX, LC-3이나 MIX/MMIX 등의 교육용 아키텍처를 위협하는 새로운 대안이 아니냐는 농담 아닌 얘기를 하기까지 했다.
아래 서술에서는 2012년 4월 현재 최신판인 1.7 명세를 기준으로 한다.
게임의 기술적 배경이 1988년을 기준으로 삼고 있기 때문에 DCPU-16도 그 즈음의 아키텍처랑 비스무리하게 생겼…어야 할 것 같은데 사실은 에뮬레이션을 간단하게 하기 위해 좀 더 구린 편이다. 기술적으로는:
PC
를 직접 건들 수 있어서 모든 종류의 브랜치는 SET PC, …
4)와 같은 형태로 구현된다(…). 조건부 브랜치는 IFE X, Y; SET PC, …
와 같이 조건에 따라 다음 명령(그게 몇 워드라 하더라도)을 건너 뛰는 형태로 구현된다.HWN
/HWQ
를 사용하여 하드웨어 나열(enumeration)을 할 수 있으며, HWI
를 사용해서 하드웨어에 인터럽트를 보낼 수도 있다. 반대로 하드웨어는 활성화된 경우(적어도 하드웨어 인터럽트가 한 번 이상 요청되어야 한다) 일반 소프트웨어 인터럽트를 보낼 수도 있으며, 메모리 맵 I/O를 위해 메모리를 건들거나 레지스터를 건들 수도 있다.STI
/STD
같이 autoincrement/decrement를 하는 명령들도 여럿 생겨났다.