RISC OS on the Raspberry Pi

RISC OS was officially released in 'beta' for the Raspberry Pi, as 'release candidate 6' (RC6) on 1st November 2012. Since then newer models have been released and the firmware and the rom have moved on. RC16 is very close to being the final beta release before the first stable version of RISC OS for the Raspberry Pi, RISC OS 5.28, is released. The changes in the ROM from RISC OS 5.24/5.26 (nominally identical to each other except for the change to the copyright licence) to RC 16 are listed below with a link to the source and to a summary of the changes. Changes from RC6 to RC14 are also given below. Changes from RC14 to RISC OS 5.24 and 5.26 may be seen by clicking on the relevant panel to the left.

Changes in the ROM from RISC OS 5.26 to RC16 (14-Jun-2020)

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 RC16
Module name used
in Source with a
link to it
Module name used
with a link to a summary
of the changes
HAL_BCM2835MOS Utilities5.27(23 May 2020)5.26(18 Oct 2018)
KernelMOS Utilities5.27(23 May 2020)5.26(18 Oct 2018)
PCIPCI Manager0.18(4 Jan 2020)0.15(10 Sep 2017)
FileSwitchFileSwitch2.87(12 Oct 2019)2.86(03 Sep 2017)
ResourceFSResourceFSunchanged 0.26(18 Aug 2016)
TerritoryManagerTerritory Mgrunchanged 0.57(12 Nov 2017)
MessagesUK Messagesunchanged 1.12(24 Oct 2015)
MessageTransMessageTransunchanged 0.49(26 May 2012)
UKUK Territory0.63(8 Sep 2018)0.61(29 May 2016)
WindowManagerWindow Manager5.75(23 May 2020)5.61(18 Mar 2018)
TaskManagerTask Manager1.53(7 Mar 2020)1.50(19 Aug 2017)
DesktopDesktop2.77(26 Oct 2018)2.76(29 May 2016)
SharedRISC_OSLibC Library6.06(9 May 2020)5.95(14 Apr 2018)
BASIC64BBC BASIC V1.80(2 Apr 2020)1.75(03 Mar 2018)
BASIC64BBC BASIC VI1.80(2 Apr 2020)1.75(03 Mar 2018)
BlendTableBlendTableunchanged 0.02(09 Mar 2014)
BufferManagerBuffer Managerunchanged 0.39(14 Mar 2011)
ColourTransColour Selectorunchanged 1.95(29 May 2016)
DebuggerDebugger2.07(16 May 2020)2.02(25 Feb 2018)
DeviceFSDeviceFSunchanged 0.73(23 Apr 2016)
BCMSupportBCMSupport0.12(27 Oct 2019)0.07(31 Jul 2017)
PortableHALPortableunchanged 0.81(20 Jan 2017)
RTSupportRTSupportunchanged 0.17(15 Jun 2016)
USBDriverUSBDriver1.30(20 Apr 2020)1.28(17 Mar 2018)
DWCDriverDWCDriver0.36(22 Apr 2020)0.34(27 Jan 2018)
VCHIQVCHIQ0.14(19 Feb 2020)0.10(15 Oct 2017)
BCMSoundBCMSoundunchanged 0.04(21 Apr 2015)
ScreenModesScreen Modes0.74(2 Mar 2020)0.68(31 Mar 2018)
BCMVideoBCMVideo0.60(6 Jul 2019)0.50(18 Apr 2018)
DisplayManagerDisplayManagerunchanged 0.44(29 May 2016)
DMAManagerDMAManagerunchanged 0.23(07 Nov 2015)
DragASpriteDrag A Spriteunchanged 0.21(30 Aug 2017)
DragAnObjDrag An Objectunchanged 0.09(04 Aug 2011)
DrawModDrawing Moduleunchanged 1.22(08 May 2016)
FileCoreFileCoreunchanged 3.75(06 Jul 2017)
FilerFiler2.48(27 May 2020)2.43(29 May 2016)
FilerSWIsFilerSWIsunchanged 0.05(16 Mar 2001)
FSLockFSLock1.25(28 Jun 2019)1.24(26 Sep 2014)
FontManagerFont Manager3.80(13 Aug 2018)3.79(04 Feb 2018)
FPEmulatorFPEmulator4.37(12 Nov 2019)4.36(12 Dec 2017)
VFPSupportVFPSupportunchanged 0.13(20 Feb 2018)
FreeFreeunchanged 0.42(29 May 2016)
HourglassHourglassunchanged 2.19(10 Nov 2013)
IICIICunchanged 0.18(02 Feb 2017)
InternationalInternationalunchanged 1.69(06 Dec 2015)
InternationalKeyboardInt’l Keyboardunchanged 0.99(21 Jan 2018)
ITableInverse Tableunchanged 0.18(06 Oct 2013)
NetFSNetFiler0.87(21 Mar 2020)0.86(23 Oct 2016)
NetFilerNetStatusunchanged 2.09(17 Jan 2003)
ObeyObeyunchanged 0.40(13 Jan 2015)
PinboardPinboard1.05(16 Nov 2019)1.03(06 May 2017)
PipeFSPipeFS0.24(8 Jun 2018)0.23(18 Aug 2016)
RAMFSFilerRAMFSFiler0.41(29 Feb 2020)0.40(20 Sep 2016)
ResourceFilerResourceFilerunchanged 0.20(14 Jan 2014)
ROMFontsROM Fontsunchanged 0.77(07 Sep 2014)
RTCRTC0.02(4 Apr 2019)-(new)
ScreenBlankerScreenBlankerunchanged 2.34(08 May 2016)
ScrSaverScrSaverunchanged 0.14(01 Aug 2015)
DualSerialSerialunchanged 0.25(25 Oct 2016)
SerialDeviceSupportSerialSupportunchanged 0.26(04 Jun 2012)
ShellCLIShellCLIunchanged 0.37(11 Jan 2014)
SoundDMA_HALSoundDMA1.88(4 Aug 2018)1.85(12 Jun 2016)
SoundControlSound Controlunchanged 1.06(10 Sep 2016)
SoundChannelsSoundChannels1.42(4 Aug 2018)1.41(08 May 2016)
SoundSchedulerSoundScheduler1.33(4 Aug 2018)1.32(28 Jun 2014)
SpriteExtendSpriteExtension1.84(15 Feb 2020)1.82(11 Feb 2018)
SpriteUtilsSpriteUtilsunchanged 1.13(19 Jan 2010)
SquashSquashunchanged 0.30(15 Feb 2014)
BootFXBootFX0.09(26 Oct 2018)0.08(01 Apr 2017)
SuperSampleSuperSampleunchanged 0.16(14 Jan 2012)
SystemDevicesSystem Devicesunchanged 1.33(15 Jul 2016)
TaskWindowTaskWindow0.81(8 Jun 2019)0.80(02 Jun 2017)
WindowUtilsWindow Utilsunchanged 2.53(05 Apr 2001)
FilterManagerFilter Manager0.29(19 Jan 2020)0.28(23 Oct 2013)
WaveSynthWaveSynthunchanged 1.25(08 May 2016)
StringLibStringLibunchanged 1.19(08 May 2016)
PercussionPercussionunchanged 1.18(08 May 2016)
SharedSndShared Soundunchanged 1.20(18 Jun 2016)
Filer_ActionFiler_Actionunchanged 0.62(13 Aug 2016)
DOSFSDOSFS1.19(24 Jul 2018)1.13(19 Feb 2018)
SCSISwitchSCSIDriver2.15(13 Jul 2018)2.14(11 Jan 2018)
SCSISoftUSBSCSISoftUSB0.28(18 May 2020)0.21(10 Mar 2016)
SCSIFSSCSIFS1.33(13 Jul 2018)1.32(09 Sep 2017)
SCSIFilerSCSIFiler1.33(26 Feb 2020)1.30(26 Mar 2017)
SDIODriverSDIODriver0.16(10 Aug 2019)0.13(17 Jan 2017)
SDFSSDFSunchanged 0.10(8 Aug 2017)
SDFSFilerSDFSFiler1.15(26 Feb 2020)1.12(26 Mar 2017)
SDCMOSSDCMOS0.20(21 Jun 2018)0.18(12 Aug 2017)
ColourPickerColour Pickerunchanged 0.56(12 Apr 2018)
DrawFileDrawFile0.20(21 Jun 2018)1.59(11 May 2017)
BootCommandsBoot Commandsunchanged 1.49(02 Aug 2015)
AUNMsgs-(not present) 0.30(23 Oct 2016)
WindowScrollWindowScroll0.02(29 Apr 2020)-(new)
MManagerMbuf Managerunchanged 0.30(07 Mar 2015)
InternetInternet5.65(15 Sep 2018)5.63(06 Jan 2018)
ResolverResolverunchanged 0.72(30 Jul 2015)
BootNetBootNetunchanged 0.97(17 Jun 2015)
MimeMapMimeMapunchanged 0.19(15 Apr 2016)
LanManFSLanManFS2.64(16 May 2020)2.61(03 Jan 2018)
EtherGENETEtherGENET0.02(2 May 2020)-(new)
EtherUSBEtherUSB0.42(2 Apr 2020)0.41(21 Mar 2018)
DHCPDHCP clientunchanged 0.27(14 Apr 2016)
AcornURIAcornURI-(not present)0.26(14 Apr 2016)
Edit!Edit1.74(27 May 2020)1.73(03 Apr 2015)
Draw!Draw1.41(25 Apr 2020)1.30(27 Oct 2016)
Paint!Paint2.35(23 May 2020)2.23(11 Nov 2017)
Alarm!Alarm2.95(18 Apr 2020)2.93(17 Mar 2018)
Chars!Chars2.05(25 Apr 2020)2.04(13 Apr 2018)
Help!Help3.26(12 Oct 2019)3.25(08 Oct 2017)
tboxlibToolboxunchanged 1.58(11 Feb 2018)
WindowWindow Object1.80(23 Nov 2018)1.79(21 Mar 2018)
ToolActionToolActionunchanged 0.38(20 Mar 2016)
MenuMenuunchanged 0.40(01 Nov 2015)
IconbarIconbarunchanged 1.23(18 Jun 2016)
ColourDboxColourDboxunchanged 0.22(29 Nov 2017)
ColourMenuColourMenu0.23(9 Sep 2018)0.22(18 Aug 2015)
DCS_QuitDCS Objectunchanged 1.14(18 Jun 2016)
FileInfoFileInfo0.21(9 Sep 2018)0.20(18 Aug 2015)
FontDboxFontDboxunchanged 0.19(18 Aug 2015)
FontMenuFontMenu0.26(9 Sep 2018)0.25(18 Aug 2015)
PrintDboxPrintDboxunchanged 0.18(18 Aug 2015)
ProgInfoProgInfounchanged 0.19(18 Aug 2015)
SaveAsSaveAsunchanged 0.20(18 Aug 2015)
ScaleScaleunchanged 0.16(18 Aug 2015)
GadgetsTextGadgetsunchanged 0.44(09 Feb 2018)
CDFSDriverCDFSDriverunchanged 2.41(24 May 2012)
CDFSSoftSCSICDFSSoftSCSIunchanged 0.06(10 Feb 2018)
CDFSCDFSunchanged 2.63(08 May 2016)
CDFSFilerCDFSFiler2.52(29 Feb 2020)2.51(13 Nov 2017)
UnSqzAIFUnSqueezeAIFunchanged 0.10(18 Nov 2013)
GPIOGPIOunchanged 1.00(31 Mar 2018)

