Skip to content

cdm-processors/cdm-devkit

Repository files navigation

Developer tools for Coco-de-Mer processors

Installation

  1. Download latest version

  2. Install Python package from .whl file

    • Run pip install cdm-devkit-x.x.x.whl

    Package will be published to PyPI soon

  3. Install VS Code extension from .vsix file

    Remove all other extensions that add support for CdM processors

    • Open Command Palette Ctrl+Shift+P
    • Type vsix
    • Select Install from VSIX
    • Select vscode-cdm-extension-x.x.x.vsix
    • Read more

    Extension will be published to VS Code Marketplace soon

Development kit contents

After installation you get several components:

  • CLI Programs

    • cocas - assembler for CdM processors
    • cocodump - disassembler for CdM processors
    • synthm - secondary decoder synthesis utility
    • (coming soon)
  • VS Code Extension

    • Assembler language support for all CdM processors (syntax highlighting and code snippets)
    • Debug support (coming soon)
  • cdm-devkit-misc archive

    • Processor implementations (./)

    • Logisim libraries (jar/)

      • logisim-banked-memory - banked memory for cdm16
      • logisim-cdm-emulator - emulated CdM processors
    • Code and scheme examples (examples/)

Getting started

Check out our Getting Stated guide.

Documentation

We are working on documentation, it will be available soon.

However, some docs are available in docs/ directory.

Report a bug

You can report a bug with GitHub Issues.

  • Open new issue here

  • Use a template

  • Provide a proper name and description of a problem

  • Provide information on how to reproduce a bug

Setting up development environment

  • Python-based projects use Poetry as build system

    • Install Poetry

    • Run poetry install to download dependencies

    cocas uses ANTLR to parse assembly language

    • antlr4-python3-runtime is needed to run cocas and is installed with other dependencies

    • However, if you want to fiddle with grammar files and generate new parser you would need to install antlr4-tools, this package is installed with development dependencies (Read more)

  • Java-based projects use Gradle as build system

    • Install JDK

    • gradlew script should download Gradle automatically on first run

  • VS Code Extension uses official tools

Building

Building individual projects

  • Python-based projects:

    • Run poetry build
  • Java-based projects:

    • Navigate to project folder

    • Run ./gradlew jar (on Unix)

    • Run .\gradlew.bat jar (on Windows)

  • VS Code extension:

    • Navigate to vscode-cdm-extension/

    • Run vsce package

Building all projects at once

There is a Makefile that will build all projects and prepare files for distribution

  • Run make to build all projects

Set VERSION variable if you want to specify project version

  • Example: make VERSION=1.2.3
  • VERSION should be valid SemVer version

You can get make on Windows from GnuWin32 project.

  • For Windows 10 and above:
    • Run winget install GnuWin32.Make
    • Maybe you would need to add bin/ directory of make to your PATH
  • Using Chocolatey:
    • Run choco install make
  • You can read about other installation methods here

Contributing

  • All contributions should be done via pull requests.

  • Commit messages should be written according to these guidelines

  • Commit messages should start with a scope identifier - project name surrounded by square brackets. That will help to determine which project commit belongs to.

Example: [cocas] Add new feature

Commits related to whole repository shouldn't use scope identifier

Possible scope identifiers are:

  • General:

    • docs
    • ci/cd
    • examples
    • tests
  • Processor implementations:

    • cdm*
  • Projects:

    • cocas
    • cocoemu
    • cocodump
    • synthm
    • logisim-banked-memory
    • logisim-cdm-emulator
    • logisim-runner
    • vscode-cdm-extension

Contact us

  • If you have a proposal or a suggestion you are free to open a GitHub Issue here.

  • For other questions contact: