Changes: Disc 5.26 to RC16
Components changed
Components added
Components removed
- No components have been removed
Full Change Logs
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'
!WinEdit binary updated
From WinEdit-1_13 built with cc 5.77 in the Disc environment.
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
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'
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'
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'
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'
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'
[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'
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'
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'
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'
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'
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'
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'
Makefile changed to use CApp
Copy this in based on the CApp makefile, but otherwise no net change.
Tagged as SparkFS-1_44-1.
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'
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
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
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'
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'
Leading spaces in makefile changed to tabs for GNU make compatibility
Remove ${CURDIR} check in makefile to fix native builds
Fix handling of tool sprite palettes in alpha-blended screen modes
Detail:
s/Wimp10 - Update mastertoactive to force the palette/translation table to be sent through ColourTrans if either &RGB component ordering or alpha blending is in use for the current screen mode. Otherwise, for alpha modes, the alpha channel would typically be left at zero.
Admin:
Tested on Raspberry Pi 3
Version 5.62. Tagged as 'Wimp-5_62'
Don't access 0xFFFFFFFE if window vanished
The pointer left/entered window logic calls int_get_pointer_info which can return a window (and/or icon) handle of -1 if the pointer is over no window, such as might occur if the window has been deleted.
The check for a duff window handle (in R3) was unfortunately made *after* it'd been dereferenced. Move this check up beforehand.
Fixes issue reported on Usenet https://groups.google.com/forum/#!topic/comp.sys.acorn.programmer/iR0_TNekiKg
Version 5.63. Tagged as 'Wimp-5_63'
New Wimp_Extend subreason
Detail:
Subreason 14 gives a means to read the validation string from a window/icon that is not in the current task. This is useful for determining whether clipboard operations should be allowed.
Admin:
Submission for Clipboard Support bounty.
Version 5.64. Tagged as 'Wimp-5_64'
Add ptr_write2 to Wimp pool
Admin:
Submission for Clipboard Support bounty.
Version 5.64. Not tagged
Zip non-ascii filename [⇐⇒£⇓⇑]
This solves difficulty in handling on other operating systems,
including being an illegal filename in macOS.
Fixes https://www.riscosopen.org/tracker/tickets/473
Version 5.64. Not tagged
Messages additions
Detail:
3 extra tokens in support of clipboard operations.
Admin:
Submission for Clipboard Support bounty.
Add copy & paste and drag & drop operations to the Wimp
Detail:
The text in writable icons can now be manipulated using the familiar keyboard shortcuts, or using Drag and Drop in conjunction with any compliant applications.
Further details are in Doc/DragAndDrop along with information on API extensions which are implemented.
Admin:
Submission for Clipboard Support bounty.
Version 5.65. Tagged as 'Wimp-5_65'
Clipboard caret/task fixes
Detail:
In CnPCaret.s
* Clear any invalid window handles currently stored in caret blocks on Wimp_SetCaretPosition entry
* Clear R2 on exit if R0=-1,R2=TASK on entry to Wimp_SetCaretPosition
* If window is not open or able to receive a focus, then return WimpFocus error rather than causing an alignment exception
In CBTask.s
A drag to writeable with invalid (eg.rejection due to validation string mismatch or overlong insert) caused ghost caret to be left behind and still deletes the source text.
* Changed LDR R2,=cbtask_TASK to LDR r2,cbtask3_TASK
* Ensure cbtask_insert_text_into_icon returns V set on error
Drag and drop text from icon to non-d&d application, the last message was erroneously sent as DataSaveAck, not Dataload
Admin:
Submission for Clipboard Support bounty.
Version 5.66. Tagged as 'Wimp-5_66'
Add Wimp_Extend 15, "read slot size"
Wimp_Extend 15 is equivalent to Wimp_SlotSize,-1,-1, with the exception
that the sizes returned in R0-R2 are now measured in pages instead of
bytes. This allows code to accurately read the amount of free memory on
machines with >2GB of RAM, and provides some future-proofing should we
ever wish to support tasks with >2GB of RAM (e.g. via a future
super-jumbo wimpslot, or more likely via sparse/PMP wimpslots, where
the physical size is larger than the logical size).
Currently there's no need to provide a page-based call to set the slot
size (~2GB is fine for the forseeable future), so this call only
focuses on reading the sizes.
Version 5.67. Tagged as 'Wimp-5_67'
Apply same vetting to SetCaretPosition window handle as non cut & paste Wimp
Detail:
Summary of how non-CnP Wimp treats the window handle for Wimp_SetCaretPosition
R0 = valid window handle
or invalid window handle (mapped to -1)
or any negative number or 0 (mapped to -1)
With this change, the CnP Wimp does
R0 = valid window handle
or invalid window handle (throws error)
or any negative number or 0 if pre RISC OS 5 (mapped to -1)
or 0 for RISC OS 5 (mapped to -1)
Noting the use of AcceptLoosePointer macro if built for a 26 bit target.
Fix for lack of input focus clicking on no icon
Detail:
If R0=valid window handle, R1<0 (not an icon) and R4=-1 then R4 is internally set to 'invisible caret' to ensure that we get the full input focus event and visible cues.
Ref: https://www.riscosopen.org/forum/forums/5/topics/14945?page=2#posts-97886
Admin:
Submission for Clipboard Support bounty.
Fix for abort on pasting into writeable menus
Detail:
Menu windows don't store the task handle in their datablock, so an incorrect one was used as part of the data transfer sequence.
Also, minor fix for Message_ClaimEntity when bit 2 was clear (bits 0,1 set). The response meant that, for example, Alt-click to rename, select text in writeable and press ^C - copied to clipboard, but writeable is removed.
Admin:
Submission for Clipboard Support bounty.
Fix lost menu clicks on icons when window partly off screen
Detail:
Don't trap menu clicks on icons when the window isn't fully on-screen.
Ref https://www.riscosopen.org/forum/forums/4/topics/14961?page=1
Admin:
Submission for Clipboard Support bounty.
Version 5.68. Tagged as 'Wimp-5_68'
Fix zero page access looking for ptr_ sprite validation
On mouse click, check for icon type was incorrect, so trying to apply tests for 'P' validation string/ptr_write on inappropriate icons (eg. sprites), leading to invalid validation string accesses. Correct the test performed.
Also add 3 further AcceptLoosePointer checks to validation string pointers.
Version 5.69. Tagged as 'Wimp-5_69'
Fix crash on closing a task which has a currently open menu and input focus
Version 5.70. Tagged as 'Wimp-5_70'
Fix issue where dragging text from icon caused a crash in foreground task
When releasing claim, use of stale register meant that the foreground task wasn't correctly bouncing Message_Dragging when the pointer moved out of range. Also added a sanity check in get_selected_text so that if for some reason the selection window disappears mid action it will be caught and not cause a crash.
Version 5.71. Tagged as 'Wimp-5_71'
Allow text to be dragged from writable icons to icon bar icons
Check destination window handle and add destination icon handle if sending message to window handle -2.
Improve window handle validation (not assuming all -ve handles are invalid, should the RMA move to have top bit set).
Version 5.72. Tagged as 'Wimp-5_72'
Fix delivery of extended scroll requests
Extended scroll requests and regular scroll requests share the same
reason code, but are different sizes. Update calcmessagesize to
calculate the size of extended scroll messages correctly, so that the
icon number won't get chopped off when the message is being passed to
the target task.
Version 5.73. Tagged as 'Wimp-5_73'
Fix abort error with ^K and ^X in writable icons
Check there is actually a selection present in the window before cutting/deleting any text.
Version 5.74. Tagged as 'Wimp-5_74'
Fix issue with pasting clipboard by non-RAMFetch data transfer
Detail:
Send correct DataSaveAck message in response.
Version 5.75. Tagged as 'Wimp-5_75'
Fix stack imbalance when PCI floppy init fails
Version 3.55. Tagged as 'ADFS-3_55'
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'
Correct exit of CallbackCode to pull PC not LR
Version 1.25. Tagged as 'FSLock-1_25'
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.
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
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'
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'
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
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'
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'
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'
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'
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'
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'
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'
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'
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'
Fix handle and memory leaks on error
Found by cppcheck static analysis.
Version 0.07. Tagged as 'DDTLib-0_07'
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'
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'
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'
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'
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'
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
Actually clean `ou`
Was failing to clean `ou` due to trying to
use unsupported variable `CLEAN_DEPEND`.
Version 1.20. Not tagged
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'
Build fix
Missing header added for netdb (see TCPIPLibs-5_66).
Version 3.01. Tagged as 'RouteD-3_01'
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.
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'
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'
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'
Documentation clarification
Detail:
Tidy up description of flags word.
Admin:
Not tagged.
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'
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'
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'
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'
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'
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'
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'
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'
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'
Add Apache LICENSE file
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'
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'
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
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'
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.
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'
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'
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'
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'
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'
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'
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'
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'
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'
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'
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'
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'
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'
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'
Add ptr_write2 to Wimp loader
Extra sprites post dating Ursula for softloading Wimp.
Version 0.12. Tagged as 'LoadWimp-0_12'
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'
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.
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'
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'
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.
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'
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.
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'
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'
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.
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'
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'