!!! This Wiki Page is still under construction 220725
The 430eForth already has a long history. Dr. Chen Hanson Ting published it in 2014 1), Michael Kalus ported it to the naken_ASM in 2018 3) and Manfred Mahlow added some Tools in 2018 2) and a modern variant of vocabularies and context switching in 2019 4).
430eForth was created for the MSP430G2553 MCU with 16K of Flash and 0.5K of RAM and is still a nice and capable small Forth System. In 2022 we ( MK, MM ) were interested in using the 430eForth with the FR5739 and FR5969 MCU and we were looking for an easy way to port the G2553 image and the related tools.
The idea was, to create a kind of template with the code for the G2553 as reference and basis and the code for a second MCU as an option to be activated with an assembler constant called MCU. That made porting very easy and it became obvious, that there was not much to change.
Any of the here presented 430eForth archives supports two targets, the G2553 and the other one, that gave the archive the name.
Any of this archives can serve as a template for another one. Idenitifying the code portions that need to be changed for the other target is easy by looking for the assembler constant MCU.
The listing for the FR5739 430eforth-x-43n7vis.asm.pdf is a very good example. There the FR5969 listing was used as template.
This Wiki Page is an invitation to use 430eForth, to contribute ports and to contribute source code for words, libs and tools.
Please send your contribution to
firstname.lastname@example.org . We will make it a part of this project.
430eforth-fr5969-43n7vis.tar.gz (minor docu bug fix MM-220724)
430eforth-fr5739-43n7vis.tar.gz (minor docu bug fix MM-220724)
No IDE is required. Only a serial Terminal, a File Manager and an Editor are needed.
Any ( i.e. your prefered ) editor and file manager may be used but the terminal should be a bit specific. It should not only support interactive communication with the embedded Forth System but should also support fast uploading of source code from files and error handling.
e4thcom is a Forth Terminal for Linux that support 430eForth and many other embedded Forth Systems.
For 430eForth please start e4thcom with the options -t 430eforth-xas -p xas:target:lib .
escom 0.1 is a Forth Terminal for Win10 that is based on e4thcom. The first release only supports STM8 eForth and Mecrisp Stellaris but it should be easy to also add support for 430eForth.
Forth source code, published here, may use e4thcom specific terminal directives like #require , #include , #ifdef , #ifndef , … Filenames are in lowercase. Files with a single word name should be loaded with #r[equire], others should be loaded with #i[nclude].
ls ./ int
ls ./lib 2constant b. current +field '>name' wordlist 2over cells @cvoc immed nip 2swap '[char]' data-vocs items previous 2variable compo data-vocs_2204.fs lshift -rot also context dump mask rshift
ls ./utils tester.fs
ls ./xas code code-begin flip lshift ms nip -rot rshift us
ls ./reg8* reg8 reg8_2203.xas
used: code mask data-vocs provided: reg8 words: ! @ bi@ bix bic bis u/i
ls ./reg16* reg16 reg16-2205.xas
used: code mask data-vocs provided: reg16 words: ! @ bi@ bix bic bis u/i
ls ./gpio* gpio gpio-2207.fs gpio-tester
required: reg8.tar.gz used: reg8 2CONSTANT provided: forth words: P1 P2 \ The GPIO Ports that give access to the GPIO Registers. gpio words: SEL2 REN SEL DIR OUT IN \ The GPIO Port Registers (reg8) pin: \ Port Pin defining word
ls ./gpio-leds* gpio-leds gpio-leds-2204.fs
required: reg8.tar.gz gpio-x-tar.gz used: reg8 gpio provided: gpio led words: pin: on off init
Example: MSP-EXP430G2 LEDs msp-exp430g2-leds.tar.gz
\ 430eforth-g2553-43n7vis : msp-exp430g2-leds.fs MM-220526 \ ------------------------------------------------------------------------------ -g2553- \ 430eforth-g2553 only #include gpio #include gpio-leds 0 mask P1 led pin: LED1 6 mask P1 led pin: LED2 \ LEDx init|on|off
ls ./struct* struct struct_2204.fs
used: data-vocs provided: struct struct end struct begin
applied: struct begin ( -- sys 0 ) 1 cells +field name1 ( sys 0 -- sys u1 ) \ untyped data item int field: name2 ( sys u1 -- sys u2 ) \ int type data item struct end ( sys u2 -- ) \ checks sys and creates a constant u/i=u2
The MIT License is applied to the software and documentation of this 430eForth Workbench Project, unless otherwise is stated explicitly.