For development tools the Psion 3a does have a built in language called OPL that is really an object oriented Basic. However we were C programmers and wanted that sort of development environment. Psion provide such an environment as the SIBO C SDK that is hosted on a PC, and with which you do cross-development for the Psion. This is a very good SDK, and we bought ourselves a copy. However we still wanted something that would free us from the dependency on the PC. After all the PC would not fit in our pocket! We decided to see if we could use the work we had done to date on compilers and use it as a basis for providing a system that could run purely on the Psion. Thus CPOC was born! For those interested, CPOC was chosen as a play on the two phrases "C in my Pocket" and "EPOC" which is the name of the Psion operating system.
More detail about CPOC can be obtained in the CPOC specific part of this site. However the major development as far as the compiler was concerned is that we had to add support of generation of code for the 8086 processor. The CPOC phase of our compiler story is still actively evolving. For more information on the detailed status we suggest that you look at the CPOC portion of this site, and in particular you might want to look at the Status of CPOC section.
The work we have done on CPOC has shown at there is another capability that we would like to add to the compiler that would be extremely useful, particularily in CPOC. That is the ability to pass parameters in specified registers instead of using the C convention of passing them on the stack. The TopSpeed compiler supplied with the C SDK can do this, and it allows TopSpeed to generate very small code (which is of paramount importance in the Psion 3a environment). We have not yet added such a capability to our compiler (as we have not yet worked out how to fit it into the current structure of the compiler) but would dearly love to. Such a development would then be carried through to all the other supported environments with similar benefits.
The story so far has made everything seem like a nice linear progression. However the world is not a simple place, and while all the things we have already talked about have been going on there have been other things that have happened either in parallel, or sometimes out on a complete tangent. We cover some of these in the section on Other Strands.