by Niall Douglas. Last updated . This page has been accessed 35,926 times since the 10th January 1999.
You are connecting to the IPv4 version of this website from the IP address 188.8.131.52. You can try the IPv6-only version if you want.
Wimp2 is an alternative multitasker for Acorn RISC-OS which
preemptively multitasks the application rather than cooperatively as the current RISC-OS
Wimp does. It also provide various kernel enhancements such as a 1ms resolution interrupt
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:
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.
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!