Full Change Logs

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-6_00-RPiFreeze_12

Add GPIO module to OMAP3/4

Version 7.23. Tagged as 'BuildSys-7_23'

Add User Guide supporting material to disc

Detail: ModuleDB & components files updated Version 7.22. Tagged as 'BuildSys-7_22'

Changes to keep GNUmakefiles and Makefiles compatible

Detail: GNUmakefiles/AAsmModule: * Adopt same extensible syntax for describing resources phase files as CModule (see BuildSys 6.91) GNUmakefiles/AppLibs: * Don't permit CALLXLIB to be used for application builds (see BuildSys 6.61) * Reflect MODMALLOCLIB leafname change (see BuildSys 6.61) * Add TBOXINTLIB, TBOXINTDBGLIB, PDEBUGLIB, PRISMLIB, REMOTEDBLIB, TRACELIB, UNICODELIB and include more libs in DEBUGLIBS (see BuildSys 6.63) GNUmakefiles/CApp: * Add install_debug_app rule for debug app installations (see BuildSys 6.53) GNUmakefiles/CLibrary: * Allow additional dependencies to be specified using LIB_DEPENDS (see BuildSys 6.63) * Gains install target (see BuildSys 7.15) GNUmakefiles/StdTools: * Add shell implementation of FAppend (see BuildSys 6.45) - compatible except for the fact that the destination is given current timestamp * ${NOP} no longer implicitly includes the silent-command prefix character @ (see BuildSys 6.50) * Add CPVFLAGS (see BuildSys 6.53) although it can't achieve anything as a suffix to the command * Add shell implementation of EraseCVS (see BuildSys 6.53) * Add InstViaRG tool (see BuildSys 6.70) Version 7.21. Tagged as 'BuildSys-7_21'

Add (Omni)NFS to the disc image

ModuleDB: Add entry for OmniNFS. Move NFS now it's been scrubbed clean for publishing. Components/Disc: Add OmniNFS and NFS to !Omni. It may be more appropriate to put NFS in !System, let's see. Version 7.20. Tagged as 'BuildSys-7_20'

Components file updates

Detail: Relocate AHCIDriver. Re-order the first few modules of iMx6 to match the other ROMs in light of ScreenModes dependency changes. Omit ZeroPain, this is provided in the download ZIP as a disc component. Omit EtherUSB - no sources in the products file so the build failed. Do run the ABRelease phase otherwise the autobuilder produces no output. Minor white space changes. Version 7.19. Tagged as 'BuildSys-7_19'

