| TurboTask is
extremely small. The entire system is a true library and ranges from
less than 1k to 2.5k. RAM is
used only as needed based on the configurable system requirements for the number of tasks,
message boxes and queues. |
| It is extremely fast
since it is written in 100% Z180/Rabbit assembly language code by Softools. TurboTask will
run on any Z80, Z180 and Rabbit (or 100% code-compatible) processor.
|
| Economical binary
licensing is available. |
| Z80/Z180:
Supports Z180 banked switched programs generated using Softools linker SLINK. Unlimited
program sizes are supported that can multi-task and utilize all of TurboTask functions.
The full Z180 MMU is saved and restored on a task switch. |
| Rabbit:
Does not use the MMU making it possible to be used by each task as needed to keep a window
into memory. |
| Is royalty-free for
any number applications on a single product. Economical single, multiple, and
unlimited product licenses are available. |
| Supports up to 255
tasks, 256 word-oriented boxes, and 256 byte-oriented queues. Queues may optionally
provide interrupt support to enable a device interrupt when a queue is not empty and to
disable the interrupt when the queue becomes empty. |
| Queues are fully
reentrant for writing allowing multiple tasks and ISRs to fill the same queue with data.
For efficiency, queues are not reentrant for reads as requiring this is uncommon.
|
| Allows simple system
configuration. Assembling a configuration source file answering several questions about
system requirements is all that is needed to configure an entire application.
Configurations may be changed at a later date without effecting existing application code.
|
| Runs in either
round-robin or priority scheduling mode. Time-sharing can be enabled to allow several
tasks to be given processor time at specific user definable intervals and to prevent a
task from monopolizing processor resources. |
| Allows users to give
tasks a priority from 0 to 256, in priority scheduling. Tasks with higher priority will
always execute before tasks with lower priority. A task can yield processing to another
task of equal or higher priority. |
| Allows a task to
release itself during device polling freeing processor time needed by other tasks while
the device is not available. |
| Safely and
reentrantly handles communication between tasks using message boxes or queues.
|
| Is completely
reentrant and never enables the processor interrupt state if disabled. The user's manual
gives T-States for the duration interrupts are disabled for functions which must disable
interrupts. The task scheduling code never disables interrupts.
|
| Z80/Z180: Interrupt
functions include returning to the task, returning to the scheduler using RETI or RETN
instructions. |
| Rabbit: Support
tasks that are comprised of either near or far functions, or a mixture. |
| Maintains an accurate
32-bit system timer that can be read and updated by the application. All delays and timed
suspensions use the timer for timing these events. The resolution of the timer is user
specified since the timer is user-supplied. Rabbit: Function call
provided to start the timer and automatically hooks itself into TurboTask. |
| Provides a complete
working demo program for a Z180 or Rabbit system along with documentation on building and
running it. This demo serves as a perfect starting point for any application. It uses
tasks, boxes, and queues, and interrupt support for queues. |
| Provides an efficient
C interface for all TurboTask functions. Standard SC180/SCRabbit C startup code for the
Softools Control Cross-C compiler is used. Z180: TurboTask defines
C function main and runs a user provided main_task function as a startup task. Rabbit:
In function main, simple initialization is done to start the timer and lauch the first
task. |
| Z180:
The TurboTask scheduler supports a SLEEP mode - if TurboTask finds no task to run it will
execute the Z180 SLP instruction until the next interrupt wakes up the Z180.
|