FROM THE U.S.A. call 901-313-4312
UK time is now:
May 162016

Southampton, UK – 04 May 2016 – MPE today announced Interactive C support for ARM architecture via SockPuppet. The later a bug is found in the design cycle, the more design costs increase. Interactive debugging and adding test harnesses from the start ensures the code stays close to the initial specification. MPE adds Interactive Mixed-Language Programming to the tool box of C designers. Each language has its optimal target and cannot do everything best. The Forth Language was designed for control, interactive programming and debugging from the start. In the past, most new processors have been brought to life using Forth, as it is quick and easy to adapt and offers an integrated Language, Assembler and Compiler Tool Environment.

The new challenges of software complexity bring the same problem up again – and now at a higher level – including the C software in addition to the hardware. MPE has used these interactive debugging techniques and advantages of Forth in custom projects over the past years to save time and development cost for their customers.

As a result of success and requests from the market, MPE has now included this capability to its commercial Forth Compiler products as standard by adding the SockPuppet feature.

The C program is worked with as in the past. Test and Debugging is dealt with in Forth where needed, independent of the C code. The SockPuppet interface handles all of the communication between the two.

The SockPuppet interface is available immediately as part of the Professional VFX compiler versions. Customers who bought this product over the last 12 months will receive a free upgrade. Other customers can upgrade from their existing version, or start with the latest compiler. Workshops and in-house training are offered on request.

Examples will be available for download from

Some additional free information is available at

Using Mixed-language programming describes the process of developing software, where the code is written in two or more languages. Mixed-language programming adds the additional challenge of mastering a new language, but is very beneficial as existing and tested code written in another language can be re-used or it adds features not available before.

MPE offers SockPuppet now as bridge between C and Forth, but interfaces to other languages are under consideration – or can be implemented on a custom basis immediately.


About MPE Microprocessor Engineering

MPE is a privately held company based in Southampton UK, founded in 1981 to develop and sell software tools such as compilers, specialising in real-time embedded systems.

Professional and Standard compilers are available for: ARM and Cortex-M0/M1/M3/M4, ARM/StrongARM/XScale, 386/486/Pentium, H8S, H8/300H and H8/Tiny, Coldfire, 9S12/68HC12, MSP430 and 8051. Custom implementations are available on request.

MPE also offers hardware and software consultancy, with particular expertise in high-performance Forth systems and rapid compilation. Projects are staffed by both MPE employees and external consultants.

MPE products are used in application areas such as glass-grinding, payment terminals, vending machines, bomb-disposal and construction planning. They have been used in products all over the world and as far as comets and Mars.

Technical Information:

MPE MicroProcessor Engineering Stephen Pelc, MD

Tel: +44 (0)23 8063 1441 Email:


PR Contact:

MPE MicroProcessor Engineering Juergen Pintaske, Sales and Marketing Manger

Tel: +44 (0) 7736 70 76 74 Email: juergen@exemark/.com



Dec 082015

VFX Forth version 4.7

VFX Forth features common to all versions

VFX Forth for Windows

VFX Forth for Mac OS X

VFX Forth for x86 Linux

NEW!VFX Forth for ARM Linux

VFX Forth for DOS

NEW!There are new library interfaces to libcurl, libiconv, SQLite3 and zlib. Additional notations have been added to the shared library interface to ease porting of code from other Forth systems.

See our benchmarks.

See the release notes.


VFX Forth for Windows

Download the latest free trial version.

GTK+ GUI and graphics

fJACK Audio interface

Customer comments
“VfxForth is the most fully featured FORTH I’ve ever worked with. This will be a fun project with lots of tools to work with.”

“I know a lot of compilers are free but speaking freely, this is one of the best darn things I’ve spent money on.”

“GUIgen is the best and most useful bit of code I’ve seen in a very long time.” More about GUIgen

“I just wanted to write and congratulate you on your VFX Forth. What a wonderful system you folks have developed! I recently downloaded the evaluation version of VFX and rewrote a Computational Fluid Dynamics simulation that I had originally written for xxxxx. What a difference! Under xxxxx, a single run of the simulation takes over an hour on my computer. Under VFX, the same simulation completes in less than 4 minutes.”

“I am actually VERY impressed with VFX Forth for Windows’s code generation … you have a fantastic product.”

More …


VFX Forth for Mac OS X

Carbon MacForth on VFX

Cocoa interface

GTK+ GUI and graphics

VFX Forth for Mac OS X is built from the same code base as VFX Forth for Linux, and includes the same VFX code generator and other tools. There is direct support for Mach-O executable file generation and there is access to all functions in shared libraries such as libSystem or frameworks such as Carbon and Cocoa. See the release notes.

A customer said:
“Besides the amazing optimizing compiler, I love the DocGen documentation system. The easy C interfacing and Genio driver architecture have also been key for my project.

