Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aanastasiou/dgtools
A toolchain for constrained CPUs
https://github.com/aanastasiou/dgtools
assembler compiler-principles compilers hardware python simulation
Last synced: 4 months ago
JSON representation
A toolchain for constrained CPUs
- Host: GitHub
- URL: https://github.com/aanastasiou/dgtools
- Owner: aanastasiou
- License: apache-2.0
- Created: 2020-03-08T21:16:49.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-03-26T09:18:42.000Z (almost 2 years ago)
- Last Synced: 2024-09-30T06:06:15.682Z (4 months ago)
- Topics: assembler, compiler-principles, compilers, hardware, python, simulation
- Language: Python
- Homepage:
- Size: 8.77 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog
- License: LICENSE
Awesome Lists containing this project
README
![](https://dgtools.readthedocs.io/en/latest/_images/full_banner_dg.png)
# dgtools
dgtools is a complete toolkit for developing software for the [Digirule](https://bradsprojects.com/digirule2/)
series (`2A/2U`) of hardware by [bradsprojects](https://bradsprojects.com).## Overview
1. `dgasm`
* The assembler, accepts a human readable `.asm` text file with Digirule ASM and
produces:
1. A `.dgb` binary file with compiled code ready for simulation by `dgsim.py` .
2. A `.hex` file (in the case of 2U) to be downloaded to the board.
2. `dginspect`* The binary file "inspector", accepts a `.dgb` binary file and produces a human readable
"dump" of the full 256 byte memory range to stdout. It also allows a user to apply certain
modifications to the memory space without re-compiling.
3. `dgsim`* The Digirule Virtual Machine, accepts a `.dgb` binary file and produces:
1. A human readable HTML (themeable) trace of every state change the CPU goes through at each
timestep of execution.
2. An additional `.dgb` file that contains the final state of the memory space at the end of
program execution.
These tools work together to write, debug and simulate code for the Digirule 2 prior to transfering it to the
actual hardware.`dgtools` also includes some "extras", such as:
1. A Sublime text `.dsf` ASM plugin,
2. A console gui (`dgui.py`) that can handle compilation/simulation in one step
3. A code formatter (`dgform.py`), to pretty print source code.
4. [Brainfuck](https://esolangs.org/wiki/Brainfuck) and [Super Stack!](https://esolangs.org/wiki/Super_Stack!) compilers for the Digirule 2U.The most common workflow is to:
1. Use a text editor to write human readable assembly code.
2. Call `dgasm.py` to compile the binary
3. Call `dgsim.py` to run and debug the binary
4. *(Alternatively, call `dgui` to perform both of the above in sequence)*
5. Use `dginspect.py` to check a binary file, get/set values from the virtual machine or key the code in.## Installation
### Pre-requisites
1. Linux
2. Python >=3.6
3. [`virtualenv`](https://pypi.org/project/virtualenv/)### Install from PyPi with pip
* `pip install dgtools`
### Install latest development version
1. Checkout the dgtools repository
2. `> virtualenv -p python3.8 pyenv`
3. `> source pyenv/bin/activate`
4. To start using `dgtools`:
* `pip install -e ./` (From within the `dgtools/` directory that contains the `setup.py` file)
* This will make the `dgtools` scripts callable from any position in the filesystem, as long as the
`pyenv` virtual environment is activated.
5. If you are interested in developing `dgtools` further:
* `pip install -r requirements.txt`## Where to from here?
``dgtools`` documentation is up on [ReadTheDocs](https://dgtools.readthedocs.io/en/latest/) and of course
in ``doc/``.Practical examples of how to use `dgtools` are available in
[this introductory walkthrough](https://dgtools.readthedocs.io/en/latest/introductory_topics.html).Once you familiarise yourself with the tools and Digirule's ASM, you might want to move to
[the advanced walkthrough](https://dgtools.readthedocs.io/en/latest/advanced_topics.html) or
check out other [programming examples](https://dgtools.readthedocs.io/en/latest/code_projects.html)
in `dg_asm_eamples/`.## dgrdo.org
The ASM toolchain along with the brainfuck and Super Stack! compilers is available online at https://www.dgrdo.org.
For more information see [this introduction on its functionality](https://www.dgrdo.org/static/info/about/index.html)Enjoy!
Athanasios Anastasiou