Skip to content

Releases: TG9541/stm8ef

Bugfix #85, Test automation with Travis-CI

02 Oct 20:24
Compare
Choose a tag to compare

Bugfix #75 $" broken

@Eelkhoorn found that code with $" crashed which was a regression introduced in c2ee779. There are now automated tests in place that prevent similar bugs in the future. The fix was already included in v2.2.17.pre.

Bugfix #85 In NVM mode CREATE makes faulty dictionary link

Dveloping automated tests revealed issue #85 which is a regression from 088d9d7. The bug was only visible if words in RAM were defined before running CREATE or VARIABLE in NVM mode.

Build- and Test-Automation

This is the first time STM8EF was automatically deployed by a Continuous Integration framework with build- and test-automation. The build and test run of this release can be accessed here. From now on there is at least a hint of quality assurance in this project.

The deployment lacks automated renaming of the release zip file. This will be added in the near future. Also smoke tests for all binaries will be added.

Acknowledgments

The test automation in this release is a big step forward. Special thanks to:

  • @larsbrinkhoff for providing the first Travis-CI configuration
  • Dániel Drótos for uCsim
  • Travis-CI for a great CI service, free of charge for OpenSource projects
  • all who contributed, helped testing, or filed issues

Bug-Fix $", Build environment containerization for CI

30 Sep 11:45
Compare
Choose a tag to compare

Bug-Fix $"

$" was broken since c2ee779 which removed some supposedly unnecessary code (except is wasn't). This release fixes the issue by reverting the change.

Build environment containerization for CI