More …


VFX Forth for x86 Linux

GTK+ GUI and graphics

fJACK Audio interface

VFX Forth for Linux is built from the same code base as VFX Forth for Windows, and includes the same VFX code generator and other tools. There is direct support for ELF executable file generation and access to all functions in shared libraries such as libc is available. See the release notes.

Customer comments
“I am in awe of how fast VFX Linux Forth is. My experience is in the distant past with … and more recently G… so I am not used to the optimized code produced by VFX. Very nice!”

” … impressed by the features of the VFX, and the fact that you have a *REAL* manual.”

Free downloads of the evaluation version are available from the Southampton server. Login as “public” with a blank password. The 32 bit VFX Forth for Linux version is available in rpm and deb packages for 32 bit and 64 bit Linux variants, and a tarball. VFX Forth for Linux is suitable for all x86 32 and 64 bit Linux distributions.

The paid-for versions (Standard, Developer and Mission editions) include kernels for the 386/486 class CPUs used by many embedded x86 systems. VFX Forth for Linux runs very well on lightweight systems such as the Ebox2300 or 3300 family with 300MHz or 1GHz CPUs.

More …


NEW!VFX Forth for ARM Linux

It’s just the same as the x86 Linux, except that the assembler, disassembler and VFX code generator target the ARM. It works fine on all versions of ARM Linux that use the EABI interface (that’s nearly all of them these days), including those for the Raspberry Pi and the Beaglebone Black. Includes a direct GPIO access example for the Raspberry Pi with a bit toggle rate of about 10 MHz using the generic GPIO functions, and somewhat faster using functions dedicated to the peripheral pin.

More …


VFX Forth for DOS

VFX Forth for DOS is built from the same source tree as VFX Forth for Windows, and includes the same VFX code generator, graphics and other tools. VFX Forth for DOS is mainly used for embedded applications. The PowerNet TCP/IP stack is available. For more details see our PowerNet page.

The version 4 releases are available with the same pricing as VFX Forth for Windows. Contact us for further details.

See the release notes.

Customer comment:
“I continue to be astonished at the quantum leap the VFX software suite has taken from ProForth. It’s been difficult to make the right choices during the conversion, without over-indulging, like a kid in the sweet shop not wanting to miss anything that could be potentially delicious.”

More …


Boards and Hardware

MPE LPC2468 PowerBoard

Designed to supply a computing core for industrial applications, this PowerBoard provides all the standard “computer stuff” so that you can concentrate on the I/O handling. Stackable and robust.


Dec 082015

Forth 7 cross compiler and targets

NEW!Professional version includes PowerNet

In detail …

Version 7 of the MPE Forth cross compiler produces over 500 kb of binary code per second. There are many detail improvements to the compilers and the target code.

The first major item for users of 32 bit targets is the USB client interface. Your embedded system can be a memory stick or a virtual COM port or both (composite device). The code has been structured so that the hardware drivers are independent of the USB core layer and the class layer. Version 2 supports DMA operation for increased speed and reduced interrupt overhead.

The Mass Storage Class (memory stick) and Communications Device Class (virtual serial port) drivers require no installation of additional operating system drivers. Sample INF files are provided for Windows. The code has been tested with Windows, Linux and Mac OSX.

The second major item for users of 32 bit targets is the FAT filing system supporting removable media such as SD/MMC cards through SPI, CompactFlash and USB memory sticks. FAT 12, 16, and 32 are supported, auto-detecting at initialisation.

The final major item for users of 32 bit targets is the PowerNet v5 TCP/IP networking stack – NEW! now included as part of the cross compiler Professional edition. FTP, HTTP and Telnet servers are included. DHCP, SNTP and DNS clients allow more automatic configuration at powerup. A set of client-side service examples ease talking to remote web sites. Maintenance and production configuration tools are provided to reduce setup costs. PowerNet is strong enough to be used on internet-facing sites with no firewall or other security measures. For more details see our PowerNet page.

The ARM/Cortex compilers include switches in the code generator for the Cortex-M0/M1/M3/M4 devices. Plenty of target boards are supported. New drivers are available including SPI and 4 bit SD card for the FAT filing system.

The Windows, Linux and Mac OS X hosted Forth 7 Cross Compilers provide a complete interactive development system for embedded targets. MPE’s VFX optimising code generators are part of most version 7 compilers, producing excellent code quality and density. Customer comments include “Wow!” and “How do you do that?”. As always, floating point, multi-tasking, full target source code, manuals and technical support are included as part of the package. Most compilers can be supplied with evaluation boards and prepackaged software configurations. For a complete list of targets, please visit our Forth 7 page.

A customer says:”
“My co-workers kept asking, “how can you do that?”. I tell them it is the good tool, they think I’m good, too bad I don’t use the C compiler!”

