The following is something you may never need to know, but you may find it interesting. (If it sounds like techno-babble, don't worry. This is not the kind of thing you need to understand to use SPLat!)
The SPLat processor is a virtual machine (VM) implemented in a general purpose 8-bit microcontroller. It is based on an 8-bit wide by 4 deep register stack (slightly akin to Forth). It has separate program and data (RAM) memory spaces with 16 bit and 8 bit addresses respectively. Current products have (depending on the model) up to 25,000 bytes of FLASH program memory and 250 bytes of RAM.
There is a separate 6-deep subroutine return stack, and an 8-bit index register for advanced RAM addressing. The floating point processor contains two 32-bit floating point registers, and implements non-stop arithmetic (e.g. a divide by zero will not crash the processor).
Additional intrinsic functionality is provided by built in counters. Depending on the product model there are
MultiTrack provides a very effective and processor-efficient cooperative multitasking system. A task queue is implemented using a fixed number of static entries. Each entry stores execution address, pointers and timer information. By not saving registers we extract the maximum use from a small amount of RAM and make context switching extremely fast. As it turns out, the kinds of control tasks SPLat is aimed at are better off with these efficiencies than with resource consuming full-context saving, preemption and task prioritization. The result is a system with 70 microsecond context switching time at 8MHz bus speed. Light, and very nimble!
For communicating with various peripherals SPLat contains a 20-byte register called U and an associated 1-byte register called V (which hold byte counts for U). U and V act as a transfer buffer for peripheral devices built within the SPLat Expansion Framework.
A separate background subsystem provides external communications. At time of writing there is our own native protocol SPLatLink and also ModBus. ModBus is recommended for new designs. Once a program has invoked ModBus with the right parameters its operation is transparent.