BCM2835 Changes 5.26 to 23 Jul 2023
Changes: BCM2835 5.26 to 23 Jul 2023
Update from RISC OS 5.26 to RC (23-Jul-2023)
Changes in the ROM
Each ROM module is listed below with a link to the ROOL source which explains the changes.
The link to the source has been updated to refer to git where so marked.
ROM modules not present in the Raspberry Pi ROM are shown in italics.
Changes from RISC OS 5.26 to RC 23 Jul 2023 | |||||
Module name used in Source with a link to it | Module name used in HELP MODULES with a link to a summary of the changes | RC (23 Jul 2023) | 5.26 | ||
HAL_BCM2835 | MOS Utilities | 5.29 | (3 May 2023) | 5.26 | (18 Oct 2018) |
Kernel | MOS Utilities | 5.29 | (3 May 2023) | 5.26 | (18 Oct 2018) |
PCI | PCI Manager | 0.19 | (29 Aug 2020) | 0.15 | (10 Sep 2017) |
FileSwitch | FileSwitch | 2.92 | (25 Mar 2023) | 2.86 | (03 Sep 2017) |
ResourceFS | ResourceFS | unchanged | 0.26 | (18 Aug 2016) | |
TerritoryManager | Territory Mgr | 0.58 | (25 Jan 2021) | 0.57 | (12 Nov 2017) |
Messages | UK Messages | unchanged | 1.12 | (24 Oct 2015) | |
MessageTrans | MessageTrans | unchanged | 0.49 | (26 May 2012) | |
UK | UK Territory | 0.64 | (1 Feb 2021) | 0.61 | (29 May 2016) |
WindowManager | Window Manager | 5.86 | (24 Jun 2023) | 5.61 | (18 Mar 2018) |
TaskManager | Task Manager | 1.54 | (10 Jul 2021) | 1.50 | (19 Aug 2017) |
Desktop | Desktop | 2.77 | (26 Oct 2018) | 2.76 | (29 May 2016) |
SharedRISC_OSLib | C Library | 6.21 | (22 Jul 2023) | 5.95 | (14 Apr 2018) |
BASIC | BBC BASIC V | 1.85 | (3 Oct 2022) | 1.75 | (03 Mar 2018) |
BASIC64 | BBC BASIC VI | 1.85 | (3 Oct 2022) | 1.75 | (03 Mar 2018) |
BASICVFP | BBC BASIC VI | 1.85 | (3 Oct 2022) | - | - |
BlendTable | BlendTable | unchanged | 0.02 | (09 Mar 2014) | |
BufferManager | Buffer Manager | unchanged | 0.39 | (14 Mar 2011) | |
ColourTrans | Colour Selector | 1.96 | (4 Feb 2023) | 1.95 | (29 May 2016) |
Debugger | Debugger | 2.08 | (19 Jun 2021) | 2.02 | (25 Feb 2018) |
DeviceFS | DeviceFS | unchanged | 0.73 | (23 Apr 2016) | |
BCMSupport | BCMSupport | 0.13 | (1 Aug 2020) | 0.07 | (31 Jul 2017) |
PortableHAL | Portable | unchanged | 0.81 | (20 Jan 2017) | |
RTSupport | RTSupport | unchanged | 0.17 | (15 Jun 2016) | |
USBDriver | USBDriver | 1.32 | (15 Jul 2023) | 1.28 | (17 Mar 2018) |
DWCDriver | DWCDriver | 0.37 | (4 Jul 2020) | 0.34 | (27 Jan 2018) |
XHCIDriver | XHCIDriver | 0.30 | (12 Sep 2020) | - | (new) |
VCHIQ | VCHIQ | 0.14 | (19 Feb 2020) | 0.10 | (15 Oct 2017) |
BCMSound | BCMSound | unchanged | 0.04 | (21 Apr 2015) | |
ScreenModes | Screen Modes | 0.74 | (2 Mar 2020) | 0.68 | (31 Mar 2018) |
BCMVideo | BCMVideo | 0.61 | (24 Jun 2020) | 0.50 | (18 Apr 2018) |
DisplayManager | DisplayManager | unchanged | 0.44 | (29 May 2016) | |
DMAManager | DMAManager | unchanged | 0.23 | (07 Nov 2015) | |
DragASprite | Drag A Sprite | unchanged | 0.21 | (30 Aug 2017) | |
DragAnObj | Drag An Object | 0.10 | (16 Nov 2022) | 0.09 | (04 Aug 2011) |
DrawMod | Drawing Module | unchanged | 1.22 | (08 May 2016) | |
FileCore | FileCore | 3.78 | (15 Apr 2023) | 3.75 | (06 Jul 2017) |
RAMFS | RAMFS | 2.33 | - | - | - |
Filer | Filer | 2.49 | (15 May 2023) | 2.43 | (29 May 2016) |
FilerSWIs | FilerSWIs | unchanged | 0.05 | (16 Mar 2001) | |
FSLock | FSLock | 1.26 | (7 May 2022) | 1.24 | (26 Sep 2014) |
FontManager | Font Manager | 3.80 | (13 Aug 2018) | 3.79 | (04 Feb 2018) |
FPEmulator | FPEmulator | 4.39 | (28 Jan 2022) | 4.36 | (12 Dec 2017) |
VFPSupport | VFPSupport | 0.18 | (24 Nov 2021) | 0.13 | (20 Feb 2018) |
Free | Free | unchanged | 0.42 | (29 May 2016) | |
Hourglass | Hourglass | unchanged | 2.19 | (10 Nov 2013) | |
IIC | IIC | unchanged | 0.18 | (02 Feb 2017) | |
International | International | 1.70 | (6 Feb 2021) | 1.69 | (06 Dec 2015) |
InternationalKeyboard | Int’l Keyboard | 1.00 | (6 Feb 2021) | 0.99 | (21 Jan 2018) |
ITable | Inverse Table | unchanged | 0.18 | (06 Oct 2013) | |
NetFS | NetFS | 6.00 | - | - | - |
NetFiler | NetFiler | 0.87 | (21 Mar 2020) | 0.86 | (23 Oct 2016) |
NetPrint | NetPrint | 5.61 | - | - | - |
NetStatus | NetStatus | unchanged | 2.09 | (17 Jan 2003) | |
Obey | Obey | 0.41 | (6 Feb 2021) | 0.40 | (13 Jan 2015) |
Pinboard | Pinboard | 1.07 | (24 Jun 2023) | 1.03 | (06 May 2017) |
PipeFS | PipeFS | 0.25 | (23 Jan 2023) | 0.23 | (18 Aug 2016) |
RAMFSFiler | RAMFSFiler | 0.41 | (29 Feb 2020) | 0.40 | (20 Sep 2016) |
ResourceFiler | ResourceFiler | unchanged | 0.20 | (14 Jan 2014) | |
ROMFonts | ROM Fonts | 0.78 | (11 Feb 2023) | 0.77 | (07 Sep 2014) |
RTC | RTC | 0.02 | (4 Apr 2019) | - | (new) |
ScreenBlanker | ScreenBlanker | unchanged | 2.34 | (08 May 2016) | |
ScrSaver | ScrSaver | unchanged | 0.14 | (01 Aug 2015) | |
DualSerial | Serial | unchanged | 0.25 | (25 Oct 2016) | |
SerialDeviceSupport | SerialSupport | unchanged | 0.26 | (04 Jun 2012) | |
ShellCLI | ShellCLI | 0.38 | (23 Nov 2020) | 0.37 | (11 Jan 2014) |
SoundDMA_HAL | SoundDMA | 1.88 | (4 Aug 2018) | 1.85 | (12 Jun 2016) |
SoundControl | Sound Control | unchanged | 1.06 | (10 Sep 2016) | |
SoundChannels | SoundChannels | 1.43 | (20 Jun 2023) | 1.41 | (08 May 2016) |
SoundScheduler | SoundScheduler | 1.34 | (1 Jun 2022) | 1.32 | (28 Jun 2014) |
SpriteExtend | SpriteExtension | 1.85 | (3 Oct 2022) | 1.82 | (11 Feb 2018) |
SpriteUtils | SpriteUtils | unchanged | 1.13 | (19 Jan 2010) | |
Squash | Squash | 0.31 | (11 Feb 2023) | 0.30 | (15 Feb 2014) |
BootFX | BootFX | 0.09 | (26 Oct 2018) | 0.08 | (01 Apr 2017) |
SuperSample | SuperSample | unchanged | 0.16 | (14 Jan 2012) | |
SystemDevices | System Devices | 1.34 | (22 Oct 2022) | 1.33 | (15 Jul 2016) |
TaskWindow | TaskWindow | 0.85 | (17 Oct 2022) | 0.80 | (02 Jun 2017) |
WindowUtils | Window Utils | unchanged | 2.53 | (05 Apr 2001) | |
FilterManager | Filter Manager | 0.29 | (19 Jan 2020) | 0.28 | (23 Oct 2013) |
WaveSynth | WaveSynth | unchanged | 1.25 | (08 May 2016) | |
StringLib | StringLib | 1.20 | (3 Mar 2021) | 1.19 | (08 May 2016) |
Percussion | Percussion | 1.19 | (3 Mar 2021) | 1.18 | (08 May 2016) |
SharedSnd | Shared Sound | unchanged | 1.20 | (18 Jun 2016) | |
Filer_Action | Filer_Action | 0.64 | (15 May 03) | 0.62 | (13 Aug 2016) |
DOSFS | DOSFS | 1.15 | (1 Mar 2023) | 1.13 | (19 Feb 2018) |
SCSISwitch | SCSIDriver | 2.15 | (13 Jul 2018) | 2.14 | (11 Jan 2018) |
SCSISoftUSB | SCSISoftUSB | 0.28 | (18 May 2020) | 0.21 | (10 Mar 2016) |
SCSIFS | SCSIFS | 1.36 | (19 Aug 020) | 1.32 | (09 Sep 2017) |
SCSIFiler | SCSIFiler | 1.33 | (26 Feb 2020) | 1.30 | (26 Mar 2017) |
SDIODriver | SDIODriver | 0.18 | (21 Jan 2023) | 0.13 | (17 Jan 2017) |
SDFS | SDFS | 0.11 | (18 Jul 2022) | 0.10 | (8 Aug 2017) |
SDFSFiler | SDFSFiler | 1.15 | (26 Feb 2020) | 1.12 | (26 Mar 2017) |
SDCMOS | SDCMOS | 0.21 | (12 Jun 2021) | 0.18 | (12 Aug 2017) |
ColourPicker | Colour Picker | 0.59 | (3 Nov 2021) | 0.56 | (12 Apr 2018) |
DrawFile | DrawFile | 1.62 | (9 Jan 2023) | 1.59 | (11 May 2017) |
BootCommands | Boot Commands | 1.53 | (19 Oct 2022) | 1.49 | (02 Aug 2015) |
AUNMsgs | - | (not present) | 0.30 | (23 Oct 2016) | |
WindowScroll | WindowScroll | 0.02 | (29 Apr 2020) | - | (new) |
MManager | Mbuf Manager | unchanged | 0.30 | (07 Mar 2015) | |
Internet | Internet | 5.66 | () | 5.63 | (06 Jan 2018) |
Resolver | Resolver | 0.74 | () | 0.72 | (30 Jul 2015) |
Net | Net | 6.27 | - | - | - |
BootNet | BootNet | unchanged | 0.97 | (17 Jun 2015) | |
FreeWay | FreeWay | 0.42 | - | - | - |
ShareFS | ShareFS | 3.62 | - | - | - |
MimeMap | MimeMap | unchanged | 0.19 | (15 Apr 2016) | |
LanManFS | LanManFS | 2.69 | (1 Mar 2023) | 2.61 | (03 Jan 2018) |
EtherGENET | EtherGENET | 0.03 | () | - | (new) |
EtherUSB | EtherUSB | 0.42 | (2 Apr 2020) | 0.41 | (21 Mar 2018) |
DHCP | DHCP client | unchanged | 0.27 | (14 Apr 2016) | |
AcornURI | AcornURI | - | (not present) | 0.26 | (14 Apr 2016) |
Edit | !Edit | 1.75 | (5 Sep 2020) | 1.73 | (03 Apr 2015) |
Draw | !Draw | 1.45 | (15 Feb 2023) | 1.30 | (27 Oct 2016) |
Paint | !Paint | 2.53 | (10 Jun 2023) | 2.23 | (11 Nov 2017) |
Alarm | !Alarm | 2.96 | (14 Aug 2021) | 2.93 | (17 Mar 2018) |
Chars | !Chars | 2.06 | (17 Sep 2022) | 2.04 | (13 Apr 2018) |
Help | !Help | 3.27 | (4 Nov 2020) | 3.25 | (08 Oct 2017) |
tboxlib | Toolbox | 1.60 | (15 Feb 2023) | 1.58 | (11 Feb 2018) |
Window | Window Object | 1.80 | (25 Jan 2023) | 1.79 | (21 Mar 2018) |
ToolAction | ToolAction | unchanged | 0.38 | (20 Mar 2016) | |
Menu | Menu | 0.41 | (7 Jan 2023) | 0.40 | (01 Nov 2015) |
Iconbar | Iconbar | unchanged | 1.23 | (18 Jun 2016) | |
ColourDbox | ColourDbox | 0.23 | (25 Jan 2023) | 0.22 | (29 Nov 2017) |
ColourMenu | ColourMenu | 0.23 | (9 Sep 2018) | 0.22 | (18 Aug 2015) |
DCS_Quit | DCS Object | unchanged | 1.14 | (18 Jun 2016) | |
FileInfo | FileInfo | 0.21 | (9 Sep 2018) | 0.20 | (18 Aug 2015) |
FontDbox | FontDbox | unchanged | 0.19 | (18 Aug 2015) | |
FontMenu | FontMenu | 0.26 | (9 Sep 2018) | 0.25 | (18 Aug 2015) |
PrintDbox | PrintDbox | unchanged | (25 Jan 2023) | 0.18 | (18 Aug 2015) |
ProgInfo | ProgInfo | unchanged | (25 Jan 2023) | 0.19 | (18 Aug 2015) |
SaveAs | SaveAs | 0.21 | (25 Jan 2023) | 0.20 | (18 Aug 2015) |
Scale | Scale | 0.18 | (25 Jan 2023) | 0.16 | (18 Aug 2015) |
Gadgets | TextGadgets | 0.45 | (25 Jan 2023) | 0.44 | (09 Feb 2018) |
CDFSDriver | CDFSDriver | 2.42 | (22 Jun 2020) | 2.41 | (24 May 2012) |
CDFSSoftSCSI | CDFSSoftSCSI | unchanged | 0.06 | (10 Feb 2018) | |
CDFS | CDFS | unchanged | 2.63 | (08 May 2016) | |
CDFSFiler | CDFSFiler | 2.52 | (29 Feb 2020) | 2.51 | (13 Nov 2017) |
UnSqzAIF | UnSqueezeAIF | unchanged | 0.10 | (18 Nov 2013) | |
GPIO | GPIO | unchanged | 1.00 | (31 Mar 2018) | |
Components changed
- RiscOS/Apps/!EraseCVS from Batch6 to PlingEraseCVS-0_09
- RiscOS/Apps/!Prepare from Prepare-0_05 to PlingPrepare-0_06
- RiscOS/Apps/!WinEdit from WinEdit-1_11 to WinEdit-1_13
- RiscOS/BuildSys from BuildSys-7_23 to BuildSys-7_50-1-gca85c288
- RiscOS/Env from Env-1_37 to Env-1_44
- RiscOS/Export from Export-0_09 to Export-0_12
- RiscOS/Library from Library-1_92 to Library-2_04
- RiscOS/Sources/Apps/Alarm from Alarm-2_93 to Alarm-2_95
- RiscOS/Sources/Apps/Chars from Chars-2_04 to Chars-2_05
- RiscOS/Sources/Apps/Draw from Draw-1_30 to Draw-1_41
- RiscOS/Sources/Apps/EditApp from Edit-1_73 to EditApp-1_75
- RiscOS/Sources/Apps/Help2 from Help2-3_25 to Help2-3_26
- RiscOS/Sources/Apps/Paint from Paint-2_23 to Paint-2_37
- RiscOS/Sources/Desktop/Desktop from Desktop-2_76 to Desktop-2_77
- RiscOS/Sources/Desktop/Filer from Filer-2_43 to Filer-2_48
- RiscOS/Sources/Desktop/FilerAct from FilerAct-0_62 to FilerAct-0_62-3-g75233663
- RiscOS/Sources/Desktop/Filter from Filter-0_28 to Filter-0_29-1-gfc7abb71
- RiscOS/Sources/Desktop/Pinboard from Pinboard-1_03 to Pinboard-1_05
- RiscOS/Sources/Desktop/Switcher from Switcher-1_50 to Switcher-1_53
- RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_80 to TaskWindow-0_81
- RiscOS/Sources/Desktop/Wimp from Wimp-5_61 to Wimp-5_80
- RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_54 to ADFS-3_55
- RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_12 to ADFSFiler-1_15
- RiscOS/Sources/FileSys/CDFS/CDFSFiler from CDFSFiler-2_51 to CDFSFiler-2_52
- RiscOS/Sources/FileSys/FSLock from FSLock-1_24 to FSLock-1_25
- RiscOS/Sources/FileSys/FileCore from FileCore-3_75 to FileCore-3_75-1-g04030b45
- RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_86 to FileSwitch-2_87-1-gdc166065
- RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_13 to DOSFS-1_14-1-g774c67f3
- RiscOS/Sources/FileSys/NetFS/NetFiler from NetFiler-0_86 to NetFiler-0_87
- RiscOS/Sources/FileSys/PCCardFS/PCCardFS from PCCardFS-0_10 to PCCardFS-0_10-1-g0f9aa3bb
- RiscOS/Sources/FileSys/PipeFS from PipeFS-0_23 to PipeFS-0_24
- RiscOS/Sources/FileSys/RAMFS/RAMFSFiler from RAMFSFiler-0_40 to RAMFSFiler-0_41
- RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_32 to SCSIFS-1_36
- RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_10 to SDFS-0_10-1-ge51e62d5
- RiscOS/Sources/HAL/HAL_BCM2835 from BCM2835-0_75 to HAL_BCM2835-0_91
- RiscOS/Sources/HWSupport/BCMSupport from BCMSupport-0_07 to BCMSupport-0_13
- RiscOS/Sources/HWSupport/CD/CDFSDriver from CDFSDriver-2_41 to CDFSDriver-2_42
- RiscOS/Sources/HWSupport/DualSerial from DualSerial-0_25-4_8_2_16 to DualSerial-0_25-4_8_2_16-1
- RiscOS/Sources/HWSupport/FPASC from FPASC-4_36 to FPASC-4_37-1-g6a0dd699
- RiscOS/Sources/HWSupport/PCI from PCI-0_15 to PCI-0_19
- RiscOS/Sources/HWSupport/RTC from RTC-0_01 to RTC-0_02
- RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_21 to SCSISoftUSB-0_28
- RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_14 to SCSISwitch-2_15
- RiscOS/Sources/HWSupport/SD/SDCMOS from SDCMOS-0_18 to SDCMOS-0_20
- RiscOS/Sources/HWSupport/SD/SDIODriver from SDIODriver-0_13 to SDIODriver-0_16
- RiscOS/Sources/HWSupport/Sound/Sound0HAL from Sound0HAL-1_85 to Sound0HAL-1_88
- RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_41 to Sound1-1_42
- RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_32 to Sound2-1_33
- RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver from DWCDriver-0_34 to DWCDriver-0_37
- RiscOS/Sources/HWSupport/USB/USBDriver from USBDriver-1_28 to USBDriver-1_31
- RiscOS/Sources/HWSupport/VCHIQ from VCHIQ-0_10 to VCHIQ-0_14
- RiscOS/Sources/Internat/Inter from Inter-1_69 to Inter-1_69-1-g08cc6462
- RiscOS/Sources/Internat/Messages from Messages-1_12 to Messages-1_12-1-ge273deeb
- RiscOS/Sources/Internat/Territory/TerritoryModule from Module-0_61 to Module-0_63
- RiscOS/Sources/Kernel from Kernel-6_01-1 to Kernel-6_43-1
- RiscOS/Sources/Lib/DDTLib from DDTLib-0_06 to DDTLib-0_07
- RiscOS/Sources/Lib/DebugLib from DebugLib-0_71 to DebugLib-0_72
- RiscOS/Sources/Lib/Desk from Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix to Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix-1
- RiscOS/Sources/Lib/OSLib from OSLib-6_90 to OSLib-6_90-1
- RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_95 to RISC_OSLib-6_08
- RiscOS/Sources/Lib/SyncLib from SyncLib-0_04 to SyncLib-0_05
- RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_63 to TCPIPLibs-5_69
- RiscOS/Sources/Lib/UnicodeLib from Unicode-0_62 to Unicode-0_63-1-gf47d7578
- RiscOS/Sources/Lib/Wild from Wild-0_06 to Wild-0_05-2-g6320d5e3
- RiscOS/Sources/Networking/AUN/Access/ShareFSBlob from ShareFS-3_59 to ShareFSBlob-3_60
- RiscOS/Sources/Networking/AUN/Internet from Internet-5_63 to Internet-5_65
- RiscOS/Sources/Networking/Econet from Econet-5_80 to Econet-5_80-1-g691d0361
- RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_41 to EtherUSB-0_42
- RiscOS/Sources/Networking/Omni/Protocols/OmniLanManFS from LanManFS-2_61 to OmniLanManFS-2_66
- RiscOS/Sources/Networking/ResolverBlob from Resolver-0_72 to Resolver-0_72-2
- RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_16 to MakePSFont-1_18
- RiscOS/Sources/Programmer/BASIC from BASIC-1_75 to BASIC-1_81
- RiscOS/Sources/Programmer/BootCmds from BootCmds-1_49 to BootCmds-1_49-1
- RiscOS/Sources/Programmer/DDTHdr from DDT-0_02 to DDTHdr-0_03
- RiscOS/Sources/Programmer/Debugger from Debugger-2_02 to Debugger-2_07-1-g4ffc3ea2
- RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_75 to HdrSrc-2_91
- RiscOS/Sources/Programmer/RTSupport from RTSupport-0_17 to RTSupport-0_17-1
- RiscOS/Sources/SystemRes/InetRes from Internet-5_61 to InetRes-5_77
- RiscOS/Sources/Toolbox/ColourMenu from ColourMenu-0_22 to ColourMenu-0_23
- RiscOS/Sources/Toolbox/FileInfo from FileInfo-0_20 to FileInfo-0_21
- RiscOS/Sources/Toolbox/FontMenu from FontMenu-0_25 to FontMenu-0_26
- RiscOS/Sources/Toolbox/SaveAs from SaveAs-0_20 to SaveAs-0_21
- RiscOS/Sources/Toolbox/Toolbox from Toolbox-1_58 to Toolbox-1_59
- RiscOS/Sources/Toolbox/ToolboxLib from Libs-0_27 to ToolboxLib-1_18
- RiscOS/Sources/Toolbox/Window from Window-1_79 to Window-1_80
- RiscOS/Sources/Toolbox/tboxlib from Common-0_26 to Common-0_26-1
- RiscOS/Sources/Video/HWSupport/BCMVideo from BCMVideo-0_50-1_50_2_1 to BCMVideo-0_61
- RiscOS/Sources/Video/Render/DrawFile from DrawFile-1_59 to DrawFile-1_60
- RiscOS/Sources/Video/Render/Fonts/FontManager from Manager-3_79 to Manager-3_80-1-g1482e1d3
- RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_82 to SprExtend-1_84
- RiscOS/Sources/Video/UserI/BootFX from BootFX-0_08 to BootFX-0_09
- RiscOS/Sources/Video/UserI/Picker from Picker-0_56 to Picker-0_56-2-g2ddd12e7
- RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_68 to ScrModes-0_74
- RiscOS/Sources/Video/UserI/ScrSaver from ScrSaver-0_14-1_9_2_4 to ScrSaver-0_14-1_9_2_4-1-g57cd43bd
- RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_85 to ABRelease-1_00
Components added
- RiscOS/Sources/Desktop/WindowScroll version WindowScroll-0_02
- RiscOS/Sources/HWSupport/USB/Controllers/XHCIDriver version XHCIDriver-0_30
- RiscOS/Sources/Networking/Ethernet/EtherGENET version EtherGENET-0_02
Components removed
- RiscOS/Sources/Networking/AUN/AUNMsgs version bf30d3b4
- RiscOS/Sources/Networking/URI version 07ab6b22
Full Change Logs
Logs for RiscOS/Apps/!EraseCVS from Batch6 to PlingEraseCVS-0_09
!EraseCVS binary updated
From EraseCVS-0_09 built with cc 5.80 in the Disc environment. Version 0.09. Tagged as 'PlingEraseCVS-0_09'
Logs for RiscOS/Apps/!Prepare from Prepare-0_05 to PlingPrepare-0_06
Change line endings in text files from <LF><CR> to <LF>
This makes them easier to view online and easier to edit on other platforms. It necessitates using *Type rather than *Print to print them, but that's not a problem.
Fully remove Resources.UK.Intro file
This file was left over from the old version designed for CVS usage, where components were held under a directory named according to the licence terms used, and some of these components required copying to a different location before they could be used. This is no longer the case, so this first step is now obsolete. The title text is moved into Resources.UK.Tools1, which is now the first file to be printed. Version 0.06. Tagged as 'PlingPrepare-0_06'
Logs for RiscOS/Apps/!WinEdit from WinEdit-1_11 to WinEdit-1_13
!WinEdit binary updated
From WinEdit-1_13 built with cc 5.77 in the Disc environment.
Logs for RiscOS/BuildSys from BuildSys-7_23 to BuildSys-7_50-1-gca85c288
Incremental step in cross-compilation support
Detail: ModuleDB: * Correct capitalisation of resgen's TARGET to match its main source file GNUmakefiles/AAsmModule: * Targets now given ,ffa filetype suffix * Support source directory layouts s/<subdir>/<leaf> as used by the kernel and printer drivers - define SYMLINK_EXT_FIRST to enable * Prevent relinking when running make on an up-to-date component due to a difference between amu and GNU make's handling of double-colon rules * Support linking with GNU toolchain * Fix installation rule (mixup between MERGEDMDIR and MERGEDRDIR) * Support up to 16 assembler and 8 C-from-assembler headers, up from 3 of each (here's looking at you, kernel) - long-term, it might be worth changing this to a scheme like that used by CModule to remove any limits * Fix C-from-assembler exports to have .h suffix GNUmakefiles/AppLibs: * Define INCLUDE_OSLIB to permit OSLib header search paths to be specified in an OS-agnostic way GNUmakefiles/CApp: * Prevent relinking when running make on an up-to-date component due to a difference between amu and GNU make's handling of double-colon rules GNUmakefiles/CLibrary: * Prevent rearchiving when running make on an up-to-date component due to a difference between amu and GNU make's handling of double-colon rules * Don't use .hdr suffix on exported assembler header files * Correct order of dependencies for export_libs phony target GNUmakefiles/StdTools: * Definition for the module filetype suffix * Add LDBIN tool for GNU/Norcroft-agnostic binary link, useful for linking position-independent binary code, such as relocatable modules (i.e. ones that don't require the linker to create a __RelocCode function) * FAPPEND function now works if the same file is used for the destination as for one of the sources (this is used by CModule) GNUmakefiles/CModule, ModStdRule, ModuleLibs: * Finally created cross-compilation versions of the last major shared makefiles! Warning: these have received limited testing to date. Makefiles/AAsmModule: * Support up to 16 assembler and 8 C-from-assembler headers Makefiles/AppLibs, ModuleLibs: * Define INCLUDE_OSLIB Makefiles/StdTools: * Add LDBIN tool Version 7.24. Tagged as 'BuildSys-7_24'
Makefile bugfixes
Detail: Makefiles/AAsmModule: * This was the odd-one out amongst top-level shared makefiles in that it still required the master makefile to include StdTools explicitly - even the GNU version of this makefile did so. Now changed for consistency. GNUmakefiles/AAsmModule: * Fixed typo in renaming of MERGEDMDIR to MERGEDRDIR. Admin: Fixes build error in latest FPEmulator Version 7.25. Tagged as 'BuildSys-7_25'
Fix definition of INCLUDE_OSLIB
Detail: Somehow the leading minus signs went missing - this broke ColourPicker, which was the only component that relied on it. Version 7.26. Tagged as 'BuildSys-7_26'
Component, Makefile, ModuleDB updates
Detail: Disc - add AcornHTTP and URL modules, force en-gb CmdHelp for RouteD in 310 directory. OMAP5 - add ADFS/SATADriver/ATAPI, change default CMOS to select FileSystem=ADFS Libs makefiles - add path to ZLIB ModuleDB - Relocate OMAP5 HAL to mixed/ Version 7.27. Tagged as 'BuildSys-7_27'
Add VideoOverlay to ModuleDB, disc image
Version 7.28. Tagged as 'BuildSys-7_28'
Add PDumperPCL to !Printers
The sources were added a few years ago, a dumper number allocated, and printer definition. Complete the set with the dumper too. Version 7.29. Tagged as 'BuildSys-7_29'
Addition of Iceland, Portugal & Netherlands Territory modules
Admin: Added to ModuleDB and BonusBin components Version 7.30. Tagged as 'BuildSys-7_30'
Add mbedTLS to Disc build
Version 7.31. Tagged as 'BuildSys-7_31'
Common OMAP5 module ordering
Admin: Move Podule/ADFSFiler/SATADriver around to similar positions to other components file (so they appear after the modules on which they depend, even if that's not alphabetical). Update type in ModuleDB. Version 7.32. Tagged as 'BuildSys-7_32'
Remove the "LiveDisc" component from ModuleDB - it never actually existed
Add GateWay to ModuleDB and BonusBin
Version 7.33. Tagged as 'BuildSys-7_33'
Add AcornSSL to Disc build
Version 7.34. Tagged as 'BuildSys-7_34'
Add NetUtils to ModuleDB and PlingSystem
Rename dummy module NetUtils2 to NetUtils2. Use NetUtils for the real thing. RISC OS 3.50 and later had a new enough version of NetFS to not need patching (>=5.79), so on the face of it the simplest solution would be to load the newer NetFS on earlier OS versions. However, that wouldn't work if you were booting via NetFS (compared with loading NetUtils, which can be done while NetFS is being used). Version 7.35. Tagged as 'BuildSys-7_35'
Add FilerUtils to ModuleDB and PlingSystem
Version 7.36. Tagged as 'BuildSys-7_36'
Install a disc copy of Resolver/ShareFS in PlingSystem
Version 7.37. Tagged as 'BuildSys-7_37'
Preserve the timestamp when INSERTVERSION operates on Messages
Those RAM loading modules which pick from VersionNum and insert into their Messages would create a new Messages file with a new date every time they are built. Because the tools to put these in ResourceFS also capture the file's datestamp (via :FLOAD: :FEXEC: in objasm, or via resgen for C modules), you don't create binary identical copies on two successive builds despite the same input source. Add a ${TOUCH} step to copy the reference time stamp to the generated Messages file. Requires Library-1_96 or later for Touch.
Preserve timestamp for INSERTVERSION Messages files when cross compiling too
Version 7.38. Tagged as 'BuildSys-7_38'
Build fix
Don't try and be clever using Build$Path, just refer to touch directly (since uses of it elsewhere don't have *Run). Version 7.39. Tagged as 'BuildSys-7_39'
Add GPIO module to OMAP5
Version 7.40. Tagged as 'BuildSys-7_40'
Fix typo in make function name.
make-cppp-depend => make-cpp-depend Version 7.40. Not tagged
Browse components file maintenance
Detail: AcornSSL now built from source. AcornHTTP TARGET changed. Missing headers from FileSwitch added. Admin: Build completed (having started from standard Exports in DDE29a). Version 7.41. Tagged as 'BuildSys-7_41'
Shrink oversize HALs
Set the -at address to match reduced HAL size (from Env-1_43). Remove EnforceSCSI4 predefine from iMx6, there's no such switch in the Kernel, replace it with best guess as might have been: configure SCSI drive 4.
Install FormEd
Terrible window editor WinEdit is in the bonus bin, so why not FormEd too.
Add XHCIDriver+EtherGENET to BCM2835
At time of writing neither works, but they go dormant gracefully. Version 7.42. Tagged as 'BuildSys-7_42'
Build fix
Add FormEd to ModuleDB now it's used in the BonusBin component. Version 7.42. Not tagged
Add Dialler to ModuleDB, PPP to Disc
PPP also turned out to need Dialler exports, so that got released too. Add PPP to the Disc components, and Dialler for its exports. Version 7.43. Tagged as 'BuildSys-7_43'
Add WindowScroll to ModuleDB + ROMs
Replace redundant AUNMsgs module with WindowScroll, to avoid unplugged modules being shuffled. Also remove rogue AcornURI from BCM2835 ROM. Version 7.44. Tagged as 'BuildSys-7_44'
Add EtherGENET AutoSense, browser & bonus bin updates
* Put the GENET autosense into !InetSetup * Export Dialler's header for !Browse now the component is published. * Chuck MailMan in the bonus bin, for that Econet mail experience. Version 7.45. Tagged as 'BuildSys-7_45'
Add .gitignore
Version 7.45. Not tagged
Add ZeroPain to BonusBin
Version 7.46. Tagged as 'BuildSys-7_46'
CModule: Allow a component to use RISC_OSLib's modulewrap facility
Standardise autogeneration of source files using objasm within CModule clients
Various components use objasm for its general macro abilities in order to generate intermediate source or header files. To date, this has required writing of custom rules, which then need separate implementations for cross-compilation use. There is no standardisation of destination directory (it may be generating source or header files in any arbitrary language) so the solution here is to specify each target using a subdirectory, basename and extension, and leave CModule to deal with whether or not the extension should be in prefix or suffix position, depending on the host OS. Only one such autogenerated file is currently supported per makefile: ``` ASM2TXT = <basename> <optional extension> ASM2TXT_SUBDIR = <optional subdirectory, each element followed by ${SEP}> ``` The source file passed to objasm is derived from `<basename>`, prefixed by `s.` or suffixed by `.s` as appropriate.
Add extra rules to help amu deduce prerequisites of ASM2TXT header exports
GNU make doesn't need this extra hint. Version 7.47. Tagged as 'BuildSys-7_47'
Assistance for cross-compilable makefiles
StdTools: new symbol SUFFIX_HEADER: '.h' for GNU make, undefined for amu; useful for generating filenames of generated headers StdTools: new symbol EXT: filename extension separator character CModule: ROM_SYMS: now defined conditionally, permitting it to be overridden higher up the master makefile, to match SA_LIBS and ROM_LIBS Version 7.47. Not tagged
Add RMVersion as a library to PlingSystem
For Installer. Version 7.48. Tagged as 'BuildSys-7_48'
Enable rom_link target for AAsmModule components
The ModuleDB classifies modules as being of type either `ASM` or `C`. The primary consumer of this information is `srcbuild`. The difference between them, as far as `srcbuild` is concerned, is only that in the `install_rom` phase, it builds the `rom_link` phony target in `C` components' makefiles, instead of the `install_rom` phony target. These phony targets differ slightly in requirements: `install_rom` uses `INSTDIR` where `rom_link` uses `LINKDIR`, but more significantly, `rom_link` is passed parameter `ADDRESS` to state where in the ROM the module resides. This addesss is not known at the time the `rom` phony target is made, so `C` components only produce a partially-linked binary at that stage, where `ASM` components have already produced a complete binary. (The reason for this difference is that while hand-written assembly modules use position- independent code, the output of the Norcroft compiler normally relies on run-time code modification to relocate absolute addresses - something that is not possible when running from ROM.) There are implementations of the `install_rom` and `rom_link` rules in the `AAsmModule` and `CModule` shared makefiles respectively, so `AAsmModule` is currently only used for `ASM` components and `CModule` is only used for `C` components. However, occasionally we have reason to change a component from using `AAsmModule` to `CModule`, usually for reasons unrelated to the use of absolute address relocations, because `CModule` is more flexible than `AAsmModule` in various other ways. This poses a problem for keeping `BuildSys` in step with the component in question, because whenever we change the shared makefile type in the component's makefile, we have to update the `ModuleDB` in lock step. The solution presented here is to ensure that at least one shared makefile supports both phony targets, so any component using it no longer cares how it is recorded in the `ModuleDB`. Adding `install_rom` to `CModule` was rejected, on the grounds that it would be too easy to accidentally build a ROM using it where the necessary relocations had been skipped at ROM link time. However, there are no drawbacks to adding `rom_link` to AAsmModule, because linking an object that has no relocations at any base address will always result in an identical binary that is safe to execute. Though the module itself requires no relocations, the symbols file traditionally output by `CModule` does contain absolute addresses which are useful for debugging, so a new link command is executed during `AAsmModule`'s `rom_link` rule in order to ensure this is kept up-to-date, even though the binary could otherwise have been re-used from the one generated in the `rom` rule.
Change a few modules to `C` type
These components have pending merge requests that mean they are likely to move to use the `CModule` shared makefile in the near future, which will require the use of their `rom_link` rule. However, due to the change to `AAsmModule` in the last commit, we can change their type now in anticipation. I'm not going further and change all `ASM` components en masse, because not all of them will yet have been converted to use `AAsmModule`. This is also the reason for not making the change in `srcbuild` itself. Version 7.49. Tagged as 'BuildSys-7_49'
Extend `CApp` to support module-wrapped applications
This involves grafting in the `resources`, `rom` and `rom_link` rules from `CModule` (support for `CmdHelp` files is not copied across, because no module-wrapped application can provide star commands). Module-wrapped applications typically want to support `install INSTTYPE=app` in the same way as other applications, to permit a non-wrapped version to be built (for example, for debugging purposes). Because this feature is typically used with applications that use RISC_OSLib, the rules have been made slightly more sophisticated than those in CModule, in the sense that if `LIBS` contains `${RLIB}`, it automatically selects the larger ROM stubs and symbols files that include the RISC_OSLib library chunk, so there is no need to override these from the calling makefile. Compared to the `install` phase, where all resource files go into the application directory, for ROM builds, only a subset of files go there, the remainder being placed under `Resources:$.Resources`, and some of the files differ in contents from the `install` versions. The application directory resources in the ROM build case are (in a change from previous behaviour) all now registered with ResourceFS by the module-wrapped application rather than by the Messages module, and they are packaged using the `ResGen` tool. This means that you can kill (or unplug) the module and teh application will disappear from `Resources:$.Apps`. The resource files are categorised using the separate macros `INSTAPP_FILES`, `RES_FILES` and `RESAPP_FILES`. Requires RISC_OSLib-6_08.
Define toolchain-agnostic warning suppression flags
C_NOWARN_ASSIGNMENT_AS_CONDITION to suppress warnings about assignments within condition tests in `if` statements C_NOWARN_NON_ANSI_INCLUDES to suppress warnings about use of angle brackets for #include headers not defined by ISO/ANSI Version 7.50. Tagged as 'BuildSys-7_50'
Build fix
Edit-1_75's makefile invents trailing application name, remove it here. Version 7.50. Not tagged
Logs for RiscOS/Env from Env-1_37 to Env-1_44
Refactor cross-compilation environment scripts
Detail: In tentative efforts to support cross-compilation to date, a few components have had mk.sh scripts inserted. These are functionally equivalent to the !Mk* TaskObey files, in that they are a convenience for developers working on that component in isolation. However, unlike their RISC OS equivalents, the nature of shell scripts means that they are relatively complex, and are therefore relatively burdensome to create and maintain. This commit replaces this mechanism with a shell function which is defined when you source the Env file. This enables a build phase to be applied to the component at the working directory to be built with a simple "mk export", "mk install", "mk rom", "mk clean" and so on. Previously, the build variables COMPONENT, TARGET and INSTDIR were encoded in the mk.sh script, and where a component had multiple targets, the mk.sh script would run the phase on all such components; now the mk function scans the ModuleDB to locate this information instead. You can even target a component in another directory using the -C switch (chosen to match make's equivalent switch). Some efforts have also been made to support Posix shells other than bash. The only feature dropped is the ability to build the component using a different environment within a subshell. However it's relatively simple to construct this at the command line if desired. Version 1.38. Tagged as 'Env-1_38'
Fix for cross-compilation of components with TARGET or INSTDIR undefined in ModuleDB
In cases where mk's environment didn't define these, the null definition from ModuleDB was overriding any default definitions in the Makefile, which is very unhelpful!
Adjust relative paths to allow for source tree reorganisation
Address issues in cross-compilation Env scripts identified by ShellCheck
Cross-compilation make wrapper: tighten rule about inferring COMPONENT from ModuleDB
Version 1.39. Tagged as 'Env-1_39'
Detect AMU version number and feature at runtime
Extract the version number from AMU's help message and set `AMU$Version` accordingly. Also set `AMU$HasWorkingWildcard` depending upon whether the installed version of AMU has a fully functional `$(wildcard)` function. Version 1.40. Tagged as 'Env-1_40'
Correction: AMU$HasWorkingWildcard requires *SetEval, not *Set
Version 1.41. Tagged as 'Env-1_41'
Fix changes in Env 1.40-1.41 so they work after a clean boot
These relied on calling the GNU.gawk binary, but did so *before* the run path was guaranteed to point at it. Move that block of lines lower down. Also remove unused (and commented) Src$Dir definition within the lines that we move it past.
Make Env files work with default 640K again
Changes in Env 1.40-1.41 require GNU.gawk and amu within the same application slot at the same time, which exceeds the default 640K WimpSlot. There isn't actually any need for the awk script to run within a Makefile (it's not testing the Makefile's behaviour directly) so by moving the lines up to !Common, the memory usage is reduced. Version 1.42. Tagged as 'Env-1_42'
Shrink oversize HALs
Now the HALs don't carry copies of the USB stack, these 2 are overweight. OMAP3 -> 64k (still approx 23k free) iMx6 -> 96k (still approx 32k free) Version 1.43. Tagged as 'Env-1_43'
Make the !Common.sh mk function exit on an error
Detail: The mk function had the bad habit of hiding failed builds by always returning an exit code of zero. It will now exit with 1 on a failure. Version 1.44. Tagged as 'Env-1_44'
Logs for RiscOS/Export from Export-0_09 to Export-0_12
Add missing SWI definition
Rename SWI
Detail: Rename AcornSSL_Socket to AcornSSL_Creat to better reflect the Socket_Creat SWI that it replaces. Admin: Submission for TCP/IP bounty. Version 0.10. Tagged as 'Export-0_10'
Rename file location
Admin: Move AcornSSL.h to more conventional Interface/AcornSSL.h Retagged as Export-0_10.
Exported header update
Detail: Recently added SWI definitions added. Version 0.11. Tagged as 'Export-0_11'
Remove header file
Admin: Now exported by the component Version 0.12. Tagged as 'Export-0_12'
Logs for RiscOS/Library from Library-1_92 to Library-2_04
Library updates
Detail: Acorn/rpcgen update to fix NULL pointer dereference building NFS' RPC descriptions Build/FAppend update to support an arbitrary number of source files rather than fixed limit of 9 Version 1.93. Tagged as 'Library-1_93'
Updated srcbuild binary
Admin: srcbuild-0_54 built with cc 5.77. Version 1.94. Tagged as 'Library-1_94'
Update to Squish 1.16
Version 1.95. Tagged as 'Library-1_95'
Add a minimal Touch tool
Previously we aliased ${TOUCH} to *Create, but now it's useful to have at least 1 other option found in Unix touch, -r which uses a file as the reference date to touch the other files with. Delete unused Version tool. Version 1.96. Tagged as 'Library-1_96'
Add the later ARMv8 AArch32 opcodes
ARM have added SETPAN, ESB, TSB, CSDB, PSSBB, SSBB since the earlier ARM ARM that the decgen encodings were based on. Add these, update the page references from the newer ARM ARM, and make some holes in the ARMv7 encoding to accommodate. Version 1.97. Tagged as 'Library-1_97'
Update rompress
rompress 0.04 rebuilt against Kernel-6_22 for the revised value of HighestOSEntry. Should fix the problem at the final stage of ROMs which are compressed erroring now there's an extra OS entry. Built in the Disc environment with cc 5.78. Version 1.98. Tagged as 'Library-1_98'
Fix InstallTools race (mostly)
Obey$Dir can change during a Obey file run in a Taskwindow, in particular writing to the output stream can trigger the loading of a Taskwindow server such as !Edit.
Update InstallTools,fd7
Version 1.99. Tagged as 'Library-1_99'
Install Touch for DDE
Add a copy of Touch during Install_DDE as the shared makefiles now use it for reasons other than creating empty files in some situations. Version 2.00. Tagged as 'Library-2_00'
Install Touch alongside FAppend
Version 2.00. Not tagged
Updated srcbuild binary Admin: srcbuild-0_57 built with cc 5.80.
Version 2.01. Tagged as 'Library-2_01'
Update Sed
Detail: From sed-0_03, built with GCC 4.7.4r3 and libgnu4-0_02. Version 2.02. Tagged as 'Library-2_02'
Make auto-generated headers usable with GCC
Wrap Norcroft-specific pragmas in #ifdef __CC_NORCROFT. Version 2.03. Tagged as 'Library-2_03'
Fix InstViaRG for cross-compilation use
This script made efforts to support use from Posix environments, but slipped up when interfacing to ResGen. Version 2.04. Tagged as 'Library-2_04'
Logs for RiscOS/Sources/Apps/Alarm from Alarm-2_93 to Alarm-2_95
Store choices alongside the Alarms, get out of CMOS
Per ticket #471 the ROM app's use of system variables to store their choices harks back to a time when the Choices/Choices$Write system didn't exist. Doubly so for Alarm which stores 5 of its settings in CMOS, 3 in an obey file, plus another (potentially inconsistent) set in the desktop boot file for good measure. Consolidate these into a single choices file, and no longer write out Alarm$Options as part of the Message_SaveDesktop Wimp message. This also frees up 7 bits of CMOS. Version 2.94. Tagged as 'Alarm-2_94'
Fade seconds label when continuous beep
In the choices window, fade 'seconds' when the number field is also faded. Version 2.95. Tagged as 'Alarm-2_95'
Logs for RiscOS/Sources/Apps/Chars from Chars-2_04 to Chars-2_05
[472] Make error handling when painting fonts less strict
Bad characters are skipped, replaced with a rectangle, and an error displayed, rather than reverting to the System Font. Version 2.05. Tagged as 'Chars-2_05'
Logs for RiscOS/Sources/Apps/Draw from Draw-1_30 to Draw-1_41
Update to use clipboard cut & paste
Detail: Initial implementation of the cut-and-paste aspects of 1309,419/FS revision G. The former model (limited to only being able copy locally within a document) now uses RAM (or file based fallback) transfer of draw objects (DrawFile/Sprite/JPEG/Text). Admin: Submission for Clipboard Support bounty. Version 1.31. Tagged as 'Draw-1_31'
Sprite copy, Draw paste fixes
Detail: Correction to Sprite collation to the clipboard to get the sprite header right. On paste, if there's already an object selected replace it with the pasted item. Admin: Submission for Clipboard Support bounty. Version 1.32. Tagged as 'Draw-1_32'
Update to use drag & drop also
Detail: Implementation of the drag-and-drop aspects of 1309,419/FS revision G. Admin: Submission for Clipboard Support bounty. Version 1.35. Tagged as 'Draw-1_35'
Correction to Wimp message length
Detail: The structure definition includes an initial slot for a type, so the length calculation should subtract 1 when using sizeof(). Version 1.36. Tagged as 'Draw-1_36'
Add duplicate selection operation
Detail: Define Ctrl-D to duplicate (equivalent to copy/paste with nudge), and reassign the previous use of Ctrl-D to reset the zoom ratio to 1:1 to Ctrl-0. Admin: Submission for Clipboard Support bounty. Version 1.37. Tagged as 'Draw-1_37'
Fix for menu reopen issue on Adjust click
When choosing a menu option with Adjust, menus other than the top level would be closed because the request for clipboard status via Wimp_SendMessage/Wimp_Poll interfered with the menu reopening. Version 1.38. Tagged as 'Draw-1_38'
Fix for wrong text bounding box for font size > 240ish
Integer overflow would cause an odd/invalid bounding box. Be more careful during the calculation. Tested with Homerton.Medium saying "Homerton" at 999 point.
[445] Fix for failing to transform text areas properly
The calculation in scale_textC() was using the origin of the group rather than the origin of the text column, and hence when a group of text areas was transformed (xscale/yscale/magnify) all the text got clumped up in the top left corner. Delete scale_textcolumn() since Draw object 10 can only occur nested inside a text area, there's no need to have a handler for it. Version 1.39. Tagged as 'Draw-1_39'
Fix issue dragging selection to iconbar icons
Send wimp messages to the actual iconbar icon rather than just the window handle during drag procedure. Version 1.40. Tagged as 'Draw-1_40'
Add a file info box
Paint and Edit have Misc > File menu entries, but not Draw. Add one, showing the file name and size, number of Draw objects in the drawing, and modified status.
Add choices dialogue, don't set Draw$Options
Messages/Templates: Extra interactive help, new menu templates, new choices dialogue DrawChoice.c/h: New source file to handle the choices dialogue, also added to Makefile. Draw.c/h: Transfer ownership of initial_options to DrawChoice.c, bump up the default undo buffer to a lavish 8k. Delete setting & parsing of Draw$Options. Ensure read of choices happens after the default colours have been read from the icons of the blank paper, otherwise the choices can't override the default grid colour. Add a couple of const qualifiers to clarify where draw_current_options is written. DrawMenu.c: Refactor draw_menu_makegridmenu() and draw_menu_setgridmenu() so they can handle multiple grid menus in existence, so the choices dialogue can share all the grid menu update code. Split out draw_menu_setgridunits() from the draw_menu_proc() handler for the same reason. No longer diff Draw$Options for changes. Delete some oddly duplicated code in draw_menu_entry_option(). DrawMenuD.h: Defines for the iconbar menu. DrawFileIO.c/h: constify- draw_file_matches(). Version 1.41. Tagged as 'Draw-1_41'
Logs for RiscOS/Sources/Apps/EditApp from Edit-1_73 to EditApp-1_75
Delete some dead code
The ctl part of RISC_OSLib is long abandoned, and has been switched out as far back as CVS history goes. Delete it. Tagged as Edit-1_73-1, since the binary is unchanged.
Delete some redundant/switched out code
Some #if FALSE's trimmed. Redundant check of s!=0 within a while (s!=0) removed.
Add Save choices menu option
edit.c: Add save choices support code (taken from equivalent operation in SrcEdit). Resources/UK/Messages: Add new menu item & error message, shuffle interactive help down. Restore missing help on BASIC line increment writeable. Version 1.74. Tagged as 'EditApp-1_74'
Minor improvements
A few misfeatures were discovered when rewriting the Makefile (see next commit). These fixes affect the binary outputs: * Module builds (the normal case) were disabling stack limit checks. Yet the code executes in USR mode with a chunked stack in application space, so this is potentially unsafe because it could lead to untrapped stack overflows. * The `Export` file was being unconditionally reinstalled in ResourceFS at runtime, duplicating the file that is installed via the Messages module. * Application (disc and debug) builds were linking with the RISC_OSLib binary that was intended for module targets. * WimpSlot size in application builds was too small to permit it to run.
Modernise build structure
Detail: * Rewrite `Makefile` to use shared makefile fragments * No longer requires `-E` switch to `amu` * Consolidate `.gitignore` files Admin: Requires BuildSys-7_50 and RISC_OSLib-6_08. Version 1.75. Tagged as 'EditApp-1_75'
Logs for RiscOS/Sources/Apps/Help2 from Help2-3_25 to Help2-3_26
Fix path to use absolute path
!Run was using an relative path so if the current directory of ResourcesFS was not it's root loading would fail. Version 3.26. Tagged as 'Help2-3_26'
Logs for RiscOS/Sources/Apps/Paint from Paint-2_23 to Paint-2_37
Minor debug fixes
PSprite.c: move the trace message up before the label, so if tb is NULL there isn't a NULL pointer dereference guard.c: refactor assert() to not check ptr!=0 a second time Found by cppcheck static analysis. Tagged as Paint-2_23-1 since both are debug code only.
Add clipboard/cut and paste to sprite filer
Detail: * Sprite filer window can now gain input focus * Change sprite/selection menu to add clipboard operations * Change 'Copy' to 'Copy as' to keep original copy with rename option * Add clipboard copy/paste/cut functionality * Add key bindings for clipboard bits * Remove existing drag of selection and replace with drag and drop protocol data export * Add drag and drop data import Admin: Submission for Clipboard Support bounty. Version 2.24. Tagged as 'Paint-2_24'
Tool idle event and trace bug fixes
Long standing disable of idle events when they are needed. Steps to recreate: * Create a sprite with a palette * Paint a little with any brush tool * Go to Paint > Edit palette to open the colour picker (ensuring that the menu tree, the mouse, and the colour picker are within the bounds of the sprite view being painted) * Collapse the menu tree and carry on painting with the brush tool The brush tool now only produces output on click, not drag. This is because the idle events are no longer enabled, they were lost in merely opening the picker. "oh god a sprite window's gone walkies" observed in trace during development. Triggered when sprwindow_delete() is called when there's only one sprite window and you close it. This is because of an earlier change which commented out beforeus = /*(main_sprite_window *) &*/us->sprite->windows; The additional addressof operation would have introduced one extra iteration to the loop that followed (with the beforeus->link variable at offset 0, it would just dereference the pointer on the first iteration). Now the case of beforeus == us is explicitly checked. Submission for the Paint bounty. Version 2.25. Tagged as 'Paint-2_25'
Colour handling enhancements
Detail: * Artist friendly colour ordering of 256 colour palette, and option to reorder pixel data for the remapped palette * Full 256 colour sprites can be created (as well as 64/16 entry VIDC compatible ones) * Colour indicator swatch in the bottom left corner of the sprite window * Adjust click on colours to paint with background colour * Shift-select as a shortcut to Paint > Select colour * Shift-adjust ditto for background colour Admin: Submission for the Paint bounty. Version 2.26. Tagged as 'Paint-2_26'
Zoom resize, focus, and keyboard shortcuts
Detail: * Sprite editor windows gain input focus on first click (there's an option to disable this behaviour too) * Zoom with Ctrl+resize window (in addition to Ctrl+Scrollwheel already implemented) * Key shortcuts in Sprite editor windows Admin: Submission for the Paint bounty. Version 2.27. Tagged as 'Paint-2_27'
Colour handling fixes
Detail: * Menus rearranged so "Advanced" is renamed "Palette options"; "Extra click for input focus" moved to the Paint menu. * The "Highlight background colour" menu option has been removed to simplify the interface. * To address all the differences of opinion around the artist-friendly palette arrangement, the default behaviour is to not show the confirmation dialogue box plus a further menu option "Rearrange user palettes" (ticked by default). If the latter's unticked, the remapping to artist-friendly (upon Edit palette) will never take place; if it's ticked, the remapping will always take place except when the confirmation box is enabled and the user clicks Default. * Greyed out palette options when there's not a full/default 256-colour palette, as appropriate. * Help text updated to reflect these changes. Admin: Submission for the Paint bounty. Version 2.28. Tagged as 'Paint-2_28'
Fix to artist friendly remapping
Detail: Remapping would never occur if the confirmation box was disabled. Admin: Submission for the Paint bounty. Version 2.28. Not tagged
Fix for camera and scissor tool in 'export' mode
Detail: * If the source sprite has an old-style bit mask, solid pixels in the exported sprite's mask may have a different value to the source sprite's. For example 0xFF -> 0xFC. * The OS seems to render such intermediate mask values inconsistently. Applicable GCOL commands have now replaced with OS_SetColour calls (taken from another fix elsewhere in the code that dates back to Acorn). Admin: See also https://www.riscosopen.org/forum/forums/4/topics/14698 Submission for the Paint bounty. Version 2.29. Tagged as 'Paint-2_29'
Promote width variable
Detail: Promoted the colour panel variables used to store dimensions based off the window furniture sizes to use ints instead of chars as they could, at least theoretically, exceed 255 OS units on a custom desktop. Admin: Submission for the Paint bounty.
Open popup menus in Style Guide approved place
Detail: In the create sprite dialogue the menus for colour/palette didn't open in the right place. Compute the offset as the Style Guide recommends. Admin: Submission for the Paint bounty.
Treat 'New sprite' as dialogue window
Detail: Now that there a popup menus on the create sprite window, it can't be used as a menu dialogue (because the Wimp only allows one window) from a submenu arrow. Change the menu entry to add an ellipsis and open it as a plain dialogue window. Admin: Submission for the Paint bounty.
Fix for left edge adjustment
Detail: Edge Adjustment of the left edge on Adjust size was broken due to copy/paste error. Admin: Submission for the Paint bounty.
Reduce redraws of colour panel
Detail: The colour panel swatch was being redrawn unnecessarily on every open window request due to not knowing whether the furniture icons had changed size. Now, only recalculate the sizes and force a redraw on a mode change event, this eliminates the flicker when moving the sprite window around. Admin: Submission for the Paint bounty.
Improve reciprocity of zooming
Detail: Previously a small (eg. 100x100) sprite being * zoomed in until it fills the screen * zoom 1:1 * zoom in again would lead to a large black border in width as the sprite grew, but not in height. Now ensures the width is clamped to the minimum sprite width. Admin: Submission for the Paint bounty. Version 2.30. Tagged as 'Paint-2_30'
Messages update
Detail: Move the menu entry tokens out of the !Help messages section so they don't get tokenised. Admin: Submission for the Paint bounty. Version 2.30. Not tagged
Fix loading palettes to all new & 256 colour old sprites
A check (marked DF-300) rejected any attempt to load a palette into a new (ie. RISC OS 3.50+) style sprite. This is bogus because bbc_modevar() is perfectly happy to process a sprite mode word and return Log2bpp, which is all that was required. Confirmed on RISC OS 3.50 with SYS"OS_ReadModeVariable",&202D0169,9 TO,,log2bpp which gives 3 for a 256 colour 180dpi sprite. Ref: https://www.riscosopen.org//forum/forums/4/topics/14966 Second, a logic error introduced in Paint-2_26 meant that loading from a file any 256 entry palette (old or new sprite) would result in the palette being reset to the kernel default. This is because there are 2 callers of menus_set_palette() with non-NULL palette pointers, but only 1 wants a default palette. Signal this case by passing -256 entries. Version 2.31. Tagged as 'Paint-2_31'
Fix issue dragging a selection to icon bar icons
Send Wimp message to correct destination icon rather than the iconbar window. Version 2.32. Tagged as 'Paint-2_32'
Fix for mask errors with camera/scissor tool
Detail: Longstanding bug where use of the camera or scissor tool in Export mode with 'new' 1bpp mask sprites didn't work. Change to use SpriteExtend's scaled mask op. Ref: https://www.riscosopen.org/tracker/tickets/481 Admin: Submission for Paint bounty.
Add wrap option to move sprite tool
Detail: Implements a wrap option to the 'Move Sprite' tool, enabled via a check box. Code sharing with the camera/scissor tool via copy_to_temporary_sprite() and delete_temporary_sprite(). Admin: Submission for the Paint bounty. Version 2.33. Tagged as 'Paint-2_33'
Minor fixes
Detail: * Fix for 2 colours being editing when the palette is in artist friendly view * Disabled 'Rearrange user palette' option by default to keep confusion to a minimum * Remove ^P shortcut for 'Edit palette' which could cause a submenu error in some situations Admin: Submission for Paint bounty. Version 2.34. Tagged as 'Paint-2_34'
Add choices dialogue, don't set Paint$Options
Messages/Templates: Extra interactive help, new menu templates, new choices dialogue. PaintChoice.c/h: New source file to handle the choices dialogue, also added to Makefile. Main.c/h: Transfer ownership of initial_options to PaintChoice.c. Delete setting & parsing of Paint$Options. Export - and constify - Matches() for use elsewhere. Define MAXZOOMFACTOR and replace 999's elsewhere. Menus.c: Remove advanced options menu, these are now in choices. MenuD.h: Defines for the iconbar menu, remove advanced options menu. Version 2.35. Tagged as 'Paint-2_35'
Sprite compatibility report fix
As documented in PRM5A, RISC OS 3.5 doesn't support new-format sprites which have masks. Update the sprite info dialogue "compatibility" field to reflect this, reporting that the sprite is compatible with RISC OS 3.6 instead.
Adjust USBDriver scrollwheel fix
Starting with USBDriver 1.30, the scrollwheel is now handled in a sensible manner, so there's no longer any need to ignore four out of every five wheel events. Version 2.36. Tagged as 'Paint-2_36'
Fix for NULL pointer read on drag start
The call to cnp_drag_restart_dragbox() needs the window member of current_drag_op set up, but was being used before it's set. Since the struct is memset to 0 before use, don't bother with the static initialiser. Version 2.37. Tagged as 'Paint-2_37'
Logs for RiscOS/Sources/Desktop/Desktop from Desktop-2_76 to Desktop-2_77
Update artwork to reflect change of ownership of RISC OS
Version 2.77. Tagged as 'Desktop-2_77'
Logs for RiscOS/Sources/Desktop/Filer from Filer-2_43 to Filer-2_48
Create intermediates for a (non leaf) new directory
The Ursula Filer enhancements (see 1309,211/FS section 4.4) aimed to replace the former 'New directory' writeable with a Save As style draggable box, based on the 'Copy as' one. However, its implementation was asymmetrical. Consider what 'Copy as' does: * When the dir icon is dragged the leaf is used as the target regardless of what else was typed in the text box eg. "foo.bar.baz" when dragged will created "baz" only * When text is typed in the box and OK (or enter) pressed * If the text is a leaf (no dots) it is prefixed with the containing dir then passed to *COPY * Otherwise passed direct to *COPY which will recursively create the steps eg. select "baz", type "foo.bar", result is contents of "baz" now copied to "foo.bar.baz" in the CSD - which may not be the containing dir Whereas 'New directory' did: * When the dir icon is dragged the leaf is used as the target regardless of what else was typed in the text box * When text is typed in the box and OK (or enter) pressed * If the text is a leaf (no dots) it is prefixed with the containing dir then passed to *CDIR * Otherwise passed direct to *CDIR which will error "Not found" since the intermediates are missing Update the Filer to spot the last case and create the intermediates, before presenting the final path to *CDIR as before. Clicks.s: For each path element create the directory, then call *CDIR for the final level. DecodeMenu.s: Delete dead code. PathMunge.s: Correct comment (r1 is preserved). Version 2.44. Tagged as 'Filer-2_44'
Allow imagefs files to be applications.
This replicates the functionality of ImageFSFix, which is supplied and enabled by default with SparkFS and ArcFS, without the detrimental effects of confusing other programs. Version 2.45. Tagged as 'Filer-2_45'
Correction to SetCaretPosition parameters
Detail: MVN #1 is -2, whereas Wimp_SetCaretPosition expects -1 to mean "you calculate for me". Admin: Spotted during Clipboard Support bounty testing. Version 2.46. Tagged as 'Filer-2_46'
Add menu messages for Rename (^R)
Version 2.47. Tagged as 'Filer-2_47'
[489] Fix for Ctrl-X/Ctrl-C clearing Filer rename writable
When Ctrl-X or Ctrl-C are pressed during a rename the Wimp (via Clipboard Manager) claim the clipboard to denote the text that was placed on it. This sends a Message_ClaimEntity. Unfortunately Filer wasn't discriminating which entity was being claimed, when it is only interested in loss of caret, so removed the writable and aborted the rename. Add a check on the entity being claimed; only do something for caret. Version 2.48. Tagged as 'Filer-2_48'
Logs for RiscOS/Sources/Desktop/FilerAct from FilerAct-0_62 to FilerAct-0_62-3-g75233663
Update ticks/sec factor
Don't use draft ANSI name CLK_TCK, use C90's brand new CLOCKS_PER_SEC.
Fix includes for case-sensitive filesystems
Version 0.62. Not tagged
Cross-compilable
Detail: * Rewrite makefile to use shared makefiles * Fix #includes for case-sensitive filesystems * Replace nested .gitignore files with top-level .gitignore Admin: Requires BuildSys-7_47. Version 0.62. Not tagged
Logs for RiscOS/Sources/Desktop/Filter from Filter-0_28 to Filter-0_29-1-gfc7abb71
Use Rel macros for window handle manipulation
Munge between internal and external window handles using the same macro the Wimp does for clarity.
Minor cleanup
Don't include headers we don't need, add Hdr:HostFS so debug builds work. Don't pointlessly preserve low registers in finalise handler. Use Unix style names for LNK. Typos in docs fixed. Be consistent about wsptr/WP/wp when referring to the workspace pointer.
Remove signed pointer comparison
Linked lists end with NULL, not <= 0.
Fix for 26 bit pre filter exit
PRM 3-305 says to return with MOVS PC,LR but in the 26 bit case we were not preserving flags.
[455] Don't call filters for tasks that have quit
Filter Manager continued to call filters based on their Task ID after they had quit. Now, watch out for Service_WimpCloseDown and disable any matching filters (the filters are retained so that any subsequent legitimate deregister attempt doesn't get an unknown filter error). As only 16 bit Task IDs are stored, define a new flag in b31 to denote a disabled filter - this also means there is a free "no match" when the filter lists are scanned. The copy filter isn't affected because it doesn't select on Task ID. FilterMgr.s: New flag to mark a task as having quit ModHead.s: Listen for Service_WimpCloseDown and check the lists of Task IDs for any matches. Simplify *Filters code with advanced subroutine technology. SWIs.s: Knock out the "quit" flag when comparing task handles to deregister Tail.s: Walk a list, mark any matching tasks as having quit Version 0.29. Tagged as 'Filter-0_29'
Build fix
Ethusiastic unused header cull removed APCS.<APCS> which is used (only) in the standalone case. Replace singular FunctionEntry/Return with Entry/EXIT which is what is more generally used by the module Version 0.29. Not tagged
Logs for RiscOS/Sources/Desktop/Pinboard from Pinboard-1_03 to Pinboard-1_05
Fix pinboard sprite caching to take into account changes in mode RGB order & alpha blending
Detail: s/Backdrop - Change the construction of the "compact mode word" representing the screen mode to include the RGB & alpha mode flags, so that the sprite will be re-cached when switching between screen modes with different RGB & alpha settings Admin: Tested on Raspberry Pi 3 Version 1.04. Tagged as 'Pinboard-1_04'
Allow imagefs files to be applications
This mirrors the change in Filer 2.45. Version 1.05. Tagged as 'Pinboard-1_05'
Logs for RiscOS/Sources/Desktop/Switcher from Switcher-1_50 to Switcher-1_53
Update artwork to reflect change of ownership of RISC OS
Version 1.51. Tagged as 'Switcher-1_51'
Support over 2GB of RAM
This updates the Tasks window and related code so that memory amounts are tracked in units of KB instead of bytes, allowing the code to support machines with more than 2GB of RAM. Where relevant, newer page-based OS APIs are used instead of older byte-based ones, which should future-proof the code for operation on machines with over 4GB of RAM (potentially up to the 1TB limit supported by the ARMv7 large physical address extension). Use definitions from Hdr:OSMem. Version 1.52. Tagged as 'Switcher-1_52'
Change emitted line 1 comment
Say "Desktop settings" at the top of the file saved from the menu entry of the same name. Comments in code also changed or made non-specific. Version 1.53. Tagged as 'Switcher-1_53'
Logs for RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_80 to TaskWindow-0_81
Document the build options
Detail: s/Taskman - Add comments for the different build switches, so it's more obvious what they do. Remove a couple of unreferenced switches. Admin: Resulting binary unchanged Version 0.80. Not tagged
Use OsByte header
Detail: 11 local definitions of OsBytes replaced with those from the central headers. Admin: Built as binary identical.
Build fix
Detail: ADR->ADRL for standalone builds, such as Disc or CTools environment.
Fix for Escape return registers on OS_Byte 129
Detail: Was checking EscPending (which had been set to 0 by RestoreEscape) rather than EscWasSet, and so the return results (R2=27 and C=1) of an Escape during OS_Byte 129 were lost, R2=0 and C=0 were instead returned. Admin: Fixes https://www.riscosopen.org/tracker/tickets/467 Version 0.81. Tagged as 'TaskWindow-0_81'
Logs for RiscOS/Sources/Desktop/Wimp from Wimp-5_61 to Wimp-5_80
Leading spaces in makefile changed to tabs for GNU make compatibility
Remove ${CURDIR} check in makefile to fix native builds
Fix handling of tool sprite palettes in alpha-blended screen modes
Detail: s/Wimp10 - Update mastertoactive to force the palette/translation table to be sent through ColourTrans if either &RGB component ordering or alpha blending is in use for the current screen mode. Otherwise, for alpha modes, the alpha channel would typically be left at zero. Admin: Tested on Raspberry Pi 3 Version 5.62. Tagged as 'Wimp-5_62'
Don't access 0xFFFFFFFE if window vanished
The pointer left/entered window logic calls int_get_pointer_info which can return a window (and/or icon) handle of -1 if the pointer is over no window, such as might occur if the window has been deleted. The check for a duff window handle (in R3) was unfortunately made *after* it'd been dereferenced. Move this check up beforehand. Fixes issue reported on Usenet https://groups.google.com/forum/#!topic/comp.sys.acorn.programmer/iR0_TNekiKg Version 5.63. Tagged as 'Wimp-5_63'
New Wimp_Extend subreason
Detail: Subreason 14 gives a means to read the validation string from a window/icon that is not in the current task. This is useful for determining whether clipboard operations should be allowed. Admin: Submission for Clipboard Support bounty. Version 5.64. Tagged as 'Wimp-5_64'
Add ptr_write2 to Wimp pool
Admin: Submission for Clipboard Support bounty. Version 5.64. Not tagged
Zip non-ascii filename [??£??]
This solves difficulty in handling on other operating systems, including being an illegal filename in macOS. Fixes https://www.riscosopen.org/tracker/tickets/473 Version 5.64. Not tagged
Messages additions
Detail: 3 extra tokens in support of clipboard operations. Admin: Submission for Clipboard Support bounty.
Add copy & paste and drag & drop operations to the Wimp
Detail: The text in writable icons can now be manipulated using the familiar keyboard shortcuts, or using Drag and Drop in conjunction with any compliant applications. Further details are in Doc/DragAndDrop along with information on API extensions which are implemented. Admin: Submission for Clipboard Support bounty. Version 5.65. Tagged as 'Wimp-5_65'
Clipboard caret/task fixes
Detail: In CnPCaret.s * Clear any invalid window handles currently stored in caret blocks on Wimp_SetCaretPosition entry * Clear R2 on exit if R0=-1,R2=TASK on entry to Wimp_SetCaretPosition * If window is not open or able to receive a focus, then return WimpFocus error rather than causing an alignment exception In CBTask.s A drag to writeable with invalid (eg.rejection due to validation string mismatch or overlong insert) caused ghost caret to be left behind and still deletes the source text. * Changed LDR R2,=cbtask_TASK to LDR r2,cbtask3_TASK * Ensure cbtask_insert_text_into_icon returns V set on error Drag and drop text from icon to non-d&d application, the last message was erroneously sent as DataSaveAck, not Dataload Admin: Submission for Clipboard Support bounty. Version 5.66. Tagged as 'Wimp-5_66'
Add Wimp_Extend 15, "read slot size"
Wimp_Extend 15 is equivalent to Wimp_SlotSize,-1,-1, with the exception that the sizes returned in R0-R2 are now measured in pages instead of bytes. This allows code to accurately read the amount of free memory on machines with >2GB of RAM, and provides some future-proofing should we ever wish to support tasks with >2GB of RAM (e.g. via a future super-jumbo wimpslot, or more likely via sparse/PMP wimpslots, where the physical size is larger than the logical size). Currently there's no need to provide a page-based call to set the slot size (~2GB is fine for the forseeable future), so this call only focuses on reading the sizes. Version 5.67. Tagged as 'Wimp-5_67'
Apply same vetting to SetCaretPosition window handle as non cut & paste Wimp
Detail: Summary of how non-CnP Wimp treats the window handle for Wimp_SetCaretPosition R0 = valid window handle or invalid window handle (mapped to -1) or any negative number or 0 (mapped to -1) With this change, the CnP Wimp does R0 = valid window handle or invalid window handle (throws error) or any negative number or 0 if pre RISC OS 5 (mapped to -1) or 0 for RISC OS 5 (mapped to -1) Noting the use of AcceptLoosePointer macro if built for a 26 bit target.
Fix for lack of input focus clicking on no icon
Detail: If R0=valid window handle, R1<0 (not an icon) and R4=-1 then R4 is internally set to 'invisible caret' to ensure that we get the full input focus event and visible cues. Ref: https://www.riscosopen.org/forum/forums/5/topics/14945?page=2#posts-97886 Admin: Submission for Clipboard Support bounty.
Fix for abort on pasting into writeable menus
Detail: Menu windows don't store the task handle in their datablock, so an incorrect one was used as part of the data transfer sequence. Also, minor fix for Message_ClaimEntity when bit 2 was clear (bits 0,1 set). The response meant that, for example, Alt-click to rename, select text in writeable and press ^C - copied to clipboard, but writeable is removed. Admin: Submission for Clipboard Support bounty.
Fix lost menu clicks on icons when window partly off screen
Detail: Don't trap menu clicks on icons when the window isn't fully on-screen. Ref https://www.riscosopen.org/forum/forums/4/topics/14961?page=1 Admin: Submission for Clipboard Support bounty. Version 5.68. Tagged as 'Wimp-5_68'
Fix zero page access looking for ptr_ sprite validation
On mouse click, check for icon type was incorrect, so trying to apply tests for 'P' validation string/ptr_write on inappropriate icons (eg. sprites), leading to invalid validation string accesses. Correct the test performed. Also add 3 further AcceptLoosePointer checks to validation string pointers. Version 5.69. Tagged as 'Wimp-5_69'
Fix crash on closing a task which has a currently open menu and input focus
Version 5.70. Tagged as 'Wimp-5_70'
Fix issue where dragging text from icon caused a crash in foreground task
When releasing claim, use of stale register meant that the foreground task wasn't correctly bouncing Message_Dragging when the pointer moved out of range. Also added a sanity check in get_selected_text so that if for some reason the selection window disappears mid action it will be caught and not cause a crash. Version 5.71. Tagged as 'Wimp-5_71'
Allow text to be dragged from writable icons to icon bar icons
Check destination window handle and add destination icon handle if sending message to window handle -2. Improve window handle validation (not assuming all -ve handles are invalid, should the RMA move to have top bit set). Version 5.72. Tagged as 'Wimp-5_72'
Fix delivery of extended scroll requests
Extended scroll requests and regular scroll requests share the same reason code, but are different sizes. Update calcmessagesize to calculate the size of extended scroll messages correctly, so that the icon number won't get chopped off when the message is being passed to the target task. Version 5.73. Tagged as 'Wimp-5_73'
Fix abort error with ^K and ^X in writable icons
Check there is actually a selection present in the window before cutting/deleting any text. Version 5.74. Tagged as 'Wimp-5_74'
Fix issue with pasting clipboard by non-RAMFetch data transfer
Detail: Send correct DataSaveAck message in response. Version 5.75. Tagged as 'Wimp-5_75'
Fix mouse click on icon which closes window incorrectly triggering writeable selection drag
Ensure caret data valid for Wimp_DragBox 13. Display caret/selection even if icon type is not 14 or 15.
Version 5.76. Tagged as 'Wimp-5_76'
When clicking in window to move caret to another icon, remove any selection from other icons in the window to prevent unwanted user deletion of text in the selected icon.
Force writeable icons to have a filled background on redraw, similar to behaviour in pre-clipboard Wimp. Prevents corrupted redraw in non-filled writeables.
Version 5.77. Tagged as 'Wimp-5_77'
Rename clashing CLI macro
The name clashes with the recently added clear IRQ flag macro, CLI, but is only used in a debug case. Version 5.77. Not tagged
Fallback to replying to Message_DataRequest with native type
When the preferred list of types is exhausted, Clipboard Manager should at least respond with the native type (per DnD spec 5.3.1). Since only text is supported, this translates to always replying. Version 5.78. Tagged as 'Wimp-5_78'
Add minimalist Wimp_ReadSysInfo 21 implementation
Since our text selection model follows the Style Guide and there's no means to configure it to the contrary, this subreason can just return fixed values to allow applications to query the state compared with running on a non-Cut-n-Paste Wimp.
Fix stack imbalance in Wimp_SetCaretPosition if called with invalid icon handle & flags
Version 5.79. Tagged as 'Wimp-5_79'
Fixes for dropping text into writable icons
* If dragging text from a writable icon and the source text or selection disappears during the drag, an ofla error occurs. Change to abort quietly (ie no text copied as nothing to copy) and remove the ghost caret from view. * Remove ghost caret on invalid dropped drags * Either use correct insert point from ghost caret when receiving a drag, or use current mouse coords for the destination if no ghost caret present. * Change datasave handling to check ghost caret presence for the destination rather than trying to check the enhanced datasave state. * Use window X coord for drop rather than screen Xcoord to ensure correct insert point. Fixes dragging multiline text areas from Draw leaving a ghost caret when it failed, and dragging a basic text object from Draw now inserts at the correct place. Version 5.80. Tagged as 'Wimp-5_80'
Logs for RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_54 to ADFS-3_55
Fix stack imbalance when PCI floppy init fails
Version 3.55. Tagged as 'ADFS-3_55'
Logs for RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_12 to ADFSFiler-1_15
Swallow a class of ambiguous disc name errors
When the dreaded ambiguous disc name error occurs ADFSFiler has logic to suppress the error and proceed when possible. However the check was against specifically FS number 8 (ADFS), SDFS and SCSIFS didn't benefit. Now, matching on any FS number, it is possible to toggle between 2 (eg.) SD cards of the same name just as you can 2 ADFS floppies. Also, fix the SDFS standalone build to pick up the Sprites file from the UserIF. Version 1.13. Tagged as 'ADFSFiler-1_13'
Correctly detect errors returned from Service_EnumerateFormats
SWI OS_ServiceCall has never propagated the PSR flags from callees back to the caller, so testing the V flag is the wrong way to detect failures. Check whether the service call has been claimed instead, since that is documented as being part of the process of a callee returning an error. Version 1.14. Tagged as 'ADFSFiler-1_14'
Added ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box. Version 1.15. Tagged as 'ADFSFiler-1_15'
Logs for RiscOS/Sources/FileSys/CDFS/CDFSFiler from CDFSFiler-2_51 to CDFSFiler-2_52
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box. Version 2.52. Tagged as 'CDFSFiler-2_52'
Logs for RiscOS/Sources/FileSys/FSLock from FSLock-1_24 to FSLock-1_25
Correct exit of CallbackCode to pull PC not LR
Version 1.25. Tagged as 'FSLock-1_25'
Logs for RiscOS/Sources/FileSys/FileCore from FileCore-3_75 to FileCore-3_75-1-g04030b45
Docs update
Having disassembled various old copies of FileCore, make a note of the most likely reason it declares with fsinfo_dontuseload to maximise the use of background transfer buffers. Not tagged.
Logs for RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_86 to FileSwitch-2_87-1-gdc166065
Fix for missing monitor name after load
The code path that filing systems the register with dontuseload omitted the line printed when *OPT 1 is non-zero. In particular this meant FileCore (which has the fsinfo word flag set) didn't report any monitor name. For dontusesave, the initial call to do the equivalent of *Create covers the output even though it's a bit early. However, the flag check appeared to be inverted, so an FS with it set would call OS_File, and one clear would call OS_GBPB. FileSwHdr.s: Remove use_fsfile_Save and use_fsfile_Load switches, since clients declare at runtime what their preference is (since RISC OS 3). LowLevel.s: Extract monitor name reporting code, replace with function call to common code. FSShared.s: Common function ReportMonitor. OSFile.s: After doing a load via OS_GBPB call the monitor name reporting code. Tune up the StrongARM code flush code a little to not need R5 as a temporary. Fix inverted sense of dontusesave. Version 2.87. Tagged as 'FileSwitch-2_87'
Use normal spaces instead of hard spaces in debug messages.
This makes editing the source easier on other operating systems. Version 2.87. Not tagged
Logs for RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_13 to DOSFS-1_14-1-g774c67f3
Fix pointer compare confusion
OpsFunc.c: don't compare fname with a null string, when a NULL pointer was intended Found by cppcheck static analysis. Version 1.14. Tagged as 'DOSFS-1_14'
Fix cleaning
Move .gitignore file to root and populate with all temporary paths. This fixes .gitignore files being deleted during a ROM build. Version 1.14. Not tagged
Logs for RiscOS/Sources/FileSys/NetFS/NetFiler from NetFiler-0_86 to NetFiler-0_87
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Key ellipsis suffix off OS version
Detail: NetFiler is provided in the universal boot, hide the ellipsis on OS versions where the other filers would also be missing one. Version 0.87. Tagged as 'NetFiler-0_87'
Logs for RiscOS/Sources/FileSys/PCCardFS/PCCardFS from PCCardFS-0_10 to PCCardFS-0_10-1-g0f9aa3bb
Cross-compilable
Detail: * Rewrite Makefile to use shared makefiles * Fix #includes for case-sensitive filesystems Version 0.10. Not tagged
Logs for RiscOS/Sources/FileSys/PipeFS from PipeFS-0_23 to PipeFS-0_24
Delete some dead code
Since PipeFS registers with FileSwitch with both dontuseload and dontusesave there's no need to implement the corresponding FSEntry_File subreasons. This might have been left around because RISC OS 2 ignored FS info word flags b23-16, but we're not worrying about RISC OS 2 compatibility now. Version 0.24. Tagged as 'PipeFS-0_24'
Logs for RiscOS/Sources/FileSys/RAMFS/RAMFSFiler from RAMFSFiler-0_40 to RAMFSFiler-0_41
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box. Version 0.41. Tagged as 'RAMFSFiler-0_41'
Logs for RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_32 to SCSIFS-1_36
Altered interaction with PartMan. PartMan now tells SCSIFS when it can attempt to mount a newly connected disc.
Detail: In order to be certain that the partition table has been fully analysed before SCSIFS attempts to mount a newly connected disc, if Partman is detected, SCSIFS waits for a service call from PartMan before it attempts to mount any partitions on the disc. If PartMan interaction is not compiled, in, or PartMan is not detected, SCSIFS behaviour is unaltered. Admin: tested on iMx6 Version 1.33. Tagged as 'SCSIFS-1_33'
Extended SCSIFS_Partitions SWI reason 1 to be fully aware of partitions
Detail: Reason 1 did not check whether the given partition offset matched, so did not differentiate between different partitions on a disc Admin: tested on iMx6 Version 1.34. Tagged as 'SCSIFS-1_34'
Added method to find SCSI ID and partition offset from icon number
Detail: SCSIFS_Partitions reason code 1 already provides the icon number for a given SCSI ID and partition offset. Reason code 2 provides the inverse function to this. Admin: tested on iMx6 Version 1.35. Tagged as 'SCSIFS-1_35'
[464] Restore documented enumeration SWI behaviour
SCSI_Partitions 1 was changed in SCSIFS 1.34 to tie new significance to R2, which was previously undefined. Thus any clients of this subreason failed in various amusing ways (the ticket references SystemDisc and Fat32Formatte, and inspection of HForm suggests this would have altered behaviour because BASIC zeros unused registers). Since the only client of this extension is the SCSI specific PartMan, and the module already has a variety of assembly time switches in order to complete the other half of the dialogue to work out which partition is which, just make the significant R2 depend on that switch too. Therefore the previously documented SWI behaviour is restored otherwise. Also, tidy the docs up, and paste those tidied docs into the relevant place in the sources. Version 1.36. Tagged as 'SCSIFS-1_36'
Logs for RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_10 to SDFS-0_10-1-ge51e62d5
Cross-compilable
Detail: * Uses CModule's ASM2TXT feature to simplify autogeneration of SDFSErr header. * Fix case of one #include to suit case-sensitive filesystems. * .gitignore populated with all temporary file paths. Admin: Requires BuildSys-7_47 Version 0.10. Not tagged
Logs for RiscOS/Sources/HAL/HAL_BCM2835 from BCM2835-0_75 to HAL_BCM2835-0_91
Merge SMP branch to trunk
Detail: hdr/StaticWS - Reserve workspace for QA7 peripheral address, HAL-wide spinlock, and doorbell device Makefile, s/DBell - Add doorbell device implementation hdr/BCM2835 - Clean up dead macros, add new macros for spinlock claim/release and basic CPU detection. Define new IRQ numbers for the "QA7" peripheral. hdr/CastleMacros, s/Top - Generate two HAL descriptors and entry point tables: One for single-core machines and one for multi-core machines. This avoids some MP-related overheads on ARM11 models of Pi. Implement SMP HAL entry points. s/Interrupts - Add support for the QA7 interrupts. Although some interrupts can be flexibly routed to different cores, we currently stick with a static scheme. s/Messaging - Use CPUDetect macro Admin: Untested Requires Kernel-6_09 Version 0.76. Tagged as 'BCM2835-0_76'
Merge branch Pi3APlus to trunk
Not tagged
Appease Thor
SDIO.s: a condition code mixup meant that during intense SD card activity the thunder bolt symbol would appear due to poking the non-LED lines on 3B+ GPIO.s: extend the 'free for use' table to include 3A+ pins, otherwise it read off the end; add an ASSERT to catch this in future Version 0.77. Tagged as 'BCM2835-0_77'
Check Board_Model only once
Do an upfront check for the model being 0, if that ever changes there's probably something seriously different. Look only at the Board_Revision elsewhere. Add the other Compute module to the SPI2 check (though currently the checks don't consider "New" revision words). Version 0.78. Tagged as 'BCM2835-0_78'
Add Compute Module 3+ support
GPIO.s,hdr/BCM2835: Table of known ids updated SPI.s: Fix long broken compute module support (only the original CM1 would have exported SPI2 due to not checking for the new id scheme). Unrelated, SDIO.s: Use CallOS macro. Thanks to Chris Hall for testing this on a CM3+ 8GB model. Version 0.79. Tagged as 'HAL_BCM2835-0_79'
Address of mailbox given to GPU should have cacheability bits set correctly
On entry to HAL_SendHostMessage, we ensure the contents of the mailbox buffer are flushed out to the ARM L2 cache (if applicable) and main memory. There were a couple of instructions to fill in the top two bits of the address before passing it to the VC, but they were commented out for reasons that are not clear. The effect of this is that the VC will look in its L1 and L2 caches for the data in the buffer. On Pi 1 and 0, this wouldn't be too bad, since ARM11 didn't have its own L2 cache and would have written the data into the VC L2 cache instead, meaning that there would only be coherencency problems if the VC L1 cache still contained the old contents of the address. On Pi 2-4, it's more risky, because the VC L2 cache could also be inconsistent with main memory at this point. Reinstating the top two bits doesn't appear to cause any ill effects I can see (tested on Pi 1 and 4), so put these instructions back in. Version 0.80. Tagged as 'HAL_BCM2835-0_80'
Set shareability bit in page tables for IO region on Pi 2 onwards
RISCOS_MapInIO does relatively little processing on the L1PT flags that the HAL passes to it. However, when modules come along later and try to locate IO again, using OS_Memory 13, access permissions are specified using a variation on dynamic area flags. The kernel translates from these to L1PT flags, and one of the rules it applies is that the shareability bit is set if on a multiprocessor system. On Pi 2 and later, this means it doesn't find a match amongst the sections that were mapped in by the HAL, and in practice this means BCMVideo ends up causing 16MB of IO space to be mapped in twice. Fix this by passing the L1_S flag to RISCOS_MapInIO on Pi 2 and later. This effectively frees up an additional 16MB of logical address space for dynamic areas. Version 0.81. Tagged as 'HAL_BCM2835-0_81'
Fix OS_SerialOp default handshaking use on Pi
The default state for the Serial device (aka OS_SerialOp, and redirection to serial via *FX) is to expect hardware handshaking. However the implementation of HAL_UARTModemStatus when ModemControl = {FALSE} state didn't set a return value so ended up returning a1 = the port number (=0) rather than valid status bits. In turn, DualSerial took that to mean CTS/DSR deasserted and refused to send anything. To a lesser extent HAL_UARTModemControl also affected, returning a1 = port number 0 too. For both, set a return value; the value is as though a cable is always present with RTS=CTS and DTR=DSR. Also, fix the bugs in ModemControl = {TRUE}. This also fakes DTR=DSR which status/control bits don't appear to be implemented in the UART peripheral. Tested briefly, checking CTS state when plugging/unplugging a cable. Version 0.82. Tagged as 'HAL_BCM2835-0_82'
Peripheral physical addresses have moved again
Also: * the IO region previously used only for the QA7 extensions now holds a GIC as well on Pi 4, so give it a more generic name * there's a new, second peripheral IO region to map in as well
Minimal read-write support for mini-UART
Because the mini-UART clock is derived from the core clock, and this varies by hardware platform and even firmware version, move the initial mailbox read to before UART initialisation so that this information is available.
Get IRQs working
Detail: * For now, this uses the legacy interrupt controller, whose register layout has unfortunately changed in some unhelpful ways. There is also a GICv2 in the SoC, which we will need to transition across to in order to use some of the newer peripherals (including USB3 and gigabit Ethernet). * This requires a corresponding set of changes to start.elf: substitute all three instances of &E30011E7 with &E3001000. * FIQs are not currently supported, as the legacy interrupt controller has changed how these are handled. It seems likely that we'll transition to GIC before too long, which means it's not worth bothering to implement them for the legacy interrupt controller.
Enable SD controller
Detail: * Efforts to get the faster EMMC2 controller working are ongoing. In the meantime, this enables the backward-compatible EMMC1 controller. * The method required to control the activity LED appears to have changed, yet again. I haven't worked out how yet, so this is currently non-functional.
GPIO support
Detail: * Board recognition for Pi 4 * Updated the pin enumeration table to specify new functions available in Pi 4 (I2C[3456], SPI[3456], UART[2345])
SD bugfixes
Detail: * Implement SD activity LED for Pi 4 * Remove inappropriate reprogramming of GPIO47 for Pi 3 B(+) and A+ * Correct the value for SDHCIWriteInterval which is used during SetSDCLK()
Extended IRQ support, and FIQ support
Both still use GIC bypass mode. Assuming for now that extended GPU peripherals can't support FIQ without GIC (it seems as though they either all use IRQ or all use FIQ, and RISC OS isn't set up for there being multiple FIQ sources active at once).
Support EMMC2 controller
This controller is now preferred over the legacy EMMC controller, and it is capable of UHS speeds (pending support in SDIODriver). Requires RiscOS/Sources/HWSupport/SD/SDIODriver!4
Support >1GB RAM
RAM sizes above 1GB are not reported by the usual mailbox property, and it seems unlikely that this will change because the VC RAM allocation has to remain within the bottom 1GB of the address space (the VC still uses the upper two bits of its addresses for cache policy) and this property cannot describe a non-contiguous range. Use the board revision bitfield to recognise when additional general-purpose RAM exists above the VC allocation. For now, we're running in "low peripherals" mode, so the top 64MB of 4GB RAM machines is inaccessible. If the VC allocation is also 64MB, that means the startup banner of Pi 4 will read 960MB, 1984MB or 3968MB. Also fix HAL_PhysInfo (and by implication, OS_Memory 6 and 7) to report the full 35-bit physical address space on Pi 4. The `range` struct filled in by HAL_PhysInfo has not been extended to 64-bit physical addresses because it describes RAM, and for now at least, RAM just squeezes into 32-bit addresses.
Fix debugging via UART0
HAL_QueryPlatform was attempting debug output before the debug UART had been initialised. Since both the PL011 & MiniUART configuration depends on getting/setting firmware values, fix it by just removing the debug prints from HAL_QueryPlatform.
Add GIC interrupt controller support for BCM2838.
* Requires 'enable_gic=1' in config.txt (or Pi4 dtb to be present?) * IRQs are managed via the GIC, FIQs via the BCM2838 FIQ controller * Implemented in s.IntVC6 to avoid making s.Interrupts too confusing. * Previous VC6 interrupt support removed from s.Interrupts * From the OS's perspective, interrupt numbers mostly remain unchanged. However iDev_QA7 interrupts are unavailable, and some of the BCM2838 interrupts have been overlaid ontop of them. * Device drivers must take care to issue HAL_IRQClear, as that is a new requirement for this HAL
Add preliminary PCIe setup steps
Just enough pokes to be able to scan configuration space such that the VIA XHCI controller can be seen by PCI Manager. Note: at present there are no memory or IO windows open, so you can't (yet) see XHCI registers.
Add EtherNIC HAL device
Basic HAL device to expose the GENET peripheral for the driver.
Add remaining PCIe setup steps
Memory window now enabled on the VIA VL805, on-chip bridge set to forward memory transactions, ARM CPU to PCI address space translated. Since we know there's only the VIA chip on the bus, there's no dynamic probing going on like platforms that have PCI sockets. Its BAR settings are derived from defines at the top of PCI.s, so to browse the XHCI capability registers just peek at *Memory p 600100000 +20 Only 1 of the 4 address space translation windows is used.
Extend the PCI address table for 64b
The USB controller is at physical addresses outside 32b range, extend so that it can be picked up by PCI manager, and hence use its SWIs (rather than *Memory P) to see registers. Also write the interrupt number into the config space so it can be picked up. Requires PCI-0_18.
Let VCHIQ know which page list format to use
VCHIQ bulk transfers on Pi 4 use a different page list format, in order to allow for full use of the larger 36bit physical address space. Add a flags word to the VCHIQ HAL device so that we can let the VCHIQ module know what page list format it should use for the machine we're running on.
Make a substitute for MPHI
The MPHI is (ab)used by DWCDriver as a means to do a FIQ downgrade to IRQ, but Pi 4 has no MPHI, so instead we substitute the GIC (as the GICD_ISPENDRn can be used to cause an IRQ from software).
More sensible abstraction
Give the ISPENDRn address directly, since its only the HAL that knows that iDev_GPU is encoded from 64+, rather than having to bake it into DWCDriver.
Update table for 4B revision 1.2
Minor DFM changes resulted in a new revision number https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md but only for 4GB.
Update table for another 4B revision 1.2
The 2GB new minor revision is in the wild. Also tidy HAL_[Ext]MachineID leftovers. Version 0.83. Tagged as 'HAL_BCM2835-0_83'
Correct MAC endianness
The MAC address when encoded as a Dallas unique id is in network byte order. For example, a Risc PC returns OS_ReadSysInfo 4 with r0=&A4123456 r1=&0000 because Acorn's EUI is 00:00:A4. Version 0.84. Tagged as 'HAL_BCM2835-0_84'
Update table for 4B revision 1.4
Detail: The 8GB model has a new PCB revision too. Admin: Submission from David Pitt. Version 0.85. Tagged as 'HAL_BCM2835-0_85'
Add BCM memory barriers
The BCM2711 manual suggests that yes, the BCM2835-style memory barriers are still needed when accessing peripherals
DMA improvements & fixes
* Update DMA & DMA lite channels to work on Pi 4 (HAL_IRQClear calls needed) * Fix DMAL_Abort / DMAL_Reset to reset the channel properly (register muddle meant the old reset code wasn't doing anything - and wasn't a particularly great way of resetting anyway) * Fix DMAL_CurtailListTransfer not working very well * Fix IRQ mapping of channels 11-14, allowing channels 12-14 to be used * Implement support for Pi 4 DMA4 channels. On Pi 4 these are the only channels we'll bother using, since DMA & DMA lite have annoying restrictions on accessing RAM above 1GB
Add some test code
From the deep dark recesses of my hard disc, some Pi 1-era test code for CPU & DMA driven PWM audio, now updated to run on Pi 2, 3, & 4. Version 0.86. Tagged as 'HAL_BCM2835-0_86'
[490] Fix for pull up/down settings
Detail: The offset to the pull up/down clock register was computed in v4 but then v2 was used instead. Version 0.87. Tagged as 'HAL_BCM2835-0_87'
Fix HAL_PhysInfo
CPUDetect was corrupting the pointer needed for storing the table size Version 0.88. Tagged as 'HAL_BCM2835-0_88'
Don't return Pi 4-only GPIO in all enumerations
The pin list table had the Pi 4-only alternates mixed in, the result of which is that enumerating the pins on something other than Pi 4 would return ghost alternates for peripherals that don't exist. Split the pin lists and pick the appropriate one. Also, add 2 missing board revisions that have sneaked out for 2B/3B.
On Pi 4's with no VL805 firmware EEPROM, softload it
Some Pi 4's - for example, the recently released 8GB variant - don't have the firmware EEPROM on the VL805 fitted. The VideoCore loads default firmware on power on in order to do USB booting, but when RISC OS takes over and does a PCI fundamental reset the VL805 ends up with no firmware running. Detect this (by peeking the firmware version) and use the NotifyXHCIReset mailbox message to cause the VideoCore to softload the firmware again. Earlier built PCBs *do* contain a firmware EEPROM and skip the mailbox message. By inspection with a prototype version in BASIC it appears the SCB access needs to be enabled for this to work, it previously wasn't, hence the extra PCI setup step. Also, reduce the PCI reset delay and rename PCIe_RGR1_SW_INIT1_POWERDOWN to more accurately reflect what it does. Version 0.89. Tagged as 'HAL_BCM2835-0_89'
Remove double PCIe bridge mapping
The bridge was incorrectly configured with 2 overlapping mappings (0-&FFFFFFFF and another 0-&8000000). When the VL805 wanted to bus master into main memory the bridge was confused where the transaction should go, causing a master abort to be logged on the secondary side. Reorganise the PCI memory so that only a small window in the top 1GB is actively decoded (we can't bus master above 3GB anyway due to a chip design "feature"), meaning the rest of the secondary address space is forwarded 1:1 to the primary. Further, because the CPU side windows can only be sized in powers of 2, reduce that to 2GB in size.
Remove no longer relevant shared source ReadMe
Add XHCIDriver to the keyboard scan modules
Version 0.90. Tagged as 'HAL_BCM2835-0_90'
Update GPIO pullup/pulldown code to support Pi4
Update GPIO pullup/pulldown code to support Pi4
Detail: * Fixes register corruption in GPIOPullDirection. * Pre-seeds the soft copies with the values from the datasheet (so no need for a function to read them). This should also help other models of Pi which assumed they were all disabled when it seems they are not! * Reworks the SDIO driver to call through to the GPIO so that its softcopy is kept in sync, and so the settings do something on a Pi 4 at all. Admin: Tested on Pi4 and a Pi 3B+. Version 0.91. Tagged as 'HAL_BCM2835-0_91'
Logs for RiscOS/Sources/HWSupport/BCMSupport from BCMSupport-0_07 to BCMSupport-0_13
Update list of mailbox property tags
Detail: hdr/BCMSupport - Add some extra mailbox property tags (mainly memory management related) Admin: Tested on Raspberry Pi 3 Version 0.08. Tagged as 'BCMSupport-0_08'
Add definition for gamma mailbox tag
Detail: hdr/BCMSupport - Add ARM2VC_Tag_SetGamma, which was introduced with recent firmware versions Admin: Tested on Raspberry Pi 3 Version 0.09. Tagged as 'BCMSupport-0_09'
Export clock IDs in Hdr:BCMSupport
Detail: These will be used by future versions of the BCM2835 HAL Version 0.10. Tagged as 'BCMSupport-0_10'
Add another clock ID to Hdr:BCMSupport
Firmware versions starting from 2019-07-08 feature an additional clock ID. See https://github.com/raspberrypi/firmware/issues/1179 Version 0.11. Tagged as 'BCMSupport-0_11'
Add missing HAL_IRQClear call, needed for Pi 4 / GIC
Version 0.12. Tagged as 'BCMSupport-0_12'
Export the SWI numbers for C interface
Add CMHGAUTOHDR line to makefile so the SWI numbers get appended so they can be used from C. Remove excess RES_OBJ, the default name suffices. Version 0.12. Not tagged
Add notify XHCI reset and other messages
Update the list of ARM2VC tags, we need NotifyXHCIReset but might as well list the others anyway. Version 0.13. Tagged as 'BCMSupport-0_13'
Logs for RiscOS/Sources/HWSupport/CD/CDFSDriver from CDFSDriver-2_41 to CDFSDriver-2_42
Fix USE_SCSI_OP version of CD_SCSIUserOp
A fix from André Timmermans: ------------- CD_SCSIUserOp is not working because of a bug in the SWI dispatch code. In this code R11 is converted from a SWI offset nr into a softloadable driver opcode but when later the code checks if the driver implements the opcode or if it must call a local default implementation it compares R11 against SWI offset numbers (minus 1) instead of the driver opcodes. Per chance the number matches for the other opcodes but not for SCSIUserOp and so the softloadable driver is always called in this case even when there is no implementation for the opcode (like in CDFSSoftSCSI). Here is a patch to fix this. ------------- Tested on BB-xM, fixes CD_SCSIUserOp not working with CDFSSoftSCSI. Fixes https://www.riscosopen.org/tracker/tickets/491 Version 2.42. Tagged as 'CDFSDriver-2_42'
Logs for RiscOS/Sources/HWSupport/DualSerial from DualSerial-0_25-4_8_2_16 to DualSerial-0_25-4_8_2_16-1
Fix memory leak on error
Don't leak pchBuffer on error. Found by cppcheck static analysis. Tagged as DualSerial-0_25-4_8_2_16-1 since DualSerial itself is unchanged.
Logs for RiscOS/Sources/HWSupport/FPASC from FPASC-4_36 to FPASC-4_37-1-g6a0dd699
Updated to build using shared makefiles
Detail: Makefile rewritten. All the changes elsewhere reflect the fact that CoreDir, VeneerDir and FileExt are now passed in from the makefile, since that has visibility of filespec differences between OSes. Version 4.36. Not tagged
Actually return error pointer
Spotted by nemo, change by Jon Abbot: https://www.riscosopen.org/forum/forums/4/topics/14289 Version 4.37. Tagged as 'FPASC-4_37'
Replace .gitignore file deleted by build with .gitignore file at root.
These aren't needed to create the directories as the AAsmModule make file does so. Version 4.37. Not tagged
Logs for RiscOS/Sources/HWSupport/PCI from PCI-0_15 to PCI-0_19
Add VID/PID for Pi4 motherboard device
Added VIA chip to table of known vendor/devices on motherboards RISC OS runs on. Trimmed Makefile clean rule duplication (AAsmModule removes rm). Version 0.16. Tagged as 'PCI-0_16'
Make PCI_RAMAlloc more robust
Detail: * Use the new OS_Memory 23 memory reservation system to stop other DAs claiming exclusive use of the physical memory we want to use for the PCI heap * Switch to using the new OS_Heap 8 instead of OS_Heap 7, so that memory alignment can be handled in terms of physical address insead of logical address (avoiding the need to ensure the DA is both logically and physically aligned) * Make sure the DA max size matches the amount of memory we found, so that if we can't get the full 32MB as desired, we don't run the risk of growing the DA into a non physically contiguous chunk of RAM Admin: Tested on BB-xM
Export more command register bit definitions
Version 0.17. Tagged as 'PCI-0_17'
Allow mappings from PCI address space to 64b I/O memory
Extend the previously 32b offsets from PCI to ARM (physical) addresses as retrieved with HAL_PCIAddresses to instead by 64b offsets. After having applied the offset, choose the 64b versions of OS_Memory to map them in. No SWI interfaces are harmed in the making of this change.
Adopt NEC OHCI card lookup
With a view to removing the vendor specific text from the generic OHCI driver at some point in future.
Accept old & new table format
Just in case anyone tries loading this on an old HAL, remap 28 byte address table format to 40 byte. Version 0.18. Tagged as 'PCI-0_18'
Messages update
Add status bit 3, an extra flag bit for PCIe non-MSI interrupts. Add the recent class codes from the PCI-SIG rev 1.11 assignments (Jan 2019 edition). Version 0.19. Tagged as 'PCI-0_19'
Logs for RiscOS/Sources/HWSupport/RTC from RTC-0_01 to RTC-0_02
Bug fixes & improvements
Detail: c/rtclock: - Fix logic bug in rtclock_adjust() regarding detecting expired adjustment periods; an unsigned comparison is being performed, which for '(now-last_duration) <= last_monotonic' could cause adjustment periods to be mistakenly considered to be expired if 'now-last_monotonic' wraps around - Don't apply the P'/(P'-C+W) term if we've switched priority levels (i.e. switched clock sources), or if insufficient time has passed since the last correction was applied, or if the denominator is nonsense. Otherwise we're likely to cause more clock drift instead of less (or a division by zero error). - On startup, set last_priority to our internal RTCAdjust-alike priority level, so that (if nothing else takes charge) the P'/(P'-C+W) term will be applied the first time we suggest a correction (because the way the other variables are initialised means that the adjustment it applies will be correct) - On Service_RTCSynchronised, reset the RTCAdjust-alike logic to reflect the fact that soft & hard RTC are now identical cmhg/RTCHdr - Add Service_RTCSynchronised to list of service call handlers Admin: Tested on BB-xM with battery-backed RTC With NetTime active, the first NetTime-instigated clock correction will now be in the correct direction, instead of most likely going in the wrong direction as was observed previously (due to bad use of P'/(P'-C+W) term) Other scenarios (no NetTime, NetTime being killed, or intermittent Internet access) appear to behave correctly as well Version 0.02. Tagged as 'RTC-0_02'
Logs for RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_21 to SCSISoftUSB-0_28
Update quirks table a bit
It looks like the table came from NetBSD revision 1.39 (despite the claim it was 1.37, perhaps that line wasn't updated?). Go up to 1.45, which is the last revision before code changes to umass.c are needed (which ultimately obsolete many of the quirks). Add back the EASYDISK quirk, this was commented out in SCSISoftUSB-0_06 because the vendor was renamed in usbdevs 1.364, via a define to its new vendor name. Version 0.22. Tagged as 'SCSISoftUSB-0_22'
Bugfix to flush any bytes left in the pipe buffer once read is completed
Detail: In certain circumstances the Sense Status command can be sent more bytes than it requested. When this happened the system stalled until the device was unplugged. (The transfer was not completed because the system said there were still bytes to be read, though the command had read all it required.) Admin: Tested on iMx6 Version 0.23. Tagged as 'SCSISoftUSB-0_23'
Tuned previous commit and resolved potential interlock issue
Detail: More precise detection of sense status error condition, and blocked reentrancy possible condition at start of Glue_Tick(). Previous fix didn't always fix offending device. Admin: Tested on iMx6 Version 0.24. Tagged as 'SCSISoftUSB-0_24'
Resolved a couple of obscure null pointer errors
Detail: A misbehaving USB SDcard adaptor caused unexpected duplication of some structure free calls. Ensured this is protected Admin: tested on iMx6 Version 0.25. Tagged as 'SCSISoftUSB-0_25'
Close the va_list
Found by cppcheck static analysis. Tagged as SCSISoftUSB-0_25-1 since our va_end is an empty macro.
Sync with a known NetBSD copy
Wrap the RISC OS-isms with #ifdef __riscos, and some noisy tab/whitespace changes. Removed sc_sense from umass_softc (never set), was added in SCSISoftUSB-0_07, but appears to be left over from a future version - it'll be back later. Contemporary with umass.c revision 1.95 from NetBSD. Tagged as SCSISoftUSB-0_25-netbsd-1_95.
Update a few versions
Fake implementation of usbd_do_request_flags(), slight collusion with USBDriver due to fudge introduced in 2004 - beware! Contemporary with umass.c revision 1.99 from NetBSD. Tagged as SCSISoftUSB-0_25-netbsd-1_99.
Update a few versions
Contemporary with umass.c revision 1.102 from NetBSD. Tagged as SCSISoftUSB-0_25-netbsd-1_102.
Update a few versions
Contemporary with umass.c revision 1.112 from NetBSD. Tagged as SCSISoftUSB-0_25-netbsd-1_112.
Update a few versions
Contemporary with umass.c revision 1.123 from NetBSD. This is the latest version we can take without needing to make changes to USBDriver to reflect additions to the usb_attach_args struct (short of having a local copy which overrides it). Version 0.26. Tagged as 'SCSISoftUSB-0_26'
Fix for quirky devices which report bad residues
There's a class of devices which manage to get the dCSWDataResidue value wrong (for example, reversed endianness, or just garbage). This causes an error to be propagated up to SCSIDriver in and the initial CDB_CAPACITY to fail (only 8 bytes are expected). The error response is to fill the capacity with 0xFFFFFFFF's, which are then reported as a device of apparently 512TB in size. Take the stance that umass.c revision 1.146 in NetBSD takes, and simply ignore the device's residue; use the actual number of bytes transferred by the USB stack instead. umass.c: Compute dCSWDataResidue locally. global.h: Fix debug build, pointer type of states[] needs constifying. glue.c: Simplify the entry to glue_Tick; it is assumed to be entered with interrupts disabled, and all exits restore the interrupt state, so unconditionally disable - note that this is only needed for debugging when debuglib might enable interrupts for some output types, and thus allow reentrancy via RTSupport. Clean up a few comments in passing. Tested with a known bogus USB stick - now mounts successfully. Ref: Elesar ticket #78A-D76-74EC3. Version 0.27. Tagged as 'SCSISoftUSB-0_27'
Revisit residue override logic
In SCSISoftUSB-0_27 all residue values were replaced with a locally computed one, however this seems to be tripped up by some brands of CD/DVD-ROM drive which stall, resulting in a differently wrong value being placed in the residue. Combat this by only replacing the residue with a locally computed one if it's obviously incorrect (as would be the case for reversed endianness and garbage upper byte). Thanks to Doug Webb, Chris Dale, and Chris Hall for helping test this on a variety of devices at their disposal; this restores some makes of drive that worked with SCSISoftUSB-0_26 and earlier, while also adding classes of quirky ones that now work. Version 0.28. Tagged as 'SCSISoftUSB-0_28'
Logs for RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_14 to SCSISwitch-2_15
Resolved case were pointer could be used while null
Detail: Some obscure error cases exposed an instance where 2 attempts were made to delink a structure. With no check this caused an abort. Admin: tested on iMx6 Version 2.15. Tagged as 'SCSISwitch-2_15'
Logs for RiscOS/Sources/HWSupport/SD/SDCMOS from SDCMOS-0_18 to SDCMOS-0_20
Ensure cmos loaded at boot time in iMx6 if module active
Detail: Writes were saved to a SD based sector, but not read out at module initialisation Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) (overview of change) Detail: (list files and functions that have changed) Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Version 0.19. Tagged as 'SDCMOS-0_19'
Updated various comments. Cleared unneeded mods
Detail: Removed most of the mods inserted in last update. Improved the comments. Admin: tested on iMx6 Version 0.20. Tagged as 'SDCMOS-0_20'
Logs for RiscOS/Sources/HWSupport/SD/SDIODriver from SDIODriver-0_13 to SDIODriver-0_16
Implement generic SDHCI version of GetTMCLK
The new SDHCI controller in Pi 4 actually follows the spec in this regard (allegedly - not yet measured in practice) Version 0.14. Tagged as 'SDIODriver-0_14'
Rename internal types/variables to reflect coming support for non-SDHCI controllers
A lot of state doesn't actually care whether a controller's register layout follows the SDHCI standard or not. To reduce future confusion, most internal types and pointer variables are hereby renamed from 'sdhci' to a more generic 'ctrl', short for 'controller'. Exceptions are sdhci_regset_t and sdhci_writebuffer_t, which are intimately tied to register accesses. Public data types and definitions (and the names of the exported header files) retain the original names, for the sake of not breaking all the other components that rely on them.
Expose sdhci_op_state_t struct
This is made up of 11 former members of sdioop_t. These will become part of the new "soft" controller API, so refactor the code to expose them as a new struct type, and use that internally.
Reorganise state variables internal to op_poll into separate struct
Three members of sdioop_t are particularly closely tied to the state machine for SDHCI controllers, and so are likely to differ for soft controllers. Create sdhci_op_t to hold these, and introduce a variable-length array member at end of sdioop_t to hold it. Allocate sdioop_t more dyamically in preparation for soft controllers.
Refactor op_poll()
This is now split into an outer function that does locking, iterates over the operation list and interacts with the OS and SDIODriver's clients, and an inner function op_poll_sdhci() which codifies the wait states of a standards-compliant SDHCI controller and does the register bashing. This internal API is now pretty close to what is required for a soft controller.
Add support for "soft" HAL devices
These are identified by a different value in the major version field, and are intended for SD controllers that implement a register set that does not follow the SDHCI standard. All interaction with the controller is performed via function calls into such a HAL device, and a few of these are new. A couple of other changes that were made in passing: * device_added() now calls set_activity() and thereby avoids a branch through zero if a device indicates that the SDHCI host_control1 register should be used for setting the activity indicator. * HAL device deactivate entry is now called before OS_ReleaseDeviceVector so that it can be used to mask interrupts in the host controller. Since no current versions of the module use interrupts, this is a safe change.
Add Debug switch
Add SoftHALDevice memory request routines
Be more selective searching for a suitable HALDevice
Version 0.15. Tagged as 'SDIODriver-0_15'
Implement generic SDHCI version of SetSDCLK
The new SDHCI controller in the Pi 4 appears to follow the spec in this regard also.
Bugfix to generic SDHCI version of SetBusWidth
A following register read (after exit from the function) could bypass the write buffer. Version 0.16. Tagged as 'SDIODriver-0_16'
Logs for RiscOS/Sources/HWSupport/Sound/Sound0HAL from Sound0HAL-1_85 to Sound0HAL-1_88
Made aware of another product that doesn't provide a sound driver till later.
Module will not then die when initialised Detail: Admin: Version 1.86. Tagged as 'Sound0HAL-1_86'
Improved startup with transient HAL sound device
Detail: A previous mod provided a compile time switch to leave SoundDMA present even when there was no HAL audio device. This has proved unnecessary, so has been removed. Instead, once the HAL device has been made available one should rmreinit in order; SoundDMA, SoundChannels, SoundScheduler, and then WaveSynth, Percussion, and StringLib. This ensures that the module dependant interactions are reinitialised. Additionally there was a possibility that if no HAL audio devices were available at startup it was possible to get a null pointer error under some circumstances. Admin: tested in iMx6 with other HAL audio devices both enabled and disabled Version 1.87. Tagged as 'Sound0HAL-1_87'
Allow module initialisation to succeed if there is no audio device present
Detail: Since we can cope with audio devices dynamically being added and removed once initialisation is complete, it seems sensible to also cope with the situation where no devices are available on startup. s/Sound0 - Rearrange Initialise_Module so that if no device is found on startup, the initial state of the module will be the same as if a device had been found but then went missing: configuration SWIs will continue to function, the next device to appear will automatically be selected as the active device (with sound automatically turning on), and manual Sound_Enable calls will produce an error saying no device is present. These changes should also allow the module to cope with situations where other support modules like DMAManager, RTSupport, or VFPSupport are (temporarily) unavailable on startup. Admin: Tested on iMX6 Version 1.88. Tagged as 'Sound0HAL-1_88'
Logs for RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_41 to Sound1-1_42
Cope with SoundDMA being reinitialised
Detail: s/Sound1 - Adapt service call handler so that on Service_SoundLevel0Alive we reregister ourselves as the sound channel handler. (Also, fix Level0Alive handling to occur in a callback so that the level 0 SWIs are actually available) Admin: Tested on iMX6 This means that voice generators will continue to work following *RMReinit of SoundDMA, unlike previously where a reinit of SoundChannels would have been required (followed by a reinit of the standard voice generators) Version 1.42. Tagged as 'Sound1-1_42'
Logs for RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_32 to Sound2-1_33
Cope with SoundDMA being reinitialised
Detail: s/Sound2 - Adapt service call handler so that on Service_SoundLevel0Alive we reregister ourselves as the sound channel handler Admin: Tested on iMX6 This means that (combined with Sound1-1_42) *RMReinit of SoundDMA while Maestro is playing music will not halt playback (However, Maestro won't spot that playback has been switched from 8 channels back to the default of 1 channel) Version 1.33. Tagged as 'Sound2-1_33'
Logs for RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver from DWCDriver-0_34 to DWCDriver-0_37
Enable split interrupt transactions
Detail: Reflects change made here https://github.com/raspberrypi/linux/commit/7956536a3d78ba0ef8ec990651b315664ed70f90 after wider testing by the Linux community. Admin: Submission from Colin Granville. Version 0.35. Tagged as 'DWCDriver-0_35'
Make a substitute for MPHI
The MPHI is (ab)used by DWCDriver as a means to do a FIQ downgrade to IRQ, but Pi 4 has no MPHI, so instead we substitute the GIC. This is essentially a GIC based equivalent to the changes in https://github.com/raspberrypi/linux/commit/0a1cf0d. Apply these diffs then, in dwc_otg_riscos.c: * deduce use_swirq by noticing the MPHI base happens to have all 13 LSB clear whereas the GIC doesn't, in just as horrendously Pi specific manner as Linux looking at the size of the memory region to deduce same * setup the pointers to swirq_set and swirq_clr at GICD_ISPENDRn GICD_ICPENDRn Version 0.36. Tagged as 'DWCDriver-0_36'
Remove some redundant #includes
TCPIPLibs-5_69's version of sys/time.h now includes the TCPIPLibs version of sys/types.h, which contains duplicate/conflicting definitions of CLib's clock_t & time_t from time.h. DWCDriver's port.c was including both sys/time.h and time.h, which means that for the past few weeks Norcroft has been throwing errors about the duplicate definitions (but still producing a valid object). However both of those includes appear to be redundant, so just remove them. Resulting binary is unchanged. Version 0.36. Not tagged
Change to unsigned physical addresses
The prototype for vtophys returns an unsigned value, update this driver to match the port header file from USBDriver-1_31. Version 0.37. Tagged as 'DWCDriver-0_37'
Logs for RiscOS/Sources/HWSupport/USB/USBDriver from USBDriver-1_28 to USBDriver-1_31
Fix for alternate selection
Detail: 1) If the alt setting had been changed from 0 it couldn't be changed back to 0. 2) The alt value that usbd_set_interface takes should be an index into the number of alternate settings (altidx) not idesc->bAlternateSetting. 3) usbd_set_interface returns an error (USBD_IN_USE) if pipes are open on the interface when you try to change it. We should return this error if the alternate setting can't be changed as the alternate setting would be wrong. Replace uses of usbd_set_interface() with a new function which correctly maps alternate number to alternate index, and propagates errors back to the caller. Admin: Submission from Colin Granville. Version 1.29. Tagged as 'USBDriver-1_29'
Protect local PointerReason_WheelChange definition
We want to add PointerReason_WheelChange to Hdr:Pointer, but doing so will make USBDriver upset. Prematurely add a #ifndef guard to prevent this. Version 1.29. Not tagged
Don't send scrollwheel events to the Wimp
All scroll wheel events are now sent to PointerV 9 (WheelChange), along with any extra mouse buttons. This will allow us to centralise Wimp scrollwheel logic in the WindowScroll module. Version 1.30. Tagged as 'USBDriver-1_30'
Update USB device database
usbdevs from NetBSD 1.783. usb_quirks.c from NetBSD 1.83, and also rename USB_PRODUCT_QUALCOMM_CDMA_MSM to account for the vendor name changing in usbdevs.
Change to unsigned physical addresses
The prototype for vtophys returns an unsigned value (specifically an unsigned long for ARM in src/sys/arch/arm/include/types.h though for us int and long are both the same). This ensures any promotions to wider than 32b don't end up sign extending. Version 1.31. Tagged as 'USBDriver-1_31'
Logs for RiscOS/Sources/HWSupport/VCHIQ from VCHIQ-0_10 to VCHIQ-0_14
Close the va_list, update VCHIQ a bit
Updated to VCHIQ sources to rev 81a8b5427b9a85c5cf1f437346e76d6c643621b3. This gets 2 fixes from static analysis (bool compare mistake line 324 of vchiq_2835_arm.c, and potential NULL pointer dereference line 263 of vchiq_core.c). Porting notes: * smp_mb|wmb|rmb() memory barrier functions do global dsb() equivalent * vchi_msg_queuev() has been removed from the user API, so we now emulate that by calling the non vectored copy multiple times * vchi_msg_queue() and vchi_msg_queuev() no longer take a 'flags' parameter (was R3), so we mimick the only previous use of this parameter to throw a warning in swis.c just in case it comes back again in future * vchi_msg_queue() and vchi_msg_queuev() no longer take a 'msg_handle' parameter (was R4), we ignore this like the previous implementation did, but keep it in the SWI API just in case it comes back again in future Also: vchiq_riscos.c: Add missing va_end's. Makefile: Remove obsolete VCOS_VERIFY_BKPTS switch. Tested on a Pi 2B. Sound and video and vcgencmd still work, which at a cursory search of the sources are the things using the VCHIQ_MsgQueue[V] SWIs. Version 0.11. Tagged as 'VCHIQ-0_11'
Fix module to be unkillable
Detail: c/cmodule - Fix typo in module_final which meant that unfinished shutdown code was used instead of the "you can't kill me" error being returned Admin: Tested on Raspberry Pi 3 Version 0.12. Tagged as 'VCHIQ-0_12'
Convert to use synclib. Fix deadlock issue.
Detail: Makefile - Link to synclib c/cmodule - Initialise synclib on startup c/swis - Remove redundant #include c/vchiq_riscos, h/riscosbits - Replace the custom mutex, spinlock, and atomic operations with their synclib equivalents. Change semaphore implementation to use a spinlock instead of disabling IRQs. Fix up() to only sleep if IRQs are enabled, since if IRQs are disabled it could be a sign that a spinlock is held (fixes deadlock issue if certain VCHIQ operations are performed from high-priority RTSupport threads) s/asm - Remove old atomic & spinlock functions Admin: Tested on Raspberry Pi 3B Version 0.13. Tagged as 'VCHIQ-0_13'
Fix bulk transfers on Pi 4
VCHIQ bulk transfers on Pi 4 use a different page list format, in order to allow full use of the larger 36bit physical address space. Update our vchiq_prepare_bulk_data implementation to use this new format when necessary. Version 0.14. Tagged as 'VCHIQ-0_14'
Logs for RiscOS/Sources/Internat/Inter from Inter-1_69 to Inter-1_69-1-g08cc6462
Add BFont UCS table
Not tagged, since DoBFont is {FALSE}, but at least the labels exist so it could be assembled.
Logs for RiscOS/Sources/Internat/Messages from Messages-1_12 to Messages-1_12-1-ge273deeb
Look in all Resources not just the 1st
Don't assume !Help puts its resources in 'Resources', depending on where it is in the ROM listing it might be in one of the numerically suffixed ones. Without this, the makefile for Help2 has to have a corresponding assumption hardwired into it. Version 1.12. Not tagged
Logs for RiscOS/Sources/Internat/Territory/TerritoryModule from Module-0_61 to Module-0_63
Addition of Iceland, Portugal & Netherlands Territory modules
Detail: Territory tables to general Icelandic, Portuguese and Netherlands territories using the shared territory module code. Admin: Based on tables extracted from the original modules by Detlef Thielsch and Andreas Feldner, special thanks to them for releasing these under a BSD licence. Submission from Martin Avison, who reformatted the tables into a form compatible with the other territories. Tested on Iyonix with RISC OS v5.22 and v5.24, and RISC PC with RISC OS v4.39. Version 0.62. Tagged as 'Module-0_62'
Further territory updates
Detail: Correct Netherland/Portugal/Iceland working week and thousands and decimal point punctuation. Submission from Martin Avison. Add missing reverse lookup entries for TR50 (China) TR51 (Brazil) TR53 (Korea) TR54 (Taiwan) to the respective Territory resources. Change order of concatenation of Messages+Territory in the Makefile so that the Territory names remain untokenised. Admin: Built, but not tested. Version 0.63. Tagged as 'Module-0_63'
Logs for RiscOS/Sources/Kernel from Kernel-6_01-1 to Kernel-6_43-1
Merge Kernel-5_86
Detail: hdr/EtherDevice: Merge in Kernel-5_86 to keep branch up-to-date with MAIN Admin: Untested Version 5.86, 4.129.2.1. Tagged as 'Kernel-5_86-4_129_2_1'
Initial SMP changes
Detail: This commit lays some of the groundwork for SMP support within the HAL, kernel, and OS. Makefile, hdr/HALDevice, hdr/DBellDevice - Add definitions for a doorbell HAL device, to allow CPU cores to signal each other via interrupts hdr/HALEntries - Repurpose HAL_Matrix and HAL_Touchscreen entry points for new SMP-related entry points. Add a couple of IRQ-related definitions. hdr/KernelWS - Boost MaxInterrupts to 256 hdr/Options - Add new SMP build switch to control whether the kernel is built in SMP-friendly mode or not. SMP-friendly kernels should still run on single-core machines, but may behave slightly differently. s/ARMops - Make as many ARMops SMP-safe as possible, relying on hardware support for broadcasting of cache/TLB maintenance operations s/ExtraSWIs - Make SMP-friendly full OS_SynchroniseCodeAreas only sync application space and the RMA (full-cache IMB not really possible with SMP) s/NewIRQs - Update IRQ despatcher comments to (hopefully) reflect reality Docs/SMP/HAL, Docs/SMP/IRQ - Add documentation covering the new HAL calls and IRQ behaviour Admin: Tested on Raspberry Pi 2, 3, OMAP4, iMX6 Version 5.86, 4.129.2.2. Tagged as 'Kernel-5_86-4_129_2_2'
Add OS_Memory 19, which is intended to replace the OS_Memory 0 "make uncacheable" feature, when used for DMA
Detail: Making pages uncacheable to allow them to be used with DMA can be troublesome for a number of reasons: * Many processors ignore cache hits for non-cacheable pages, so to avoid breaking any IRQ handlers the page table manipulation + cache maintenance must be performed with IRQs disabled, impacting the IRQ latency of the system * Some processors don't support LDREX/STREX to non-cacheable pages * In SMP setups it may be necessary to temporarily park the other cores somewhere safe, or perform some other explicit synchronisation to make sure they all have consistent views of the cache/TLB The above issues are most likely to cause problems when the page is shared by multiple programs; a DMA operation which targets one part of a page could impact the programs which are using the other parts. To combat these problems, OS_Memory 19 is being introduced, which allows DMA cache coherency/address translation to be performed without altering the attributes of the pages. Files changed: - hdr/OSMem - Add definitions for OS_Memory 19 - s/MemInfo - Add OS_Memory 19 implementation Admin: Tested on Raspberry Pi 3, iMx6 Version 5.86, 4.129.2.3. Tagged as 'Kernel-5_86-4_129_2_3'
Merge in latest changes from main branch
Version 5.88, 4.129.2.4. Tagged as 'Kernel-5_88-4_129_2_4'
Fix global OS_SynchroniseCodeAreas. ARMop tweaks.
Detail: s/ExtraSWIs - Fix global OS_SynchroniseCodeAreas using the wrong appspace size; would have resulted in appspace only being partially synced if some pages were mapped out due to lazy swapping s/ARMops, s/ExtraSWIs, s/MemMap2 - Simplify code by making DCache_LineLen / ICache_LineLen store the actual line length values on ARMv7+ instead of the log2 values. Optimise SMP I-cache invalidation by allowing it to do a global invalidate. Ensure all ARMv7+ range checks use LO instead of NE, to avoid any problems with mismatched I/D line lengths (can't be sure the op range was rounded to the larger of the two) Admin: Tested on iMX6 Version 5.88, 4.129.2.5. Tagged as 'Kernel-5_88-4_129_2_5'
Merge latest changes from main branch
Version 5.89, 4.129.2.6. Tagged as 'Kernel-5_89-4_129_2_6'
Merge in latest changes from main branch
Version 5.97, 4.129.2.7. Tagged as 'Kernel-5_97-4_129_2_7'
Back to odd numbered development
Version 6.02. Tagged as 'Kernel-6_02'
Increase number of vectors supported by the kernel to 96.
Version 6.03. Tagged as 'Kernel-6_03'
Disable error block validity checks
Detail: The error block checks introduced in Kernel-5_35-4_79_2_313 are generating a few too many false positives and edge cases, so take the safe option of just disabling them rather than trying to tweak the rules further. Error pointers will still be checked, but the content of the error blocks will not. hdr/Options - Add CheckErrorBlocks switch so we can easily turn the code back on again in the future if necessary s/Kernel - Switch out all the code relating to error number checks, except for the dummy load of the first word of the error block, since that's still useful as a pointer validity check hdr/KernelWS - Revise SWIDespatch_Size definition so it's easier for it to cope with the various factors which may affect the despatcher size Admin: Tested on PandaBoard Relevant discussion: https://www.riscosopen.org/forum/forums/11/topics/11133 Version 6.04. Tagged as 'Kernel-6_04'
Added HALDeviceID_RTC_PCF8523
Detail: Admin: Version 6.05. Tagged as 'Kernel-6_05'
Merge in latest changes from main branch
Version 6.05, 4.129.2.8. Tagged as 'Kernel-6_05-4_129_2_8'
Update mode variable definitions
Detail: hdr/VduExt: - Introduce mode variable 13, for specifying the minimum number of screen banks that are guaranteed to be available. Eventually the kernel will make use of this during mode vetting & selection, to give programs a simple and reliable way of selecting banked screen modes. Currently however it's only supported by VideoOverlay and the corresponding GraphicsV overlay APIs. - Extend the mode flags to allow display rotation & flipping to be specified. This is used to indicate that the framebuffer accessed by the CPU is not in the same orientation as what the user is seeing. Again, currently this is only supported by VideoOverlay and the corresponding GraphicsV overlay APIs. Admin: Tested on OMAP3, OMAP4 Version 6.06. Tagged as 'Kernel-6_06'
Various kernel cleanups
Detail: NewReset.s: Remove warning about soft reset, this is not supported any longer MsgCode.s: Reload LR after potentially changing mode PMF/osinit.s: Delete vestiges of soft reset support Admin: Submission from Timothy Baldwin. Version 6.07. Tagged as 'Kernel-6_07'
Simplify initial AplSpace claim
Detail: As the application slot is now a normal dynamic area, there's no need to manipulate the CAM directly. Convert FudgeSomeAppSpace into a OS_ChangeDynamicArea SWI followed by memset(). ChangeDyn.s: Offset by 32k to account for the -32k that dynamic area -1 has. NewReset.s: Delete FudgeSomeAppSpace and replace as above. Admin: Submission from Timothy Baldwin. Version 6.08. Tagged as 'Kernel-6_08'
Merge latest changes from HEAD
Version 6.08, 4.129.2.9. Tagged as 'Kernel-6_08-4_129_2_9'
Allow SMP build switch to be overridden by components file
Detail: hdr/Options - The setting of the SMP switch can now be controlled by specifying the correct ASFLAGS, e.g. ASFLAGS="-PD \"SMP SETL {FALSE}\"" Admin: Untested Version 6.08, 4.129.2.10. Tagged as 'Kernel-6_08-4_129_2_10'
Merge SMP branch to trunk
Detail: Since the current SMP changes are fairly minor, and the trunk is seeing most development, from a maintenance perspective it makes sense to merge the changes to trunk. This will also make sure they get some wider testing ready for when the next round of SMP development takes place. Changes: - Docs/SMP - New docs folder describing SMP-related changes to the HAL and interrupt handling. Some of the IRQ changes can also be taken advantage of by single-core devices, since it introduces a way to describe which interrupt sources can be routed to IRQ & FIQ - Makefile, hdr/DBellDevice, hdr/HALDevice - New HAL device for an inter-processor software-generated interrupt source ("doorbell") - hdr/HALEntries - Reuse the unused matrix keyboard & touchscreen HAL entry points for the new IRQ handling & SMP-related HAL calls - hdr/KernelWS - Bump up MaxInterrupts - hdr/OSMem, s/MemInfo - Introduce OS_Memory 19, to allow for DMA to/from cacheable memory without actually altering the cacheability of the pages (which can be even more tricky in SMP systems than it is in uniprocessor systems) - hdr/Options - Introduce SMP build switch. Currently this controls whether the ARMops will operate in "SMP-friendly" mode or not (when running on MP processors) - s/ARMops, s/MemMap2 - Introduce the ARMv7MP ARMop implementation. Simplify DCache_LineLen / ICache_LineLen handling for WB_CR7_Lx so that it's the plain value rather than log2(n)-2 - s/ExtraSWIs - If ARMops are in SMP-friendly mode, global OS_SynchroniseCodeAreas now only syncs application space and the RMA. This is because there is no trivial MP-safe global IMB operation available. This will also make global OS_SynchroniseCodeAreas significantly slower, but the documentation has always warned against performing a global IMB for just that reason, so code that suffers performance penalties should really try and switch to a ranged IMB. - s/NewIRQs - Update some comments regarding IRQ handler entry/exit conditions Admin: Untested Version 6.09. Tagged as 'Kernel-6_09'
Fix OS_Memory 0 "make temporarily uncacheable" not reporting errors
Detail: s/MemInfo - The wrapper around OS_Memory 0 introduced in Kernel-5_35-4_79_2_311 was preserving the wrong PSR field on exit, causing any error generated by the core code to be lost. Admin: Tested on Iyonix Fixes *screensave saving mostly white pixels (address translation for "external" VRAM should have failed and caused ADFS to fall back to a bounce buffer) Is also likely to be the cause of https://www.riscosopen.org/forum/forums/5/topics/11713 (address translation should have failed for soft ROM) Version 6.10. Tagged as 'Kernel-6_10'
Evict ECFIndex and PalIndex from VDU workspace
Detail: ECFIndex and PalIndex claim to be mode variables, but it's impossible for extension modes to specify their values. Since they're easy to calculate from the ModeFlags and Log2BPP values, drop them from the mode workspace (+ table of builtin modes) and calculate them on the fly instead. File changes: - hdr/KernelWS - Drop ECFIndex & PalIndex from workspace - s/vdu/vdumodes - Adjust workspace definition, drop ECFIndex & PalIndex values from VWSTAB - s/vdu/vdudriver - Remove now-redundant copy loop from ModeChangeSub. Remove code from GenerateModeSelectorVars that sets up the ECFIndex & PalIndex values on the stack - s/vdu/vdugrafl - Adjust copy loop in SwitchOutputToSprite/Mask - s/vdu/vdupalette, s/vdu/vdupalxx - Add GetPalIndex routine to generate PalIndex on the fly. Drop the obsolete 16bpp palette/gamma table and shuffle the other entries to simplify GetPalIndex a bit. - s/vdu/vduplot - Add GetECFIndex routine to generate ECFIndex on the fly. Also, fix things so that mode 0 isn't the only rectangular-pixel mode which uses the special rectangular-pixel ECF patterns (index 0 vs. index 4). Fiddle with ExportedHLine a bit to avoid an out-of-range ADR. - s/NewReset - Fix UAL warning for MOV R0, AppSpaceStart. Adjust memset to not assume 512KB is the correct amount Admin: Tested on Raspberry Pi 3 Version 6.11. Tagged as 'Kernel-6_11'
Fix OS_Hardware 3 to be re-entrant
Detail: s/HAL - OS_Hardware 3 (remove HAL device) will now re-scan the device list for the device following the Service_Hardware call, so that the device list won't become corrupt if the service call triggers addition/removal of devices. Admin: Tested on iMX6 *HDMIOff now correctly removes the HDMI audio device and SoundDMA's software mixer device (SoundDMA removes mixer in response to the HDMI audio device vanishing, but re-entrancy bug meant that the HDMI device was left on the list) Note that this only covers re-entrancy via Service_Hardware. OS_Hardware 2/3/4/5 are not re-entrant from other locations (e.g. IRQ handlers or memory allocation service calls). Version 6.12. Tagged as 'Kernel-6_12'
Improve detection of invalid/unsupported screen modes
Detail: s/vdu/vdudriver - When using mode selector blocks, don't allow the system to switch into double-vertical, double-pixel, or BBC-gap modes which are in colour depths unsupported by the kernel Admin: Tested on BB-xM Version 6.13. Tagged as 'Kernel-6_13'
Nightly beta builds leapfrog RISC OS 5.26
Attempt to tidy up substitute screen mode selection logic
Detail: Over the years the OS's substitute screen mode selection logic has grown to be a tangled mess, and the logic it does implement isn't always very useful. Additionally, the kernel is structured in such a way that it can be hard for modules to override it. This set of changes aims to fix the many of the problems, by doing the following: - Moving all substitute mode selection logic out of the core VDU driver code and into a Service_ModeTranslation handler. This means you now only have one place in the kernel to look instead of several, and modules can override the behaviour by claiming/blocking the service call as appropriate. - Moving handling of the built-in VIDC lists out of the core VDU driver code and into a Service_ModeExtension handler. This means programs can now inspect these VIDC lists by issuing the right service call (although you are essentially limited to lists which the GraphicsV driver is OK with) - Moving *TV interlace & offset adjustment logic into the Service_ModeExtension handler, since they're legacy things which can be handled more cleanly for MDF/EDID (and the old code was poking memory the kernel didn't own) - Adding a Service_EnumerateScreenModes implementation, so that if you end up in the desktop with ScreenModes non-functional, the display manager at least has something useful to show you - Enhancing the handling of the built-in numbered modes so that they are now available in any colour depth; the Service_ModeExtension handler (and related handlers) treat the builtin VIDC lists as a set of mode timings, not a discrete set of modes - Substitute mode selection logic is a complete re-write. Instead of trying a handful of numbered fallback modes, it now tries: - Same mode but at higher colour depths - Same mode but at lower colour depths - Alternate resolutions (half-width mode with no double-pixel if original request was for double-pixel, and default resolution for monitor type) - Combined with the logic to allow the builtin VIDC lists to be used at any colour depth, this means that the kernel should now be able to find substitute modes for machines which lack support for <=8bpp modes (e.g. OMAP5) - Additionally the mode substitution code will attempt to retain as many properties of the originally requested mode as possible (eigen values, gap mode type, etc.) Other improvements: - The kernel now actually vets the builtin VIDC lists instead of assuming that they'll work (which also means they'll have the correct ExtraBytes value, where applicable) - The kernel now uses GraphicsV 19 (VetMode2) to vet the mode during the mode switch process, using the result to detect where the framebuffer will be placed. This allows for GraphicsV drivers to switch between DA 2 and external framestores on a per-mode basis. - The kernel now supports mode selectors which specify LineLength values which are larger than necessary; this will get translated to a suitable ExtraBytes control list item (+ combined with whatever padding the driver indicates is necessary via the VetMode2 result) File changes: - hdr/KernelWS - Reserve space for a VIDC list, since the Service_ModeExtension implementation typically can't use the built-in list as-is - s/Arthur3 - Issue Service_ModeFileChanged when the configured monitor type is changed, so that DisplayManager + friends are aware that the set of available modes has changed - s/GetAll - Fiddle with GETs a bit - s/MemMap2 - Extra LTORG - s/NewIRQs - Small routine to install/uninstall false VSync routine (previously from PushModeInfo, which wasn't really the appropriate place for it) - s/Utility - Hook up the extra service call handlers - s/vdu/legacymodes - New file containing the new service call implementations, and some related code - s/vdu/vdudecl - Move mode workspace definition here, from vdumodes - s/vdu/vdudriver - Remove assorted bits of mode substitution code. Plug in new bits for calling GraphicsV 19 during mode set, and deal with ExtraBytes/LineLength during PushModeInfo - s/vdu/vdumodes - Move some workspace definitions to s/vdu/vdudecl. Tweak how the builtin VIDC lists are stored. - s/vdu/vduswis - Rip out more mode substitution code. Issue Service_ModeFileChanged when monitor type is changed by OS_ScreenMode. Admin: Tested on Raspberry Pi 3, Iyonix, IGEPv5 Version 6.14. Tagged as 'Kernel-6_14'
Fix dodgy ranged ICache cleans when using ARMv7MP ARMops
Detail: s/ARMops - If the ICacheInvalidate macro was told to pull a2, it would pull it before invoking ICache_InvalidateRange, causing the end address of the range to be lost. Avoid this by only pulling the registers after the ranged call. Also optimise MMU_ChangingEntry to go straight to ICache_InvalidateRange instead of doing a redundant range size check. Admin: Tested on OMAP5 Potentially fixes lockup/long stall seen when using PhotoDesk, reported by Willi Theiss Version 6.15. Tagged as 'Kernel-6_15'
Fix FindOKMode not recovering properly from unsupported VIDC lists
Detail: s/vdu/vduswis - Fix 18 year old register corruption bug in FindOKMode which would prevent it from falling back to Service_ModeTranslation if Service_ModeExtension returned a VIDC list but the VIDC list was rejected by the GraphicsV driver s/vdu/vdudriver - Also, change a couple of error cases in ModeChangeSub so that they use the "Screen mode not available" error instead of the incorrect "Not enough screen memory" error. Admin: Tested on Raspberry Pi 3 Fixes issue reported on forums where if AnyMode is loaded, numbered modes in unsupported colour depths weren't being replaced with substitutes (although note that there are still some AnyMode-related issues to resolve) https://www.riscosopen.org/forum/forums/4/topics/12773 Version 6.16. Tagged as 'Kernel-6_16'
Service_ModeExtension tweak + docs update
Detail: s/vdu/legacymodes - Make the Service_ModeExtension implementation automatically use ExtraBytes to request that the row length is a multiple of a word (since things fail with non-word aligned rows) hdr/VIDCList - Un-deprecate SyncPol bits 2 & 3 and improve the comments to indicate the difference between SyncPol interlace and control list interlace Admin: Tested on BB-xM Version 6.17. Tagged as 'Kernel-6_17'
Palette/gamma optimisations
Detail: s/vdu/vdupalxx: - Fix conditional code sequence in PV_BulkWrite which meant that the greyscale palette flag was being recalculated when the border or pointer colour was changed. - Change PV_1stFlashState / PV_2ndFlashState to act as NOPs in true colour modes, which helps to avoid regular redundant gamma table updates (due to the flashing colour logic in the VSync handler). Admin: Tested on Raspberry Pi 3 Version 6.18. Tagged as 'Kernel-6_18'
Don't pointlessly doubly-map external framestores
Detail: s/vdu/vdudriver - When mapping external framestores, only double-map them if the driver supports hardware scrolling. Avoids wasting IO address space, and reduces IO space fragmentation if the framestore address changes Admin: Tested on Raspberry Pi 3 Version 6.19. Tagged as 'Kernel-6_19'
Set BEN bit in SCTLR
Without this, some CPUs (including Cortex-A72) take the undefined instruction trap when encountering any CP15-encoded barrier instructions. Requires RiscOS/Sources/Programmer/HdrSrc!1 Version 6.20. Tagged as 'Kernel-6_20'
Move former ControlList_Interlaced item into SyncPol flags
ControlList_Interlaced is taken to have meant "output interlaced sync on H/V" and "configure DMA to show alternate lines in the framestore on alternate fields", therefore SyncPol flags mean: b43 00 = 'normal' progressive scan 01 = interlaced sync, but both fields show the same image 10 = (invalid) 11 = interlaced sync, fields use alternate lines from the image Version 6.21. Tagged as 'Kernel-6_21'
Support permanent mapping of IO above 4GB using supersections
This is facilitated by two extended calls. From the HAL: * RISCOS_MapInIO64 allows the physical address to be specified as 64-bit From the OS: * OS_Memory 21 acts like OS_Memory 13, but takes a 64-bit physical address There is no need to extend RISCOS_LogToPhys, instead we change its return type to uint64_t. Any existing HALs will only read the a1 register, thereby narrowing the result to 32 bits, which is fine because all existing HALs only expected a 32-bit physical address space anyway. Internally, RISCOS_MapInIO has been rewritten to detect and use supersections for IO regions that end above 4GB. Areas that straddle the 4GB boundary should also work, although if you then search for a sub-area that doesn't, it won't find a match and will instead map it in again using vanilla sections - this is enough of an edge case that I don't think we need to worry about it too much. The rewrite also conveniently fixes a bug in the old code: if the area being mapped in went all the way up to physical address 0xFFFFFFFF (inclusive) then only the first megabyte of the area was actually mapped in due to a loop termination issue. Requires RiscOS/Sources/Programmer/HdrSrc!2
Support temporary mapping of IO above 4GB using supersections
Add a new reason code, OS_Memory 22, equivalent to OS_Memory 14, but accepting a 64-bit physical address in r1/r2. Current ARM architectures can only express 40-bit or 32-bit physical addresses in their page tables (depending on whether they feature the LPAE extension or not) so unlike OS_Memory 14, OS_Memory 22 can return an error if an invalid physical address has been supplied. OS_Memory 15 should still be used to release a temporary mapping, whether you claimed it using OS_Memory 14 or OS_Memory 22. The logical memory map has had to change to accommodate supersection mapping of the physical access window, which needs to be 16MB wide and aligned to a 16MB boundary. This results in there being 16MB less logical address space available for dynamic areas on all platforms (sorry) and there is now a 1MB hole spare in the system address range (above IO). The internal function RISCOS_AccessPhysicalAddress has been changed to accept a 64-bit physical address. This function has been a candidate for adding to the kernel entry points from the HAL for a long time - enough that it features in the original HAL documentation - but has not been so added (at least not yet) so there are no API compatibility issues there. Requires RiscOS/Sources/Programmer/HdrSrc!2
Support supersection-mapped memory in OS_Memory 24
To achieve this: * DecodeL1Entry and DecodeL2Entry return 64-bit physical addresses in r0 and r1, with additional return values shuffled up to r2 and r3 * DecodeL1Entry now returns the section size, so callers can distinguish section- from supersection-mapped memory * PhysAddrToPageNo now accepts a 64-bit address (though since the physical RAM table is currently still all 32-bit, it will report any top-word-set addresses as being not in RAM) Version 6.22. Tagged as 'Kernel-6_22'
Fix a couple of RISCOS_MapInIO bugs
Detail: - s/HAL - Fix ADD v. SUB muddle that could prevent addresses from being rounded down correctly. Fix incorrect logical address being returned to caller on pre-ARMv6 machines due to PageTableSync corrupting a1. - s/NewReset - Initialising the CMOS RAM cache while in the middle of setting up the processor vectors feels a bit silly. Move the code to just afterwards so that it feels a bit safer, and so that early crashes are easier to debug (processor vectors in stable state) Admin: Tested on Iyonix. Fixes ROM softload failure reported on forums: https://www.riscosopen.org/forum/forums/11/topics/14749 Version 6.23. Tagged as 'Kernel-6_23'
Allow runtime adjustment of AplWorkMaxSize
Detail: This adds a new OS_DynamicArea reason code, 26, for adjusting AplWorkMaxSize at runtime. This allows compatibility tools such as Aemulor to adjust the limit without resorting to patching the kernel. Any adjustment made to the value will affect the upper limit of application space, and the lower limit of dynamic area placement. Attempting to adjust beyond the compile-time upper/default limit, or such that it will interfere with existing dynamic areas / wimpslots, will result in an error. Relevant forum thread: https://www.riscosopen.org/forum/forums/11/topics/14734 Admin: Tested on BB-xM, desktop active & inactive Version 6.24. Tagged as 'Kernel-6_24'
Remove duplicated documents
Between RISC OS 3.6 and 3.7 the directory was renamed from Doc to Docs and was duplicated during CVS import. Fix by deleting Doc. Identical files remain in Docs. Version 6.24. Not tagged
Adjust exception error messages to show correct address.
Detail: Add offset parameter to DumpyTheRegisters in R4 Shuffle internal register use up one Set R4 to offset before calling. Arbitrary offset of 0 for unreachable address exception handler. Admin: Tested in RPCEmu.
Adjust undefined instruction error message to show correct address on Thumb.
Version 6.25. Tagged as 'Kernel-6_25'
Fix heap testbed
Detail: Kernel-5_44 tweaked the heap manager to try and avoid creating small free blocks. Adjust HeapTest's block size checks so that it allows for this behaviour. Admin: Tested briefly
Add support for HeapReason_GetSkewAligned
Detail: Similar to HeapReason_GetAligned, GetSkewAligned is used for allocating aligned blocks (with optional boundary limit). However instead of using the logical address of the user portion of the block for the alignment calculation, it uses an arbitrary offset specified in R5. This makes it useful for clients such as the PCI module, which care about the physical alignment of blocks rather than logical alignment. Admin: Tested with heaptest
Add cross-check support to heaptest
Version 6.26. Tagged as 'Kernel-6_26'
Add RISC OS Limited OS_ReadSysInfo 6 items
This makes SVLK and NVECTORS available. Version 6.27. Tagged as 'Kernel-6_27'
Remove some obsolete definitions for clarity
* MinAplWork isn't used. * SuperMode isn't used and is less well known than "SWI OS_EnterOS". * MEMCADR is now only a magic value returned by OS_UpdateMEMC, so it is clearer to include it literally with comment. Added a comment to explain the baffling combination of the MEMC1 control register's address with it's value. Version 6.27. Not tagged
Allow reservation of memory pages
This change adds a new OS_Memory reason code, 23, for reserving memory without actually assigning it to a dynamic area. Other dynamic areas can still use the memory, but only the code that reserved it will be allowed to claim exclusive use over it (i.e. PageFlags_Unavailable). This is useful for systems such as the PCI heap, where physically contiguous memory is required, but the memory isn't needed all of the time. By reserving the pages, it allows other regular DAs to make use of the memory when the PCI heap is small. But when the PCI heap needs to grow, it guarantees that (if there's enough free memory in the system) the previously reserved pages can be allocated to the PCI heap. Notes: * Reservations are handled on an honour system; there's no checking that the program that reserved the memory is the one attempting to map it in. * For regular NeedsSpecificPages DAs, reserved pages can only be used if the special "RESV" R0 return value is used. * For PMP DAs, reserved pages can only be made Unavailable if the entry in the page block also specifies the Reserved page flag. The actual state of the Reserved flag can't be modified via PMP DA ops, the flag is only used to indicate the caller's permission/intent to make the page Unavailable. * If a PMP DA tries to make a Reserved page Unavailable without specifying the Reserved flag, the kernel will try to swap it out for a replacement page taken from the free pool (preserving the contents and generating Service_PagesUnsafe / Service_PagesSafe, as if another DA had claimed the page) Version 6.28. Tagged as 'Kernel-6_28'
Add GENET to the list of HAL devices
Version 6.28. Not tagged
Add OS_DynamicArea 27+28, for supporting lots of RAM
OS_DynamicArea 27 is the same as OS_DynamicArea 5 ("return free memory"), except the result is measured in pages instead of bytes, allowing it to behave sensibly on machines with many gigabytes of RAM. Similarly, OS_DynamicArea 28 is the same as OS_DynamicArea 7 (internal DA enumeration call used by TaskManager), except the returned size values are measured in pages instead of bytes. A flags word has also been added to allow for more expansion in the future. Hdr:OSMem now also contains some more definitions which external code will find useful. Version 6.29. Tagged as 'Kernel-6_29'
Permit special field in paths passed to OS_CLI
OS_CLI permits commands to be prefixed with a temporary filing system, for example "ADFS:Format" It also passes commands unrecognised to FileSwitch to be executed, so "ADFS::HardDisc4.$.!Boot" first sets the temporary filing to ADFS then executes ":HardDisc4.$.!Boot". This does not work if the path contains a special field, currently this results in an error as the special filed would be lost. Unfortunately many programs, including the RISC OS source fail because of this. Instead if a filing system prefix with special field is found switch to the Temporary filing system and treat the whole command as a path to execute. For example passing "IXFS#W:$.HardDisc4.!Boot" sets the temporary filing system to "IXFS" then executes "IXFS#W:$.HardDisc4.!Boot". Version 6.30. Tagged as 'Kernel-6_30'
Fix OS_DynamicArea 21 handling of MaxCamEntry
OS_DynamicArea 21 was treating MaxCamEntry as if it was the exclusive upper bound, when really it's the inclusive bound. The consequence of this was that PMPs were unable to explicitly claim the highest-numbered RAM page in the system. Version 6.31. Tagged as 'Kernel-6_31'
Fix *Dump on (apparently) empty files.
Special case for empty files was crashing, fix by removing which also supports files which report a size of zero but actually contain data such as Unix device nodes and Linux procfs. Error where start outside file adjusted to permit a start exactly at the end of a file to permit (apparently) empty files with no output. Doing likewise for non-empty files is consistent. Also fix closing file in case of error reading GS format from CMOS. Version 6.32. Tagged as 'Kernel-6_32'
Use correct access permissions during ROM decompression
If HAL+OS are contiguous, the combined image is initially mapped as OSAP_None in order to allow for decompression. Fix the discontiguous case to use the same permissions
PMP LogOp_MapOut fixes
* Fix caching of page table entry flags (was never updating R9, so the flags would be recalculated for every page) * Fix use of flag in bottom bit of R6; if the flag was set, the early-exit case for having made all the cacheable pages uncacheable will never be hit, forcing it to loop through the full page list instead
Fix stack imbalance in DA release
In OS_DynamicArea 2, a stack imbalance would occur if an error is encountered while releasing the physical pages of a PMP (R1-R8 pushed, but only R1-R7 pulled). Fix it, but also don't bother storing R1, since it's never modified.
Fixes for zero-size PMPs
OS_DynamicArea 21, 22 & 25 were using the value of the PMP page list pointer (DANode_PMP) to determine whether the dynamic area is a PMP or not. However, PMPs which have had their max physical size set to zero will don't have the page list allocated, which will cause the test to fail. Normally this won't matter (those calls can't do anything useful when used on PMPs with zero max size), except for the edge case of where the SWI has been given a zero-length page list as input. By checking the value of DANode_PMP, this would result in the calls incorrectly returning an error. Fix this by having the code check the DA flags instead. Also, add a check to OS_DynamicArea 23 (PMP resize), otherwise non-PMP DAs could end up having page lists allocated for them.
OS_Byte 19 fixes
* Don't wait for VSync if we're in IRQ context, since (a) IRQ handlers shouldn't take lots of time, and (b) it may hang the system. Fixes https://www.riscosopen.org/tracker/tickets/424 * Extend the DPMSUtils-inherited "don't wait for VSync if HSync output is off" fix to also deal with the case where VSync output is off, since it's reasonable to assume that turning off VSync output could also prevent the CPU from receiving the associated interrupts.
Be more forgiving of GraphicsV init failures
* Update OS_ScreenMode 11's handling of drivers which fail to initialise. If there was no previous driver, then instead of trying to restore that nonexistant driver, stick with the new one. This is mainly to help with the case where the kernel's built in modes aren't accepted by the driver, and valid modes only become available once an MDF is loaded (this can happen with early OMAP3 chip revisions, which have very tight sync & porch limits, causing 90% of the kernel's modes to be rejected). If the kernel was to revert to the "no driver" state, then loading the MDF would still leave you with no video output. * Since we can now end up in a state where a driver is selected but hasn't been programmed yet, update OS_Byte 19 to detect this (via the magic ScreenBlankDPMSState value of 255) and avoid waiting for VSync * Update RemovePages & InsertRemovePagesExit (screen DA handlers) to avoid infinite loops if the screen DA gets shrunk to zero size (was seen while attempting to complete the !Boot sequence while no driver was active) Version 6.33. Tagged as 'Kernel-6_33'
Assign a USB flag
The XHCIDriver module adds 64k to get the register address. In an attempt to phase this out (so the registers are the true base address), assign a flag so that loading a suitable XHCIDriver on an old HAL still works. Version 6.33. Not tagged
Fix phantom DA PostGrow errors
Dynamic area PostGrow handlers aren't able to return errors, so the V flag is likely undefined. Fix AreaGrow so that it ignores any V-set condition returned by the call (especially since the CallPostGrow rapper will have clobbered any error pointer). Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/14662 Version 6.34. Tagged as 'Kernel-6_34'
Record various numbers used in other strands of RISC OS and compatible systems
Detail: * various low-numbered dynamic areas used by RISC OS 6 and Pyromaniac * OS_ReadSysInfo 8 host platform classes for VirtualRPC, A9Home, Pyromaniac * OS_Byte 0,<not 0> MosVer values for various systems since the BBC micro * OS_Byte 129,0,255 (BASIC INKEY -256) values for various RISC OS systems Admin: Discovered that these weren't really recorded anywhere during recent allocation request. Some information gleaned from http://beebwiki.mdfs.net Version 6.34. Not tagged
Fix abort after translating error
Reporting invalid parameters to OS_Pointer and OS_ConvertDateAndTime could wander off to bad places due to corrupt LR and/or stack imbalance.
Add aligned RMA claim subreason
OS_Module => R0=24 R3=size in bytes R4=alignment in bytes (must be a power of 2) <= R2=base of request or error Tested with a handful of valid and invalid alignments, and with one grossly larger than the free RMA to trigger an RMA extend to occur. Version 6.35. Tagged as 'Kernel-6_35'
Fix for bad error pointer *Dump'ing with a given start offset
Trying to dump a file larger than 2GB starting from an offset below 2GB would fail because the compare checking whether PTR#han > EXT#han accidentally set V which was taken as an error (but with R0 not really being an error block).
Add OS_Module 22
Very much like OS_Module 12, but returns the pointer to the PW rather than its contents (or NULL if the module died during init).
Special case extension of aligned RMA claims
During ModHandReason_ClaimAligned care is taken to start on a multiple of 32 and end on a multiple of 32 + 16 (such that the next block in the heap would be at +20 same as plain ModHandReason_Claim would do). However, during a ModHandReason_ExtendBlock there's a possibility that those criteria can't be retained, due to having to move to a larger gap elsewhere, leaving the end at an inconvenient +36. Similar allocation functions in other OS' don't guarantee to return an extended block with the same alignment, so take the position that for extends we always allocate a fresh block, copy the contents, and free the original. Shrinks are left in place. Tested with a random allocator which juggles 16 aligned allocations 50,000 times. Version 6.36. Tagged as 'Kernel-6_36'
Add scroll mouse support
* Listen out for PointerV 9, which (RISC OS 5) mouse drivers use to indicate scroll wheel updates + extra button status * Changes in the state of the extra buttons are treated the same as changes to normal mouse buttons: signalled via Event_Mouse, and stored in the mouse buffer (for reading via OS_Mouse). * Changes in the scroll wheel(s) are signalled via Event_Expansion,4. If the event vector call is unclaimed, the kernel's wheel position accumulators will be updated * Wheel position accumulators can be read via OS_Pointer 2 * Wheel position accumulators implement "wrap to zero" logic on overflow This matches RISCOS Ltd's implementation (http://www.riscos.com/support/developers/riscos6/input/pointerdevices.html), except that: * The kernel currently doesn't call PointerV 4, so PointerV 9 is the only way drivers can report wheel + extra button status * Extra mouse buttons don't generate KeyV transitions * Our implementation is in the kernel, not an OSPointer module Version 6.37. Tagged as 'Kernel-6_37'
Resync with allocations database
Edits to the RISCOS header file should really have gone through the allocations system. Fortunately, no harm was done in this case, but a minor syntactical change is required in order to bring it in line with the automatic redaction scripts used when exporting the header from the allocations database. Version 6.37. Not tagged
Mirror OS_AMBControl changes from Pyromaniac
* Create new header file defining symbolic name for OS_AMBControl reason codes and flags * Implement OS_AMBControl 9 (used to determine required size of buffer passed to OS_AMBControl 8 - potential thread safety issue not addressed) * Return allocated error numbers in various failure cases Version 6.38. Tagged as 'Kernel-6_38'
Fix OS_Byte 166 for high ZeroPage, make read-only
Despite never being properly documented in the RISC OS PRMs, there's evidence that Acorn were recommending that third-parties used OS_Byte 166 for locating the OS_Byte variables well into the mid-1990's: https://www.riscosopen.org/forum/forums/5/topics/14676#posts-94080 Currently OS builds which use zero page relocation will only return the low 16 bits of the address from OS_Byte 166, most likely breaking any third-party software which is trying to use it. Attempt to restore compatibility by having OS_Byte 166 add the missing high address bits into the "next location" value returned in R2, and fix OS_Byte 167 in a similar manner (adding into R1). Additionally, make the values read-only, because the kernel is littered with code that uses hard-coded OsbyteVars addresses and so is unlikely to do anything sensible if someone was to modify the OsbyteVars address that's stored in workspace. Version 6.39. Tagged as 'Kernel-6_39'
Fix Service_Memory when shrinking appspace
Update AreaShrink so that (when shrinking appspace) CheckAppSpace is passed the change amount as a negative number, so that Service_Memory is issued with the correct sign. Fixes issue reported on the forums, where BASIC was getting confused because appspace shrinks were being reported as if they were a grow operation: https://www.riscosopen.org/forum/forums/4/topics/15067 It looks like this bug was introduced in Kernel-5_35-4_79_2_284 (introduction of PMPs), where the logic for appspace shrinks (which must be performed via a grow of the free pool or some other DA) were moved out of AreaGrow and into AreaShrink (because appspace shrinks are now internally treated as "shrink appspace into free pool")
Fix shrinkables check in AreaGrow
TryToShrinkShrinkables_Bytes expected both R1 and R2 to be byte counts, but AreaGrow was calling with R1 as a byte count and R2 as a page count. This would have caused it to request the first-found shrinkable to shrink more than necessary, and also confuse the rest of AreaGrow when the page-based R2 result of TryToShrinkShrinkables gets converted to a byte count (when AreaGrow wants it as a page count)
Fix combined freepool + appspace shrink
When a DA tries to grow by more than the free pool size, the kernel should try to take the necessary remaining amount from application space. Historically this was handled as a combined "take from freepool and appspace" operation, but with Kernel-5_35-4_79_2_284 this was changed to use a nested call to OS_ChangeDynamicArea, so first appspace is shrunk into the free pool and then the target DA is grown using just the free pool. However the code was foolishly trying to use ChangeDyn_AplSpace as the argument to OS_ChangeDynamicArea, which that call doesn't recognise as a valid DA number. Change it to use ChangeDyn_FreePool ("grow free pool from appspace"), and also fix up a stack imbalance that would have caused it to misbehave regardless of the outcome.
Fix GrowFreePool
Buggy since its introduction in Kernel-5_35-4_79_2_284, GrowFreePool was attempting to grow the free pool by shrinking application space, an operation which OS_ChangeDynamicArea doesn't support. Change it to grow the free pool instead, and fix a couple of other issues that would have caused it to work incorrectly (register corruption causing it to request a size change of zero, and incorrect assumption that OS_ChangeDynamicArea returns the amount unmoved, when really it returns the amount moved)
Fix PMP appspace size check
Fix AreaGrow to read appspace size correctly when appspace is a PMP (i.e. an AMBControl node). Reading DANode_Size will only report the amount of memory currently paged in (e.g. by lazy task swapping), causing AreaGrow to underestimate how much it can potentially take from the area.
Add missing AMBControl appspace shrink check
Fix GrowFreePoolFromAppSpace (i.e. appspace shrink operation) to issue UpCall_MemoryMoving / Service_Memory when attempting to shrink PMP-based appspace (i.e. AMBControl nodes). This fixes (e.g.) BASIC getting stuck in an abort loop if you try and use OS_ChangeDynamicArea to grow the free pool. Version 6.40. Tagged as 'Kernel-6_40'
Fix OS_Memory 7 for discontiguous RAM
The current OS_Memory 7 implementation uses an address range structure returned by HAL_PhysInfo to decide which part of the physical address arrangement table to overwrite with RAM information. I suspect the original intention was for OS_Memory to use this address range to avoid marking the VRAM as DRAM (HAL_PhysInfo is expected to fill in the VRAM itself). But by overwriting everything between the start and the end address, OS_Memory will also overwrite any non-RAM areas which are sandwiched between RAM banks, e.g. the VideoCore-owned RAM on Pi models with >1GB RAM. There's also the problem that the address range returned by the HAL is using 32bit addresses, so it won't work as-is for RAM located above the 4GB barrier. Fix these issues by reworking the routine so that it ignores the address range returned by the HAL and instead detects VRAM by checking the IsVRAM flag in the PhysRamTable entry. And for detecting if the ROM is running from RAM, instead of using the address range we can rely on the flag available via OS_ReadSysInfo 8 (i.e. HAL_PlatformInfo), like OS_Memory 8 does. Also add a simple BASIC program (Dev.PhysInfo) to allow easy checking of HAL & OS physical address arrangement tables. Version 6.41. Tagged as 'Kernel-6_41'
Disable interrupts whilst checking for keys in OS_ReadC / INKEY
This ensures that on exit from OS_ReadC / INKEY either a character is returned or the input buffer is empty, and that Portable_Idle is only called when the input buffer is empty. This avoids a 10 microsecond delay and relying on timer interrupts to make progress and allows reliably waiting for input and another event by: Disable Interrupts Repeat Call INKEY(0), exit loop if key pressed Check other event, exit loop if key pressed Call Portable_Idle Version 6.42. Tagged as 'Kernel-6_42'
Fix cleaning
Move .gitignore file to root and populate with all temporary paths. This fixes .gitignore files being deleted during a ROM build. Version 6.42. Not tagged
OS_DynamicArea 22 fixes
Multiple fixes, mostly related to error handling. 1. Ensure R1 is initialised correctly when generating BadPageNumber errors (labels 94 & 95). Generally this involves setting it to zero to indicate that no call to LogOp_MapOut is required. Failing to do this would typically result in a crash. 2. When branching back to the start of the loop after calling GetNonReservedPage, ensure R0 is reset to zero. Failing to do this would have a performance impact on LogOp_MapOut, but shouldn't be fatal. 3. In the main routine, postpone writing back DANode_Size until after the call to physical_to_ppn (because we may decide to abort the op and return an error without moving a page). 4. Fix stack offset when accessing PMPLogOp_GlobalTBLFlushNeeded. Getting this wrong could potentially result in some TLB maintenance being skipped when moving uncacheable pages. 5. Fix stack imbalance at label 94 Version 6.43. Tagged as 'Kernel-6_43'
Get a tag for 5.28
Logs for RiscOS/Sources/Lib/DDTLib from DDTLib-0_06 to DDTLib-0_07
Fix handle and memory leaks on error
Found by cppcheck static analysis. Version 0.07. Tagged as 'DDTLib-0_07'
Logs for RiscOS/Sources/Lib/DebugLib from DebugLib-0_71 to DebugLib-0_72
Fix for pointer compare confusion
Don't compare a pointer (that can never be NULL) when a nul terminator was intended. Avoid strcmp() of potentially NULL area_level_in in the DEBUG case. Found by cppcheck static analysis. Version 0.72. Tagged as 'DebugLib-0_72'
Logs for RiscOS/Sources/Lib/Desk from Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix to Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix-1
Install rule fix
Detail: Get EXPDIR and install rule from CLibrary shared makefile, to resolve its absence from recent distributions where INSTDIR is set (rather than an export phase being run). Tagged as 'Desk-3.2.5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix-1'
Logs for RiscOS/Sources/Lib/OSLib from OSLib-6_90 to OSLib-6_90-1
Add 2 missing header exports
OSLib's FileCore and DOSFS headers themselves #include 2 others not exported. Add these.
Logs for RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_95 to RISC_OSLib-6_08
Try and avoid blocking callbacks
Detail: The kernel has a 'callback postponement flag' which will be set whenever an X SWI, called from user mode, returns a pointer to an error (and the error block looks like it's in RAM). Although this flag will help prevent the error buffer from being overwritten by any errors generated by callbacks, it will also have the effect of blocking Alt-Break and CLib's Escape handler, due to them both being reliant on callbacks. Since the flag may persist for a long time, it can be dangerous to leave the OS in this state (the flag can only be cleared by a SWI call from user mode - which may never happen if the program is stuck in a bad state). So to combat this, CLib will now make some effort to try and avoid leaving the postponement flag in situations where it shouldn't be needed. File changes: - c/armsys: - Change _sys_flen to return 0 for TTY streams, since calling OS_Args for them isn't going to generate any useful result (previously it was generating an error, causing the postponement flag to be left set on entry to main()) - Be extra vigilant when entering main() to make sure the callback postponement flag isn't set, just in case other checks don't resolve it - kernel/s/k_body: - Change CopyError to attempt to clear the callback postponement flag if we suspect it's set. We've just copied the error to our own buffer, so it should be our job to worry about preventing that buffer being prematurely overwritten, not the kernel's. Admin: Tested on BB-xM 'while (1) {}' (and similar variants) now multitasks in task windows and is no longer unkillable Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/11542#posts-79767 Version 5.96. Tagged as 'RISC_OSLib-5_96'
Fix to CopyError change
Detail: kernel/s/k_body - CPSR_f is the correct field for the NZCV flags, not _c Admin: Untested Version 5.97. Tagged as 'RISC_OSLib-5_97'
Various fixes
colourtran.c: Swap round arg names to colourtran_colournumbertoGCOL to match prototype. txtar.c: Avoid incorrect use of strncat buffer limit, and possible unterminated string after strncpy, by reexpressing using snprintf. txtedit.c: Avoid incorrect use of strncat buffer limit by reexpressing using snprintf. Avoid potential NULL pointer dereference by moving the filename copy inside the 'if' which confirms it's non-NULL. txtfind.c: Remove repeated check of repls being valid. Free repls on error. Free pat on error. xfersend.c: Fix potential out of bounds array access (of leaf[]) if the leafname length exceeds the space in the Wimp message. Found by cppcheck static analysis. txtopt.c/h: Sprinkle in some consts. event.c: Open menu at the Style Guide approved offset of 64. xfersend.c: Remove redundant check of xfersend__filename being NULL in xfersend__suggest_leaf() as all paths leading to it being called ensure the allocation exists (also, it would have strcpy'd garbage due to malloc not clearing the allocation). Removed unused header txtover.h. Version 5.98. Tagged as 'RISC_OSLib-5_98'
Fix to iconbar menu X offset
Detail: The fix applied to all menus in event.c revision 4.6 didn't take into account the offset of -16 already applied to iconbar menus. Admin: Tested with Draw-1_31. Version 5.99. Tagged as 'RISC_OSLib-5_99'
CLib and rlib header updates
Detail: Export fenv.h (omitted in error). Add FP_FAST_FMAL and FP_FAST_FMA defines per C standard Submission for ARMv7 Compiler bounty. Add Wimp_AutoScroll supporting function to rlib. Export various related defines for autoscroll use. Submission for Clipboard Support bounty. Version 6.00. Tagged as 'RISC_OSLib-6_00'
Build fix
Detail: Add wimp_autoscroll to rlib entries. Version 6.00. Not tagged
Build fix
Detail: Add missing function draw_create_diag() to the ROM version of RISC_OSLib, required by Paint-2_24 and later. To keep ROM footprint to a minimum, export only that function; this also avoids adding static workspace and needing to increase RlibSpace. Version 6.01. Tagged as 'RISC_OSLib-6_01'
[461] Pasting to empty Edit via a scrap file doesn't mark as edited
Only suppress the '*' when an existing file is dropped into an empty window, not if via scrap (ie. an application supporting the clipboard, but not the ram fetch protocol). Fixes ticket #461.
Replace several min/max implementations with 1
Share a (macro) definition with txt1 rather than having lots of local functions scattered around. Version 6.02. Tagged as 'RISC_OSLib-6_02'
Fix parsing of Edit option 'A'
The change of MIN() to a macro in RISC_OSLib-6_02 tripped up as it called the argument number parse function twice, which advances the parsing offset as a sideeffect. Read it once, then evaluate MIN(). Mark the string argument to txtar__readoptnum() as const. Ref: https://www.riscosopen.org/forum/forums/11/topics/14632 Version 6.03. Tagged as 'RISC_OSLib-6_03'
Fix for NULL pointer write
The spec of os_byte() requires 2 valid pointers, since the return values are unconditionally written to them. Use a dummy pointer for the unwanted result, not 0. Fixes application crash https://www.riscosopen.org/forum/forums/1/topics/15189#posts-101073. Version 6.04. Tagged as 'RISC_OSLib-6_04'
Add fopen's exclusive mode
Detail: Remove undocumented 't' mode which forcibly timestamped files, since other operating systems use this to denote a text file (as opposed to 'b' binary mode). Add 'x' mode per ISO9899:2018 * only applies to 'w' mode files (not 'r' or 'a') * file must not exist prior to creation * beyond that we rely on RISC OS' policy of only allowing a file to be opened once for writing as our exclusivity Also fix bug in check for 'Protected disc' error, which only trigged for fsnumber_ADFS (8). Admin: Tested in a ROM build with a simple test harness.
CLib header updates
Detail: assert.h - definition of static_assert complex.h - definition of CMPLX[F|L] float.h - various implementation defines stdio.h - hide gets() as it's been withdrawn wchar.h - guard mbstate_t as it can also be in uchar.h, fix missing __valist definition Admin: In order that the functions can be defined in the stubs now (despite not having a compiler to support C11/C18) they are enabled when 'DDE' is defined so that C library builds work.
Add C11/C18 library functions
Detail: alloc.c - Add aligned_alloc(). Since softloaded versions of the C library can't rely on OS_Module 24 being available there is a fallback implementation for older kernels. stdlib.c - Add quick_exit() and at_quick_exit(). Also fix bug in _Exit; a missing loop pre-decrement led to only checking a single (out of array bounds!) vector. time.c - Add timespec_get(). cl_entry2 - 4 new functions added to the stubs. Reduce spare CLib static workspace to absorb the quick_exit() handlers, remove the unused words from armsys.c so they're all accounted for in one space. Admin: In order that the functions can be defined in the stubs now (despite not having a compiler to support C11/C18) they are enabled when 'DDE' is defined so that C library builds work.
Fix switch to wrong mode in AbortFindHandler
Detail: Was (trying to) clear the M32 flag in {CONFIG}=32. Ref: https://www.riscosopen.org/forum/forums/1/topics/15080?page=1#posts-99441 Makefile updated to only pass rlib's txt switch when building rlib. Version 6.05. Tagged as 'RISC_OSLib-6_05'
Extra rlib sprite function for ROM stubs
Detail: Export sprite_put_mask_scaled when UROM. Also, delete sprite_put_greyscaled() which has been unimplemented in SpriteExtend since RISC OS 3.60. Admin: Required by Paint bounty. Version 6.05. Not tagged
txtar: Support extended scroll requests
Use extended scroll requests to handle mouse wheel scrolling, to avoid the "thumbing" code getting confused and thinking the user is dragging the scrollbar (the "thumbing" mode of scrolling isn't desirable for the mouse wheel, because it largely ignores the requested scroll distance) This change allows Edit & SrcEdit (and anything else using txtar) to handle the scroll wheel better, now that the WindowScroll module is controlling things. Version 6.06. Tagged as 'RISC_OSLib-6_06'
Adjust 26 vs. 32 bit mode checks
As noted in https://www.riscosopen.org/forum/forums/9/topics/15359, MRS instructions which are executed in user mode may return unknown values for the CPSR E, A, I, F and M fields on ARMv8 CPUs. At the moment the only observed deviation from normal behaviour is that CPUs which lack AArch32 privileged-mode support may return zero for the fields. This was found to confuse some 26 vs. 32 bit mode checks in CLib. Clearly we're a long way away from having a version of RISC OS which can run on a CPU that lacks AArch32 privileged mode support, but we can still try and make sure user-mode applications are compatible with them. So this change adjusts the mode checks in the stubs and overlay manager so that programs linked with them should function correctly (TEQ is now used instead of MRS) Note that once we do start porting RISC OS to one of the troublesome CPUs, there are many more potentially troublesome MRS's within the module code that will need adjusting, especially if CPUs start returning values other than zero. Version 6.07. Tagged as 'RISC_OSLib-6_07'
Enable modulewrapped applications to use ResGen
This utilises a weak symbol import so that if the symbol `Resources` resolves at link time, it is called to discover the address of the resource file data block(s) to be installed in ResourceFS. If this fails, it drops back to using the `s.ResFiles` source file as previously, thereby ensuring compatibility with components that have not yet been converted to use ResGen. Since `Resources` is the default area name (and thus discovery function name) used for ResGen in the shared makefiles, this makes it as simple as possible to utilise it. Version 6.08. Tagged as 'RISC_OSLib-6_08'
Logs for RiscOS/Sources/Lib/SyncLib from SyncLib-0_04 to SyncLib-0_05
Fix wrong spinrw function name exports. Add new spinrw_write_to_read function.
Detail: h/spinrw - Fix header file to use the correct names for the write try lock & sleep lock functions. s/spinrw - Add new spinrw_write_to_read function, which atomically converts a held write lock to a read lock. This can be useful if you have a long routine which needs to update some state and then perform extra actions based on the new value - if the write occurs at the start of the routine, the write access can then be downgraded to read access, allowing interrupts + concurrent read access, while still making sure the data hasn't changed from what was written. Admin: Tested on OMAP3, OMAP4 Version 0.05. Tagged as 'SyncLib-0_05'
Logs for RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_63 to TCPIPLibs-5_69
Strip out insecure T/TCP support
Detail: RFC6247 moved T/TCP to historic status due to security concerns, this change actively removes the code (where previously we disabled it through sysctl). headers/netinet/tcp_var.h: remove T/TCP support (per FreeBSD revision 137139). headers/netinet/tcp.h: remove T/TCP support (per FreeBSD revision 137139). headers/netinet/tcp_seq.h: remove T/TCP support (per FreeBSD revision 137139). LibraryDoc: removed references to T/TCP, updated MIB variables section, added socketstat() and fstat() details. Admin: Submission for TCP/IP bounty. Version 5.64. Tagged as 'TCPIPLibs-5_64'
Fix to socklib error return handling
Detail: copyerror - the highest error is now ENEEDAUTH (81) but socklib was clamping everything above EREMOTE (71). mkveneers/InetSWIs - use centrally held Hdr for OS SWI definitions. socklib.h/LibraryDoc - remove internal function _makecall() which is no longer used. Admin: Submission for TCP/IP bounty. Version 5.65. Tagged as 'TCPIPLibs-5_65'
Don't try to free an automatic variable
Found by cppcheck static analysis. Not tagged, it's only test code.
Add support for RFC2553
Detail: headers/net/if.h: new defines, structs, prototypes per RFC2553. headers/netdb.h: new defines, structs, prototypes per RFC2553 (from FreeBSD revision 102227). headers/sys/socket.h: portability sockaddr_storage struct, extend list of PF_ and AF_ defines (from FreeBSD revision 102227). headers/netinet/in.h: new defines, structs, prototypes per RFC2553 (from FreeBSD in6.h revision 102227) inetlib/if_indextoname.c if_nameindex.c if_nametoindex.c: import of new interface functions (from FreeBSD revision 100138). in6addr.c: constant structs for in6addr_any and in6addr_loopback per RFC2553. getnainfo.c: import of new function (from FreeBSD revision 158790). getipnode.c: new (with hostentdup based on _hpcopy from FreeBSD revision 103335). getadinfo.c: new (with portions based on FreeBSD revision 103640). LibraryDoc: updated with summaries of the new functions in Inetlib. Admin: Test harness in test/rfc2553.c exercises most of the new functionality. Submission for TCP/IP bounty. Version 5.66. Tagged as 'TCPIPLibs-5_66'
Add support for RFC2553
Detail: headers/net/if.h: new defines, structs, prototypes per RFC2553. headers/netdb.h: new defines, structs, prototypes per RFC2553 (from FreeBSD revision 102227). headers/sys/socket.h: portability sockaddr_storage struct, extend list of PF_ and AF_ defines (from FreeBSD revision 102227). headers/netinet/in.h: new defines, structs, prototypes per RFC2553 (from FreeBSD in6.h revision 102227) inetlib/if_indextoname.c if_nameindex.c if_nametoindex.c: import of new interface functions (from FreeBSD revision 100138). in6addr.c: constant structs for in6addr_any and in6addr_loopback per RFC2553. getnainfo.c: import of new function (from FreeBSD revision 158790). getipnode.c: new (with hostentdup based on _hpcopy from FreeBSD revision 103335). getadinfo.c: new (with portions based on FreeBSD revision 103640). LibraryDoc: updated with summaries of the new functions in Inetlib. Admin: Test harness in test/rfc2553.c exercises most of the new functionality. Submission for TCP/IP bounty. Version 5.66. Tagged as 'TCPIPLibs-5_66'
Add test case
In support of Internet-5_65.
DCI media definitions
Add a new subreason for Service_InternetStatus to cover media status change (eg. link up/link down). Note that this isn't in the Service_DCIDriverStatus call because in the newer FreeBSD stack it's the equivalent of the Internet module that maintains the state (communicated up from their equivalent of DCI) because the ifp is needed - which is owned by the network stack. Add media ST_TYPEs for WiFi. This is the entire list of bands covered by the 802.11 spec (much the same as we list all the 802.3 ones). Version 5.67. Tagged as 'TCPIPLibs-5_67'
Record ioctl number used in alternate Internet module implementation
Detail: The definition here is taken from the latest FreeBSD source tree. It is not used by the RISC OS 5 sources at present, but is recorded in case any more RISC OS-specific extensions are added, to ensure they steer clear of it. Note that FreeBSD has added a number of other additional ioctls since the RISC OS TCPIP stack forked from it - no attempt has been made to deal with those. Admin: Arises from an allocation request. Version 5.67. Not tagged
Fix header clash with net/if.h
Add a partial struct declaration for if_nameindex, otherwise when <net/if.h> is included the compiler gets upset that there's a conflicting duplicate definition. Version 5.68. Tagged as 'TCPIPLibs-5_68'
Header file update
Detail: Update sys/time.h from FreeBSD revision 18397 (around revision 8.5, circa 1995, in RCS terms). Principally this is for struct timespec so it is aligned with ISO9899:2011. Version 5.69. Tagged as 'TCPIPLibs-5_69'
Logs for RiscOS/Sources/Lib/UnicodeLib from Unicode-0_62 to Unicode-0_63-1-gf47d7578
Fix potential NULL pointer dereference, and buffer overruns
enc_utf16.c: move the arg check on putf16 being NULL up before it's used riscos.c: strncat() includes a terminator, so don't terminate, and pass one less on the limit unix.c: same again for strncat(), and don't assume strncpy() includes a terminator Found by cppcheck static analysis. Version 0.63. Tagged as 'Unicode-0_63'
Correction to install rule
The CLibrary shared makefile allows the object base name (ucode) & library directory (Unicode) to differ, but this component was achieving that by modifying TARGET then forcing EXPDIR. This trips up the disc install rule which is looking for unset EXPDIR, so the install went into LIBDIR. Version 0.63. Not tagged
Logs for RiscOS/Sources/Lib/Wild from Wild-0_06 to Wild-0_05-2-g6320d5e3
This commit was manufactured by cvs2git to create tag 'Wild-0_06'.
Sprout from master 2015-01-10 10:08:50 UTC Robert Sprowson <rsprowson@gitlab.riscosopen.org> 'Makefile recreated from fragments' Delete: !MkInstall,fd7
Missed from last commit
Logs for RiscOS/Sources/Networking/AUN/Access/ShareFSBlob from ShareFS-3_59 to ShareFSBlob-3_60
Updated BBE rules
Admin: Mirror the change in srcbuild-0_54 manually. Tagged as ShareFS-3_59-1
Add the standalone AOF
Detail: Add a binary of the standalone version of the module with supporting code to manage registration with ResourceFS, so that a disc based module can be created. Add the corresponding install rule to the BBE makefile. Admin Built using Disc environment & cc 5.78.
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Import of updated ShareFS binary
aof/ShareFS built with cc 5.80 in the All32 environment aof/ShareFSSA built with cc 5.80 in the Disc environment Version 3.60. Tagged as 'ShareFSBlob-3_60'
Logs for RiscOS/Sources/Networking/AUN/Internet from Internet-5_63 to Internet-5_65
Strip out insecure T/TCP support
Detail: RFC6247 moved T/TCP to historic status due to security concerns, this change actively removes the code (where previously we disabled it through sysctl). tcp_subr.c: remove T/TCP support (per FreeBSD revision 137139). tcp_input.c: remove T/TCP support (per FreeBSD revision 137139). tcp_usrreq.c: remove T/TCP support (per FreeBSD revision 137139). tcp_output.c: remove T/TCP support (per FreeBSD revision 137139). Admin: Requires TCPIPLibs-5_64. Submission for TCP/IP bounty. Version 5.64. Tagged as 'Internet-5_64'
Fix to SO_SNDTIMEO and SO_RCVTIMEO options being ignored
The TCPIPLibs library docs remind us that a socket can be modified via setsockopt() to have a non-default timeout for receive (SO_RCVTIMEO) and send (SO_SNDTIMEO) operations, however neither of these options were honoured if set. Instead, a default timeout of ~60s was given. This is because although the Internet module stores and propagates (via sbwait()) the timeouts correctly, the underlying tsleep() function is non compliant: it makes no distinction between returning due to a timeout and returning due to being awoken by an event. See https://www.freebsd.org/cgi/man.cgi?query=tsleep&sektion=9&manpath=FreeBSD+4.4-RELEASE for details. lib/unixenv.c: differentiate between timing out and being awoken, and return EWOULDBLOCK for timeouts. Aside: select() worked because when tsleep() returned with 0 for a timeout this caused a retry attempt, and the retry loop happens to include its own timer compare, causing select() to return. Now that tsleep() returns EWOULDBLOCK in a timeout situation no retry occurs and the function returns directly. Tested with a deliberately timing out receive operation, see TCPIPLibs/test/timeo.c Tested on RISC OS and FreeBSD 11.1-RELEASE-p4 with both an unset timeout (~60s) and 10s timeout, both behave identically in terms of return value and setting errno appropriately. Version 5.65. Tagged as 'Internet-5_65'
Logs for RiscOS/Sources/Networking/Econet from Econet-5_80 to Econet-5_80-1-g691d0361
Import of SetFree and Users sources
Recreated with the help of !SID, these are the missing other two utilities previously supplied with AUN to set a user's quota and list current logged on users. Not tagged.
Logs for RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_41 to EtherUSB-0_42
Copy MAC in network byte order
EtherUSB stores the MAC internally in network byte order, except when the address is obtained via OS_ReadSysInfo 4, when it was stored reversed. This problem lay hidden because the only ROM in which EtherUSB is able to get an address that way is the Pi, whose HAL returned the address in the wrong order too. Requires HAL_BCM2835-0_84. Version 0.42. Tagged as 'EtherUSB-0_42'
Logs for RiscOS/Sources/Networking/Omni/Protocols/OmniLanManFS from LanManFS-2_61 to OmniLanManFS-2_66
Fix for double name translation, header ordering
Detail: Xlate.c: Directory names containing characters requiring translation (eg. "AcornC/C++", "A B/C") would be translated twice, leading to a 'Directory not found' error when trying to open a file within. Submission from Colin Granville. TCPIP.h: Order the headers so that 'netdb.h' comes after its dependents. Submission for TCP/IP bounty. Admin: Test case test/Contentious run, passed OK. Version 2.62. Tagged as 'LanManFS-2_62'
Makefile simplification
Use the INSTRES_FILES specifier to pick up the resource files and generate the Messages rather than having a local static dependency. Version 2.62. Not tagged
Build fix
Ensure that when built for ROM, the RES_OBJ is created, as LanManFS is a little unusual in carrying its own 3rd party resources. Version 2.62. Not tagged
Length of usernames and passwords increased
Detail: Usernames on Windows can be email addresses which are longer than the 16 byte NAME_LIMIT so usernames and passwords are given their own name limit and this is increased to 64 bytes. Admin: Tested with Windows 10. Version 2.63. Tagged as 'OmniLanManFS-2_63'
Fixed deletion of directory trees
Detail: Rewrite of directory enumeration so that when directory trees are deleted when they are completely deleted. Modified fsentry_func in CoreFN.c so that the ReadDirectory reason codes call the new Func_ReadDir1 which uses SMBFind_EnumDir implemented in SMB.c and SMBfind.h Admin: Tested with Windows and Samba on Armbian. Version 2.64. Tagged as 'OmniLanManFS-2_64'
Limit n_names to fit in unsigned short
Detail: n_names in Func_ReadDir1 can be larger than an unsigned short which cause problems when cast to an unsigned short for SMB notably 7Backup would go into an infinite loop. Other parameters to Func_ReadDir1 sanity checked. Admin: Tested with 7Backup from 7thSoftware and compiling and cleaning OmniLanManFS sources over LanManFS Version 2.65. Tagged as 'OmniLanManFS-2_65'
Fix SMB read to not exceed our negotiated buffer size
The limit for data length in the read operation is set by MaxBufferSize (MAX_RX_BLOCK_SIZE in the source). The problem is, in executing the read, there was no allowance for the SMB overhead, so we're asking for reads that produce packets larger than our buffer, which Samba4 is rightfully rejecting and giving us a short response to fit into the buffer we said we needed it to fit into. Actually, Samba should abort the connection, but it responds to deal with Win2k having a similar bug. Ref: * Definition of MaxBufferSize [MS-CIFS v20180912 s 2.2.4.53.1, pg 282] * Definition of SMB_COM_READ [MS-CIFS v20180912 s2.2.4.11, pg 120] Version 2.66. Tagged as 'OmniLanManFS-2_66'
Logs for RiscOS/Sources/Networking/ResolverBlob from Resolver-0_72 to Resolver-0_72-2
Updated BBE rules
Admin: Mirror the change in srcbuild-0_54 manually. Tagged as Resolver-0_72-1.
Add the standalone AOF
Detail: Add a binary of the standalone version of the module with supporting code to manage registration with ResourceFS, so that a disc based module can be created. Add the corresponding install rule to the BBE makefile. Admin Built using Disc environment & cc 5.78.
Logs for RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_16 to MakePSFont-1_18
Use _swix() instead of local swi()
Change to use _swix() which packs the in/out vararg selection into a single register, so resulting in a lot less stuff being stacked for SWIs with more than 2 parameters. Note that because ZEROREGS was {TRUE} a little care is needed with Font_ReadFontMetrics which needs lots of 0's for the read operation, and these were not previously explicitly shown. Remove redundant misc.c. Version 1.17. Tagged as 'MakePSFont-1_17'
When standalone register messages
It looks like standalone builds have always omitted to register their messages on startup, assuming they were in ROM. Add usual service call/init/finalisation supporting code so make_error() returns the expected text. Version 1.18. Tagged as 'MakePSFont-1_18'
Logs for RiscOS/Sources/Programmer/BASIC from BASIC-1_75 to BASIC-1_81
Remove mk.sh script (obsoleted by Env 1.38)
Fix to ranged cache sync when using offset assembly
Detail: BASIC 1.75 switched to syncing the range { old P% - new P% } at the end of assembly instead of all memory. However, this didn't take into account offset assembly in the rare case where the offset assembled code was then run directory (the sources to FSLock-1_22 and earlier were susceptible). Fix by storing both old P% and O% at the start of assembly and choose the appropriate range based on the OPT value. ADR's to CASMTB3 extended to account for larger routine. Admin: Submission from Timothy Baldwin. Version 1.76. Tagged as 'BASIC-1_76'
Assemble the later ARMv8 AArch32 opcodes
ARM have added SETPAN, ESB, TSB, CSDB, PSSBB, SSBB since the earlier ARM ARM that BASIC covered. Add these. Raise the limit of 16 on the table that decodes 'pure' 3 character opcodes (+condition) in CASMTB2 since the offset into the jump table can be inferred from the offset into the opcode table (both are 1 word/entry), so removing the 4 bit limit. Move SMC/SMI/SVC into CASMTB2. Help updated in CmdHelp. Version 1.77. Tagged as 'BASIC-1_77'
WHILE/ACS bug fix
Minor fix to prevent an ACS token from being mistaken for another WHILE token, whilst in an existing WHILE construct. Fixes ticket #465. Version 1.78. Tagged as 'BASIC-1_78'
Fix multi-parameter messages
Incorrect stack offsets caused multi-parameter messages to use the wrong parameter values, e.g. "HELP" reporting incorrect program size and free memory values. Version 1.79. Tagged as 'BASIC-1_79'
Fix double-word VUZP.32 & VZIP.32
There's no valid instruction encoding for these. Instead, assemblers are expected to treat them as synonyms for VTRN.32 and use that encoding instead. Fix BASIC to do this, and add a couple of examples to TestVFP.
Be careful with the VFPData file in standalone builds
Give the file a unique name in ResourceFS, so that we don't hide/replace a version of the file that's being used by a different BASIC version/configuration.
Support NEON zero-shift synonyms
The ARM ARM lists several NEON shift instructions which have special-case synonyms for shifts of zero. Improve the assembler to support them (instead of throwing a "bad shift" error): * VQRSHRN x,y,#0 -> VQMOVN x,y * VQRSHRUN x,y,#0 -> VQMOVUN x,y * VRSHR x,y,#0 -> VMOV x,y * VRSHRN x,y,#0 -> VMOVN x,y * VSHR x,y,#0 -> VMOV x,y * VSHRN x,y,#0 -> VMOVN x,y
Improve handling of "#0" in VFP/NEON assembler
Where an instruction/encoding only allows a zero value, matching against the assembly line is performed by looking for an actual "#0" character sequence. This means that, unlike other locations where literals are parsed, it's impossible to use a variable, function, or any other kind of expression to provide the value. Change the assembler to detect when a "#0" sequence is being looked for, and use the numeric expression parser instead. This will make it much easier to use the zero-shift synonym instructions, since it's common for programs to use expressions to specify/calculate shift amounts (which may evaluate to zero in some circumstances) Version 1.80. Tagged as 'BASIC-1_80'
Help correction
The help for the two forms of POINT both pointed to the same message, so POINT( was wrong. Version 1.81. Tagged as 'BASIC-1_81'
Logs for RiscOS/Sources/Programmer/BootCmds from BootCmds-1_49 to BootCmds-1_49-1
Correct suspicious sizeof
Add the sizeof the ResourceFS terminator, rather than relying on sizeof(0) being 4. Found by cppcheck static analysis. Tagged as BootCmds-1_49-1 since binary unchanged.
Logs for RiscOS/Sources/Programmer/DDTHdr from DDT-0_02 to DDTHdr-0_03
Cross-compilable
Actually, this component only exports a header. Makefile rewritten to work for both native and cross builds.
Update Makefile
Version 0.03. Tagged as 'DDTHdr-0_03'
Logs for RiscOS/Sources/Programmer/Debugger from Debugger-2_02 to Debugger-2_07-1-g4ffc3ea2
dis2 and testbed improvements
Test/testbed.c: Remove the special case for MAR/MRA now that Debugger supports these. Don't leak raw on exit, found by cppcheck static analysis. main.c: Don't leak prog on exit, found by cppcheck static analysis. The apparent memory leaks are slightly academic since these are both applications and would be reclaimed on exit. Tested with all 256M 'EQ' and 256M 'NV' condition codes, only expected differences remain such as use of hex.v.dec for small constants. Tagged as Debugger-2_02-1 since Debugger itself is unchanged.
Add the later ARMv8 AArch32 opcodes
ARM have added SETPAN, ESB, TSB, CSDB, PSSBB, SSBB since the earlier ARM ARM that Debugger-1_98 was based on. ARMv6.s: Decode and show the 6 new instructions actions/ARMv7,actions/ARMv8_AArch32: C equivalents for dis2 Resources,Debugger.s,CGlue.s,ARM.s,dis2.h: 3 new messages to warn for v8.1 v8.2 v8.4 cache/vfp also updated based on encodings in Library-1_97. Version 2.03. Tagged as 'Debugger-2_03'
Support large physical addresses
When the 'P' switch is given to *Memory, *MemoryI or *MemoryA, all address and offset arguments are parsed as 64-bit numbers, and all physical addresses are displayed as 40-bit numbers. (The truncation from 64 bits is to avoid the standard width of *Memory output overflowing an 80-character-wide window, and should be fine in practice because even LPAE is limited to 40-bit addresses.) There is no facility for constructing physical address from a low-high register pair on the command line. However, if you know the literal value of the upper bits of a physical address, you could construct the offset manually, for example: *Memory P r0+100000000 +100 Internally, this means all addresses are passed around as 64-bit numbers. To limit the amount of register allocation changes required, the values of pointers are now mostly stored on the stack. Physical address lookups are done usng OS_Memory 22 on kernels which provide it, falling back to OS_Memory 14 and then the logical mapping of physical space on early non-HAL kernels. Because OS_Memory 22 can return errors, there are now many more code paths that have to handle them. Other bugs fixed in passing: * Correct syntax error is printed for malformed *MemoryA commands * PC and breakpoint markers are not displayed in physical address mode * Errors reported from OS_WriteC within DisplayCharacters were being corrupted Requires header export from RiscOS/Sources/Kernel!3 in order to build (softload versions should still run elsewhere though).
Simplify physical memory access, and reduce TLB operations
* Separate out the act of mapping in a physical address (with fallbacks to progressively older APIs) from the loading or storing of each 1-8 byte location, using a system of callback functions. * Remember which OS_Memory calls (if any) are available on the current kernel to avoid having to test them again for each address accessed. * Defer releasing the temporarily-mapped IO window until the end of the respective star command (as permitted by the OS_Memory documentation) to effectively halve the number of times the TLB has to be flushed. Note that the window will remain mapped if we exit via an exception during memory access, but this was the case in previous versions too, and now you can at least unmap it by issuing a further *Memory P command that doesn't cause an exception. Version 2.04. Tagged as 'Debugger-2_04'
Build fix
Dump the literal pool so assembly can complete when targetting a disc build suitable for RISC OS 3.10. Version 2.05. Tagged as 'Debugger-2_05'
Fix -ve increment interactive mode *MemoryA
When stepping backwards in interactive mode the step (in R8) relied on modulo 32b arithmetic. As the (unsigned) addition always causes a carry out, with a 40b address this led the top 8 bits of the address to increment on every decrement of the bottom 32b. Changed to sign extend to 64b before the add. Version 2.06. Tagged as 'Debugger-2_06'
Fix null pointer dereference in exception dump
Fix a couple of places in the Annotate function where null annotation block pointers could be accessed. Should fix the Debugger crash from this thread: https://www.riscosopen.org/forum/forums/4/topics/15014 Also trim some redundant code from the ExcPeekMem2 routine. Version 2.07. Tagged as 'Debugger-2_07'
Make compatible with RiscOS/BuildSys!3
* Rename TokHelpSrc to s.TokHelpSrc * Correct dependency Version 2.07. Not tagged
Logs for RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_75 to HdrSrc-2_91
Resync with allocations database
Version 2.76. Tagged as 'HdrSrc-2_76'
Resync with allocations database
Video overlay allocations, and a correction to ErrorBase_SMP Version 2.77. Tagged as 'HdrSrc-2_77'
Add a definition of the BEN bit in SCTLR (née MMU control register)
Detail: The memory barriers ISB, DSB & DMB were intially introduced in ARMv6 as CP15 operations, however they were replaced at ARMv7 with dedicated instructions and the old CP15 encodings deprecated. Since ARMv7VE was introduced, some CPUs can be configured to make the CP15 encodings undefined instructions. For unconfigurable CPUs, the CP15 encodings are always enabled, but for others, we need to set this bit in SCTLR. Note, this sort of behaviour usually implies ARM intend on removing these instructions in a future architecture, so we might need to plan for this eventuality. Version 2.78. Tagged as 'HdrSrc-2_78'
Add definitions for supersections in L1PT
Version 2.79. Tagged as 'HdrSrc-2_79'
Add supersection definitions to MEMM.ARM600 as well
Some later XScales also supported supersections - albeit ones we don't support yet - but they mean it's not incorrect to include these definitions in this header. However, defining the bits now means that we don't need to insert MEMM_Type build-time switches into the kernel for the page table code that now handles supersections. Version 2.80. Tagged as 'HdrSrc-2_80'
Resync with allocations database
* SWI chunk for the CompressPNG module * Wimp message structure definitions Version 2.81. Tagged as 'HdrSrc-2_81'
Resync with allocations database
Add public filetype for JSON files Version 2.82. Tagged as 'HdrSrc-2_82'
Add mixed-case versions of Hdr:Proc macros
Macros in this header file had inconsistent capitalisation. This is a legacy of the earliest macros being `ENTRY` and `EXIT`. Macro names that are all uppercase or all lowercase are a bad idea, because they can clash with opcodes or assembler directives that are added at a later date: this is what happened with `ENTRY` when objasm was developed, hence the introduction of the identical `Entry` macro, and mass renaming across the source tree was required when it switched to using objasm. The other downside of all-uppercase or all-lowercase macro names is that it makes it impossible to design a syntax colouring algorithm that is forward compatible with new opcodes (and ARM continues to add new opcodes with almost every new minor revision of the architecture). Note that related macro names depend on the vintage of the header at which they were introduced: compare `ALTENTRY` with `EntryS`. Additional mixed-case versions of macros `ALTENTRY`, `EXIT`, `EXITS`, `EXITV`, `EXITVC`, `EXITVS`, `FRAMLDR` and `FRAMSTR` are hereby introduced. The old macro names are also retained (it would be a very large job to substitute them throughout the source tree) but at least new code can now consistently use mixed case. The `FRAMCOM` and `FRAMSPL` macros are for internal use of the header file, so uppercase versions of these did not need to be retained. Also: * Delete `ENTRY` macro: it's a long time since anything has been buildable using aasm, which is the only assembler that accepts this macro * Correct cut-and-paste errors in the messages `ExitVC without EntryS` and `ExitVS without EntryS` Version 2.83. Tagged as 'HdrSrc-2_83'
Add HeapReason_GetSkewAligned
Version 2.84. Tagged as 'HdrSrc-2_84'
Change mymrs and mymsr from Generic32 to use MRS and MSR
Version 2.85. Tagged as 'HdrSrc-2_85'
Add long descriptor page table definitions
Version 2.86. Tagged as 'HdrSrc-2_86'
Resync with allocations database
Extra service calls for long descriptor page table support Version 2.87. Tagged as 'HdrSrc-2_87'
Resync with allocations database
Error allocations, including retrospective allocations for some errors used in RISC OS 6. Version 2.88. Tagged as 'HdrSrc-2_88'
Resync with allocations database
* Better document the history of ErrorBase_AbortRegions * Define OS_Pointer reason codes + missing PointerV code Version 2.89. Tagged as 'HdrSrc-2_89'
Resync with allocations database
* Filetype for YAML * Error definitions for OS_AMBControl errors as reported by Pyromaniac Version 2.90. Tagged as 'HdrSrc-2_90'
Suppress macro name conflicts
ObjAsm 4.08 spots macros using MyBase$Suffix where MyBase is a substring of another macro. Generic32 has CL$op and SE$op which causes many hundreds of warnings due to CLRV and SETV for example. Write out the macros longhand, and use a longer unique name for the generic implementation. Version 2.91. Tagged as 'HdrSrc-2_91'
Logs for RiscOS/Sources/Programmer/RTSupport from RTSupport-0_17 to RTSupport-0_17-1
Close the va_list
Add missing va_end() to debug code. Found by cppcheck static analysis. Tagged as RTSupport-0_17-1 since our va_end is an empty macro.
Logs for RiscOS/Sources/SystemRes/InetRes from Internet-5_61 to InetRes-5_77
Updated trusted root CA data
Admin: From 2018-03-07. Version 5.62. Tagged as 'Internet-5_62'
Internet resource updates
Detail: MimeMap: Add entries for GPX and KML, submission from Matthew Phillips. CertData: Updated CA data from 2018-06-20, submission for TCP/IP bounty. Admin: Not tested. Version 5.63. Tagged as 'Internet-5_63'
Conditionally ensure AUNMsgs
Internet 5.61 and later doesn't need AUNMsgs, so don't try loading them. The default softloaded Internet (5.40) however does, so do in that case. Sprinkle in a couple of comments, rename Test$Eval into Inet$ name space. Version 5.64. Tagged as 'Internet-5_64'
Build fix
Detail: netdb.h needs types.h Version 5.65. Tagged as 'Internet-5_65'
Updated trusted root CA data
Version 5.66. Tagged as 'Internet-5_66'
Updated trusted root CA data
Version 5.67. Tagged as 'Internet-5_67'
Updated trusted root CA data
Version 5.68. Tagged as 'Internet-5_68'
Updated trusted root CA data
Version 5.69. Tagged as 'InetRes-5_69'
Updated trusted root CA data
Version 5.70. Tagged as 'InetRes-5_70'
Add MimeMap entry for JSON files
Version 5.71. Tagged as 'InetRes-5_71'
Updated trusted root CA data
Version 5.72. Tagged as 'InetRes-5_72'
Extend the media names table
Add entries for WiFi (matches TCPIPLibs-5_67), and make the gigabit fibre entry a bit clearer.
Add optional port parameter to tftp help
Version 5.73. Tagged as 'InetRes-5_73'
Updated trusted root CA data
Version 5.74. Tagged as 'InetRes-5_74'
Updated trusted root CA data
Version 5.75. Tagged as 'InetRes-5_75'
Updated trusted root CA data
Version 5.76. Tagged as 'InetRes-5_76'
Updated trusted root CA data
Version 5.77. Tagged as 'InetRes-5_77'
Logs for RiscOS/Sources/Toolbox/ColourMenu from ColourMenu-0_22 to ColourMenu-0_23
Fix for potential NULL pointer dereference
Get the object_id after the check for menu_int being NULL, not before. Found by cppcheck. Version 0.23. Tagged as 'ColourMenu-0_23'
Logs for RiscOS/Sources/Toolbox/FileInfo from FileInfo-0_20 to FileInfo-0_21
Skip check of buffer pointer
The buffer pointer has already been used several times, so can be freed without another check. Found by cppcheck. Version 0.21. Tagged as 'FileInfo-0_21'
Logs for RiscOS/Sources/Toolbox/FontMenu from FontMenu-0_25 to FontMenu-0_26
Fix for potential NULL pointer dereference
Get the object_id after the check for menu_int being NULL, not before. Found by cppcheck. Version 0.26. Tagged as 'FontMenu-0_26'
Logs for RiscOS/Sources/Toolbox/SaveAs from SaveAs-0_20 to SaveAs-0_21
Don't close save box when raising "To save drag..."
Detail: The behaviour of Draw, Edit and Paint is for the save box to remain open after reporting "To save, drag...", this commit changes SaveAs to do the same. Changed Germany and UK Res files so that all "Save" buttons have local flag ticked, otherwise the box closes regardless of wheather SaveInternal_CloseWhenFinished is used. In events.c, event_action_button_save, when a filename without path has been detected, clear the CloseWhenFinished flag, so that the box remains open. Admin: The correct behaviour was observed in a Res file loaded with ResTest. Version 0.21. Tagged as 'SaveAs-0_21'
Logs for RiscOS/Sources/Toolbox/Toolbox from Toolbox-1_58 to Toolbox-1_59
Correction to SWI name table
Swap round RegisterPostFilter and RegisterObjectModule to match the implementation in main.c. Anyone calling by number is unaffected as the implementation is unchanged, anyone looking the name up would previously have called the wrong SWI (!) so presumably never worked, and only 0x44EFB is publicly documented in the Toolbox manual. Internally tboxlib's defines are used (RegisterPostFilter is +63, RegisterObjectModule +61) rather than using CMHG's defines. Version 1.59. Tagged as 'Toolbox-1_59'
Logs for RiscOS/Sources/Toolbox/ToolboxLib from Libs-0_27 to ToolboxLib-1_18
Fix potential NULL pointer issue in debug code
Make calls to fprintf() conditional on handle 'debugfileptr' being open. Found by cppcheck. Tagged as Libs-0_27-1 as only debug code change.
Updates to !MethodGen
Blow some cobwebs off !MethodGen * Fix bug whereby once a regs_set had been enabled it wasn't possible to remove it (for example, 3 regs to 2 regs) as the RegisterSet_rN bitfield was never cleared. * Remove a trailing space from the "Description :" line to reduce diffs with CVS/Git * Minor edits to cater for C99's stricter checking * Remove redundant call to __kernel_register_slotextend() which flex_init() does itself Binary rebuilt with cc 5.78 in the Disc environment.
Const-ify toolboxlib
Get the pointer type right for those things that are really const (generally, these are the <gadget>_set_<thing> methods), to benefit from tighter type checking, and to avoid having to add needless casts back to the non-const type. * Update the heading blocks for the exported headers to refer to RISC OS generically rather than Archimedes and Risc PC specifically * Backfill into the defs those methods that have been added by hand over the years * Correct the type for toolbox_template_lookup() which returns an ObjectTemplateHeader pointer * Remove redundant defs/sliderold * Add missing library entries for stringset_set_font and actionbutton_set_font, both of which appear in the headers and User Interface Toolbox manual but had no supporting implementation * Embedded __version symbols are taken from VersionNum As the generated C files now have licence prefixes of various vintages, the updated sources were generated with !MethodGen then the differences merged by hand. Tested in an IOMDHAL ROM build (so the Toolbox modules themselves build), and a Disc build (where there are several Toolbox applications). The exported headers are self consistent, because these are included by ToolboxLib itself, and hence checked by the compiler. Version 1.17. Tagged as 'ToolboxLib-1_17'
Const correctness of arg to toolbox_template_lookup()
The pointer whose address is passed in argument `hdr` will, on exit, point into memory that is managed by the Toolbox module, and which therefore should not be written by the callee (for example the module should be within its rights to re-use the same location to service another similar call). The pointer should therefore have type `const ObjectTemplateHeader *`, so `hdr` should have type `const ObjectTemplateHeader **` to save well-behaved clients from having to use a typecast. Version 1.18. Tagged as 'ToolboxLib-1_18'
Logs for RiscOS/Sources/Toolbox/Window from Window-1_79 to Window-1_80
Fix for NULL pointer dereference with key press
If the window in question isn't a toolbox window, don't try any further processing. Ref https://www.riscosopen.org/forum/forums/4/topics/12165 Version 1.80. Tagged as 'Window-1_80'
Logs for RiscOS/Sources/Toolbox/tboxlib from Common-0_26 to Common-0_26-1
Remove redundant assignment to error pointer
Pointer 'e' can't be returned as it's an argument to the function, so don't assign a result to it. Found by cppcheck. Tagged as Common-0_26-1 since no net code change.
Logs for RiscOS/Sources/Video/HWSupport/BCMVideo from BCMVideo-0_50-1_50_2_1 to BCMVideo-0_61
Take out gamma enable
While investigations continue on the trunk, simply disable it for now. Version 0.50, 1.50.2.1. Tagged as 'BCMVideo-0_50-1_50_2_1'
Add support for the GraphicsV overlay API and alpha-blended screen modes. Allow gamma table use to be disabled via adding 'disable_gamma' to cmdline.txt
Detail: s/BCMVideo - Update workspace for the new features. On startup, check to see if 'disable_gamma' is included in the firmware-managed kernel command line (i.e. from cmdline.txt in the bootloader partition), and if so disable all use of the hardware gamma tables. Update mode vet & set to allow alpha-blending in 32bpp modes. s/Dispmanx, s/HWPointer - Move the dispmanx-related routines out of s/HWPointer and into their own file, for re-use by the GraphicsV overlay code s/GPUMode - Move the command line scanning code into s/BCMVideo so it's still available if the GPUMode build switch is disabled s/GenCmd - Tweak how GenCmd_GetConfigInt returns values so that zero-value variables can be distinguished from errors. Check the framebuffer_ignore_alpha variable to determine if the GPU will pay attention to the FBSetAlphaMode property tag. s/GraphicsV - Hook up the GraphicsV overlay entries. Fix determination of whether hardware pointer is fully supported to also check the screen height. s/GVOverlay - Initial support for the GraphicsV hardware overlay API. It's best used in 32bpp alpha-blended screen modes, so that the overlays can be placed behind the desktop. Rotated/flipped overlays aren't supported yet. Admin: Tested on Raspberry Pi 1 & 3 Requires BCMSupport-0_08 disable_gamma should allow people who are frequently affected by https://www.riscosopen.org/forum/forums/11/topics/10346 to use their systems, pending a proper fix once the root cause has been determined. Note that options in cmdline.txt should be space-separated, so to disable both GPU mode changes & gamma table use you'll want 'disable_gamma disable_mode_changes'. Version 0.51. Tagged as 'BCMVideo-0_51'
Fix null pointer dereference
Detail: s/GVOverlay - R11 is the correct register for the overlay struct, not R0. Admin: Tested on Raspberry Pi 3B Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/3/topics/11504?page=1#posts-82292 Version 0.52. Tagged as 'BCMVideo-0_52'
Fix incorrect overlay pixel format selection, buffer mapping
Detail: s/GVOverlay: - Fix register mixup in GV_MapOverlayBuffer which would cause too little memory to be mapped in for YUV overlays. - Fix OverlayCreateVetCommon using a wrong default mode flags value, causing 32K LTBGR to be erroneously detected as a valid format if the mode selector block didn't explicitly specify the mode flags. - Add explicit failure check to CreateOverlayBuffer (for e.g. out of memory), previously failure was only being detected as a side-effect of the mailbox GetDispmanxMemhandle message failing Admin: Tested on Rasbperry Pi 3 Fixes a couple of issues raised in this thread: https://www.riscosopen.org/forum/forums/3/topics/11504 Version 0.53. Tagged as 'BCMVideo-0_53'
Switch to using mailbox interface for gamma, and optimise mailbox and pointer updates
Detail: s/BCMVideo - Instead of poking the gamma hardware directly, use the new SetGamma mailbox tag, via our MergeUpdate routine. Optimise MergeUpdate so that it only sends the necessary mailbox messages instead of sending all of them. s/GraphicsV - Update GraphicsV_SetBlank handler to set the correct UpdateNeeded flag s/HWPointer - Avoid sending pointer position updates via VCHIQ if there's nothing that needs changing (previously, position updates would have been sent on every frame that the pointer was visible) Admin: Tested on Raspberry Pi 3 Requires BCMSupport-0_09 for building Likely to require firmware of 9th Jan or newer Version 0.54. Tagged as 'BCMVideo-0_54'
Cope with EDispmanUpdateSubmit failing
Detail: s/GVOverlay, s/HWPointer - If the GPU is overloaded with requests, the dispmanx submit operation may fail, causing some of the queued operations to fail. Fix BCMVideo to detect this so that our idea of the GPU's state doesn't go dangerously out of sync with reality. Admin: Tested on Raspberry Pi 3 Fixes phantom mouse pointers appearing when rapidly moving the mouse on & off screen Version 0.55. Tagged as 'BCMVideo-0_55'
Reduce IO space fragmentation by mapping in all of the GPU's memory
Detail: s/BCMVideo - On startup, map in all of the GPU's memory as bufferable + usermode accessible. This will avoid the kernel creating extra mappings when it maps in the framebuffer (now that Kernel-6_19 is no longer double-mapping it), and will avoid us creating extra mappings for any overlays. Admin: Tested on Raspberry Pi 3 Version 0.56. Tagged as 'BCMVideo-0_56'
Fix register muddle & incorrect comment
Detail: s/BCMVideo - Fix register muddle that would have resulted in some of the ARM's memory being mapped in, instead of just reducing the amount of GPU memory mapped in. Admin: Tested on Raspberry Pi 3 Version 0.57. Tagged as 'BCMVideo-0_57'
Add Raspberry Pi 4 support
Detail: * The same problem with BCMVideo having hard-coded knowledge of the physical address map that bit us in version 0.30 came back to bite us again. In retrospect, it would have been nice to have made it ask the HAL back then, but it seems improbable that the addresses could change yet again? Version 0.58. Tagged as 'BCMVideo-0_58'
Update to use SyncPol interlace flags
This driver: cannot do interlaced sync, can DMA two different interlaced fields. Requires Kernel-6_21 or later. Version 0.59. Tagged as 'BCMVideo-0_59'
Make compatible with latest firmware
A documentation error and bug in BCMVideo combined with an incompatible change in the VCHIQ interface, resulting in blank video output. * In GenCmd_GetConfigInt, in the non-error case, Z is clear (not set) if the value read is nonzero. Many of the callers (correctly) only store the result if NE was returned, i.e. Z clear. * In the parse error case, where it constructs the return flags using an MSR, it wasn't setting Z, so the callers were storing the corrupted r0 (actually a pointer to the query string) into the workspace in such cases. * The firmware has changed how it reports unknown values. It now responds "<name> is unknown" rather than "<name>=0", and this meant it was being considered as a parsing error, hence triggering the dormant bug above. * GenCmd_GetConfigInt has now gained special-case handling of " is unknown" results, and treats them the same as "=0". Tested on a Pi 4 with the latest firmware. Version 0.60. Tagged as 'BCMVideo-0_60'
Disable gamma on Pi 4
The Raspberry Pi 4 implements gamma support in a different method to earlier models. Attempting to use the pre-existing gamma mailbox message on Pi 4 will result in incorrect gamma settings being used (black stays black, but everything else will become lighter & washed-out). It's unclear when the Pi foundation will fix the firmware and/or document the new gamma method, so for now our best option is to disable gamma on Pi 4. Ref: https://github.com/raspberrypi/firmware/issues/1274 Tested on Pi 3 & 4
Adjust limits for Pi 4
Increase the default pixel clock limits to the correct values when running on Pi 4. Curiously, the default max framebuffer width & height values remain the same, unless hdmi_enable_4kp60=1 is used (which will bump them up to 4K) Also take into account that the Pi 4 has higher coordinate limits for dispmanx overlays. This allows the hardware mouse pointer & video overlays to exist at X coords > 2048. Y limit checks have also been removed from the code, since they seemed to be redundant (they were only partially enforced before, which could have caused the pointer to vanish at the bottom of the screen in 4K modes. But I don't believe anyone's mentioned that, suggesting that there is no relevant limit) Note that currently a firmware bug means that using vcgencmd to read some of the limits isn't working correctly: https://github.com/raspberrypi/firmware/issues/1406 Tested on Pi 3 & 4
GraphicsV palette improvements
* Update GraphicsV WritePaletteEntry & WritePaletteEntries to only claim success for supported palette types * Implement GraphicsV ReadPaletteEntry, after discovering that in 8bpp modes the palette entries are only 16 bits wide Version 0.61. Tagged as 'BCMVideo-0_61'
Logs for RiscOS/Sources/Video/Render/DrawFile from DrawFile-1_59 to DrawFile-1_60
Fix for NULL pointer dereference rendering text areas
The state->column is only defined when there is text to flush, so after lexing pretty much any header item (eg. the version number "! 1") the check for having reached the terminating column results in a NULL pointer dereference. Tested with *Render TestFiles/TextArea, and a default area header prefixed by !Draw. Version 1.60. Tagged as 'DrawFile-1_60'
Logs for RiscOS/Sources/Video/Render/Fonts/FontManager from Manager-3_79 to Manager-3_80-1-g1482e1d3
Fix background blending sometimes setting alpha to zero in 32bpp modes
Detail: s/Blending - blend_putdata_32bpp contains an optimisation to avoid reading the screen pixel if the text pixel is fully opaque. However this means that the source alpha can't be preserved, going against the rules set out in the comment preceeding setblendingdata (and in reality, the alpha channel would be set to zero). Fix this by introducing a new blend_putdata_32bppA variant which always reads from the screen, ensuring the alpha channel can be preserved. Admin: Tested on Raspberry Pi 3B Hardware overlays underneath the desktop are no longer visible through the zero-alpha font pixels Version 3.80. Tagged as 'Manager-3_80'
Remove unused CLI macro
The name clashes with the recently added clear IRQ flag macro, CLI. Version 3.80. Not tagged
Logs for RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_82 to SprExtend-1_84
Tile using steam power during printing
If there's a print job active, break down TileSpriteScaled into composite SpriteOps rather than using OS_Plot copy/move block. OS_Plot copy/move isn't supported by the printing system. Version 1.83. Tagged as 'SprExtend-1_83'
[475] Fix crash with certain colour short JPEGs
JPEG images which were less than an MCU tall (in the case of ticket #475, 2 rows, with MCU size 16x16) could fall off the end of the table of pointers to output rows. This is because: * the top level loop in rojpeg.c always tried to read a full MCU (16 here) * this clashed with the bounds checking logic in romerge.c which clamped at the image height (2 here) * the upsampler continued to be called for the remaining 14 rows, but had none, so fell into the case of returning 1 'spare' row until the line count went negative * carried on trying to deliver (unsigned) 4 billion lines * fell off the end of the table of pointers to output rows, and into the image data which for this sample was light grey (0xF3F3F3) and crashed with a bad memory access For extra garnish the image declared its resolution to be in dots per inch, but has them set to zero, leading to a divide by 0 in !Draw. rojpeg.c: Limit rows requested to an MCU or the image height, whichever is smaller. Return a default DPI for JPEGs claiming 0dpi or 0dpcm. Version 1.84. Tagged as 'SprExtend-1_84'
Logs for RiscOS/Sources/Video/UserI/BootFX from BootFX-0_08 to BootFX-0_09
Update artwork to reflect change of ownership of RISC OS
Version 0.09. Tagged as 'BootFX-0_09'
Logs for RiscOS/Sources/Video/UserI/Picker from Picker-0_56 to Picker-0_56-2-g2ddd12e7
Updated to build using shared makefiles
Detail: * Makefile rewritten * Language-dependent resource files moved into Resources.UK * Four header files (in "icons" subdirectory) that are autogenerated by running WinEd are now committed to CVS, to aid with cross-compilation. These icon number definitions haven't changed in over 21 years, and if they were to do so, it would be a one-off job to run WinEd on a RISC OS machine to regenerate them: the original rules have been retained for this purpose. Since the only other component that uses WinEd like this is ResEd, it seems unlikely that it will ever be worth the effort to create a cross-compiling version of WinEd! Version 0.56. Not tagged
Correction to function prototype
Flagged by cppcheck static analysis. Tagged as Picker-0_56-1 as no net code change.
Logs for RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_68 to ScrModes-0_74
Allow selection of BBC gap modes via mode selector blocks
Detail: c/ScrModes - Adjust pixel format selection to take into account BBC gap modes, which have non-standard NColour values. Admin: Tested on BB-xM Version 0.69. Tagged as 'ScrModes-0_69'
Fix memory leak and undefined behaviour
edidsupport.c: for each CVT3 and standard timing block encountered a ModeDescription was allocated but never used, thus leaked. ScrModes.c: start the bit masking loop at 0, otherwise a mask of 1<<-1 is used. Found by cppcheck static analysis. Aside - edidsupport.c the calls to dtd_block_to_modedesc() could be refactored to let it do the allocation, rather than each caller doing so and having to deal with clean up on error. Not done in these changes. Version 0.70. Tagged as 'ScrModes-0_70'
Improve mode substitution logic
Detail: This updates ScreenModes to use similar mode substition logic to Kernel-6_14: - Try higher colour depths - Try lower colour depths - Try alternate resolutions (half-width non-double-pixel if original was double-pixel, assorted industry-standard resolutions, and monitor preferred resolution/timings) - Plus tries to preserve as many attributes as possible (eigen values, gap mode type, etc.) Additionally, LineLength values in the input mode selector block will be used to influence the VIDC list ExtraBytes value, as per the kernel File changes: - c/ScrModes - Update Service_ModeTranslation and Service_ModeExtension handlers, as described above - h/modex - "const PixelFormatRef" is a const pointer to a non-const PixelFormat, but we want "const PixelFormat *", for a pointer to a const PixelFormat Admin: Tested on Raspberry Pi 3, Iyonix, IGEPv5 Note that we can't easily remove the Service_ModeTranslation handler from ScreenModes and rely purely on the one in the kernel because the kernel can't easily see which modes ScreenModes provides (ditto other Service_ModeTranslation handlers). Version 0.71. Tagged as 'ScrModes-0_71'
Improve ExtraBytes handling, double-pixel mode handling, and Service_ModeTranslation
Detail: c/ScrModes: - Automatically use ExtraBytes to request that the row length is a multiple of a word (since things fail with non-word aligned rows) - Fix maxdatasize check in mode_valid to take into account ExtraBytes - Fix discrepancy between kernel OfferDoublePixelModeExtension & ScreenModes offer_doublepixel_modeextension: For >16bpp double-pixel we should downgrade to non- double-pixel instead of giving up completely - Make Service_ModeTranslation attempt to map the result back to a (kernel) mode number, as per the kernel's Service_ModeTranslation Admin: Tested on BB-xM Version 0.72. Tagged as 'ScrModes-0_72'
Move former ControlList_Interlaced item into SyncPol flags
Requires Kernel-6_21. Version 0.73. Tagged as 'ScrModes-0_73'
Improve established mode timing support
Add definitions for 640x480 @ 67Hz, 832x624 @ 75Hz, and 1152x870 @ 75Hz, gleaned from various monitor manuals. These work on the monitors I have at my disposal (e.g. BenQ FP737s-D) without generating any warnings. Version 0.74. Tagged as 'ScrModes-0_74'
Logs for RiscOS/Sources/Video/UserI/ScrSaver from ScrSaver-0_14-1_9_2_4 to ScrSaver-0_14-1_9_2_4-1-g57cd43bd
Fix cleaning
Move .gitignore file to root and populate with all temporary paths. This fixes .gitignore files being deleted during a ROM build. Version 0.14 (1.9.2.4). Not tagged
Logs for RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_85 to ABRelease-1_00
Readme and obey file updates
Version 0.86. Tagged as 'ABRelease-0_86'
Import of ZeroPain 0.08
Built in the Disc environment. Also, copy in the softload tool for TitaniumDev as for IOMDHAL and Tungsten. Version 0.87. Tagged as 'ABRelease-0_87'
Typo in readme
Detail: Tidy unmatched quote (the term is defined earlier in quotes). Admin: Submission from Chris Mahoney.
PreDesk dir correction
Correct the *Copy command otherwise the monitor configuration !Run file ends up 1 dir too high. Version 0.88. Tagged as 'ABRelease-0_88'
Merge branch RISC_OS-5_26
This has the effect of changing from Castle to Apache licence Version 0.89. Tagged as 'ABRelease-0_89'
Import of ZeroPain 0.09
Built in the Disc environment. Version 0.90. Tagged as 'ABRelease-0_90'
Add the missing ReadMe
Update DiscDev to copy the ReadMe/txt (and LICENSE) into the resulting Zip. The SEC doesn't include this as extraction isn't interactive and would deposit 2 files up one directory. Version 0.91. Tagged as 'ABRelease-0_91'
Auto generate packages of some disc components
At the end of a DiscDev build, turn the output into packages for transfer outside of the autobuilder. Which things to package is driven by a package database ('PackageDB') which is cross referenced with the ModuleDB. It also collects licence terms from the respective source directory. Package suffixes start at '1' and increment if the contents change - ie. it's not pegged off soley the VersionNum, so if a library or tool gets a fix all impacted components will get a new suffix. DiscDev/clean: Wipe away any intermediate packages DiscDev/release_autobuild: Create the packages Makefile: Correct a typo In this initial stage, only the Diversions are covered. Baby steps... Version 0.92. Tagged as 'ABRelease-0_92'
Path correction
The autobuild doesn't set the CSD as previous assumed. Retagged as ABRelease-0_92.
Add another bundle to the package list
Version 0.93. Tagged as 'ABRelease-0_93'
Component name correction
Printers is aka PrinterManager Retagged as ABRelease-0_93.
Add another bundle to the package list
Also extend the PkgHardDisc4 tool to handle accumulating hashes that would otherwise be longer than a BASIC string could hold. Version 0.94. Tagged as 'ABRelease-0_94'
Add another bundle to the package list
Also extend the PkgHardDisc4 tool to allow a package name to be different to the component name listed in ModuleDB. Fix bug when a new package is added to the list (so it's not in the previous hashes) where it would reuse the previous entry's ZIP suffix. Version 0.95. Tagged as 'ABRelease-0_95'
Update SysMerge script
NetUtils added (ref BuildSys-7_35). Version 0.96. Tagged as 'ABRelease-0_96'
Update SysMerge script
FilerUtils added (ref BuildSys-7_36). Version 0.97. Tagged as 'ABRelease-0_97'
Update SysMerge script
Resolver & ShareFS added (ref BuildSys-7_37). Version 0.98. Tagged as 'ABRelease-0_98'
Add Environment field
For DiscDev this can simply be 'any' as it uses machine 'All'. Mark the package policy number as 0.6.0.0 which is when this field appears. Version 0.99. Tagged as 'ABRelease-0_99'
Tone down ZPP warning, document developer modules
First added in July 2015, no longer provide ZeroPain with every development ROM since it could be seen as a cause for alarm to a new user, and is a useful diagnosis tool to old deck hands. Move the documentation of ZeroPain to its new home in the BonusBin, and add some notes and a link to the docs of the other developer modules provided (DebugBttn, DebugTools). Version 1.00. Tagged as 'ABRelease-1_00'