Skip EHCIHALLib export

Detail: No longer a target of this component. Version 7.18. Tagged as 'BuildSys-7_18'

Set machine for 310 copies of TaskWindow & CallASWI

Detail: CallASWI now contains an ASSERT for No32bitCode, so in the All environment it doesn't build. TaskWindow standalone module has ADR out of range. Admin: For CTools. Version 7.17. Tagged as 'BuildSys-7_17'

Change PDebug & RemoteDebug component types

Detail: In order that they be considered during the 'install' phase, make these 2 components type C rather than type EXP. Components/ROOL/BonusBin & PlingSystem: change all libraries to only be exported Components/ROOL/CTools: add an install location for PDebug, needed by DebugLib Admin: Fix for DDE build missing some required libraries. Required CLibrary shared makefile revision 1.9. Version 7.16. Tagged as 'BuildSys-7_16'

Add Access+ to the disc image, improve CLibrary makefile

Add Access+ as a utility, called out by the "Local networks" chapter of the User Guide, and missing since RISC OS 3.70 days (despite ShareFS having the functionality). Add an install target to the CLibrary makefile, this allows the library to be installed somewhere other than the exports directory which is useful for the CTools component for example. Version 7.15. Tagged as 'BuildSys-7_15'

Repoint EHCIDriver & OHCIDriver

Admin: OHCIHeaders removed from ModuleDB. For those components that use the USBHAL add that to the EXP phase. Version 7.14. Tagged as 'BuildSys-7_14'

Repoint component path

Admin: Formerly named 'NetBSD' now 'USBDriver'. Submission for USB bounty. Version 7.13. Tagged as 'BuildSys-7_13'

Add RouteD to the module database & Disc image

Version 7.12. Tagged as 'BuildSys-7_12'

Add BASICVFP to relevant ROMs

Detail: - ModuleDB - Define BASICVFP component - Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, OMAP5, Titanium, iMx6 - Add BASICVFP to ROM for all ARMv6+ machines Admin: BCM2835 build tested Requires BASIC-1_67, Library-1_91 Version 7.11. Tagged as 'BuildSys-7_11'

Add OmniAccess to module database & Disc components

Version 7.10. Tagged as 'BuildSys-7_10'

Add BorderUtils to ModuleDB and PlingSystem

Also spotted that the CTools components file doesn't add a copy of CallASWI/FPEmulator to the EndUser directory. These 2 modules are required (the stubs include RMEnsures of CLib/CallASWI/FPEmulator). Version 7.09. Tagged as 'BuildSys-7_09'

Add GPIO to BCM2835

Same as for Pico, ordinary Pi users can enjoy wiggling their I/O. Version 7.08. Tagged as 'BuildSys-7_08'

Fix BuildHost build

Detail: Components/ROOL/BuildHost - ColourPicker needed for header exports Admin: Tested with BuildHost build Version 7.07. Tagged as 'BuildSys-7_07'

Change order of modules in build to take advantage of recent ScrModes EDID changes

Detail: Admin: tested on iMx6 Version 7.06. Tagged as 'BuildSys-7_06'

Change order of modules in build to take advantage of recent ScrModes EDID changes

Detail: Admin: tested on iMx6 Version 7.06. Tagged as 'BuildSys-7_06'

Match up module order

All the other targets place ScreenModes earlier for EDID probing reasons. Version 7.05. Tagged as 'BuildSys-7_05'

Update Pico components

Force BCMVideo to work discless using a built in MDF, in lieu of EDID. Version 7.04. Tagged as 'BuildSys-7_04'

GPIO export needed too

Detail: Admin: Version 7.03. Tagged as 'BuildSys-7_03'

Final iMx6 module

Detail: Admin: Version 7.02. Tagged as 'BuildSys-7_02'

Introducint iMx6 HAL to ROOL repository

Detail: Admin: Version 7.01. Tagged as 'BuildSys-7_01'

Pico build fix

Need tboxlib for the messages header for internationalised DWCDriver. Force the default language CMOS to 10 since Pico is 1 module short, such that BASIC V is the default (not BASIC VI) per discussion https://www.riscosopen.org/forum/forums/5/topics/6744 Version 7.00. Tagged as 'BuildSys-7_00'

Reflect import of AHCIDriver module

Detail: change moduledb and iMxd component Admin: Version 6.99. Tagged as 'BuildSys-6_99'

Modify EtherTH path in module database to main repository

Detail: Admin: Version 6.98. Tagged as 'BuildSys-6_98'

Added PartMan module to database.

Detail: Introducing a basic partition manager. Admin: Version 6.97. Tagged as 'BuildSys-6_97'

Add Net components

Version 6.96. Tagged as 'BuildSys-6_96'

Use default SDCMOS switch

Requires BCM2835-0_61 and SDCMOS-0_17. Version 6.95. Tagged as 'BuildSys-6_95'

Add SerialDeviceSupport to Raspberry Pi ROMs

Detail: Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Enable SerialDeviceSupport (OS_SerialOp/SerialV bridge to the underlying 'serialctrl' DeviceFS API) Admin: Tested on Raspberry Pi 1 B Requires BCM2835-0_59 and DualSerial-0_25-4_8_2_14 Version 6.94. Tagged as 'BuildSys-6_94'

Add Omni's NetFiler

To the module database, and Disc components. Version 6.93. Tagged as 'BuildSys-6_93'

Shuffle module order

Detail: Ordering of FPE with respect to ScreenModes not important post ScrModes-0_55. Version 6.92. Tagged as 'BuildSys-6_92'

Use the same optional resources syntax for AAsmModule as for CModule

Copy over the rules that use platform agnostic InstRes to copy their extra resources (for those modules wanting more than just the default Messages+CmdHelp). Copy over the logic that allows INSERTVERSION to be run on Messages files (from CApp shared makefile) so modules which have a front end can get their dates from Messages. Add INSERTVERSION facility to CModule too. Version 6.91. Tagged as 'BuildSys-6_91'

Add support for "26" machine type. PlingSystem updates.

Detail: ImageName/SysMap - Add support for "26" machine type Components/ROOL/PlingSystem - Remove manual specification of All32 machine type for BASIC - would have resulted in code which isn't ARMv2 compatible. Remove 350 version of TaskWindow - the 310 version should be fine for all OS versions that PlingSystem targets. Document why SharedSnd is using the All machine type. Admin: Tested with PlingSystem build Version 6.90. Tagged as 'BuildSys-6_90'

Add SATADriver for its exports

Export needed by CDFSSoftATAPI. Version 6.89. Tagged as 'BuildSys-6_89'

No longer install CFSI-JPEG from SprExtend

Admin: Requires ChangeFSI-1_58 or later. Version 6.88. Tagged as 'BuildSys-6_88'

No longer install CFSI-JPEG from SprExtend

