Summary of changes between RiscOS 5.08 and 5.09 This list is not exhaustive: there have been a number of version changes for internal build reasons. This list covers changes that involved code alteration. New in the ROM: =============== RTCAdjust which ensures the computer generated clock tracks the realtime crystal clock after the machine has booted. Changed in ROM: =============== DragAnObj: The "call user mode function" option for DragAnObject has always been broken - it has always actually called you in SVC mode. Despite this clients have coped (such as Browse). But on 32-bit systems this option leads to a stack limit that looks higher than the (SVC) stack pointer, leading to stack overflows and aborts. The module has been adjusted so that the stack limit is set to the bottom of the SVC stack rather than 0 to fix this. I've chosen not to fix this option to actually call clients in user mode, as our broken behaviour may have led to broken clients with the option set wrong. Instead, I've added a new flag bit 18 that indicates to really call the client in user mode. Bit 17 should be clear if bit 18 is set. This recovers sl,fp and sp from the SVC stack and calls the client. The environment should be set up well enough to allow full access to user and C library statics. For this to work, DragAnObject_Start must have been called in user mode from an APCS program, and any SWI veneer used to issue the SWI must have left R10 and R11 (sl & fp) intact. _kernel_swi is fine, and _swi is fine except in an unpatched RISC OS 3.70/3.71. Filer: Fix small bug to do with missing sm!app icons. Ensure neither large icon or small icon app name exceeds 12 chars even when app name is much longer. Re-enabled Alt-Select for icons whilst leaving Alt-Select renaming active. TaskWindow: Corrected SVC stack save code across calls to Wimp_Poll. Wimp: Icon bar Shift F12 behaviour changed back to RISC OS 3.7 style: This behaviour is perhaps a little more logical. CDFS: Added RockRidge name extension to CDFS and removed the 'force uppercase' constraint to render it more user friendly. ARM: Fix to UK Help file. "*Help Cache" now returns correctly. FPEmulator: Fixed an error in "UseCLZ" case which broke certain denormalised cases of multiply, divide and remainder. Problem originally reported on Iyonix discussion group (failed Paranoia test). USB: Added 5 extra keycodes for Japanese keyboards. Improved softloadability. VarVal launching.. string length was incorrectly calculated. USB VarVals now correctly cleared if device failed during enumeration, after first SetVarVal call. Triggercbs() modified to check interrupt context and refuse (quietly) to trigger callbacks if interrupts threaded. Added third QueryDelay variable, and an Info file to describe what does what. An increased delay caused havoc with chicony keyboards in the field.. delay returned to original 100ms value. Added (and fixed code underlying) to give periodic explore of USB busses (cf NetBSD). Added USBDisover command to let user provoke this too. Small change at start of pipe open process to accomodate error return provided by some mass storage devices. Update of NetBSD elements to track NetBSD current from mid April 2005. Updated EHCIDriver to correctly handle low speed interrupt devices beyond USB2 hubs (i.e. keyboards and mice). Mod to EHCIDriver resetting in service call handler to better cope with USBDriver being restarted 'underneath' it. Several other changes and nullpointer bug fixes SharedCLib: Fixed signed pointer comparison: most top-bit-set pointers passed to _kernel_raise_error() were being translated into "Exit called" Stack extension is now permitted in SYS mode; includes support in longjmp() Added run-time and ISO C library support for C99 complex numbers. Improved stdio to allocate extra FILE objects beyond the static array of 16. Number of open files now only limited by memory and the OS. FOPEN_MAX in increased from 8 to 16 to reflect reality. Minor corrections to comments in . Library shutdown tidied for modules. In particular, shutdown of I/O was broken for modules which had been entered as applications. Internet: Fixed some dodgy unaligned pointer casting which invokes undefined behaviour; EtherK: Fixed hang on shutdown with 82541 chips SaveAs: dealt with long standing (RO5) abort when absolute path given in saveas dialogue box FontManager: A fix for not being able to configure FontMax* from the supervisor prompt, which trips up any machine with high address space. SprExtend: Fix bug where "Sprite doesn't exist" error message was being truncated.