DIXY is a virtual hardware development ecosystem that I have built from the ground up in modern C++17.
That is a very good question. I cannot really answer it. I am not sure if the language is turing complete. Someone might find that it is or is not. I would love to know myself. So I am declaring an open challenge to all interested to build something cool with it and share it.
A few years ago I started the concept in JavaScript as an in-browser proof of concept. I wanted to restart the project and make it into something more.
It refers to names of the virtual hardware registers. D[ata], I[instruction], X, Y.
Yeah, that is possible. I did not search the web before naming it. If you hold any kind of trademark on the name, and you have an issue with my use for this non-profit project, please just let me know and I will change the name.
DIXY is an all-in-one development platform that is used through a command line interface (CLI)
There is an assembler, linker, disassembler, emulator, and syntax reference built-in.
Soon there will also be a complete tutorial that will be accessible through the cli as well.
Sort of. This is very specific syntax for DIXY. And it's super easy. Sixteen mnemonics and no complex syntax nor arguments.
No. This emulator is only for running binary DIXY programs that are created by the DIXY Linker process.
No. This disassembler takes a binary DIXY program and outputs DIXY Assembly source.
At the moment there are no prebuilt binaries, so you have to compile DIXY yourself.
You need the DIXY source, CMake version 3+, and a C++17 compatible compiler installed on your machine.
Clone this repository to your machine and use CMake to build the dixy
executable.
Once you have the executable built, you can put it wherever you like and then run it from a terminal/command line.
Follow the instructions on the screen.
Sorry to hear that. Open an issue here on the project's repository and I will try to help you out.
Assuming you have a file myprogram.das
with DIXY Assembly instruction mnemonics in it:
$ dixy assemble myprogram.das myprogram.prg
$ dixy link myprogram.prg myprogram.dxy
$ dixy run myprogram.dxy
$ dixy syntax
Will show you the instruction set that you use.
The virtual hardware of the DIXY emulator is intentionally very simple and highly restrictive by design.
There are four registers and 4k of available memory.
The data pointer register; D, refers to the current selected memory location. The instruction pointer register; I, refers to the current instruction being executed in the running program. The general storage registers X, and Y are used by the instructions to perform arithmetic and copy values to and from memory. These four registers and the 4k of memory, and standard output and input are all that is available for you on this platform.
Cool. Open an issue and ask your question.
Great! Open an issue and let me know!
That is fantastic! Fork this repository, make your contributions and submit a pull request!
Congratulations! If you would like to share it, open an issue and link to the .das or .prg file, or copy/paste the .das or .prg file content into a code block.
Basically, you can do whatever you want as long as you include the original copyright and license notice in any copy of the software/source. (c) 2020, Richard Marks - MIT License See LICENSE.md