Changes: Disc 5.26 to RC16


Components changed

Components added

Components removed

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_22 to BuildSys-6_00-RPiFreeze_12

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

Repoint CALLXLIB

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, 1.142.2.1. Tagged as 'BuildSys-6_00-1_142_2_1'

Branch RPiFreeze sync'd from BuildSys-6_11

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

Merge of trunch BuildSys-6_19 to branch RPiFreeze

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

Merge of trunk BuildSys-6_34 to branch RPiFreeze

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

Components for RPiFreeze adjusted

Merge of BuildSys-6_52 to branch

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

Merge of BuildSys-6_64 to branch

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

Add the DEV_REL switch for Pico too

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

Need MimeMap exports for DOSFS

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

Merge of BuildSys-7_04 to branch

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

Merge of BuildSys-7_08 to branch

Version 6.00, 1.142.2.10. 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/ChangeFSI from ChangeFSI-1_61 to ChangeFSI-1_63

Docs improvement

Mention how to release the sprite area when called as a library. Use TRUE/FALSE for things that are notionally documented as booleans. Version 1.62. Tagged as 'ChangeFSI-1_62'

Further docs improvements

Output formats were only partially described, and supported * Mention IRLAM output format switch in the CmdBasUse docs, add an example to the tests * Explain what 'p15' is in CmdBasUse (was only explained in the input formats docs) * Prefer S15 to S16 Delete support for C15 output. This appears to have been experimental as the resulting output had an embedded comment saying YUV but the data that followed was identical to a P15 RGB image. Also, ChangeFSI refused to load the C15 image it just wrote. Delete support for S24 output switch. This was an undocumented alias for S32. Add S15 as a possible output mode and prefer its use for 32k sprites - freeing up S16 for future 64k sprite support (and, logically S12 for 4k sprites). Retagged as 'ChangeFSI-1_62'

Add 4k and 64k sprite output options

Update ChangeFSI's 16bpp output code paths to convert to 4k and 64k sprites (as well as the pre existing 32k RISC OS 3.5 style). Also, simplify the sprite output dialogue a little by grouping the colours together and the DPI as an option, to halve the number of radio buttons. If ChangeFSI is run on a kernel without 4k/64k support, those two depths are greyed out in the GUI (since after processing the desktop frontend expects to SpriteOp plot them), however at the command line the 2 new depths are always available (as S12 and S16). ChangeFSI: Add the conversion code DesktopFE: Rework dialogue with fewer radio icons, add fading logic Version 1.63. Tagged as 'ChangeFSI-1_63'


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/Diversions/MemNow from MemNow-0_07 to MemNow-0_08

Support over 2GB of RAM

Where supported, use Wimp_Extend 15 to read the amount of free memory (in units of pages), in order to avoid hitting the 2GB limit imposed by the byte-based Wimp_SlotSize. Text buffer also enlarged, to avoid it overflowing once we have machines with 10GB or more. Version 0.08. Tagged as 'MemNow-0_08'


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/Maestro from Maestro-2_05 to Maestro-2_13

User interface overhaul

Detail: Largely rewritten interface, designed to be more Style Guide compliant, as well as enabling easy addition of new features. Key changes are: * New templates, sprites, messages and supporting Wimp code. Some bugs squashed. Menus and dialogue boxes redesigned * Keypresses and input focus added * Breve, semibreve and minim rests are now properly distinguished and given their own sprites and positions * Double barlines can be added * The only other functional change is that if MIDI is present Maestro no longer sends music to both the internal system and the MIDI device when playing. The user can select which one to use from the Instruments window, and there is a tidier method of selecting MIDI channels. Admin: Submission from Chris Wraight. Version 2.10. Tagged as 'Maestro-2_10'

Further UI improvements

Detail: - Barline popup menu is now the right width for the title string - Toolbar opens at the right size if the main window is very wide on first open - MIDI channel menu handles ticks correctly - Audio output is only set when the dialogue box's Set button is clicked - Double barlines implemented in printing as well as on screen - Double barlines, key signatures and time signatures positioned and spaced more accurately - Tweaks to sprite handling to ensure correct alignment in all screen modes (sdsqu, sharp, squ, streble) Admin: Submission from Chris Wraight Version 2.11. Tagged as 'Maestro-2_11'

Comment and indentation improvements

Detail: Readability improvements ahead of some other changes Admin: Submission from Chris Wraight. Version 2.12. Tagged as 'Maestro-2_12'

Rest positioning changes

Detail: The vertical position of rests can now be set. As a consequence of this, you can now also put more than one rest on the same vertical column on a stave. A longstanding redraw bug has been fixed, meaning that multi-part scores shouldn't experience corruption when notes/rests are added or deleted in multi-part staves. Minor spacing tweaks made to barlines and rests. Admin: Submission from Chris Wraight. Version 2.13. Tagged as 'Maestro-2_13'


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/Apps/SciCalc from SciCalc-0_87 to SciCalc-0_90

SciCalc summary fix

Detail: Fix bugs with decimal point entry into the summary bar reported by Fred Graute See https://www.riscosopen.org/forum/forums/4/topics/14259 Version 0.88. Tagged as 'SciCalc-0_88'

[470] Fix International decimal point operation

A typo in the print field format was preventing correct operation when the decimal point character was anything other than '.' Also, reinsert a local @% setting when checking for BASIC64 at startup. Tested arithmetic with decimal points characters '.' and ','. Version 0.89. Tagged as 'SciCalc-0_89'

[412] Additional fix for operator precedence

An earlier fix to ensure multiplication always had the correct precedence failed to include the case of brackets as implied multiplication, as reported by the first part of ticket #412 (marked as already fixed). Now fixed in this case. Tested with the example '6/2(1+2)' and other expressions. Version 0.90. Tagged as 'SciCalc-0_90'


Logs for RiscOS/Sources/Apps/SparkFSBin from SparkFS-1_44 to SparkFS-1_44-1

Makefile changed to use CApp

Copy this in based on the CApp makefile, but otherwise no net change. Tagged as SparkFS-1_44-1.


Logs for RiscOS/Sources/Apps/SquashApp from Squash-0_56 to Squash-0_57

Fix memory leak on error

If 2nd malloc failed, 1st block was leaked. Found by cppcheck static analysis. Makefile tweaked to not use APP_OBJS so a debug target can also be built. Version 0.57. Tagged as 'Squash-0_57'


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/Switcher from Switcher-1_50 to Switcher-1_53

Update artwork to reflect change of ownership of RISC OS

Version 1.51. Tagged as 'Switcher-1_51'

Support over 2GB of RAM

This updates the Tasks window and related code so that memory amounts are tracked in units of KB instead of bytes, allowing the code to support machines with more than 2GB of RAM. Where relevant, newer page-based OS APIs are used instead of older byte-based ones, which should future-proof the code for operation on machines with over 4GB of RAM (potentially up to the 1TB limit supported by the ARMv7 large physical address extension). Use definitions from Hdr:OSMem. Version 1.52. Tagged as 'Switcher-1_52'

Change emitted line 1 comment

Say "Desktop settings" at the top of the file saved from the menu entry of the same name. Comments in code also changed or made non-specific. Version 1.53. Tagged as 'Switcher-1_53'


Logs for RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_80 to TaskWindow-0_81

Document the build options

Detail: s/Taskman - Add comments for the different build switches, so it's more obvious what they do. Remove a couple of unreferenced switches. Admin: Resulting binary unchanged Version 0.80. Not tagged

Use OsByte header

Detail: 11 local definitions of OsBytes replaced with those from the central headers. Admin: Built as binary identical.

Build fix

Detail: ADR->ADRL for standalone builds, such as Disc or CTools environment.

Fix for Escape return registers on OS_Byte 129

Detail: Was checking EscPending (which had been set to 0 by RestoreEscape) rather than EscWasSet, and so the return results (R2=27 and C=1) of an Escape during OS_Byte 129 were lost, R2=0 and C=0 were instead returned. Admin: Fixes https://www.riscosopen.org/tracker/tickets/467 Version 0.81. Tagged as 'TaskWindow-0_81'


Logs for RiscOS/Sources/Desktop/Wimp from Wimp-5_61 to Wimp-5_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/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/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/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/Joystick from Joystick-0_28 to Joystick-0_29

Fix accidental zero page access & arg vetting

Service.s: Only claim OS_Byte 128 for subreasons 0-4 (for the joystick), leave 5+ alone. Ticky.s: Fix control register read to be IOMD relative, not 0 relative, resulting in accidental zero page accesses. Version 0.29. Tagged as 'Joystick-0_29'


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

Merge Kernel-5_86

Detail: hdr/EtherDevice: Merge in Kernel-5_86 to keep branch up-to-date with MAIN Admin: Untested Version 5.86, 4.129.2.1. Tagged as 'Kernel-5_86-4_129_2_1'

Initial SMP changes

