RISC OS Select 4 changes
RISC OS Select release 4 has undergone some of the most intensive surgery and improvement since RISCOS Ltd started development.
This document captures the major changes between Select issue 3 and 4 of interest to the end user and developer.
Complete details of every change made can be found in the Select ROM release notes, the Boot change log and the HardDisc change log.
The headlines
- 32bit conversion.
This has been a primary focus for this release of Select.
The bulk of RISC OS Select and its supporting components may now be built in a fully
32bit form, for deployment on modern processors such as the ARM 9 series.
- Componentisation.
The Kernel has been hugely restructured, abstracting a great amount of the functionality
in to support modules. This makes the OS easier to maintain and more stable due to using
well defined structured interfaces. Extensibility is enhanced by adding new vectors for
3rd party applications and the ability to replace OS functionality with feature-extended
components.
- Hardware abstraction
Following on from componentisation, much of the hardware driven by the kernel in earlier
versions of the OS is now handled by discrete driver modules such as VideoHWVIDC, RTCHW.
The biggest change that the user will see is the video abstraction. Some undocumented
legacy interfaces [eg used by ComputerConcepts] have been lost, however the abstraction of
the video system has led to many improvements in speed, and better features (eg VideoTTX).
- Stability
Many interfaces have been beefed up in terms of stability. Debugging support has been
improved - via the BTS [Back Trace Structure] system, BTS tools and DiagnosticDump module,
leading to greatly improved traceability of remaining issues and a more useful environment
for end users to report issues to 3rd party developers.
Component changes
The major changes to each component since Select 3. Considerable further internal
work has also taken place, visible in the full release notes (eg due to 32bit conversion).
ADFS
- Added ADFS_DiscOp64 - support for large discs.
AIF - (new module)
- The AIF module provides a support for running Absolute files.
- Checks are used ensure the consistency of the AIF header on Absolute files.
This helps to improve the stability of the system by rejecting code which
is malformed. By default the most
protective state is used by the module, where it will not let any
un-headered file run. This is the recommended setting and should not be
changed by users without due consideration for the implications.
- The AIF module can be configured for the current session by setting the
AIF$Options system variable. This allows the user to disable certain
checks imposed by the module. It is strongly recommended that this not be
used by default; it should only be set when no other alternative exists.
The options to disable checks will be removed in future.
AppleTalk
- Updated AppleTalk to 1.12, fixing race condition caused by excessively delayed callbacks.
BASIC
- Fix for LD/ST 'T' instructions being misassembled.
BASIC64
- Fix for LD/ST 'T' instructions being misassembled.
- Rationalised BASIC64 to share more code with BASIC.
- Updated SYS return of flags to return PSR as expected in 32bit builds.
- Fix for error pointers returned from called code in high memory.
- Updated MODE string to use new OS_ScreenMode call.
BTSDump - (new module)
- The Back Trace Structure (BTS) chain is a feature provided by some Kernels
and components to allow failures within the system to be diagnosed. Usually
this is most useful during development, but it is envisaged that support
will remain within the distributed release systems.
- The tool provides a number of command line switches to determine the amount
of information which is decoded and displayed. The information is displayed
in a standard manner: The most recent event to the initiating event and related sections.
BootMenu
- Added power control option to main menu, where appropriate.
- Updated to use configured mode, rather than forcibly selecting mode 28.
- Updated for mode independence.
- Added support for display number configuration.
CFrontDemangler - (new module)
- Initial import of CFront function name de mangling module.
ChangeFSI
- Added type setting for PNM generation.
- Fix for P1 and P4 (bi-level PNM, aka PBM) images being output inverted.
- Fix for CLI invocation attempting to claim all free memory.
- Replaced some OSCLIs.
- Fix for very similar scale factors (but only scaling down) resulting in black images.
- Defaulted unspecified JPEG[MONO] output to be quality 75.
- Fix for PNGs with ratio pixel sizes supplied in pHYs chunk.
- Fix for sprites with new style sprite mode words in paletted modes having corrupt palette data.
ColourDbox
- Fixed memory leaks if registration of filters failed upon object creation.
- Guard against recurring errors when showing a delayed object (after delivering a ColourDbox_AboutToBeShown event).
- Fixed unpredictable centring behaviour for an object already showing that is re-shown using Menu or SubMenu semantics.
- Objects shown as sub-menu are now properly linked into the Wimp menu tree (requires Menu 0.51).
- Unknown SWIs now cause a generic error instead of being ignored.
- Potentially supports any colour model (including those with more than 16 bytes of extension data).
- Displayed colour and model are now reset to the last confirmed choice (or that set by the client task) when the user clicks the 'Cancel' button.
- Fixed overrun of buffer passed to method ColourDbox_GetColourModel, when the specified object is showing.
- Fixed unpredictable behaviour of ColourDbox_GetColour on a hidden object due to earlier lack of memory or if called prior to a colour having been set by the user or client program (dereferenced NULL pointer) .
- ColourDbox_GetColourModel now returns a result even if the object is hidden and a colour model was not previously set by the client program.
- Lack of memory no longer results in reversion to the colour specified in an object's template when it is next shown.
- Fixed bug that caused ColourDbox_GetColour on a hidden object to return a truncated descriptor after the user had updated or confirmed the displayed colour.
ColourMenu
- Fixed ColourMenu_GetTitle to return buffer size requirements.
- Replaced code that determines whether object showing, fixing bugs caused by belief that ColourMenu not open if no item highlighted in it.
- A ColourMenu shown manually by the client task as a sub-menu (e.g. in response to a Menu_SubMenu event) is now reliably linked into the Wimp menu tree so that it doesn't fail to re-open after an ADJUST selection (requires Menu 0.51).
- ColourMenu_HasBeenHidden events are now generated for sub-menus as well as when a ColourMenu is the root object in a menu tree, including when alternative sub-menus are opened (requires Toolbox 1.86). This event may also now be generated as a side-effect of Toolbox_GetObjectInfo.
- Unknown SWIs now cause a generic error instead of being ignored.
ColourTrans
- Added special checks for full colour palettes being the default.
- Significantly optimised 256 greyscale colour processing with standard loadings.
CompressJPEG
- Fix for memory leak on creating JPEGs via IFC.
- Added temporary dynamic area creation for workspace.
- Enabled direct BMP, GIF and Targa creation.
- Added support for direct conversion to sprite.
- Fixed DPI values to be those fully supported by RISC OS.
- Fix for infinite loop with 0 DPI values.
- Updated DJPEG, CJPEG, JPEGTran and WrJPEGCom to set type of files.
- Fix for djpeg sprite creation resulting in invalid sprite types being created.
Configure components
- Fonts: Updated to remove the size options when system font in use.
- Interface Setup: Updated running of AutoSense files to ignore errors. Updated automatic configuration to reflect new configuration options for automatic DNS and gateway selection. Added automatic detection of A9 network.
- FS Lock: Fade plugin when FSLock not present.
- Boot Merge / Sys Merge / Font Merge: Added message to warn users about installing a true boot sequence over another.
- Resolver Setup: Added check for automatically configured Resolver. Added support for auto-configured DNS resolvers.
- Replaced 834 pixel high modes with 832 pixel high.
ConvertBMP
- Added interface for converting DIB blocks into sprites directly.
- Added support for converting CMYK sprites to BMP.
ConvertGIF - (new module)
ConvertICO
- Added support for creating .ico files from Sprites.
- Added support for 16bpp .ico to sprite conversion.
- Updated .ico to sprite to convert 16 colour .icos to 16 colour sprites.
ConvertPCX
- Added support for 24bit images.
ConvertPNG
- Added support for conversion of CMYK sprites to PNGs.
DHCPClient
- Fix for statistics enumeration only returning details for first interface.
- Added support for issuing service notifications for lease gained/lost.
- Added support for RouterDiscovery configuration.
- Improved RouteDiscovery option parsing.
- Added lease renewal option.
DHCPInfo
- Fix for status updates with multiple interfaces, or when interfaces change.
DiagnosticDump - (new module)
- DiagnosticDump provides much more feedback for developers
than was previously available. The DiagnosticDump module uses the new APCS
backtrace augmentation feature of the SharedCLibrary to record details about
application failures. This means that should a failure occur (CPU exception,
abort, or assertion) and a backtrace be triggered, a record of the failure
will be written to disc.
- A new DiagnosticDump configure plugin has been created.
DisplayManager
- Added support for display device selection.
DragASprite
- Translucency support.
- Fix for redraw glitches caused by over-compensation for redraw rectangle in deep modes with eigen-factors of 0.
DrawFile
- Fix for SVG files being created with invalid bounding box.
- Added support for using FontMap for SVG file creation.
- Added support for SVG export of JPEGs.
- Added support for SVG export of Sprites in DrawFiles.
Draw
- Fix RAM transfer in and out
- Correct interactive help
DrawMod
- Added support for PolyHLine - used to plot a sequence of horizontal lines
FileCore
- Added support for DiscOp64 - support for large discs.
FontDbox
- Fix for IsShowing state failing to be set on Cancel clicks.
- Fix for memory allocation failures.
- Fix for memory and object leaks.
- Fix for potential stack corruption.
- Fix for system font allowances in dialogue.
- Rationalised reset of dialogue box.
- Fixed FontDbox_GetFont to return buffer size requirements.
- Fixed inaccurate buffer size when system font selected.
- The 'Try' button is now faded whilst system font is selected.
- Added a new flag in the object template (bit 3) which, if set, causes the controls over text size and aspect ratio to be faded also.
- Fixed failure to release memory and delete underlying Window object if registration of post-filters failed upon object creation.
- Unknown SWIs now cause a generic error instead of being ignored.
- Guard against unlikely case of recurring error when showing a delayed object (after delivering a FontDbox_AboutToBeShown event).
- The Toolbox_Error event raised if an error occurs when setting the font for the 'Try' text now includes the relevant object and component IDs.
- For consistency with classes that support show-as-submenu, the underlying
- Window object is now shown with the same parent object and component IDs as the FontDbox (instead of with no parent, as before).
- SWI Toolbox_GetObjectInfo on a FontDbox object now returns a more up-to- date indication of whether the dialogue box is actually on screen.
FontMap - (new module)
- The FontMap module provides a means by which font names can be translated
between different formats. Primarily this is used by the DrawFile SVG
conversion code, but may be used by other clients as necessary.
FontMenu
- Fixed FontMenu_GetFont to return buffer size requirements.
- Replaced code that determines whether object showing, fixing bugs caused by belief that FontMenu not open if no item highlighted in it.
- A FontMenu shown manually by the client task as a sub-menu (e.g. in response to a Menu_SubMenu event) is now reliably linked into the Wimp menu tree so that it doesn't fail to re-open after an ADJUST selection (requires Menu 0.51).
- Now raises own error instead of propagating "Buffer overflow" if the font identifier is too long for a FontMenu_Selection event.
- FontMenu_HasBeenHidden events are now generated when alternative sub-menus are opened by the user (requires Toolbox 1.86), and also as a possible side-effect of Toolbox_GetObjectInfo.
- Unknown SWIs now cause a generic error instead of being ignored.
- Corrected size of 'font_id' member of FontMenuSelectionEvent structure.
GDivider - (new module)
- Initial import of the divider gadget.
- Added vertical divider.
- Added check for active gadgets before exiting.
Hourglass
- Added *HOn and *HOff commands, in line with Castle module.
IRQIOMD - (new module)
- Initial import of IOMD IRQ handler.
IconBorderPlain - (new module)
- Initial import of the plain icon borders.
IfConfig
- Added check for invalid network address configuration.
ImageFileConvert
- Added support for intermediates being listed in the enumeration/find converter requests.
- Added support for using a DA during proxied IFR conversion.
- Added support for using a DA during the implicit format conversion.
- Fix for failure to enumerate last converter.
ImageFileGadget
- Added propagation of help message to Window object.
ImageFileRender
- Slight change to 'fit to box' to better fit to requested size.
ImgViewer
- Added support for exporting the displayed file with another type.
- Fix for null pointer deference when no image loaded and export menu opened.
InetConfigure
- Added support for Pace-style DHCP triggering.
- Added support for 'auto-detection' of DNS servers for dynamic and static address schemes.
- Added support for gateway configuration.
- Updated DNS support to allow it to be set for AUN and Dynamic configurations.
- Updated gateway selection to support RouterDiscovery.
International
- Updated Turkey alphabet mapping.
InternationalKeyboard
- Minor modification to Meta keys in the UK keyboard.
Internet
- Fix for incorrectly dereferenced frame type.
- Removed 50 frame restriction per input time.
- Back port of certain FreeBSD stack features.
- Added support for IP_RECVIF - to read the interface on which a datagram was received
- Fix for failure to return control information on broadcast/multicast messages.
- Fix for failure to return multiple control structures.
- Added support for multicast filtering.
- Fix for failure to send multicast packets without a route for multicast packets.
- Fix for MBuf leak in IGMP code.
- Added IP packet filtering interface.
- Fix for invalid call when attempting to issue an ARP request for nonexistent interface.
- Changed behaviour to allow UpCall 6 outside of TaskWindow environment.
- Added rejection support for filtering API (TCP-RST/ICMP error).
- Updated TCP responses to ICMP errors to better match RFC 1122.
- Added code to reject invalid IP address configurations.
- Added support for booting from network filing systems.
- Added shared disc icon for ShareFS booting.
InternetTime - (new module)
- Initial import of the network time synchronisation module.
- Added support for statistics.
Kernel
- Removed support for Mouse/Pointer.
- Removed printer buffer from Kernel.
- Removed the mouse buffer from the kernel (on NoMouseBuffer).
- Removed text character output.
- Moved the point rendering out of the kernel.
- Abstracted circle rendering.
- Added Vertical line fill as external routine.
- Added Triangle and parallelogram to vector.
- Added support for LD|ST[B]T instructions in abort trap.
- Fix for AbortTrap operations confusing SPSR.
- Added SWP support in AbortTrapping (still disabled).
- Removed OS_PrettyPrint and MOSDict (now found in OSSWIs).
- Moved OS_ReadArgs out to OSSWIs.
- Removed the fall-back ReadLineV implementation.
- Added fixed region for SVC stack.
- Fix for branch checks on vectors allowing code above the ROM.
- Updated data abort, prefetch abort and undefined instruction preveneers to reduce the entry requirements on handlers, in line with PRMs.
- Replaced branch through zero handler with more reliable method.
- Changed Unset system variable behaviour on code variables to assign null string.
- Added vectored support for disable/enable video hardware.
- Abstracted interlace and power save video hardware operations.
- Updated abstraction to include RGB tables.
- Reduced period between VRAM rescue checks to 5 seconds.
- Removed kernel maintained DPMS settings.
- Added interlace and vertical offset to the VIDC type 3 control list.
- Make hardware scrolling vectored.
- Added support for Physically Mapped Dynamic Areas.
- Added support for increased numbers of vectors.
- Removed support for OS_ClaimScreenMemory.
- Removed Screen Dynamic Area.
- Added extra support for checking ROM module validity.
- Added support for screen banking to OS_ScreenMode through Graphics vector.
- Replaced FX 112/113 calls with OS_ScreenMode calls.
- Updated VDU system to ignore output when hardware driver absent.
- Added support for accelerated left and right line fills.
- Added support for accelerated flood fill operations.
- Extended and tidied up processor type identification.
- Updated all processor vectors to end in 0 byte values.
- Updated the VLine detection code to try harder to identify 'fast cases'.
- Added support for the 'PBTS'.
- Implemented OS_TaskControl 0 (Read address of stacks reset code).
- Moved SWI dispatch code up to ROM.
- Added PBTS support for SWIs.
- Added BTS prior to copying the aborting stacks to ensure that FP is recorded when available.
- Added support for BTS within transient callbacks.
- Added support for ticker events recording a BTS.
- Added support for service call dispatch recording a BTS.
- Added support for event generation recording a BTS.
- Added support for IRQs recording a BTS.
- Added support for code variable dispatch recording a BTS.
- Added OS_Memory 24 call to validate memory accesses.
- Added support for abortable dynamic areas.
- Disabled screen memory allocation and detection.
- Fix for writeback on multi-word instructions on StrongARM aborts.
- Added Aborting and AbortTrap BTS markers.
- Added BTS information for module initialisation and finalisation.
- Exported PolyHLineAddr through VDU Variable 0xAE.
- Removed all references to hardwired screen end address.
- Added OS_Word time setting call using 5 byte time.
- Added BTS record for entering the event environment handler.
- Updated OS_MMUControl to reflect ARM9 restrictions.
- Removed the RTC system, now living in an external module.
- Removed hardware accesses in OS_UpdateMEMC completely.
- Updated CMOS settings to default to autoconfigured networking, and iconise button enabled.
- Removed support for interlace programming through VDU23,0,8.
- Changed OS_ReadSysInfo 0 (Read configured screen size) to always return 0.
- Removed redundant keyboard processing, including R/T/Copy-reset.
- Updated PLOT operations to use a distinct variable from GColAdr to speed up acceleration.
- Optimised the 'move' plot codes to not call the graphics vector.
- Moved Segment, Sector and Arc to be vectored.
- Moved ellipse outline and fill to using vectored operations.
- Moved text box clearing to accelerated interface.
- Removed support for horizontal byte scrolling of text window.
- Updated vertical scrolls to use the graphics block copy operation.
- Moved monitor ID detection to machine specific abstraction.
- Moved default ID translation to VideoHWVIDC.
- Moved zero page to be first in DRAM.
- Added a page gap between the SVC stack and System Heap.
- Fixed low system heap to be USR-mode read only.
- Added OS_LeaveOS for compatibility with legacy systems.
- Increased IRQ stack size to 16K.
- Added DAFlags_NotUserVisible option to Dynamic Area flags.
- Added OS_ReadSysInfo 10 (Read Operating System version).
- Updated CAM map to be inaccessible in USR mode.
- Updated dynamic area names with 'OS: ' prefix.
- Added support for fixed paged dynamic areas.
- Moved VSync handling to external functions (Video driver).
- Increased number of pages transferred during DA resize from 32 to 128.
- Added support for cache coherency deferral during page operations.
- Added Service_DisplayChanged after new display has been selected.
- Added explicit selection of greyscale modes on mode selection.
- Reversed the order of the CLS and Unblank screen during mode change.
- Updated Heap DA code to perform a little better.
- Updated Heap DAs to use no space when empty.
- Updated zero page to be read only in USR mode.
- Added support for display configuration.
- Added support for forcing display 0.
- Added support for early initialised modules.
- Abstracted NVRAM calls to external module.
- Improved speed of SWI name lookups.
- Abstracted all teletext operations to VideoV.
- Updated mode 7 to be 640x480 in 256 colours.
- Removed the ability to boot into mode 7.
- Added new VDU 23,18 operations for reveal and high quality text.
- Added support for suspended and deferred teletext updates.
- Added SVC stack overflow and corruption detection to abort handler.
- Changed 2nd kilobyte of SVC stack to be ROM to detect stack overflow.
- Added support to OS_Memory 24 for returning 'physical' and 'abortable' flags.
- Updated SpriteOp dispatch table to include entry for TileSpriteScaled.
- Moved IRQ handling to external module.
- Improved speed of page recommendation algorithm.
LanManFS
- Updated host resolution to attempt a DNS lookup on the host before using broadcast/nameserver.
- Added support for using challenge-response authentication for passwords.
- Added background NetBIOS name resolution function.
- Added MimeMap support to default the file attribute settings where the extension is known.
Library tools
- AutoConfigResolver: Initial import of the simple autoconfiguration tool for local resolvers.
- Boot Scripts: Updated Boot run to open the Boot tools automatically. Modified progressive boot to start hardware configuration before the SetUser application is run. Moved mouse reconfiguration earlier in boot sequence.
- ErrorLog: Import of full source to RecordErrors (ErrorLog).
- HWScan: Updated menu to refresh when ctrl-@ pressed.
- Ifconfig: Added check for invalid network address configuration.
- LegacyExec: Initial import of legacy execution format processor, for ABC executables.
- PatchApp: Added support for correcting broken RISC_OSLib dbox event handlers. Added Key to PatchStats. Added warnings about broken SharedCLibrary versions. Added patch for EtherH reliance on private Kernel workspace causing failure to receive data.
- Ping: Updated to assume protocol 1 if protocols file not found. Added knowledge of more ICMP code for display in verbose mode.
- ScanLibs: Added ROM Library to the Run path, immediately before the CSD.
- Vector: Initial import of the Vector debugging tool.
Menu
- Fix for failure to claim post-filter calls when objects identified.
- Fixed Menu_GetHelpMessage, Menu_GetEntryText, Menu_GetEntrySprite, Menu_GetEntryHelpMessage and Menu_GetTitle to return buffer requirements.
- Menu_HasBeenHidden events are now delivered for individual sub-menus as well as the root object in a menu tree.
- The flags returned by SWI Toolbox_GetObjectInfo now reflect as accurately as possible whether a Menu object is currently showing, even if only as a sub-menu.
- Fixed bug where sub-menus in which no item is selected could remain on screen after the underlying Wimp data structure had been moved (e.g by method Menu_AddEntry) or destroyed (upon deleting the object).
- Fixed another manifestation of the same bug where open sub-menus were not always updated to reflect any changes (e.g. ticking and fading).
- Fixed problem where a Menu_HasBeenHidden event would be delivered (and subsequent calls to Toolbox_GetObjectInfo would indicate the object as hidden) if the user ADJUST clicked upon the arrow leading to a sub-menu that is already showing.
- Objects shown manually by the client task as a sub-menu (e.g. in response to a Menu_SubMenu event) are now reliably linked into the Wimp menu tree, so that they don't fail to re-open after an ADJUST menu selection. A new service call mechanism provides this facility to other class modules.
- Errors of the form "Submenu (component, 0x01234567, of object, 0x89abcdef) not known" no longer occur when a Menu Warning or Help Request message is received and the current menu selection path includes sub-menus that were not linked into the menu tree by method Menu_SetSubMenuShow.
- Unknown SWIs now cause a generic error instead of being ignored.
Messages
- Removed dictionary compression for help and main messages.
- Corrected some typos in the global messages.
ModuleCommands - (new module)
- Added support for *Help Modules resizing the name column.
- Fixed *ROMModules to align correctly when redirected.
- Added support 'unsuitable' return from enumerations of ROM modules.
NetI
- Updated interface detection to ignore link-local addresses.
- Changed machine type determination to be solely based on Platform Class.
- Fix for typo in Electron machine type number.
OSCommands - (new module)
- Removed redundant MOSdictionary read.
- Changed Unset to allow errors to be returned.
- Removed ScreenSize configuration option.
- Updated Go command to use TaskControl to flatten SVC stack.
- Removed Boot/NoBoot options.
- Added DisplayNumber configuration.
OSPointer - (new module)
- Added support for taking over the mouse buffer as well.
- Added missing mouse buffer file.
- Fix for hourglass being mis-displayed at top of screen.
- Fix for MOUSE TO failing to work for some settings.
- Replaced embedded hardware code with vectored dispatch.
- Fix for INKEY checks failing to be returned correctly for mouse buttons.
- Fix for Key transition event failing to be raised for mouse buttons.
- Added support for up to 7 mouse buttons.
- Fix for OS_Word 21,3 used to set mouse position shifting coordinates.
- Added support for KEYV_StateChange for mouse buttons.
- Added OS_Word 21,7 to read mouse bounding box.
- Enabled support for display changing.
- Updated to new DisplayChanged API.
- Tentative support for touchscreen devices.
- Optimised pointer operations to reduce load.
OSSWIs - (new module)
- Added OS_PrettyPrint SWI call.
- OS_PrettyPrint SWI call augmented to return OS dictionary.
- Migrated OS_ReadArgs here from the Kernel.
- Added support for OS_HeapSort32.
- Added support for SubstituteArgs32.
Paint
- Added simple toolbar added to main 'filer' window
- Added option to just grab work area of a window in snapshot mode
- Added Proper Wimp highlight colour shading of selected sprites
- Fixed algorithm that caused huge delay after F12 return to desktop
- We now use IFC for all non-sprite IO.
- Dynamically scan for IFC capabilities when appropriate
- Brushes held in separate Sprite file in application
- More efficient RAM transfer save.
- Serious RAM transfer load bug fixed.
- Considerable RAM requirement reduction for loading alien files
- Local fills work properly on alpha and 8bit palettised sprites
- Fix longstanding incorrect-colours bug when using 8bit sprites as brushes.
- Added 180dpi application sprites (!Sprites11)
- Added check for invalid-sized sprite files.
- Accelerated palette comparisons and reduced memory usage.
PS2Driver
- Added support for the extended PS2 keys through KEYV_StateChange.
- Fix for ASPI Wake key generating the wrong code.
- Updated check ordering to use Intellimouse+5 check last.
PatchApp
- Added support for correcting broken RISC_OSLib dbox event handlers.
- Added Key to PatchStats.
- Added warnings about broken SharedCLibrary versions.
- Added optimisation for ROM builds during initialisation.
- Added patch for EtherH reliance on private Kernel workspace causing failure to receive data.
Percussion
- StrongARM compatibility fix.
- Collusion removal.
Pinboard
- Fix for iconising long names incorrectly.
- Updated to use SpriteOp TileSpriteScaled.
- Replaced use of OS_Byte 135 with OS_ScreenMode.
PrintDbox
- Fix for mis-positioned divider when certain button combinations are used with 'Draft'.
- Fix for numerous memory allocation failure problems.
- Fix for a few memory leak problems.
- Fix for PrintDbox_SelectFromTo to work reliably.
- Fix for PrintDbox_GetPageRange to work reliably.
- Fix for Object leak on failures.
- Large changes to rationalise the 'reset' the contents of the dialogue box.
- Fixed assumptions in PrintDBox_GetPageRange.
- New support for bounded page numbers, and upgrade of page range gadgets to be NumberRanges.
- Updated PageLimit name.
- Modified object creation to use body size rather than flags as page limit indicator.
- Guard against unlikely source of recurring errors when showing a delayed object (after delivering a PrintDbox_AboutToBeShown event).
- The underlying Window object is now shown with the same parent object and component IDs as the PrintDbox (instead of no parent, as before).
- SWI Toolbox_GetObjectInfo on a PrintDbox object now returns a more up-to- date indication of whether the dialogue box is actually on screen.
RAMFS
- Added support for DiscOp64.
- Moved SWI DiscOp64 to match CTL use, destroying ADFS alignment.
- Updated DA creation on ARM9 to match StrongARM.
ReadLine - (new module)
- Updated to support ReadLine32.
- Moved support for claiming the two SWIs here, rather than in the Kernel.
Recyclone
- Fix for ExpireBin repeatedly invoking FilerAction if FilerAction dies.
RedrawManager - (new module)
- The RedrawManager module provides, together with the FilterManager and
recent versions of the Window Manager, a mechanism for drawing into a window
as part of the Window Manager's redraw process. This allows clients to
transparently implement complex rendering without requiring the application
to be updated to explicitly call the rendering routines as part of their
redraw loop. Complex gadget redraws are made much simpler through the use
of the RedrawManager. With RedrawManager, Gadgets may redrawing their content
without any application-specific support.
ResEd
- Added 'Template not found' message.
- Modified menu handling for changes made to the Common library.
- Fixes made in light of addition of const's in Common library.
- Added support for new FontDBox bit to disable sizing of system font.
- Added hourglass around CSE invocation.
- Added tester interface.
- Updated External Edit support to for title changing, support for terminating clients, informational messages and improved data return.
- Fix for incorrectly invoked CSE tasks (can run from SparkFS/NetFS now).
- Action Button gadget, extracted from Window tool.
- Added Messages file with Help tokens in.
- Fix for incorrect fading of icons on dragging object to 'show' section.
- Initial import of the AMPlayer control gadget editor.
- Initial import of the ColourSwatch plugin for ResEdWindow.
- Fix for lower case hex-values in the colour input field.
- Corrected the minimum gadget size.
- New Divider gadget editor.
- Initial import of the MDNSService gadget editor.
- Added support for help messages (but no actual messages yet).
- Reorganised icons into a sensible order for cursor keys.
- Placed the initial caret in the 'Off' field.
- Added support for ColourSwatch gadget.
- Added support for externally provided extension handlers for gadgets.
- Added support for Select actions on gadgets, for the benefit of the Label gadget.
- Faded flag options now don't affect the gadget flags.
- Added export of the gui library symbols.
- Minor fix for makefile failing to create Gadgets parent directory.
- Added support for gadgets with message files.
- Added support for enumerated string lists.
- Added help support for gadgets through their own messages files.
- Added export of parent window inspection calls.
- Added support for different gadget definition sizes.
- Added support for gadget definition calls when new gadgets are added.
- Added support for gadget definition performing operations on all other gadgets.
- Improved Help lookup for external gadgets.
- Removed help messages relating to current external gadgets.
- Added support for ensuring modules are present.
- Changed gadgets to include gadget name when gadget rendering isn't known.
- Added initial support for IDs on each component (disabled).
- Reversed selection order to make the top-most icon selectable.
- Updated the definitions to include 'before' and 'after' definitions.
- Added dbox_getshade to exported functions.
- Added a few string functions for the benefit of the StringSet gadget.
- Added support for dragging keycuts between windows.
- Rationalised the selection method in keycuts pane.
- Moved key naming to separate library.
- Updated !Help file to include version number.
ResTest
- Added initial support for the ResEd testers interface.
- Updated Help to reflect the format of the Messages file.
- Added extra entries to the messages file for OptionsWindow, ToolAction, ScrollList, TextArea, MDNSService.
- Errors are now directed to 'your supplier' rather than Acorn.
- Added Window_GadgetMouseScroll decoding.
- Added MDNSService_Selection decoding.
Resolver
- Added extra checks to HostName variable.
- Added checks to LocalDomain variable.
- Added service notification for LocalDomain and Resolvers configuration.
- Added support for raising an event on resolution completion.
- Added support for automatic reordering of resolvers based on their performance.
- Added simple announcement of server over MDNS.
- Added support for automatic server detection.
- Add full support for expiry of cache entries.
- Added simple support for DCI 4 statistics.
- Fix for incorrect expiry of static cache entries.
- Added memory allocation checks.
- Increased dynamic area size to allow for more cached but expired entries.
- Added check to the cache record allocated initially by gethost - the first bug found due to the BTS.
- Removed warning messages from startup.
- Added support for restarting auto-resolver search on link active.
- Added check for Freeway returning unconfigured local addresses.
- Updated resolution algorithm to include NetBIOS lookup using multitasking NetBIOS machine name lookup.
- Updated to trigger callbacks during blocking lookup.
- Changed order of operations within lookup to avoid redundant yield.
- Fix for auto discovery of resolvers being triggered when not requested.
- Fix for auto-reordering of resolvers being triggered when not requested.
- Updated auto-reordering of resolvers to be disabled by default.
- Added query of existing DNS servers when automatic configuration performed.
- Fix for incorrectly reading hosts file when not yet valid.
ResourceFS
- Added support for returning 'free space' for the filing system.
- Added support for using a default case insensitive filename check.
- Updated load and buffer transfer operations to use word and multi-word operations.
ResourceFiler
- Added support for opening $ if $.Apps isn't present.
RouterDiscovery - (new module)
- The RouterDiscovery module implements RFC1256 Router Discovery for multiple
interfaces as hosts or routers. The action of the RouterDiscovery must be
triggered by the user in order to be used. It is expected that address
configuration clients will perform this trigger when appropriate. ZeroConf
would be expected to trigger RouterDiscovery if no other address has been
configured. DHCP would be expected to trigger RouterDiscovery if the
relevant options are returned in the DHCP packets from the configuration
server.
RTC - (new module)
- Initial import of completely extracted RTC call handler.
- Added service RTCSynchronised.
- Updated OS_ResyncTime to match documentation.
RTCHW - (new module)
- Initial import of the hardware RTC driver.
- Import of A9 hardware clock code.
- Removed direct IIC hardware access.
SaveAs
- Fix for inconsistent Cancel button operation.
- Fix for many unchecked memory failure, and leaked memory conditions.
- Fix for object leak during low memory situations.
- Fix for Selection option state fading being ignored.
- Fix for potential file overwrite when long paths used.
- Fix for erroneous delivery of SaveAs_SaveCompleted.
- Implemented the successful save indicator flag.
- Added error report for non-Data-Transfer-compliant applications.
- Fix for unbounded string copies.
- Fix for spurious DataLoad messages sent under rare circumstances.
- Reduced memory overhead.
- Rationalised 'Save' button behaviour to allow for multiple client saves from a single dialogue.
- Guard against recurring errors upon failing to show a delayed object (after delivering a SaveAs_AboutToBeShown event).
- Minor fix to error handling if state of 'Selection' option cannot be read upon activation of 'Save' button.
- The underlying Window object is now shown with the same parent object and component IDs as the SaveAs object (instead of no parent, as before).
- SWI Toolbox_GetObjectInfo on a SaveAs object now returns a more up-to- date indication of whether the dialogue box is actually on screen.
Scale
- Harmonised implementation of Adjust-reset with PrintDBox.
- Fix for memory allocation failures.
- Fix for rare memory and object leaks.
- Fix for GetValue failing to read value correctly.
- Guard against recurring errors upon failing to show a delayed object (after delivering a Scale_AboutToBeShown event).
- The underlying Window object is now shown with the same parent object and component IDs as the Scale object (instead of no parent, as before).
- SWI Toolbox_GetObjectInfo on a Scale object now returns a more up-to- date indication of whether the dialogue box is actually on screen.
ScreenModes
- Added support for 'limitless' bandwidth and mode size extensions.
- Added support for display details.
- Updated dimension checks to take account of the display descriptor.
- Updated bandwidth limitation to ignore command parameters.
- Updated DisplayChanged handling to only update on the pre-display changed service.
ShareFS
- Fix for media insertion causing machine hang under some circumstances.
- Fix for invalid ShareFS disc requests instead of MediaSearchEnd.
- Added support for changing the use of the Filer icons on the fly.
- Fix for typos in configuration commands and regular commands.
- Updated desktop sharing to offer the option to replace shared discs with the same name.
- Fixed 'object is not local' error message code.
- Fix for excessive use of CMOS during remote operations.
- Tweak to improve transfer speed, especially for small transfers.
- Added Lazy Ticker support to reduce load on idle systems.
- Fix for failure to expire queued results.
SharedCLibrary
- Added support for C99 and C99Low library chunks.
- Initial import of the C99 library - floating point support functions.
- Initial import of the low-level C99 functions (long long and VLA).
- Added support for printing of long long structures (printf family).
- Added support for reading long long structures (scanf family) (and equivalent support for 'hh' and 'a' format, as well as NAN support)
- Fix for FP aborts when narrowing values in scanf.
- Improved performance of stack extension.
- Reorganised error reporting within desktop environment (use error box where applicable, etc).
- Optimised clock function.
- Updated to support backtrace on stack overflow when kernel library provides a large enough stack.
- Updated to use registered service for APCS backtrace.
- Optimised file write operations to use block writes.
- Extracted the Kernel RTSK manager to be independent of the RISC_OSLib component.
- Improved performance of stack extension.
- Improved support for hardware errors (eg SVC stack corruption).
- Fix for xferrecv to report the size transferred.
- Minor fix to address the changes made to xferrecv, for Edit.
- Fix for pointer entering and leaving icon causing windows to vanish.
- Fix for incorrectly placed hard-space.
- Replaced OS_Byte 135 call with OS_ScreenMode for reading mode.
- Updated text plotting to render empty regions with a rectangle fill.
- Extracted SCL from old RISC_OSLib component.
- Updated to support new library initialisation block format.
- Added support for declaring system variables with new blocks.
- Added bitness configuration description to the module title.
- Updated Core messages to reflect correct backtrace strings.
- Updated SWI interface to cope gracefully with future flag definitions.
- Updated messages to use capitalised error reports.
- Added messages for signals (FPE, OSERROR) raised by the user.
- Added extra messages for postmortem dump.
- Removed initialisation of RISCOSLib workspace.
ShellCLI
- Added message to inform users how to exit the command line.
ShowStat
- Fix for boolean statistics being displayed incorrectly.
- Added extra DCI4 interface flags.
- Fix for invalid array offets in feature flags.
- Added support for listing provider names.
- Added support for selecting only specific modules.
- Updated relative times to be signed.
- Tidy up and fix for negative time offsets.
- Fix for 'Duplex mode' being incorrectly interpreted in interface statistics.
- Fix for invalid display when relative time of 0 specified.
Softload
- Fix for running without FPEmulator present.
- Added error when added module file does not exist.
- Fix for invalid check for ROM chain point.
- Added fast exit for A9.
- Updated system re-entry in order to softload correctly on recent systems.
SoundChannels
- Added protection against poorly written voices.
- Collusion removal.
SoundDMA
- First stage collusion removal - SoundLevel0Base removal.
- Second stage collusion removal - SoundDMABuffers removal.
- Changed help text suffix to state 'VIDC/IOMD' instead of 'Generic'.
- Added PlatformClass checks before initialisation.
SpriteExtend
- Added functional support for CMYK and YCbCrK JPEGs.
- Fix for 3-component JPEGs dereferencing invalid huffman tables.
- Updated sprite area validity check to include sprite names.
- Updated to use single headers for JCompMod and BlendTable.
- Fix for JPEG_FileInfo failing to parse some files.
- Fix for CMYK sprites with alpha mask failing to be rendered correctly.
- Disabled dithering on CMYK images with alphachannel in shallow modes.
- Fix for aborts when rendering highly scaled up, masked, dithered sprites where the last pixel to be drawn on a line is masked.
- Updated dynamic areas (regular JPEG and transcode) to be shrinkable.
- Added support for uninitialised display driver.
- Added checks for bit 0 and 1 clear on sprite area size, offset to sprite, offset to free word and each sprite's next offset.
- Added support for tiled sprite plotting.
- Added support for C backtrace with BTSDump when failures occur.
- Fix for aborts with transcoded JPEGs in very low memory situations.
- Updated to issue Service_SpriteReregister.
- Added support for Adobe XMP data.
- Added checks for file extent to image dimension code.
SpriteUtils
- Fix for inability to configure the default sprite area size.
StringLib
- StrongARM compatibility fix.
- Collusion removal.
SysLog
- Fix for creation of directories on startup.
- Fix for race condition when showing logs.
- Fix for display of static logs clearing all data.
- Fix for repeated scheduling of callbacks.
- Minor update to stop using log directory when not yet set.
- Improved callback usage significantly.
SystemVars
- Added finalisation for system variables.
- Fix for failure to initialise expansion workspace for system variable names on failed lookup.
- Updated error caching for failed lookups to use 16 buffers.
- Fix for incorrectly constructed error blocks with failed lookups.
- Changed dynamic area to be USR read-only.
TaskManager
- Fix for fonts not being lost on shutdown.
- Added support for identifying HAL OS and power control.
- Added short delay during 'Restart' and 'Off'.
- Fix for 26bit version failing to return correctly from services.
- Removed delay before restarts.
- Added support for 'System power' keyboard button (tentative).
- Added Help messages for the Restart and Off buttons.
- Added option to omit the screen memory area.
- Added Physical DA bar support.
- Help messages on dynamic area updated to include Red, Grn, Blu text.
- Replaced warning icon with question icon in shutdown warning.
- Fix for zero page dereference during task enumeration.
- Updated to use global OSReadSysInfo header.
- Fix for incorrect use of System Heap.
- Minor fix for initialisation.
- Minor fix for SWI dispatch handler.
- Removed 'UseOSD6and7' option; now permanently enabled.
- Enabled MBytes indicator option, but increased threshold to 16M.
- Added option to skip non-user-visible dynamic areas.
- Removed Cursor/System/Sound area which isn't present as such.
- Added option to remove system workspace area.
- Removed SVC stack calculations from System heap.
- Fix for acknowledgements window not being populated.
- Removed obsolescent 'readareas' option.
- Removed options ShutdownViaFSControl and MenuOnTEAMLetters.
- Fix for flickering redraw when dragging areas.
- Added 'Off' button to the restart dialogue.
- Updated banners.
- Updated copyright message.
- Fix for copyright update.
TaskWindow
- Separating sources into smaller files - created GetEnv, Memory, MsgCode, Options, Workspace.
- Made WordV claiming optional, for FileSwitch 2.63 and beyond.
- Fix for environment initialisation failing.
- Fix for Die entry point failing to release SWI handlers.
- Updated some incorrectly converted PSR preservations.
- Moved out the vector handling code to a separate file.
- Separated Keys and String utilities into individual files.
- Removed non-internationalised help messages.
- Fix for claimed SWIs to be StrongARM compatible.
- Replaced code in claimed SWIs with 32bit safe operations.
- Replaced some common operations with macros.
- Fix for aborts in VSync handler due to enabling interrupts.
- Fix for typo in the module flags header.
- Fix for UpCall_SleepNoMore stack imbalance.
- Fix for 26bit build of module exiting on preemption in certain configurations.
- Fix for escape during character read having no effect on 26bit builds.
- Renamed OS_Byte constant 'EscapeChar' to 'EscapeStatus' for clarity.
- Added support for changing the escape character through OS_Byte 220.
- Removed I/O buffer locking when Escape Pending, in line with Kernel.
- Updated ReadC and INKEY to exit early when Escape Pending, in line with Kernel.
- Updated INKEY to return -1 on escape events, in line with Kernel.
- Added Escape response to INKEY on Moribund.
- Escape acknowledgement side effects followed more correctly.
- Removed return of pending Escape errors from UpCall 6.
- Improved Escape responsiveness in intensive applications.
- Changed symbol name for top of SVC stack.
- Updated to use global OSReadSysInfo header.
- Removed remnants of Arthur redirection support.
- Removed Kernel collusion for SWI dispatch table addresses.
- Updated build time options to new style.
- Minor fix for OS SWI claims.
TerritoryManager
- Updated to build with ObjAsm.
- Updated to 32bit capable (tentative).
- Fix for failure to return correctly from *Status Timezone.
- Updated resources to include Cyrillic alphabet name definitions.
- Fix for stack misbalance in GetTimeValues.
- Removed redundant Reset service handler.
- Updated floppy territory boot to omit banner if no floppy present.
- Updated SWIs to default to UK territory when the configured territory is requested, but that territory is not present.
TextGadget
- The display attributes of a text area background sprite may now be controlled by configuring bits 10-14 of the gadget state (using TextArea_SetState). The alignment and tiling attributes of the sprite may be set for each dimension individually; for example you may have horizontal but not vertical tiling. The coordinate offsets supplied to TextArea_SetBackground still allow the position of the sprite to be fine-tuned, but this is now relative to the configured alignment (left/bottom, centred or right/top).
- The TextArea_DataLoaded event is now generated upon pasting text from the clipboard into a text area, when ClipboardHolder delivers the data immediately from memory or file. Hitherto the client application would only be notified if the data transfer protocol were used.
- Any of the known plain-text file types that may be dropped into a text area can now also be pasted from the global clipboard, rather than just clipboard contents of type 0xfff.
- Fix for ScrollList Selection events not being sent for all items changed.
- Rationalised ScrollList click handling.
- Added support to ScrollList for DataTransfer operations and decoding mouse positions.
- Rationalised DBRM interfaces to use Toolbox timers.
- Fix for buffer overflow in ScrollList_GetFont.
- Fix for ScrollList_GetFont to return buffer requirements.
- Updated ScrollList_GetFont to always return font width and height.
- Updated ScrollList_GetFont to propagate errors from FontManager.
- Fixed TextArea_GetText, TextArea_GetSelection, ScrollList_GetItemText, ScrollList_GetHeadingText to return buffer requirements.
- Fixed ScrollList_GetHeadingText to return buffer size correctly.
- Fixed TextArea_GetSelection to return buffer size requirements.
- Rationalised structure of the TextArea_DataLoaded event data (unfinished).
- Fix for unfinished changes to the symbol names change.
Time application
- Updated to default to port 37 if services not found.
- Added time server location menu using ResolverMDNS.
TimerIOMD - (new module)
- Initial import of the Timer module for IOMD.
ToolAction
- Added export of defs and header.
- Updated header to include version number.
- Fix for misnamed header declaration in defs file.
- Fix for OSLib exports overriding the Toolbox exports.
Toolbox
- Added support for WakeUp timer events.
- Fix for Makefile failing to copy waker task to Resources for ROM.
- Minor update for the Waker.
- Fix for retriggered events failing to be started correctly.
- Changed name of background events to 'Timers'.
- Updated Filter delivery implementation to improve consistency.
- Updated Timers task to be ever-present rather than started on demand.
- Fix for failure to report private handle on timer events.
- Completed support for ResourceFS.
- Updated to zero frame pointer on entry to custom filter veneers.
- Added support for notifying all object class modules (not just Window) that we have deferred a Wimp menu warning message (0x400C0) which will return on the next call to SWI Wimp_Poll.
- Fixed a fatal bug in the debugging code immediately prior to calling SWI
- Wimp_Initialise on behalf of a new client.
- Removed erroneous initialisation of ancestor objects during filter after an error.
TransientUtility - (new module)
- Provides support for transient utilities, similar to that for AIF-headered absolute files,
primarily to enforce the new headered utility file format.
Transient utilities have not previously been required to provide any
header or indication of their format. With versions of FileSwitch after 2.67
it will be necessary to include a header on all transient utilities which
are expected to run on 32bit systems. Utility files run on 26bit systems
will not be required to carry this header, although they are strongly
encouraged to do so as they will not execute on 32bit systems without one.
UK
- Fix for ConvertOrdinalsToTime mis-accessing the stack.
- Fix for invalid return in R2 from ConvertDateAndTime.
UnSqzAIF
- Updated patching code to cater for cases where the module lives outside the 26bit range.
- Fix for failure to unsqueeze executables correctly on 26bit systems.
- Added tentative code for decompressing rcc 4.00 absolutes (disabled)
- Updated to use AsmDebug.
- Removed claim of non-AIF formats.
- Updated to use non-NV condition on replacement instruction.
- Fix for failure to account for 'bytesToMove' on space requirements.
- Added slot-extension support.
- Updated to use new OSPlatformFeatures header.
- Fix for incorrect return of decompressed image size.
- Fix for compressed images generated by the CTL squeeze.
- Re-enabled 'HandleNonAIF' (26bit only) and added support for version 3 squeezed binaries.
- Fix for failure to accept version 5 compressed non-AIF files.
VideoGuard - (new module)
- The VideoGuard module provides protection against the user being left with
no display due to an absent display driver. In normal use, the system is
actively displaying graphics on a display that is currently present. Under
some circumstances, however, it is possible for the system to be using a
display device which is absent.
When the current display driver is removed, or not present during the system
startup, the graphics system takes no additional action except to mark the
frame buffer as absent. The address of the screen will be read as 0. Graphics
drivers should check for this case.
The VideoGuard module will recover from these circumstances by selecting
the native (display 0) device.
VideoHWVIDC - (new module)
- Initial import of hardware video abstraction for VIDC.
- Updated to use main Vectors file from the kernel.
- Added support for setting the pointer colours.
- Added support for pointer and mode palette changing.
- Added partial support for vectored video hardware enable/disable.
- Added entry points for setting interlace and selecting power saving modes.
- Fix for border colour being set incorrectly.
- Updated module description in line with software driver.
- Added support for translation of palette entries through RGB tables.
- Huge changes to integrate the mode selection code.
- Finished support for power saving.
- Added support for Vertical Offset and Interlace.
- Removed part of zero-page collusion in pointer handling.
- Added hardware scroll implementation.
- Fix for inverted interlace flag.
- Fix for incorrectly referenced ex-zero page variables.
- Replaced usage of PseudoRegisters within our parameter block with workspace.
- Fixed invalid write to palette caused by incorrectly transitioned code.
- Fix for resetting VInit on mode change.
- Fix for RGBTables failing to update palette immediately.
- Updated to use Physical Mapped Dynamic Areas.
- Added VRAM detection code.
- Added Mode Vetting function.
- Updated to use modified mode selection interface.
- Removed use of OS_UpdateMEMC.
- Added simple bank selection support.
- Updated to use newly defined VideoV header and value.
- Added support for programming all palette entries in low depths.
- Removed use of OS_UpdateMEMC from blanking.
- Aligned size to 32K.
- Replaced debugging routines with our new AsmDebug library.
- Added code to shut down hardware on module death.
- Fix for coming out of power save restoring display.
- Enabled support for hardware power restore.
- Added support for screen caching.
- Added initialisation call to make the screen inaccessible.
- Fix for order of initialisation preventing screen cache cleaning working.
- Added support for no-VRAM modes.
- Added support for control over acceleration through cached screen.
- Added error return for dynamic area handler.
- Fix for screen bank base addresses failing to be returned properly.
- Removed SetInterlace call.
- Added checks for suitable hardware on initialisation.
- Fix for allocation of Video memory as DMAable on Stealth systems.
- Fix for display bank selection.
- Added more debug for caching.
- Added enable/disable of VSync IRQs on init, final and pre-reset.
- Added Monitor Lead Translation decoding.
- Added hardware mapped register area.
- Fix for PreReset handler failing to read workspace properly.
- Updated DA name to prevent confusion with other drivers.
- Updated pointer DA name to match main display area.
- Replaced manual hardware area allocation code with new 'NeedsFixedPages' style DA, and using Locked DA.
- Changed name of pointer DA to 'Mouse pointer (VIDC)' based on feedback.
- Completed VSync handling by claiming the VSync device.
- Added support for registering device with the display system.
- Replaced DA change restrictions for the main video area with a Locked DA.
- Updated VSync dispatch to match documented interface.
- Updated to apply a default (black) palette on mode change.
- Fix for failure to check display number in pointer handler.
- Updated to use new OS_Memory constants header.
- Fix for invalid flags set on return from acceleration configuration.
- Removed VIDC registers now that they are in central header.
- Moved OS VSync call before cache clean.
- Updated initialisation to shut down hardware on start up if not selected.
- Disabled serial debug accidentally left on in previous version.
- Updated 'Bad hardware' message to be preserved if no MessageTrans present.
- Tiny tidy up for service routine to remove conditional code.
- Fix for force the palette definition to black when blanking screen.
- Added the device model (VIDC20) to the device descriptor.
VideoSW - (new module)
- Initial version of VDU4-cursor based character rendering
- Added support for horizontal line fill rendering, colour changes.
- Hardware scroll support added.
- Extended primitives to include point plotting.
- Implemented chained primitive calls.
- Added support for circle rendering - first stage.
- Added support for parallelogram and triangle operations.
- Restructured the primitive line and point operations.
- Updated to build with ObjAsm rather than AAsm.
- Added support for propagating or defaulting the text font.
- Fixed initialisation/cursor race condition.
- Added support for block copy.
- Updated to use named headers for VideoV.
- Moved the control of the character definitions back to the Kernel.
- Added support for filling lines left and right.
- Added support for flood fill operation.
- Added test code for the Fillers, Block Move and Flood Fill.
- Fix for Point failing to use correct colour block.
- Added PolyHLine to vector operations we support.
- Fix for circle carry flag state.
- Updated documentation with details of the acceleration configuration and control operations.
- Added Sector, Segment and Arc operations.
- Reorganised vector numbering and updated documentation to reflect it and the new operations.
- Added support for Ellipse Outline and Fill.
- Added support for circles within simple rectangular modes.
- Added support for text box clearing.
- Fix for text box clearing in double height VDU 4 mode.
- Updated VideoSW to ensure that errors are not returned during startup or shutdown.
- Updated documentation with details of teletext mode operations.
VideoTTX - (new module)
- Acorn systems have, traditionally, always included a teletext mode. When
RISC OS was introduced, this was no longer provided by a hardware
controller, but was instead provided by a software implementation within the
Kernel. This implementation has now been removed and is provided by this new module.
This provides, through the same vectored interface as
the other graphics abstractions, an independent implementation of the
teletext mode.
- With this abstraction it is now possible to provide a greater range of
teletext-like modes and higher quality within those modes. The VideoTTX
module provides a simple implementation of the teletext system. Other
claimants of the vector may provide more advanced, or more efficient
implementations.
WaveSynth
- StrongARM compatibility fix.
- Fix for crashes on initialisation.
- Collusion removal.
Window
- Improved support for icons created with outline fonts present.
- Fix for font leakage on icon delete.
- Fix for font leakage on Gadget_Plot calls.
- Added support for vertical labels.
- Rationalised label orientation and alignment flags.
- Added WindowShow gadget notification.
- Rationalised the internal gadget handling into macros.
- Rationalised external gadget dispatch to allow multiple gadgets with the same core type to be handled sensibly.
- Disabled the (potentially dangerous) 'extras' on button type gadgets.
- Added support for SimpeMoveGadget external gadget operation.
- Updated *Window_Gadgets in light of naming conventions.
- Added Button_GetFont for reading fonts for Button gadgets.
- Added support for add and remove icons in gadgets.
- Rationalised the add code on gadget creation to use same code.
- Updated 'CreateGadget' support function to return -1 for failure.
- Updated gadget creation to pass allocated help pointer to the external gadget.
- Fix for memory leak on clearing help messages on gadgets.
- Added export of defs and headers.
- Updated headers to include version number.
- Fix for PlotGadget errors when gadgets use default handlers being propagated.
- Added support for external gadget handler extension fields.
- Added support for gadget timer operations.
- Added support for gadget redraw operations through RedrawManager.
- Completed support for ResourceFS.
- Added WindowGadgetMouseScroll event support.
- Updated AOF area to match C usage.
- Added definitions for GadgetMouseScroll events.
- Fix for uninitialised use of structure during gadget creation and plotting.
- Fixed bug in interpretation of Wimp scroll request events (negative direction values were misinterpreted as mouse scroll).
- Fixed bug where it was possible to manipulate a faded slider using a mouse scroll wheel.
- Fixed non-X SWI in debugging code that was fatal on task initialisation.
- Fixed memory corruption upon discovering alien Wimp SWI intercept and made associated error message internationalisable.
- Switched from using SWI Window_PreSubMenuShow to new service call notification (requires Toolbox ?.??).
- Unknown SWIs now cause a generic error instead of being ignored.
- Window objects shown as sub-menus are now linked into the menu tree by updating the relevant Wimp sub-menu pointer (requires Menu ?.??).
- Fixed bug where objects shown by key activation of action button were always persistent and at default position.
- Implemented Shift-Return and Shift-Escape to activate Default or Cancel action buttons without hiding Window.
- New template flag for Toolbar objects enables non-local action buttons to hide their parent Window.
- Fixed bug where the value in display-only number range gadgets could be changed by mouse scroll.
- Fixed bug where setting the bounds of a number range that incorporates no slider would cause method 578 to be called on component 0 of the Window.
- Fixed bug where the background of disabled slider gadgets was not faded and hence could still be clicked or dragged to alter the slider position.
WindowManager
- Updated pushfontstring to preserve PSR in a 32-bit safe manner.
- Fix for aborts on returning from AutoScroll due to misbalanced stack.
- Fix for window scrolls accidentally enabling dash drag box.
- Moved Service handling from s/Wimp01 into s/Services.
- Replaced some flag restoration with macroised versions.
- Fix for Wimp_CloseDown on a dead task returning an error.
- Separated Workspace and macros into individual files for ease.
- Moved rectangle handling to a separate file to reduce the size of Wimp01.
- SWI dispatch should now be 32bit safe.
- Made FP support optional.
- Fix for Nested Wimp OpenWindow flush failing to function.
- Updated Service_Memory handling for 32bit memory systems.
- Increased the size of the register buffer on task switch.
- Updated mode change code to allow descriptors in high memory.
- Updated sprite pool caching to use HeapSort32 for high memory.
- Fix for *WimpSlot not working in high-memory.
- Fix for user-drags not working correctly in high memory.
- Fix for message blocks in high memory.
- Fix for single tasking taskhandle in high memory.
- Added support for RMA fallback if DAHeaps not present.
- Updated iconbarhandle to be nullptr when unused.
- Initial work toward safe external window handles.
- Initial work toward consistent validation string pointer checks.
- Modified Rel and Abs window algorithm for high memory safety.
- Fix for messages to the iconbar not being delivered.
- Fix for 3D borders being displayed when iconbar not present.
- Fix for RMA fallback causing aborts.
- Fix for HeapSort32 fallback failing to apply flags correctly.
- Fix for checks of toggling iconbar when iconbar not present causing aborts.
- Fix for exit handler on started tasks generating spurious escapes.
- Improved Abs macro down to 3 instructions.
- Updated to use ReadLine32.
- Added optional iconborder filter default removal.
- Rationalised sources for IconBorders to remove redundant default case.
- Tentative implementation of IconTransitions.
- Partial implementation of pointer-highlightable icons (disabled).
- Fix for menu scanning accessing invalid memory with new handles algorithm.
- Fix for icon transitions not being cleared on task death.
- Re-enabled Floating Point.
- Fix for references to deleted windows or icons causing failures in IconTransitions.
- Additional fix for menus being deleted with the pointer over them.
- Initial work to support border state requests.
- Removed flicker when using icon transitions with non-highlightable borders.
- Rationalised Icon Transition masking in face of the multitudes of broken libraries that it seems impossible to patch reliably.
- Fix for ordering of Button highlighting within icon transitions code.
- Updated ReadSysInfo 3 to ignore the 'suspended' flag.
- Updated code so that IconTransitions can be safely disabled.
- Fix for Wimp_SetIconState used to delete icons causes icons to be redrawn.
- Improved support for Wimp_SetIconState when used with highlightable icon borders.
- Fix for some unsigned comparisons in Wimp_ReportError.
- Updated pointer shape code to obey transparent pixel as hotspot.
- Added support for Adjust on back-icon to bring window to front.
- Minor optimisation to GetWindowState.
- Fix for 'hidden' WimpClickSubmenu configuration command.
- Updated to use global OSReadSysInfo header.
- Updated to support variable ROM base.
- Updated Wimp_SetMode and *WimpMode to use new OS_ScreenMode calls.
- Fix for caret colour being incorrect in 256 colour full palette modes.
- Fix for incorrect text colours when no font used for system text.
- Fix for broken Wimp_PlotIcon extended behaviour.
- Added 'highlighted' icons to Wimp_PlotIcon extended behaviour.
- Fix for system font text with no font selected being rendered incorrectly with Wimp_TextOp.
- Added check for teletext mode in mode selection checks.
- Fix for invalid error pointer returned from Wimp_SpriteOp to set pointer shape.
- Updated help on WimpVisualFlags to cover the CaretColour option.
- Updated to use new SpriteOp TileSpriteScaled operation.
- Fix for incorrect use of ColourTrans_SelectTable.
- Fix for misaligned WimpPalette code.
- Fix for failure to issue WimpSpritesMoved.
- Updated dynamic areas to not be user writable.
- Added issuing of Service_WimpToolSpritesMoved.
- Removed InvalidateCache service call handling.
- Updated tiling algorithm to support resizable window tile sprites.
- Fix for failure to render tools with missing sprites correctly.
- Removed change for special cased 256 full palette modes now that ColourTrans is changed.
WindowScroll
- Fix for scrollable icons not checking for shaded or deleted icons.
ZeroConf
- Updated to export single header with SWIs and constants in.
- Updated initial IP address selection to better conform to section 2.1.
- Added support for link status notifications.
- Fix for statistics buffer overrun when sleeping and inactive.