Admin: Requires ChangeFSI-1_58 or later. Version 6.88. Tagged as 'BuildSys-6_88'

Add Freeway and MimeMap to PlingSystem

Version 6.87. Tagged as 'BuildSys-6_87'

Options fix

Detail: See corresponding change in PlingSystem 1.23 for rationale.

Build fix

ColourPicker exports wanted by RISC_OSLib, MimeMap exports wanted by DOSFS and others. Retagged as BuildSys-6_86.

Add BCMSupport to Raspberry Pi ROMs

Detail: Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Add BCMSupport to ROM Admin: BCM2835 ROM tested on Pi 1B/2B/3B Pico ROM untested Version 6.86. Tagged as 'BuildSys-6_86'

Move SPIDriver component in ModuleDB from private to apache tree

Version 6.85. Tagged as 'BuildSys-6_85'

Fix OMAPHDMI component type

Version 6.84. Tagged as 'BuildSys-6_84'

Fix PlingSystem build for version 4.34 of FPEmulator

Detail: Machine build switch now standardised to be compatible with Hdr:CPU.Arch since FPEmulator now relies on that. One side-effect improvement is that the binary in System:400.Modules.FPEmulator now includes FPA support so RISC OS 4 or 5 users on an A7000+ will no longer lose hardware acceleration if they softload FPEmulator. Admin: PlingSystem build now completes again. Version 6.83. Tagged as 'BuildSys-6_83'

Add Connector to the ModuleDB

And install it in the bonus binaries. Version 6.82. Tagged as 'BuildSys-6_82'

Add module for OMAP5 port

Detail: OMAPHDMI added to the ModuleDB Admin: Wanted by OMAP5 components file, but omitted in BuildSys-6_77. Version 6.81. Tagged as 'BuildSys-6_81'

Enable ABRelease

Builds same binary, not tagged.

Insert another component

Add Allocate to the ModuleDB

Add Allocate, for CTools components file. Move !MakeModes out of the ROM modules section into the disc apps section. Temporarily remove ATAPI from Titanium so the build completes without error. Version 6.80. Tagged as 'BuildSys-6_80'

New modules in the ModuleDB

Detail: Add OMAP5 HAL, ADFS 4 and SATADriver. Put HALs back in alphabetical order. Version 6.79. Tagged as 'BuildSys-6_79'

Extra SysMap mapping

Detail: For machine CortexA7 (and A15 and A17).

New method to control default CMOS settings

Detail: Rather than fill the Kernel sources with an ever-increasing number of platform-specific switches to control the default CMOS settings, this change introduces a variable which passes the requirements direct from the Components file to the Kernel. Since it uses a comma-separated list of address/value pairs, it is inherently extensible. All the symbolic names of addresses from Hdr:CMOS are available, and any valid objasm expression can be used for the value. Version 6.78. Tagged as 'BuildSys-6_78'

Extra components files

Detail: OMAP5 components, submission from Willi Theiss. Titanium components, submission from Elesar. Some extra modules in the ModuleDB. Added EtherCPSW AutoSense to the disc image. Admin: May not build, some bits still being reviewed. Version 6.77. Tagged as 'BuildSys-6_77'

Add GPIO for exports

Previously located in the Kernel headers, now exported from GPIO. Version 6.76. Tagged as 'BuildSys-6_76'

Ammend CTools components

Retagged as BuildSys-6_75.

Updated the CTools components file and added UtilLib to the ModuleDB.

Version 6.75. Tagged as 'BuildSys-6_75'

Retire TinyStubs

The ROM build of TinyStubs has done nothing since version 0.07 (1998) except count how many clients it has and refuse to die if non zero. The last RAM set of Toolbox modules to use it was just before Expresso (Java Risc PC) in 1998 also. The Toolbox modules now make use of more functions than TinyStubs provided so can simply use the normal C libary. While 'tlink' (the special linker used to link against TinyStubs) is mentioned in passing in application note 280 it doesn't appear Acorn ever released it, plus there's no 32 bit version available. Tested over several months in an IOMD ROM. Version 6.74. Tagged as 'BuildSys-6_74'

Add existence of SATAFS, SATAFiler, and SPIDriver modules to ModuleDB

Detail: Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Version 6.73. Tagged as 'BuildSys-6_73'

Retire Binaries components file

Add BonusBin components file The former was tediously hand run by ROOL while the sources were first being published and included a lot of components that weren't actally suitable to be RAM loaded, for example because they had no ResourceFS registration step. Many of these have been tidied and included in the HardDisc4/PlingSystem products. Version 6.72. Tagged as 'BuildSys-6_72'

Add FontEd to the module database

Formerly buried in FontManager, sources have be split out as a separate component (& VersionNum file).

Add AcornURI to the disc image

Remove DDEUtils from PlingSystem (binary identical duplicate of that in the disc image) Version 6.71. Tagged as 'BuildSys-6_71'

Update known tools

Tagged as BuildSys-6_70.

Extend resources phase to handle more than just Messages

Using the InstViaRG script CModule will now collate a list of files (using the syntax for the InstRes script employed by the CApp shared makefile) for resources, rather than the previous Messages file only. The list is specified in INSTRES_FILES, or if for some reason the standalone and ROM versions need to be different INSTRAM_FILES and INSTROM_FILES (cf. INSTAPP_FILES in CApp). Shock new documentation for CModule added. Version 6.70. Tagged as 'BuildSys-6_70'

Make CModule more closely follow AAsmModule when no resources are needed

Previously there was a quirky requirement to set RES_OBJ to an empty string to get this to work, now, we only require CUSTOMRES=no like AAsmModule does. Not tagged, part of a 2 part update.

Ensure FPEmulator is aware of zero page relocation. Keep zero page relocation disabled for iMx6 for now. Add ZeroPain to ModuleDB

Detail: Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, S3C6410, Tungsten - Add "FPEANCHOR=High" to FPEmulator build options so that it uses the relocated FPEAnchor location instead of the old one. In the future FPEmulator will be fixed so that it doesn't use a hard-coded address, but for now we need to manually tell ROM versions where FPEAnchor is. Components/ROOL/iMx6 - Override the kernel's default decision and leave zero page relocation disabled. R-Comp can decide when it's a sensible time to enable it. ModuleDB - Add ZeroPain. The module isn't used in any components files yet, but it's good to list it here forthe sake of completeness. Admin: Tested with Iyonix ROM build Requires Kernel-5_35-4_79_2_268 for FPEAnchor setting to match reality Version 6.69. Tagged as 'BuildSys-6_69'

Add RemoteDebug to CTool components

Nested include in DebugLib.h requires it, spotted by Martin Avison. Version 6.68. Tagged as 'BuildSys-6_68'

Update OMAPVideo build options

Detail: Components/ROOL/OMAP3, Components/ROOL/OMAP3Live, Components/ROOL/OMAP4 - OMAPVideo-0_34 now requires the OMAP revision to be specified as a makefile parameter rather than via CDEFINES Admin: Tested on BeagleBoard, PandaBoard Required for OMAPVideo-0_34 to build Version 6.67. Tagged as 'BuildSys-6_67'