Detail: This commit lays some of the groundwork for SMP support within the HAL, kernel, and OS. Makefile, hdr/HALDevice, hdr/DBellDevice - Add definitions for a doorbell HAL device, to allow CPU cores to signal each other via interrupts hdr/HALEntries - Repurpose HAL_Matrix and HAL_Touchscreen entry points for new SMP-related entry points. Add a couple of IRQ-related definitions. hdr/KernelWS - Boost MaxInterrupts to 256 hdr/Options - Add new SMP build switch to control whether the kernel is built in SMP-friendly mode or not. SMP-friendly kernels should still run on single-core machines, but may behave slightly differently. s/ARMops - Make as many ARMops SMP-safe as possible, relying on hardware support for broadcasting of cache/TLB maintenance operations s/ExtraSWIs - Make SMP-friendly full OS_SynchroniseCodeAreas only sync application space and the RMA (full-cache IMB not really possible with SMP) s/NewIRQs - Update IRQ despatcher comments to (hopefully) reflect reality Docs/SMP/HAL, Docs/SMP/IRQ - Add documentation covering the new HAL calls and IRQ behaviour Admin: Tested on Raspberry Pi 2, 3, OMAP4, iMX6 Version 5.86, 4.129.2.2. Tagged as 'Kernel-5_86-4_129_2_2'

Add OS_Memory 19, which is intended to replace the OS_Memory 0 "make uncacheable" feature, when used for DMA

Detail: Making pages uncacheable to allow them to be used with DMA can be troublesome for a number of reasons: * Many processors ignore cache hits for non-cacheable pages, so to avoid breaking any IRQ handlers the page table manipulation + cache maintenance must be performed with IRQs disabled, impacting the IRQ latency of the system * Some processors don't support LDREX/STREX to non-cacheable pages * In SMP setups it may be necessary to temporarily park the other cores somewhere safe, or perform some other explicit synchronisation to make sure they all have consistent views of the cache/TLB The above issues are most likely to cause problems when the page is shared by multiple programs; a DMA operation which targets one part of a page could impact the programs which are using the other parts. To combat these problems, OS_Memory 19 is being introduced, which allows DMA cache coherency/address translation to be performed without altering the attributes of the pages. Files changed: - hdr/OSMem - Add definitions for OS_Memory 19 - s/MemInfo - Add OS_Memory 19 implementation Admin: Tested on Raspberry Pi 3, iMx6 Version 5.86, 4.129.2.3. Tagged as 'Kernel-5_86-4_129_2_3'

Merge in latest changes from main branch

Version 5.88, 4.129.2.4. Tagged as 'Kernel-5_88-4_129_2_4'

Fix global OS_SynchroniseCodeAreas. ARMop tweaks.