The simulation environment had some installation dependent properties which were in conflict with the needs of straight-forward containerization (see https://github.com/TG9541/docker-sdcc).

Important bug-fix for regression introduced in v2.2.13

24 Sep 08:28
Compare
Choose a tag to compare

This addresses issue #69 which affects the releases v2.2.13, v2.2.14, and v2.2.15. Please get the new binary!

The bug is rather sneaky: under certain conditions compiling to Flash (e.g. the sequence NVM : test ; RAM, COLD) worked only once after flashing the binary. It's not clear why it always worked when I tested it, but this incident certainly calls for better QA. Sorry about it!

The release also includes a "runs-on-my-machine" fix for #72 "Containerize the SDCC and uCsim toolchain, prepare improved test automation" to prepare automated release testing using continuous integration ( @larsbrinkhoff thanks again! ).

Support for e4thcom and STM8S001J3, faster NVM compilation

16 Sep 18:04
Compare
Choose a tag to compare

BINARY REMOVED DUE TO ISSUE #69

Please use the latest release instead!

e4thcom Support

e4thcom is a nifty terminal for embedded Forth systems that supports #include and basic dependency management with #require. The author contributed support for STM8EF that works with 2-wire (half-duplex), and 3-wire (full-duplex) serial interfaces. Thanks a lot!

FILE ... HAND is now disabled by default because the method used in e4thcom works better (e.g. a decent error indication with the BEL character, and indication of compile mode with OK like in noForth).

STM8S001J3M3 Support

STM8EF now supports the latest member of the STM8S low-density family: the STM8S001J3M3 in a hobby-friendly SO8N package.

STM8S001J3M3

The default configuration uses the STM8S UART1 in half-duplex mode (see issue #57 ) for the console. Connecting a PC-UART works as described in 2-wire communication​. Depending on your UART you may need a 10k pull-up resistor. Note that the risk that PD1/SWIM gets blocked is significantly reduced by using pin8 for the console. Alternating usage of pin8 for reading an analog sensor, or console communication, might work, too.

The default configuration uses the STM8S UART1 in half-duplex mode (see issue #57 ) for the console. Connecting a PC-UART works as explained in 2-wire communication. Depending on your UART you may need a 10k pull-up resistor. Note that there is very little risk that PD1/SWIM lock gets locked on your device when pin8 is used for the console. Alternative use of the pin for reading an analog sensor might work.

Faster Compilation in NVM Mode

Let's just say it's faster now (much faster, indeed), and let's forget that it should have been like that from the start ;-)

Forget Release v2.2.14

The binary release was OK, but due to a merge hick-up the source code in master was rubbish. Thanks to @timsoer for reporting issue #59 !

Improved vocabulary configuration, bugfix HERE in NVM mode, reduced code size

09 Sep 12:52
Compare
Choose a tag to compare

BINARY REMOVED DUE TO ISSUE #69

Please use binary v2.2.16 instead!

Improved vocabulary configuration

Thanks to the header macros HEADER and HEADFLG vocabulary linking can now be configured word-by-word. This was used for implementing general unlinking ( @RigTig 's use case), and for removing the conditional assembly for vocabulary options like WORDS_LINKINTER. Refer to issues #53, #52 and #27.

Bugfix HERE

The CP address returned by HERE depended in memory mode NVM returned a pointer to the CP in RAM when it was used in the interpreter mode. This made writing words that use , or C, impossible (e.g. the tree traversal example). Please refer to the details in technical background of Compile to Flash.

Reduced code size:

  • several words were recoded, including ^h (also see #50, thanks to @larsbrinkhoff)
  • some words like EXIT and NUF were removed
  • improved vocabulary selection
  • FILE and HAND are now removed by default (please e4thcom)

The code size for MINDEV is now 4783 bytes, about 200 bytes less than before.

A Library, Modularity, and Other Enhancements

05 Aug 12:29
Compare
Choose a tag to compare

BINARY REMOVED DUE TO ISSUE #69

Please use binary v2.2.16 instead!

A Library

Any Forth system with some self respect has a library. To initiate building one #include file conventions were adopted from e4thcom.

  • initial Forth library in code repository, and binary release (issue #43 )with e4thcom style #include and #require
  • the library is part of this binary release
  • default HAS_ALIAS=1 allows immediate words in RAM while compiling to NVM (issue #43 )
  • make BOARD=xxxx forth target uses tools/codeloadTCP.py and uCsim for code generation with #include feature (issue #32 )
  • temporary vocabularies supported through RAMmark, and RAMdrop

More Modularity

  • dictionary headers can now be selected on a board-by-board basis (issue #32 )
  • serial interface code was factored out into sser_fdx.inc (full-duplex), and sser_hdx.inc (half-duplex)

Other Enhancements

  • software full-duplex serial interface, e.g. for e4thcom (issue #41 )
  • board W1209-FD with full-duplex serial interface (issue #42 )
    • key "+" / PC4: RxD
    • key "-" / PC5: TxD
  • some code size savings

Lots of WiP: issues #32, #41, #42, #43

22 Jul 21:10
Compare
Choose a tag to compare
Pre-release
  • dictionary headers can be selected on a board-by-board basis (issue #32 )
  • make BOARD=xxxx forth target uses tools/codeloadTCP.py and uCsim for code generation with #include feature (issue #32 )
  • software full-duplex serial interface, e.g. for e4thcom (issue #41 )
  • board W1209-FD with full-duplex serial interface (issue #42 )
    • key "+" / PC4: RxD
    • key "-" / PC5: TxD
  • default HAS_ALIAS=1 allows immediate words in RAM while compiling to NVM (issue #43 )
  • a Forth library has been added to code repository, and binary release (issue #43 )

stm8ef-bin.v2.2.13.snapshot.zip

RigTig's release: COMPILE bug fixed, UNLINKCORE support, more compact binaries

16 Jun 12:10
Compare
Choose a tag to compare

After one year of STM8EF development this release marks an important point: a community begins to form!

  • @RigTig's contributed code that replaces the dictionary (and most of the compiler code) in Flash by a definitions in RAM (refer to issue #26 and barebones.fs). All the necessary build switches are in the master branch now.
  • RigTig found issue #28: COMPILE sometimes failed when dealing with words in RAM
  • More binary size reductions (CORE down to 4040 bytes, MINDEV down to 4963 bytes). Guess who spotted possible optimizations...
  • Better comments (issues #36, #34).

Thanks to all contributors for code, comments, and bug reports: @RigTig, @hexagon5un, @barewires

Board XH-M188, ALIAS Feature, Issues #25, #26, #29, #30

04 Jun 11:49
Compare
Choose a tag to compare

Board XH-M188 (Issue #29)

@hexagon5un contributed initial support for the board XH-M188. Thanks a bunch!

After removing the socketed 7S-LED display the board offers a GPIO breakout, and standard RxD/TxD communication ports.

ALIAS Feature (Issue #26, #27)

@RigTig needs more free Flash memory for the application. As Forth headers require a lot of memory he proposed loading Forth headers to RAM. With the help of some minor changes to forth.asm (e.g. enhanced NAME>) about 2000 bytes of Flash memory can recovered. Please refer to the discussion in #27.

Words last and NAME> used in RECURSE example linked

The recursive programming example requires last and NAME> to be exposed. That's fixed now.

Happy hacking!

Board Support for W1219, 7S-LED Display Groups

23 Apr 21:20
Compare
Choose a tag to compare

Board Support for the W1219 (fixes #19)

The thermostat board XH-W1219 with 2x3 digits LED display is now supported.

Controlling 7S-display digits in multiple groups (fixes #20)

Numeric output to multiple groups of 7S-LED displays (e.g. boards W1219 2 x 3 digits, or W1401 3 x 2 digits) is now very simple:

  • CR moves the output to the first "tab" group without changing the display contents
  • whitespace moves the output to the next 7S-LED group if it was not preceded by a move, and clears the current 7S-LED group digits

The following code displays different data (all scaled to a range of 0..99) on the 3x2 digit 7S-LED groups of the board W1401:

FILE
: timer TIM 655 / ;
: ain 5 ADC! ADC@ 100 1023 */ ;
: show timer . ain . BKEY . CR ;
' show bg !
HAND

The word show displays the values scaled to 0..99 from the BG timer, the sensor analog input, and the board key bitmap BKEY followed by a CR (new line). When the word show runs in the background, it displays the ticker on the left yellow 7S-LED group, ain on the middle red LEDs, and the board key bitmap on the right yellow group.

Files

The release binary archive contains the following files:

STM8S105K4.ihx
SWIMCOM.ihx
MINDEV.ihx
DCDC.ihx
CORE.ihx
C0135.ihx
W1209.ihx
W1219.ihx
W1401.ihx
docs/words.md