Wimp2 is designed to be broadly compatible with the existing application structure used by RISC-OS. The only difference is that the 17, 18 & 19 codes handler must be placed in a separate non-preempted routine so that Wimp messages requiring an immediate answer are not returned as unanswered by the Wimp (through a code 19). There are facilities to have the message passed into the normal message queue or have preemption halted until the main queue deals with the message.
Wimp2 is compatible with all versions of RISC-OS from v2 to the upcoming v4. It also handles correctly sprite redirection and floating-point register use. Also supplied are the full sources for Wimp2 so that you can see how it works yourself, and if you want, modify or enhance it.
Wimp2 correctly preempts assembler, C and Basic code. There is also basic multithreading support built into the code, although this is not implemented at this time. In addition, Wimp2 replaces some filing system calls with ones that can be preemptively multitasked so now long disc operations don't halt multitasking! If you want to know more, try downloading it and giving it a go!
Latest version of Wimp2 is v0.36 (released on 19th May 1999). Changes since the last version, v0.35, include:
- Now has new ROM build version which is suitable for including in a ROM image of some sort :)
- Fixed bug reported by Andreas Walter: SWI Wimp2_EnumerateTasks was giving out data for dead tasks (again)
v0.36 has been given a good thrashing, and has come up smiling. However, if you find any bugs not listed in the documentation, let me know.
- Wimp2 patch home page (maintained by Andrew Teirney)
- Wimp2 patch application compatibility page (maintained by Henry Morgan)
Just before you do download it, here's a screenshot of Wimp2 and the patch in operation, running on RO3.8:
This screenshot shows Wimp2 and its patch in operation - all the tasks shown in the Wimp2Ctrl window are being preemptively multitasked!