Main Page

This site will document information on the use of small CPUs for personal hobby use.

The CPUs that I'm interested in and have considerable investment in are;

ARM – The new standard where performance is needed, they are inexpensive and very powerful, not so good to use with assembler due to the nature of the instruction set, a few devices are available in DIP form. This will be the main CPU family that I will use, there are too many choices and for efficiency, I need to limit the CPUs that I will use in future projects. These CPUs are to be used with high-level compilers only.

I have the following programming tools besides the Manufacturers C Compiler and Assembler;

MPE FORTH Professional Cross Compiler, Rowley's C Compiler, and MikroE Pascal Compiler.


AVR – Inexpensive devices for the smaller task, easy on compilers and assembler, very low power, quite a few devices are available in DIP form. The Arduinos are nice and cheap but I will cut back on using this family and concentrate on ARM, and MSP430 family of CPUs. These CPUs are to be used with high-level compilers only.

I have the following programming tools besides the Manufacturers C Compiler and Assembler;

Forth Assembler/Compiler, MikroE Pascal Compiler, and the Arduino Development Environment.


PIC18, PIC24, DsPics, and PIC32 – Quite a range of CPU power while being inexpensive, easy to program in Compilers or Assembler, many members that use very little power, quite a few devices are available in DIP form. I will be cutting back on usage of this CPU family, not because of any problems but because I need to cut back on the CPUs that I need to be familiar with. These CPUs are to be used with high-level compilers only.

I have the following programming tools besides the Manufacturers C Compiler and Assembler;

Forth Assembler/Compiler, and MikroE Pascal Compiler for each of those families of devices.


MSP430 – Ultra low power, a very powerful orthogonal instruction set which is easy on compilers and a dream to program in Assembler language, they are inexpensive devices. This will be my alternate CPU family to use along with ARM CPUs. I will use assembler along with high-level languages with these CPUs.

I have the following programming tools besides the Manufacturers C Compiler and Assembler;

MPE Professional Forth Compiler, various free Forth Assembler/Compiler.

esp8266 and esp32- A recent low-cost CPU/WiFi module that is available from $2 to $8 depending on the hardware form. It's a fairly powerful CPU with built in easy to use WiFi hardware and software, lot's of I/O such as I2C, SPI, I2S, A/d, D/A, and logic outputs, generally, it has a serial FLASH memory from 1MB to 4MB. There is a new model the esp32 modules that have dual core CPU, and BlueTooth and it is more expensive but still inexpensive. They have several available free tools such as C, C++, Arduino Development, Lua, Micro-Python, and Forth.

Soft CPUs – CPUs created on an FPGA Matrix to implement simple Zero Address CPU for executing Forth software as it's native instruction set, I have gotten the EP8080 to work, a high performance 8080 CPU duplicate with much higher performance. The processors by C. H.  Ting will be the ep16 a high performance yet simple Zero Address CPU that has Forth Primitives as it's native instruction set and the ep32 32 bit Zero Address CPU. After that the J1 CPU also another zero address machine which I will write from scratch in VHDL as a learning exercise, then after that modifications and improvements to the ef16, ep32, and J1 processors. All of this is a learning exercise to become familiar with the VHDL language and the process of designing CPUs and other specialized hardware in FPGAs. Eventually, I have in mind a  modern register CPU with micro-coding, and pipelining just for fun, for practical use the Zero Address CPUs are more my cup of tea. These CPUs are to be used with high-level compilers only.

I'm in the process of acquiring tools, I do have a Forth Assembler/Compiler for the ep8080, ep16, ep32, and the J1 CPUs. I have acquired several versions of eForth as it is easily modified for new CPUs. This last item is critical as one creates various instruction sets, one must have a compiler to use and test the instruction set. Late news, I have gotten a copy of eForth including a meta-compiler that is very simple and that will be the master for creating compiler/assemblers for other custom CPUs.

I am currently using Lattice FPGA boards, the Brevia2, and the MachX02 development boards because of their low cost and instant on capability. I am using the Lattice Diamond software to program the FPGAs. I will be using the schematic editor and VHLD as the VHL programming language tools.

Programming languages;

Pascal – A clean programming language of the Algol family that protects the user from dumb mistakes, easy to read, and modern compilers generate very efficient code.

FORTH – The opposite of Pascal, no protection, anything goes, but it's both interpretive and a compiled language so its great to debug with and modern compilers are quite fast, and generate efficient code. eForth is a simplified variation on Forth that is simple to use and modify. I also have several versions of the MPE Professional cross compilers.

Assembler – As efficient as you can get, but on some processors such as the ARM, it's hard due to the irregular instruction set, on others such as the MSP430 it's beautiful to program in Assembler Language, one is at as low a level as possible so it's not for everyone.

C – Your most common Computer Language,  I  use it when I have no choice. It's efficient, and very commonly available for every processor under the sun, GNU makes some compilers that are quite good but free.

VHLD – a hardware description high-level language used to program the FPGA matrix and test the hardware solution.

Generic 3rd party free FORTH Assembler/Compilers are available for all CPUs mentioned above.

There are too many CPUs available all with different tools so I will need to concentrate on just a few, they will be;

ARM for high power use.

MSP430 for low cost and fun factor when programming in assembler.

esp8266 & esp32 for low cost, decent performance with wireless capability.

I have a lot of money invested in the AVR, and PIC families to just drop them, so I will work to create eForth versions for these CPUs so I can use the same tools in all these CPUs and use up the stock that I have of chips and boards.

Don't hold your breath, this site will be updated at Glacial speed, Right now I'm attending a local University full time so I'm pretty busy with that.

Updated on 01/22/20176

Cecil – k5nwa