A user commented on a news group:
“Wow, your documentation is the best I’ve seen for any Forth system.”

A customer commented:
“I’m impressed with the VFX code generator!! Did not see any reason to re-code words in assembly.”
“… cross compiler has proven to be an excellent tool, thanks again to you and your staff for a product well done.”

Forth 7 in detail …


CANopen implementation

The CAN fieldbus is popular in many industries requiring high reliability. This implementation for Forth 6 compilers was originally developed for railway control systems, and is released as a cross compiler extension. Please contact us directly for more information.


Previous compiler versions

We are aware that embedded systems can have extremely long development and production lives. Consequently, we make previous compiler versions available where there is no direct upgrade path. See legacy compilers; see the pricelist.


RTX-2000 returns!

The RTX-2000 and RTX-2010 CPUs from Intersil were dual stack CPUs with fast and deterministic real time behaviour, but are no longer available. Now the significantly faster RTXcore is available for incorporation into FPGAs. In a Xilinx Spartan 2E, the VHDL clean-room implementation gives twice the original performance at lower cost, and includes an on-chip UART. The current software development tools work unchanged.

More …

Dec 082015

Lite cross compilers


Lite compilers are for Windows only; they run well under Wine and other Windows emulators.

Lite compilers are free of charge and are for non-commercial use only. If you want to commercialise your project just upgrade to a compatible Stamp, Standard or Professional compiler with more features.

Lite compilers are available for ARM Cortex-Mx and MSP430 targets. The target source code is for a small target Forth kernel that compiles directly to target Flash. Compiling on-board directly to Flash allows direct programming on the hardware itself, which is fun, ideal for experimentation and for educational use. The programs can become turnkey applications.

The Lite target is not fully compatible with the PowerForth target supplied with the other compiler editions. The Lite target has changes to reduce code size and for compilation to Flash. It may also change as we have to cope with an increasing range of chips.

In order to support both cross development and on-board programming, the Lite compiler includes the AIDE compiler front end which includes a terminal emulator and an editor, the cross compiler itself, and all source code for the target.

AIDE compiler

AIDE compiler and target IDE

Despite their small size, the Lite targets are capable of real applications. Duncan Louttit reports:

Attached is a photo of the robot that I used at the inaugural IET robot triathlon competition. I used the beta version of the MSP430 Lite compiler for the software. It had to compete in three events; line follower, drag race and time trial. It came 2nd in each competition and second overall. The Forth system is sufficient for this competition. I ended up with one download for the line follower and drag race and another one for the time trial. If I had had more time, we only had 8 weeks to do the whole thing including design and build the hardware, I could have done much better. The winner used a lot of commercial hardware and library routines for things like the PID controller.

IET robot


“VFXL is a pleasure to work with.”

The Cortex-M0/M3 Lite compiler is code-limited to 64 kb and RAM-limited to 16 kb. Target device drivers are supplied for the STM32F072B Discovery board (includes MEMS gyros), the STM32F4 Discovery board and the Freescale FRDM-KL25Z board. these are available from most catalogues, e.g. Digikey, Element14, Farnell, and Mouser. The prices below are approximate.


STM32F072B DiscoverySTM32F072B Discovery STM32F4 DiscoverySTM32F4 Discovery Freescale FRDM-KL25ZFreescale FRDM-KL25Z STP LPC812STP LPC812 STM32F4 DiscoverySTM32F429 Discovery board


UK Pounds Euros US Dollars
Approximate Exchange Rate (GBP=1.00) 1.00 1.27 1.72
STM32F072B Discovery 7.00 8.89 12.04
STM32F4 Discovery (F407) 10.85 13.78 18.66
Freescale FRDM-KL25Z 10.32 13.11 17.75


The MSP430 Lite compiler is code-limited to 16 kb and RAM-limited to 1 kb. Target device drivers are supplied for the TI Launchpad G2 with the MSP430G2553 CPU. This board is available from several sources including the TI web shop. The prices below are approximate.

MSP430 LaunchpadMSP 430 Launchpad


UK Pounds Euros US Dollars
Approximate Exchange Rate (GBP=1.00) 1.00 1.27 1.72
MSP430 LaunchPad Value Line Development kit, MSP-EXP430G2 6.17 7.84 10.61

MPE – Compiler feature matrix

December 2015

Lite Stamp Standard Professional
Full-featured standalone PowerForth target N Y Y Y
Small standalone Lite target Y N N N
VFX code generator Y Y Y Y
All target code in source form Y Y Y Y
Umbilical target Y Y Y Y
Multi-tasking Y Y Y Y
Cross reference tools N N Y Y
Unlimited code size N N Y Y
State machine compiler N N Y Y
Floating point math N N Y Y
32 bit targets
PowerFiler Unix-like file system N N Y Y
PID loops N N Y Y
FAT 12/16/32 file system, SD/MMC N N N Y
USB driver, core and classes N N N Y
PowerView embedded GUI N N N Y
PowerNet TCP/IP stack N N N Y
Compiler source code (with NDA) N N N Y
16 bit targets
Bank-switched targets N N Y Y
PID loops N N N Y
Compiler source code (with NDA) N N N Y
Dec 072015

