WIP The assembler as well as the bytecode interpreter should work as of now. I will create unit tests for both and add a few stdlib functions next. The api and binary format is not yet finalized, expect changes all over the place. As I am writing the tests, I will be modifying / augmenting the spec to correctly handle all features.
TX8 is a fantasy console running custom bytecode from virtual cartridges, featuring sound, music and graphics capabilities. More information in the specification.
The tx8-core C library source code.
tx8-core includes header files which contain types and constants used throughout the TX8
ecosystem and an implementation of a bytecode interpreter.
You can also find the TX8 specification in this repository under spec/
.
The assembler that can translate tx8-Assembly into bytecode files.
The command line tool exposing tx8 to the user. After building (see below), the executable can be found in
build/debug/tx8-cli
. Run it to see how to use it. The cli can run tx8 assembly files and rom files, and
compile tx8 assembly files into rom files.
Example:
tx8-cli build test/hello-world.tx8
tx8-cli run out.txr
To start developing on TX8, you need cmake >= 3.25
, ninja
and clang >= 15
or gcc >= 12
.
MacOS: Apple Clang
is not supported as it is missing modern c++ features this project uses.
Windows: MSVC
and mingw
are not supported because I can't get them to work. Please use clang, it comes with visual studio.
In theory MSVC and mingw should work. If you want to use these tools, and figure out a way how to do so, please tell me :)
Set up the development environment via CC=<C compiler> CXX=<C++ compiler> cmake --preset debug
.
You can then build the test executable via cmake --build --preset debug
and execute it via ctest --preset debug
or directly via build/debug/tx8-test
.
If you are using clangd
, you should link compile_commands.json
via ln -s build/debug/compile_commands.json compile_commands.json
for clangd
to work correctly.
To build the documentation, run doxygen
in the project root directory.
TX8 uses Google Test for unit testing.