[Skip top navbar]

Andrew Gregory's Web Pages

Young eucalypt and spinifex, 28°21'52"S 123°21'12"E


Programmer's Toolbox 3a 3c 3mx Siena Workabout mx

The Modules

All the modules that comprise the Toolbox are listed here. Each module has it's own page where you can read more detailed information about it.


The Programmer's Toolbox is a library of routines that provide an easy-to-use framework for you to develop event-driven SIBO applications.

Typical OPL programs would use the GETEVENT keyword. However, this did not allow other I/O to be handled simultaneously. Such I/O could be serial communications, WVE file playback or recording, timers, etc. The library here provides a system that calls procedures in your application to handle keyboard events and other system events alongside general I/O events.

All the libraries are written in straight OPL. No special pre-processor directives or anything. Any Psion machine can translate them. However, see How To Build Your Applications for more on pre-processors.

Changes History

Last updated: 2004-10-22

As I develop applications, I make changes to the library. Before June 2000, the last major restructure was September 1999, so it is fairly stable. To keep up-to-date with the latest features and bug fixes, check it regularly.


This describes how to incorporate the library in your applications. It also describes how to use the library to solve various problems.

I intend to add to this area regularly. Email your requests to me!

Supplementary Files

supp.zip (361 ) - INI.OPH contains some useful #defines for working with INI files, and OPLLIB.EXC is for use with OPA Cloak.

Some programs I have written are useful combined with the library:

Here are some useful links to other SIBO OPL programming related sites:

Get Acrobat Reader

During the development of my Resource IDE program I discovered many things about resource files:

resource.fmt - Resource file format (in Psionics style) ( 32K)

Some of the information was originally by Jochen Siegenthaler.

Origins of the Toolbox

This page has the collection of OPL modules that I use during my application development. I found most of them by surfing the net and modified them to my needs, others I wrote completely by myself. They should work on the following Psion SIBO machines: Series 3a, 3c, 3mx, Siena, and Workabout.

The modules mainly involve the user-interface. The most important of these is the application event managers. 'Standard' OPL programs using the GETEVENT keyword cannot intermix GETEVENT events with I/O events (such as a serial read). Then there is also the management of multiple I/O requests (eg. a main loop where you are checking individually the completion statuses of several I/O requests). These modules make this type of programming much easier.

Originally, these modules were part of my Application Manager project. However, the source for that monolithic module became larger than 40k (even with removal of lots of comments) and I could no longer use the Psion Program Editor on it. Now that I have split it into bits, I have restored full comments. Examples that were separate are now part of each source code file. Where applicable, I have indicated the origin of each module, and the author (if not me).

Conditions of Use

Essentially - almost none! As all the code I obtained from various Internet sites was freely available, I am making all of this code freely available also. As it is free, there are no warranties or guarantees as to its suitability for anything - or even that it works. Having said that, I have done my best to ensure that all of the modules on this page work (and, indeed, work together).

If you do use any of the code on this page, I would ask that you acknowledge myself, and the applicable original authors in your programs documentation (for example, the online help, the README file, etc). You could also let me know when you release software developed using these modules - I would be happy to add a link to the web page for your application from this page.

To Do

In no particular order:

The following appear to be impossible:

I was going to do some more examples, but I'm just too busy.

Known Users of the Toolbox

There's also me, of course!