Skip to content

v2.2.3: I/O code in board folders, improved vocabulary options, fix off-by-on…

Compare
Choose a tag to compare
@TG9541 TG9541 released this 27 Dec 21:41
· 845 commits to master since this release

Most of the changes in v2.2.3 are non-functional, but some is nevertheless important:

  • I/O code in board folders:
    This change concentrates most of the board dependent code, i.e. initialization, interrupts, RX!, ?TX and OUT!, into the configuration folders. There is some risk of some future code repetition for very similar boards but this can be addressed as it arises. Future work will add more abstraction code (like BKEYCHAR for keyboard translation).
  • improved vocabulary options
    The vocabulary options were reviewed and aligned with certain use cases: "Forth as a Scripting Language", "Self-hosted µC Development", and "Forth Interpreter Lab". Most users won't have the third use case, but if they need it the words the interpreter consists of can be linked.
  • fix off-by-one in DEPTH and rp!:
    In both DEPTH and rp! were bugs that canceled each other out, but that left the number 0x3FF (1023) on the floor of the stack. This became visible when rp! was re-implemented in in-line assembly to save space.
  • binary size reduction:
    Due to re-write of many routines in assembly, frequent use of short addressing modes, more factoring, and several optimized eForth core words the size of CORE including "Compile to Flash memory" is now below 4KiB (3800 bytes without this option). Further improvements would require abandoning STC in favor of DTC or even ITC.
  • Retab:
    Unfortunately different authors left a mix of different tab witdh in the code. There is a retab-only commit to facilitate comparing code changes.