We have considered many schemes for increasing the use of Forth. In the embedded world, the situation has become that you can download free (of charge) versions of many compilers for many programming languages. We feel that we have to do the same to reach new users and promote the use of Forth in education.

We have developed the new “Lite” version of the Forth 7 cross compiler. It is code-size and RAM limited but is free to download. The initial targets are the Cortex-M and MSP430 CPUs. Our thanks to all the Beta testers, especially Duncan Louttit.

Download page.

The Lite compilers have a simplified target Forth kernel that compiles directly into target Flash. In order to support direct compilation into Flash, the Forth has had to be modified slightly to reduce the number of times a single Flash location is programmed. For example, some STM32Fx devices will only program Flash in 16 bit units and if the 16 bits are $FFFF. As a result, the kernels are not completely standard but are still capable of real applications. Duncan Louttit reports:

Attached is a photo of the robot that I used at the inaugural IET robot triathlon competition. I used the beta version of the MSP430 Lite compiler for the software. It had to compete in three events; line follower, drag race and time trial. It came 2nd in each competition and second overall. The Forth system is sufficient for this competition. I ended up with one download for the line follower and drag race and another one for the time trial. If I had had more time, we only had 8 weeks to do the whole thing including design and build the hardware, I could have done much better. The winner used a lot of commercial hardware and library routines for things like the PID controller.

IET robot


Dec 032015

I was trying to avoid some work, and stumbled across this post (republished with permission) on one of the LinkedIn discussions. If you are at all interested in software reliability, Les Hatton is someone to respect.

I was lost on LinkedIn (not for the first time) and spotted this discussion.

C v C++. Ah yes, we’ve been debating this for 25 years. C++ is absolutely NOT always better. It is just different.

First of all, the programming language appears to be irrelevant in most empirical studies of injected defect, implemented size and similar behaviour – the most significant factor by a long way remains the quality of the engineers producing the system. However, this disguises an unpleasant truth about OO in general and C++ in particular.

I first studied and published evidence on this in 1997 in IEEE journals. The result of the original studies was a systematic bias in C++ towards significantly LONGER defect correction times. In other words, when you make a mistake in C++, you really pay for it. If the use of C++ led to less defects per implemented functionality, we might be able to live with this but there is no evidence that it does.

Indeed, one of the unpleasant side-effects of the OO paradigm is that it appears to delay the detection of certain classes of defect to much later in the life-cycle where they become really expensive to find and fix, (particularly in embedded systems). For example, in my original studies, the use of C++ increased the cost of finding and fixing defects during system testing by a factor of 4 on comparable systems. Inheritance, (single or multiple) in particular appears to be a defect attractor.

Other promises of OO have failed to materialise. We saw it as producing a universal toolset which would allow us to literally bolt together new reliable systems from tried and trusty components, free of unpleasant side-effect. This has not proved the case. Indeed the component size distribution of C++ systems has exactly the same form (a power law) as C, (and Ada, Fortran, Tcl-Tk, Matlab, Java and everything else I have looked at – see my website for a study of around 60 million lines of code). This turns out to be inevitable from information theory via the clockwork theorem.

So, as I mentioned at the start, it is just a different paradigm – neither better, nor worse. The best advice I could give after 25 years of experiments is to let your programmers use whatever language they are fluent in. If they are not fluent in any, (several years at least), you are in for a rough ride. There isn’t much else to go on because we are not in general a critical or even a scientific discipline when it comes to accumulating compelling evidence.

The seeming irrelevance of programming language is actually a great relief to me. If we even consider the possibility that one symbolic representation of a piece of functionality can be superior to another different representation on average, then we must admit the possibility that a Chinese engineer writing about science in Chinese can be systematically better or worse than a German engineer writing about the same subject in German, simply because of the language they are using. This seems to me unconscionable.

Parenthetically, one last thing you might worry about in the months and years to come is that both C and C++ have undergone a pathologically complicated re-standardisation in the last few years producing standards which no one person can understand, (well I’m damned if I can anyway). Neither have served the embedded system user well since the abstract model of computation in both languages leaves both time and space effectively undefined in the rush to add exotic features of unknown reliability. The last draft of the C11 standard before you have to pay for it is 678 pages, nearly 4 times bigger than the C90 standard which we generally understood. This is still dwarved by the leviathan C++11 standard, the last version of which I saw was just under 1400 pages.

If you add to this that most CS students are now only taught Java in any depth, there is a crying need for more emphasis on education as opposed to technology.