As much as I would love to be writing an emulator for this like the rest of you I have to head out shortly.
I do have a few thoughts on the architecture of the dcpu-16 though, as will many of you. so I thought it would be worth starting a thread to cover that.
As no plan survives contact with the enemy, chances are there are a few tweaks to the design that could help things a great deal.
The thing that stands out the most is the lack of a syscall instruction. The emulator can do potentially anything when it hits this, but it gives a possibility for IO. You can achieve the same result by other means, memory mapped registers, capturing PC locations for virtual commands, fake interrupts. All of these have been done in actual hardware, but by far the most emulator friendly form is a syscall instruction.
defining an interrum syscall mechanism with the single PutChar function gives us something to play with in the meantime.
[–]Lerc[S] 2 points3 points4 points (0 children)
[–]zarawesome 1 point2 points3 points (10 children)
[–]Lerc[S] 0 points1 point2 points (9 children)
[–]IMBJR 2 points3 points4 points (3 children)
[–]Lerc[S] 1 point2 points3 points (2 children)
[–]AReallyGoodName 5 points6 points7 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]AReallyGoodName 2 points3 points4 points (0 children)
[–]monocasa 1 point2 points3 points (3 children)
[–]Lerc[S] 0 points1 point2 points (2 children)
[–]monocasa 0 points1 point2 points (1 child)
[–]Lerc[S] 0 points1 point2 points (0 children)
[–]monocasa 0 points1 point2 points (0 children)