Detail: s/ExtraSWIs - Fix global OS_SynchroniseCodeAreas using the wrong appspace size; would have resulted in appspace only being partially synced if some pages were mapped out due to lazy swapping s/ARMops, s/ExtraSWIs, s/MemMap2 - Simplify code by making DCache_LineLen / ICache_LineLen store the actual line length values on ARMv7+ instead of the log2 values. Optimise SMP I-cache invalidation by allowing it to do a global invalidate. Ensure all ARMv7+ range checks use LO instead of NE, to avoid any problems with mismatched I/D line lengths (can't be sure the op range was rounded to the larger of the two) Admin: Tested on iMX6 Version 5.88, 4.129.2.5. Tagged as 'Kernel-5_88-4_129_2_5'

Merge latest changes from main branch

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

Merge in latest changes from main branch

Version 5.97, 4.129.2.7. Tagged as 'Kernel-5_97-4_129_2_7'

Get a tag for 5.24

Back to odd numbered development

Version 6.02. Tagged as 'Kernel-6_02'

Increase number of vectors supported by the kernel to 96.

Version 6.03. Tagged as 'Kernel-6_03'

Disable error block validity checks

Detail: The error block checks introduced in Kernel-5_35-4_79_2_313 are generating a few too many false positives and edge cases, so take the safe option of just disabling them rather than trying to tweak the rules further. Error pointers will still be checked, but the content of the error blocks will not. hdr/Options - Add CheckErrorBlocks switch so we can easily turn the code back on again in the future if necessary s/Kernel - Switch out all the code relating to error number checks, except for the dummy load of the first word of the error block, since that's still useful as a pointer validity check hdr/KernelWS - Revise SWIDespatch_Size definition so it's easier for it to cope with the various factors which may affect the despatcher size Admin: Tested on PandaBoard Relevant discussion: https://www.riscosopen.org/forum/forums/11/topics/11133 Version 6.04. Tagged as 'Kernel-6_04'

Added HALDeviceID_RTC_PCF8523

Detail: Admin: Version 6.05. Tagged as 'Kernel-6_05'

Merge in latest changes from main branch

Version 6.05, 4.129.2.8. Tagged as 'Kernel-6_05-4_129_2_8'

Update mode variable definitions

Detail: hdr/VduExt: - Introduce mode variable 13, for specifying the minimum number of screen banks that are guaranteed to be available. Eventually the kernel will make use of this during mode vetting & selection, to give programs a simple and reliable way of selecting banked screen modes. Currently however it's only supported by VideoOverlay and the corresponding GraphicsV overlay APIs. - Extend the mode flags to allow display rotation & flipping to be specified. This is used to indicate that the framebuffer accessed by the CPU is not in the same orientation as what the user is seeing. Again, currently this is only supported by VideoOverlay and the corresponding GraphicsV overlay APIs. Admin: Tested on OMAP3, OMAP4 Version 6.06. Tagged as 'Kernel-6_06'

Various kernel cleanups

Detail: NewReset.s: Remove warning about soft reset, this is not supported any longer MsgCode.s: Reload LR after potentially changing mode PMF/osinit.s: Delete vestiges of soft reset support Admin: Submission from Timothy Baldwin. Version 6.07. Tagged as 'Kernel-6_07'

Simplify initial AplSpace claim

Detail: As the application slot is now a normal dynamic area, there's no need to manipulate the CAM directly. Convert FudgeSomeAppSpace into a OS_ChangeDynamicArea SWI followed by memset(). ChangeDyn.s: Offset by 32k to account for the -32k that dynamic area -1 has. NewReset.s: Delete FudgeSomeAppSpace and replace as above. Admin: Submission from Timothy Baldwin. Version 6.08. Tagged as 'Kernel-6_08'

Merge latest changes from HEAD

Version 6.08, 4.129.2.9. Tagged as 'Kernel-6_08-4_129_2_9'

Allow SMP build switch to be overridden by components file

Detail: hdr/Options - The setting of the SMP switch can now be controlled by specifying the correct ASFLAGS, e.g. ASFLAGS="-PD \"SMP SETL {FALSE}\"" Admin: Untested Version 6.08, 4.129.2.10. Tagged as 'Kernel-6_08-4_129_2_10'

Merge SMP branch to trunk

Detail: Since the current SMP changes are fairly minor, and the trunk is seeing most development, from a maintenance perspective it makes sense to merge the changes to trunk. This will also make sure they get some wider testing ready for when the next round of SMP development takes place. Changes: - Docs/SMP - New docs folder describing SMP-related changes to the HAL and interrupt handling. Some of the IRQ changes can also be taken advantage of by single-core devices, since it introduces a way to describe which interrupt sources can be routed to IRQ & FIQ - Makefile, hdr/DBellDevice, hdr/HALDevice - New HAL device for an inter-processor software-generated interrupt source ("doorbell") - hdr/HALEntries - Reuse the unused matrix keyboard & touchscreen HAL entry points for the new IRQ handling & SMP-related HAL calls - hdr/KernelWS - Bump up MaxInterrupts - hdr/OSMem, s/MemInfo - Introduce OS_Memory 19, to allow for DMA to/from cacheable memory without actually altering the cacheability of the pages (which can be even more tricky in SMP systems than it is in uniprocessor systems) - hdr/Options - Introduce SMP build switch. Currently this controls whether the ARMops will operate in "SMP-friendly" mode or not (when running on MP processors) - s/ARMops, s/MemMap2 - Introduce the ARMv7MP ARMop implementation. Simplify DCache_LineLen / ICache_LineLen handling for WB_CR7_Lx so that it's the plain value rather than log2(n)-2 - s/ExtraSWIs - If ARMops are in SMP-friendly mode, global OS_SynchroniseCodeAreas now only syncs application space and the RMA. This is because there is no trivial MP-safe global IMB operation available. This will also make global OS_SynchroniseCodeAreas significantly slower, but the documentation has always warned against performing a global IMB for just that reason, so code that suffers performance penalties should really try and switch to a ranged IMB. - s/NewIRQs - Update some comments regarding IRQ handler entry/exit conditions Admin: Untested Version 6.09. Tagged as 'Kernel-6_09'

Fix OS_Memory 0 "make temporarily uncacheable" not reporting errors

Detail: s/MemInfo - The wrapper around OS_Memory 0 introduced in Kernel-5_35-4_79_2_311 was preserving the wrong PSR field on exit, causing any error generated by the core code to be lost. Admin: Tested on Iyonix Fixes *screensave saving mostly white pixels (address translation for "external" VRAM should have failed and caused ADFS to fall back to a bounce buffer) Is also likely to be the cause of https://www.riscosopen.org/forum/forums/5/topics/11713 (address translation should have failed for soft ROM) Version 6.10. Tagged as 'Kernel-6_10'

Evict ECFIndex and PalIndex from VDU workspace

Detail: ECFIndex and PalIndex claim to be mode variables, but it's impossible for extension modes to specify their values. Since they're easy to calculate from the ModeFlags and Log2BPP values, drop them from the mode workspace (+ table of builtin modes) and calculate them on the fly instead. File changes: - hdr/KernelWS - Drop ECFIndex & PalIndex from workspace - s/vdu/vdumodes - Adjust workspace definition, drop ECFIndex & PalIndex values from VWSTAB - s/vdu/vdudriver - Remove now-redundant copy loop from ModeChangeSub. Remove code from GenerateModeSelectorVars that sets up the ECFIndex & PalIndex values on the stack - s/vdu/vdugrafl - Adjust copy loop in SwitchOutputToSprite/Mask - s/vdu/vdupalette, s/vdu/vdupalxx - Add GetPalIndex routine to generate PalIndex on the fly. Drop the obsolete 16bpp palette/gamma table and shuffle the other entries to simplify GetPalIndex a bit. - s/vdu/vduplot - Add GetECFIndex routine to generate ECFIndex on the fly. Also, fix things so that mode 0 isn't the only rectangular-pixel mode which uses the special rectangular-pixel ECF patterns (index 0 vs. index 4). Fiddle with ExportedHLine a bit to avoid an out-of-range ADR. - s/NewReset - Fix UAL warning for MOV R0, AppSpaceStart. Adjust memset to not assume 512KB is the correct amount Admin: Tested on Raspberry Pi 3 Version 6.11. Tagged as 'Kernel-6_11'

Fix OS_Hardware 3 to be re-entrant

Detail: s/HAL - OS_Hardware 3 (remove HAL device) will now re-scan the device list for the device following the Service_Hardware call, so that the device list won't become corrupt if the service call triggers addition/removal of devices. Admin: Tested on iMX6 *HDMIOff now correctly removes the HDMI audio device and SoundDMA's software mixer device (SoundDMA removes mixer in response to the HDMI audio device vanishing, but re-entrancy bug meant that the HDMI device was left on the list) Note that this only covers re-entrancy via Service_Hardware. OS_Hardware 2/3/4/5 are not re-entrant from other locations (e.g. IRQ handlers or memory allocation service calls). Version 6.12. Tagged as 'Kernel-6_12'

Improve detection of invalid/unsupported screen modes

Detail: s/vdu/vdudriver - When using mode selector blocks, don't allow the system to switch into double-vertical, double-pixel, or BBC-gap modes which are in colour depths unsupported by the kernel Admin: Tested on BB-xM Version 6.13. Tagged as 'Kernel-6_13'

Nightly beta builds leapfrog RISC OS 5.26

Attempt to tidy up substitute screen mode selection logic

Detail: Over the years the OS's substitute screen mode selection logic has grown to be a tangled mess, and the logic it does implement isn't always very useful. Additionally, the kernel is structured in such a way that it can be hard for modules to override it. This set of changes aims to fix the many of the problems, by doing the following: - Moving all substitute mode selection logic out of the core VDU driver code and into a Service_ModeTranslation handler. This means you now only have one place in the kernel to look instead of several, and modules can override the behaviour by claiming/blocking the service call as appropriate. - Moving handling of the built-in VIDC lists out of the core VDU driver code and into a Service_ModeExtension handler. This means programs can now inspect these VIDC lists by issuing the right service call (although you are essentially limited to lists which the GraphicsV driver is OK with) - Moving *TV interlace & offset adjustment logic into the Service_ModeExtension handler, since they're legacy things which can be handled more cleanly for MDF/EDID (and the old code was poking memory the kernel didn't own) - Adding a Service_EnumerateScreenModes implementation, so that if you end up in the desktop with ScreenModes non-functional, the display manager at least has something useful to show you - Enhancing the handling of the built-in numbered modes so that they are now available in any colour depth; the Service_ModeExtension handler (and related handlers) treat the builtin VIDC lists as a set of mode timings, not a discrete set of modes - Substitute mode selection logic is a complete re-write. Instead of trying a handful of numbered fallback modes, it now tries: - Same mode but at higher colour depths - Same mode but at lower colour depths - Alternate resolutions (half-width mode with no double-pixel if original request was for double-pixel, and default resolution for monitor type) - Combined with the logic to allow the builtin VIDC lists to be used at any colour depth, this means that the kernel should now be able to find substitute modes for machines which lack support for <=8bpp modes (e.g. OMAP5) - Additionally the mode substitution code will attempt to retain as many properties of the originally requested mode as possible (eigen values, gap mode type, etc.) Other improvements: - The kernel now actually vets the builtin VIDC lists instead of assuming that they'll work (which also means they'll have the correct ExtraBytes value, where applicable) - The kernel now uses GraphicsV 19 (VetMode2) to vet the mode during the mode switch process, using the result to detect where the framebuffer will be placed. This allows for GraphicsV drivers to switch between DA 2 and external framestores on a per-mode basis. - The kernel now supports mode selectors which specify LineLength values which are larger than necessary; this will get translated to a suitable ExtraBytes control list item (+ combined with whatever padding the driver indicates is necessary via the VetMode2 result) File changes: - hdr/KernelWS - Reserve space for a VIDC list, since the Service_ModeExtension implementation typically can't use the built-in list as-is - s/Arthur3 - Issue Service_ModeFileChanged when the configured monitor type is changed, so that DisplayManager + friends are aware that the set of available modes has changed - s/GetAll - Fiddle with GETs a bit - s/MemMap2 - Extra LTORG - s/NewIRQs - Small routine to install/uninstall false VSync routine (previously from PushModeInfo, which wasn't really the appropriate place for it) - s/Utility - Hook up the extra service call handlers - s/vdu/legacymodes - New file containing the new service call implementations, and some related code - s/vdu/vdudecl - Move mode workspace definition here, from vdumodes - s/vdu/vdudriver - Remove assorted bits of mode substitution code. Plug in new bits for calling GraphicsV 19 during mode set, and deal with ExtraBytes/LineLength during PushModeInfo - s/vdu/vdumodes - Move some workspace definitions to s/vdu/vdudecl. Tweak how the builtin VIDC lists are stored. - s/vdu/vduswis - Rip out more mode substitution code. Issue Service_ModeFileChanged when monitor type is changed by OS_ScreenMode. Admin: Tested on Raspberry Pi 3, Iyonix, IGEPv5 Version 6.14. Tagged as 'Kernel-6_14'

Fix dodgy ranged ICache cleans when using ARMv7MP ARMops

Detail: s/ARMops - If the ICacheInvalidate macro was told to pull a2, it would pull it before invoking ICache_InvalidateRange, causing the end address of the range to be lost. Avoid this by only pulling the registers after the ranged call. Also optimise MMU_ChangingEntry to go straight to ICache_InvalidateRange instead of doing a redundant range size check. Admin: Tested on OMAP5 Potentially fixes lockup/long stall seen when using PhotoDesk, reported by Willi Theiss Version 6.15. Tagged as 'Kernel-6_15'

Fix FindOKMode not recovering properly from unsupported VIDC lists

Detail: s/vdu/vduswis - Fix 18 year old register corruption bug in FindOKMode which would prevent it from falling back to Service_ModeTranslation if Service_ModeExtension returned a VIDC list but the VIDC list was rejected by the GraphicsV driver s/vdu/vdudriver - Also, change a couple of error cases in ModeChangeSub so that they use the "Screen mode not available" error instead of the incorrect "Not enough screen memory" error. Admin: Tested on Raspberry Pi 3 Fixes issue reported on forums where if AnyMode is loaded, numbered modes in unsupported colour depths weren't being replaced with substitutes (although note that there are still some AnyMode-related issues to resolve) https://www.riscosopen.org/forum/forums/4/topics/12773 Version 6.16. Tagged as 'Kernel-6_16'

Service_ModeExtension tweak + docs update

Detail: s/vdu/legacymodes - Make the Service_ModeExtension implementation automatically use ExtraBytes to request that the row length is a multiple of a word (since things fail with non-word aligned rows) hdr/VIDCList - Un-deprecate SyncPol bits 2 & 3 and improve the comments to indicate the difference between SyncPol interlace and control list interlace Admin: Tested on BB-xM Version 6.17. Tagged as 'Kernel-6_17'

Palette/gamma optimisations

Detail: s/vdu/vdupalxx: - Fix conditional code sequence in PV_BulkWrite which meant that the greyscale palette flag was being recalculated when the border or pointer colour was changed. - Change PV_1stFlashState / PV_2ndFlashState to act as NOPs in true colour modes, which helps to avoid regular redundant gamma table updates (due to the flashing colour logic in the VSync handler). Admin: Tested on Raspberry Pi 3 Version 6.18. Tagged as 'Kernel-6_18'

Don't pointlessly doubly-map external framestores

Detail: s/vdu/vdudriver - When mapping external framestores, only double-map them if the driver supports hardware scrolling. Avoids wasting IO address space, and reduces IO space fragmentation if the framestore address changes Admin: Tested on Raspberry Pi 3 Version 6.19. Tagged as 'Kernel-6_19'

Set BEN bit in SCTLR

Without this, some CPUs (including Cortex-A72) take the undefined instruction trap when encountering any CP15-encoded barrier instructions. Requires RiscOS/Sources/Programmer/HdrSrc!1 Version 6.20. Tagged as 'Kernel-6_20'

Move former ControlList_Interlaced item into SyncPol flags

ControlList_Interlaced is taken to have meant "output interlaced sync on H/V" and "configure DMA to show alternate lines in the framestore on alternate fields", therefore SyncPol flags mean: b43 00 = 'normal' progressive scan 01 = interlaced sync, but both fields show the same image 10 = (invalid) 11 = interlaced sync, fields use alternate lines from the image Version 6.21. Tagged as 'Kernel-6_21'

Support permanent mapping of IO above 4GB using supersections

This is facilitated by two extended calls. From the HAL: * RISCOS_MapInIO64 allows the physical address to be specified as 64-bit From the OS: * OS_Memory 21 acts like OS_Memory 13, but takes a 64-bit physical address There is no need to extend RISCOS_LogToPhys, instead we change its return type to uint64_t. Any existing HALs will only read the a1 register, thereby narrowing the result to 32 bits, which is fine because all existing HALs only expected a 32-bit physical address space anyway. Internally, RISCOS_MapInIO has been rewritten to detect and use supersections for IO regions that end above 4GB. Areas that straddle the 4GB boundary should also work, although if you then search for a sub-area that doesn't, it won't find a match and will instead map it in again using vanilla sections - this is enough of an edge case that I don't think we need to worry about it too much. The rewrite also conveniently fixes a bug in the old code: if the area being mapped in went all the way up to physical address 0xFFFFFFFF (inclusive) then only the first megabyte of the area was actually mapped in due to a loop termination issue. Requires RiscOS/Sources/Programmer/HdrSrc!2

Support temporary mapping of IO above 4GB using supersections

Add a new reason code, OS_Memory 22, equivalent to OS_Memory 14, but accepting a 64-bit physical address in r1/r2. Current ARM architectures can only express 40-bit or 32-bit physical addresses in their page tables (depending on whether they feature the LPAE extension or not) so unlike OS_Memory 14, OS_Memory 22 can return an error if an invalid physical address has been supplied. OS_Memory 15 should still be used to release a temporary mapping, whether you claimed it using OS_Memory 14 or OS_Memory 22. The logical memory map has had to change to accommodate supersection mapping of the physical access window, which needs to be 16MB wide and aligned to a 16MB boundary. This results in there being 16MB less logical address space available for dynamic areas on all platforms (sorry) and there is now a 1MB hole spare in the system address range (above IO). The internal function RISCOS_AccessPhysicalAddress has been changed to accept a 64-bit physical address. This function has been a candidate for adding to the kernel entry points from the HAL for a long time - enough that it features in the original HAL documentation - but has not been so added (at least not yet) so there are no API compatibility issues there. Requires RiscOS/Sources/Programmer/HdrSrc!2

Support supersection-mapped memory in OS_Memory 24

To achieve this: * DecodeL1Entry and DecodeL2Entry return 64-bit physical addresses in r0 and r1, with additional return values shuffled up to r2 and r3 * DecodeL1Entry now returns the section size, so callers can distinguish section- from supersection-mapped memory * PhysAddrToPageNo now accepts a 64-bit address (though since the physical RAM table is currently still all 32-bit, it will report any top-word-set addresses as being not in RAM) Version 6.22. Tagged as 'Kernel-6_22'

Fix a couple of RISCOS_MapInIO bugs

Detail: - s/HAL - Fix ADD v. SUB muddle that could prevent addresses from being rounded down correctly. Fix incorrect logical address being returned to caller on pre-ARMv6 machines due to PageTableSync corrupting a1. - s/NewReset - Initialising the CMOS RAM cache while in the middle of setting up the processor vectors feels a bit silly. Move the code to just afterwards so that it feels a bit safer, and so that early crashes are easier to debug (processor vectors in stable state) Admin: Tested on Iyonix. Fixes ROM softload failure reported on forums: https://www.riscosopen.org/forum/forums/11/topics/14749 Version 6.23. Tagged as 'Kernel-6_23'

Allow runtime adjustment of AplWorkMaxSize

Detail: This adds a new OS_DynamicArea reason code, 26, for adjusting AplWorkMaxSize at runtime. This allows compatibility tools such as Aemulor to adjust the limit without resorting to patching the kernel. Any adjustment made to the value will affect the upper limit of application space, and the lower limit of dynamic area placement. Attempting to adjust beyond the compile-time upper/default limit, or such that it will interfere with existing dynamic areas / wimpslots, will result in an error. Relevant forum thread: https://www.riscosopen.org/forum/forums/11/topics/14734 Admin: Tested on BB-xM, desktop active & inactive Version 6.24. Tagged as 'Kernel-6_24'

Remove duplicated documents

Between RISC OS 3.6 and 3.7 the directory was renamed from Doc to Docs and was duplicated during CVS import. Fix by deleting Doc. Identical files remain in Docs. Version 6.24. Not tagged

Adjust exception error messages to show correct address.

Detail: Add offset parameter to DumpyTheRegisters in R4 Shuffle internal register use up one Set R4 to offset before calling. Arbitrary offset of 0 for unreachable address exception handler. Admin: Tested in RPCEmu.

Adjust undefined instruction error message to show correct address on Thumb.

Version 6.25. Tagged as 'Kernel-6_25'

Fix heap testbed

Detail: Kernel-5_44 tweaked the heap manager to try and avoid creating small free blocks. Adjust HeapTest's block size checks so that it allows for this behaviour. Admin: Tested briefly

Add support for HeapReason_GetSkewAligned

Detail: Similar to HeapReason_GetAligned, GetSkewAligned is used for allocating aligned blocks (with optional boundary limit). However instead of using the logical address of the user portion of the block for the alignment calculation, it uses an arbitrary offset specified in R5. This makes it useful for clients such as the PCI module, which care about the physical alignment of blocks rather than logical alignment. Admin: Tested with heaptest

Add cross-check support to heaptest

Version 6.26. Tagged as 'Kernel-6_26'

Add RISC OS Limited OS_ReadSysInfo 6 items

This makes SVLK and NVECTORS available. Version 6.27. Tagged as 'Kernel-6_27'

Remove some obsolete definitions for clarity

* MinAplWork isn't used. * SuperMode isn't used and is less well known than "SWI OS_EnterOS". * MEMCADR is now only a magic value returned by OS_UpdateMEMC, so it is clearer to include it literally with comment. Added a comment to explain the baffling combination of the MEMC1 control register's address with it's value. Version 6.27. Not tagged

Allow reservation of memory pages

This change adds a new OS_Memory reason code, 23, for reserving memory without actually assigning it to a dynamic area. Other dynamic areas can still use the memory, but only the code that reserved it will be allowed to claim exclusive use over it (i.e. PageFlags_Unavailable). This is useful for systems such as the PCI heap, where physically contiguous memory is required, but the memory isn't needed all of the time. By reserving the pages, it allows other regular DAs to make use of the memory when the PCI heap is small. But when the PCI heap needs to grow, it guarantees that (if there's enough free memory in the system) the previously reserved pages can be allocated to the PCI heap. Notes: * Reservations are handled on an honour system; there's no checking that the program that reserved the memory is the one attempting to map it in. * For regular NeedsSpecificPages DAs, reserved pages can only be used if the special "RESV" R0 return value is used. * For PMP DAs, reserved pages can only be made Unavailable if the entry in the page block also specifies the Reserved page flag. The actual state of the Reserved flag can't be modified via PMP DA ops, the flag is only used to indicate the caller's permission/intent to make the page Unavailable. * If a PMP DA tries to make a Reserved page Unavailable without specifying the Reserved flag, the kernel will try to swap it out for a replacement page taken from the free pool (preserving the contents and generating Service_PagesUnsafe / Service_PagesSafe, as if another DA had claimed the page) Version 6.28. Tagged as 'Kernel-6_28'

Add GENET to the list of HAL devices

Version 6.28. Not tagged

Add OS_DynamicArea 27+28, for supporting lots of RAM

OS_DynamicArea 27 is the same as OS_DynamicArea 5 ("return free memory"), except the result is measured in pages instead of bytes, allowing it to behave sensibly on machines with many gigabytes of RAM. Similarly, OS_DynamicArea 28 is the same as OS_DynamicArea 7 (internal DA enumeration call used by TaskManager), except the returned size values are measured in pages instead of bytes. A flags word has also been added to allow for more expansion in the future. Hdr:OSMem now also contains some more definitions which external code will find useful. Version 6.29. Tagged as 'Kernel-6_29'

Permit special field in paths passed to OS_CLI

OS_CLI permits commands to be prefixed with a temporary filing system, for example "ADFS:Format" It also passes commands unrecognised to FileSwitch to be executed, so "ADFS::HardDisc4.$.!Boot" first sets the temporary filing to ADFS then executes ":HardDisc4.$.!Boot". This does not work if the path contains a special field, currently this results in an error as the special filed would be lost. Unfortunately many programs, including the RISC OS source fail because of this. Instead if a filing system prefix with special field is found switch to the Temporary filing system and treat the whole command as a path to execute. For example passing "IXFS#W:$.HardDisc4.!Boot" sets the temporary filing system to "IXFS" then executes "IXFS#W:$.HardDisc4.!Boot". Version 6.30. Tagged as 'Kernel-6_30'

Fix OS_DynamicArea 21 handling of MaxCamEntry

OS_DynamicArea 21 was treating MaxCamEntry as if it was the exclusive upper bound, when really it's the inclusive bound. The consequence of this was that PMPs were unable to explicitly claim the highest-numbered RAM page in the system. Version 6.31. Tagged as 'Kernel-6_31'

Fix *Dump on (apparently) empty files.

Special case for empty files was crashing, fix by removing which also supports files which report a size of zero but actually contain data such as Unix device nodes and Linux procfs. Error where start outside file adjusted to permit a start exactly at the end of a file to permit (apparently) empty files with no output. Doing likewise for non-empty files is consistent. Also fix closing file in case of error reading GS format from CMOS. Version 6.32. Tagged as 'Kernel-6_32'

Use correct access permissions during ROM decompression

If HAL+OS are contiguous, the combined image is initially mapped as OSAP_None in order to allow for decompression. Fix the discontiguous case to use the same permissions

PMP LogOp_MapOut fixes

* Fix caching of page table entry flags (was never updating R9, so the flags would be recalculated for every page) * Fix use of flag in bottom bit of R6; if the flag was set, the early-exit case for having made all the cacheable pages uncacheable will never be hit, forcing it to loop through the full page list instead

Fix stack imbalance in DA release

In OS_DynamicArea 2, a stack imbalance would occur if an error is encountered while releasing the physical pages of a PMP (R1-R8 pushed, but only R1-R7 pulled). Fix it, but also don't bother storing R1, since it's never modified.

Fixes for zero-size PMPs

OS_DynamicArea 21, 22 & 25 were using the value of the PMP page list pointer (DANode_PMP) to determine whether the dynamic area is a PMP or not. However, PMPs which have had their max physical size set to zero will don't have the page list allocated, which will cause the test to fail. Normally this won't matter (those calls can't do anything useful when used on PMPs with zero max size), except for the edge case of where the SWI has been given a zero-length page list as input. By checking the value of DANode_PMP, this would result in the calls incorrectly returning an error. Fix this by having the code check the DA flags instead. Also, add a check to OS_DynamicArea 23 (PMP resize), otherwise non-PMP DAs could end up having page lists allocated for them.

OS_Byte 19 fixes

* Don't wait for VSync if we're in IRQ context, since (a) IRQ handlers shouldn't take lots of time, and (b) it may hang the system. Fixes https://www.riscosopen.org/tracker/tickets/424 * Extend the DPMSUtils-inherited "don't wait for VSync if HSync output is off" fix to also deal with the case where VSync output is off, since it's reasonable to assume that turning off VSync output could also prevent the CPU from receiving the associated interrupts.

Be more forgiving of GraphicsV init failures

* Update OS_ScreenMode 11's handling of drivers which fail to initialise. If there was no previous driver, then instead of trying to restore that nonexistant driver, stick with the new one. This is mainly to help with the case where the kernel's built in modes aren't accepted by the driver, and valid modes only become available once an MDF is loaded (this can happen with early OMAP3 chip revisions, which have very tight sync & porch limits, causing 90% of the kernel's modes to be rejected). If the kernel was to revert to the "no driver" state, then loading the MDF would still leave you with no video output. * Since we can now end up in a state where a driver is selected but hasn't been programmed yet, update OS_Byte 19 to detect this (via the magic ScreenBlankDPMSState value of 255) and avoid waiting for VSync * Update RemovePages & InsertRemovePagesExit (screen DA handlers) to avoid infinite loops if the screen DA gets shrunk to zero size (was seen while attempting to complete the !Boot sequence while no driver was active) Version 6.33. Tagged as 'Kernel-6_33'

Assign a USB flag

The XHCIDriver module adds 64k to get the register address. In an attempt to phase this out (so the registers are the true base address), assign a flag so that loading a suitable XHCIDriver on an old HAL still works. Version 6.33. Not tagged

Fix phantom DA PostGrow errors

Dynamic area PostGrow handlers aren't able to return errors, so the V flag is likely undefined. Fix AreaGrow so that it ignores any V-set condition returned by the call (especially since the CallPostGrow rapper will have clobbered any error pointer). Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/14662 Version 6.34. Tagged as 'Kernel-6_34'

Record various numbers used in other strands of RISC OS and compatible systems

Detail: * various low-numbered dynamic areas used by RISC OS 6 and Pyromaniac * OS_ReadSysInfo 8 host platform classes for VirtualRPC, A9Home, Pyromaniac * OS_Byte 0,<not 0> MosVer values for various systems since the BBC micro * OS_Byte 129,0,255 (BASIC INKEY -256) values for various RISC OS systems Admin: Discovered that these weren't really recorded anywhere during recent allocation request. Some information gleaned from http://beebwiki.mdfs.net Version 6.34. Not tagged

Fix abort after translating error

Reporting invalid parameters to OS_Pointer and OS_ConvertDateAndTime could wander off to bad places due to corrupt LR and/or stack imbalance.

Add aligned RMA claim subreason

OS_Module => R0=24 R3=size in bytes R4=alignment in bytes (must be a power of 2) <= R2=base of request or error Tested with a handful of valid and invalid alignments, and with one grossly larger than the free RMA to trigger an RMA extend to occur. Version 6.35. Tagged as 'Kernel-6_35'

Fix for bad error pointer *Dump'ing with a given start offset

Trying to dump a file larger than 2GB starting from an offset below 2GB would fail because the compare checking whether PTR#han > EXT#han accidentally set V which was taken as an error (but with R0 not really being an error block).

Add OS_Module 22

Very much like OS_Module 12, but returns the pointer to the PW rather than its contents (or NULL if the module died during init).

Special case extension of aligned RMA claims

During ModHandReason_ClaimAligned care is taken to start on a multiple of 32 and end on a multiple of 32 + 16 (such that the next block in the heap would be at +20 same as plain ModHandReason_Claim would do). However, during a ModHandReason_ExtendBlock there's a possibility that those criteria can't be retained, due to having to move to a larger gap elsewhere, leaving the end at an inconvenient +36. Similar allocation functions in other OS' don't guarantee to return an extended block with the same alignment, so take the position that for extends we always allocate a fresh block, copy the contents, and free the original. Shrinks are left in place. Tested with a random allocator which juggles 16 aligned allocations 50,000 times. Version 6.36. Tagged as 'Kernel-6_36'

Add scroll mouse support

* Listen out for PointerV 9, which (RISC OS 5) mouse drivers use to indicate scroll wheel updates + extra button status * Changes in the state of the extra buttons are treated the same as changes to normal mouse buttons: signalled via Event_Mouse, and stored in the mouse buffer (for reading via OS_Mouse). * Changes in the scroll wheel(s) are signalled via Event_Expansion,4. If the event vector call is unclaimed, the kernel's wheel position accumulators will be updated * Wheel position accumulators can be read via OS_Pointer 2 * Wheel position accumulators implement "wrap to zero" logic on overflow This matches RISCOS Ltd's implementation (http://www.riscos.com/support/developers/riscos6/input/pointerdevices.html), except that: * The kernel currently doesn't call PointerV 4, so PointerV 9 is the only way drivers can report wheel + extra button status * Extra mouse buttons don't generate KeyV transitions * Our implementation is in the kernel, not an OSPointer module Version 6.37. Tagged as 'Kernel-6_37'

Resync with allocations database

Edits to the RISCOS header file should really have gone through the allocations system. Fortunately, no harm was done in this case, but a minor syntactical change is required in order to bring it in line with the automatic redaction scripts used when exporting the header from the allocations database. Version 6.37. Not tagged

Mirror OS_AMBControl changes from Pyromaniac

* Create new header file defining symbolic name for OS_AMBControl reason codes and flags * Implement OS_AMBControl 9 (used to determine required size of buffer passed to OS_AMBControl 8 - potential thread safety issue not addressed) * Return allocated error numbers in various failure cases Version 6.38. Tagged as 'Kernel-6_38'


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/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/Lib/zlib from zlib-1_20 to zlib-1_20-1-ga1e54231

Actually clean `ou`

Was failing to clean `ou` due to trying to use unsupported variable `CLEAN_DEPEND`. Version 1.20. Not tagged


Logs for RiscOS/Sources/Networking/AUN/Apps/AccessPlus from Access+-1_04 to Access+-1_05

Fix for potential NULL pointer dereference and buffer overflow

Line 1015,1025: Fix path parsing logic to handle malformed paths better. Line 1279: Enlarge 'struc' so it's big enough to fit "-protected" without overflowing. Line 1673: Fix path parsing logic to handle malformed paths better. Error if the drive can't be parsed at all. Found by cppcheck static analysis. Version 1.05. Tagged as 'Access+-1_05'


Logs for RiscOS/Sources/Networking/AUN/RouteD from RouteD-3_00 to RouteD-3_01

Build fix

Missing header added for netdb (see TCPIPLibs-5_66). Version 3.01. Tagged as 'RouteD-3_01'


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/EtherCPSW from EtherCPSW-0_03 to EtherCPSW-0_05

Minor updates

if_cpsw.c: Updated to NetBSD's revision 1.21 if_cpsw_reg: Updated to NetBSD's revision 1.5 glue.h: Minor fallout from newer if_cpsw. glue.c: should cpsw_attach() fail for any reason, if_attach() never gets called, so nicifp is undefined, leading to an abort on the 1s callevery. Check nicifp is non-NULL first. Version 0.04. Tagged as 'EtherCPSW-0_04'

Leave CPSW_SS_FLOW_CONTROL at its default value

Following the trail from where it appeared in NetBSD http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/arm/omap/if_cpsw.c.diff?r1=1.11&r2=1.12 mentions copying it from FreeBSD, where this changed added it https://svnweb.freebsd.org/base?view=revision&revision=246276 in an attempt to address a watchdog problem. Linux is the polar opposite and sets all the bits in the register (=7) https://github.com/torvalds/linux/blob/master/drivers/net/ethernet/ti/cpsw.c#L813 Given we never had a watchdog problem, and setting it to 0 seems to cause some egress problems https://www.riscosopen.org/forum/forums/11/topics/15154 play safe and put leave it with the SoC's default value (=1).

MII function updates

These change the prototypes of the MII read/write functions, so that the MII headers are at the same revision as those used by EtherGENET. if_cpsw.c: Updated to NetBSD's revision 1.24 miivar.h: Updated to NetBSD's revision 1.69 mii.h: Updated to NetBSD's revision 1.27 glue.c: Refactor to use new function prototypes glue.h: Merge macro improvements from EtherGENET-0_02, remove one made redundant now Version 0.05. Tagged as 'EtherCPSW-0_05'


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/Fetchers/HTTP from HTTP-0_95-1-ga4d1d98d to HTTP-1_04

Build fix

Detail: Account for TARGET != COMPONENT

Correction to resources path

Remove hardwired path element, use Module_Title instead. Delete (already disabled) TinyStubs support. Delete support for old CMHG. Version 0.97. Tagged as 'HTTP-0_97'

Finish implementation of head/body/both flags

Detail: Per Docs/SWIs the flags in R5 (or R2 b8-15) should allow a client to request only the head/body or both, but the implementation was incomplete in places. Where http_write_data_to_client() is called, check what the request was and filter appropriately. Admin: Submission from Chris Mahoney. Version 0.98. Tagged as 'HTTP-0_98'

Show live build date rather than hardwired one

Detail: When AcornHTTP is registering on behalf of AcornSSL with the URL module, it makes up an info string using the live version number. Use the AcornSSL module date too, rather than that of AcornHTTP. Admin: Submission for TCP/IP bounty. Version 0.99. Tagged as 'HTTP-0_99'

Fix possible NULL pointer dereference, add clarity

decompress.c: remove double assignment to ses->compression, let it fall through start.c: don't dereference 'ses' until after the check for it being NULL Found by cppcheck static analysis. Version 1.00. Tagged as 'HTTP-1_00'

Fix ordering issue on init and text clipping

Detail: When AcornHTTP starts it tries to register itself with URL, which triggers a service call (for HTTP arriving) which in turn triggers AcornSSL to (re)report it is loaded. However, if AcornSSL is loaded *before* HTTP then the service call is missed because HTTP's service call handler isn't yet linked into the service call chain. Fix this by looking for a telltale SWI in security_init(). Admin: Reported by Matthew Phillips when trying to load URL/HTTP on a system on which AcornSSL had been loaded beforehand. Also clip the text shown by *URLProtoShow to end at the closing bracket of the date (more recent AcornSSL modules add the version of mbedTLS to which they were linked, which spilled over the column end). Version 1.01. Tagged as 'HTTP-1_01'

Build fix

Detail: SWIPREFIX != TARGET for this component, so the exported header was empty. Version 1.02. Tagged as 'HTTP-1_02'

Fix for race condition fetching headers

Detail: There was an assumption that if the recv() in http_read_more_header() returned an error, the subsequent recv() in http_reading_response() would also return the same error. However, if callbacks were allowed to run in between and data arrived from the server, the 2nd recv() can return data. In turn, this caused the statemachine to believe it was now reading the body, and forced AcornHTTP to invent a fake header for the client - when neither situation was true. Change the logic so that EWOULDBLOCK keeps the state machine in reading mode, other errors (or closed connection) stop as before. Unrelated - header.c corrects grammar, start.c uses boolean initialiser. Admin: Submission for TCP/IP bounty. Version 1.03. Tagged as 'HTTP-1_03'

Implement SNI when making secure connections

Change to enable fetcher to connect to make secure connections to servers which require Server Name Identification (SNI). Also ensures that the name of the server is verified against the certificate for other secure connections. Version 1.04. Tagged as 'HTTP-1_04'


Logs for RiscOS/Sources/Networking/Fetchers/URL from URL-0_58 to URL-0_58-1-gda0a9f61

Documentation clarification

Detail: Tidy up description of flags word. Admin: Not tagged.


Logs for RiscOS/Sources/Networking/NFS from NFS-3_26 to NFS-3_27

Guard against potential NULL pointer read

Commands.c: Adjust logic so strchr() is only called with a valid pointer. Found by cppcheck static analysis. _Close.C: Tighten up sloppy check of load address to include exec address. Version 3.27. Tagged as 'NFS-3_27'


Logs for RiscOS/Sources/Networking/NetTime from NetTime-0_43 to NetTime-0_44

Fix for claiming other socket's internet events

Various sloppy management of the socket number meant that NetTime would erroneously claim the internet event for a socket it wasn't using (either before use, or in certain circumstances after use). In the case observed, socket 0 is opened by a ROM module (DHCP), then NetTime is loaded from disc but not yet attempting a connect (eg. link is down so the state machine idle) the event handler is then higher up the event chain and catching socket 0 events. Subsequent attempts to use DHCP then fail because it never gets the async replies on its socket. machine.c: Set global sockno to -1 before use. Check the return value of socket() before merrily applying socket options. On closing, set sockno back to -1 via utility function closeconnect(). Version 0.44. Tagged as 'NetTime-0_44'


Logs for RiscOS/Sources/Networking/Omni/Apps/Omni from Omni-2_28 to Omni-2_32

Build fix

Missing header added for netdb (see TCPIPLibs-5_66). Version 2.29. Tagged as 'Omni-2_29'

Various fixes

Events.c: refactor ActiveMounts() to not return a pointer to a local buffer array; avoid potential NULL pointer issue on 'ir'. FileType.c: avoid undefined sprintf() when destination appears as one of the args List.c: defer dereferencing 'wr' until checked for NULL Print.c: don't leak 'tmp' on error Parse.c: defer dereferencing 'wr' until checked for NULL, tweak dprintf() to avoid potential NULL pointer read in debug output Found by cppcheck static analysis. Version 2.30. Tagged as 'Omni-2_30'

Resolve some warnings

Escape '$', use Push/Pull macros.

Undo repository garbling

MakeError.c and MakeError.h seem to have been misclassified as makefiles, and re-indented with tabs. Put back the original indentation.

Store choices alongside Mounts

Consolidate choices into a file rather than system variable, avoiding the clash when it's set to one thing in Omni:Startup, and another in <Boot$ToBeTasks>.Desktop. CoreInit.c: Rewrite ConfigRead/ConfigWrite to go via a choices file. Set the defaults (in the absence of choices) to match the former "a s1 d1" options. Events.c: Add 'Auto discover' and 'Save choices' to the filer-like menu. Reply to interactive help on the 2 new menu entries. No longer put Omni$Options into the desktop save file. Messages: New translation of menu entries. Startup: Don't bother setting Omni$Options. Version 2.31. Tagged as 'Omni-2_31'

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: Omni is a disc based component, hide the ellipsis on OS versions where the other filers would also be missing one. Version 2.32. Tagged as 'Omni-2_32'


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/Omni/Protocols/OmniNFS from OmniNFS-0_71 to OmniNFS-0_73

Fix handle and memory leaks on error

Found by cppcheck static analysis. Version 0.72. Tagged as 'OmniNFS-0_72'

Fix for NULL pointer dereference when server list is empty

Check the active server pointer before testing the magic word. Fixes issue described https://www.riscosopen.org/forum/forums/4/topics/15005 Version 0.73. Tagged as 'OmniNFS-0_73'


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/Printing/Modules/PDModules from PDModules-4_61 to PDModules-4_64

Update SpriteOp support, loosen/tighten some checks

Core/Header.s,Core/SWIs.s,Core/Constants.s: Define a new bad pointer rather than using &80000000 since that's now a perfectly valid logical address to have. Core/Device.s, Core/Sprite.s, PDriverDP/Sprite.s, PDriverPS/Sprite.s: Delete support for the greyscale SpriteOp plots, these were removed from SpriteExtend in 1993. Just error them now. Extend the table of SpriteOps to include letting through TileSpriteScaled. PDriverDP/Transprite.s: Allow 0 or -1 to mean "has no translation table" in line with PDriverPS and SpriteExtend. PDriverPS/Sprite.s, PDriverPS/TranSprite.s: Use define instead of magic numbers. Version 4.62. Tagged as 'PDModules-4_62'

Add support for 4k/64k sprite printing via PDriverPS

Look harder at the sprite type bits rather than assume the sequence 1/2/4/8/16/32bpp still holds. This lets through the RISC OS 5 sprite type for 4k and 64k colours. Look up the RGB ordering via the respective ModeFlags mode variable, change the order of output RGB PostScript bytes as required. Add some helper functions to map 4:4:4, 5:5:5, 5:6:5 to deal with the 6 possible 16bpp types, since they all ultimately output RGB888. Tested printing a Draw file with all true colour combinations of test sprites, then converting with Adobe Distiller. Version 4.63. Tagged as 'PDModules-4_63'

Let through post 3.50 sprite types in PDriverDP

Pass the sprite type to OS_ReadModeVariable rather than trying to infer the Log2BPP from the sprite type directly. Tested printing a Draw file with all true colour combinations of test sprites, via the PCL dumper, to a Kyocera 2551ci colour laser printer. Version 4.64. Tagged as 'PDModules-4_64'


Logs for RiscOS/Sources/Printing/PrintDefs from PrintDefs-0_50 to PrintDefs-0_52

Update !ReadMe's

Removed Acorn customer support contact phone number/email. Version 0.51. Tagged as 'PrintDefs-0_51'

Rename to 10 letter limit

Remove QMS prefix from QMS printers in QMS directory. Fixes truncation on 10 letter FS. Ref: https://www.riscosopen.org/forum/forums/11/topics/15342 Version 0.52. Tagged as 'PrintDefs-0_52'


Logs for RiscOS/Sources/Printing/PrinterManager from Manager-1_89 to Manager-1_89-1-g58f5a005

Add Apache LICENSE file


Logs for RiscOS/Sources/Printing/T1ToFont from T1ToFont-1_36 to T1ToFont-1_37

Fix for potential buffer overrun and never finding EOF

convert.c: fgetc() needs ints for its return value in order to spot EOF. metrics.c: The hashtable itterator ran from 0-1023 (MAX_CHARS) but only contains 256 entries, so if the character can't be found the loop continued checking 768 garbage entries. Found by cppcheck static analysis. encoding.h/encoding.c: Define a symbol to describe the hashtable size. Use new define for MAX_HASHS where applicable. Version 1.37. Tagged as 'T1ToFont-1_37'


Logs for RiscOS/Sources/Programmer/DDTHdr from DDT-0_02 to DDTHdr-0_03

Cross-compilable

Actually, this component only exports a header. Makefile rewritten to work for both native and cross builds.

Update Makefile

Version 0.03. Tagged as 'DDTHdr-0_03'


Logs for RiscOS/Sources/Programmer/Debugger from Debugger-2_02 to Debugger-2_07-1-g4ffc3ea2

dis2 and testbed improvements

Test/testbed.c: Remove the special case for MAR/MRA now that Debugger supports these. Don't leak raw on exit, found by cppcheck static analysis. main.c: Don't leak prog on exit, found by cppcheck static analysis. The apparent memory leaks are slightly academic since these are both applications and would be reclaimed on exit. Tested with all 256M 'EQ' and 256M 'NV' condition codes, only expected differences remain such as use of hex.v.dec for small constants. Tagged as Debugger-2_02-1 since Debugger itself is unchanged.

Add the later ARMv8 AArch32 opcodes

ARM have added SETPAN, ESB, TSB, CSDB, PSSBB, SSBB since the earlier ARM ARM that Debugger-1_98 was based on. ARMv6.s: Decode and show the 6 new instructions actions/ARMv7,actions/ARMv8_AArch32: C equivalents for dis2 Resources,Debugger.s,CGlue.s,ARM.s,dis2.h: 3 new messages to warn for v8.1 v8.2 v8.4 cache/vfp also updated based on encodings in Library-1_97. Version 2.03. Tagged as 'Debugger-2_03'

Support large physical addresses

When the 'P' switch is given to *Memory, *MemoryI or *MemoryA, all address and offset arguments are parsed as 64-bit numbers, and all physical addresses are displayed as 40-bit numbers. (The truncation from 64 bits is to avoid the standard width of *Memory output overflowing an 80-character-wide window, and should be fine in practice because even LPAE is limited to 40-bit addresses.) There is no facility for constructing physical address from a low-high register pair on the command line. However, if you know the literal value of the upper bits of a physical address, you could construct the offset manually, for example: *Memory P r0+100000000 +100 Internally, this means all addresses are passed around as 64-bit numbers. To limit the amount of register allocation changes required, the values of pointers are now mostly stored on the stack. Physical address lookups are done usng OS_Memory 22 on kernels which provide it, falling back to OS_Memory 14 and then the logical mapping of physical space on early non-HAL kernels. Because OS_Memory 22 can return errors, there are now many more code paths that have to handle them. Other bugs fixed in passing: * Correct syntax error is printed for malformed *MemoryA commands * PC and breakpoint markers are not displayed in physical address mode * Errors reported from OS_WriteC within DisplayCharacters were being corrupted Requires header export from RiscOS/Sources/Kernel!3 in order to build (softload versions should still run elsewhere though).

Simplify physical memory access, and reduce TLB operations

* Separate out the act of mapping in a physical address (with fallbacks to progressively older APIs) from the loading or storing of each 1-8 byte location, using a system of callback functions. * Remember which OS_Memory calls (if any) are available on the current kernel to avoid having to test them again for each address accessed. * Defer releasing the temporarily-mapped IO window until the end of the respective star command (as permitted by the OS_Memory documentation) to effectively halve the number of times the TLB has to be flushed. Note that the window will remain mapped if we exit via an exception during memory access, but this was the case in previous versions too, and now you can at least unmap it by issuing a further *Memory P command that doesn't cause an exception. Version 2.04. Tagged as 'Debugger-2_04'

Build fix

Dump the literal pool so assembly can complete when targetting a disc build suitable for RISC OS 3.10. Version 2.05. Tagged as 'Debugger-2_05'

Fix -ve increment interactive mode *MemoryA

When stepping backwards in interactive mode the step (in R8) relied on modulo 32b arithmetic. As the (unsigned) addition always causes a carry out, with a 40b address this led the top 8 bits of the address to increment on every decrement of the bottom 32b. Changed to sign extend to 64b before the add. Version 2.06. Tagged as 'Debugger-2_06'

Fix null pointer dereference in exception dump

Fix a couple of places in the Annotate function where null annotation block pointers could be accessed. Should fix the Debugger crash from this thread: https://www.riscosopen.org/forum/forums/4/topics/15014 Also trim some redundant code from the ExcPeekMem2 routine. Version 2.07. Tagged as 'Debugger-2_07'

Make compatible with RiscOS/BuildSys!3

* Rename TokHelpSrc to s.TokHelpSrc * Correct dependency Version 2.07. Not tagged


Logs for RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_75 to HdrSrc-2_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/Programmer/ZLibMod from ZLib-0_03 to ZLibMod-0_04

Cross-compilable

* Makefile contained a literal `:` which causes GNU make to reject it. * Export phases work in cross-compile build, but lack of support for some dependencies mean that it isn't possible to verify at the present time whether additional changes will be required for other phases. Version 0.03. Not tagged

Add SWI ZLib_InflateReset2

Detail: Function introduced in zlib 1.2.4, this is the partner to existing SWI ZLib_InflateReset. Admin: Submission for PNG bounty. Version 0.04. Tagged as 'ZLibMod-0_04'


Logs for RiscOS/Sources/SystemRes/Configure2/Config2Main from Main-2_12 to Config2Main-2_13

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 2.13. Tagged as 'Config2Main-2_13'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/Config2PluginBoot from Boot-0_09 to Config2PluginBoot-0_10

Rephrase desktop settings button

"Desktop boot file..." -> "Desktop settings file..." to match Task Manager. Interactive help similarly rephrased. Version 0.10. Tagged as 'Config2PluginBoot-0_10'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/Config2PluginBootxxxx from Bootxxxx-0_14 to Bootxxxx-0_15

Fix NULL pointer dereference on error

List.c: if the choices wouldn't open, don't fclose(NULL). 2x. Found by cppcheck static analysis. Version 0.15. Tagged as 'Bootxxxx-0_15'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/DiscSetup from DiscSetup-0_12 to DiscSetup-0_14

Use service names from Global/Services.h

Fade floppy section when no floppy controllers

To avoid confusion where ADFS is present, but there are no floppy controllers available, don't allow the number of floppies to be changed. Version 0.13. Tagged as 'DiscSetup-0_13'

Correct typo in interactive help

You can adjust the RAM disc size *using* either the keyboard or the arrows. Version 0.14. Tagged as 'DiscSetup-0_14'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/FilrSetup from FilrSetup-0_26 to FilrSetup-0_28

Fix handle leak on error

filer.c: if the destination file couldn't be opened, don't leak the source file Found by cppcheck static analysis. Version 0.27. Tagged as 'FilrSetup-0_27'

Fix handle leak on error

filer.c: if the destination file couldn't be opened, don't leak the source file Found by cppcheck static analysis. Version 0.27. Tagged as 'FilrSetup-0_27'

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 0.28. Tagged as 'FilrSetup-0_28'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/MousSetup from MousSetup-0_16 to MousSetup-0_17

Fix memory corruption when changing mouse type

Copy message token into a temporary buffer before using it as a sprintf format string

MouseType fixes

* Fix potential buffer overflow with mousetype_getavailable() if lots of mouse drivers are installed * Fix mousetype_get() returning a stale RMA pointer

Implement scroll mouse configuration

Support configuring the WindowScroll module, via a settings Obey file at Choices:Boot.Tasks.WimpScroll Version 0.17. Tagged as 'MousSetup-0_17'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/PinSetup from PinSetup-0_24 to PinSetup-0_25

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 0.25. Tagged as 'PinSetup-0_25'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/ScrnSetup from ScrnSetup-0_42 to ScrnSetup-0_44

Fix handle and memory leaks on error

screen.c: if the destination file couldn't be opened, don't leak the source file; and when there are no disc based screen savers don't leak menustring (since the built in DPMS saver name doesn't need allocating - it can go straight into the stringset gadget). Found by cppcheck static analysis. Version 0.43. Tagged as 'ScrnSetup-0_43'

