- 0.65 (05 Nov 2024)
- 0.64 (13 Oct 2024)
- 0.63 (03 Sep 2024)
- 0.61 (19 Jul 2024)
- 0.60 (15 Jun 2024)
- 0.59 (04 May 2024)
- 0.58 (14 Apr 2024)
- 0.57 (15 Mar 2024)
- 0.56 (04 Feb 2024)
- 0.55 (08 Jan 2024)
- 0.54 (10 Dec 2023)
- 0.53 (02 Nov 2023)
- 0.52 (01 Oct 2023)
- 0.51 (06 Sep 2023)
- 0.50 (03 Aug 2023)
- 0.49 (09 Jul 2023)
- 0.48 (02 Jun 2023)
- 0.47 (03 May 2023)
- 0.46 (04 Apr 2023)
- 0.45 (02 Mar 2023)
- 0.44 (07 Feb 2023)
- 0.43 (08 Jan 2023)
- 0.42 (01 Dec 2022)
- 0.41 (03 Nov 2022)
- 0.40 (02 Oct 2022)
- 0.39 (31 Aug 2022)
- 0.38 (02 Aug 2022)
- 0.37 (06 Jul 2022)
- 0.36 (04 Jun 2022)
- 0.35 (06 May 2022)
- 0.34 (05 Apr 2022)
- 0.33 (01 Mar 2022)
- 0.32 (07 Feb 2022)
- 0.31 (03 Jan 2022)
- 0.30 (09 Dec 2021)
- 0.29 (02 Nov 2021)
- 0.28 (02 Oct 2021)
- 0.27 (13 Sep 2021)
- 0.26 (06 Aug 2021)
- 0.25 (04 Jul 2021)
- 0.24 (04 Jun 2021)
- 0.23 (04 May 2021)
- 0.22 (06 Apr 2021)
- 0.21 (07 Mar 2021)
- 0.20 (03 Feb 2021)
- 0.19 (02 Jan 2021)
- 0.18 (03 Dec 2020)
- 0.17 (01 Nov 2020)
- 0.16 (03 Oct 2020)
- 0.15 (30 Aug 2020)
- 0.14 (02 Aug 2020)
- 0.13 (30 Jun 2020)
- 0.12 (04 Jun 2020)
- 0.11 (03 May 2020)
The changelog tries to follow https://keepachangelog.com/, with the following definitions used for the sections:
- Security: Changes which affect security (whatever type of change they might be).
- Added: New features, or implemented functionality.
- Changed: Existing features, or interfaces, which have been updated. Unless it's a large functionality change, stubs being implemented or made configurable fall into this group.
- Fixed: Bugs in the implementation which have been addressed. This does not include the addition of missing functionality unless that functionality was meant to be present.
- Removed: Features or implementations which have been removed and are no longer present.
Internal and design changes are not documented here, unless they impact the behaviour of the system.
0.65 (05 Nov 2024)
Fixed
- Input: Tab completion in non-root directory no longer reports Python exceptions when matching filenames.
- Input: Tab completion now matches case insensitively.
0.64 (13 Oct 2024)
Changed
- Debugger: The location of the exception register dump is now included in the output.
- Debugger: Whether the
*ShowRegs
command uses the Exception Region Dump is now configurable. - Debugger:
*ShowRegs
now includes theIFAR
andDFAR
if appropriate, even if not recorded by the Kernel.
Fixed
- ProgEnv:
PC
is now reported into the error buffer in the environment (previously would usually report 0). - Debugger:
*ShowRegs
now reports disassembly without Exception Region Dump correctly.
0.63 (03 Sep 2024)
Added
- System: Abort stack is now present.
- Modules: Module area may now be used, allocated to page boundaries.
Changed
- Modules: Loading an AArch64 module now reports errors.
- Modules: Service table offsets are now checked more rigorously.
- Executables: Utility files can now validate their header, which is required for AArch64 files.
- Debugger: Improved decoding of AArch64 registers and memory.
- Debugger: Backported riscos-disassemble-python improvements to
*DumpI
and theriscos-dumpi
tool. - Debugger: Disassembling AArch64 code now understands SWI numbers and strings after
OS_WriteS
.
Fixed
- System:
BKPT
instruction is now reported as a prefetch abort. - SoundChannels:
Sound_Control
checks values better (previously would abort if given out of bounds values). - WebColours: CSS to name conversion now correctly converts CSS 3 colour names (previously would only handle HTML colour names).
0.61 (19 Jul 2024)
Changed
- Trace: AArch64 disassembly now has some comments about constants.
- Executables: AIF files now have their headers checked.
0.60 (15 Jun 2024)
Added
- System:
OS_PlatformFeatures 33
to read cache information is now implemented. - ProgEnv:
OS_ChangeEnvironment 34
(ExceptionDumpRegion) added for captured instructions at time of exception. - Executables: Add support for running unix executables within the RISC OS enviroment.
Changed
- Filesystem: Files with no filetype, but with the executable permission, are now reported as type
UnixEx
.
Fixed
- Filesystem: Multiple path enumeration should now be able to find files better when path variables are supplied.
- Filesystem: Host FS symbolic links to non-existant files shouldn't cause the filesystem to crash when enumerating directories.
- FileSwitchCommands:
*Info
now reports files when requesting information on files on path variables. - FileTypes: FileTypes module now sets the variable values using string rather than literal (previously would not expand escapes)
0.59 (04 May 2024)
Fixed
- Graphics: ImageFileRender of PNGs with palettes and tRNS chunks will now be rendered with transparency (previously they would be opaque).
- Graphics: ImageFileRender of images with different DPI settings should now appear correctly (previously would be unscaled with respect to their DPI).
- Filesystem:
OS_Args 254
now returns the FS info word correctly (previously would corrupt R1).
0.58 (14 Apr 2024)
Fixed
- Configuration: Configuration 'regex' definitions now match the whole configuration value (previously would have allowed invalid configurations).
0.57 (15 Mar 2024)
Changed
- Memory:
OS_DynamicArea 2
(GetInfo) can now be configured to error when application space is requested. - Wimp:
Wimp_SlotSize
can now report failures when given negative values that aren't -1.
Fixed
- PyromaniacGit: Fix for PyromaniacGit being given invalid paths (would previously report traceback).
- PyromaniacGit: Fix for PyromaniacGit bad commands not reporting the command name in the error.
0.56 (04 Feb 2024)
Added
- Input:
Event_Keyboard
(11) is now raised if it is enabled when keys are pressed. - Input:
Event_Escape
(6) is now raised if it is enabled when the escape key is pressed. - Graphics: New configuration added to limit modes that can be displayed/enumerated (
vdumode.display_*
) - ColourTrans:
ColourTrans_WritePalette
is now implemented for the screen. - Sound: SWI
Sound_SoundLog
is now implemented.
Changed
- Trace: Disassembly of arithmetic instructions now includes comments on constant values.
- Trace: Trace warnings are generated for palette operations in true colour modes.
- System:
OS_PlatformFeatures 0
is now able to have the flags configured (osplatformfeatures.codefeatures
). - Timings: Timings reports for SWIs/Emulation will now report the longest continuous time spent.
- Timings: Timings reports for SWIs will now report the actual SWI instead of
OS_CallASWI
. - Startup: If the selected mode is not available on startup, we now try to select a mode which exists.
- Graphics: Screen mode enumeration (
OS_ScreenMode 2
) can now be configured to include low resolution and rectangular modes. - Graphics: Mode selectors with inconsistent Log2BPP/NColour variables can now be faulted or warned about.
- Graphics: Mode selectors with the FullPalette mode flag set on non-8bit modes can now be faulted or warned about.
- Graphics: Attempting to write to the palette in true colour modes will now generate a warning.
Fixed
- Trace: Disassembly of non-standard constant shifts on ADR instructions is now resolved correctly (previously would only use the base, not the rotation).
- Graphics: Screen mode enumeration when the number of modes to skip exceeds those that could be returned now correctly returns 0 in R2 (previously could be a positive integer).
- Executables: Starting absolutes now issues the
UpCall_NewApplication
andService_NewApplication
before loading the binary (previously would issue the UpCall and Service after overwriting application space).
0.55 (08 Jan 2024)
Added
- Tool: Disassembly tools in
utils
directory replaced withriscos-dumpi
tool for disassembling binary files. - ProgEnv: New
OS_PlatformFeatures 64
to describe architecture CPU registers. - Debugger:
Debugger_DisassemblePlus
is now supported to allow different presentation of disassembly (from DebuggerPlus). - Debugger:
*DisassembleFlags
and SWIDebugger_Flags
now supported to change disassembly flags in Debugger (from DebuggerPlus). - Debugger: Debugger flags are now honoured in
Debugger_Disassemble
and*MemoryI
. - Debugger:
Debugger_DisassembleThumb
is now supported. - Debugger: New
Debugger_DisassembleArch
added to disassemble other architectures than the current one. - Debugger: New
*DumpI
to display a file as a disassembly.
Changed
- Trace: Updated disassembly live registers to omit repeating a registers in comments.
- Debugger: Disassembly now uses lower case hex characters consistently.
- Debugger:
*MemoryI
now supports theT
and6
prefixes to disassemble Thumb and AArch64 code respectively.
Fixed
- Trace: Disassemble configuration now correctly offers rename for r14 and r13 (previously was available but broken).
- ProgEnv: Fixed documentation of
OS_ChangeEnvironment 32
(previously had the wrong exit registers). - VDU: ANSIText
support_8bit
option would not use the greys at all, and could not be used withsupport_primary
. - Debugger:
*MemoryI
and*Memory
of invalid memory no longer generates a Python traceback. - Debugger:
*MemoryI
disassembly no longer shows negative ADR offsets like&-fffffffc
. - Debugger: Debugger context colouring of disassembly would not colour brackets, braces and punctuation properly previously.
0.54 (10 Dec 2023)
Added
- Wimp:
Wimp_ReportError
graphics implementation can now use thedivider
sprite. - UI: WxWidgets can now be configured to close the window without quitting the application.
Changed
- Configuration: Configuration help messages now have consistently styled bullets.
- Trace: Trace reports are now aware of PyCall entry points and don't list back beyond them.
- System: Action
wait
can now take an optional timeout in seconds. - Graphics: BBCBasic graphics implementation now provides character definitions.
- Sound: SoundChannels handling of silence and flushing no longer initialises the MIDI system just to silence it.
- Wimp: Window redraw now includes the scrollbars, when they are enabled.
Fixed
- Platforms: OSX build of appliation works again (had become broken by the changes for readline completions).
- Wimp: Window region is now drawn correctly, with the furniture outside the redraw region.
- Wimp: Sprites in icons without borders or fill will now be clipped properly (previously would use the wrong clipping rectangle).
- UI: WxWidgets on Linux no longer generates a warning when the About box is opened.
- UI: WxWidgets 'documentation' launching now reports missing markdown files better.
0.53 (02 Nov 2023)
Added
- System: Action
wait
will wait for a key to be pressed before completing. - Graphics: New
BBCBasic
graphics implementation, outputs BASIC commands to reproduce some of the graphics output. - Wimp:
Wimp_OpenTemplate
,Wimp_LoadTemplate
,Wimp_CloseTemplate
manage template files. - Wimp:
Wimp_CreateWindow
andWimp_DeleteWindow
manage windows. - Wimp:
Wimp_GetWindowState
andWimp_GetWindowInfo
read the current state of the window. - Wimp:
Wimp_OpenWindow
opens the window on screen - it cannot be interacted with, and is only drawn. - Wimp:
Wimp_CloseWindow
marks windows as closed. - Wimp:
Wimp_CreateIcon
andWimp_DeleteIcon
manage icons. - Wimp:
Wimp_GetIconState
,Wimp_SetIconState
,Wimp_ResizeIcon
, andWimp_WhichIcon
manipulate and identify icons in windows. - Wimp:
Wimp_SetCaretPosition
andWimp_GetCaretPosition
track the caret position, but do not render. - Wimp:
Wimp_GetPointerInfo
read information about the pointer and icons. - Wimp:
Wimp_SlotSize
changes the current application space size. - Wimp:
Wimp_ReportError
'graphics' implementation now draws an error box like RISC OS Classic.
Changed
- Docs: Change log entries are now ordered more consistently, from tools and system through the layers of initialisation and wimp to the extension modules.
- Invocation:
pyro.py
tool switch--list-actions
includes a description of the action. - Wimp:
Wimp_PlotIcon
D
(password obscuring) validation is now supported. - Wimp:
Wimp_PlotIcon
now supports multi-line (L
validation) text, at all alignments. - Wimp:
Wimp_PlotIcon
now supports the toggleable sprites when an icon is selected. - Wimp:
Wimp_PlotIcon
for unfilled text+sprite now fill behind text.
Fixed
- Invocation:
pyro.py
tool switch--list-actions
no longer takes an optional parameter (which was ignored). - Memory: Resizing application space to zero no longer gives a Python backtrace.
- SWIs:
OS_ConvertFileSize
andOS_ConvertFixedFileSize
not including a space after the number. - Input: Tab should be bound to completions when used with LibEdit on macOS.
- Graphics: Pointer configuration for mode change of 'null' should no longer crash with a Python traceback.
- Graphics: VDU 5 text plotted with OS_Write0 off the edge of the screen, whilst VDU 5 extent movement flag is not set, is now clipped properly.
- Wimp: Window title height now defaults to 40 pixels, not 48 pixels.
- Wimp: Icons with the 'deleted' flag set are no longer redrawn.
- Wimp: 3D border for the Wimp buttons is now drawn faithful to the RISC OS Classic style.
- Wimp: EasyGUI implementation of the error box no longer generates a backtrace if you close the box with the close icon.
- Wimp: WxWidgets implementation of the error box no longer generates a backtrace if you supply an application sprite.
0.52 (01 Oct 2023)
Added
- CommandServer: Pyromaniac server can now track the host directory to change RISC OS directory.
- System: New action
reset
allow system to be rebooted. - VDU: VDU output file descriptor is now configurable (
vdu.output_fd
). - FileSwitchCommands:
*Access
can now be used to change the access permissions on files. - FileSwitchCommands: New
*Stamp
command added. - Wimp:
Wimp_PlotIcon
is now supported. - PyromaniacModule:
*Help Pyromaniac
now provides information about the system.
Changed
- Docs: PRM documentation includes better system version number information for components.
- Invocation: The
pyro.py
tool now gives a description of the command in its help. - CommandServer: Pyromaniac command server only outputs the banner when run interactively; command output doesn't include the banner.
- Configuration: Configuration files can now have environment variables expanded in
config
andvariables
sections. - VDU: Debug output should now appear on separate lines when used with the VDU implementation
ansitext
. - FS: Access permissions can be changed by the file system APIs.
- FS: Access permissions are now generated from the information in the filesystem where possible.
- FS:
OS_File
Load operations on Generic Code (file type &F95) can be configured to not issueOS_SynchroniseCodeAreas
. - FS: File creation now tries to set the timestamp to the load/exec quin specified.
- FS: Upcalls are now issued for opening files for modification and for closing those files.
- Wimp:
Wimp_ReportError
now recognises program errors by number and the special cased list. - Wimp:
Wimp_ReportError
attempts to use the current task name when reporting messages. - Wimp:
Wimp_ReadSysInfo 2
(iconsprites suffix) can now takeauto
to use the current mode. - Wimp:
*IconSprites
now applies the sprites suffix to the filename supplied. - UI: VNC graphics implementation uses the
graphicsui.title
as the display name.
Fixed
- Invocation: Command line invocation of native utilities are now synchronised (on Unicorn 2, multiple invocation might run the wrong code).
- CommandServer: Pyromaniac server now exits cleanly without starting a shell when informational switches are used.
- Debug: Debug output should now appear on new lines as expected when invoked with VDU implementation ANSIText (previously the end of debug lines would just move down, not return to the start of the line).
- Memory: Resizing a dynamic area to 0, then deleting it, no longer causes a python crash.
- Graphics: Fix for crash when rebooting the machine from a 32bit graphics mode and starting up in a 256 colour mode.
- Graphics: Fix for Python backtraces when using ECFs in 32bit pixel modes.
- FS: Fix for remapped directories failing if the RISC OS name was not lower case (would fail to access the mapped directories).
- FS: Cataloguing a directory no longer produces double-spaced output on certain lengths of filenames.
- FS: Native filesystem access to directories or files without permissions should now report RISC OS errors (previously would always report a Python traceback).
- FS: Deleting a symlink to a directory no longer produces a traceback due to it not being a directory.
- FS: Creating a directory over a broken symlink no longer produces a traceback due to the object already existing.
0.51 (06 Sep 2023)
Added
- Wimp:
Wimp_SetColour
/Wimp_TextColour
are now implemented. - Wimp:
Wimp_SetPalette
/Wimp_ReadPalette
are now implemented as stubs. - Wimp:
Wimp_SetMode
is now implemented as a stub, immediate operation. - Wimp: New
WimpCommands
module provides*WimpMode
and*WimpSlot
as stubs. - Wimp:
Wimp_CommandWindow
is now able to display the command window. - Wimp:
Wimp_TextOp 0-3
are now implemented.
Changed
- Heap:
OS_Heap
can now protect the blocks on the free chain along with the allocated blocks. - Sprites:
OS_SpriteOp 60
(redirection) now reports errors with the save area, with traces.
Fixed
- Trace: Changing the recent blocks count now takes immediate effect (previously would be ignored).
- Heap:
OS_Heap
free list now follows the RISC OS Classic's format, rather than the more obvious form is was previously. - VDU: Selecting a mode using a sprite mode word is now an error (previously would report recursion errors).
- VDU: Using a mode string to select a teletext or gap mode now retains the flags from that mode (previously would omit all flags).
- VDU: Mode strings for mode numbers which use RISC OS style base numbers are now handled (previously would only handle decimal mode numbers).
- Sprites:
OS_SpriteOp 60
(redirection) now handles the screen redirection better (previously would error). - Resolver:
Inet$*
variables used by Resolver no longer corrupt values on read.
0.50 (03 Aug 2023)
Added
- Memory:
OS_Memory 9
(read controller logical base) is now supported, and may return errors, or 0 for all devices. - Input: Native readline can now complete system variables, *-commands and filenames.
- TaskManager: TaskManager can be configured to return an arbitrary list of tasks.
Changed
- Timings: Output of the SWI timings is now consistent between runs.
- Memory:
OS_DynamicArea 0
(Create) can validate the name description for termination and the pointer according to configuration. - Memory:
OS_DynamicArea 0
(Create) names are now able to be limited, as they were in RISC OS 4 and above. - Sprites: Sprite areas and sprite pointers are now checked for validity (address below &8000, or non-existant) and report warnings and errors.
- TaskManager:
TaskManager_EnumerateTasks
can now terminate task names with CR.
Fixed
- Trace: Internal SWI calls can now be traced (previously would be ignored when
trace.switraps
was set). - Memory:
OS_DynamicArea 0
(Create) assigns a hex string as the description if the pointer was 0. - SWIs: GSTrans errors now report the correct error number (&FD).
- SWIs:
XOS_CallASWI
no longer reports misuse for non-X SWIs called from SVC mode. - CLI: Fix CLI execution to include control characters (previously would terminate on any control character).
- CLI: CLI alias expansion is not applied for things that look like paths (previously might still try expansion with arguments suffix).
- VDU: Fix for printing at VDU5 cursor outside the graphics window sometimes hanging.
- FS: Filename parsing in the FS APIs is now closer to RISC OS classic.
- Fonts:
Font_SetPalette
now bound colour numbers to be in the range 0-255 (previously could go outside the range and backtrace). - FileSwitchCommands: FileSwitchCommands no longer pass 0 to OS_FSControl for the path name.
- Twin: Fix
*Edit
with a file that does not exist giving the filename as 'TextFile'. - Zipper: Zipper will now compress files when creating archives (previously all files would be stored).
0.49 (09 Jul 2023)
Added
- Internet: Internet now reports basic statistics through the DCI4 statistics protocol.
- Resolver: Resolver now reports statistics through the DCI4 statistics protocol.
- Freeway: Resolver now reports statistics through the DCI4 statistics protocol.
Changed
- System: Configuration changes of swicalls, tracepoints and watchpoints now update immediately.
- Modules: Module command parameter dispatch is now much closer to that of RISC OS Classic.
- Sprites:
JPEG_(File)Info
now supports the 'return SOF' bit.
Fixed
- Modules: Module name lookup now trims spaces from end of string (previously the name had to match, or be abbreviated).
- Executables:
*Run
no longer GSTrans's its first argument (was giving different results with extra spaces at the end with new command parser). - SpriteUtils: Commands in SpriteUtils module no longer GSTrans their command line parameters.
- Debugger:
*MemoryI
and*Memory
will no longer GSTrans their command line parameters. - ResourceFS:
*ResourcesFS_Save
will no longer GSTrans its command line parameters. - International: Alphabet name to number conversion now terminates at a space and allows abbreviations (previously would need an explicit alphabet name).
- FileSwitchCommands: Commands in FileSwitchCommands no longer GSTrans their command line parameters.
- OSCommands:
*Key
and*Go
will no longer GSTrans their command line parameters. - ModuleCommands: Commands in ModuleCommands module no longer GSTrans their command line parameters.
- BootCommands:
*AppSize
will no longer GSTrans its command line parameters. - DDEUtils: DDEUtils throwback SWIs are now silent when configured to use the null implementation.
- Internet:
*InetStat
will no longer GSTrans its command line parameters. - SysLog:
*SysLog
,*SysLog_Flush
and*SysLog_Status
will no longer GSTrans their command line parameters. - SysLog: SysLog SWIs which return errors should no longer backtrace (previously they would use list as a function and generate a Python traceback).
- PyromaniacModule: Commands in Pyromaniac module no longer GSTrans their command line parameters.
0.48 (02 Jun 2023)
Added
- Invocation: New 'pyro' tool switch
--load-internal-group
to select groups of modules. - VDU:
VDU23, 8
(clear text region) is now supported. - VDU: ANSIText VDU implementation now supports text windows.
- VDU:
UKVDU23V
is now issued for unknownVDU 23
operations. - Input: Shift-function keys at console are now recognised.
- Graphics:
OS_Word 9
to read colour at point is now implemented. - Graphics:
PaletteV
is able to blank the WxWidgets display. - Graphics:
PaletteV
is used for reading and setting the palette. - Graphics:
Event_VSync
is now raised when configured (graphics.vsync_enable
). - NVRAM: NVRAM requests (
OS_Byte 161
andOS_Byte 162
) are now passed through NVRAMV. - GPIO: PCF8575 is now supported (a 16 port version of the PCF8574).
- FanController: New FanController module to match C interface implementation.
- PathUtils: New PathUtils module to manage manipulation of path variables.
- UI: Scroll wheel is now supported in WxWidgets.
Changed
- System: Moved all the internal modules into separte directory groups.
- Memory:
OS_Memory 8
dynamic DRAM value now includes the size of all allocated AMBs (previously only included the current application space). - Graphics:
VDU 19
,VDU 20
,OS_Word 11
andOS_Word 12
now pass throughPaletteV
. - Graphics: PolyHLine VDU variable is now able to be configured off.
Fixed
- Modules:
*Help
for module code help no longer outputs an extra newline. - Modules: Attempting loading Pymodules by module names that don't exist now reports a configuration error (previously would backtrace).
- VDU:
OS_PrettyPrint
should wrap text much more nicely now (previously could wrap spaces to start of lines and other oddities). - Hourglass: Hourglass percentages no longer change when more levels are enabled (previously would always change).
Removed
- UI: WxWidgets backspace now generates code 8 (reverts prior change to generate code 127).
0.47 (03 May 2023)
Added
- Heap: Dynamic Area Heap guard regions can now be configured to catch over and underwrites.
- Heap: Dynamic Area Heap watch points can now protect the header and guard regions in heaps.
- Graphics: Support for teletext modes using VideoV through the new 'VideoTTX' module.
- Spell: New 'Impression Spell' module added.
Changed
- Trace: Write watchpoints include the values that changed when reporting errors.
- Trace: Write watchpoints which are triggered now include the region around the written data.
- VDU:
OS_Write*
/OS_PrettyPrint
can now report errors or warnings instead of data aborting when bad addresses used. - Graphics: Mode selectors now check some mode variables for validity.
- Fonts: Increased the internal limit on number of fonts from 1000 to 1500.
Fixed
- Configuration: Configuration actions which are not known now report a configuration error (previously they would generate a traceback).
- Debug: The debug for SynchroniseCodeAreas had been typo'd as
synchronisecodeares
. - Trace: Fix for cached module identification not being reset when modules are killed (might report traced regions wrongly).
- System: SVC stack overflow is only ever reported for data aborts from SVC mode (previously might report the error for user mode writes to the stack).
- System: SVC stack smash detection no longer includes the return address from vectors (previously might report stack smash after a vector claim followed by an interrupt call to SVC mode).
- Heap: Dynamic Area Heap guard words code is now more reliable and should be able to report overruns when the checks are run.
- Graphics: Plot action for inverting in Cairo implementation is now more reliable (previously might not invert if the colour passed was not white).
- Territory: Fix for Territory module overrunning its allocated space for property tables and corrupting RMA.
- UI: Focus really is given to the application when the window first opens in WxWidgets.
- UI: WxWidgets backspace now generates code 127 (previously generated code 8).
0.46 (04 Apr 2023)
Added
- Docs: Included a memory layout diagram.
- System:
kill -USR1 <pid>
can now be used to interrupt the system for information. - System: SVC stack smash protection can now be configured to detect problems.
- System: SVC stack overflow can now be configured to detect problems.
Changed
- Invocation:
pyro
tool informational reporting now happens after module boot (previously occurred before module boot). - System: Data abort exceptions now include the region that the access took place in, in the error message.
- SWIs:
OS_GSTrans
can now handle out of range values more configurably. - Input:
OS_ReadLine
now reports an error for invalid length parameters. - Executables: Utilities now run from a dedicated dynamic area, rather than from RMA.
- Executables: Utilities executed on the command line now use the same mechanism as within the OS (previously would use their own implementation).
Fixed
- CommandServer: Client now handles input redirection better (previously would generate IOErrors).
- Trace: Tracing SWI registers and SWI arguments now reports the correct address (previously reported the next address).
- Heap:
OS_Heap
extend block operations (andOS_DynamicArea
/OS_Module
) with no change no longer return invalid block address. - SysVars:
Sys$Year
,Sys$Date
andSys$Time
now return sensible strings when Territory is present (previously would extract the wrong parts of the time strings). - VDU: ANSIText text colour selection no longer generates a Python traceback with out of range colours.
- Input:
OS_ReadLine
now bounds the data in the buffer to the maximum length plus terminator (previously would allow 1 byte too many). - Time: RTC time offsets during system startup are now more sensible (would previously report the year as 1953).
- Time: RTCV returns with out of range centuries no longer give a Python traceback.
- Time:
OS_Word 14 0
now reports the time string consistently whether Territory is present or not (previously the.
would be a space if Territory was absent). - Supervisor:
*GOS
command now callsOS_ReadLine
with a valid line length (previously called with 0). - FS: Filesystem statistics now records inability to open files (previously would ignore files that did not open).
0.45 (02 Mar 2023)
Added
- Debug: New debug option for UpCalls.
- Internet:
Socket_Recvmsg
andSocket_Recvmsg_1
are now partially implemented. - Resolver: The default
Inet$Hostname
value can now be set explicitly or randomised. - PyromaniacModule: Host command input is now supported, together with function keys/cursors.
Changed
- Internet:
Socket_Setsockopt
now supports someIPPROTO_IP
options. - Internet: Internet error numbers can now be based at 0 or &20E00 (previously were always based at &20E00).
- InetServices: InetServices now issues the correct services on startup and shutdown.
- Resolver: Resolver now issues the correct services when
Inet*
variables change. - PyromaniacModule: ANSI output parsing now understands
LNM
mode and theNEL
sequence.
Fixed
- System:
OS_ReadSysInfo 6
can now be configured to return errors for invalid values. - System:
OS_ReadSysInfo
correctly returns errors for unknown reason codes (previously would return without error). - Memory: Sparse dynamic areas can now be removed safely (previously would leave memory mapped in when removed).
- SysVars:
OS_SetVarVal
now correctly replaces surrounding quotes in string values that are set (previously would preserve quoted strings). - Input: Fix for
*FX4,2
not generating 0-prefixed codes when infx225, 2
configuration (would omit 0-prefix). - NVRAM: Configuration help messages fixed (had typos in).
- Supervisor:
*GOS
now exits if there is an internal error during processing (previously would error over and over forever). - Internet: Internet module now issues
Service_DCIProtocolStatus
on startup and shutdown (previously would not). - Internet:
Socket_Accept
and others now have theirsockaddr
structure length checked more carefully (previously might use the wrong size and overwrite the buffer). - Internet:
Event_Internet
is now issued on a callback, rather than from within the ticker interrupt. - Internet:
Socket_Creat
error number is nowEPROTONOSUPPORT
if socktype not recognised (previously wasESOCKTNOSUPPORT
). - Internet:
Socket_Ioctl
SIOCGIFCONF
now always returnsAF_LINK
configurations before other interface configurations. - PyromaniacModule: ANSI parser erase to start of line now erases cursor position (previously would not erase cursor position).
- PyromaniacModule: ANSI parser erase to start of screen now works (previously would do nothing).
- PyromaniacModule: ANSI parser erase to end of screen now erase to right of line (previously would only erase lines below).
0.44 (07 Feb 2023)
Added
- CommandServer: Pyromaniac Command server added.
- FS: Added configuration options for corrupting
OS_GBPB
andOS_ReadVarVal
. - Speech: New Speech! module, using the existing Speak implementations.
- UI: WxWxidgets keyboard lights now gives the names of the lights.
Changed
- Platforms: Application builds (Windows and macOS) now add the options for all the wx-specific implementations when run without parameters.
- UI: GPIO configuration for WxWidgets has been renamed from
wx
towxwidgets
in line with the other implementations. - UI: Spacing around the GPIO icons in WxWidgets is now clearer (particularly improved in Windows).
Fixed
- Platforms: Windows build now starts up properly in the UI (had become broken when new WxWidgets modules added).
- UI: Windows WxWidgets UI now recognises the Ctrl key (previously would be ignored).
- UI: WxWidgets GPIO and LEDs windows no longer traceback when opened twice.
- UI: WxWidgets GPIO configuration now allows
vgrid
(previously was described but not valid). - UI: WxWidgets text window editing no longer crashes with an encoding error when saving edited files.
- UI: Windows WxWidgets UI
OS_Confirm
now works properly in the application (would previously have crashed and hung).
0.43 (08 Jan 2023)
Added
- Resolver:
*ResolverConfig
is now implemented in the Resolver module. - Resolver: SWI
Resolver_CacheControl
has a rudimentary stub implementation. - OwnerBanner: New OwnerBanner module to give the initial system information on reset.
- PyromaniacModule:
*PyromaniacHostCommand
can now execute with a configurable TERM, and will have LINES and COLUMNS set to the RISC OS window size. - PyromaniacGit:
git remote
,git switch
,git clean
,git rebase
,git merge
,git cherry-pick
,git push
,git restore
,git shortlog
andgit grep
are now supported. - PyromaniacGit:
git commit
editor now includes messages when used with--amend
and rebase operations. - PyromaniacGit:
git commit
now supports the--file
switch. - PyromaniacGit: Git remote repository operations can now use negotiated authentication at the command line.
- PyromaniacGit: Authentication credentials can now be stored in a configuration file.
- UI: WxWidgets text window now has configurable width and height, defaulting by 80 x 20.
- UI: New RequestInput implementations allows different manners of input, initially through 'readline' and 'wxwidgets' implementations.
Changed
- Startup: OSInitBanner service can now be issued with a processor name supplied (
kernel.reset_banner_processor
). - FS:
OS_GBPB 9-12
(enumerate directory) can now be configured with different context orders, which are not monotonically incrementing. - Twin: TextEditor implementation now defaults to command invocation in safe mode.
- PyromaniacModule: Host command ANSI parser now understands more output from VT52 and VT100.
- PyromaniacGit:
git
with bad command now refers to*Help Git
rather than listing command names. - PyromaniacGit:
git rev-parse
can now take a reference to parse. - PyromaniacGit:
git diff
now supports branch and filename arguments, and the--cached
switch.
Fixed
- Resolver: Fixed the Resolver module not being case sensitive in its lookups of the Hosts file.
- PyromaniacModule: Host commands that give errors on starting now report better errors (previously would report a traceback).
- PyromaniacGit:
git help <command>
andgit <command> --help
now work for more commands (previously commands likeclone
would give errors about missing arguments). - PyromaniacGit:
git help
output now uses RISC OS format for its syntax messages (previously would use argparse 'usage: ' prefixes). - UI: WxWidgets UI under Linux should now display table info with a better sized window (previously would be very thin).
- UI: WxWidgets UI file explorer information dialogue now appears without scrollbars on Windows (previously would obscure the date and time).
- UI: WxWidgets UI file explorer now forces black text on grey background, even when the host is dark mode (for simplicity).
- UI: WxWidgets UI file explorer large icons are now centred (would previously appear right aligned).
- UI: WxWidgets UI no longer crashes on non-OSX systems when opening text windows.
- UI: WxWidgets UI file explorer no longer crashes when clicking on the background.
0.42 (01 Dec 2022)
Added
- Invocation: New
--set-variable-encoded
to make it easier to set values using UTF-8. - SysRqs:
timers-list
is now provided. - SysRqs:
irq-list
,irq-state
,irq-trigger
,irq-enable
,irq-disable
are now provided. - Interrupts: SWIs
OS_ClaimDeviceVector
/OS_ReleaseDeviceVector
are now implemented. - TimerManager: New
TimerManager
module allows arbitrary numbers of timers to be registered. - PyromaniacGit: PyromaniacGit module allows interactions with the host git tool.
- UI: Internet sockets information is now available within the WxWidget tables.
- UI: WxWidgets tables now includes Ticker information (as 'software timers'), and Timer information (as 'hardware timers').
Changed
- SWIs:
OS_PrettyPrint
now supports custom dictionaries.
Fixed
- Heap: OS_Heap shrink beyond the current size now shrinks the heap properly (previously would leave the heap size the same).
- Internet: Killing the Internet module now releases its ticker handler (previously would remain claimed).
- UI: Copying unicode strings from WxWidgets UI tables no longer crashes.
0.41 (03 Nov 2022)
Added
- SysRqs: New 'input-keyboard-string', 'input-keyboard-flush' and 'input-keyboard-bytes' system requests.
- SysRqs: New 'clipboard-info', 'clipboard-read' and 'clipboard-write' system requests.
- SysRqs: New
fs-file-list
,fs-file-mkdir
,fs-file-rename
,fs-file-delete
system requests. - UI: WxWidgets dump menus can now search for strings.
- UI: WxWidgets dump menus now have key shortcuts for Goto address and Find string.
- UI: WxWidgets UI and GTK now support pasting text to the RISC OS keyboard buffer.
- UI: WxWidgets can now browse files from the running system in a file explorer window.
- UI: WxWidgets UI now supports a Python shell to directly examine parts of the system.
Changed
- UI: WxWidgets UI on OSX now displays the Help as the rightmost menu.
Fixed
- Memory: DAHeap allocations which are close to the remaining size of the heap no longer fail.
- ResourceFS:
*ResourceFS_Save
now writes out the file data (previously would write out the entire file block). - UI: WxWidgets dump views now refresh properly when requested (previously would not refresh until the cache cleared or display format was changed).
- UI: WxWidgets dump views on very short content no longer generate backtraces.
- UI: GTK window menu background is now readable (previously would have been black text on dark grey background).
0.40 (02 Oct 2022)
Added
- SysRqs:
tasks-info
,fs-filehandles
,ambs-read-bytes
andambs-read-words
are now available. - Debugger:
*MemoryI
now colours output ifDebugger$Options
contains aC
. - GPIO: GPIO implementation for WxWidgets.
- PyromaniacWimpDebug: New experimental
PyromaniacWimpDebug
module to report on tasks and Wimp messages. - UI: WxWidgets UI data views in can now be refreshed, saved as text or CSV, and copied to clipboard.
- UI: WxWidgets UI now has memory displays for modules, AMBs, DAs and NVRAM.
- UI: WxWidgets UI on macOS now pulls window to the front on dock icon click.
- UI: WxWidgets UI can resize the screen display window, and go full screen.
Fixed
- Modules:
OS_Module 20
no longer generates python exceptions when decoding version numbers. - Input: Negative mouse coordinates can now be returned through
OS_Word 21
(previously would give Python exceptions).
0.39 (31 Aug 2022)
Added
- Invocation: Command line option
-action
allows explicit actions to be supplied. - SysRqs:
internet-sockets
SysRq to read information about the Sockets. - SysRqs:
ambs-info
is now provided. - SysRqs:
fs-filehandles
is now provided. - Graphics: Palette now supports border colour.
- Graphics: Border colour can change the window border in WxWidgets UI.
- Graphics:
turingsmartscreen
frame device graphics implementation. - IIC: IIC internal device
aht10
, a temperature/humidity sensor. - IIC: IIC internal device
lm75
, a temperature sensor. - IIC: IIC internal device
mcp9808
, a temperature sensor. - IIC: IIC internal device
max30205
, a temperature sensor. - IIC: IIC internal device
mcp4725
, a DAC. - GPIO:
ch341
GPIO implementation. - Internet:
*InetStat
command to list open sockets. - UI: WxWidgets UI now has a 'Show console' menu option to capture our console output.
Changed
- Graphics: Cairo image saving now supports PDF files.
- Supervisor: UtilityModule now has configuration for whether it is allowed to be killed.
- IIC: IIC internal implementation is now configured by device names.
Fixed
- SysRqs: Broken connections to the sysrq server no longer error forever.
- SysVars:
*Set
now strips values that are prefixed by spaces (previously would prefix with the spaces). - EvaluateExpression: Unary + and - now work better in
OS_EvaluateExpression
. - Graphics: Cairo pointer rendering in videos no longer has race conditions.
- Sound: SoundChannels MIDI notes should now be silenced on exit (previously might leave some channels playing).
0.38 (02 Aug 2022)
Added
- System: Python modules can now be preloaded before PyModules.
- Time: New
RTCHWPCF8563
,RTCHWPCF8583
,RTCHWDS3231
modules for IIC-based RTCs. - Serial: New serial implementation
pyserial
added, to support connecting to real devices. - IIC: New
cp2112
IIC implementation for the CP2112 USB IIC/GPIO interface. - IIC: New
ch341
IIC implementation for CH341 USB to IIC/GPIO board. - IIC: New
pigpio
IIC implementation for accessing IIC on Raspberry Pi. - GPIO: New
cp2112
GPIO implementation for the CP2112 USB IIC/GPIO interface. - GPIO: New
pigpio
GPIO implementation for accessing GPIO pins on Raspberry Pi. - GPIO: New
rpigpio
GPIO implementation uses the RPi.GPIO interfaces.
Changed
- Resolver: Resolver will now cache hostname results (previously would always allocate more memory with each request).
- Resolver: Resolver will now free memory on finalisation (previously would leak memory).
- Resolver: Resolver now supports reading data from Hosts files.
Fixed
- NVRAM: Writing to NVRAM in the internal IIC PCF8583 device now writes data (previously would ignore the write).
- GPIO: GPIO
pcf8574
implementation no longer crashes when reading pin state. - UI: WxWidgets on OSX no longer includes an implicit 'Show tab bar' menu item.
0.37 (06 Jul 2022)
Added
- Time:
RTCV
is now used to retrieve the real time clock. - Time:
RTCVHWDS1307
module allows time to be read from a DS1307 IIC device. - Time:
OS_Word 15
(write time) is now supported. - Graphics: SSD1306 frame device now supports inverting the display, rotation and flipping.
- Territory:
Territory_ConvertTimeStringToOrdinals
is now supported. - IIC:
mcp2221
IIC implementation can now configure I2C bus speed. - GPIO: New
pcf8574
GPIO implementation for PCF8574 8 port I/O expander. - GPIO: New
mcp23008
,mcp23017
GPIO implementations for the MCP23008/MCP23017 8/16 port I/O expanders.
Changed
- Time: Internal PCF8574 IIC device now uses the emulated clock as a source, and can be written to.
- Time: OS time functions now use Territory if it has been initialised.
- IIC: Improved error messages for the MCP2221 initialisation used by IIC and GPIO.
- GPIO: GPIO module now understands pull up/down states.
- GPIO: Speed up the GPIO access for the MCP2221 implementation by 33%.
Fixed
- Time: OS time functions now report the time with the timezone applied (previously ignored the timezone).
- Time:
OS_Word 14,0
(read time string) now CR terminates the returned string (previously would be 0 terminated). - Territory: Territory time ordinals now use 1 for Sunday as the day of week (previously used 6 for Sunday).
- IIC: MCP2221 is now safe for use in multithreading (previously might crash if used for SSD1306 display and user mode IIC).
0.36 (04 Jun 2022)
Added
- Graphics: New 'FrameDevice' graphics implementation, and physical devices to render to.
- Territory:
Territory_Number
/Territory_NumberToName
/Territory_NameToNumber
now supported. - Serial:
OS_SerialOp
is now supported, withnull
andfile
implementations, - GPIO: GPIO module can provide access to implementations of GPIO pins.
Fixed
- Graphics:
OS_Plot
Block copy/move now works properly (previously might invert the exposed region). - IIC: MCP2221 IIC reading now works (previously would report a fixed string 'None' for every read).
0.35 (06 May 2022)
Added
- SysRqs:
fs-statistics
is now provided. - System:
OS_ReadSysInfo 6, 25
(IRQStack) is now implemented. - System: KernelDebug supports a
socket
implementation to talk to a TCP server. - Interrupts: Ticker calls can now be slowed by a configurable rate (
tickers.dispatch_rate
). - Memory:
OS_Memory 6
andOS_Memory 7
(Physical memory tables) can now return different page table formats. - Memory: Dynamic Areas can now fake being sparse, by always being mapped in.
- FS: Statistics may be gathered on the number of file system operations performed.
- FS: File modification operations can now check whether the file is open first.
- Parallel: ParallelDeviceDriver supports a
socket
implementation to talk to a TCP server. - IIC: IIC implementations for Null and MCP2221 USB device are now provided.
- Wimp:
Wimp_ReadSysInfo 2
now returns a configurable sprite suffix string. - Wimp:
Wimp_ReadSysInfo 7
now returns a configurable WindowManager version number. - Wimp:
Wimp_ReadSysInfo 9
(Tool sprites) is now supported. - Wimp:
Wimp_ReadSysInfo 11
(Application space size) is now supported. - Wimp:
Wimp_ReadSysInfo 16/19
(Base of Sprites, Priority Sprites) is now supported. - Wimp:
Wimp_BaseOfSprites
is now supported. - Wimp:
Wimp_SpriteOp
is now supported with a configurable sprite pool. - Wimp:
Wimp_ReportError
now supports the user sprites supplied to it. - Wimp:
*ToolSprites
and*IconSprites
commands are now provided by the WimpSpritePool module.
Changed
- System: KernelDebug is now provided as implementations, so the configuration has changed slightly.
- FS: Configuration for checking open files has changed option name to
check_open_files
. - Parallel: ParallelDeviceDriver
file
implementation now has its own configuration asParallelFile
. - IIC: IIC is now provided as an implementation to allow it to be extended.
- SystemBell: SystemBell now uses
systembell.implementation
for configuration andwxwidgets
now provides an implementation. - UI: WxWidgets TextEditor now displays in a monospace font.
Fixed
- Trace: SWI trap configuration (
trace.switraps
) will now display the SWIs that were trapped (previously always showed an empty string). - ProgEnv: Bad environment handler numbers now return correct error number.
- SWIs: Mismatched brackets in
OS_EvaluateExpression
will be reported properly. - SWIs:
OS_Byte
dispatcher and LegacyBBC now treat the reason code as 8 bit (previously would use the full 32 bits as the reason code). - CLI: Long CLI commands now report the correct error.
- FS: Failing rename due to existing file now reports the correct error number.
- LegacyBBC: Invalid
*Key
invocation now reports the correct error. - UI: WxWidgets TextEditor now disables smart quotes on OSX (previously would mangle source saved from it).
- UI: WxWidgets TextEditor no longer applies smart quotes on OSX (when wxPython >= 4.1.0 used).
- UI: TextEditor can now be configured with encoding to avoid data loss (would previously encode content to UTF-8).
0.34 (05 Apr 2022)
Added
- Invocation: Command line switch
--list-sysrqs
lists supported system requests. - SysRqs:
sysvars-get
andsysvars-set
are now provided. - SysRqs:
fs-file-read
is now provided. - SysRqs:
tickers-list
andtickers-statistics
are now provided. - SysRqs:
nvram-info
,nvram-clear
,nvram-read-byte
, andnvram-write-byte
are now provided. - SysRqs:
timings-info
,timings-reset
are now provided. - Modules:
Service_ModuleStatus
is now issued for module operations. - Modules:
Service_ModulePreInit
is now issued prior to module startup. - Debugger:
*Tickers
command to list ticker handlers at a given time. - Debugger:
*TickerStats
and configuration to report on ticker events. - ResourceFS:
*ResourceFS_Save
command now exists to save out the contents of ResourceFS. - Wimp: WimpReportErrorBox implementation is now available for WxWidgets native dialogues.
- Wimp:
Service_ErrorStarting
/Ending
,Service_ErrorButtonPressed
are now issued byWimp_ReportError
. - Twin: New
*Edit
command allows files within RISC OS to be edited in a native editor at command line or in WxWidgets.
Changed
- Time: The system clock can now be forced to a given time at boot (
time.force_boot_time
). - Graphics:
OS_Confirm
has multiple implementations, including WxWidgets. - FS: Opening files now disallows writing to the same file twice, or reading a writing file (configurable).
- MessageTrans: MessageTrans SWIs should now return correct error numbers.
Fixed
- SWIs:
OS_EvaluateExpression
<<
operator now works correctly (previously would generate exceptions or shift right). - SysVars: Writing to code variables will now only write the data requested (previously could pad with junk bytes).
- Time:
OS_Word 14,2
now checks the bounds of the BCD values supplied (previously might backtrace). - NVRAM: NVRAM backing file in the
bytes
format are now written properly (previously would write a string representation). - FS: No longer crashes when running a file with a load/exec address.
- MessageTrans: MessageTrans reports errors in full mode when the file does not exist (previously would allocate large memory blocks).
- Printer:
*FX 5
/*FX 6
now changes the printer type/ignore character correctly (previously would produce a python backtrace). - PyromaniacModule:
*PyromaniacHostCommand
ANSI handling no longer backtraces on CNL, CPL or extended colour selection (code 38/48m).
0.33 (01 Mar 2022)
Added
- SysRqs: System requests server allowing line based commands can be configured.
- SysRqs: Register reading and writing is now possible.
- SysRqs: Module, graphics system, dynamic area and system variable information is now retrievable.
- SysRqs: Memory reads, dumps and disassembly is now possible.
- FS: Filesystem native directories can now be mapped from any path.
- Sprites:
OS_SpriteOp 14/16
(GetSprite/GetSpriteUserCoords) now grabs a sprite from the screen. - Portable:
Portable_ReadSensor
is implemented and can be configured. - WebColours: New WebColours module for converting colours to different forms.
- PyromaniacModule:
*URLCopy
can now be used to download files from URLs. - UI: WxWidgets implementation can now emulate the middle mouse button with meta key.
- UI: WxWidgets implementation can display information about graphics, modules, dynamic areas, and system variables.
Changed
- Graphics: PNGs saved from Cairo now have a
pHYs
chunk. - Graphics: Saving videos from Cairo now includes an aspect ratio.
- Graphics: Giant patterns are now supported in Cairo graphics.
- FS:
OS_File
operations now issue UpCalls. - Sprites:
*SGet
is now implemented.
Fixed
- Trace: Disassembly of
RSB
/RSC
now reports register use. - System: Errors reported from
pyro.py
or config commands are now encoded with output encoding (previously would be left in the RISC OS alphabet encoding). - VDU: ModeExtensions which set NColours no longer crashes.
- VDU: ModeExtensions which set Log2BPP or width now sets line length properly (previously would be set to double expected value).
- VDU:
OS_Byte 25, 7
will now reset the upper 32 character definitions (previously would reset all characters). - Graphics: Combining saving Cairo screens to SVG and video now disables video (previously would crash).
- Graphics: Parallelogram plot now fills the lines the right way around.
- Graphics: Circle plot now draws properly in non-square modes.
- Graphics: Tint colour selection now works for foreground and background (previously was reversed).
- Graphics: Ellipse fill/outline no longer crashes when the ellipse is a line.
- Graphics: Plotting sprites without palette in shallow modes now uses correct colours (previously used default palette).
- Graphics: Fix for block copy/move not doing the right operation (previously would copy for some move operations).
- FS:
*SpoolOn
now works (previously would generate python exception). - FS:
OS_FSControl 28
(Count) now returns results in the right registers (previously R2 and R3 were transposed). - Draw: Draw operations with round on only one end of the path now work (previously applied to only one end).
- Fonts: Graphics origin is now applied to the font plot position (previously would use coordinates without origin).
- Debugger:
*Vector
now writes to the VDU output (previously wrote to console stdout).
0.32 (07 Feb 2022)
Added
- System: CPU model selection can now be configured, under Unicorn 2.
- Memory: The contents of the low vector area can be configured with different content.
- Heap: DAHeap tracking can now perform checks for corruption on every operation.
- ResourceFS: New ResourceFS module tracks state of file registrations.
- InetServices: New InetServices module created.
- Freeway: Freeway module now tracks state of registrations.
- Speak: New Speak module created with null, console and OSX implementations.
Changed
- Trace: Low vector watchpoints can now trigger aborts as well as tracing.
- ShareFS: ShareFS now registers shares with Freeway.
Fixed
- Heap:
OS_Heap
resize heap to 0 no longer ignores the heap header. - Heap: Resizing a DAHeap block to be smaller now works (previously would resize by unsigned value and fail).
- Heap:
OS_Heap
block resize to smaller no longer corrupts the following block. - Heap: Improved reporting of some heap corruptions.
- FS: Multifile operations with a single component (like
*Count @
) no longer givedirectory not found
. - UI: Fixed deprecation warning in WxWidgets implementation for Bitmaps.
0.31 (03 Jan 2022)
Added
- ADFS: ADFS module provides a block system that can access disc images.
- CDFSDriver: Promoted the CDFSDriver from test to the main internal modules.
- CDFSSoftPyromaniac: CDFSSoftPyromaniac now fakes support for the audio playback calls.
- ShareFS: ShareFS module created to track shared disc state.
Changed
- Trace: Trace watchpoints are now read and write (previously write only).
0.30 (09 Dec 2021)
Added
- CompressJPEG: CompressJPEG module added.
- Parallel: Simple ParallelDeviceDriver now available.
Changed
- Modules: Module service tables now warn if they are not ascending.
- FS:
*FileInfo
now supports wildcards (previously only looked up one file). - Internet: Renumbered
AF_INET6
to be 24 (was previously 28) in the Internet module.
Fixed
- Trace: APCS backtrace in trace code will terminate on bad frames better (previously would crash for some forms of corruption).
- Interrupts: Ticker events won't be processed as often (previously would trigger even when no events should be triggered).
- Modules: Modules freeing their private word pointer no longer crash the system.
- Modules: Module reinitialisation now works (previously would crash with python backtrace).
- Input: Fix for key input timing out before reading a key (previously would error with python backtrace).
- Graphics:
OS_ReadModeVariable
now checks the validity of parameters better (previously might crash if invalid values given). - ColourTrans:
ColourTrans_GenerateTable
is now able to handle mode selectors (previously would crash). - Internet: Invalid
Socket_Creat
parameters should now report useful errors (previously would generate backtrace).
0.29 (02 Nov 2021)
Added
- VDU: VDU variable &C1 (PolyHLine) is now supported by the graphics system.
- Input: Stub
OS_Pointer
allows pointer type to be read. - Graphics: ECF fills are supported for ECF 1-4 (no giant ECF support).
- Graphics:
OS_ScreenMode 2
(Enumerate Modes) now calls the enumeration service. - Graphics:
OS_ScreenMode 12
andOS_ScreenMode 253
(Display details and max display) are now supported. - FS: Filesystem option to allow registration of filing systems (which will be ignored).
- FS: Encoding for native filesystem and RISC OS filenames is now configurable.
- ColourTrans:
ColourTrans_ReadPalette
is now supported. - ColourTrans:
ColourTrans_ConvertHSVToRGB
andColourTrans_ConvertRGBToHSV
are now supported. - Sprites:
OS_SpriteOp 15
(Create Sprite) is now supported. - Debugger: Disassembly in trace and Debugger now understands FPA instructions.
- Debugger:
*MemoryA
is now supported. - CDFSSoftPyromaniac: CDFSSoftPyromaniac module added to allow mounting of native data files.
- CryptRandom: CryptRandom module stub added.
- TimerMod: Created TimerMod for additional accuracy from the monotonic timer.
Changed
- Trace: Trace SWI arguments now reports OS_SpriteOp arguments (previously would not be recognised).
- Input:
OS_Byte 129
returns R1 = R2, and C state as in RISC OS Classic (this is undocumented behaviour in Classic). - Input: Input through the native readline is now encoded to the current alphabet (previously was passed through unchanged).
- Graphics: Video recording with the Cairo graphics implementation now records different streams for each resolution used.
- Graphics: Video recording with the Cairo graphics implementation can now include the pointer within the video.
- ColourTrans: ColourTrans version upped to 0.52 to match common application requirements.
- Sprites: SpriteOp plot calls with empty area can now be ignored or error (previously they backtraced).
- Sprites: SpriteExtend version upped to 0.99 to match common application requirements.
- Fonts: FontManager no longer errors on kerning requests by default (configurable option).
- LegacyBBC: LegacyBBC can now be configurably disabled, or have warnings for the calls it services.
- UI: WxWidgets UI can now re-centre the window on its current position on mode change.
Fixed
- System: Claiming and releasing vectors whilst in vector handlers will not skip other handlers.
- Memory: Application space resize when no AMB present will no longer backtrace.
- Modules:
OS_Module 18
will now report Incarnation Not Found errors when instances are not found (previously reported module not found). - CLI: Dispatch to module FS commands now uses the correct R12 (previously would pass the private word pointer).
- VDU: Fixed the VDU cursor rendering to not abort when Cairo SVG output is used.
- VDU: ANSIText positioning should not crash with backtrace (previously was broken by VDU 30 fixes).
- Graphics: Dotted line plotting is now reliable (previously some combinations would not use the pattern properly).
- Graphics:
OS_ScreenMode 14
(Encode mode string) no longer backtraces for 1 BPP modes. - Sprites: Fix for reading palettes of non-256 entry palettes on 256 colour sprites (previously only used the entries that were present).
- Sprites: Redirection to sprite now reports an error (previously would report a python traceback).
- Podule: Podule dynamic area can no longer be resized (previously would allow resizing and crash badly).
- UI: WxWidget keys for Caps and other flagged keys no longer generate debug output.
- UI: WxWidget keys for '
<
', '(
' and ')
' now work on Linux (previously would be ignored).
0.28 (02 Oct 2021)
Added
- Trace: Trace 'switraps' now support
traceon
andtraceoff
switches to control tracing when SWIs executed. - VDU: VDU may now be passed to the
WrchV
, configurably. - ColourTrans:
ColourTrans_Return*ForMode
are now implemented. - ColourTrans:
ColourTrans_InvalidateCache
is now supported, but does nothing. - Sprites:
OS_SpriteOp 37
(create/remove palette) now supports reading the palette size. - Fonts:
Font_CharBBox
is now implemented. - Fonts:
Font_ListFonts
now supports menu generation. - Fonts:
Font_DecodeMenu
is now implemented. - Territory:
Territory_ConvertStandardDateAndTime
(and friends) are now supported. - Wimp:
Wimp_ReadSysInfo
is now stubbed for a few reasons.
Changed
- Trace: Reports with PC around address 0 are improved.
- Graphics:
OS_Plot
actions are passed to the underlying graphics system. - Graphics:
OS_Plot
actions, Draw operations and sprite operations for invert and EOR are supported by the cairo graphics system. - Graphics: Invalid sprite mode DPI values can now be configured to report errors (previously they would always report errors).
- FS:
*FileInfo
now supports wildcards (previously only looked up one file). - FS: Multi-file operations (
*Wipe
,*Copy
,*Count
) can allow unsupported flags to be ignored, or warn. - FS:
*Wipe
now supports the force flag to remove locked files. - Sound: SoundScheduler now supports beats based on the real time clock.
- Sound: SoundScheduler now supports calling SWIs to play sounds.
- Sound:
SOUND
now supports RISC OS style pitch values (previously would ignore them). - Internet: Renumbered
AF_INET6
to be 24 (was previously 28) in the Internet module.
Fixed
- Trace: Debug options for switraps and traceswiargs can be used together (previously would backtrace).
- System: Kernel debug interface now writes output properly (previously would fall through to other pycalls).
- Memory: DA handlers can now have workspace = -1 to mean address base (previously passed through).
- Memory: DA handlers will now be called for the initial resize of the area.
- Memory: DA heaps will be called properly (they were previously implicitly called for resizing wrongly).
- Memory: DA handlers for PreGrow/PreShrink will now be given the correct current size of the area (previously was given the proposed size).
- CLI:
*If
with an empty Then clause (egIf 1 Then Else command
) now executes as expected (previously would report an invalid command 'Else'). - VDU:
OS_ReadModeVariable
returns C set for invalid many mode numbers (previously would always report errors). - VDU:
VDU 26
whilst inVDU 5
mode now resets text cursor to origin (would previouly only reset VDU 5 cursor). - Input: Fix for tab replacement character not expanding when in the special range controlled by shift and control (previously would crash with a Python backtrace).
- Graphics:
OS_SetColour
no longer crashes when you give it an invalid colour number. - Graphics:
*ScreenSave -native
now works (previously would not allow the 2nd parameter). - ColourTrans:
ColourTrans_ReturnGCOL
calls now return the GCOL values in 256 colour modes (previously would return colour numbers). - ColourTrans:
ColourTrans_GenerateTable
now works with a transfer function in deep modes (previously would crash with a Python backtrace). - Sprites:
OS_SpriteOp 17
(Validate Sprite Area) now works (would previously try to validate supplied sprite pointer too). - Sprites: Sprite plotting with old style 256 colour sprites (64 colour) should no longer crash.
- Sound: Sound channel 8 will now play notes (previously would be ignored).
- Sound:
Sound_AttachVoice
now returns the correct voice number on exit (previously was off by one). - Sound:
SOUND
now flushes current note in non-BBC style output when another note is played. - Internet: Invalid
Socket_Creat
parameters should now report useful errors (previously would generate backtrace).
0.27 (13 Sep 2021)
Changed
- Hourglass: Hourglass
pointer
implementation now supports percentages.
Fixed
- FS: Running untyped and absolute files correctly reports memory errors (previously would crash with python exception).
0.26 (06 Aug 2021)
Added
- Graphics:
OS_SpriteOp 65
(Tile sprite scaled) is now supported. - Sound:
Sound_Stereo
is now supported as a stub. - Sound: SoundScheduler module stub is now provided.
- Territory:
OS_Byte &46
(Change country) is now stubbed. - Squash: New Squash module provides decompression functions.
Changed
- System:
OS_PlatformFeatures 0
now reports that there are no physical pages. - Memory:
OS_ValidateAddress
now checks the whole address range (previously only checked the base address). - Input: Mouse position now defaults to the centre of the screen on mode change (configurable).
- Graphics:
OS_SpriteOp
plotting now supports case 4 (deep sprites plotted to a deep mode). - FS:
OS_File
load will now report an error if the memory being loaded into does not exist. - Sound:
*Stereo
can now display the stereo position for a channel. - Sound: Default number of sound channels is now 1 (more closely matches RISC OS Classic).
- MessageTrans:
MessageTrans_Lookup
buffer overflow behaviour is now configurable.
Fixed
- Memory:
OS_AMBControl 2
(resize) now correctly resizes to the number of pages requested (previously would resize by the number of pages requested). - Modules:
*RMEnsure
now works when multiple spaces used (previously would report errors). - Graphics:
ColourTrans_GenerateTable
no longer crashes when supplying a destination palette in deep modes. - Graphics:
VDU 26
is no longer passed on as unhandled (previously resulted in debug output). - Graphics:
OS_SpriteOp
names now handle control termination (previously only 0-terminated strings were read). - Sound:
*Stereo
no longer generates syntax errors on all commands. - Sound:
Sound_InstallVoice
now returns the maximum voice number installed when auto-allocation is used (previously would preserve the voice number on return). - MessageTrans:
MessageTrans_Lookup
no longer reports overflow errors when the buffer is too short. - MessageTrans:
MessageTrans_Open
(in full support mode) now populates the buffer completely with tokens and values (previously would only populate the values).
0.25 (04 Jul 2021)
Added
- Sprites:
OS_SpriteOp 17
(check sprite area) is now implemented. - Sprites: Plotting sprites can now use the sprite palette for implicit pixel translation table generation.
- Sprites: Plotting sprites can now use the 32K. translation table (deep sprites rendered in shallow modes).
- Sprites: Plotting sprites can now use the wide tables (shallow sprites rendered in deep modes).
- Sprites:
OS_SpriteOp 3
(screen load) and*ScreenLoad
are now mostly implemented.
Changed
- Sprites: Screen save using
OS_SpriteOp 2
now supports deep modes. - Sprites: ColourTrans 32K. tables are now generated for deep modes rendering to paletted modes.
- Sprites: ColourTrans wide tables are now generated for shallow modes rendering to deep modes.
Fixed
- Graphics: Palette lookups in 16bpp modes now process green (previously it would be treated as red).
- Graphics: Cairo screen save to PPM is now supported in deep modes (previously would hang trying to build a palette).
- DDEUtils: DDEUtils throwback now more reliable with PostURL (previously could crash on many operations).
0.24 (04 Jun 2021)
Added
- Input: Keyboard scan with
OS_Byte &79
,OS_Byte &7A
andOS_Byte &81
is now supported. - Input:
KeyV 3
(Update LEDs) is now issued when the LEDs are changed. - Graphics: Flashing VDU cursor is now supported, but can be configured off.
- Graphics: Circle arcs, sectors and segments are now supported.
- Graphics: ImageFileRenderPyromaniac module provides rendering for other image files through ImageFileRender.
- ColourTrans:
ColourTrans_GenerateTable
now creates pixel translation tables. - Sprites: SpriteExtend module added, just for the JPEG rendering (which supports arbitrary JPEG rendering).
- Sprites:
OS_SpriteOp 28
,34
and52
(sprite plotting, and scaling) are now implemented for shallow sprites. - UI: Keyboard lights window is now available in the WxWidgets graphics implementation.
Changed
- System:
OS_ConvertNetStation
now reports errors for invalid stations and networks. - ColourTrans: ColourTrans colour selection now uses more accurate colour matching for paletted modes.
- Draw: Draw operations are now rejected in non-graphics modes.
Fixed
- System:
OS_Write0
now returns correct pointer (previously returned pointer off by one). - System: Utility invocation now preserves
r13_usr
andr14_usr
around the call. - Modules:
OS_Module
now accepts abbreviated module names (previously would not recognise module names ending in '.'). - Modules: Module instance names can be matched insensitively (previously names must match exactly).
- Input: Shift-Ctrl-Function keys now generate the correct input (previously would be treated as Ctrl-Function)
- Input: Escape acknowledgement will not flush all buffers (previously it would call the 'update keyboard LEDs'
OS_Byte &76
). - Graphics:
OS_SetColour
correctly sets the foreground colour in 256 colour modes (previously selected the GCOL number as the colour number). - Graphics: Cairo PNM saved screens now work in 256 colour modes (previously would only save 64 colours).
- Sprites:
*SList
now lists the bit depth correctly (previously would report the BPP as the mask existance). - Fonts:
Font_Paint
now renders correctly when lengths are specified (previously would be off by one, and render an extra character).
0.23 (04 May 2021)
Added
- System:
OS_ReadSysInfo 10
(Read OS version) now returns appropriate values. - System:
OS_ReadSysInfo 11
(Read Debug functions) returns functions which can output to host. - Graphics: Ellipses are now drawn by the cairo graphics implementation.
- FS:
*Wipe
is now supported by the FileSwitchCommands module. - FS:
*Close
is now supported by the FileSwitchCommands module and its effect can be configured.
Changed
- Draw: Draw SWI calls are now dispatched through
DrawV
. - OSCommands:
*GO
now usesOS_FSControl 2
to start as an application. - Portable: Portable module now has multiple implementations, including an OSX implementation for most variables.
Fixed
- Trace: SWI traps configured with a number which isn't known on start no longer generate a backtrace.
- Graphics: Circles are now rendered a pixel higher in the cairo graphics implementation (previously would be rendered too low).
- Draw: Draw SWI names are now correct (previously they missed out the FP variants, so were desynchronised).
0.22 (06 Apr 2021)
Added
- Modules: Module feature flags now include architecture indication for Python and ARM 32 (and others).
- Graphics: New configuration to allow arbitrary screen mode definitions through PyromaniacModes module.
- Fonts: New FontManager module created, with a Cairo implementation, and FontConfig listing of available fonts.
- Fonts: Font SWIs can be dispatched through FontV if configured.
Changed
- Configuration: Configuration files can now include
${VARNAME}
in the modules sections to expand host variables. - Input: Mouse positions are now reported through the mouse buffer.
- Input: Escape side effects are now triggered when escape is acknowledged (previously would have no effect).
- FS:
OS_GBPB
enumeration now supports wildcards. - Fonts:
Font_FindFont
with a matrix qualifier allows the trailing space to be missing (PRM says it is required but classic FontManager does not enforce). - Sound: SoundChannels now reports warnings from Sound_Control only when enabled by
sound.enable_warnings
. - Internet: Interface enumeration should try to list loopback and 'real' interfaces first, and consistently (previously would be dependant on the host enumeration order).
Fixed
- Timings: Timings of SWIs no longer crash if enabled from
*PyromaniacConfig
. - SWIs: Fix for GSTrans unterminated variable expansions reporting errors.
- Modules: Failed MessageTrans lookup in help messages now reports the error as a message (previously would error, stopping
*Help
). - Modules: Compressed modules now report errors on initialisation (previously would cause prefetch aborts).
- CLI: Module commands issued with multiple spaces are no longer counted as excess arguments (previously would report syntax errors and incorrect parameter counts).
- Graphics:
VDU 5
horizontal wrapping only happens when start position is on screen (previously would wrap even when off screen). - Graphics:
VDU 5
vertical wrapping moves to the top of the screen when start position is on screen (previously would never wrap properly). - Graphics:
VDU 5
delete now deletes characters (previously would just move back a character). - Graphics:
VDU 5
positioning withVDU 31
now moves to the correct position (previously would position the y-coordinate incorrectly). - Graphics:
OS_ChangedBox
now reports the y coordinates properly (previously would duplicate the x coordinates). - Graphics: GCOL colours in 256 colour modes should now be correct (previously would map directly to the palette).
- Graphics: Native ReadLine output to a graphics implementation no longer truncates at the end of a line.
- Graphics: In Cairo graphics implementations, scrolling text windows when a graphics window is in use is now effective (previously would be bounded to the graphics window).
- FS:
*Info
now lists all wildcarded filenames (previously would only list a single file). - FS: Reporting of invalid paths now uses the expanded path name, rather than
invalid
, in error messages. - FS: Fix for filenames containing nested variables not expanding properly (previously would only expand one level).
- Internet: Fixed bad interface names generating python backtraces.
- UI: WxWidgets mouse double clicks are now reported as clicks (previously the double click would be ignored).
- UI: Default screenshot save directory in WxWidgets UI is now the current working directory (previously would be the Pyromaniac source).
- UI: VNC movements and clicks now report the correct y-coordinate (previously would be inverted with respect to the screen height).
- UI: VNC clicks now report Select and Adjust the right way around (previously these were transposed).
- UI: VNC mouse release is now reported (previously release would not be reported).
0.21 (07 Mar 2021)
Added
- Modules: New Zipper module allows extraction of files from Zip files.
Changed
- Modules: Dictionary tokens are now supported in the module help and syntax messages.
Fixed
- VDU: ModeExtensions which define only
xwindlimit
/ywindlimit
now get correctscrrcol
/scrbrow
(previously would be off by 1). - Supervisor: Typing
Quit
(space before the command) at supervisor prompt will now exit (previously would do nothing).
0.20 (03 Feb 2021)
Changed
- Trace: Trace reports for
OS_WriteS
now include the string that would be written. - CLI: CLI now supports abbreviated commands.
Fixed
- Trace: Dumps of memory on heap errors no longer crash if the block has been unmapped.
- Interrupts: Ticker events which remove other ticker events no longer cause a crash.
- CLI: Invoking a command which is help-only no longer gives a python traceback.
- Graphics: Mode selectors now get the text height correct (previously would invert the sense of gap modes).
- MessageTrans:
MessageTrans_MakeMenus
no longer attaches the parent menu to every submenu.
0.19 (02 Jan 2021)
Added
- Memory:
OS_DynamicArea 5
(Free space) is now able to return configurable free space, or calculate it dynamically. - Memory:
OS_DynamicArea 6
(Change information) to read the dynamic area changes is now supported. - VDU: VDU and graphics system now supports 32K and 16M colour modes.
- Graphics:
OS_ScreenMode 4
,5
and6
which control 'Chocolate' settings are now implemented as stubs. - Graphics:
OS_ScreenMode 13
,14
,15
are now implemented, supporting mode strings encode, decode and mode selection. - Graphics:
OS_ScreenMode
and other SWIs now support mode selectors, and sprite mode words where appropriate. - Graphics: Mode selection with the grayscale flag set is now honoured.
- FS: Configuration for
OS_GBPB
enumeration allows control of the manner the final chunk is returned to match Classic. - ColourTrans: ColourTrans module has been created with a few SWIs in.
- ColourTrans:
ColourTrans_GCOLToColourNumber
(and the reverse) are now supported. - ColourTrans:
ColourTrans_SetOppTextColour
,ColourTrans_SetColour
,ColourTrans_ReturnOppGCOL
are now supported. - Sprites: Initial support for some
OS_SpriteOp
area and sprite management calls. - Sprites: System sprite area is now provided by the SpriteUtils module.
- MessageTrans:
MessageTrans_MakeMenus
is now supported. - Territory:
Territory_Collate
is now supported. - TaskManager:
*TaskManager_Acknowledgements
can display the acknowledgements info that would have been in the Desktop. - UI: WxWidgets applications have a 'Debug' menu that can toggle debug settings whilst running.
- UI: New VNC graphics implementation allows serving the graphics display over the network.
Changed
- Debug: Debug 'daheaperror' reports now include dumps of the surrounding memory when problems are reported.
- Debug: Debug 'daheaperror' tries to recognise allocations through the SharedCLibrary when reporting allocators.
- Trace: Aborts reported through trace now include the region of the fault address.
- Trace: Code tracing now includes the values of shift registers.
- Trace: The region name referenced by a register is now reported in the locations reported in traces.
- Trace: Region names in traces now recognise the private word pointer and module workspace (if it is in the RMA).
- Trace: SWI traps can now enable code tracing whilst they are being executed.
- Memory: System Dynamic Areas now have the 'not user draggable' flag set.
- Heap:
OS_Heap
allocations alignment is now configurable and defaults to 8 bytes now (previously aligned to 4 bytes). - VDU:
Service_ModeExtension
uses of 3.5-style blocks are now supported. - ColourTrans: ColourTrans SWIs which were present in the base system are now only present when internal modules load.
- Sprites: SpriteUtils now supports many of the system sprite area *Commands which were previously stubs.
Fixed
- Configuration: Configurations using the 'size' specifier now handle the '-1' cases like the 64bit version (previously only supported exact values).
- Trace: Trace points and watchpoints can now be empty lists (previously would fail to interpret the empty list).
- Trace: Disabling code tracing now disables the Unicorn hooks (previously would leave the hooks in place, but not report).
- Trace: Watchpoints which trigger on invalid memory no longer generate tracebacks.
- Trace: Frame pointer checks in the C backtrace reports should no longer cause a python backtrace.
- Trace: Debug 'traceswiargs' now reports
OS_DynamicArea 5
properly (previously would report the wrong return address). - Memory:
OS_AMBControl
resize and mapping calls now update the environment (previously would not change the environment when used directly). - Memory:
OS_AMBControl
now allows map in to application space by address (previously would fault mapping in at &8000). - Memory:
OS_DynamicArea 7
to enumerate areas is now sorted by name and excludes system DAs (previously would return all DAs in numeric order). - Memory: Dynamic area PreShrink handler now correctly rounds modified size (previously would round the change up).
- Heap:
OS_Heap
extend now copies the data correctly (previously would copy the data offset by a word). - ProgEnv:
OS_ChangeEnvironment
now preserves registers on return if they are ignored (previously would return 0 for those values). - Modules: Non-existant PyModules will now report errors better when loaded on the command line (previously would produce a traceback).
- Modules: Module SWIs with VS on return should generate errors properly (previously could traceback in some circumstances).
- Modules: Module entry will now ignore errors in copying the command parameters (previously could crash).
- VDU:
VDU 4
scroll background is now correct in 256 colour modes (previously would fail to apply the tint). - VDU:
VDU 4
scroll should now copy reliably with correct edges in Cairo implementation (previously could give repeating patterns or off-by-one on the edges). - VDU: Setting
VDU 4
window now bounds the cursor properly (previously would defer bounding to after first character printed). - VDU:
VDU 5
graphics window clipping now works (previously would not clip at the graphics window). - VDU:
VDU 5
movement at the edge of the graphics window is now implemented (previously wrapping at the edge of windows would not work as expected). - Input: Mouse event times are now reported using MonotonicTime values (previously would use unix epoch times).
- Graphics: Block copy/move should be more reliable in Cairo implementation (previously could give repeating patterns).
- Graphics: Rectangle fill is now inclusive of the top right row and column (previously would exclude them).
- Graphics: Circle outline is now an outline (previously would be rendered filled).
- Graphics: Cairo clipping should now be reliable when windows are changed (previously only the first window would be effective).
- FS:
OS_File
calls to read the catalogue info with type not reports missing files without error (previously might return errors). - FS:
OS_FSControl 18
(Convert filetype to string) accepts values outside the filetype range (previously would fault them, but is now configurable). - MessageTrans: MessageTrans lookups failing might generate tracebacks if full processing enabled.
- Hourglass: Hourglass colour selection should no longer race with the pointer changes (previously could give incorrect colours).
0.18 (03 Dec 2020)
Added
- Docs: API documentation is now built as part of the documentation.
Changed
- Trace: Reporting errors and warnings through trace can now include a Python backtrace.
- Trace: Error block misuse now reports registers better.
- Graphics: Selecting invalid screen banks now reports a misuse warning.
Fixed
- Docs: Documentation for configuration options now correctly includes the internal modules.
- Memory:
OS_SynchroniseCodeAreas
now only caches function names when tracepoints are in use (previously would slow things considerably). - UI: Copy Screenshot option in GTK and WxWidgets UI no longer gives a backtrace.
0.17 (01 Nov 2020)
Added
- System: We now have an IRQ stack, for timer routines to execute on.
- SWIs:
OS_ResyncTime
is now stubbed. - VDU:
OS_Word 11
is now able to read the palette. - VDU: Configuration for paging mode
shift
allows the shift key to trigger moving on to the next page when paged mode enabled. - Graphics: Screen banks are supported in the graphics system, and implemented in the Cairo implementation.
- UI: WxWidgets and GTK 'Edit' menu now offers option to copy the screenshot to the clipboard.
Changed
- Trace: Errors from the error system (like error pointer being 0) now report warnings to the trace system.
- System: When interrupts are disabled, we now trigger ticker events at switching points like SWI calls and exceptions (previously ticker events would only be triggered at key reads).
- VDU: VDU cursor state used by
VDU 23,0,10
andVDU 23,1
is now tracked.
Fixed
- Invocation: Errors setting configuration values should always report as ConfigurationErrors (previously might report python errors with traceback).
- Debug: Service debug now reports the service names as
<name not known>
when names are not known (previously would report asNone
) - System: Timer operations now ensure that the V flag is not set (previously could report errors accidentally).
- SWIs: Ensure that callbacks happen on python SWI calls which would return to user mode.
- VDU: Vertical character output was not writing the text properly (previously would write some text horizontally).
- Input:
KeyV
generation now works properly for cursor keys (previously would generate the wrong codes in*FX4,2
mode). - Graphics:
OS_ReadPoint
now reads the correct point (previously would read the pixel above that requested). - Hourglass: Hourglasses turned on and off rapidly no longer report exceptions.
- Hourglass:
Hourglass_Start 0
will now start immediately (previously would wait until a tick event was checked). - UI: WxWidgets will no longer generate errors if the About window is open on termination.
0.16 (03 Oct 2020)
Added
- Debug: Debug can now report when SynchroniseCodeAreas is performed.
- SWIs: SWI executions called from IRQ modes now report a warning through the trace system.
- Input: Keyboard disable, Caps Lock and the keyboard status byte are now supported within the key system.
- Graphics: New OSPointer module provides the
*Pointer
command and configures its shape and colours. - FS:
*NoURD
,*NoDir
and*NoLib
(and their correspondingOS_FSControl
s) are now implemented. - FS:
*Count
now supported, although without the confirmation option. - FS:
*Free
now supported, together with theOS_FSControl 49
andOS_FSControl 55
SWIs. - Sound: SoundDMA stub module allows configuration to happen, but does nothing.
- Hourglass: Hourglass
pointer
implementation now provides a standard RISC OS pointer in the graphics UI implementations. - Hourglass:
*HOn
/*HOff
are now provided by the Hourglass module.
Changed
- Graphics:
OS_Confirm
now programs the pointer shape and acts on mouse clicks. - Sound: SoundChannels now announces on initialise and finalise, and issues
Service_SoundControl
on sounds. - Sound: SoundChannels debug is now
soundchannels
(previously wassound
). - Sound:
SOUND
now honours the undocumentedOS_Byte 210
sound suppression flag.
Fixed
- Trace: Tracepoints no longer exception if no trace points have been identified.
- SWIs: SWI execution should now always happen in SVC mode (may previously have executed in caller's mode).
- FS: Running directories now correctly tries the
!Run
file (previously would try running%s.!Run
). - Hourglass: Hourglass
vdu
implementation now prints messages (previously would be identical to thenull
implementation). - Hourglass:
Hourglass_Colours
will now select the colours for the hourglass (previously would generate an exception). - Internet: Invalid network interface names now report an error (previously would report a traceback).
- UI: WxWidgets UI 'About' box now wraps license text (previously would result in a very wide window).
- UI: GTK window is now sized properly in OSX UIs (previously would leave an empty block at the bottom of the window).
- UI: Default screenshot save directory in WxWidgets UI is now the current working directory (previously would be the last directory used).
0.15 (30 Aug 2020)
Added
- System: Introduce API warnings for
OS_IntOn
/OS_IntOff
,OS_EnterOS
/OS_LeaveOS
andOS_SynchroniseCodeAreas
. - Interrupts:
TickerV
is now supported. - SWIs:
OS_SpriteOp
stub implementation is now provided for some operations. - VDU: ANSIText
VDU
implementation can now be configured to change terminal size. - Graphics: Dotted line patterns are now supported in cairo graphics implementation (continuations and end point elision are not supported yet).
- Graphics:
OS_SetECFOrigin
is now supported, although it is not acted upon. - Graphics:
OS_Byte 106
andOS_Word 21
to control the pointer shape and parameters are now supported. - Graphics: Pointer shapes are now handled internally, and passed to the GTK and WxWidgets UI to be used as cursor shapes (configurable).
- FS: Filesystem can be configured to always return the same timestamp on files.
- FS:
OS_FSControl 21
to read internal handles is now supported. - FS:
*EnumDir
is now supported. - Territory:
Territory_WriteDirection
now implemented and can be configured to return different flags. - Internet: Windows network interfaces are now enumerated with approximate flags.
- UI: GTK and WxWidgets menus can now reboot the machine and save screenshots.
- UI: WxWidgets button click events are now similar to those that are generated by GTK.
Changed
- Platforms: Windows console input now supports cursor and function keys, as a configurable option.
- Platforms: Windows console input no longer blocks (timers are triggered whilst waiting for keys).
- Platforms: Windows and Linux WxWidgets have a corrected key map, so should be able to handle key presses on the graphics window.
- Invocation: The
--set-variable
configuration is now applied before ROM modules are loaded (previously would be assigned after the ROM modules). - Trace: Trace reports now include interesting pointers in the 'Locations' section.
- Trace: Tracing SWIs now ignores SWI reports for
OS_Write*
/OS_NewLine
SWIs (configurable). - System:
UserV
now reports through VDU, and is configurable. - Graphics: Graphics windows is now honoured in the cairo graphics implementation.
- FS:
OS_BGet
now reports EOF, and then an error on the second call at end of file (previously would repeatedly return EOF). - MessageTrans: MessageTrans is now a module in its own right, and can read Messages files (configurable).
- Internet: Network interface handling has been reworked to be more flexible when used on Windows, Linux and macOS.
- PyromaniacModule:
*PyromaniacConfig
can now be given a-help
switch to get more information about the configuration options. - UI: WxWidgets now has a redraw rate control in the same style as the GTK graphics implementation.
- UI: WxWidgets About dialogue boxes are now more standardised and include centrally sourced information.
- UI: Mouse positions is now updated in both GTK and WxWidgets.
- UI: GTK and WxWidgets menu implementations have been made more consistent.
Fixed
- Docs: Documentation link no longer gives exceptions if it is clicked.
- Platforms: Can now start on Windows (previously would fail initialising trace due to unnecessary use of
/dev/null
). - Platforms: Windows WxWidgets should not generate exceptions (previously had some typing problems).
- Platforms: Windows WxWidgets 'Exit' option now appears on the menu (previously there had been no File menu).
- Platforms: Windows WxWidgets should now open in the centre of the screen only on the initial open.
- Debug: Backtraces from Python will now appear properly formatted in ANSIText mode (previously would appear staggered due to the raw newline output).
- System: Rebooting the system no longer disables key input from the UIs.
- System: Rare exceptions due to negative timeouts in the sound system no longer cause exceptions.
- System: Rare exceptions due to negative timeouts in the WxWidgets system no longer cause exceptions.
- System: Temporary stop (TSTP; ctrl-z) on a console will no longer give an EINTR backtrace.
- SWIs:
OS_GSTrans
now propagates the terminator from the input string to the output string (previously would not terminate the string at all). - SWIs:
OS_ReadArgs
will now process/E
and/G
through EvaluateExpression and GSTrans respectively (previously would just pass through) - Modules: Modules being replaced now uncache their data (previously would still remember the SWI base for dispatches).
- FS: Filesystem interfaces correctly skip leading spaces (previously would be truncated at space in most APIs)
- FS: The native filesystem directory is checked for existance on configuration (previously would traceback on first use if the directory was invalid).
- ColourTrans:
ColourTrans_SetGCOL
should now report thelog2bpp
in R2 (previously would be corrupted). - Draw: Draw strokes are now rendered correctly when a transform is in use (previously would be transformed incorrectly by the offsets).
- Draw: Draw transform offsets are now applied correctly (previously would not be scaled correctly).
- Debugger:
*Vector
no longer reports a backtrace if you give an invalid name. - UI: Graphics character rendering in Cairo now positions characters properly when not-1:1 scaling (previously they would appear offset).
- UI: Mouse buttons are now reporting correctly from both GTK and WxWidgets.
0.14 (02 Aug 2020)
Added
- Invocation: Configurable run time limit to stop execution after a limited period.
- Trace: Execution trace points can be registered, allowing reports of the system state when the registered code is executed.
- Trace: SWI traps can be registered, allowing reports of specific SWI calls, rather than reporting all SWIs.
- Trace reports now include a C backtrace after the register locations.
- System: New configuration options to set limits on the depth of SWI recursion, and change the internal Python recursion limit.
- Heap:
OS_Heap
claim and free can now clear their memory (configurable). - ProgEnv:
OS_ChangeEnvironment 33
now returns the command line buffer address and its maximum size. - Input: Key repeat delay and rate are now implemented in the key input.
- Input: Key handling can now be configured to be forcibly enabled when outside the UI system, allowing KeyV to function without a UI (previously the key handling would only ever take effect if a UI was used).
- Input: Tab character redefinition with
OS_Byte 219
is now honoured. - Input: Escape key effects changes with
OS_Byte 200
is now honoured. - Input: New configuration action to input text into the keyboard buffer.
- Sound:
*Sound
is now supported by the SoundChannels module. - Debugger:
*Vector
is now provided by the Debugger module to list the currently claimed vectors. - Territory:
Territory_ReadCurrentTimeZone
,Territory_ReadTimeZones
,Territory_ConvertTimeToUTCOrdinals
,Territory_ConvertTimeToOrdinals
andTerritory_ConvertOrdinalsToTime
are now supported. - LegacyBBC: LegacyBBC now provides a
OS_Word 7
(SOUND) andOS_Word 8
(ENVELOPE) implementation, although the latter is just a stub. - SysLog: SysLog module has been created, for local logging.
- UI: Minimum widths can now be set on the graphics UI to scale up low resolution modes.
- UI: Graphics UI now has configurable border size and colour.
Changed
- ProgEnv: Command line buffer length is now 1024 byte, and is now configurable.
- Modules: Help text for UtilityModule is now
MOS Utilities
to match RISC OS Classic. - Modules: Help text for Podule is now
Podule Manager
to match RISC OS Classic. - VDU: ANSIText VDU implementation no longer honours the newline output format (it could produce inconsistent results).
- Graphics: Gap modes (and BBC gap modes) now have the correct character spacing, and clear the screen as expected (previously would not apply any spacing changes).
- FS:
*Copy
now supports the restamp and disabled attributes flags. - UI: GTK windows will now open at the front of the stack (configurable).
- UI: GTK and WxWidgets start with a cog icon in the dock on macOS (previously would use the Python launcher icon)
- UI: GTK and WxWidgets UIs now close RISC OS when the UI window is closed (previously would leave RISC OS running).
- UI: WxWidgets UI now passes key presses to RISC OS.
Fixed
- Trace: Trace stack depth now indicates IRQ mode with an
I
(previously would be unrecognised and would appear as anx
). - Memory: Resizing application space to 0 is now effective (previously it would leave the memory mapped in).
- Heap:
OS_Heap
describe operations no longer abort with a backtrace. - ProgEnv: Error handler
pc
value is now populated in the same way as RISC OS Classic, from the top of the SVC stack, which is now populated by the abort handlers (previously would report the pc as the pycall address for the default error handler). - SWIs:
OS_EvaluateExpression
now understands that variable names can be given in the expression (previously variable names could not be parsed). - SWIs:
OS_SubstituteArgs
will now preserve quotes around arguments (previously they would have been stripped). - SWIs:
OS_ReadUnsigned
now skips leading spaces (previously would report an invalid string). - VDU: Linefeed in ANSIText should now move to the next line (previously it would function as a CR/LF sequence due to the terminal post processing).
- VDU: Fix for hang in VDU system when characters output at the right edge of a window.
- Input: When stdin has been redirected from
/dev/null
we no longer busy wait (previously would run continually due to an EOF condition). - FS:
OS_Args 0,0
now returns temporary filesystem 0 ('None'). - FS:
*Ex
no longer gives backtrace when listing an empty directory. - FS:
*Exec
no longer fails when used a second time (would give a backtrace due to invalid use of NoneType). - Sound:
*ChannelVoice
now reports voice numbers invalid in more helpful ways (previously would fail with a traceback). - DDEUtils:
DDEUtils_ThrowbackSend
no longer gives backtrace when bad pointer given, or invalid filenames used. - UI: WxWidgets UI now resizes properly when a lower resolution mode is selected (previously would assert and the window would be left misplaced).
- UI: Ctrl-C when the WxWidgets UI is in use will now generate escapes (previously would terminate the system).
- UI: GTK UI distinguishes the left and right Alt keys (previously would report only the left key as the right key).
- UI: Cairo output in GTK and WxWidgets UIs should now be crisper (previously would smooth when upscaling).
0.13 (30 Jun 2020)
Added
- FS:
*Help OpenFiles
now lists the file system streams that are open. - FS:
*Build
and*Append
are now supported. - Internet:
Socket_Recv
is now supported.
Changed
- Graphics: SVG output from Cairo will now be filtered to output 'image-rendering: crisp-edges' to improve rendering in Firefox (ineffective in Safari and Chrome).
- FS:
OS_Find
can now open directories and returns a useless handle for those cases; honours the bit to disable opening directories. - FS:
OS_Find
'must open' flag is now supported, returning errors when the file doesn't exist. - FS:
OS_Find
stream information flags are now supported (for Read, Write, Directory, Modified) - FS:
*Copy
honoursCopy$Options
as the default options to use. - FS:
*Copy
supports the recurse ('R
') and force ('F
') options. - Wimp: Wimp_ReportError now issues Service_WimpReportError when invoked (previously, it didn't).
- UI: UI input using ctrl-alpha now generates a control key code.
- UI: GTK key mapping now works for
[
,]
,{
,}
,-
,+
and a bunch of other related keys.
Fixed
- SWIs:
OS_SubstituteArgs
/OS_SubstituteArgs32
now correctly processes%
characters not followed by an argument number. - Graphics: Off by one errors in rendering lines in graphics modes fixed (previously would omit the last pixel of some lines).
- Graphics:
VDU 127
now correctly erases characters in graphics modes (previously just moved back a character). - FS:
OS_Find
now locates files referenced by path variables properly (previously would report anything on a multi-element path as not existing) - FS:
*Copy
correctly parses arguments and handles variable expansion (previously multiple spaces would confuse it and system variables were never expanded). - FS:
*SetType
no longer processes only the first characters of the type as hex numbers (previously would set type to &A when the stringAMU
was given). - Resolver: RMA corruption caused by the
Resolver_GetHostByName
allocations has now been fixed (previously would write a 0 over a heap length word)
0.12 (04 Jun 2020)
Added
- Invocation: All implementations (or invididual systems) can be listed with
--list-implementations
or--list-implementations <system>
. - Memory:
OS_AMBControl
is now implemented, and functions similar to (but not identical to) RISC OS Classic. - Memory: Dynamic Area clamps are now supported.
- SWIs:
OS_Byte
now outputs debug on theosbyte
setting. - Input: Input now processes ANSI escape characters for function keys and cursor keys.
- Input: Input now decodes UTF-8 input into the alphabet and inserted into the buffer.
- Input:
OS_Byte 4
is now implemented, and can switch between cursors generating codes and function keys. - Graphics: Graphics system now supports the
HLineAddr
entrypoint. - Graphics:
OS_RemoveCursors
/OS_RestoreCursors
are now defined (but do nothing; we still don't have a flashing cursor). - Graphics:
Service_ModeExtension
,Service_ModeChanging
, andService_ModeChanged
are now issued, and extension modes are selectable. - Graphics: Rendering in DoubleHeight text modes should now work (just mode 23).
- FS:
OS_FSControl 26
(Copy) and *Copy implemented for limited sets of options. - FS:
*FileInfo
is now implemented. - BootCommands:
*X
,*AppSize
,*FreePool
and*IfThere
are now implemented in BootCommands.
Changed
- Invocation: Released 'pyro' tool now defaults to using the user's current environment (previously would isolate itself in a virtualenv).
- Trace: Internal emulation SWI calls are now hidden from trace.
- Trace: Shifts on arithmetic and memory operations are now capitalised in disassembly.
- ProgEnv: Environment handlers can now be used when read with
OS_ReadDefaultHandler
. - ProgEnv: Exception messages (Data abort, prefetch abort) now include the region name by default.
- Graphics: Mode configuration may use a fallback if the mode is not valid on startup.
- Graphics: Cairo no longer defaults to saving images on exit.
- Graphics: Cairo can now save images in PBM format.
- FS:
*Info
is now configurable whether it usesSys$DateFormat
or not. - FS:
*Info
output alignment is slightly different to match up with*FileInfo
. - Debugger:
*ShowRegs
includes information about the code near the PC, and includes the IFSR and DFSR information in the output. - Hourglass: Hourglass implementation Console now writes to stdout, and new implementation VDU writes to VDU stream as console used to.
- UI: Enabled key input from the UI systems.
Fixed
- Platforms: Basic Pyromaniac functionality now runs on Windows (previously differences between it and POSIX would cause it to fail to initialise).
- Configuration: Invalid size and hex configuration now report a configuration error (previously gave Python errors).
- System: SPSR is now set correctly on entry to SWI calls (previously would not be updated).
- System: Vector calls should now correctly return the flags (previously most cases would preserve flags from the caller).
- SWIs: Unknown SWIs now report the correct error number (&1E6).
- Modules: ROM module enumeration now starts properly (previously starting enumeration would immediately return 'No more modules').
- VDU:
*Echo
no longer terminates in a 0 byte (previously*Echo <22><0>
would fail to select mode 0). - VDU:
VDU 127
now deletes characters (previously would be ignored). - VDU: Terminal cursor shape is now reset in ANSIText mode if it had been changed (previously would be left in changed state)
- VDU:
OS_ReadVduVariables
returns correct values for 0s (previously was returning -1). - VDU: Fix for
OS_ReadVduVariables
WindowWidth
andWindowHeight
off by one (previously would return the number of characters, not maximum offset). - VDU: Fix for VDU colour invert and tint colour changes not affecting ANSIText output.
- Graphics:
OS_Byte 135
no longer crashes when used with the Cairo SVG image format. - Graphics: Video directory is only created when enabled.
- Graphics:
OS_Plot
operations should be more accurate (previously there were a number of off-by-one errors in positioning of graphics operations). - Graphics:
VDU 4
character plotting of backgrounds off-by-one fixed (previously left a line unfilled behind characters). - Graphics:
VDU 12
(CLS) will now clear to the edge of the screen (previously left a line unfilled on the right of the window). - Graphics: Read text character at cursor can now read characters in 256 colour modes.
- Supervisor:
*GOS
no longer allows parameters to be passed to it (which would be ignored). - FS:
OS_File 5
and friends no longer report an error for files in an unknown directory.
0.11 (03 May 2020)
Added
- Docs: TRACE.md document created to describe the trace output from the system.
- Invocation: Added help text reporting for configuration groups and options.
- Trace: Warnings can now be generated for SWIs which generate errors from SVC mode, or which could generate errors (non-X SWIs called from SVC mode) in the trace output.
- System: Transient callbacks and timer events are now recorded into traces when they're active.
- Heap: Dynamic Area Heap (including RMA) corruption or misuse now reports trace output, describing how the location was reached and the state of the heap blocks.
- ProgEnv: Environment change debugging is now available under
envchange
. - Modules: Warnings are now generated when module syntax messages do not start with
Syntax:
. - Modules: When entering modules, they are now marked as preferred.
- Modules: Podule manager added, which can build a chunk directory for RISC OS Select 32bit ROMs, and has rudimentary support for the RISC OS 5 ROM format.
- Modules: Module initialisation now tries to load modules from Podule Manager.
- Modules: Added support for unplugging modules in the configuration.
- VDU:
*Spool
/*SpoolOn
are now implemented. - International: International module provides BBC font definitions and alphabet definitions;
*Alphabet
is now implemented. - BootCommands:
*Do
is now implemented. - DDEUtils: DDEUtils provides the Throwback SWIs, with implementations for console output, null and posturl.
- Wimp:
Wimp_ReportError
is now provided by implementations and provides a UI variant using EasyGUI. - Clipboard: ClipboardHolder provides multiple implementations (null, static, pyperclip, posturl).
- PyromaniacModule:
*PyromaniacHostCommand
allows running of commands in the host system, with output configurably converted from ANSI colouring to RISC OS colouring. - PyromaniacModule:
*PyromaniacFeatures
is now a command, not just a*Help
command, which shows the system features.
Changed
- Docs: Diagrams now use fallback fonts which look similar to Optima.
- Invocation: Command line option
--register-internal-modules
changed to--load-internal-modules
to be more consistent. - Trace: Locations described within the trace output may now include more checks for function signatures and give offsets from a nearby signature.
- Trace: Exceptions, errors and warnings reported in the trace output now include the location of the pc and link register, if they are aligned within existig address space.
- Trace: Tracing of LDRB is able to report strings referenced by the source register, configurably.
- System: Interrupts from timers are now disabled by default, as these are buggy.
- System:
OS_ReadSysInfo
platform class flags are now configurable, rather than being static. - Memory:
OS_Memory 8
(read amounts) is now configurable, rather than reporting static values, and can dynamically calculate the memory that has been used from the system configuration. - Heap: Dynamic Areas Heaps (including RMA) now resize when they become full.
- Modules:
*ROMModules
outputs a slightly different string due to the more consistent naming for ROM sections. - Clipboard: ClipboardHolder preserves the filetype in the
*ClipboardHolder_ToFile
command.
Fixed
- Configuration: Numeric configuration in the configuration files is now parsed correctly (previously hex values would be reinterpreted from their decimal representation).
- Trace: Trace addresses now appear correctly when they take up 8 characters (previously would expand to 9 characters).
- System: Internal aborts caused by memory writes now correctly report as writes (previously reporting as reads)
- System: Internal aborts caused by memory reads should now report as aborts (previously they might still give a python traceback)
- System: 'Safe' strings reported in error messages and trace output are now 256 bytes long (previously were 128 bytes).
- System:
OS_CallAVector
now returns flags properly, which was causing ReadLine module to always report Escape. - System: Registered allocations are now in use for the
OS_Byte 129
and platform class. - System: Pyromaniac hardware error numbers are now registered, and so have moved.
- Memory: Doubly mapped dynamic areas are now disallowed (previously they were allowed but would only be singly mapped).
- Memory: Address space allocation messages are now more specific that it is address space which was unavilable (rather than a lack of heap space, for example).
- Memory: DynamicArea operations should now report the correct error numbers.
- Heap: RMA allocation, free and extend have now been tested and numerous corner case and negative conditions are now reported better.
- Heap: RMA operations should now report the correct error numbers.
- ProgEnv: Callback handler is now correctly called (previously, would not be called)
- SWIs: Parsing in GSTrans fixed to handle space termination properly within variables, and to correctly pass through
<>
. - SWIs: EvaluateExpression handles binary operations on different types (number and string, and vice-versa) more consistently with RISC OS Classic.
- SysVars:
*Unset
no longer reports errors when the variable isn't found. - Modules: ROM modules are now correctly preceded by their length.
- CLI: Module prefix checks on CLI, like
Run:cc
, no longer cause a failure to match the command line because there isn't a matching module (egRun
isn't a module name). - Input: Configuring EOF as
exit
now correctly exits supervisor (previously would have looped forever). - Input: Character reading no longer fails when the stdin is a pipe.
- Input: Console input is no longer flushed when using the native readline (previously prevented pasting of multi-line text).