Files
forth_bootslop/references/ForthNotes/Repo.md
2026-02-19 16:16:24 -05:00

466 lines
17 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Repo
**Source:** https://github.com/nimblemachines/muforth#under-active-development
GitHub - nimblemachines/muforth: A simple, indirect-threaded Forth, written in C; for target compiling; runs on Linux, BSD, OSX, and Cygwin
[Skip to content](#start-of-content)
## Navigation Menu
Toggle navigation
[Sign in](/login?return_to=https%3A%2F%2Fgithub.com%2Fnimblemachines%2Fmuforth)
Appearance settings
* Platform
+ AI CODE CREATION
- [GitHub CopilotWrite better code with AI](https://github.com/features/copilot)
- [GitHub SparkBuild and deploy intelligent apps](https://github.com/features/spark)
- [GitHub ModelsManage and compare prompts](https://github.com/features/models)
- [MCP RegistryNewIntegrate external tools](https://github.com/mcp)
+ DEVELOPER WORKFLOWS
- [ActionsAutomate any workflow](https://github.com/features/actions)
- [CodespacesInstant dev environments](https://github.com/features/codespaces)
- [IssuesPlan and track work](https://github.com/features/issues)
- [Code ReviewManage code changes](https://github.com/features/code-review)
+ APPLICATION SECURITY
- [GitHub Advanced SecurityFind and fix vulnerabilities](https://github.com/security/advanced-security)
- [Code securitySecure your code as you build](https://github.com/security/advanced-security/code-security)
- [Secret protectionStop leaks before they start](https://github.com/security/advanced-security/secret-protection)
+ EXPLORE
- [Why GitHub](https://github.com/why-github)
- [Documentation](https://docs.github.com)
- [Blog](https://github.blog)
- [Changelog](https://github.blog/changelog)
- [Marketplace](https://github.com/marketplace)
[View all features](https://github.com/features)
* Solutions
+ BY COMPANY SIZE
- [Enterprises](https://github.com/enterprise)
- [Small and medium teams](https://github.com/team)
- [Startups](https://github.com/enterprise/startups)
- [Nonprofits](https://github.com/solutions/industry/nonprofits)
+ BY USE CASE
- [App Modernization](https://github.com/solutions/use-case/app-modernization)
- [DevSecOps](https://github.com/solutions/use-case/devsecops)
- [DevOps](https://github.com/solutions/use-case/devops)
- [CI/CD](https://github.com/solutions/use-case/ci-cd)
- [View all use cases](https://github.com/solutions/use-case)
+ BY INDUSTRY
- [Healthcare](https://github.com/solutions/industry/healthcare)
- [Financial services](https://github.com/solutions/industry/financial-services)
- [Manufacturing](https://github.com/solutions/industry/manufacturing)
- [Government](https://github.com/solutions/industry/government)
- [View all industries](https://github.com/solutions/industry)
[View all solutions](https://github.com/solutions)
* Resources
+ EXPLORE BY TOPIC
- [AI](https://github.com/resources/articles?topic=ai)
- [Software Development](https://github.com/resources/articles?topic=software-development)
- [DevOps](https://github.com/resources/articles?topic=devops)
- [Security](https://github.com/resources/articles?topic=security)
- [View all topics](https://github.com/resources/articles)
+ EXPLORE BY TYPE
- [Customer stories](https://github.com/customer-stories)
- [Events & webinars](https://github.com/resources/events)
- [Ebooks & reports](https://github.com/resources/whitepapers)
- [Business insights](https://github.com/solutions/executive-insights)
- [GitHub Skills](https://skills.github.com)
+ SUPPORT & SERVICES
- [Documentation](https://docs.github.com)
- [Customer support](https://support.github.com)
- [Community forum](https://github.com/orgs/community/discussions)
- [Trust center](https://github.com/trust-center)
- [Partners](https://github.com/partners)
* Open Source
+ COMMUNITY
- [GitHub SponsorsFund open source developers](https://github.com/sponsors)
+ PROGRAMS
- [Security Lab](https://securitylab.github.com)
- [Maintainer Community](https://maintainers.github.com)
- [Accelerator](https://github.com/accelerator)
- [Archive Program](https://archiveprogram.github.com)
+ REPOSITORIES
- [Topics](https://github.com/topics)
- [Trending](https://github.com/trending)
- [Collections](https://github.com/collections)
* Enterprise
+ ENTERPRISE SOLUTIONS
- [Enterprise platformAI-powered developer platform](https://github.com/enterprise)
+ AVAILABLE ADD-ONS
- [GitHub Advanced SecurityEnterprise-grade security features](https://github.com/security/advanced-security)
- [Copilot for BusinessEnterprise-grade AI features](https://github.com/features/copilot/copilot-business)
- [Premium SupportEnterprise-grade 24/7 support](https://github.com/premium-support)
* [Pricing](https://github.com/pricing)
Search or jump to...
# Search code, repositories, users, issues, pull requests...
Search
Clear
[Search syntax tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax)
# Provide feedback
We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
# Saved searches
## Use saved searches to filter your results more quickly
Name
Query
To see all available qualifiers, see our [documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax).
Cancel
Create saved search
[Sign in](/login?return_to=https%3A%2F%2Fgithub.com%2Fnimblemachines%2Fmuforth)
[Sign up](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=nimblemachines%2Fmuforth)
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
[nimblemachines](/nimblemachines)
/
**[muforth](/nimblemachines/muforth)**
Public
* [Notifications](/login?return_to=%2Fnimblemachines%2Fmuforth) You must be signed in to change notification settings
* [Fork
34](/login?return_to=%2Fnimblemachines%2Fmuforth)
* [Star
153](/login?return_to=%2Fnimblemachines%2Fmuforth)
A simple, indirect-threaded Forth, written in C; for target compiling; runs on Linux, BSD, OSX, and Cygwin
[muforth.dev/](https://muforth.dev/ "https://muforth.dev/")
### License
[View license](/nimblemachines/muforth/blob/master/LICENSE)
[153
stars](/nimblemachines/muforth/stargazers) [34
forks](/nimblemachines/muforth/forks) [Branches](/nimblemachines/muforth/branches) [Tags](/nimblemachines/muforth/tags) [Activity](/nimblemachines/muforth/activity)
[Star](/login?return_to=%2Fnimblemachines%2Fmuforth)
[Notifications](/login?return_to=%2Fnimblemachines%2Fmuforth) You must be signed in to change notification settings
* [Code](/nimblemachines/muforth)
* [Issues
17](/nimblemachines/muforth/issues)
* [Pull requests
1](/nimblemachines/muforth/pulls)
* [Actions](/nimblemachines/muforth/actions)
* [Projects
0](/nimblemachines/muforth/projects)
* [Security
0](/nimblemachines/muforth/security)
* [Insights](/nimblemachines/muforth/pulse)
Additional navigation options
* [Code](/nimblemachines/muforth)
* [Issues](/nimblemachines/muforth/issues)
* [Pull requests](/nimblemachines/muforth/pulls)
* [Actions](/nimblemachines/muforth/actions)
* [Projects](/nimblemachines/muforth/projects)
* [Security](/nimblemachines/muforth/security)
* [Insights](/nimblemachines/muforth/pulse)
# nimblemachines/muforth
master
[Branches](/nimblemachines/muforth/branches)[Tags](/nimblemachines/muforth/tags)
Go to file
Code
Open more actions menu
## Folders and files
| Name | | Name | Last commit message | Last commit date |
| --- | --- | --- | --- | --- |
| Latest commit History[3,159 Commits](/nimblemachines/muforth/commits/master/) 3,159 Commits | | |
| [.vim](/nimblemachines/muforth/tree/master/.vim ".vim") | | [.vim](/nimblemachines/muforth/tree/master/.vim ".vim") | | |
| [doc](/nimblemachines/muforth/tree/master/doc "doc") | | [doc](/nimblemachines/muforth/tree/master/doc "doc") | | |
| [mu](/nimblemachines/muforth/tree/master/mu "mu") | | [mu](/nimblemachines/muforth/tree/master/mu "mu") | | |
| [scripts](/nimblemachines/muforth/tree/master/scripts "scripts") | | [scripts](/nimblemachines/muforth/tree/master/scripts "scripts") | | |
| [src](/nimblemachines/muforth/tree/master/src "src") | | [src](/nimblemachines/muforth/tree/master/src "src") | | |
| [talks](/nimblemachines/muforth/tree/master/talks "talks") | | [talks](/nimblemachines/muforth/tree/master/talks "talks") | | |
| [.gitattributes](/nimblemachines/muforth/blob/master/.gitattributes ".gitattributes") | | [.gitattributes](/nimblemachines/muforth/blob/master/.gitattributes ".gitattributes") | | |
| [BUILDING](/nimblemachines/muforth/blob/master/BUILDING "BUILDING") | | [BUILDING](/nimblemachines/muforth/blob/master/BUILDING "BUILDING") | | |
| [LICENSE](/nimblemachines/muforth/blob/master/LICENSE "LICENSE") | | [LICENSE](/nimblemachines/muforth/blob/master/LICENSE "LICENSE") | | |
| [README.md](/nimblemachines/muforth/blob/master/README.md "README.md") | | [README.md](/nimblemachines/muforth/blob/master/README.md "README.md") | | |
| View all files | | |
## Repository files navigation
* [README](#)
* [License](#)
# What is muforth?
muforth is a small, simple, fast, indirect-threaded code (ITC) Forth intended
for use as a cross-compiler for microcontrollers and other embedded devices.
It is written in C and its core is very portable. Because of its Forth nature,
it is naturally extensible, scriptable, and customizable.
muforth is very well-suited to interactive coding, debugging, and exploration,
and is a great tool for bringing up new hardware.
It has support in varying degrees of completeness for a number of
different architectures and chip families.
* [8051](/nimblemachines/muforth/blob/master/mu/target/8051)
* [ARMv6-m](/nimblemachines/muforth/blob/master/mu/target/ARM/v6-m) (aka Cortex-M0/M0+)
* [ARMv7-m](/nimblemachines/muforth/blob/master/mu/target/ARM/v7-m) (aka Cortex-M3/M4/M7)
* [AVR](/nimblemachines/muforth/blob/master/mu/target/AVR) (Atmel/Microchip)
* [HC08 and HCS08](/nimblemachines/muforth/blob/master/mu/target/S08) (Motorola/Freescale/NXP)
* [MSP430](/nimblemachines/muforth/blob/master/mu/target/MSP430) (TI)
* [PIC18](/nimblemachines/muforth/blob/master/mu/target/PIC18) (Microchip)
* [RISC-V](/nimblemachines/muforth/blob/master/mu/target/RISC-V) (initially, the SiFive FE310 and GigaDevice
GD32VF103)
# Tethered vs self-hosted
Unlike a "self-hosted" Forth, where the target contains the dictionary, the
text interpreter, and all the tools necessary for assembling and compiling
code, muforth supports a *tethered* development model. muforth runs on the
*host* machine, compiling code and data that are later copied to the *target*
machine and executed there.
Because the dictionary and all the compilation tools reside on the *host*,
only the *compiled* code and data reside on the target. This makes it possible
to target *very* small devices that only have a few kilobytes of flash and a
few hundred bytes of RAM. In contrast, a self-hosted Forth often needs 16 KiB
(or more) of flash to be useful, and consumes RAM for the text interpreter and
compiler.
The host machine is also orders of magnitude faster than the target, so doing
the compilation on the host is essentially instantaneous.
# Why yet another Forth?
I initially wrote muforth because I wanted to try out some implementation
ideas. The core language primitives are written in C, but initially muforth
compiled Forth words via a simple native code compiler for the x86. I quickly
realized that simplicity and portability were more important than speed. The
current implementation is a straightforward indirect-threaded Forth - and it
is *quite* fast!
Its implementation is no longer the point. Its sole reason for existing is to
be a cross-compiler for *other* Forths, and their implementations are in no
way tied to muforths. In fact, muforth can be used to compile *any* sort of
code onto the target. I've used it very successfully as a smart assembler for
writing AVR and S08 code.
By keeping it small and simple, it is much more likely to be a useful tool
that people can customize.
Its [BSD licensed](/nimblemachines/muforth/blob/master/LICENSE), so do what you want with it! Id love to hear
about innovative or unusual uses of muforth.
# Starting points
[BUILDING](/nimblemachines/muforth/blob/master/BUILDING) will tell you how to build muforth. Its very simple.
Look in [mu/target/](/nimblemachines/muforth/blob/master/mu/target) to find a target that interests you. There is
generally a `mu/target/<target-name>/build.mu4` that loads the cross-build
environment. Use it as an “index” to find the assembler, disassembler,
meta-compiler, kernel, and other key pieces of code.
# Documentation
Sadly, there isnt a lot of documentation right now. A good place to start is
to read the source.
The code both the C code that implements the Forth virtual machine and the
muforth code that does everything else is carefully and in some cases
extensively (even obsessively!) commented. Right now your best source of
documentation is the code! Luckily for you, there isnt that much of it, so
reading it is actually possible. Thats part of the point of muforth; I want
it to be a [convivial tool](https://www.nimblemachines.com/convivial-tool/).
The heart of the system is the Forth code that muforth reads when it first
starts: [mu/startup.mu4](/nimblemachines/muforth/blob/master/mu/startup.mu4). Youll learn a lot by reading this!
[muforth.dev](https://muforth.dev/) will
eventually host the muforth documentation. At the moment, it is a collection
of [journals, essays, and “getting started” pages](https://muforth.dev/all-pages/).
# News
Follow [@muforth.dev](https://bsky.app/profile/muforth.dev) for updates about
the project and related things (eg, interesting development boards) that I'm
thinking about.
# Talks
In March 2008 I gave a [talk](https://vimeo.com/859408) about bootstrapping,
muforth, and [convivial tools](https://www.nimblemachines.com/convivial-tool/).
Warning: I wave my arms around a lot, and the audio and video quality isnt
that great, but you might find it interesting, or at least amusing.
Its also hard to see my slides. If you want to “follow along”,
[download my slides](https://raw.githubusercontent.com/nimblemachines/muforth/master/talks/2008-mar-30-PNCA),
and use `less` to view them ideally in a text window that is at least 30
lines high like so:
```
less -30 ~/muforth/talks/2008-mar-30-PNCA
```
[![March 2008 talk on Vimeo](https://user-images.githubusercontent.com/3320/214488827-47171f1b-5221-44d0-b9d9-7febcff83628.png)](https://vimeo.com/859408)
# Above all, enjoy!
## About
A simple, indirect-threaded Forth, written in C; for target compiling; runs on Linux, BSD, OSX, and Cygwin
[muforth.dev/](https://muforth.dev/ "https://muforth.dev/")
### Resources
[Readme](#readme-ov-file)
### License
[View license](#License-1-ov-file)
### Uh oh!
There was an error while loading. Please reload this page.
[Activity](/nimblemachines/muforth/activity)
### Stars
[**153**
stars](/nimblemachines/muforth/stargazers)
### Watchers
[**20**
watching](/nimblemachines/muforth/watchers)
### Forks
[**34**
forks](/nimblemachines/muforth/forks)
[Report repository](/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fnimblemachines%2Fmuforth&report=nimblemachines+%28user%29)
## [Releases](/nimblemachines/muforth/releases)
No releases published
## [Packages 0](/users/nimblemachines/packages?repo_name=muforth)
No packages published
### Uh oh!
There was an error while loading. Please reload this page.
## [Contributors 4](/nimblemachines/muforth/graphs/contributors)
### Uh oh!
There was an error while loading. Please reload this page.
## Languages
* [Forth
90.9%](/nimblemachines/muforth/search?l=forth)
* [Assembly
3.3%](/nimblemachines/muforth/search?l=assembly)
* [Lua
2.9%](/nimblemachines/muforth/search?l=lua)
* [C
2.1%](/nimblemachines/muforth/search?l=c)
* [Roff
0.3%](/nimblemachines/muforth/search?l=roff)
* [Shell
0.2%](/nimblemachines/muforth/search?l=shell)
* Other
0.3%
## Footer
© 2026 GitHub, Inc.
### Footer navigation
* [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
* [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
* [Security](https://github.com/security)
* [Status](https://www.githubstatus.com/)
* [Community](https://github.community/)
* [Docs](https://docs.github.com/)
* [Contact](https://support.github.com?tags=dotcom-footer)
* Manage cookies
* Do not share my personal information
You cant perform that action at this time.