Fix handle and memory leaks on error

screen.c: if the destination file couldn't be opened, don't leak the source file; and when there are no disc based screen savers don't leak menustring (since the built in DPMS saver name doesn't need allocating - it can go straight into the stringset gadget). Found by cppcheck static analysis. Version 0.43. Tagged as 'ScrnSetup-0_43'

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 0.44. Tagged as 'ScrnSetup-0_44'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/SndSetup from SndSetup-2_08 to SndSetup-2_09

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 2.09. Tagged as 'SndSetup-2_09'


Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/WindSetup from WindSetup-0_15 to WindSetup-0_16

Type cast correction

Use the true type rather than a void pointer for toolbox_template_lookup(). Required by ToolboxLib-0_28 or later. Version 0.16. Tagged as 'WindSetup-0_16'


Logs for RiscOS/Sources/SystemRes/DesktopBoot from Boot-1_26 to DesktopBoot-1_30

Load FilerUtils

But only needed pre 3.50, so can live in 310 hook. Version 1.27. Tagged as 'Boot-1_27'

Load post Ursula sprites

Detail: PreDesktop obey files updated to load missing sprites where required. Admin: Requires LoadWimp-0_12. Version 1.28. Tagged as 'DesktopBoot-1_28'

Select lower resolution when NoVRAM

Detail: The NoVRAM obey files for 370/400/430 hooks actually attempted to select a higher resolution than their VRAM counterparts, as though transposed. Copy them from 360 hook. Admin: Spotted during Window Manager regression testing. Version 1.29. Tagged as 'DesktopBoot-1_29'

Rename to 10 letter limit

Remove Philips prefix from Philips monitors in Philips directory (!ScrnSetup uses the monitor_title field). Fixes truncation on 10 letter FS. Ref: https://www.riscosopen.org/forum/forums/11/topics/15342 Version 1.30. Tagged as 'DesktopBoot-1_30'


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/SystemRes/InetSetup from Source-0_58 to InetSetup-0_60

Fix NULL pointer dereference on error

Load.c: if the file didn't open, don't try fclose(NULL) Found by cppcheck static analysis. Save.c/Diagnose.c: sort netdb.h's header ordering Version 0.59. Tagged as 'Source-0_59'

Fix for lack of address when only Access is enabled

When only Access is enabled in InetSetup it doesn't work, this is because in Freeway 0.29 (August 1999) a new configuration command FreewayAutoAddress was added, but whose default is off (due to CMOS wiping to zero). As long as Internet is enabled that's OK because the interface will use whatever address method is chosen for TCP/IP. When only Access is enabled no address is set. In truth table form: Access TCP/IP 0 X => Don't care, Access is disabled 1 0 => need an auto address 1 1 => use the same address as TCP/IP Update InetSetup to manage the CMOS bit per the above. Messages:RMEnsure of Freeway changed to 0.36 (the version when the auto assigned address was moved from 1.x.y.z to 10.x.y.z range). Save.c:Set or clear the FreewayAutoAddress bit as required. Version 0.60. Tagged as 'InetSetup-0_60'


Logs for RiscOS/Sources/SystemRes/LoadWimp from LoadWimp-0_11 to LoadWimp-0_12

Add ptr_write2 to Wimp loader

Extra sprites post dating Ursula for softloading Wimp. Version 0.12. Tagged as 'LoadWimp-0_12'


Logs for RiscOS/Sources/SystemRes/System from System-1_00 to System-1_01

Import of ABCLib 4.20

Detail: Run time portion of !ABC 4.20 for accepting hex numbers in mixed case. Version 1.01. Tagged as 'System-1_01'


Logs for RiscOS/Sources/SystemRes/Unicode from Unicode-0_35 to Unicode-0_35-1

Minor tool fixes

makealiases.c: Don't leak file on error. Don't use same buffer for sprintf() as both the target and parameter, which is undefined. Found by cppcheck static analysis. Tagged as Unicode-0_35-1 since this is an internal build tool only.


Logs for RiscOS/Sources/SystemRes/UserGuide from UserGuide-0_01 to UserGuide-0_02

Updated StarComms information

Admin: From community feedback plus a sweep of new command allocations since the previous edition. Version 0.02. Tagged as 'UserGuide-0_02'


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/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/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/ScreenFX from ScreenFX-0_09 to ScreenFX-0_09-1

Swap round args in prototype

Min & max are used the other way round in the implementation. Found by cppcheck static analysis. Tagged as ScreenFX-0_09-1 since binary unchanged.


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/Render/VideoOverlay from initial-1-g10656165 to VideoOverlay-0_02

Documentation + test code improvements

Detail: doc/ModeVars - Fix description of YV12 Cb & Cr planes to specify that they're sub-sampled. Describe YV16 format. Test/Test,ffb - Allow rotate/flip transforms to be easily specified via transform% variable. Improve YUV test image generation to work with arbitrary-sized overlays. Add 15bpp TBGR & 16bpp ARGB test card generation, YV12 & YV16 chroma subsampling tests. Admin: Tested on Raspberry Pi 3 Version 0.01. Retagged as 'VideoOverlay-0_01'

Attempt to crop overlay by the bounds of any windows that are infront of it in the window stack

Detail: c/utils: - Extend compute_overlay_pos so that it will check for any windows infront of the overlay and crop the displayed area as appropriate. The algorithm is simple (only checks one window at a time, so a set of windows which collectively form a full edge won't cause cropping), but it's better than nothing, especially when dealing with Basic overlays, which always appear ontop of the desktop. In particular, this fixes the bug where a Basic overlay from an iconised window will still be visible, due to the window technically still being open (it's just been moved behind the pinboard) - Also add/improve source comments, and fix STACK_PUSH setting the wrong next-chunk pointer when allocating a new stack frame doc/GraphicsV: - Specify the correct number of the min. screen banks mode variable Admin: Tested on Raspberry Pi 3B Version 0.02. Tagged as 'VideoOverlay-0_02'


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_67 to ScrModes-0_74

Service call API clean up

There's no need to graft in a special sub-sub-reason for Service_DisplayChanged, since ScrModes always reads the EDID at power up the data blob is already there. To force it to be used (in situations where the user had selected a disc based textual MDF) simply load it with *LoadModeFile. Version 0.68. Tagged as 'ScrModes-0_68'

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, 1.84.2.1. 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 0.6.0.0 which is when this field appears. Version 0.99. Tagged as 'ABRelease-0_99'

Tone down ZPP warning, document developer modules

First added in July 2015, no longer provide ZeroPain with every development ROM since it could be seen as a cause for alarm to a new user, and is a useful diagnosis tool to old deck hands. Move the documentation of ZeroPain to its new home in the BonusBin, and add some notes and a link to the docs of the other developer modules provided (DebugBttn, DebugTools). Version 1.00. Tagged as 'ABRelease-1_00'