Skip to main content

ASMX - A macro assembler and virtual machine platform running on Scratch

Project description

ASMX

ASMX is a development platform, comprised of a modular assembler, and a VM which runs on Scratch. It allows you to write simple programs in a custom assembly-like language, and then execute them in an educational and visual environment. ASMX is perfect for people who want to learn how computers work with low-level programming, people looking to contribute to a project for the first time, or people who want to create interesting projects whilst still using Scratch.


Features

  • ⚙️ Macro-based Assembler - Powerful macro system with modular namespaces and grammar extensions
  • 🧱 Scratch VM - The virtual machine is implemented in Scratch, making it visual, easy to experiment with, and beginner-friendly
  • 📦 Package System - Create and load your own macro packages, allowing you to extend the instruction set
  • 🕹️ Demo Projects Included - Demo projects like Rock Paper Scissors are included to help you learn and experiment
  • 💡 Made For Learning - Built with simplicity and education in mind, perfect for exploring how computers work

Getting Started

🧰 Requirements

  • Python 3.8 or above
  • A local clone/copy of this repo

🚀 Running the Assembler

Ensure you are in the right directory/folder, before running:

asmx <path to program> <output>

This command turns your .asm file into a .txt file. You can then run this command on the Scratch VM, by clicking "See Inside", then going to the ROM list, right clicking, and then pressing "Import".

Project Structure

asmx/
├── asmx_core/           # Core Python package (assembler logic, macro dispatcher, parser, etc.)
│   ├── macros.py
│   ├── parser.py
│   └── ...
├── packages/            # User-defined + Standard library packages
├── demos/               # Sample/demo programs
├── asmx.py              # Entry point, run this file
README.md
setup.py
setup.cfg
...

Contributing

All contributions are welcome! You could:

  • Fix bugs
  • Write documentation
  • Create new packages
  • Submit new demo programs or games
  • Help add new features
  • Simplify code
  • Write tests
  • Expand the VM's capabilities

If you're interested, just open an issue or pull request. Make sure your code is clean and commented where necessary.

License

This project is licensed under the MIT License. See the LICENSE file for details.

⚠️ Important Note

The ASMX project is still in early development - expect changes and bugs!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asmx-0.1.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asmx-0.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file asmx-0.1.0.tar.gz.

File metadata

  • Download URL: asmx-0.1.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for asmx-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e0b41e44e858728e02c9c3e1b436ca3185b2aaffbed7701382847ff08e82e757
MD5 03eb385f758c0869fc2a51a24da09518
BLAKE2b-256 f57be35b624b52bb9b74116a2cd0b01af62bf04617e13c000752336adf4dd6d2

See more details on using hashes here.

File details

Details for the file asmx-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: asmx-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for asmx-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 525d172ec8e48f524d54866e9d3856b0e6dbb3b1bf3c4d0cf8b3691ca4ea5671
MD5 3928845afa946f77e6728faaa3f2cbbd
BLAKE2b-256 f41caf675f763bf1939af376363bf8962fb37847e097bed2dc7e9c93359e3a66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page