Enable doLog for disc based SharedSnd

Want it for everything pre-Risc PC, and for issue 1 Risc PCs without 16 bit sound upgrades. Version 6.66. Tagged as 'BuildSys-6_66'

Don't build stripnulls in BuildHost

Retagged as BuildSys-6_65.

Relocate xpand, add front end to DDE applications

Version 6.65. Tagged as 'BuildSys-6_65'

Add Raspberry Pi 2 support

Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Version 6.64. Tagged as 'BuildSys-6_64'

Add ability to specify dependicies for CLibrary

New capability for the CLibrary shared makefile to specify arbitrary dependencies (via ${LIBDEPENDS}) required before the main event, this might be used to, for example, run a perl script or something to generate some code or headers. Add PDEBUGLIB PRISMLIB REMOTEDBLIB TRACELIB and UNICODELIB to the AppLibs and ModuleLibs. Repoint DDTLIB WILDLIB TRACELIB. For the PlingSystem build, put TextGadgets in the 350 directory since it currently only supports text areas in dynamic areas. Version 6.63. Tagged as 'BuildSys-6_63'

Add SharedSound to PlingSystem

Detail: Components/ROOL/PlingSystem - Build and install a copy of SharedSound suitable for RISC OS 3.1+ Admin: Tested on emulated RO 3.11 & 3.70 SA RiscPC Requires HdrSrc-2_49 Version 6.62. Tagged as 'BuildSys-6_62'

Add AUNMsgs to the components file

Skip some unused libraries

Don't build or export non participants MemLib & SCInterface.

Repoint ModMalloc library

Version 6.61. Not tagged


Tack a 'zm' on the end to match callx-0_09. Mark the application version as invalid, since callx can't be used from an application which gets paged out. Version 6.61. Tagged as 'BuildSys-6_61'

Do 'rom_link' against the same thing you do 'rom' with

During the rom phase, ROM C modules would be linked against ${ROMCSTUBS}, ie. clib. During the rom_link phase, they'd be linked against ${ABSSYM}, ie. clib and rlib. As RISC_OSLib contains various wimp_ symbol names which clash with ${WIMPLIB} from the Toolbox, so you can't write a ROMmable C module which links against the Toolbox and uses the shared makefiles. We define a new variable ROM_SYMS which is initialised to ${C_ABSSYM}, ie. just the clib to match the stubs used during the rom phase, and the ${ROMCSTUBS} is now appended to ${ROM_LIBS} so it can be overridden rather than being hardwired into the rule. For completeness SA_LIBS can now also be overridden to remove ${CLIB} if desired. CApp/CLibrary now use ${NOP} silently. Version 6.60. Tagged as 'BuildSys-6_60'

CTools build now includes Kernel with an install phase to get at its exported headers.

Admin: requires Kernel-5_35-4_79_2_242 or later (branch HAL). Version 6.59. Tagged as 'BuildSys-6_59'

Minor tweaks to CTools components to align with PlingSystem.

Re-spin the CTools component file.

CTools build will now export things into an "Exports" directory.

This replaces the "AcornC/C++.Libraries" directory that we had before, which was a random mash-up of bits of a real "Exports" directory. Also reverted the CModule change - leave this job to components to deal with in their own makefiles. Version 6.58. Tagged as 'BuildSys-6_58'

Tweak to the ModuleDB to allow builds (e.g. CTools) to include some more of the common librabries in their install phase. The ones I've added are (almost) all required by shared makefiles - e.g. for debug app builds.

Also a minor fix to CModule shared makefile to cope with certain arrangements of source files in a component. Version 6.57. Tagged as 'BuildSys-6_57'

corrected misspelt AHCIDriver. no other changes

Detail: Admin: JWB Version 6.56. Tagged as 'BuildSys-6_56'

Added AHCIDriver to module database

Detail: Admin: jwb Version 6.55. Tagged as 'BuildSys-6_55'

Corrected some DDE-related bits from the previous commit. Won't affect anyone other than CTools builds.

Version 6.54. Tagged as 'BuildSys-6_54'

Various updates generally associated with CTools builds.

Components (ROOL CTools): * Added new components (ITable, BlendTable, RTC) for exports * Switch to using Install: rather than <Install$Dir> to help CLX * Replace CToolsCD component with DDE component ModuleDB tweaks: * Added the (closed source) DDE resources component * Added a component for BuildSys itself (so DDE can get the Makefiles) Shared makefile tweadded ERASECVS to the standard tools * Added a verbose copy flags CPVFLAGS for big copy operations * Added "install" rule for debug app builds (amu install INSTTYPE=debug) Version 6.53. Tagged as 'BuildSys-6_53'

Fix some tool build issues

