The b16 Processor is a minimalistic stack processor, inspired by Chuck Moore's recent work. The original incarnation is 16 bit, byte addressed. There are 32 instructions, each is 5 bits. Three and a bit (literally!) are packed into a 16 bit word (bundle). The first slot in the bundle can only be a nop or a call.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Comment | |
---|---|---|---|---|---|---|---|---|---|
0 | nop | call | jmp | ret | jz | jnz | jc | jnc | destination in rest of instruction |
nop | exec | goto | ret | gz | gnz | gc | gnc | for slot 3 | |
8 | xor | com | and | or | + | +c | *+ | /- | |
10 | A!+ | A@+ | R@+ | lit | Ac!+ | Ac@+ | Rc@+ | litc | |
A! | A@ | R@ | lit | Ac! | Ac@ | Rc@ | litc | for slot 1 | |
18 | nip | drop | over | dup | >r | >a | r> | a |
The b16 is intented as small microcontroller, and suitable if you need more processing power than a 8051, but less die space (or gate count) and power consumption.
You can find more documentation in the Forth Tagung 2002 presentation (131k), or the English translation (123k). There's also a combined presentation from 2005 (360k).
You can download the Sources (851k), the evaluation board schematics (74k) and the Gerber data (481k) of the evaluation board.
There's now a USB interface (not fully tested, undocumented), minimalistic interrupts (tested, somewhat documented), and a small test bench to integrate all that stuff. I plan to also add an Ethernet MAC, and build a new Cyclone-based board with both USB and Ethernet functionality.
The small version of the b16 has an even further reduced instruction set, and fits into half the size.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Comment | |
---|---|---|---|---|---|---|---|---|---|
0 | nop | call | jmp | ret | jz | jnz | jc | jnc | destination in rest of instruction |
nop | exec | goto | ret | gz | gnz | gc | gnc | for slot 3 | |
8 | xor | com | and | or | + | +c | 2/ | c2/ | |
10 | !+ | @+ | @ | lit | c!+ | c@+ | c@ | litc | |
!. | @. | @ | lit | c!. | c@. | c@ | litc | for slot 1 | |
18 | nip | drop | over | dup | >r | nop | r> | nop |
You can find more documentation in the EuroForth 2004 proceeding (131k).
You can download the Sources (143k) here. A more recent version is in the git repository, you can download it as follows from github or gitlab: