Copyright (©) 2024-2025 Frosty515
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
- 64-bit architecture
- Full design can be found in docs/design.md
- Design of some internal aspects can be found in docs/internals.md
- CMake
- Ninja
- A C/C++ compiler that supports C23 and C++23
- run
sudo apt update && sudo apt install build-essential cmake ninja-buildto install dependencies
- run
sudo dnf install gcc gcc-c++ cmake ninja-buildto install dependencies
- run
sudo pacman -Syu base-devel cmake ninjato install dependencies
- run
sudo emerge --ask --verbose sys-devel/gcc sys-devel/binutils dev-build/cmake dev-build/ninjato install dependencies
- run
mkdir build && cd buildto create a build directory and enter it - run
cmake -GNinja ..to generate the build files.-DBUILD_CONFIG=<config>can be added to the cmake command to specify the build type.<config>can beDebugorRelease. It defaults toRelease.-DBUILD_ARCHITECTURE=<arch>can be added to the cmake command to specify the architecture. Currently, the only supported architecture isx86_64. It defaults tox86_64.-DENABLE_SDL=ONcan be added to the cmake command to enable the SDL backend for the video device. It defaults toOFF. Note that the SDL backend is very experimental. - run
ninja installto build and install to the src directory. The binaries will be in thebindirectory in the src directory.
- In the source directory, run
./bin/Assembler < -p path/to/assembly > < -o path/to/binary >to assemble the assembly file. - For more options, run
./bin/Assembler --helpto see the available options.
- In the source directory, run
./bin/Emulator < -p path/to/binary > [ -m RAM size ]to run the emulator. - The RAM size is optional and defaults to 1 MiB.
- For more options, run
./bin/Emulator --helpto see the available options.
- The assembler and emulator are still in development and may not work as expected. Please report any issues you find.
- make fancy docs
- add better macros
- firmware spec
- maybe make a gtk backend for the video device or make it less buggy
- start writing firmware
- llvm backend
- make examples
- custom fs
- custom executable format