Summary: OMAP3 5.24
Summary of changes to OMAP3 ROM (5.22 to 5.24)
- The following are the headline changes to modules or components in the OMAP3 ROM for 5.24.
- For brevity only the top 23 changes have been described, because many of the 707 changes in the full change logs are administrative in nature or a result of other work, but they all contribute to stability and ease of use.
- DOSFS, !Draw, !Help, InternationalKeyboard, LanManFS, OHCIDriver, SpriteExtend, TextGadgets, Toolbox have been treated to a technique known as static analysis to automatically detect bugs in source code, and these bugs have subsequently been fixed.
- The change to trap accidental reads/writes of low memory have resulted in fixes to ADFSFiler, ColourDbox, Filer, FilerAction, LanManFS, Menu, Messages, PrintDbox, PipeFS, SDIODriver, SharedCLibrary, ShareFS, TextGadgets, Window all of which improve OS stability.
!Chars
- Now supports selecting and displaying Unicode fonts
- Provided the accompanying !Unicode resource is available then hovering the mouse over a character will display the Unicode name too
!Draw
- Can now edit text while being entered when the desktop is using a UTF-8 alphabet
!Paint
- Pressing Ctrl while using the scroll wheel on the mouse now zooms the current sprite (part o the ongoing Paint bounty work)
- The create sprite dialogue has been extended to support creating 4k and 64k colour sprites
- The spray can is easier to control on computers with a fast processor (part of the ongoing Paint bounty work)
- Calculating memory requirements for alpha masked sprites, and sorting sprites are now more reliable
BASIC
- The built in assembler has been extended to support the ARMv6/v7/v8 instruction set as well as VFP instructions
- Improved accuracy of printing and conversion of real numbers
- The command *BASIC64 has been changed to select the most appropriate floating point variant of BASIC that is installed, be it for the FPA instruction set or the VFP instruction set
- The MODE string command has been improved to be more useful outside of the desktop
- Some minor help and RISC OS 3 compatibility improvements has been implemented
CDFSSoftSCSI
- Reports drive empty status correctly, so power eject from the CDFSFiler is correctly selected
Debugger
- An extra debugging command, *Where, has been added to show the address and offset of its argument or the last captured program counter if no argument is given
- The built in disassembler has been extended to support the ARMv6/v7/v8 instruction set as well as VFP instructions
- Enhancements to the debugger will now capture more information on exceptions using a backtrace if it is possible to annotate the sequence of events prior to an exception occurring
Display Manager
- It is now possible to drop an EDID monitor description onto Display Manager’s icon to load it in a similar manner to textual MDF can be
DOSFS
- Correctly rejects discs bigger than 4GB which it cannot mount as an image filing system
- Now allows mounting of discs with a 1 letter disc title
EtherUSB
- Throughput improvements have been made to the core of the driver
- Extra chipsets are now supported, in addition to those integrated on the motherboard
Font Manager
- Renders bitmap fonts correctly when the cache is located above 256MB
- No longer returns a bad error block from Font_LoseFont
FileCore
- Reports sector offsets correctly with the *Map command on old format discs
- Full directories on long filename discs are now correctly faulted rather than producing an unreadable disc
- Can now use up to 21 bits for the disc address, meaning a smaller logical file allocation unit, for more efficient use of space on large discs
- Bug fixes to 4kbyte sector support allowing drives up to 2TB in size to be used, instead of the previous limit of 256GB with 512 byte sectors
GPIO
- General purpose I/O pins on the expansion headers are now accessible to developers
IIC
- A new command, *IICDevices, lists the devices on the bus
Kernel
- Memory management and cache maintenance improvements
- A new concept of ‘physical memory pools’ where a dynamic area can set aside lots of physical memory but only use a small window of logical memory, for example to allow a large RAM disc
- Extra APIs to allow low level software to discover the addresses of some key kernel variables without having to illegally access them
- Extra APIs to allow low level software to discover features of the ARM processor such as its support for exclusive monitor instructions as and when they are removed depending on the ARM core
- Calling SWIs that return an error will now have the error block’s address checked, if it is invalid it will be substituted for one that the Kernel generates to say which SWI call had a bad error returned from it – contact the author to get the bug fixed
- Merging sprite areas is now much faster due to using a better algorithm, for large sprite files up to 50x so
- Teletext video modes can now have extra characters on each line rather than being constrained to 40 (up to a limit of 255)
- An extra conversion for OS_ConvertVariform to handle globally unique numbers (UUID)
- Some preparations and reorganisation for multiple ARM cores
- Serious errors where a fatal exception happened are now vectored through SeriousErrorV to allow interested handlers to react appropriately
- A new option to configure a MonitorType of EDID which will read the settings from the monitor directly as part of the EDID bounty work
- Programmer’s are advised to read the full change logs for details
LanManFS
- Will now connect to NTLM authenticated shares which is a minimum requirement on many servers to improve security
- Correctly performs writes over 64kbytes when the server declares a buffer size of larger than this
Portable
- Reports the processor’s core temperature to allow more elaborate speed control algorithms
- Improved idling support
RAMFS
- Will create a drive up to 512MB in size (assuming there is enough free RAM to do so)
SCSIFS and SCSIDriver
- Makes use of the service call announcing that the Choices path has been defined, in order to re-read the list of hidden drives which previously didn’t work when SCSIFS is in ROM
- Reduces CPU use when idling
- Use the command *SCSIDevices to list the available devices in preference to the former command *Devices which is deprecated
Sprite Extend
- JPEG handling has been completely overhauled as part of the completed work for the JPEG bounty, which includes displaying a much wider variety of JPEG files directly and in any applications built into the OS such as Paint and Draw
- Improvements to rendering of alpha blended operations on image
Screen Modes
- The screen modes module will now read in the EDID monitor data at startup, and use that when configured to do so, to guarantee a display is shown when any compliant monitor is connected as part of the EDID bounty
- Adds a new command, *SaveModeFile, which saves out the currently active monitor definition as the orthoganal pair for *LoadModeFile
TextGadgets
- Now gives a thumbnail view of the gadget when viewed in the Toolbox !ResEd application
- Several bug fixes and redraw optimisations have been applied
USBDriver and MUSBDriver
- Scanning keyboards, particularly when hidden behind hubs, at power on in order to do power-on-delete (for example) is now more reliable as part of the USB bounty work
- The drivers have been updated where practical from the parent copies in NetBSD
- Lots of other fixes as described in our earlier article
Window Manager
- Has improved power saving, both when idling and when initially starting
- Positions menu shortcuts correctly in large menus with scrollbars
- No longer crashes when a post-filter is used at the same time as VFP (vector floating point) by an application
- Command *WimpKillSprite now reports a valid error if the sprite doesn’t exist