Changes: ROM 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 GPIO module to OMAP3/4
Version 7.23. Tagged as 'BuildSys-7_23'
Add User Guide supporting material to disc
Detail:
ModuleDB & components files updated
Version 7.22. Tagged as 'BuildSys-7_22'
Changes to keep GNUmakefiles and Makefiles compatible
Detail:
GNUmakefiles/AAsmModule:
* Adopt same extensible syntax for describing resources phase files as CModule (see BuildSys 6.91)
GNUmakefiles/AppLibs:
* Don't permit CALLXLIB to be used for application builds (see BuildSys 6.61)
* Reflect MODMALLOCLIB leafname change (see BuildSys 6.61)
* Add TBOXINTLIB, TBOXINTDBGLIB, PDEBUGLIB, PRISMLIB, REMOTEDBLIB, TRACELIB, UNICODELIB and include more libs in DEBUGLIBS (see BuildSys 6.63)
GNUmakefiles/CApp:
* Add install_debug_app rule for debug app installations (see BuildSys 6.53)
GNUmakefiles/CLibrary:
* Allow additional dependencies to be specified using LIB_DEPENDS (see BuildSys 6.63)
* Gains install target (see BuildSys 7.15)
GNUmakefiles/StdTools:
* Add shell implementation of FAppend (see BuildSys 6.45) - compatible except for the fact that the destination is given current timestamp
* ${NOP} no longer implicitly includes the silent-command prefix character @ (see BuildSys 6.50)
* Add CPVFLAGS (see BuildSys 6.53) although it can't achieve anything as a suffix to the command
* Add shell implementation of EraseCVS (see BuildSys 6.53)
* Add InstViaRG tool (see BuildSys 6.70)
Version 7.21. Tagged as 'BuildSys-7_21'
Add (Omni)NFS to the disc image
ModuleDB: Add entry for OmniNFS. Move NFS now it's been scrubbed clean for publishing.
Components/Disc: Add OmniNFS and NFS to !Omni. It may be more appropriate to put NFS in !System, let's see.
Version 7.20. Tagged as 'BuildSys-7_20'
Components file updates
Detail:
Relocate AHCIDriver.
Re-order the first few modules of iMx6 to match the other ROMs in light of ScreenModes dependency changes.
Omit ZeroPain, this is provided in the download ZIP as a disc component.
Omit EtherUSB - no sources in the products file so the build failed.
Do run the ABRelease phase otherwise the autobuilder produces no output.
Minor white space changes.
Version 7.19. Tagged as 'BuildSys-7_19'
Skip EHCIHALLib export
Detail:
No longer a target of this component.
Version 7.18. Tagged as 'BuildSys-7_18'
Set machine for 310 copies of TaskWindow & CallASWI
Detail:
CallASWI now contains an ASSERT for No32bitCode, so in the All environment it doesn't build.
TaskWindow standalone module has ADR out of range.
Admin:
For CTools.
Version 7.17. Tagged as 'BuildSys-7_17'
Change PDebug & RemoteDebug component types
Detail:
In order that they be considered during the 'install' phase, make these 2 components type C rather than type EXP.
Components/ROOL/BonusBin & PlingSystem: change all libraries to only be exported
Components/ROOL/CTools: add an install location for PDebug, needed by DebugLib
Admin:
Fix for DDE build missing some required libraries. Required CLibrary shared makefile revision 1.9.
Version 7.16. Tagged as 'BuildSys-7_16'
Add Access+ to the disc image, improve CLibrary makefile
Add Access+ as a utility, called out by the "Local networks" chapter of the User Guide, and missing since RISC OS 3.70 days (despite ShareFS having the functionality).
Add an install target to the CLibrary makefile, this allows the library to be installed somewhere other than the exports directory which is useful for the CTools component for example.
Version 7.15. Tagged as 'BuildSys-7_15'
Repoint EHCIDriver & OHCIDriver
Admin:
OHCIHeaders removed from ModuleDB.
For those components that use the USBHAL add that to the EXP phase.
Version 7.14. Tagged as 'BuildSys-7_14'
Repoint component path
Admin:
Formerly named 'NetBSD' now 'USBDriver'.
Submission for USB bounty.
Version 7.13. Tagged as 'BuildSys-7_13'
Add RouteD to the module database & Disc image
Version 7.12. Tagged as 'BuildSys-7_12'
Add BASICVFP to relevant ROMs
Detail:
- ModuleDB - Define BASICVFP component
- Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, OMAP5, Titanium, iMx6 - Add BASICVFP to ROM for all ARMv6+ machines
Admin:
BCM2835 build tested
Requires BASIC-1_67, Library-1_91
Version 7.11. Tagged as 'BuildSys-7_11'
Add OmniAccess to module database & Disc components
Version 7.10. Tagged as 'BuildSys-7_10'
Add BorderUtils to ModuleDB and PlingSystem
Also spotted that the CTools components file doesn't add a copy of CallASWI/FPEmulator to the EndUser directory. These 2 modules are required (the stubs include RMEnsures of CLib/CallASWI/FPEmulator).
Version 7.09. Tagged as 'BuildSys-7_09'
Add GPIO to BCM2835
Same as for Pico, ordinary Pi users can enjoy wiggling their I/O.
Version 7.08. Tagged as 'BuildSys-7_08'
Fix BuildHost build
Detail:
Components/ROOL/BuildHost - ColourPicker needed for header exports
Admin:
Tested with BuildHost build
Version 7.07. Tagged as 'BuildSys-7_07'
Change order of modules in build to take advantage of recent ScrModes EDID changes
Detail:
Admin:
tested on iMx6
Version 7.06. Tagged as 'BuildSys-7_06'
Change order of modules in build to take advantage of recent ScrModes EDID changes
Detail:
Admin:
tested on iMx6
Version 7.06. Tagged as 'BuildSys-7_06'
Match up module order
All the other targets place ScreenModes earlier for EDID probing reasons.
Version 7.05. Tagged as 'BuildSys-7_05'
Update Pico components
Force BCMVideo to work discless using a built in MDF, in lieu of EDID.
Version 7.04. Tagged as 'BuildSys-7_04'
GPIO export needed too
Detail:
Admin:
Version 7.03. Tagged as 'BuildSys-7_03'
Final iMx6 module
Detail:
Admin:
Version 7.02. Tagged as 'BuildSys-7_02'
Introducint iMx6 HAL to ROOL repository
Detail:
Admin:
Version 7.01. Tagged as 'BuildSys-7_01'
Pico build fix
Need tboxlib for the messages header for internationalised DWCDriver.
Force the default language CMOS to 10 since Pico is 1 module short, such that BASIC V is the default (not BASIC VI) per discussion https://www.riscosopen.org/forum/forums/5/topics/6744
Version 7.00. Tagged as 'BuildSys-7_00'
Reflect import of AHCIDriver module
Detail:
change moduledb and iMxd component
Admin:
Version 6.99. Tagged as 'BuildSys-6_99'
Modify EtherTH path in module database to main repository
Detail:
Admin:
Version 6.98. Tagged as 'BuildSys-6_98'
Added PartMan module to database.
Detail:
Introducing a basic partition manager.
Admin:
Version 6.97. Tagged as 'BuildSys-6_97'
Add Net components
Version 6.96. Tagged as 'BuildSys-6_96'
Use default SDCMOS switch
Requires BCM2835-0_61 and SDCMOS-0_17.
Version 6.95. Tagged as 'BuildSys-6_95'
Add SerialDeviceSupport to Raspberry Pi ROMs
Detail:
Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Enable SerialDeviceSupport (OS_SerialOp/SerialV bridge to the underlying 'serialctrl' DeviceFS API)
Admin:
Tested on Raspberry Pi 1 B
Requires BCM2835-0_59 and DualSerial-0_25-4_8_2_14
Version 6.94. Tagged as 'BuildSys-6_94'
Add Omni's NetFiler
To the module database, and Disc components.
Version 6.93. Tagged as 'BuildSys-6_93'
Shuffle module order
Detail:
Ordering of FPE with respect to ScreenModes not important post ScrModes-0_55.
Version 6.92. Tagged as 'BuildSys-6_92'
Use the same optional resources syntax for AAsmModule as for CModule
Copy over the rules that use platform agnostic InstRes to copy their extra resources (for those modules wanting more than just the default Messages+CmdHelp).
Copy over the logic that allows INSERTVERSION to be run on Messages files (from CApp shared makefile) so modules which have a front end can get their dates from Messages.
Add INSERTVERSION facility to CModule too.
Version 6.91. Tagged as 'BuildSys-6_91'
Add support for "26" machine type. PlingSystem updates.
Detail:
ImageName/SysMap - Add support for "26" machine type
Components/ROOL/PlingSystem - Remove manual specification of All32 machine type for BASIC - would have resulted in code which isn't ARMv2 compatible. Remove 350 version of TaskWindow - the 310 version should be fine for all OS versions that PlingSystem targets. Document why SharedSnd is using the All machine type.
Admin:
Tested with PlingSystem build
Version 6.90. Tagged as 'BuildSys-6_90'
Add SATADriver for its exports
Export needed by CDFSSoftATAPI.
Version 6.89. Tagged as 'BuildSys-6_89'
No longer install CFSI-JPEG from SprExtend
Admin:
Requires ChangeFSI-1_58 or later.
Version 6.88. Tagged as 'BuildSys-6_88'
No longer install CFSI-JPEG from SprExtend
Admin:
Requires ChangeFSI-1_58 or later.
Version 6.88. Tagged as 'BuildSys-6_88'
Add Freeway and MimeMap to PlingSystem
Version 6.87. Tagged as 'BuildSys-6_87'
Options fix
Detail:
See corresponding change in PlingSystem 1.23 for rationale.
Build fix
ColourPicker exports wanted by RISC_OSLib, MimeMap exports wanted by DOSFS and others.
Retagged as BuildSys-6_86.
Add BCMSupport to Raspberry Pi ROMs
Detail:
Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Add BCMSupport to ROM
Admin:
BCM2835 ROM tested on Pi 1B/2B/3B
Pico ROM untested
Version 6.86. Tagged as 'BuildSys-6_86'
Move SPIDriver component in ModuleDB from private to apache tree
Version 6.85. Tagged as 'BuildSys-6_85'
Fix OMAPHDMI component type
Version 6.84. Tagged as 'BuildSys-6_84'
Fix PlingSystem build for version 4.34 of FPEmulator
Detail:
Machine build switch now standardised to be compatible with Hdr:CPU.Arch
since FPEmulator now relies on that. One side-effect improvement is that
the binary in System:400.Modules.FPEmulator now includes FPA support so
RISC OS 4 or 5 users on an A7000+ will no longer lose hardware acceleration
if they softload FPEmulator.
Admin:
PlingSystem build now completes again.
Version 6.83. Tagged as 'BuildSys-6_83'
Add Connector to the ModuleDB
And install it in the bonus binaries.
Version 6.82. Tagged as 'BuildSys-6_82'
Add module for OMAP5 port
Detail:
OMAPHDMI added to the ModuleDB
Admin:
Wanted by OMAP5 components file, but omitted in BuildSys-6_77.
Version 6.81. Tagged as 'BuildSys-6_81'
Enable ABRelease
Builds same binary, not tagged.
Insert another component
Add Allocate to the ModuleDB
Add Allocate, for CTools components file.
Move !MakeModes out of the ROM modules section into the disc apps section.
Temporarily remove ATAPI from Titanium so the build completes without error.
Version 6.80. Tagged as 'BuildSys-6_80'
New modules in the ModuleDB
Detail:
Add OMAP5 HAL, ADFS 4 and SATADriver. Put HALs back in alphabetical order.
Version 6.79. Tagged as 'BuildSys-6_79'
Extra SysMap mapping
Detail:
For machine CortexA7 (and A15 and A17).
New method to control default CMOS settings
Detail:
Rather than fill the Kernel sources with an ever-increasing number of
platform-specific switches to control the default CMOS settings, this
change introduces a variable which passes the requirements direct from
the Components file to the Kernel. Since it uses a comma-separated list
of address/value pairs, it is inherently extensible. All the symbolic
names of addresses from Hdr:CMOS are available, and any valid objasm
expression can be used for the value.
Version 6.78. Tagged as 'BuildSys-6_78'
Extra components files
Detail:
OMAP5 components, submission from Willi Theiss.
Titanium components, submission from Elesar.
Some extra modules in the ModuleDB.
Added EtherCPSW AutoSense to the disc image.
Admin:
May not build, some bits still being reviewed.
Version 6.77. Tagged as 'BuildSys-6_77'
Add GPIO for exports
Previously located in the Kernel headers, now exported from GPIO.
Version 6.76. Tagged as 'BuildSys-6_76'
Ammend CTools components
Retagged as BuildSys-6_75.
Updated the CTools components file and added UtilLib to the ModuleDB.
Version 6.75. Tagged as 'BuildSys-6_75'
Retire TinyStubs
The ROM build of TinyStubs has done nothing since version 0.07 (1998) except count how many clients it has and refuse to die if non zero. The last RAM set of Toolbox modules to use it was just before Expresso (Java Risc PC) in 1998 also.
The Toolbox modules now make use of more functions than TinyStubs provided so can simply use the normal C libary.
While 'tlink' (the special linker used to link against TinyStubs) is mentioned in passing in application note 280 it doesn't appear Acorn ever released it, plus there's no 32 bit version available.
Tested over several months in an IOMD ROM.
Version 6.74. Tagged as 'BuildSys-6_74'
Add existence of SATAFS, SATAFiler, and SPIDriver modules to ModuleDB
Detail:
Admin:
(highlight level of testing that has taken place)
(bugfix number if appropriate)
Version 6.73. Tagged as 'BuildSys-6_73'
Retire Binaries components file
Add BonusBin components file
The former was tediously hand run by ROOL while the sources were first being published and included a lot of components that weren't actally suitable to be RAM loaded, for example because they had no ResourceFS registration step. Many of these have been tidied and included in the HardDisc4/PlingSystem products.
Version 6.72. Tagged as 'BuildSys-6_72'
Add FontEd to the module database
Formerly buried in FontManager, sources have be split out as a separate component (& VersionNum file).
Add AcornURI to the disc image
Remove DDEUtils from PlingSystem (binary identical duplicate of that in the disc image)
Version 6.71. Tagged as 'BuildSys-6_71'
Update known tools
Tagged as BuildSys-6_70.
Extend resources phase to handle more than just Messages
Using the InstViaRG script CModule will now collate a list of files (using the syntax for the InstRes script employed by the CApp shared makefile) for resources, rather than the previous Messages file only.
The list is specified in INSTRES_FILES, or if for some reason the standalone and ROM versions need to be different INSTRAM_FILES and INSTROM_FILES (cf. INSTAPP_FILES in CApp).
Shock new documentation for CModule added.
Version 6.70. Tagged as 'BuildSys-6_70'
Make CModule more closely follow AAsmModule when no resources are needed
Previously there was a quirky requirement to set RES_OBJ to an empty string to get this to work, now, we only require CUSTOMRES=no like AAsmModule does.
Not tagged, part of a 2 part update.
Ensure FPEmulator is aware of zero page relocation. Keep zero page relocation disabled for iMx6 for now. Add ZeroPain to ModuleDB
Detail:
Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, S3C6410, Tungsten - Add "FPEANCHOR=High" to FPEmulator build options so that it uses the relocated FPEAnchor location instead of the old one. In the future FPEmulator will be fixed so that it doesn't use a hard-coded address, but for now we need to manually tell ROM versions where FPEAnchor is.
Components/ROOL/iMx6 - Override the kernel's default decision and leave zero page relocation disabled. R-Comp can decide when it's a sensible time to enable it.
ModuleDB - Add ZeroPain. The module isn't used in any components files yet, but it's good to list it here forthe sake of completeness.
Admin:
Tested with Iyonix ROM build
Requires Kernel-5_35-4_79_2_268 for FPEAnchor setting to match reality
Version 6.69. Tagged as 'BuildSys-6_69'
Add RemoteDebug to CTool components
Nested include in DebugLib.h requires it, spotted by Martin Avison.
Version 6.68. Tagged as 'BuildSys-6_68'
Update OMAPVideo build options
Detail:
Components/ROOL/OMAP3, Components/ROOL/OMAP3Live, Components/ROOL/OMAP4 - OMAPVideo-0_34 now requires the OMAP revision to be specified as a makefile parameter rather than via CDEFINES
Admin:
Tested on BeagleBoard, PandaBoard
Required for OMAPVideo-0_34 to build
Version 6.67. Tagged as 'BuildSys-6_67'
Enable doLog for disc based SharedSnd
Want it for everything pre-Risc PC, and for issue 1 Risc PCs without 16 bit sound upgrades.
Version 6.66. Tagged as 'BuildSys-6_66'
Don't build stripnulls in BuildHost
Retagged as BuildSys-6_65.
Relocate xpand, add front end to DDE applications
Version 6.65. Tagged as 'BuildSys-6_65'
Add Raspberry Pi 2 support
Detail:
The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple
architectures, in this case ARMv6 and ARMv7. This has been achieved by
creating a new machine type specific for Raspberry Pi. The old ARM11ZF
machine type remains for builds that are ARM11-only.
Version 6.64. Tagged as 'BuildSys-6_64'
Add ability to specify dependicies for CLibrary
New capability for the CLibrary shared makefile to specify arbitrary dependencies (via ${LIBDEPENDS}) required before the main event, this might be used to, for example, run a perl script or something to generate some code or headers.
Add PDEBUGLIB PRISMLIB REMOTEDBLIB TRACELIB and UNICODELIB to the AppLibs and ModuleLibs.
Repoint DDTLIB WILDLIB TRACELIB.
For the PlingSystem build, put TextGadgets in the 350 directory since it currently only supports text areas in dynamic areas.
Version 6.63. Tagged as 'BuildSys-6_63'
Add SharedSound to PlingSystem
Detail:
Components/ROOL/PlingSystem - Build and install a copy of SharedSound suitable for RISC OS 3.1+
Admin:
Tested on emulated RO 3.11 & 3.70 SA RiscPC
Requires HdrSrc-2_49
Version 6.62. Tagged as 'BuildSys-6_62'
Add AUNMsgs to the components file
Skip some unused libraries
Don't build or export non participants MemLib & SCInterface.
Repoint ModMalloc library
Version 6.61. Not tagged
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'
[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'
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'
Fix path to use absolute path
!Run was using an relative path so if the current directory
of ResourcesFS was not it's root loading would fail.
Version 3.26. Tagged as 'Help2-3_26'
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'
Create intermediates for a (non leaf) new directory
The Ursula Filer enhancements (see 1309,211/FS section 4.4) aimed to replace the former 'New directory' writeable with a Save As style draggable box, based on the 'Copy as' one. However, its implementation was asymmetrical.
Consider what 'Copy as' does:
* When the dir icon is dragged the leaf is used as the target regardless of what else was typed in the text box
eg. "foo.bar.baz" when dragged will created "baz" only
* When text is typed in the box and OK (or enter) pressed
* If the text is a leaf (no dots) it is prefixed with the containing dir then passed to *COPY
* Otherwise passed direct to *COPY which will recursively create the steps
eg. select "baz", type "foo.bar", result is contents of "baz" now copied to "foo.bar.baz" in the CSD - which may not be the containing dir
Whereas 'New directory' did:
* When the dir icon is dragged the leaf is used as the target regardless of what else was typed in the text box
* When text is typed in the box and OK (or enter) pressed
* If the text is a leaf (no dots) it is prefixed with the containing dir then passed to *CDIR
* Otherwise passed direct to *CDIR which will error "Not found" since the intermediates are missing
Update the Filer to spot the last case and create the intermediates, before presenting the final path to *CDIR as before.
Clicks.s: For each path element create the directory, then call *CDIR for the final level.
DecodeMenu.s: Delete dead code.
PathMunge.s: Correct comment (r1 is preserved).
Version 2.44. Tagged as 'Filer-2_44'
Allow imagefs files to be applications.
This replicates the functionality of ImageFSFix, which
is supplied and enabled by default with SparkFS and ArcFS,
without the detrimental effects of confusing other programs.
Version 2.45. Tagged as 'Filer-2_45'
Correction to SetCaretPosition parameters
Detail:
MVN #1 is -2, whereas Wimp_SetCaretPosition expects -1 to mean "you calculate for me".
Admin:
Spotted during Clipboard Support bounty testing.
Version 2.46. Tagged as 'Filer-2_46'
Add menu messages for Rename (^R)
Version 2.47. Tagged as 'Filer-2_47'
[489] Fix for Ctrl-X/Ctrl-C clearing Filer rename writable
When Ctrl-X or Ctrl-C are pressed during a rename the Wimp (via Clipboard Manager) claim the clipboard to denote the text that was placed on it. This sends a Message_ClaimEntity. Unfortunately Filer wasn't discriminating which entity was being claimed, when it is only interested in loss of caret, so removed the writable and aborted the rename.
Add a check on the entity being claimed; only do something for caret.
Version 2.48. Tagged as 'Filer-2_48'
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
Fix pinboard sprite caching to take into account changes in mode RGB order & alpha blending
Detail:
s/Backdrop - Change the construction of the "compact mode word" representing the screen mode to include the RGB & alpha mode flags, so that the sprite will be re-cached when switching between screen modes with different RGB & alpha settings
Admin:
Tested on Raspberry Pi 3
Version 1.04. Tagged as 'Pinboard-1_04'
Allow imagefs files to be applications
This mirrors the change in Filer 2.45.
Version 1.05. Tagged as 'Pinboard-1_05'
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'
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Version 2.52. Tagged as 'CDFSFiler-2_52'
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'
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Key ellipsis suffix off OS version
Detail:
NetFiler is provided in the universal boot, hide the ellipsis on OS versions where the other filers would also be missing one.
Version 0.87. Tagged as 'NetFiler-0_87'
Cross-compilable
Detail:
* Rewrite Makefile to use shared makefiles
* Fix #includes for case-sensitive filesystems
Version 0.10. Not tagged
Delete some dead code
Since PipeFS registers with FileSwitch with both dontuseload and dontusesave there's no need to implement the corresponding FSEntry_File subreasons. This might have been left around because RISC OS 2 ignored FS info word flags b23-16, but we're not worrying about RISC OS 2 compatibility now.
Version 0.24. Tagged as 'PipeFS-0_24'
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Version 0.41. Tagged as 'RAMFSFiler-0_41'
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'
This commit was manufactured by cvs2git to create tag 'BCM2835-0_75-2'.
Sprout from master 2018-04-10 19:40:00 UTC Robert Sprowson <rsprowson@gitlab.riscosopen.org> 'Debug UART typo & clarification'
Cherrypick from master 2018-12-01 17:59:05 UTC Robert Sprowson <rsprowson@gitlab.riscosopen.org> 'Appease Thor':
s/GPIO
s/SDIO
Cherrypick from Pi3APlus 2018-10-26 19:31:38 UTC Ben Avison <bavison@gitlab.riscosopen.org> 'Add support for Pi model 3A+':
hdr/BCM2835
Merge SMP branch to trunk
Detail:
hdr/StaticWS - Reserve workspace for QA7 peripheral address, HAL-wide spinlock, and doorbell device
Makefile, s/DBell - Add doorbell device implementation
hdr/BCM2835 - Clean up dead macros, add new macros for spinlock claim/release and basic CPU detection. Define new IRQ numbers for the "QA7" peripheral.
hdr/CastleMacros, s/Top - Generate two HAL descriptors and entry point tables: One for single-core machines and one for multi-core machines. This avoids some MP-related overheads on ARM11 models of Pi. Implement SMP HAL entry points.
s/Interrupts - Add support for the QA7 interrupts. Although some interrupts can be flexibly routed to different cores, we currently stick with a static scheme.
s/Messaging - Use CPUDetect macro
Admin:
Untested
Requires Kernel-6_09
Version 0.76. Tagged as 'BCM2835-0_76'
Merge branch Pi3APlus to trunk
Not tagged
Appease Thor
SDIO.s: a condition code mixup meant that during intense SD card activity the thunder bolt symbol would appear due to poking the non-LED lines on 3B+
GPIO.s: extend the 'free for use' table to include 3A+ pins, otherwise it read off the end; add an ASSERT to catch this in future
Version 0.77. Tagged as 'BCM2835-0_77'
Check Board_Model only once
Do an upfront check for the model being 0, if that ever changes there's probably something seriously different. Look only at the Board_Revision elsewhere.
Add the other Compute module to the SPI2 check (though currently the checks don't consider "New" revision words).
Version 0.78. Tagged as 'BCM2835-0_78'
Add Compute Module 3+ support
GPIO.s,hdr/BCM2835: Table of known ids updated
SPI.s: Fix long broken compute module support (only the original CM1 would have exported SPI2 due to not checking for the new id scheme).
Unrelated, SDIO.s: Use CallOS macro.
Thanks to Chris Hall for testing this on a CM3+ 8GB model.
Version 0.79. Tagged as 'HAL_BCM2835-0_79'
Address of mailbox given to GPU should have cacheability bits set correctly
On entry to HAL_SendHostMessage, we ensure the contents of the mailbox buffer
are flushed out to the ARM L2 cache (if applicable) and main memory. There
were a couple of instructions to fill in the top two bits of the address
before passing it to the VC, but they were commented out for reasons that are
not clear.
The effect of this is that the VC will look in its L1 and L2 caches for the
data in the buffer. On Pi 1 and 0, this wouldn't be too bad, since ARM11
didn't have its own L2 cache and would have written the data into the VC L2
cache instead, meaning that there would only be coherencency problems if the
VC L1 cache still contained the old contents of the address. On Pi 2-4, it's
more risky, because the VC L2 cache could also be inconsistent with main
memory at this point.
Reinstating the top two bits doesn't appear to cause any ill effects I can
see (tested on Pi 1 and 4), so put these instructions back in.
Version 0.80. Tagged as 'HAL_BCM2835-0_80'
Set shareability bit in page tables for IO region on Pi 2 onwards
RISCOS_MapInIO does relatively little processing on the L1PT flags that the
HAL passes to it. However, when modules come along later and try to locate
IO again, using OS_Memory 13, access permissions are specified using a
variation on dynamic area flags. The kernel translates from these to L1PT
flags, and one of the rules it applies is that the shareability bit is set
if on a multiprocessor system. On Pi 2 and later, this means it doesn't find
a match amongst the sections that were mapped in by the HAL, and in practice
this means BCMVideo ends up causing 16MB of IO space to be mapped in twice.
Fix this by passing the L1_S flag to RISCOS_MapInIO on Pi 2 and later. This
effectively frees up an additional 16MB of logical address space for dynamic
areas.
Version 0.81. Tagged as 'HAL_BCM2835-0_81'
Fix OS_SerialOp default handshaking use on Pi
The default state for the Serial device (aka OS_SerialOp, and redirection to serial via *FX) is to expect hardware handshaking. However the implementation of HAL_UARTModemStatus when ModemControl = {FALSE} state didn't set a return value so ended up returning a1 = the port number (=0) rather than valid status bits. In turn, DualSerial took that to mean CTS/DSR deasserted and refused to send anything.
To a lesser extent HAL_UARTModemControl also affected, returning a1 = port number 0 too.
For both, set a return value; the value is as though a cable is always present with RTS=CTS and DTR=DSR.
Also, fix the bugs in ModemControl = {TRUE}. This also fakes DTR=DSR which status/control bits don't appear to be implemented in the UART peripheral. Tested briefly, checking CTS state when plugging/unplugging a cable.
Version 0.82. Tagged as 'HAL_BCM2835-0_82'
Peripheral physical addresses have moved again
Also:
* the IO region previously used only for the QA7 extensions now holds a GIC
as well on Pi 4, so give it a more generic name
* there's a new, second peripheral IO region to map in as well
Minimal read-write support for mini-UART
Because the mini-UART clock is derived from the core clock, and this varies
by hardware platform and even firmware version, move the initial mailbox
read to before UART initialisation so that this information is available.
Get IRQs working
Detail:
* For now, this uses the legacy interrupt controller, whose register layout has
unfortunately changed in some unhelpful ways. There is also a GICv2 in the
SoC, which we will need to transition across to in order to use some of the
newer peripherals (including USB3 and gigabit Ethernet).
* This requires a corresponding set of changes to start.elf: substitute all
three instances of &E30011E7 with &E3001000.
* FIQs are not currently supported, as the legacy interrupt controller has
changed how these are handled. It seems likely that we'll transition to
GIC before too long, which means it's not worth bothering to implement them
for the legacy interrupt controller.
Enable SD controller
Detail:
* Efforts to get the faster EMMC2 controller working are ongoing. In the
meantime, this enables the backward-compatible EMMC1 controller.
* The method required to control the activity LED appears to have changed,
yet again. I haven't worked out how yet, so this is currently
non-functional.
GPIO support
Detail:
* Board recognition for Pi 4
* Updated the pin enumeration table to specify new functions available in Pi 4
(I2C[3456], SPI[3456], UART[2345])
SD bugfixes
Detail:
* Implement SD activity LED for Pi 4
* Remove inappropriate reprogramming of GPIO47 for Pi 3 B(+) and A+
* Correct the value for SDHCIWriteInterval which is used during SetSDCLK()
Extended IRQ support, and FIQ support
Both still use GIC bypass mode. Assuming for now that extended GPU peripherals
can't support FIQ without GIC (it seems as though they either all use IRQ or
all use FIQ, and RISC OS isn't set up for there being multiple FIQ sources
active at once).
Support EMMC2 controller
This controller is now preferred over the legacy EMMC controller, and it is
capable of UHS speeds (pending support in SDIODriver).
Requires RiscOS/Sources/HWSupport/SD/SDIODriver!4
Support >1GB RAM
RAM sizes above 1GB are not reported by the usual mailbox property, and it
seems unlikely that this will change because the VC RAM allocation has to
remain within the bottom 1GB of the address space (the VC still uses the
upper two bits of its addresses for cache policy) and this property cannot
describe a non-contiguous range. Use the board revision bitfield to recognise
when additional general-purpose RAM exists above the VC allocation. For now,
we're running in "low peripherals" mode, so the top 64MB of 4GB RAM machines
is inaccessible. If the VC allocation is also 64MB, that means the startup
banner of Pi 4 will read 960MB, 1984MB or 3968MB.
Also fix HAL_PhysInfo (and by implication, OS_Memory 6 and 7) to report the
full 35-bit physical address space on Pi 4. The `range` struct filled in by
HAL_PhysInfo has not been extended to 64-bit physical addresses because it
describes RAM, and for now at least, RAM just squeezes into 32-bit addresses.
Fix debugging via UART0
HAL_QueryPlatform was attempting debug output before the debug
UART had been initialised. Since both the PL011 & MiniUART
configuration depends on getting/setting firmware values, fix it
by just removing the debug prints from HAL_QueryPlatform.
Add GIC interrupt controller support for BCM2838.
* Requires 'enable_gic=1' in config.txt (or Pi4 dtb to be present?)
* IRQs are managed via the GIC, FIQs via the BCM2838 FIQ controller
* Implemented in s.IntVC6 to avoid making s.Interrupts too
confusing.
* Previous VC6 interrupt support removed from s.Interrupts
* From the OS's perspective, interrupt numbers mostly remain
unchanged. However iDev_QA7 interrupts are unavailable, and some of
the BCM2838 interrupts have been overlaid ontop of them.
* Device drivers must take care to issue HAL_IRQClear, as that is
a new requirement for this HAL
Add preliminary PCIe setup steps
Just enough pokes to be able to scan configuration space such that the VIA XHCI controller can be seen by PCI Manager. Note: at present there are no memory or IO windows open, so you can't (yet) see XHCI registers.
Add EtherNIC HAL device
Basic HAL device to expose the GENET peripheral for the driver.
Add remaining PCIe setup steps
Memory window now enabled on the VIA VL805, on-chip bridge set to forward memory transactions, ARM CPU to PCI address space translated.
Since we know there's only the VIA chip on the bus, there's no dynamic probing going on like platforms that have PCI sockets. Its BAR settings are derived from defines at the top of PCI.s, so to browse the XHCI capability registers just peek at
*Memory p 600100000 +20
Only 1 of the 4 address space translation windows is used.
Extend the PCI address table for 64b
The USB controller is at physical addresses outside 32b range, extend so that it can be picked up by PCI manager, and hence use its SWIs (rather than *Memory P) to see registers.
Also write the interrupt number into the config space so it can be picked up.
Requires PCI-0_18.
Let VCHIQ know which page list format to use
VCHIQ bulk transfers on Pi 4 use a different page list format, in order
to allow for full use of the larger 36bit physical address space. Add a
flags word to the VCHIQ HAL device so that we can let the VCHIQ module
know what page list format it should use for the machine we're running
on.
Make a substitute for MPHI
The MPHI is (ab)used by DWCDriver as a means to do a FIQ downgrade to IRQ, but Pi 4 has no MPHI, so instead we substitute the GIC (as the GICD_ISPENDRn can be used to cause an IRQ from software).
More sensible abstraction
Give the ISPENDRn address directly, since its only the HAL that knows that iDev_GPU is encoded from 64+, rather than having to bake it into DWCDriver.
Update table for 4B revision 1.2
Minor DFM changes resulted in a new revision number
https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md
but only for 4GB.
Update table for another 4B revision 1.2
The 2GB new minor revision is in the wild.
Also tidy HAL_[Ext]MachineID leftovers.
Version 0.83. Tagged as 'HAL_BCM2835-0_83'
Correct MAC endianness
The MAC address when encoded as a Dallas unique id is in network byte order.
For example, a Risc PC returns OS_ReadSysInfo 4 with r0=&A4123456 r1=&0000 because Acorn's EUI is 00:00:A4.
Version 0.84. Tagged as 'HAL_BCM2835-0_84'
Update table for 4B revision 1.4
Detail:
The 8GB model has a new PCB revision too.
Admin:
Submission from David Pitt.
Version 0.85. Tagged as 'HAL_BCM2835-0_85'
Update list of mailbox property tags
Detail:
hdr/BCMSupport - Add some extra mailbox property tags (mainly memory management related)
Admin:
Tested on Raspberry Pi 3
Version 0.08. Tagged as 'BCMSupport-0_08'
Add definition for gamma mailbox tag
Detail:
hdr/BCMSupport - Add ARM2VC_Tag_SetGamma, which was introduced with recent firmware versions
Admin:
Tested on Raspberry Pi 3
Version 0.09. Tagged as 'BCMSupport-0_09'
Export clock IDs in Hdr:BCMSupport
Detail:
These will be used by future versions of the BCM2835 HAL
Version 0.10. Tagged as 'BCMSupport-0_10'
Add another clock ID to Hdr:BCMSupport
Firmware versions starting from 2019-07-08 feature an additional clock ID.
See https://github.com/raspberrypi/firmware/issues/1179
Version 0.11. Tagged as 'BCMSupport-0_11'
Add missing HAL_IRQClear call, needed for Pi 4 / GIC
Version 0.12. Tagged as 'BCMSupport-0_12'
Export the SWI numbers for C interface
Add CMHGAUTOHDR line to makefile so the SWI numbers get appended so they can be used from C.
Remove excess RES_OBJ, the default name suffices.
Version 0.12. Not tagged
Fix memory leak on error
Don't leak pchBuffer on error.
Found by cppcheck static analysis.
Tagged as DualSerial-0_25-4_8_2_16-1 since DualSerial itself is unchanged.
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
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'
Ensure cmos loaded at boot time in iMx6 if module active
Detail:
Writes were saved to a SD based sector, but not read out at
module initialisation
Admin:
(highlight level of testing that has taken place)
(bugfix number if appropriate)
(overview of change)
Detail:
(list files and functions that have changed)
Admin:
(highlight level of testing that has taken place)
(bugfix number if appropriate)
Version 0.19. Tagged as 'SDCMOS-0_19'
Updated various comments. Cleared unneeded mods
Detail:
Removed most of the mods inserted in last update.
Improved the comments.
Admin:
tested on iMx6
Version 0.20. Tagged as 'SDCMOS-0_20'
Implement generic SDHCI version of GetTMCLK
The new SDHCI controller in Pi 4 actually follows the spec in this regard
(allegedly - not yet measured in practice)
Version 0.14. Tagged as 'SDIODriver-0_14'
Rename internal types/variables to reflect coming support for non-SDHCI controllers
A lot of state doesn't actually care whether a controller's register layout
follows the SDHCI standard or not. To reduce future confusion, most internal
types and pointer variables are hereby renamed from 'sdhci' to a more generic
'ctrl', short for 'controller'. Exceptions are sdhci_regset_t and
sdhci_writebuffer_t, which are intimately tied to register accesses.
Public data types and definitions (and the names of the exported header files)
retain the original names, for the sake of not breaking all the other
components that rely on them.
Expose sdhci_op_state_t struct
This is made up of 11 former members of sdioop_t. These will become part
of the new "soft" controller API, so refactor the code to expose them as
a new struct type, and use that internally.
Reorganise state variables internal to op_poll into separate struct
Three members of sdioop_t are particularly closely tied to the state machine
for SDHCI controllers, and so are likely to differ for soft controllers.
Create sdhci_op_t to hold these, and introduce a variable-length array member
at end of sdioop_t to hold it. Allocate sdioop_t more dyamically in
preparation for soft controllers.
Refactor op_poll()
This is now split into an outer function that does locking, iterates over
the operation list and interacts with the OS and SDIODriver's clients, and
an inner function op_poll_sdhci() which codifies the wait states of a
standards-compliant SDHCI controller and does the register bashing. This
internal API is now pretty close to what is required for a soft controller.
Add support for "soft" HAL devices
These are identified by a different value in the major version field, and are
intended for SD controllers that implement a register set that does not follow
the SDHCI standard. All interaction with the controller is performed via
function calls into such a HAL device, and a few of these are new.
A couple of other changes that were made in passing:
* device_added() now calls set_activity() and thereby avoids a branch through
zero if a device indicates that the SDHCI host_control1 register should be
used for setting the activity indicator.
* HAL device deactivate entry is now called before OS_ReleaseDeviceVector so
that it can be used to mask interrupts in the host controller. Since no
current versions of the module use interrupts, this is a safe change.
Add Debug switch
Add SoftHALDevice memory request routines
Be more selective searching for a suitable HALDevice
Version 0.15. Tagged as 'SDIODriver-0_15'
Implement generic SDHCI version of SetSDCLK
The new SDHCI controller in the Pi 4 appears to follow the spec in this regard
also.
Bugfix to generic SDHCI version of SetBusWidth
A following register read (after exit from the function) could bypass the
write buffer.
Version 0.16. Tagged as 'SDIODriver-0_16'
Made aware of another product that doesn't provide a sound driver till later.
Module will not then die when initialised
Detail:
Admin:
Version 1.86. Tagged as 'Sound0HAL-1_86'
Improved startup with transient HAL sound device
Detail:
A previous mod provided a compile time switch to leave SoundDMA present
even when there was no HAL audio device. This has proved unnecessary,
so has been removed. Instead, once the HAL device has been made available
one should rmreinit in order; SoundDMA, SoundChannels, SoundScheduler,
and then WaveSynth, Percussion, and StringLib. This ensures that the module
dependant interactions are reinitialised.
Additionally there was a possibility that if no HAL audio devices were
available at startup it was possible to get a null pointer error under
some circumstances.
Admin:
tested in iMx6 with other HAL audio devices both enabled and disabled
Version 1.87. Tagged as 'Sound0HAL-1_87'
Allow module initialisation to succeed if there is no audio device present
Detail:
Since we can cope with audio devices dynamically being added and removed once initialisation is complete, it seems sensible to also cope with the situation where no devices are available on startup.
s/Sound0 - Rearrange Initialise_Module so that if no device is found on startup, the initial state of the module will be the same as if a device had been found but then went missing: configuration SWIs will continue to function, the next device to appear will automatically be selected as the active device (with sound automatically turning on), and manual Sound_Enable calls will produce an error saying no device is present. These changes should also allow the module to cope with situations where other support modules like DMAManager, RTSupport, or VFPSupport are (temporarily) unavailable on startup.
Admin:
Tested on iMX6
Version 1.88. Tagged as 'Sound0HAL-1_88'
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'
Enable split interrupt transactions
Detail:
Reflects change made here
https://github.com/raspberrypi/linux/commit/7956536a3d78ba0ef8ec990651b315664ed70f90
after wider testing by the Linux community.
Admin:
Submission from Colin Granville.
Version 0.35. Tagged as 'DWCDriver-0_35'
Make a substitute for MPHI
The MPHI is (ab)used by DWCDriver as a means to do a FIQ downgrade to IRQ, but Pi 4 has no MPHI, so instead we substitute the GIC. This is essentially a GIC based equivalent to the changes in https://github.com/raspberrypi/linux/commit/0a1cf0d.
Apply these diffs then, in dwc_otg_riscos.c:
* deduce use_swirq by noticing the MPHI base happens to have all 13 LSB clear whereas the GIC doesn't, in just as horrendously Pi specific manner as Linux looking at the size of the memory region to deduce same
* setup the pointers to swirq_set and swirq_clr at GICD_ISPENDRn GICD_ICPENDRn
Version 0.36. Tagged as 'DWCDriver-0_36'
Remove some redundant #includes
TCPIPLibs-5_69's version of sys/time.h now includes the TCPIPLibs
version of sys/types.h, which contains duplicate/conflicting definitions
of CLib's clock_t & time_t from time.h.
DWCDriver's port.c was including both sys/time.h and time.h, which means
that for the past few weeks Norcroft has been throwing errors about the
duplicate definitions (but still producing a valid object).
However both of those includes appear to be redundant, so just remove
them. Resulting binary is unchanged.
Version 0.36. Not tagged
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'
Close the va_list, update VCHIQ a bit
Updated to VCHIQ sources to rev 81a8b5427b9a85c5cf1f437346e76d6c643621b3.
This gets 2 fixes from static analysis (bool compare mistake line 324 of vchiq_2835_arm.c, and potential NULL pointer dereference line 263 of vchiq_core.c).
Porting notes:
* smp_mb|wmb|rmb() memory barrier functions do global dsb() equivalent
* vchi_msg_queuev() has been removed from the user API, so we now emulate that by calling the non vectored copy multiple times
* vchi_msg_queue() and vchi_msg_queuev() no longer take a 'flags' parameter (was R3), so we mimick the only previous use of this parameter to throw a warning in swis.c just in case it comes back again in future
* vchi_msg_queue() and vchi_msg_queuev() no longer take a 'msg_handle' parameter (was R4), we ignore this like the previous implementation did, but keep it in the SWI API just in case it comes back again in future
Also:
vchiq_riscos.c: Add missing va_end's.
Makefile: Remove obsolete VCOS_VERIFY_BKPTS switch.
Tested on a Pi 2B. Sound and video and vcgencmd still work, which at a cursory search of the sources are the things using the VCHIQ_MsgQueue[V] SWIs.
Version 0.11. Tagged as 'VCHIQ-0_11'
Fix module to be unkillable
Detail:
c/cmodule - Fix typo in module_final which meant that unfinished shutdown code was used instead of the "you can't kill me" error being returned
Admin:
Tested on Raspberry Pi 3
Version 0.12. Tagged as 'VCHIQ-0_12'
Convert to use synclib. Fix deadlock issue.
Detail:
Makefile - Link to synclib
c/cmodule - Initialise synclib on startup
c/swis - Remove redundant #include
c/vchiq_riscos, h/riscosbits - Replace the custom mutex, spinlock, and atomic operations with their synclib equivalents. Change semaphore implementation to use a spinlock instead of disabling IRQs. Fix up() to only sleep if IRQs are enabled, since if IRQs are disabled it could be a sign that a spinlock is held (fixes deadlock issue if certain VCHIQ operations are performed from high-priority RTSupport threads)
s/asm - Remove old atomic & spinlock functions
Admin:
Tested on Raspberry Pi 3B
Version 0.13. Tagged as 'VCHIQ-0_13'
Fix bulk transfers on Pi 4
VCHIQ bulk transfers on Pi 4 use a different page list format, in order
to allow full use of the larger 36bit physical address space. Update our
vchiq_prepare_bulk_data implementation to use this new format when
necessary.
Version 0.14. Tagged as 'VCHIQ-0_14'
Add BFont UCS table
Not tagged, since DoBFont is {FALSE}, but at least the labels exist so it could be assembled.
Addition of Iceland, Portugal & Netherlands Territory modules
Detail:
Territory tables to general Icelandic, Portuguese and Netherlands territories using the shared territory module code.
Admin:
Based on tables extracted from the original modules by Detlef Thielsch and Andreas Feldner, special thanks to them for releasing these under a BSD licence.
Submission from Martin Avison, who reformatted the tables into a form compatible with the other territories.
Tested on Iyonix with RISC OS v5.22 and v5.24, and RISC PC with RISC OS v4.39.
Version 0.62. Tagged as 'Module-0_62'
Further territory updates
Detail:
Correct Netherland/Portugal/Iceland working week and thousands and decimal point punctuation.
Submission from Martin Avison.
Add missing reverse lookup entries for TR50 (China) TR51 (Brazil) TR53 (Korea) TR54 (Taiwan) to the respective Territory resources.
Change order of concatenation of Messages+Territory in the Makefile so that the Territory names remain untokenised.
Admin:
Built, but not tested.
Version 0.63. Tagged as 'Module-0_63'
RISC OS 5.26 is basically the same as 5.24, apart from some re-branding
So we achieve it by using this short branch from the revision used in 5.24
Tagged as 'Kernel-6_01-3'
Merge Kernel-5_86
Detail:
hdr/EtherDevice: Merge in Kernel-5_86 to keep branch up-to-date with MAIN
Admin:
Untested
Version 5.86, 4.129.2.1. Tagged as 'Kernel-5_86-4_129_2_1'
Initial SMP changes
Detail:
This commit lays some of the groundwork for SMP support within the HAL, kernel, and OS.
Makefile, hdr/HALDevice, hdr/DBellDevice - Add definitions for a doorbell HAL device, to allow CPU cores to signal each other via interrupts
hdr/HALEntries - Repurpose HAL_Matrix and HAL_Touchscreen entry points for new SMP-related entry points. Add a couple of IRQ-related definitions.
hdr/KernelWS - Boost MaxInterrupts to 256
hdr/Options - Add new SMP build switch to control whether the kernel is built in SMP-friendly mode or not. SMP-friendly kernels should still run on single-core machines, but may behave slightly differently.
s/ARMops - Make as many ARMops SMP-safe as possible, relying on hardware support for broadcasting of cache/TLB maintenance operations
s/ExtraSWIs - Make SMP-friendly full OS_SynchroniseCodeAreas only sync application space and the RMA (full-cache IMB not really possible with SMP)
s/NewIRQs - Update IRQ despatcher comments to (hopefully) reflect reality
Docs/SMP/HAL, Docs/SMP/IRQ - Add documentation covering the new HAL calls and IRQ behaviour
Admin:
Tested on Raspberry Pi 2, 3, OMAP4, iMX6
Version 5.86, 4.129.2.2. Tagged as 'Kernel-5_86-4_129_2_2'
Add OS_Memory 19, which is intended to replace the OS_Memory 0 "make uncacheable" feature, when used for DMA
Detail:
Making pages uncacheable to allow them to be used with DMA can be troublesome for a number of reasons:
* Many processors ignore cache hits for non-cacheable pages, so to avoid breaking any IRQ handlers the page table manipulation + cache maintenance must be performed with IRQs disabled, impacting the IRQ latency of the system
* Some processors don't support LDREX/STREX to non-cacheable pages
* In SMP setups it may be necessary to temporarily park the other cores somewhere safe, or perform some other explicit synchronisation to make sure they all have consistent views of the cache/TLB
The above issues are most likely to cause problems when the page is shared by multiple programs; a DMA operation which targets one part of a page could impact the programs which are using the other parts.
To combat these problems, OS_Memory 19 is being introduced, which allows DMA cache coherency/address translation to be performed without altering the attributes of the pages.
Files changed:
- hdr/OSMem - Add definitions for OS_Memory 19
- s/MemInfo - Add OS_Memory 19 implementation
Admin:
Tested on Raspberry Pi 3, iMx6
Version 5.86, 4.129.2.3. Tagged as 'Kernel-5_86-4_129_2_3'
Merge in latest changes from main branch
Version 5.88, 4.129.2.4. Tagged as 'Kernel-5_88-4_129_2_4'
Fix global OS_SynchroniseCodeAreas. ARMop tweaks.
Detail:
s/ExtraSWIs - Fix global OS_SynchroniseCodeAreas using the wrong appspace size; would have resulted in appspace only being partially synced if some pages were mapped out due to lazy swapping
s/ARMops, s/ExtraSWIs, s/MemMap2 - Simplify code by making DCache_LineLen / ICache_LineLen store the actual line length values on ARMv7+ instead of the log2 values. Optimise SMP I-cache invalidation by allowing it to do a global invalidate. Ensure all ARMv7+ range checks use LO instead of NE, to avoid any problems with mismatched I/D line lengths (can't be sure the op range was rounded to the larger of the two)
Admin:
Tested on iMX6
Version 5.88, 4.129.2.5. Tagged as 'Kernel-5_88-4_129_2_5'
Merge latest changes from main branch
Version 5.89, 4.129.2.6. Tagged as 'Kernel-5_89-4_129_2_6'
Merge in latest changes from main branch
Version 5.97, 4.129.2.7. Tagged as 'Kernel-5_97-4_129_2_7'
Back to odd numbered development
Version 6.02. Tagged as 'Kernel-6_02'
Increase number of vectors supported by the kernel to 96.
Version 6.03. Tagged as 'Kernel-6_03'
Disable error block validity checks
Detail:
The error block checks introduced in Kernel-5_35-4_79_2_313 are generating a few too many false positives and edge cases, so take the safe option of just disabling them rather than trying to tweak the rules further. Error pointers will still be checked, but the content of the error blocks will not.
hdr/Options - Add CheckErrorBlocks switch so we can easily turn the code back on again in the future if necessary
s/Kernel - Switch out all the code relating to error number checks, except for the dummy load of the first word of the error block, since that's still useful as a pointer validity check
hdr/KernelWS - Revise SWIDespatch_Size definition so it's easier for it to cope with the various factors which may affect the despatcher size
Admin:
Tested on PandaBoard
Relevant discussion:
https://www.riscosopen.org/forum/forums/11/topics/11133
Version 6.04. Tagged as 'Kernel-6_04'
Added HALDeviceID_RTC_PCF8523
Detail:
Admin:
Version 6.05. Tagged as 'Kernel-6_05'
Merge in latest changes from main branch
Version 6.05, 4.129.2.8. Tagged as 'Kernel-6_05-4_129_2_8'
Update mode variable definitions
Detail:
hdr/VduExt:
- Introduce mode variable 13, for specifying the minimum number of screen banks that are guaranteed to be available. Eventually the kernel will make use of this during mode vetting & selection, to give programs a simple and reliable way of selecting banked screen modes. Currently however it's only supported by VideoOverlay and the corresponding GraphicsV overlay APIs.
- Extend the mode flags to allow display rotation & flipping to be specified. This is used to indicate that the framebuffer accessed by the CPU is not in the same orientation as what the user is seeing. Again, currently this is only supported by VideoOverlay and the corresponding GraphicsV overlay APIs.
Admin:
Tested on OMAP3, OMAP4
Version 6.06. Tagged as 'Kernel-6_06'
Various kernel cleanups
Detail:
NewReset.s: Remove warning about soft reset, this is not supported any longer
MsgCode.s: Reload LR after potentially changing mode
PMF/osinit.s: Delete vestiges of soft reset support
Admin:
Submission from Timothy Baldwin.
Version 6.07. Tagged as 'Kernel-6_07'
Simplify initial AplSpace claim
Detail:
As the application slot is now a normal dynamic area, there's no need to manipulate the CAM directly. Convert FudgeSomeAppSpace into a OS_ChangeDynamicArea SWI followed by memset().
ChangeDyn.s: Offset by 32k to account for the -32k that dynamic area -1 has.
NewReset.s: Delete FudgeSomeAppSpace and replace as above.
Admin:
Submission from Timothy Baldwin.
Version 6.08. Tagged as 'Kernel-6_08'
Merge latest changes from HEAD
Version 6.08, 4.129.2.9. Tagged as 'Kernel-6_08-4_129_2_9'
Allow SMP build switch to be overridden by components file
Detail:
hdr/Options - The setting of the SMP switch can now be controlled by specifying the correct ASFLAGS, e.g. ASFLAGS="-PD \"SMP SETL {FALSE}\""
Admin:
Untested
Version 6.08, 4.129.2.10. Tagged as 'Kernel-6_08-4_129_2_10'
Merge SMP branch to trunk
Detail:
Since the current SMP changes are fairly minor, and the trunk is seeing most development, from a maintenance perspective it makes sense to merge the changes to trunk. This will also make sure they get some wider testing ready for when the next round of SMP development takes place.
Changes:
- Docs/SMP - New docs folder describing SMP-related changes to the HAL and interrupt handling. Some of the IRQ changes can also be taken advantage of by single-core devices, since it introduces a way to describe which interrupt sources can be routed to IRQ & FIQ
- Makefile, hdr/DBellDevice, hdr/HALDevice - New HAL device for an inter-processor software-generated interrupt source ("doorbell")
- hdr/HALEntries - Reuse the unused matrix keyboard & touchscreen HAL entry points for the new IRQ handling & SMP-related HAL calls
- hdr/KernelWS - Bump up MaxInterrupts
- hdr/OSMem, s/MemInfo - Introduce OS_Memory 19, to allow for DMA to/from cacheable memory without actually altering the cacheability of the pages (which can be even more tricky in SMP systems than it is in uniprocessor systems)
- hdr/Options - Introduce SMP build switch. Currently this controls whether the ARMops will operate in "SMP-friendly" mode or not (when running on MP processors)
- s/ARMops, s/MemMap2 - Introduce the ARMv7MP ARMop implementation. Simplify DCache_LineLen / ICache_LineLen handling for WB_CR7_Lx so that it's the plain value rather than log2(n)-2
- s/ExtraSWIs - If ARMops are in SMP-friendly mode, global OS_SynchroniseCodeAreas now only syncs application space and the RMA. This is because there is no trivial MP-safe global IMB operation available. This will also make global OS_SynchroniseCodeAreas significantly slower, but the documentation has always warned against performing a global IMB for just that reason, so code that suffers performance penalties should really try and switch to a ranged IMB.
- s/NewIRQs - Update some comments regarding IRQ handler entry/exit conditions
Admin:
Untested
Version 6.09. Tagged as 'Kernel-6_09'
Fix OS_Memory 0 "make temporarily uncacheable" not reporting errors
Detail:
s/MemInfo - The wrapper around OS_Memory 0 introduced in Kernel-5_35-4_79_2_311 was preserving the wrong PSR field on exit, causing any error generated by the core code to be lost.
Admin:
Tested on Iyonix
Fixes *screensave saving mostly white pixels (address translation for "external" VRAM should have failed and caused ADFS to fall back to a bounce buffer)
Is also likely to be the cause of https://www.riscosopen.org/forum/forums/5/topics/11713 (address translation should have failed for soft ROM)
Version 6.10. Tagged as 'Kernel-6_10'
Evict ECFIndex and PalIndex from VDU workspace
Detail:
ECFIndex and PalIndex claim to be mode variables, but it's impossible for extension modes to specify their values.
Since they're easy to calculate from the ModeFlags and Log2BPP values, drop them from the mode workspace (+ table of builtin modes) and calculate them on the fly instead.
File changes:
- hdr/KernelWS - Drop ECFIndex & PalIndex from workspace
- s/vdu/vdumodes - Adjust workspace definition, drop ECFIndex & PalIndex values from VWSTAB
- s/vdu/vdudriver - Remove now-redundant copy loop from ModeChangeSub. Remove code from GenerateModeSelectorVars that sets up the ECFIndex & PalIndex values on the stack
- s/vdu/vdugrafl - Adjust copy loop in SwitchOutputToSprite/Mask
- s/vdu/vdupalette, s/vdu/vdupalxx - Add GetPalIndex routine to generate PalIndex on the fly. Drop the obsolete 16bpp palette/gamma table and shuffle the other entries to simplify GetPalIndex a bit.
- s/vdu/vduplot - Add GetECFIndex routine to generate ECFIndex on the fly. Also, fix things so that mode 0 isn't the only rectangular-pixel mode which uses the special rectangular-pixel ECF patterns (index 0 vs. index 4). Fiddle with ExportedHLine a bit to avoid an out-of-range ADR.
- s/NewReset - Fix UAL warning for MOV R0, AppSpaceStart. Adjust memset to not assume 512KB is the correct amount
Admin:
Tested on Raspberry Pi 3
Version 6.11. Tagged as 'Kernel-6_11'
Fix OS_Hardware 3 to be re-entrant
Detail:
s/HAL - OS_Hardware 3 (remove HAL device) will now re-scan the device list for the device following the Service_Hardware call, so that the device list won't become corrupt if the service call triggers addition/removal of devices.
Admin:
Tested on iMX6
*HDMIOff now correctly removes the HDMI audio device and SoundDMA's software mixer device (SoundDMA removes mixer in response to the HDMI audio device vanishing, but re-entrancy bug meant that the HDMI device was left on the list)
Note that this only covers re-entrancy via Service_Hardware. OS_Hardware 2/3/4/5 are not re-entrant from other locations (e.g. IRQ handlers or memory allocation service calls).
Version 6.12. Tagged as 'Kernel-6_12'
Improve detection of invalid/unsupported screen modes
Detail:
s/vdu/vdudriver - When using mode selector blocks, don't allow the system to switch into double-vertical, double-pixel, or BBC-gap modes which are in colour depths unsupported by the kernel
Admin:
Tested on BB-xM
Version 6.13. Tagged as 'Kernel-6_13'
Nightly beta builds leapfrog RISC OS 5.26
Attempt to tidy up substitute screen mode selection logic
Detail:
Over the years the OS's substitute screen mode selection logic has grown to be a tangled mess, and the logic it does implement isn't always very useful. Additionally, the kernel is structured in such a way that it can be hard for modules to override it.
This set of changes aims to fix the many of the problems, by doing the following:
- Moving all substitute mode selection logic out of the core VDU driver code and into a Service_ModeTranslation handler. This means you now only have one place in the kernel to look instead of several, and modules can override the behaviour by claiming/blocking the service call as appropriate.
- Moving handling of the built-in VIDC lists out of the core VDU driver code and into a Service_ModeExtension handler. This means programs can now inspect these VIDC lists by issuing the right service call (although you are essentially limited to lists which the GraphicsV driver is OK with)
- Moving *TV interlace & offset adjustment logic into the Service_ModeExtension handler, since they're legacy things which can be handled more cleanly for MDF/EDID (and the old code was poking memory the kernel didn't own)
- Adding a Service_EnumerateScreenModes implementation, so that if you end up in the desktop with ScreenModes non-functional, the display manager at least has something useful to show you
- Enhancing the handling of the built-in numbered modes so that they are now available in any colour depth; the Service_ModeExtension handler (and related handlers) treat the builtin VIDC lists as a set of mode timings, not a discrete set of modes
- Substitute mode selection logic is a complete re-write. Instead of trying a handful of numbered fallback modes, it now tries:
- Same mode but at higher colour depths
- Same mode but at lower colour depths
- Alternate resolutions (half-width mode with no double-pixel if original request was for double-pixel, and default resolution for monitor type)
- Combined with the logic to allow the builtin VIDC lists to be used at any colour depth, this means that the kernel should now be able to find substitute modes for machines which lack support for <=8bpp modes (e.g. OMAP5)
- Additionally the mode substitution code will attempt to retain as many properties of the originally requested mode as possible (eigen values, gap mode type, etc.)
Other improvements:
- The kernel now actually vets the builtin VIDC lists instead of assuming that they'll work (which also means they'll have the correct ExtraBytes value, where applicable)
- The kernel now uses GraphicsV 19 (VetMode2) to vet the mode during the mode switch process, using the result to detect where the framebuffer will be placed. This allows for GraphicsV drivers to switch between DA 2 and external framestores on a per-mode basis.
- The kernel now supports mode selectors which specify LineLength values which are larger than necessary; this will get translated to a suitable ExtraBytes control list item (+ combined with whatever padding the driver indicates is necessary via the VetMode2 result)
File changes:
- hdr/KernelWS - Reserve space for a VIDC list, since the Service_ModeExtension implementation typically can't use the built-in list as-is
- s/Arthur3 - Issue Service_ModeFileChanged when the configured monitor type is changed, so that DisplayManager + friends are aware that the set of available modes has changed
- s/GetAll - Fiddle with GETs a bit
- s/MemMap2 - Extra LTORG
- s/NewIRQs - Small routine to install/uninstall false VSync routine (previously from PushModeInfo, which wasn't really the appropriate place for it)
- s/Utility - Hook up the extra service call handlers
- s/vdu/legacymodes - New file containing the new service call implementations, and some related code
- s/vdu/vdudecl - Move mode workspace definition here, from vdumodes
- s/vdu/vdudriver - Remove assorted bits of mode substitution code. Plug in new bits for calling GraphicsV 19 during mode set, and deal with ExtraBytes/LineLength during PushModeInfo
- s/vdu/vdumodes - Move some workspace definitions to s/vdu/vdudecl. Tweak how the builtin VIDC lists are stored.
- s/vdu/vduswis - Rip out more mode substitution code. Issue Service_ModeFileChanged when monitor type is changed by OS_ScreenMode.
Admin:
Tested on Raspberry Pi 3, Iyonix, IGEPv5
Version 6.14. Tagged as 'Kernel-6_14'
Fix dodgy ranged ICache cleans when using ARMv7MP ARMops
Detail:
s/ARMops - If the ICacheInvalidate macro was told to pull a2, it would pull it before invoking ICache_InvalidateRange, causing the end address of the range to be lost. Avoid this by only pulling the registers after the ranged call.
Also optimise MMU_ChangingEntry to go straight to ICache_InvalidateRange instead of doing a redundant range size check.
Admin:
Tested on OMAP5
Potentially fixes lockup/long stall seen when using PhotoDesk, reported by Willi Theiss
Version 6.15. Tagged as 'Kernel-6_15'
Fix FindOKMode not recovering properly from unsupported VIDC lists
Detail:
s/vdu/vduswis - Fix 18 year old register corruption bug in FindOKMode which would prevent it from falling back to Service_ModeTranslation if Service_ModeExtension returned a VIDC list but the VIDC list was rejected by the GraphicsV driver
s/vdu/vdudriver - Also, change a couple of error cases in ModeChangeSub so that they use the "Screen mode not available" error instead of the incorrect "Not enough screen memory" error.
Admin:
Tested on Raspberry Pi 3
Fixes issue reported on forums where if AnyMode is loaded, numbered modes in unsupported colour depths weren't being replaced with substitutes (although note that there are still some AnyMode-related issues to resolve)
https://www.riscosopen.org/forum/forums/4/topics/12773
Version 6.16. Tagged as 'Kernel-6_16'
Service_ModeExtension tweak + docs update
Detail:
s/vdu/legacymodes - Make the Service_ModeExtension implementation automatically use ExtraBytes to request that the row length is a multiple of a word (since things fail with non-word aligned rows)
hdr/VIDCList - Un-deprecate SyncPol bits 2 & 3 and improve the comments to indicate the difference between SyncPol interlace and control list interlace
Admin:
Tested on BB-xM
Version 6.17. Tagged as 'Kernel-6_17'
Palette/gamma optimisations
Detail:
s/vdu/vdupalxx:
- Fix conditional code sequence in PV_BulkWrite which meant that the greyscale palette flag was being recalculated when the border or pointer colour was changed.
- Change PV_1stFlashState / PV_2ndFlashState to act as NOPs in true colour modes, which helps to avoid regular redundant gamma table updates (due to the flashing colour logic in the VSync handler).
Admin:
Tested on Raspberry Pi 3
Version 6.18. Tagged as 'Kernel-6_18'
Don't pointlessly doubly-map external framestores
Detail:
s/vdu/vdudriver - When mapping external framestores, only double-map them if the driver supports hardware scrolling. Avoids wasting IO address space, and reduces IO space fragmentation if the framestore address changes
Admin:
Tested on Raspberry Pi 3
Version 6.19. Tagged as 'Kernel-6_19'
Set BEN bit in SCTLR
Without this, some CPUs (including Cortex-A72) take the undefined instruction
trap when encountering any CP15-encoded barrier instructions.
Requires RiscOS/Sources/Programmer/HdrSrc!1
Version 6.20. Tagged as 'Kernel-6_20'
Move former ControlList_Interlaced item into SyncPol flags
ControlList_Interlaced is taken to have meant "output interlaced sync on H/V" and "configure DMA to show alternate lines in the framestore on alternate fields", therefore SyncPol flags mean:
b43
00 = 'normal' progressive scan
01 = interlaced sync, but both fields show the same image
10 = (invalid)
11 = interlaced sync, fields use alternate lines from the image
Version 6.21. Tagged as 'Kernel-6_21'
Support permanent mapping of IO above 4GB using supersections
This is facilitated by two extended calls. From the HAL:
* RISCOS_MapInIO64 allows the physical address to be specified as 64-bit
From the OS:
* OS_Memory 21 acts like OS_Memory 13, but takes a 64-bit physical address
There is no need to extend RISCOS_LogToPhys, instead we change its return
type to uint64_t. Any existing HALs will only read the a1 register, thereby
narrowing the result to 32 bits, which is fine because all existing HALs
only expected a 32-bit physical address space anyway.
Internally, RISCOS_MapInIO has been rewritten to detect and use supersections
for IO regions that end above 4GB. Areas that straddle the 4GB boundary should
also work, although if you then search for a sub-area that doesn't, it won't
find a match and will instead map it in again using vanilla sections - this is
enough of an edge case that I don't think we need to worry about it too much.
The rewrite also conveniently fixes a bug in the old code: if the area being
mapped in went all the way up to physical address 0xFFFFFFFF (inclusive) then
only the first megabyte of the area was actually mapped in due to a loop
termination issue.
Requires RiscOS/Sources/Programmer/HdrSrc!2
Support temporary mapping of IO above 4GB using supersections
Add a new reason code, OS_Memory 22, equivalent to OS_Memory 14, but
accepting a 64-bit physical address in r1/r2. Current ARM architectures can
only express 40-bit or 32-bit physical addresses in their page tables
(depending on whether they feature the LPAE extension or not) so unlike
OS_Memory 14, OS_Memory 22 can return an error if an invalid physical
address has been supplied. OS_Memory 15 should still be used to release a
temporary mapping, whether you claimed it using OS_Memory 14 or OS_Memory 22.
The logical memory map has had to change to accommodate supersection mapping
of the physical access window, which needs to be 16MB wide and aligned to a
16MB boundary. This results in there being 16MB less logical address space
available for dynamic areas on all platforms (sorry) and there is now a 1MB
hole spare in the system address range (above IO).
The internal function RISCOS_AccessPhysicalAddress has been changed to
accept a 64-bit physical address. This function has been a candidate for
adding to the kernel entry points from the HAL for a long time - enough that
it features in the original HAL documentation - but has not been so added
(at least not yet) so there are no API compatibility issues there.
Requires RiscOS/Sources/Programmer/HdrSrc!2
Support supersection-mapped memory in OS_Memory 24
To achieve this:
* DecodeL1Entry and DecodeL2Entry return 64-bit physical addresses in
r0 and r1, with additional return values shuffled up to r2 and r3
* DecodeL1Entry now returns the section size, so callers can distinguish
section- from supersection-mapped memory
* PhysAddrToPageNo now accepts a 64-bit address (though since the physical
RAM table is currently still all 32-bit, it will report any top-word-set
addresses as being not in RAM)
Version 6.22. Tagged as 'Kernel-6_22'
Fix a couple of RISCOS_MapInIO bugs
Detail:
- s/HAL - Fix ADD v. SUB muddle that could prevent addresses from being rounded down correctly. Fix incorrect logical address being returned to caller on pre-ARMv6 machines due to PageTableSync corrupting a1.
- s/NewReset - Initialising the CMOS RAM cache while in the middle of setting up the processor vectors feels a bit silly. Move the code to just afterwards so that it feels a bit safer, and so that early crashes are easier to debug (processor vectors in stable state)
Admin:
Tested on Iyonix.
Fixes ROM softload failure reported on forums:
https://www.riscosopen.org/forum/forums/11/topics/14749
Version 6.23. Tagged as 'Kernel-6_23'
Allow runtime adjustment of AplWorkMaxSize
Detail:
This adds a new OS_DynamicArea reason code, 26, for adjusting
AplWorkMaxSize at runtime. This allows compatibility tools such as
Aemulor to adjust the limit without resorting to patching the kernel.
Any adjustment made to the value will affect the upper limit of
application space, and the lower limit of dynamic area placement.
Attempting to adjust beyond the compile-time upper/default limit, or
such that it will interfere with existing dynamic areas / wimpslots,
will result in an error.
Relevant forum thread:
https://www.riscosopen.org/forum/forums/11/topics/14734
Admin:
Tested on BB-xM, desktop active & inactive
Version 6.24. Tagged as 'Kernel-6_24'
Remove duplicated documents
Between RISC OS 3.6 and 3.7 the directory was renamed from
Doc to Docs and was duplicated during CVS import.
Fix by deleting Doc. Identical files remain in Docs.
Version 6.24. Not tagged
Adjust exception error messages to show correct address.
Detail:
Add offset parameter to DumpyTheRegisters in R4
Shuffle internal register use up one
Set R4 to offset before calling.
Arbitrary offset of 0 for unreachable address exception handler.
Admin:
Tested in RPCEmu.
Adjust undefined instruction error message to show correct address on Thumb.
Version 6.25. Tagged as 'Kernel-6_25'
Fix heap testbed
Detail:
Kernel-5_44 tweaked the heap manager to try and avoid creating small
free blocks. Adjust HeapTest's block size checks so that it allows for
this behaviour.
Admin:
Tested briefly
Add support for HeapReason_GetSkewAligned
Detail:
Similar to HeapReason_GetAligned, GetSkewAligned is used for allocating
aligned blocks (with optional boundary limit). However instead of using
the logical address of the user portion of the block for the alignment
calculation, it uses an arbitrary offset specified in R5. This makes
it useful for clients such as the PCI module, which care about the
physical alignment of blocks rather than logical alignment.
Admin:
Tested with heaptest
Add cross-check support to heaptest
Version 6.26. Tagged as 'Kernel-6_26'
Add RISC OS Limited OS_ReadSysInfo 6 items
This makes SVLK and NVECTORS available.
Version 6.27. Tagged as 'Kernel-6_27'
Remove some obsolete definitions for clarity
* MinAplWork isn't used.
* SuperMode isn't used and is less well known than "SWI OS_EnterOS".
* MEMCADR is now only a magic value returned by OS_UpdateMEMC,
so it is clearer to include it literally with comment.
Added a comment to explain the baffling combination of
the MEMC1 control register's address with it's value.
Version 6.27. Not tagged
Allow reservation of memory pages
This change adds a new OS_Memory reason code, 23, for reserving memory
without actually assigning it to a dynamic area. Other dynamic areas can
still use the memory, but only the code that reserved it will be allowed
to claim exclusive use over it (i.e. PageFlags_Unavailable).
This is useful for systems such as the PCI heap, where physically
contiguous memory is required, but the memory isn't needed all of the
time. By reserving the pages, it allows other regular DAs to make use of
the memory when the PCI heap is small. But when the PCI heap needs to
grow, it guarantees that (if there's enough free memory in the system)
the previously reserved pages can be allocated to the PCI heap.
Notes:
* Reservations are handled on an honour system; there's no checking that
the program that reserved the memory is the one attempting to map it in.
* For regular NeedsSpecificPages DAs, reserved pages can only be used if
the special "RESV" R0 return value is used.
* For PMP DAs, reserved pages can only be made Unavailable if the entry
in the page block also specifies the Reserved page flag. The actual
state of the Reserved flag can't be modified via PMP DA ops, the flag is
only used to indicate the caller's permission/intent to make the page
Unavailable.
* If a PMP DA tries to make a Reserved page Unavailable without
specifying the Reserved flag, the kernel will try to swap it out for a
replacement page taken from the free pool (preserving the contents and
generating Service_PagesUnsafe / Service_PagesSafe, as if another DA
had claimed the page)
Version 6.28. Tagged as 'Kernel-6_28'
Add GENET to the list of HAL devices
Version 6.28. Not tagged
Add OS_DynamicArea 27+28, for supporting lots of RAM
OS_DynamicArea 27 is the same as OS_DynamicArea 5 ("return free
memory"), except the result is measured in pages instead of bytes,
allowing it to behave sensibly on machines with many gigabytes of RAM.
Similarly, OS_DynamicArea 28 is the same as OS_DynamicArea 7 (internal
DA enumeration call used by TaskManager), except the returned size
values are measured in pages instead of bytes. A flags word has also
been added to allow for more expansion in the future.
Hdr:OSMem now also contains some more definitions which external code
will find useful.
Version 6.29. Tagged as 'Kernel-6_29'
Permit special field in paths passed to OS_CLI
OS_CLI permits commands to be prefixed with a temporary filing
system, for example "ADFS:Format"
It also passes commands unrecognised to FileSwitch to be executed,
so "ADFS::HardDisc4.$.!Boot" first sets the temporary filing to
ADFS then executes ":HardDisc4.$.!Boot".
This does not work if the path contains a special field,
currently this results in an error as the special filed
would be lost.
Unfortunately many programs, including the RISC OS source
fail because of this.
Instead if a filing system prefix with special field
is found switch to the Temporary filing system and
treat the whole command as a path to execute. For example
passing "IXFS#W:$.HardDisc4.!Boot" sets the temporary filing
system to "IXFS" then executes "IXFS#W:$.HardDisc4.!Boot".
Version 6.30. Tagged as 'Kernel-6_30'
Fix OS_DynamicArea 21 handling of MaxCamEntry
OS_DynamicArea 21 was treating MaxCamEntry as if it was the exclusive
upper bound, when really it's the inclusive bound. The consequence of
this was that PMPs were unable to explicitly claim the highest-numbered
RAM page in the system.
Version 6.31. Tagged as 'Kernel-6_31'
Fix *Dump on (apparently) empty files.
Special case for empty files was crashing, fix by removing
which also supports files which report a size of zero but
actually contain data such as Unix device nodes and
Linux procfs.
Error where start outside file adjusted to permit a start
exactly at the end of a file to permit (apparently) empty
files with no output. Doing likewise for non-empty files
is consistent.
Also fix closing file in case of error reading GS format
from CMOS.
Version 6.32. Tagged as 'Kernel-6_32'
Use correct access permissions during ROM decompression
If HAL+OS are contiguous, the combined image is initially mapped as
OSAP_None in order to allow for decompression. Fix the discontiguous
case to use the same permissions
PMP LogOp_MapOut fixes
* Fix caching of page table entry flags (was never updating R9, so the
flags would be recalculated for every page)
* Fix use of flag in bottom bit of R6; if the flag was set, the
early-exit case for having made all the cacheable pages uncacheable will
never be hit, forcing it to loop through the full page list instead
Fix stack imbalance in DA release
In OS_DynamicArea 2, a stack imbalance would occur if an error is
encountered while releasing the physical pages of a PMP (R1-R8 pushed,
but only R1-R7 pulled). Fix it, but also don't bother storing R1, since
it's never modified.
Fixes for zero-size PMPs
OS_DynamicArea 21, 22 & 25 were using the value of the PMP page list
pointer (DANode_PMP) to determine whether the dynamic area is a PMP or
not. However, PMPs which have had their max physical size set to zero
will don't have the page list allocated, which will cause the test to
fail. Normally this won't matter (those calls can't do anything useful
when used on PMPs with zero max size), except for the edge case of where
the SWI has been given a zero-length page list as input. By checking the
value of DANode_PMP, this would result in the calls incorrectly
returning an error.
Fix this by having the code check the DA flags instead. Also, add a
check to OS_DynamicArea 23 (PMP resize), otherwise non-PMP DAs could end
up having page lists allocated for them.
OS_Byte 19 fixes
* Don't wait for VSync if we're in IRQ context, since (a) IRQ handlers
shouldn't take lots of time, and (b) it may hang the system. Fixes
https://www.riscosopen.org/tracker/tickets/424
* Extend the DPMSUtils-inherited "don't wait for VSync if HSync output
is off" fix to also deal with the case where VSync output is off, since
it's reasonable to assume that turning off VSync output could also
prevent the CPU from receiving the associated interrupts.
Be more forgiving of GraphicsV init failures
* Update OS_ScreenMode 11's handling of drivers which fail to
initialise. If there was no previous driver, then instead of trying to
restore that nonexistant driver, stick with the new one. This is mainly
to help with the case where the kernel's built in modes aren't accepted
by the driver, and valid modes only become available once an MDF is
loaded (this can happen with early OMAP3 chip revisions, which have very
tight sync & porch limits, causing 90% of the kernel's modes to be
rejected). If the kernel was to revert to the "no driver" state, then
loading the MDF would still leave you with no video output.
* Since we can now end up in a state where a driver is selected but
hasn't been programmed yet, update OS_Byte 19 to detect this (via the
magic ScreenBlankDPMSState value of 255) and avoid waiting for VSync
* Update RemovePages & InsertRemovePagesExit (screen DA handlers) to
avoid infinite loops if the screen DA gets shrunk to zero size (was seen
while attempting to complete the !Boot sequence while no driver was
active)
Version 6.33. Tagged as 'Kernel-6_33'
Assign a USB flag
The XHCIDriver module adds 64k to get the register address. In an attempt to phase this out (so the registers are the true base address), assign a flag so that loading a suitable XHCIDriver on an old HAL still works.
Version 6.33. Not tagged
Fix phantom DA PostGrow errors
Dynamic area PostGrow handlers aren't able to return errors, so the V
flag is likely undefined. Fix AreaGrow so that it ignores any V-set
condition returned by the call (especially since the CallPostGrow rapper
will have clobbered any error pointer).
Fixes issue reported on forums:
https://www.riscosopen.org/forum/forums/4/topics/14662
Version 6.34. Tagged as 'Kernel-6_34'
Record various numbers used in other strands of RISC OS and compatible systems
Detail:
* various low-numbered dynamic areas used by RISC OS 6 and Pyromaniac
* OS_ReadSysInfo 8 host platform classes for VirtualRPC, A9Home, Pyromaniac
* OS_Byte 0,<not 0> MosVer values for various systems since the BBC micro
* OS_Byte 129,0,255 (BASIC INKEY -256) values for various RISC OS systems
Admin:
Discovered that these weren't really recorded anywhere during recent
allocation request. Some information gleaned from http://beebwiki.mdfs.net
Version 6.34. Not tagged
Fix abort after translating error
Reporting invalid parameters to OS_Pointer and OS_ConvertDateAndTime could wander off to bad places due to corrupt LR and/or stack imbalance.
Add aligned RMA claim subreason
OS_Module
=> R0=24
R3=size in bytes
R4=alignment in bytes (must be a power of 2)
<= R2=base of request
or error
Tested with a handful of valid and invalid alignments, and with one grossly larger than the free RMA to trigger an RMA extend to occur.
Version 6.35. Tagged as 'Kernel-6_35'
Fix for bad error pointer *Dump'ing with a given start offset
Trying to dump a file larger than 2GB starting from an offset below 2GB would fail because the compare checking whether PTR#han > EXT#han accidentally set V which was taken as an error (but with R0 not really being an error block).
Add OS_Module 22
Very much like OS_Module 12, but returns the pointer to the PW rather than its contents (or NULL if the module died during init).
Special case extension of aligned RMA claims
During ModHandReason_ClaimAligned care is taken to start on a multiple of 32 and end on a multiple of 32 + 16 (such that the next block in the heap would be at +20 same as plain ModHandReason_Claim would do). However, during a ModHandReason_ExtendBlock there's a possibility that those criteria can't be retained, due to having to move to a larger gap elsewhere, leaving the end at an inconvenient +36.
Similar allocation functions in other OS' don't guarantee to return an extended block with the same alignment, so take the position that for extends we always allocate a fresh block, copy the contents, and free the original. Shrinks are left in place.
Tested with a random allocator which juggles 16 aligned allocations 50,000 times.
Version 6.36. Tagged as 'Kernel-6_36'
Add scroll mouse support
* Listen out for PointerV 9, which (RISC OS 5) mouse drivers use to
indicate scroll wheel updates + extra button status
* Changes in the state of the extra buttons are treated the same as
changes to normal mouse buttons: signalled via Event_Mouse, and stored
in the mouse buffer (for reading via OS_Mouse).
* Changes in the scroll wheel(s) are signalled via Event_Expansion,4. If
the event vector call is unclaimed, the kernel's wheel position
accumulators will be updated
* Wheel position accumulators can be read via OS_Pointer 2
* Wheel position accumulators implement "wrap to zero" logic on overflow
This matches RISCOS Ltd's implementation
(http://www.riscos.com/support/developers/riscos6/input/pointerdevices.html),
except that:
* The kernel currently doesn't call PointerV 4, so PointerV 9 is the
only way drivers can report wheel + extra button status
* Extra mouse buttons don't generate KeyV transitions
* Our implementation is in the kernel, not an OSPointer module
Version 6.37. Tagged as 'Kernel-6_37'
Resync with allocations database
Edits to the RISCOS header file should really have gone through the
allocations system. Fortunately, no harm was done in this case, but a
minor syntactical change is required in order to bring it in line with
the automatic redaction scripts used when exporting the header from the
allocations database.
Version 6.37. Not tagged
Mirror OS_AMBControl changes from Pyromaniac
* Create new header file defining symbolic name for OS_AMBControl
reason codes and flags
* Implement OS_AMBControl 9 (used to determine required size of buffer
passed to OS_AMBControl 8 - potential thread safety issue not addressed)
* Return allocated error numbers in various failure cases
Version 6.38. Tagged as 'Kernel-6_38'
Fix 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'
Fix wrong spinrw function name exports. Add new spinrw_write_to_read function.
Detail:
h/spinrw - Fix header file to use the correct names for the write try lock & sleep lock functions.
s/spinrw - Add new spinrw_write_to_read function, which atomically converts a held write lock to a read lock. This can be useful if you have a long routine which needs to update some state and then perform extra actions based on the new value - if the write occurs at the start of the routine, the write access can then be downgraded to read access, allowing interrupts + concurrent read access, while still making sure the data hasn't changed from what was written.
Admin:
Tested on OMAP3, OMAP4
Version 0.05. Tagged as 'SyncLib-0_05'
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
Updated BBE rules
Admin:
Mirror the change in srcbuild-0_54 manually.
Tagged as ShareFS-3_59-1
Add the standalone AOF
Detail:
Add a binary of the standalone version of the module with supporting code to manage registration with ResourceFS, so that a disc based module can be created.
Add the corresponding install rule to the BBE makefile.
Admin
Built using Disc environment & cc 5.78.
Add ellipsis after Free
As per bug 448, the "Free" menu item on each filer should have an ellipsis because it opens a persistent dialogue box.
Import of updated ShareFS binary
aof/ShareFS built with cc 5.80 in the All32 environment
aof/ShareFSSA built with cc 5.80 in the Disc environment
Version 3.60. Tagged as 'ShareFSBlob-3_60'
Strip out insecure T/TCP support
Detail:
RFC6247 moved T/TCP to historic status due to security concerns, this change actively removes the code (where previously we disabled it through sysctl).
tcp_subr.c: remove T/TCP support (per FreeBSD revision 137139).
tcp_input.c: remove T/TCP support (per FreeBSD revision 137139).
tcp_usrreq.c: remove T/TCP support (per FreeBSD revision 137139).
tcp_output.c: remove T/TCP support (per FreeBSD revision 137139).
Admin:
Requires TCPIPLibs-5_64.
Submission for TCP/IP bounty.
Version 5.64. Tagged as 'Internet-5_64'
Fix to SO_SNDTIMEO and SO_RCVTIMEO options being ignored
The TCPIPLibs library docs remind us that a socket can be modified via setsockopt() to have a non-default timeout for receive (SO_RCVTIMEO) and send (SO_SNDTIMEO) operations, however neither of these options were honoured if set. Instead, a default timeout of ~60s was given.
This is because although the Internet module stores and propagates (via sbwait()) the timeouts correctly, the underlying tsleep() function is non compliant: it makes no distinction between returning due to a timeout and returning due to being awoken by an event. See
https://www.freebsd.org/cgi/man.cgi?query=tsleep&sektion=9&manpath=FreeBSD+4.4-RELEASE
for details.
lib/unixenv.c: differentiate between timing out and being awoken, and return EWOULDBLOCK for timeouts.
Aside: select() worked because when tsleep() returned with 0 for a timeout this caused a retry attempt, and the retry loop happens to include its own timer compare, causing select() to return. Now that tsleep() returns EWOULDBLOCK in a timeout situation no retry occurs and the function returns directly.
Tested with a deliberately timing out receive operation, see TCPIPLibs/test/timeo.c
Tested on RISC OS and FreeBSD 11.1-RELEASE-p4 with both an unset timeout (~60s) and 10s timeout, both behave identically in terms of return value and setting errno appropriately.
Version 5.65. Tagged as 'Internet-5_65'
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.
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'
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'
Updated BBE rules
Admin:
Mirror the change in srcbuild-0_54 manually.
Tagged as Resolver-0_72-1.
Add the standalone AOF
Detail:
Add a binary of the standalone version of the module with supporting code to manage registration with ResourceFS, so that a disc based module can be created.
Add the corresponding install rule to the BBE makefile.
Admin
Built using Disc environment & cc 5.78.
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'
Remove mk.sh script (obsoleted by Env 1.38)
Fix to ranged cache sync when using offset assembly
Detail:
BASIC 1.75 switched to syncing the range { old P% - new P% } at the end of assembly instead of all memory. However, this didn't take into account offset assembly in the rare case where the offset assembled code was then run directory (the sources to FSLock-1_22 and earlier were susceptible).
Fix by storing both old P% and O% at the start of assembly and choose the appropriate range based on the OPT value.
ADR's to CASMTB3 extended to account for larger routine.
Admin:
Submission from Timothy Baldwin.
Version 1.76. Tagged as 'BASIC-1_76'
Assemble the later ARMv8 AArch32 opcodes
ARM have added SETPAN, ESB, TSB, CSDB, PSSBB, SSBB since the earlier ARM ARM that BASIC covered. Add these.
Raise the limit of 16 on the table that decodes 'pure' 3 character opcodes (+condition) in CASMTB2 since the offset into the jump table can be inferred from the offset into the opcode table (both are 1 word/entry), so removing the 4 bit limit. Move SMC/SMI/SVC into CASMTB2.
Help updated in CmdHelp.
Version 1.77. Tagged as 'BASIC-1_77'
WHILE/ACS bug fix
Minor fix to prevent an ACS token from being mistaken for another WHILE token, whilst in an existing WHILE construct.
Fixes ticket #465.
Version 1.78. Tagged as 'BASIC-1_78'
Fix multi-parameter messages
Incorrect stack offsets caused multi-parameter messages to use the wrong
parameter values, e.g. "HELP" reporting incorrect program size and free
memory values.
Version 1.79. Tagged as 'BASIC-1_79'
Fix double-word VUZP.32 & VZIP.32
There's no valid instruction encoding for these. Instead, assemblers are
expected to treat them as synonyms for VTRN.32 and use that encoding
instead. Fix BASIC to do this, and add a couple of examples to TestVFP.
Be careful with the VFPData file in standalone builds
Give the file a unique name in ResourceFS, so that we don't hide/replace
a version of the file that's being used by a different BASIC
version/configuration.
Support NEON zero-shift synonyms
The ARM ARM lists several NEON shift instructions which have
special-case synonyms for shifts of zero. Improve the assembler to
support them (instead of throwing a "bad shift" error):
* VQRSHRN x,y,#0 -> VQMOVN x,y
* VQRSHRUN x,y,#0 -> VQMOVUN x,y
* VRSHR x,y,#0 -> VMOV x,y
* VRSHRN x,y,#0 -> VMOVN x,y
* VSHR x,y,#0 -> VMOV x,y
* VSHRN x,y,#0 -> VMOVN x,y
Improve handling of "#0" in VFP/NEON assembler
Where an instruction/encoding only allows a zero value, matching against
the assembly line is performed by looking for an actual "#0" character
sequence. This means that, unlike other locations where literals are
parsed, it's impossible to use a variable, function, or any other kind
of expression to provide the value.
Change the assembler to detect when a "#0" sequence is being looked for,
and use the numeric expression parser instead. This will make it much
easier to use the zero-shift synonym instructions, since it's common for
programs to use expressions to specify/calculate shift amounts (which
may evaluate to zero in some circumstances)
Version 1.80. Tagged as 'BASIC-1_80'
Correct suspicious sizeof
Add the sizeof the ResourceFS terminator, rather than relying on sizeof(0) being 4.
Found by cppcheck static analysis.
Tagged as BootCmds-1_49-1 since binary unchanged.
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.
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 for potential NULL pointer dereference
Get the object_id after the check for menu_int being NULL, not before.
Found by cppcheck.
Version 0.23. Tagged as 'ColourMenu-0_23'
Skip check of buffer pointer
The buffer pointer has already been used several times, so can be freed without another check.
Found by cppcheck.
Version 0.21. Tagged as 'FileInfo-0_21'
Fix for potential NULL pointer dereference
Get the object_id after the check for menu_int being NULL, not before.
Found by cppcheck.
Version 0.26. Tagged as 'FontMenu-0_26'
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'
Fix for NULL pointer dereference with key press
If the window in question isn't a toolbox window, don't try any further processing.
Ref https://www.riscosopen.org/forum/forums/4/topics/12165
Version 1.80. Tagged as 'Window-1_80'
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.
Take out gamma enable
While investigations continue on the trunk, simply disable it for now.
Version 0.50, 1.50.2.1. Tagged as 'BCMVideo-0_50-1_50_2_1'
Add support for the GraphicsV overlay API and alpha-blended screen modes. Allow gamma table use to be disabled via adding 'disable_gamma' to cmdline.txt
Detail:
s/BCMVideo - Update workspace for the new features. On startup, check to see if 'disable_gamma' is included in the firmware-managed kernel command line (i.e. from cmdline.txt in the bootloader partition), and if so disable all use of the hardware gamma tables. Update mode vet & set to allow alpha-blending in 32bpp modes.
s/Dispmanx, s/HWPointer - Move the dispmanx-related routines out of s/HWPointer and into their own file, for re-use by the GraphicsV overlay code
s/GPUMode - Move the command line scanning code into s/BCMVideo so it's still available if the GPUMode build switch is disabled
s/GenCmd - Tweak how GenCmd_GetConfigInt returns values so that zero-value variables can be distinguished from errors. Check the framebuffer_ignore_alpha variable to determine if the GPU will pay attention to the FBSetAlphaMode property tag.
s/GraphicsV - Hook up the GraphicsV overlay entries. Fix determination of whether hardware pointer is fully supported to also check the screen height.
s/GVOverlay - Initial support for the GraphicsV hardware overlay API. It's best used in 32bpp alpha-blended screen modes, so that the overlays can be placed behind the desktop. Rotated/flipped overlays aren't supported yet.
Admin:
Tested on Raspberry Pi 1 & 3
Requires BCMSupport-0_08
disable_gamma should allow people who are frequently affected by https://www.riscosopen.org/forum/forums/11/topics/10346 to use their systems, pending a proper fix once the root cause has been determined.
Note that options in cmdline.txt should be space-separated, so to disable both GPU mode changes & gamma table use you'll want 'disable_gamma disable_mode_changes'.
Version 0.51. Tagged as 'BCMVideo-0_51'
Fix null pointer dereference
Detail:
s/GVOverlay - R11 is the correct register for the overlay struct, not R0.
Admin:
Tested on Raspberry Pi 3B
Fixes issue reported on forums:
https://www.riscosopen.org/forum/forums/3/topics/11504?page=1#posts-82292
Version 0.52. Tagged as 'BCMVideo-0_52'
Fix incorrect overlay pixel format selection, buffer mapping
Detail:
s/GVOverlay:
- Fix register mixup in GV_MapOverlayBuffer which would cause too little memory to be mapped in for YUV overlays.
- Fix OverlayCreateVetCommon using a wrong default mode flags value, causing 32K LTBGR to be erroneously detected as a valid format if the mode selector block didn't explicitly specify the mode flags.
- Add explicit failure check to CreateOverlayBuffer (for e.g. out of memory), previously failure was only being detected as a side-effect of the mailbox GetDispmanxMemhandle message failing
Admin:
Tested on Rasbperry Pi 3
Fixes a couple of issues raised in this thread:
https://www.riscosopen.org/forum/forums/3/topics/11504
Version 0.53. Tagged as 'BCMVideo-0_53'
Switch to using mailbox interface for gamma, and optimise mailbox and pointer updates
Detail:
s/BCMVideo - Instead of poking the gamma hardware directly, use the new SetGamma mailbox tag, via our MergeUpdate routine. Optimise MergeUpdate so that it only sends the necessary mailbox messages instead of sending all of them.
s/GraphicsV - Update GraphicsV_SetBlank handler to set the correct UpdateNeeded flag
s/HWPointer - Avoid sending pointer position updates via VCHIQ if there's nothing that needs changing (previously, position updates would have been sent on every frame that the pointer was visible)
Admin:
Tested on Raspberry Pi 3
Requires BCMSupport-0_09 for building
Likely to require firmware of 9th Jan or newer
Version 0.54. Tagged as 'BCMVideo-0_54'
Cope with EDispmanUpdateSubmit failing
Detail:
s/GVOverlay, s/HWPointer - If the GPU is overloaded with requests, the dispmanx submit operation may fail, causing some of the queued operations to fail. Fix BCMVideo to detect this so that our idea of the GPU's state doesn't go dangerously out of sync with reality.
Admin:
Tested on Raspberry Pi 3
Fixes phantom mouse pointers appearing when rapidly moving the mouse on & off screen
Version 0.55. Tagged as 'BCMVideo-0_55'
Reduce IO space fragmentation by mapping in all of the GPU's memory
Detail:
s/BCMVideo - On startup, map in all of the GPU's memory as bufferable + usermode accessible. This will avoid the kernel creating extra mappings when it maps in the framebuffer (now that Kernel-6_19 is no longer double-mapping it), and will avoid us creating extra mappings for any overlays.
Admin:
Tested on Raspberry Pi 3
Version 0.56. Tagged as 'BCMVideo-0_56'
Fix register muddle & incorrect comment
Detail:
s/BCMVideo - Fix register muddle that would have resulted in some of the ARM's memory being mapped in, instead of just reducing the amount of GPU memory mapped in.
Admin:
Tested on Raspberry Pi 3
Version 0.57. Tagged as 'BCMVideo-0_57'
Add Raspberry Pi 4 support
Detail:
* The same problem with BCMVideo having hard-coded knowledge of the physical
address map that bit us in version 0.30 came back to bite us again. In
retrospect, it would have been nice to have made it ask the HAL back then,
but it seems improbable that the addresses could change yet again?
Version 0.58. Tagged as 'BCMVideo-0_58'
Update to use SyncPol interlace flags
This driver: cannot do interlaced sync, can DMA two different interlaced fields.
Requires Kernel-6_21 or later.
Version 0.59. Tagged as 'BCMVideo-0_59'
Make compatible with latest firmware
A documentation error and bug in BCMVideo combined with an incompatible change
in the VCHIQ interface, resulting in blank video output.
* In GenCmd_GetConfigInt, in the non-error case, Z is clear (not set) if the
value read is nonzero. Many of the callers (correctly) only store the result
if NE was returned, i.e. Z clear.
* In the parse error case, where it constructs the return flags using an
MSR, it wasn't setting Z, so the callers were storing the corrupted r0
(actually a pointer to the query string) into the workspace in such cases.
* The firmware has changed how it reports unknown values. It now responds
"<name> is unknown" rather than "<name>=0", and this meant it was being
considered as a parsing error, hence triggering the dormant bug above.
* GenCmd_GetConfigInt has now gained special-case handling of " is unknown"
results, and treats them the same as "=0".
Tested on a Pi 4 with the latest firmware.
Version 0.60. Tagged as 'BCMVideo-0_60'
Fix for NULL pointer dereference rendering text areas
The state->column is only defined when there is text to flush, so after lexing pretty much any header item (eg. the version number "! 1") the check for having reached the terminating column results in a NULL pointer dereference.
Tested with *Render TestFiles/TextArea, and a default area header prefixed by !Draw.
Version 1.60. Tagged as 'DrawFile-1_60'
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'
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'
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.
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'