- 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.48 (02 Jun 2023)
Added
- Invocation: New 'pyro' tool switch
--load-internal-group
to select groups of modules. - Input: Shift-function keys at console are now recognised.
- 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. - 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. - UI: Scroll wheel is now supported in WxWidgets.
- 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.
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
- Debug: The debug for SynchroniseCodeAreas had been typo'd as
synchronisecodeares
. - 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).
- Configuration: Configuration actions which are not known now report a configuration error (previously they would generate a traceback).
- Trace: Fix for cached module identification not being reset when modules are killed (might report traced regions wrongly).
- Territory: Fix for Territory module overrunning its allocated space for property tables and corrupting RMA.
- 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).
- 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
- Trace: Tracing SWI registers and SWI arguments now reports the correct address (previously reported the next address).
- CommandServer: Client now handles input redirection better (previously would generate IOErrors).
- Heap:
OS_Heap
extend block operations (andOS_DynamicArea
/OS_Module
) with no change no longer return invalid block address. - VDU: ANSIText text colour selection no longer generates a Python traceback with out of range colours.
- 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). - 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). - FS: Filesystem statistics now records inability to open files (previously would ignore files that did not open).
- Supervisor:
*GOS
command now callsOS_ReadLine
with a valid line length (previously called with 0).
0.45 (02 Mar 2023)
Added
- Debug: New debug option for UpCalls.
- Internet:
Socket_Recvmsg
andSocket_Recvmsg_1
are now partially implemented. - PyromaniacModule: Host command input is now supported, together with function keys/cursors.
- Resolver: The default
Inet$Hostname
value can now be set explicitly or randomised.
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).
- PyromaniacModule: ANSI output parsing now understands
LNM
mode and theNEL
sequence. - InetServices: InetServices now issues the correct services on startup and shutdown.
- Resolver: Resolver now issues the correct services when
Inet*
variables change.
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).
- NVRAM: Configuration help messages fixed (had typos in).
- Input: Fix for
*FX4,2
not generating 0-prefixed codes when infx225, 2
configuration (would omit 0-prefix). - SysVars:
OS_SetVarVal
now correctly replaces surrounding quotes in string values that are set (previously would preserve quoted strings). - 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
. - UI: WxWxidgets keyboard lights now gives the names of the lights.
- Speech: New Speech! module, using the existing Speak implementations.
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
- 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.
- PyromaniacModule:
*PyromaniacHostCommand
can now execute with a configurable TERM, and will have LINES and COLUMNS set to the RISC OS window size. - Resolver:
*ResolverConfig
is now implemented in the Resolver module. - Resolver: SWI
Resolver_CacheControl
has a rudimentary stub implementation. - 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.
- OwnerBanner: New OwnerBanner module to give the initial system information on reset.
Changed
- FS:
OS_GBPB 9-12
(enumerate directory) can now be configured with different context orders, which are not monotonically incrementing. - Startup: OSInitBanner service can now be issued with a processor name supplied (
kernel.reset_banner_processor
). - 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. - PyromaniacModule: Host command ANSI parser now understands more output from VT52 and VT100.
- Twin: TextEditor implementation now defaults to command invocation in safe mode.
Fixed
- 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.
- PyromaniacModule: Host commands that give errors on starting now report better errors (previously would report a traceback).
- Resolver: Fixed the Resolver module not being case sensitive in its lookups of the Hosts file.
- 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).
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. - 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').
- PyromaniacGit: PyromaniacGit module allows interactions with the host git tool.
- TimerManager: New
TimerManager
module allows arbitrary numbers of timers to be registered.
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).
- Network: 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
. - 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.
- GPIO: GPIO implementation for WxWidgets.
- PyromaniacWimpDebug: New experimental
PyromaniacWimpDebug
module to report on tasks and Wimp messages.
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. - Network:
*InetStat
command to list open sockets. - GPIO:
ch341
GPIO implementation. - UI: WxWidgets UI now has a 'Show console' menu option to capture our console output.
Changed
- Supervisor: UtilityModule now has configuration for whether it is allowed to be killed.
- Graphics: Cairo image saving now supports PDF files.
- 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. - 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. - 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.
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).
- UI: WxWidgets on OSX no longer includes an implicit 'Show tab bar' menu item.
- GPIO: GPIO
pcf8574
implementation no longer crashes when reading pin state.
0.37 (06 Jul 2022)
Added
- Graphics: SSD1306 frame device now supports inverting the display, rotation and flipping.
- 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. - 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.
- GPIO: GPIO module can provide access to implementations of GPIO pins.
- Serial:
OS_SerialOp
is now supported, withnull
andfile
implementations, - Territory:
Territory_Number
/Territory_NumberToName
/Territory_NameToNumber
now supported.
Fixed
- IIC: MCP2221 IIC reading now works (previously would report a fixed string 'None' for every read).
- Graphics:
OS_Plot
Block copy/move now works properly (previously might invert the exposed region).
0.35 (06 May 2022)
Added
- SysRqs:
fs-statistics
is now provided. - 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.
- System:
OS_ReadSysInfo 6, 25
(IRQStack) is now implemented. - System: KernelDebug supports a
socket
implementation to talk to a TCP server. - 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
. - UI: WxWidgets TextEditor now displays in a monospace font.
- IIC: IIC is now provided as an implementation to allow it to be extended.
- Parallel: ParallelDeviceDriver
file
implementation now has its own configuration asParallelFile
. - SystemBell: SystemBell now uses
systembell.implementation
for configuration andwxwidgets
now provides an implementation.
Fixed
- Trace: SWI trap configuration (
trace.switraps
) will now display the SWIs that were trapped (previously always showed an empty string). - 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). - ProgEnv: Bad environment handler numbers now return correct error number.
- CLI: Long CLI commands now report the correct error.
- FS: Failing rename due to existing file now reports the correct error number.
- 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).
- LegacyBBC: Invalid
*Key
invocation now reports the correct error.
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. - ResourceFS:
*ResourceFS_Save
command now exists to save out the contents of ResourceFS. - Twin: New
*Edit
command allows files within RISC OS to be edited in a native editor at command line or in WxWidgets. - Debugger:
*Tickers
command to list ticker handlers at a given time. - Debugger:
*TickerStats
and configuration to report on ticker events. - Wimp: WimpReportErrorBox implementation is now available for WxWidgets native dialogues.
- Wimp:
Service_ErrorStarting
/Ending
,Service_ErrorButtonPressed
are now issued byWimp_ReportError
.
Changed
- FS: Opening files now disallows writing to the same file twice, or reading a writing file (configurable).
- Graphics:
OS_Confirm
has multiple implementations, including WxWidgets. - Time: The system clock can now be forced to a given time at boot (
time.force_boot_time
). - 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).
- FS: No longer crashes when running a file with a load/exec address.
- 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). - Printer:
*FX 5
/*FX 6
now changes the printer type/ignore character correctly (previously would produce a python backtrace). - MessageTrans: MessageTrans reports errors in full mode when the file does not exist (previously would allocate large memory blocks).
- 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.
- Sprites:
OS_SpriteOp 14/16
(GetSprite/GetSpriteUserCoords) now grabs a sprite from the screen. - FS: Filesystem native directories can now be mapped from any path.
- 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.
- PyromaniacModule:
*URLCopy
can now be used to download files from URLs. - Portable:
Portable_ReadSensor
is implemented and can be configured. - WebColours: New WebColours module for converting colours to different forms.
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.
- Sprites:
*SGet
is now implemented. - FS:
OS_File
operations now issue UpCalls.
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).
- Fonts: Graphics origin is now applied to the font plot position (previously would use coordinates without origin).
- Draw: Draw operations with round on only one end of the path now work (previously applied to only one end).
- 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). - 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.
- ResourceFS: New ResourceFS module tracks state of file registrations.
- Freeway: Freeway module now tracks state of registrations.
- InetServices: New InetServices module created.
- Speak: New Speak module created with null, console and OSX implementations.
- Heap: DAHeap tracking can now perform checks for corruption on every operation.
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). - Network: 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).
- Network: Invalid
Socket_Creat
parameters should now report useful errors (previously would generate 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).
0.29 (02 Nov 2021)
Added
- 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.
- Input: Stub
OS_Pointer
allows pointer type to be read. - VDU: VDU variable &C1 (PolyHLine) is now supported by the graphics system.
- ColourTrans:
ColourTrans_ReadPalette
is now supported. - ColourTrans:
ColourTrans_ConvertHSVToRGB
andColourTrans_ConvertRGBToHSV
are now supported. - 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. - Sprites:
OS_SpriteOp 15
(Create Sprite) is now supported. - Debugger: Disassembly in trace and Debugger now understands FPA instructions.
- Debugger:
*MemoryA
is now supported. - CryptRandom: CryptRandom module stub added.
- CDFSSoftPyromaniac: CDFSSoftPyromaniac module added to allow mounting of native data files.
- 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).
- ColourTrans: ColourTrans version upped to 0.52 to match common application requirements.
- 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.
- 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).
- UI: WxWidgets UI can now re-centre the window on its current position on mode change.
- LegacyBBC: LegacyBBC can now be configurably disabled, or have warnings for the calls it services.
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).
- 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). - Podule: Podule dynamic area can no longer be resized (previously would allow resizing and crash badly).
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. - Fonts:
Font_CharBBox
is now implemented. - Fonts:
Font_ListFonts
now supports menu generation. - Fonts:
Font_DecodeMenu
is now implemented. - Sprites:
OS_SpriteOp 37
(create/remove palette) now supports reading the palette size. - Wimp:
Wimp_ReadSysInfo
is now stubbed for a few reasons. - Territory:
Territory_ConvertStandardDateAndTime
(and friends) are now supported.
Changed
- Trace: Reports with PC around address 0 are improved.
- 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. - 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).
- 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). - Network: 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'). - 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).
- 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). - 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. - Network: 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.
- Squash: New Squash module provides decompression functions.
- Territory:
OS_Byte &46
(Change country) is now stubbed.
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). - FS:
OS_File
load will now report an error if the memory being loaded into does not exist. - 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). - 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
- DDEUtils: DDEUtils throwback now more reliable with PostURL (previously could crash on many operations).
- 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).
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. - ColourTrans:
ColourTrans_GenerateTable
now creates pixel translation tables. - 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.
- 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. - Draw: Draw operations are now rejected in non-graphics modes.
- ColourTrans: ColourTrans colour selection now uses more accurate colour matching for paletted 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).
- Fonts:
Font_Paint
now renders correctly when lengths are specified (previously would be off by one, and render an extra character). - Sprites:
*SList
now lists the bit depth correctly (previously would report the BPP as the mask existance).
0.23 (04 May 2021)
Added
- 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. - 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.
Changed
- Draw: Draw SWI calls are now dispatched through
DrawV
. - Portable: Portable module now has multiple implementations, including an OSX implementation for most variables.
- OSCommands:
*GO
now usesOS_FSControl 2
to start as an application.
Fixed
- 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).
- Trace: SWI traps configured with a number which isn't known on start no longer generate a backtrace.
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. - FS:
OS_GBPB
enumeration now supports wildcards. - 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).
- Sound: SoundChannels now reports warnings from Sound_Control only when enabled by
sound.enable_warnings
. - 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). - Network: 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
. - FS:
*Info
now lists all wildcarded filenames (previously would only list a single file). - 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).
- SWIs: Fix for GSTrans unterminated variable expansions reporting errors.
- 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).
- CLI: Module commands issued with multiple spaces are no longer counted as excess arguments (previously would report syntax errors and incorrect parameter counts).
- Network: Fixed bad interface names generating python backtraces.
- 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).
- 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.
- Graphics: Mode selectors now get the text height correct (previously would invert the sense of gap modes).
- CLI: Invoking a command which is help-only no longer gives a python traceback.
- 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. - 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. - 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.
- Sprites: Initial support for some
OS_SpriteOp
area and sprite management calls. - Sprites: System sprite area is now provided by the SpriteUtils module.
- 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.
- 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.
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). - ColourTrans: ColourTrans SWIs which were present in the base system are now only present when internal modules load.
- VDU:
Service_ModeExtension
uses of 3.5-style blocks are now supported. - 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).
- Modules: Non-existant PyModules will now report errors better when loaded on the command line (previously would produce a traceback).
- 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).
- ProgEnv:
OS_ChangeEnvironment
now preserves registers on return if they are ignored (previously would return 0 for those values). - Heap:
OS_Heap
extend now copies the data correctly (previously would copy the data offset by a word). - 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). - 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). - 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).
- Input: Mouse event times are now reported using MonotonicTime values (previously would use unix epoch times).
- 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
- Graphics: Selecting invalid screen banks now reports a misuse warning.
- Trace: Reporting errors and warnings through trace can now include a Python backtrace.
- Trace: Error block misuse now reports registers better.
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).
- SWIs: Ensure that callbacks happen on python SWI calls which would return to user mode.
- 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).
- Input:
KeyV
generation now works properly for cursor keys (previously would generate the wrong codes in*FX4,2
mode). - VDU: Vertical character output was not writing the text properly (previously would write some text horizontally).
- UI: WxWidgets will no longer generate errors if the About window is open on termination.
- 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).
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.
- 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. - Graphics: New OSPointer module provides the
*Pointer
command and configures its shape and colours. - 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. - Sound: SoundDMA stub module allows configuration to happen, but does nothing.
Changed
- 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. - Graphics:
OS_Confirm
now programs the pointer shape and acts on mouse clicks.
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).
- Network: Invalid network interface names now report an error (previously would report a traceback).
- FS: Running directories now correctly tries the
!Run
file (previously would try running%s.!Run
). - 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).
- 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).
0.15 (30 Aug 2020)
Added
- VDU: ANSIText
VDU
implementation can now be configured to change terminal size. - FS: Filesystem can be configured to always return the same timestamp on files.
- Network: Windows network interfaces are now enumerated with approximate flags.
- System: Introduce API warnings for
OS_IntOn
/OS_IntOff
,OS_EnterOS
/OS_LeaveOS
andOS_SynchroniseCodeAreas
. - Interrupts:
TickerV
is now supported. - 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. - SWIs:
OS_SpriteOp
stub implementation is now provided for some operations. - 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.
- 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:
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.
Changed
- System:
UserV
now reports through VDU, and is configurable. - FS:
OS_BGet
now reports EOF, and then an error on the second call at end of file (previously would repeatedly return EOF). - Graphics: Graphics windows is now honoured in the cairo graphics implementation.
- 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.
- 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.
- Network: 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. - MessageTrans: MessageTrans is now a module in its own right, and can read Messages files (configurable).
- 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). - Invocation: The
--set-variable
configuration is now applied before ROM modules are loaded (previously would be assigned after the ROM modules).
Fixed
- 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.
- Debug: Backtraces from Python will now appear properly formatted in ANSIText mode (previously would appear staggered due to the raw newline output).
- 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).
- Modules: Modules being replaced now uncache their data (previously would still remember the SWI base for dispatches).
- 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) - 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).
- 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.
- 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.
- Docs: Documentation link no longer gives exceptions if it is clicked.
- Debugger:
*Vector
no longer reports a backtrace if you give an invalid name.
0.14 (02 Aug 2020)
Added
- Invocation: Configurable run time limit to stop execution after a limited period.
- System: New configuration options to set limits on the depth of SWI recursion, and change the internal Python recursion limit.
- 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.
- Debugger:
*Vector
is now provided by the Debugger module to list the currently claimed vectors. - 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.
- 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.
- 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.
- Sound:
*Sound
is now supported by the SoundChannels module. - Territory:
Territory_ReadCurrentTimeZone
,Territory_ReadTimeZones
,Territory_ConvertTimeToUTCOrdinals
,Territory_ConvertTimeToOrdinals
andTerritory_ConvertOrdinalsToTime
are now supported.
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. - 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.
- 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).
- VDU: ANSIText VDU implementation no longer honours the newline output format (it could produce inconsistent results).
- FS:
*Copy
now supports the restamp and disabled attributes flags.
Fixed
- Trace: Trace stack depth now indicates IRQ mode with an
I
(previously would be unrecognised and would appear as anx
). - 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). - 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). - 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). - Input: When stdin has been redirected from
/dev/null
we no longer busy wait (previously would run continually due to an EOF condition). - 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.
- Sound:
*ChannelVoice
now reports voice numbers invalid in more helpful ways (previously would fail with a traceback). - 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).
- DDEUtils:
DDEUtils_ThrowbackSend
no longer gives backtrace when bad pointer given, or invalid filenames used.
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. - Network:
Socket_Recv
is now supported.
Changed
- Wimp: Wimp_ReportError now issues Service_WimpReportError when invoked (previously, it didn't).
- 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. - 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).
- 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
- 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). - 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). - Resolver: RMA corruption caused by the
Resolver_GetHostByName
allocations has now been fixed (previously would write a 0 over a heap length word) - 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).
0.12 (04 Jun 2020)
Added
- 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. - FS:
OS_FSControl 26
(Copy) and *Copy implemented for limited sets of options. - Memory:
OS_AMBControl
is now implemented, and functions similar to (but not identical to) RISC OS Classic. - FS:
*FileInfo
is now implemented. - BootCommands:
*X
,*AppSize
,*FreePool
and*IfThere
are now implemented in BootCommands. - Invocation: All implementations (or invididual systems) can be listed with
--list-implementations
or--list-implementations <system>
. - 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).
- Memory: Dynamic Area clamps are now supported.
Changed
- UI: Enabled key input from the UI systems.
- FS:
*Info
is now configurable whether it usesSys$DateFormat
or not. - FS:
*Info
output alignment is slightly different to match up with*FileInfo
. - Trace: Internal emulation SWI calls are now hidden from trace.
- Hourglass: Hourglass implementation Console now writes to stdout, and new implementation VDU writes to VDU stream as console used to.
- Invocation: Released 'pyro' tool now defaults to using the user's current environment (previously would isolate itself in a virtualenv).
- 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.
- 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.
- Debugger:
*ShowRegs
includes information about the code near the PC, and includes the IFSR and DFSR information in the output.
Fixed
- Platforms: Basic Pyromaniac functionality now runs on Windows (previously differences between it and POSIX would cause it to fail to initialise).
- Supervisor:
*GOS
no longer allows parameters to be passed to it (which would be ignored). - VDU:
*Echo
no longer terminates in a 0 byte (previously*Echo <22><0>
would fail to select mode 0). - SWIs: Unknown SWIs now report the correct error number (&1E6).
- System: SPSR is now set correctly on entry to SWI calls (previously would not be updated).
- Modules: ROM module enumeration now starts properly (previously starting enumeration would immediately return 'No more modules').
- 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)
- System: Vector calls should now correctly return the flags (previously most cases would preserve flags from the caller).
- FS:
OS_File 5
and friends no longer report an error for files in an unknown directory. - VDU:
OS_ReadVduVariables
returns correct values for 0s (previously was returning -1). - 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.
- Configuration: Invalid size and hex configuration now report a configuration error (previously gave Python errors).
- 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.
0.11 (03 May 2020)
Added
- Modules: Warnings are now generated when module syntax messages do not start with
Syntax:
. - Modules: When entering modules, they are now marked as preferred.
- ProgEnv: Environment change debugging is now available under
envchange
. - Clipboard: ClipboardHolder provides multiple implementations (null, static, pyperclip, posturl).
- DDEUtils: DDEUtils provides the Throwback SWIs, with implementations for console output, null and posturl.
- Docs: TRACE.md document created to describe the trace output from the system.
- 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.
- System: Transient callbacks and timer events are now recorded into traces when they're active.
- 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.
- 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.
- International: International module provides BBC font definitions and alphabet definitions;
*Alphabet
is now implemented. - VDU:
*Spool
/*SpoolOn
are now implemented. - 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. - BootCommands:
*Do
is now implemented. - Wimp:
Wimp_ReportError
is now provided by implementations and provides a UI variant using EasyGUI.
Changed
- Clipboard: ClipboardHolder preserves the filetype in the
*ClipboardHolder_ToFile
command. - Invocation: Command line option
--register-internal-modules
changed to--load-internal-modules
to be more consistent. - 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. - System:
OS_ReadSysInfo
platform class flags are now configurable, rather than being static. - Trace: Tracing of LDRB is able to report strings referenced by the source register, configurably.
- Docs: Diagrams now use fallback fonts which look similar to Optima.
- 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. - 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.
- System: Interrupts from timers are now disabled by default, as these are buggy.
Fixed
- 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)
- 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). - Modules: ROM modules are now correctly preceded by their length.
- Input: Configuring EOF as
exit
now correctly exits supervisor (previously would have looped forever). - System: 'Safe' strings reported in error messages and trace output are now 256 bytes long (previously were 128 bytes).
- SWIs: Parsing in GSTrans fixed to handle space termination properly within variables, and to correctly pass through
<>
. - Memory: Doubly mapped dynamic areas are now disallowed (previously they were allowed but would only be singly mapped).
- 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. - Input: Character reading no longer fails when the stdin is a pipe.
- Trace: Trace addresses now appear correctly when they take up 8 characters (previously would expand to 9 characters).
- Configuration: Numeric configuration in the configuration files is now parsed correctly (previously hex values would be reinterpreted from their decimal representation).
- 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).
- 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.
- Memory: DynamicArea operations should now report the correct error numbers.
- ProgEnv: Callback handler is now correctly called (previously, would not be called)
- 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.
- Input: Console input is no longer flushed when using the native readline (previously prevented pasting of multi-line text).