- ZMech is a complete visual CASE tool that allows complex event driven systems to be interactively designed and debugged using the state machine paradigm.
- Extremely powerful visual editing interface that allows easy editing across files using multiple overlapping windows. The graphics objects drawn and edited using the interface have built in intelligence and react to the mouse and each other so as to maximize user productivity and reduce tedious repetitive setup sequences (see IPAD features for more information on the visual edit capabilities available to the developer).
- Out of the box ZMech allows highly complex systems to be:
- Interactively described through state diagrams.
- Translated into a form suitable for direct execution by another system
(e.g. an embedded micro controller or other event driven system such as a GUI system).
- Combined with user written C / C++ and assembler source
- Interactively debugged by running the generated code together with the user supplied code against the original state diagrams.
- ZMech allows complex interacting subsystems (e.g. communication protocol in a multiprocessor system) to be modelled as separate state machines and debugged concurrently.
- ZMech allows the user to build libraries of debugged self contained state machines that can then be used as components in other systems
The interface between ZMech and the executable state machine to which it is linked is directly accessible by the developer. This allows the state machine to be immediately recompiled as a standalone program capable of taking control of the task it was designed to do with very few modifications. The only requirement is that the designer provide the remaining runtime harness normally required by his/her system (e.g. libc.a in a unix environment or hardware initialisation code, device drivers, interrupt handlers, etc., in an embedded controller).
Built using the multiplatform IPAD-Pro core it is completely configurable and extendable (the XEBOT package and various animated demos available from this site show how this can easily be done).
- crisis - priority encoder state machine
This is a ready to run example incorporating four interacting state machines produced using ZMech. Clicking on the inputs (drawn on the diagram) causes events to be seen by the state machines, any state changes to be traced (states and paths highlighted showing the route taken) and any output changes to be seen at the outputs (drawn on the diagram). Note that in this example the state machines interact with each other through their inputs and outputs and do not send each other any events.