User Tools

Site Tools


en:projects:430eforth-workbench:start

430eForth Workbench de|en

430eForth Workbench Project

Making Dr. Chen Hanson Tings 430eForth available for the MSP430 MCU Family.

430eForth with Tools and VIS ( VOCabularies, ITEMs and STICKY Words)

!!! 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 mik.kalus@gmail.com or manfred.mahlow@forth-ev.de . We will make it a part of this project.

430eForth Archives (Ports)

430eForth Environments

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.

Linux OS

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  .

Windows OS

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.

Libs, Modules, Tools

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].

430eForth Core Extension

(MM-220627) 430eforth-x-43n7vis-libs.tar.gz

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 
 

8 Bit Register access

(MM-220531) reg8.tar.gz

ls ./reg8*
 reg8  reg8_2203.xas 
    used: code  mask  data-vocs
provided: reg8 words:
          !  @  bi@  bix  bic  bis  u/i

16 Bit Register access

(MM-220627) reg16.tar.gz

ls ./reg16*
 reg16  reg16-2205.xas 
    used: code  mask  data-vocs
provided: reg16 words:
          !  @  bi@  bix  bic  bis  u/i

GPIO Module access

(MM-220703) gpio-g2553.tar.gz

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

(MM-220705) gpio-fr5969.tar.gz

(nn-yymmdd) gpio-fr5739.tar.gz

LEDs at GPIO pins

(MM-220529) gpio-leds-g2553.tar.gz

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

(MM-220705) gpio-leds-fr5969.tar.gz
msp-exp430fr5969-leds.tar.gz

(nn-yymmdd) gpio-leds-fr5739.tar.gz
msp-exp430fr5739-leds.tar.gz

Data Structures

(MM-220529) struct.tar.gz

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

License

The MIT License is applied to the software and documentation of this 430eForth Workbench Project, unless otherwise is stated explicitly.

en/projects/430eforth-workbench/start.txt · Last modified: 2022-07-25 14:56 by mm