Detail: Components/ROOL/BuildHost - Enable Squash export phase now that the sources are public (plus, it's needed for building stuff). Tweak 'xpand' and 'do' option strings so that they'll build properly (previously, errored out due to looking for bad makefile rules) Admin: BuildHost build now completes without error Version 6.52. Tagged as 'BuildSys-6_52'

Fix some Disc build errors

Detail: Makefiles/AAsmModule - Reintroduce IfThere check of LocalRes:Messages, so that components which don't have any messages file will build correctly once again Makefiles/CApp - Ensure ${INSERTVERSION}'d files are writable; fixes errors when performing repeated Disc builds of components which mark their install directory tree as readonly. Admin: Fixes issue reported on forums with DDEUtils not being present in recent disc images: https://www.riscosopen.org/forum/forums/11/topics/2848 Version 6.51. Tagged as 'BuildSys-6_51'

Change less useful resources_messages for resources_sprites

GNU/AAsmModule: Swap round ${RESOURCEEXTRA} to come later, since otherwise the ${RESDIR} hasn't been created AAsmModule & CModule: Recemtly added resources_messages was a bit pointless as resources_common did the same thing, instead add resources_sprites. ModuleLibs: Debug library for internal Toolbox objects added. Retagged as BuildSys-6_50.

Make debug builds a bit simpler

AAsmModule: Remove SA_DEBUG override, instead use ASDFLAGS like CModule does. CModule: If the target is 'debug' allow CMHGDFLAGS to pass extra defines into CMHG, this avoids the common problem of having to have 2 CMHG files and select between them. Other - sync the messages token check/copying, use ${NOP} and ${FAPPEND} and ${DO}, and od.${RES_OBJ} isn't dependent on ${DIRS} since it already has that when creating o.${RES_OBJ}. Version 6.50. Tagged as 'BuildSys-6_50'

Improvements to AAsmModule shared makefile

Detail: * Corrected and added documentation at head of file * Now defines an "all" target * DIRS now has a default value (i.e. behaviour now matches the other shared makefiles) freeing the master makefile from needing to specify platform- specific paths * Added cross-compilation version Admin: Tested by cross-compiling the BASIC module Version 6.49. Tagged as 'BuildSys-6_49'

Improvements to resources phase rules

AAsmModule: The preferred override is now 'CUSTOMRES' to match CModule, though the former 'RESOURCES' is still accepted as a transitional step. The internal phoney targets (like resources-None) can no longer be augmented with :: since that doesn't make sense. Copied some block comments from CModule so they're easier to compare. Fixed the resourcesno/resourcesNo never appearing, this is because when CUSTOMRES=no you end up with two rules called resourcesno and no rule called resources. CModule: Added resources_res and resources_messages and resources_templates as well as RESOURCEEXTRA support (from AAsmModule). Copied some block comments from AAsmModule so they're easier to compare. Tested in an IOMD ROM resources phase. Version 6.48. Tagged as 'BuildSys-6_48'

Move ScreenModes to before video drivers

Detail: Components/ROOL/BCM2835, BCM2835Pico, IOMD32, OMAP3, OMAP3Live, OMAP4, Tungsten - Moved ScreenModes (+FPEmulator) to just before the video drivers, so that (once the EDID changes are submitted) the first mode change will be able to use EDID-derived mode timings instead of fixed ones. IOMD change is somewhat non-essential due to lack of EDID reading support, but keeps things consistent with the other ROMs. Also moved PandoraKey to be with the other keyboard (USB) drivers. Admin: Tested on BB-xM, Iyonix, Pandora, Raspberry Pi, RiscPC Version 6.47. Tagged as 'BuildSys-6_47'

Drop 2 tools tlink - a long since abandoned special tool used to link the toolbox modules against TinyStubs around RISC OS 3.50 era, no 32 bit version has ever been made, so by implication it's not being used aasm - the sources were lost some time in the 1990's, and hasn't been supplied as part of the DDE for over a decade

Documentation updated to reflect current tools. Version 6.46. Tagged as 'BuildSys-6_46'

Add FAppend as a standard tool

Revise BBE target

BootCommands 1.39 and later allow 1k command lines with *DO so there's no need to override the definition of ${PERL} any more. Also, add comments to AAsmModule about the various CUSTOM overrides possible. Version 6.45. Tagged as 'BuildSys-6_45'

Correct module filename

Retagged as BuildSys-6_44.

Add Hopper to the disc components

Hopper, PsychoEffects, QTheMusic added to module database. Version 6.44. Tagged as 'BuildSys-6_44'

Added PiCopy to module database

Removed obsolete comment about 3 utilities build with Aasm, they don't, they use objasm. Not tagged.

Missing export added to Disc build

Retagged as BuildSys-6_43.

Repoint module database entry

Version 6.43. Tagged as 'BuildSys-6_43'

Create cut-down Raspberry Pi build

Detail: This is a command-line-only build, designed to operate without an accompanying RISC OS disc image. Also added the GPIO module to the ModuleDB so it can be included in ROM builds. Version 6.42. Tagged as 'BuildSys-6_42'

Reintroduce SDCMOS to OMAP ROMs

Detail: Components/ROOL/OMAP3, Components/ROOL/OMAP4 - Reintroduce SDCMOS to OMAP ROMs. Since SDCMOS 0.10 the module will no longer remain active if hardware CMOS is present, and so should be safe to include in the ROM without risk of poor performance/stability issues if people mistakenly have both hardware CMOS and a CMOS file. Admin: Tested on BB-xM Confirmed that CDMOS is only active if both hardware CMOS is absent and a CMOS file is present Version 6.41. Tagged as 'BuildSys-6_41'

Corrected a couple of details wrt EtherTH module naming

Detail: corrected references from EtherET to EtherTH in moduleDB and Components files Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Version 6.40. Tagged as 'BuildSys-6_40'

Updated to add iMx6 components and modules

Detail: 3 specific lines added into ModuleDB reflecting items in (currently) private branch iMx6 components file added Admin: J Ballance initial Version 6.39. Tagged as 'BuildSys-6_39'

Move Meteors from closed to bsd

Special thanks to the estate of Neil Raine for permission to publish the Meteors sources. Added to disc components. Version 6.38. Tagged as 'BuildSys-6_38'

Mark Squash as a C module

Version 6.37. Tagged as 'BuildSys-6_37'

Change VFPSupport type & source location. Add export to CTools.

Detail: ModuleDB - Changed VFPSupport to a C module located in the mixed folder; required for VFPSupport-0_06 Components/ROOL/CTools - Add VFPSupport export; required for building Debugger-1_86 Admin: Tested with Raspberry Pi & OMAP3 ROMs Version 6.36. Tagged as 'BuildSys-6_36'

Change machine All to All32

Add BASIC[64] to the !System archive

Add RTC as an export on the Disc components (for NetTime) Retire BASICTrans, placing alphabetically pleasing BlendTable in its slot Version 6.35. Tagged as 'BuildSys-6_35'

Change Debugger from being an assembler component to C

Detail: ModuleDB - The Debugger module is now classified C, not assembler, to allow us to safely start using some C code within it Admin: Required for Debugger-1_85 Version 6.34. Tagged as 'BuildSys-6_34'

Add RTC module to module database

Replace RTCAdjust with RTC in IOMD and Tungsten builds. Add RTC to OMAP3 and OMAP4 builds. Version 6.33. Tagged as 'BuildSys-6_33'

Changes to keep GNUmakefiles and Makefiles compatible

Detail: Makefiles/CApp: * Naming of object file variables rationalised in line with CModule * Noted that INSTAPP_VERSION files must also be present in INSTAPP_FILES for compatibility with GNUmakefiles - requires changes to individual top-level makefiles, but not BuildSys Makefiles/CLibrary: * Naming of object file variables rationalised in line with CModule Makefiles/CModule: * Removed unused variable OBJS_ Makefiles/StdTools: * Retired TIDYDESC GNUmakefiles/AppLibs: * Add CONLIB, RMVSN, SYNCLIB GNUmakefiles/CApp: * Default definition of INSTAPP * Naming of object file variables rationalised in line with CModule * CLEAN_DEPEND removed, clean made a double-colon rule (it's worth noting that such additional clean rules are now only executed from the component's top-level directory: this was not true for the old extra_clean rules that this replaces, in the GNUmakefiles case) * Rename of INSTALLAPPFILES to INSTAPP_FILES * Rename of INSTALLAPP_DEPEND to INSTAPP_DEPENDS * Insertion of component version into Desc files now done using AwkVers script rather than the C preprocessor (note, will require editing of Desc files to comply). Also supports versions in Messages and !Run files, controlled by new variable INSTAPP_VERSION GNUmakefiles/CLibrary: * Naming of object file variables rationalised in line with CModule * clean rules now only executed from the component's top-level directory, as with CApp GNUmakefiles/StdTools: * Added INSERTVERSION (AwkVers), retired TIDYDESC * Perl scripts now explicitly passed to perl - no need to chmod +x the scripts in RiscOS/Library * asasm/objasm include paths and APCS/Machine/UserIF predefines set to match Makefiles Admin: Tested in a CTools build Version 6.32. Tagged as 'BuildSys-6_32'

Copy over SA_DEPEND and ROM_DEPEND feature from CModule to AAsmModule

Revert change to Disc component revision 1.59, there's no point providing just the CLib in 310/Modules since it needs CallASWI and FPEmulator which also aren't here. See Components/PlingSystem and the ReadMe improvement in ABRelease-0_56. Version 6.31. Tagged as 'BuildSys-6_31'

Add APCS-R SharedCLib to the 310 subdirectory of !System in the Disc build

Version 6.30. Tagged as 'BuildSys-6_30'

Add BlendTable to ModuleDB & ROM images. Add BlendTable & InverseTable to Disc exports.

Detail: ModuleDB - Added BlendTable Components/ROOL/BCM2835, IOMD32, OMAP4, OMAP4, S3C2440, S3C6410, Tungsten - BlendTable added to all ROMs for use by SpriteExtend Components/ROOL/Disc - BlendTable & InverseTable added to export stage in order to allow CFSI-JPEG to build Admin: OMAP3 ROM tested on BB-xM CFSI-JPEG tested on Iyonix Version 6.29. Tagged as 'BuildSys-6_29'

Add Internet module to PlingSystem components list

Version 6.28. Tagged as 'BuildSys-6_28'

Add EtherY autosense to InetSetup on the disc image

Version 6.27. Tagged as 'BuildSys-6_27'

ADFSFiler added to Disc components for its theme sprites

Version 6.26. Tagged as 'BuildSys-6_26'

All builds now build the Squash module from source

Version 6.25. Tagged as 'BuildSys-6_25'

Added ThemeSetup to module database and disc components

Version 6.24. Tagged as 'BuildSys-6_24'

Update BuildHost for GCC 4

Detail: Makefiles/GCCRules - Makefile containing rules for building tools with GCC 4. These rules are intended to replace the rules in StdRules for when GCC is in use. ModuleDB - Added libgnu4 Components/ROOL/BuildHost - Build libgnu4 instead of libgnu Admin: Building BuildHost now requires a GCC4-based setup (Env-1_25, Modules-0_26, Library-1_63, etc.) Version 6.23. Tagged as 'BuildSys-6_23'

Add SoundControl to Disc exports

Version 6.22. Tagged as 'BuildSys-6_22'

Remove SndSetupVIDC from Disc components

Now in SndSetup. Version 6.21. Tagged as 'BuildSys-6_21'

Shared makefile enhancements

AAsmModule: Comments sync'd with implementation ModuleLibs/AppLibs: Add the RMVersion library CApp: Now APP_OBJS and APP_DBG_OBJS don't need the '.o' suffix in common with OBJS and DBG_OBJS Changed insertion of version numbers to be common for Messages/Obey/Desc files through new 'INSTAPP_VERSION' dummy rule INSTALLAPP_DEPEND renamed to INSTAPP_DEPENDS to match other INSTAPP_stuff CUtil: Use addprefix'd APP_OBJS StdTools: Default SQUISHFLAGS now set Added INSERTVERSION Version 6.20. Tagged as 'BuildSys-6_20'

BCMSupport not needed

Module did nothing, being superceded by VCHIQ. Version 6.19. Tagged as 'BuildSys-6_19'

Sync of OMAP component lists

Version 6.18. Tagged as 'BuildSys-6_18'

Turn off verbose mode for INSTRES

Not tagged.

Relocate !Patch within Utilities directory

The application called !Patch isn't OS version specific so can just be classed as a normal utility. Patched modules & 3rd party applications might be OS specific so could go in N00.Patches, but there aren't currently any of those supplied. Version 6.17. Tagged as 'BuildSys-6_17'

Missing banner from Raspberry theme added

Version 6.16. Tagged as 'BuildSys-6_16'

Extra exports for Wimp

Version 6.15. Tagged as 'BuildSys-6_15'

Build Wimp from source in PlingSystem

Also, don't bother with a duplicate BootCommands post 3.60, the one already in 3.10 (with English messages) will do. Version 6.14. Tagged as 'BuildSys-6_14'

Freeway and RemotePrinterSupport added to export headers phase(s)

Version 6.13. Tagged as 'BuildSys-6_13'

Added SDFS to the Disc components

Used to resolve SWI names by Squish when building !HForm. Version 6.12. Tagged as 'BuildSys-6_12'

Add NetI to modules database

* Include in disc image (needed by InetSetup when TCP/IP is enabled) * Remove portable from the IOMD module listing (demoted to export only) Version 6.11. Tagged as 'BuildSys-6_11'

Move VCHIQ out of disc image and into BCM2835 ROM

Detail: Components/ROOL/BCM2835 - Insert VCHIQ into ROM, just before BCMSound (the first module that uses it) Components/ROOL/Disc - Removed VCHIQ softload, it's both no longer necessary and no longer supported by the makefile Admin: Tested on Raspberry Pi BCM2835 changes require VCHIQ-0_05, and will require relatively recent firmware at runtime Version 6.10. Tagged as 'BuildSys-6_10'

Add DMAManager to IOMD components file

Ditch GameModes dummy module in line with other 5.xx series ROMs it's unlikely that any games pre dating the Risc PC would not need more extensive work to become 32 bit than a simple RMEnsure of a dummy module. Version 6.09. Tagged as 'BuildSys-6_09'

Shunt desktop module into consistent slot 11

TaskManager bravely steps into the void. This is now consistent with the defaults in Kernel-5_35-4_79_2_183. Version 6.08. Tagged as 'BuildSys-6_08'

SysMap table updated

New 'I' for IOMD. Removed 'P' for Phoebe. Version 6.07. Tagged as 'BuildSys-6_07'

Pass 'PCIHardware' into serial device driver on Tungsten

Version 6.06. Tagged as 'BuildSys-6_06'

Retire NetUtils

The only reference to NetUtils is where !InetSetup attempts to load it (silently ignoring any fail). It also outputs this command into "Internet.Startup" but after an RMEnsure of NetFS 5.79. Since these are ROM components files, and in every case NetFS 5.79 is present, NetUtils is redundant. !InetSetup should continue as before since it is part of the universal boot sequence and may find itself on a machine with an older NetFS. Also - moved RTCAdjust up into alphabetical order (this handily keeps the module numbering the same for Tungsten & IOMD as a side effect). Version 6.05. Tagged as 'BuildSys-6_05'

Temporary change to make InstRes run in very verbose mode.

I'm hoping to get to the bottom of the (very tricky to reproduce in a sensible amount of time) crashes during Disc and DiscDev builds. Version 6.04. Not tagged

Add BatMgrHAL to ModuleDB & OMAP3 ROMs

Detail: ModuleDB - Added BatMgrHAL. Point BatMgr at released souces instead of private ones. Components/ROOL/OMAP3, Components/ROOL/OMAP3Live - Added BatMgrHAL to ROM Admin: Tested on BB-xM, Pandora, TouchBook Version 6.04. Tagged as 'BuildSys-6_04'

Add ${SQUISH} and ${NUMBER} to known tool aliases

Version 6.03. Tagged as 'BuildSys-6_03'

Improvements to C tools build.

Detail: It is sensible for the autogenerated swis.h that's included with the C tools to include the maximum number of SWI definitions (normally it only contains definitions for modules that are included in the build). This adds all the necessary exports, except for Hdr:ARM3Cache, which is from an obsolete module that hasn't been publicly released. Admin: Tested in a C tools build. Version 6.02. Tagged as 'BuildSys-6_02'

Removed three libraries from Disc build

Detail: Lib.ModuleTask, Lib.AcornNC and Lib.HTMLLib don't build at present because their makefiles depend upon the Makatic suite that we don't distribute. However, no binaries in the disc build actually require these libraries, so to remove the build errors, the simplest thing is to exclude the libraries from the build. Admin: Tested in a clean-from-CVS disc build Version 6.01. Tagged as 'BuildSys-6_01'

Mini-branch to add FREEZE_DEV_REL switch to Kernel for Raspberry Pi freeze

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_1'

Branch RPiFreeze sync'd from BuildSys-6_11

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_2'

Merge of trunch BuildSys-6_19 to branch RPiFreeze

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_3'

Merge of trunk BuildSys-6_34 to branch RPiFreeze

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_4'

Components for RPiFreeze adjusted

Merge of BuildSys-6_52 to branch

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_5'

Merge of BuildSys-6_64 to branch

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_6'

Add the DEV_REL switch for Pico too

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_7'

Need MimeMap exports for DOSFS

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_8'

Merge of BuildSys-7_04 to branch

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_9'

Merge of BuildSys-7_08 to branch

Version 6.00, Tagged as 'BuildSys-6_00-1_142_2_10'

Merge of BuildSys-7_46 to branch

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_03

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'

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_74

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'

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_35

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'

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-2-g4b5d80fb

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

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_51 to Switcher-1_53

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_75

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'

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

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'

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


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_33

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'

Logs for RiscOS/Sources/HAL/HAL_BCM2835 from BCM2835-0_75-2 to HAL_BCM2835-0_85

This commit was manufactured by cvs2git to create tag 'BCM2835-0_75-2'.

Sprout from master 2018-04-10 19:40:00 UTC Robert Sprowson <rsprowson@gitlab.riscosopen.org> 'Debug UART typo & clarification' Cherrypick from master 2018-12-01 17:59:05 UTC Robert Sprowson <rsprowson@gitlab.riscosopen.org> 'Appease Thor': s/GPIO s/SDIO Cherrypick from Pi3APlus 2018-10-26 19:31:38 UTC Ben Avison <bavison@gitlab.riscosopen.org> 'Add support for Pi model 3A+': hdr/BCM2835

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'

Logs for RiscOS/Sources/HWSupport/BCMSupport from BCMSupport-0_07 to BCMSupport-0_12-1-gdf460bef

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

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_18

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'

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_36-1-ge706bc6b

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

Logs for RiscOS/Sources/HWSupport/USB/USBDriver from USBDriver-1_28 to USBDriver-1_30

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'

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/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-3 to Kernel-6_38

RISC OS 5.26 is basically the same as 5.24, apart from some re-branding

So we achieve it by using this short branch from the revision used in 5.24 Tagged as 'Kernel-6_01-3'

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, 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, 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, Tagged as 'Kernel-5_86-4_129_2_3'

Merge in latest changes from main branch

Version 5.88, 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, Tagged as 'Kernel-5_88-4_129_2_5'

Merge latest changes from main branch

Version 5.89, Tagged as 'Kernel-5_89-4_129_2_6'

Merge in latest changes from main branch

Version 5.97, 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, 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, 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, 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'

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/RISC_OSLib from RISC_OSLib-5_95 to RISC_OSLib-6_06

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'

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

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'

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_64

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'

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/Networking/URI from URI-0_26 to URI-0_27

Fix handle leak on error

If the URL file allocation failed, the file would be left open. Found by cppcheck static analysis. Version 0.27. Tagged as 'URI-0_27'

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_80

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'

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


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_90

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'

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_75

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'

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/ToolboxLib from Libs-0_27 to ToolboxLib-1_17

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'

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_60

Take out gamma enable

While investigations continue on the trunk, simply disable it for now. Version 0.50, 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'

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

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'

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/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/Utilities/Autobuild/ABRelease from ABRelease-0_85-1_84_2_1 to ABRelease-1_00

Uupdate packaging to use Apache rather than Castle licence.

Version 0.85, Tagged as 'ABRelease-0_85-1_84_2_1'

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 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'

The changes in the ROM image from RC5 to RC14 are as follows:

RC6 (RISC OS 5.19 31 Oct 2012):

RC7 (RISC OS 5.19 9 Mar 2013)

RC8 (RISC OS 5.19 19 Mar 2013)

RC10 (RISC OS 5.19 17 Jun 2013)

RC11 (RISC OS 5.21 11 Jul 2013)

RC12 (RISC OS 5.21 3 Mar 2014)

RC12a (RISC OS 5.21 14 Jun 2014)

RC14 (RISC OS 5.21 17 Feb 2015)

The changes in the disc image from RC5 to RC14 are as follows:

RC6 (RISC OS 5.19 31 Oct 2012):

RC7 (RISC OS 5.19 9 Mar 2013)

RC8 (RISC OS 5.19 19 Mar 2013)

RC10 (RISC OS 5.19 17 Jun 2013)

RC11 (RISC OS 5.21 11 Jul 2013)

RC12 (RISC OS 5.21 3 Mar 2014)

RC12a (RISC OS 5.21 14 Jun 2014)

RC14 (RISC OS 5.21 17 Feb 2015)

The latest beta distribution of RISC OS (RC14) is completely self-contained, occupying about 266Mbytes of storage on the SD card (including the ROM) leaving some 1609Mbytes free. It is distributed in the form of a zipped SD card 'image' - 99.9Mbytes to download and it unzips to a file 'riscos-2015-02-17-RC14.img' 1870Mbyes in size. It is thus suitable for all SD cards of 2Gbytes and above and may be written to them using Win32DiskImager. It will start up very swiftly into a fully functioning desktop. The first time it starts up, the default browser, NetSurf, will do some font-scanning and a 'welcome' page will appear on screen. Networking is now set to be active by default, if you have an Ethernet cable plugged in.

Further development of RISC OS continues but the RC14 beta release is latest official and supported release. Alpha development ROMs are built daily with improvements, fixes and the inevitable occasional bugs and broken features as development proceeds. These alpha images are available for those who know what to do without help. Since 17th February 2015 there have been some developments including work on reading EDID information from the monitor.

No additional hardware is required to support CMOS 'non volatile' machine settings as a module SDCMOS provides this functionality, storing these settings within the ROM image on the SD card. Additional hardware is available which provides a real time clock and battery, but this can otherwise be set automatically from the internet.

Known issues with the RC14 build: