Disc Changes 5.28 to 5.30
Changes: Disc 5.28 to 5.30
Components changed
- RiscOS/Apps/!CreateSEC from initial to CreateSEC-1_06
- RiscOS/Apps/!Perl from Perl-0_04 to Perl-1_52-1-g7d73054a
- RiscOS/Apps/!Prepare from PlingPrepare-0_06 to PlingPrepare-0_07
- RiscOS/BuildSys from BuildSys-7_50-1-gca85c288 to BuildSys-7_99
- RiscOS/Env from Env-1_44 to Env-1_49
- RiscOS/Library from Library-2_04 to Library-2_09
- RiscOS/Sources/Apps/Alarm from Alarm-2_95 to Alarm-2_96
- RiscOS/Sources/Apps/ChangeFSI from ChangeFSI-1_63 to ChangeFSI-1_70
- RiscOS/Sources/Apps/Chars from Chars-2_05 to Chars-2_06
- RiscOS/Sources/Apps/Draw from Draw-1_41 to Draw-1_46
- RiscOS/Sources/Apps/Maestro from Maestro-2_13 to Maestro-2_20
- RiscOS/Sources/Apps/Paint from Paint-2_37 to Paint-2_54
- RiscOS/Sources/Apps/SciCalc from SciCalc-0_90 to SciCalc-0_91
- RiscOS/Sources/Apps/SparkFSBin from SparkFS-1_46 to SparkFSBin-1_51
- RiscOS/Sources/Desktop/Desktop from Desktop-2_77 to Desktop-2_77-1
- RiscOS/Sources/Desktop/DragAnObj from DragAnObj-0_09-2 to DragAnObj-0_10
- RiscOS/Sources/Desktop/FilerAct from FilerAct-0_62-3-g75233663 to FilerAct-0_64
- RiscOS/Sources/Desktop/Filter from Filter-0_29-1-gfc7abb71 to Filter-0_30
- RiscOS/Sources/Desktop/ShellCLI from ShellCLI-0_37 to ShellCLI-0_39
- RiscOS/Sources/Desktop/Switcher from Switcher-1_53 to Switcher-1_54
- RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_81 to TaskWindow-0_85
- RiscOS/Sources/Desktop/Wimp from Wimp-5_80 to Wimp-5_87-1
- RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_55 to ADFS-3_56-1
- RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_15 to ADFSFiler-1_16
- RiscOS/Sources/FileSys/FSLock from FSLock-1_25 to FSLock-1_26-1
- RiscOS/Sources/FileSys/FileCore from FileCore-3_75-1-g04030b45 to FileCore-3_78
- RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_87-1-gdc166065 to FileSwitch-2_92
- RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_14-1-g774c67f3 to DOSFS-1_15
- RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_32 to RAMFS-2_33
- RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_10-1-ge51e62d5 to SDFS-0_12
- RiscOS/Sources/HWSupport/FPASC from FPASC-4_37-1-g6a0dd699 to FPASC-4_39-1
- RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_42 to Sound1-1_43-1
- RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_33 to Sound2-1_34
- RiscOS/Sources/HWSupport/USB/USBDriver from USBDriver-1_31 to USBDriver-1_32-1
- RiscOS/Sources/Internat/Territory/TerritoryManager from Manager-0_57 to TerritoryManager-0_58
- RiscOS/Sources/Kernel from Kernel-6_43 to Kernel-6_70
- RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_19 to AsmUtils-0_21
- RiscOS/Sources/Lib/DebugLib from DebugLib-0_72 to DebugLib-0_73
- RiscOS/Sources/Lib/OSLib from OSLib-6_90-1 to OSLib-6_90-2
- RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-6_08 to RISC_OSLib-6_22-1-g4b14cbfe
- RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_69 to TCPIPLibs-5_78
- RiscOS/Sources/Lib/UnicodeLib from Unicode-0_63-1-gf47d7578 to Unicode-0_63-2-g1b8b080f
- RiscOS/Sources/Lib/mbedTLS from mbedTLS-2_20 to mbedTLS-2_33
- RiscOS/Sources/Lib/remotedb from remotedb-0_12 to remotedb-0_12-1-gc06162f1
- RiscOS/Sources/Lib/zlib from zlib-1_20-1-ga1e54231 to zlib-1_22
- RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_41 to Freeway-0_42
- RiscOS/Sources/Networking/AUN/Net from Net-6_26 to Net-6_27
- RiscOS/Sources/Networking/DHCP from DHCP-0_27 to DHCP-0_27-1
- RiscOS/Sources/Networking/Econet from Econet-5_80-1-g691d0361 to Econet-5_81
- RiscOS/Sources/Networking/Ethernet/EtherCPSW from EtherCPSW-0_05 to EtherCPSW-0_06-1
- RiscOS/Sources/Networking/Ethernet/EtherGENET from EtherGENET-0_02 to EtherGENET-0_04
- RiscOS/Sources/Networking/Ethernet/EtherK from EtherK-0_25 to EtherK-0_25-1
- RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_42 to EtherUSB-0_44
- RiscOS/Sources/Networking/Ethernet/EtherY from EtherY-0_64 to EtherY-0_64-1
- RiscOS/Sources/Networking/Fetchers/AcornSSL from AcornSSL-1_06 to AcornSSL-1_06-2-g0c417946
- RiscOS/Sources/Networking/Fetchers/HTTP from HTTP-1_04 to HTTP-1_09
- RiscOS/Sources/Networking/Fetchers/URL from URL-0_58-1-gda0a9f61 to URL-0_58-2-gfd089d34
- RiscOS/Sources/Networking/Modem/Dialler from Dialler-0_30 to Dialler-0_31
- RiscOS/Sources/Networking/Modem/PPP from PPP-1_46 to PPP-1_48
- RiscOS/Sources/Networking/NFS from NFS-3_27 to NFS-3_29
- RiscOS/Sources/Networking/NetTime from NetTime-0_44 to NetTime-0_45
- RiscOS/Sources/Networking/Omni/Apps/Omni from Omni-2_32 to Omni-2_34
- RiscOS/Sources/Networking/Omni/Protocols/OmniAccess from Access-0_17 to Access-0_17-1-g49be75ee
- RiscOS/Sources/Networking/Omni/Protocols/OmniLanManFS from OmniLanManFS-2_66 to OmniLanManFS-2_70
- RiscOS/Sources/Networking/Omni/Protocols/OmniNFS from OmniNFS-0_73 to OmniNFS-0_74
- RiscOS/Sources/Networking/URI from URI-0_27 to URI-0_27-1
- RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_18 to MakePSFont-1_19-1-gb762edd9
- RiscOS/Sources/Printing/Modules/PDModules from PDModules-4_64 to PDModules-4_65
- RiscOS/Sources/Printing/PDumpers from PDumpers-1_46 to PDumpers-1_46-1
- RiscOS/Sources/Printing/PrintDefs from PrintDefs-0_52 to PrintDefs-0_53
- RiscOS/Sources/Printing/PrinterManager from Manager-1_89-1-g58f5a005 to PrinterManager-1_91
- RiscOS/Sources/Programmer/Debugger from Debugger-2_07-1-g4ffc3ea2 to Debugger-2_08
- RiscOS/Sources/Programmer/FrontEnd from FrontEnd-1_34 to FrontEnd-1_35
- RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_91 to HdrSrc-3_05
- RiscOS/Sources/Programmer/HostFS from HostFS-0_02-4_2_2_1 to HostFS-0_04
- RiscOS/Sources/Programmer/RTSupport from RTSupport-0_17-1 to RTSupport-0_18
- RiscOS/Sources/Programmer/Squash from Squash-0_30 to Squash-0_31
- RiscOS/Sources/Programmer/ZLibMod from ZLibMod-0_04 to ZLibMod-0_05
- RiscOS/Sources/SystemRes/Configure from Configure-1_92 to Configure-1_93
- RiscOS/Sources/SystemRes/Configure2/Installer from Installer-0_17 to Installer-0_17-1-g972ad672
- RiscOS/Sources/SystemRes/Configure2/PlugIns/Config2PluginxxxxMerge from xxxxMerge-2_09 to Config2PluginxxxxMerge-2_10
- RiscOS/Sources/SystemRes/Configure2/PlugIns/FilrSetup from FilrSetup-0_28-1-gc155611c to FilrSetup-0_29
- RiscOS/Sources/SystemRes/Configure2/PlugIns/PinSetup from PinSetup-0_25-1-gdfcc9e52 to PinSetup-0_26
- RiscOS/Sources/SystemRes/Configure2/PlugIns/ScrnSetup from ScrnSetup-0_44-1-gc21b8e31 to ScrnSetup-0_45
- RiscOS/Sources/SystemRes/Configure2/PlugIns/ThemeSetup from ThemeSetup-0_05 to ThemeSetup-0_07
- RiscOS/Sources/SystemRes/Configure2/PlugIns/TimeSetup from TimeSetup-0_10 to TimeSetup-0_11
- RiscOS/Sources/SystemRes/DesktopBoot from DesktopBoot-1_30 to DesktopBoot-1_37
- RiscOS/Sources/SystemRes/InetRes from InetRes-5_78 to InetRes-6_07
- RiscOS/Sources/SystemRes/InetSetup from InetSetup-0_60 to InetSetup-0_63
- RiscOS/Sources/SystemRes/LoadWimp from LoadWimp-0_12 to LoadWimp-0_14
- RiscOS/Sources/SystemRes/System from System-1_01 to System-1_07
- RiscOS/Sources/SystemRes/ThemeDefs from ThemeDefs-0_11 to ThemeDefs-0_12
- RiscOS/Sources/SystemRes/Unicode from Unicode-0_35-1 to Unicode-0_35-1-1-g648c68f8
- RiscOS/Sources/SystemRes/UserGuide from UserGuide-0_02 to UserGuide-0_03
- RiscOS/Sources/Toolbox/ToolboxLib from ToolboxLib-1_18 to ToolboxLib-1_21
- RiscOS/Sources/Toolbox/tboxlib from Common-0_26-1 to tboxlib-0_29
- RiscOS/Sources/Utilities/HForm from HForm-2_76 to HForm-2_78
- RiscOS/Sources/Utilities/Patches/PatchesPatch from Patch-1_38 to PatchesPatch-1_39
- RiscOS/Sources/Video/Render/Colours from Colours-1_95 to Colours-1_97
- RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_84 to SprExtend-1_86-1-gf0ed23f7
- RiscOS/Sources/Video/Render/Super from Super-0_16 to Super-0_16-1-g5cb068cf
- RiscOS/Sources/Video/UserI/Picker from Picker-0_56-2-g2ddd12e7 to Picker-0_59
- RiscOS/Utilities/Autobuild/ABRelease from ABRelease-1_00 to ABRelease-1_12
Components added
- RiscOS/Sources/Apps/SparkFSApp version SparkFSApp-1_56
- RiscOS/Sources/Desktop/WimpMan version WimpMan-2_12
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkARJ version SparkARJ-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkCPIO version SparkCPIO-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkCab version SparkCab-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkLzh version SparkLzh-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkMcStuffit version SparkMcStuffit-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkPackdDir version SparkPackdDir-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkSpark version SparkSpark-1_51
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkTar version SparkTar-1_51-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkZip version SparkZip-1_51
- RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs/SparkZoo version SparkZoo-1_50-1
- RiscOS/Sources/FileSys/ImageFS/SparkFS/SparkFS version SparkFS-1_51
- RiscOS/Sources/FileSys/NVMeFS/NVMeFS version NVMeFS-0_03
- RiscOS/Sources/HWSupport/ATA/SATADriver version SATADriver-0_11-1-g6ca40933
- RiscOS/Sources/HWSupport/NVMe/NVMeDriver version NVMeDriver-0_03
- RiscOS/Sources/HWSupport/SD/SDIODriver version SDIODriver-0_20
- RiscOS/Sources/HWSupport/VFPSupport version VFPSupport-0_18
- RiscOS/Sources/Lib/ARLib version ARLib-0_04
- RiscOS/Sources/Lib/ImageLib version ImageLib-0_12
- RiscOS/Sources/Lib/SDIOLib version SDIOLib-0_03
- RiscOS/Sources/Lib/SMHCLib version SMHCLib-0_01
- RiscOS/Sources/Lib/SparkLib version SparkLib-1_01
- RiscOS/Sources/Lib/SyncLib version SyncLib-0_07
- RiscOS/Sources/Networking/Fetchers/Fetchers version Fetchers-0_08
- RiscOS/Sources/Toolbox/TabsGadget version TabsGadget-0_13-1
- RiscOS/Sources/Toolbox/TreeView version TreeView-0_25
- RiscOS/Sources/Utilities/Patches/ImageFSFix version ImageFSFix-0_07-1
- RiscOS/Sources/Video/Render/CompressPNG version CompressPNG-0_07-1
Components removed
Full Change Logs
Logs for RiscOS/Apps/!CreateSEC from initial to CreateSEC-1_06
!CreateSEC binary updated
From CreateSEC-1_06. Tagged as 'CreateSEC-1_06'
Logs for RiscOS/Apps/!Perl from Perl-0_04 to Perl-1_52-1-g7d73054a
!Perl binary updated
Admin: From Perl-1_52 built with cc 5.86 in the Disc environment. Tagged as 'Perl-1_52'
Correct reformatting of one Perl module
During the import to Git from CVS in 2019, some files (including the one affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents. This has no functional effect in this case, but it is still desirable to restore the formatting to its original style. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> Lib/ExtUtils/pm/MakeMaker,102 which will only update your working tree and the index.
Logs for RiscOS/Apps/!Prepare from PlingPrepare-0_06 to PlingPrepare-0_07
Accept SetPaths or SetPaths32 during transition
Before warning the tools are missing, check both old and new system variables. Ref: https://www.riscosopen.org/forum/forums/4/topics/16630 Version 0.07. Tagged as 'PlingPrepare-0_07'
Logs for RiscOS/BuildSys from BuildSys-7_50-1-gca85c288 to BuildSys-7_99
Add RMVersion
To CTools, for Installer, fixes build as for BuildSys-7_48. Version 7.51. Tagged as 'BuildSys-7_51'
Fix to module-wrapped LIBS SYMS
Exercising the new library/symbols selector on a more complex case (Help2) showed that the selection never triggered, because where it is placed ${RLIB} is unset. Move the test to after ModuleLibs/AppLibs are set, and invert the sense (it should have been ifneq). Version 7.52. Tagged as 'BuildSys-7_52'
Set component type of Help2
Help2-3_27 now uses the CApp shared makefile. Version 7.53. Tagged as 'BuildSys-7_53'
Change component type of Obey and ShellCLI
Detail: ModuleDB updated to make Obey and Shell as 'C' for ROM builds Version 7.54. Tagged as 'BuildSys-7_54'
Add CompressPNG to ModuleDB & Disc
Version 7.55. Tagged as 'BuildSys-7_55'
Rename INCLUDE_OSLIB to OSINC
Build !SDCreate from sources in CTools
Version 7.56. Tagged as 'BuildSys-7_56'
Add NetMonitor to the bonus binaries
Save 32k of ROM in IOMD
Requires Env-1_46
Build !CreateSEC from sources in CTools
Add Player to ModuleDB & BonusBin
Add CompressPNG to ROMs for header exports for Paint
For iMx6, remove DDEUtils to match the other ROMs (it's in the HardDisc4 image). Version 7.57. Tagged as 'BuildSys-7_57'
Add MBEDTLS definitions to GNU make versions of AppLibs and ModuleLibs, to match BuildSys-7_31
Split library include paths into separate included Makefile
This de-duplicates some of the information from AppLibs and ModuleLibs, which now include the new Makefile fragment in order to ensure compatibility. It also means that the definitions can be used for building other library components, which by definition do not perform a link step, without having to choose either AppLibs or ModuleLibs when most of either one is unused for a library build.
Allow components using CLibrary shared Makefile to specify additional exports
Occasionally, a library needs to export additional files that don't live in either an h or hdr directory and (when cross compiling) shouldn't have a .h suffix added to their exported version. A typical example would be where the licence conditions of the library require a licence header to be attached to all copies. To achieve this, CLibrary now uses EXPORTS in a similar manner to how AAsmModule does, simply as a dependency of export_hdrs, which can expand to any additional targets you need to define. By default, it overrides the internal targets EXPORTING_HDRS and EXPORTING_ASMHDRS (derived from HDRS and ASMHDRS supplied by the master makefile), but you can always include them in your definition of EXPORTS if desired.
Support application and module targets with differing compiler flags
Typically useful for libraries where you have both types of target, and you want the application build to contain function names (for meaningful backtraces) but the module build not to (to save ROM space). This is achieved as follows: * CAPPFLAGS and CMODFLAGS contain additional flags to be passed to application and module builds, respectively * C_FNAMES is initialised to a compiler-agnostic build switch to enable function names in the binary Therefore a master makefile will often use the line CAPPFLAGS = ${C_FNAMES} although CAPPFLAGS and CMODFLAGS are not limited to this usage.
Define cross-platform specifier for -ITCPIPLibs:
Use `${TCPIPINC}` instead. Although there is only a single directory on TCPIPLibs$Path, all ported BSD sockets code assumes their headers are already directly on the include path.
Define cross-platform specifier for -Itbox:
Use `${TBOXINC}` instead.
Define cross-platform specifiers for 7 additional library includes
TCPIPLibs export rpc_data(zm) is an object file not a library
Fix merging of CmdHelp/Messages files when cross-compiling
Define Tokenise tool for cross-compilation
There are at least 19 components that use this tool to autogenerate a source file. Needs initial capitalisation on case-sensitive filesystems.
Permit makefiles using CLibrary to cross-compile `export` target
This brings it into line with AAsmModule and CModule shared makefiles
Define SUFFIX_PERL
This allows Perl files with filetype 102 to be referenced identically whether native or cross-compiling (it expands to an empty string when used natively).
Document TOKHELPSRC and related inputs to AAsmModule makefile fragment
Add tokenised help file functionality to `CModule`
`TOKHELPSRC`, `HELPSRC` and `TOKENS` have the same meaning as in `AAsmModule`. Because `CModule`, unlike `AAsmModule`, can build a binary from multiple linked object files, it is also necessary to specify which object file(s) depend on the autogenerated source file. This is achieved with the new input variable `TOKHELPDEPENDS`. This defaults to `OBJS` which in turn defaults to `TARGET`, which should mean that any components converted from `AAsmModule` will not require any such line to be specified in their master makefile. Requires RiscOS/Sources/Programmer/Debugger!4
Define PARENT
This allows makefiles to refer to the parent directory in an OS-neutral way.
Compatibility fix for amu < 5.32
Earlier versions couldn't cope with RES_OBJ being set to an empty string.
Tweak definition of `${MAKE}` when cross-compiling
When executing the makefile from within the `objs` directory, this now includes an implicit `-C..` option. This makes it simpler to write agnostic makefiles. For example, ${MAKE} -f other${EXT}mk other_target rather than ifeq (,${MAKE_VERSION}) ${MAKE} -f other/mk other_target else ${MAKE} -f ../other.mk other_target endif
Add a few definitions required to cross-compile TerritoryManager
Correct capitalisation of AsmUtilszm library
Allow cross-compile C++FLAGS to be inherited from environment
Occasionally, it is useful to be able to set C++FLAGS from the calling environment, for example when building a 32-bit x86 target from a 64-bit x86-64 host. This works fine for CFLAGS and LDFLAGS, but C++FLAGS is not a valid Posix environment variable name. Import setting from CXXFLAGS instead when cross-compiling.
Pass `-tgcc` to `cmunge`
This tells it to use gcc for preprocessing the CMHG file (if enabled) and asasm for the backend (which means the object file is an ELF file, required in order to link with GCC objects).
Always implicitly include StdTools when cross-compiling
`AAsmModule`, `CApp`, `CLibrary` and `CModule` implicitly include various other shared makefile fragments to permit simpler master makefiles. However, when cross-compiling, they were only included when invoked from within the `objs` subdirectory, which in particular meant you couldn't rely on any of the definitions from `StdTools` when extending the `clean` rule unless you explicitly included it from the master makefile, thereby defeating the purpose of the implicit inclusion. Change them so that `StdTools` is included for all rules.
Define `export` rule for `CApp` shared makefile
With GNU `make` unlike with `amu`, it is considered an error to make a target for which no rule is defined. Therefore we need an explicit no-op `export` rule in the cross-compiling `CApp` makefile.
Support links for extension-less files in subdirectories
This only applies to cross-compilation builds. The `make links` rules don't know a pre-determined list of subdirectories that need to be converted into filename extensions. Instead, files that should have no filename extension are usually simply identified by the absence of a `/` in their specification in `SOURCES_TO_SYMLINK`. However, this is insufficient to handle some rarer cases, such as a `Makefile` within a `Test` subdirectory. To handle this, we introduce explicit support for specifying such files in `SOURCES_TO_SYMLINK`, using a double slash where there would otherwise be a filetype subdirectory name, such as `Test//Makefile`. (Conveniently, this is also valid Posix filename syntax anyway.) The way this is achieved is to tweak the regular expressions to require the directory and leafnames between slashes to be at least one character long. Version 7.58. Tagged as 'BuildSys-7_58'
Implement stripdepnd for cross-compilation use
Define SUFFIX_DATA
This allows RISC OS abstract data files with filetype ffd to be referenced identically whether native or cross-compiling (it expands to an empty string when used natively).
Fix typo
Missing `$` character before `{LOCALE}` would have caused UK resources to be selected instead of non-UK ones, if anyone were to be doing an internationalised cross-compiled build.
Add Squish to ModuleDB and BuildHost components file
Introduce new shared makefile fragments for BASIC components
The `BasicApp` fragment is analogous to the `CApp` fragment in that it supports both single-file executables and application directories. Rules are included for building any such application directories into ROMs, with files destined for `Resources:$.Resources` being exported to the Messages module during the `resources` phase, and those destinated for `Resources:$.Apps` being built into a position-independent module, so that when the module is killed or unplugged, those files disappear from ResourceFS. Because the module is position-independent, the makefile fragment implements the `install_rom` rule rather than the `rom_link` rule used by `CApp`. This is consistent with how `srcbuild` already installs ROM components listed in the ModuleDB as being of type `BAS`. The other main difference from `CApp` is that there is no compilation or linking step. Tokenisation, crunching and squishing of the (untokenised) source files are roughly analogous to the compilation steps, except that multiple source files are concatenated (if applicable) as the first step. There is also no debug build variant, and so no `debug` rule. Crunching is performed (on native builds) using the `BasCrunch` tool, so if you are converting an existing component which includes its own Command script to perform tokenisation and crunching, this will no longer be needed. Cross-"compilation" is fully suported. This uses the new `toffb` tool for tokenisation (apologies for the wheel-reinvention, but this was developed in ignorance about Steve Fryatt's `Tokenize` tool; `toffb` also does do a more faithful job of replicating BASIC's `CRUNCH` options, so is more useful for ensuring cross-compilation builds remain identical to the native builds). It also uses Matrix Brandy (V1.22.9 or later) to execute Squish (at least RiscOS/Tools/Sources/Squish!1). We pass the new `-nosavepath` option to Squish to ensure that the results are identical for cross-compile builds compared to native ones. However, Squish ignores unrecognised command-line options, so this does not introduce a dependency on a newer Squish tool for native builds. One subtle enhancement over previous makefiles is that we create dynamic dependencies between the crunched-and-squished program and its untokenised source files. Version 7.59. Tagged as 'BuildSys-7_59'
Change detail of `C_EXP_HDR` for CModule clients
This macro is used to define the root directory for exported C header files. Previously, when native-compiling, the default setting, if not otherwise overridden by the master makefile, was `<cexport$dir>.Interface.h`. This is at odds with the cross-compiling case, which defaults to the equivalent string, but without the `h` subdirectory, for obvious reasons. Only one component, DHCP, currently overrides `C_EXP_HDR`, although more will be joining it in the near future. The macro is used internally within rules defined by `CModule`, but a few components also use it within rules in their master makefiles. We hereby change the default value to omit the `h` subdirectory, and permit master makefiles to specify an override value which also omits it (in future it wil be deprecated to include it, and its use will be phased out). There are two reasons for this: 1) It assists with cross-compilation, since the override can then be expressed identically for both native and cross builds. 2) It permits the `.exphdr.h` suffix rule to be re-used when one or more headers need to be exported to a subdirectory of `C_EXP_HDR`, so long as the headers are present at an equivalent subdirectory in the component source tree, and that subdirectory is on `VPATH`. This is because `$<` is set up to include the element of `VPATH` that matched the rule - but this needs to go before the `.h`, not after it. To prepare for this MR, the following must all be merged: * RiscOS/Sources/FileSys/ADFS/ADFS4!2 * RiscOS/Sources/HWSupport/ATA/SATADriver!2 * RiscOS/Sources/HWSupport/SD/SDIODriver!5 * RiscOS/Sources/HWSupport/SPIDriver!1 * RiscOS/Sources/HWSupport/USB/USBDriver!9 Version 7.60. Tagged as 'BuildSys-7_60'
Add a couple of extra exports to Disc build
These make it possible to build softload versions of several extra modules. Requires Products/Disc!8 Version 7.61. Tagged as 'BuildSys-7_61'
Add WimpMan to ModuleDB and Disc and CTools build
Version 7.62. Tagged as 'BuildSys-7_62'
Allow clients of CLibrary to use LibIncludes variables
The comment in LibIncludes mentions libraries that depend on other libraries may find those path variables useful, but since CLibrary doesn't itself include ModuleLibs or AppLibs, they expand as empty. Add LibIncludes. Version 7.63. Tagged as 'BuildSys-7_63'
Simplify debug and CUSTOMSA use
AppLibs/ModuleLibs: DebugLib requires remotedb to link, and both are present, but remotedb requires InetLib and SockLib. Currently client makefiles must specify this, but can't do via DBG_LIBS because of the ordering, so end up having to mess around with LIBS in a conditional. Simplify this by providing the libraries in DEBUGLIBS. CModule: Add a new SA_TARGET_RULE variable so that when CUSTOMSA is in use it is still possible to invoke the standalone build without needing to know about the differences between GNU and native makefiles (one uses 'MyModule,ffa' the other 'rm.MyModule'). This will allow the 5 uses of CModule to be simplified in future, the 5 uses of AAsmModule for CUSTOMSA are just to stop a module being output.
Retire old OSINC alias
Use same names for CExport$Dir and Export$Dir as GNUmakefiles
The CEXPDIR and EXPDIR names are the wild so hang around as aliases until those components are visited. Purely for symmetry add the same to AAsmModule. Version 7.64. Tagged as 'BuildSys-7_64'
Add CDPlayer to the bonus binaries
Version 7.65. Tagged as 'BuildSys-7_65'
Add WebCache and SerialUtils to ModuleDB
Version 7.66. Tagged as 'BuildSys-7_66'
Support Machine=CortexA53
Version 7.67. Tagged as 'BuildSys-7_67'
Add two SDIO-related libraries
Added to Components files for all ROM builds that could, in theory, have WiFi drivers, and to Disc so that softloadable builds are possible. Version 7.68. Tagged as 'BuildSys-7_68'
Create shared makefile for building HALs
This de-duplicates a lot of HAL makefiles, and also allows us to introduce a cross-compilation variant for them all at once. APCS specifiers are deliberately omitted; this is in order to facilitate some HALs linking with libraries compiled to the usual APCS variant without resulting in link-time warnings. Version 7.69. Tagged as 'BuildSys-7_69'
Add SDIODriver header export to Disc build
This facilitates softloadable modules that interface to the SD subsystem (such as pretty much every Linux-derived WiFi driver module since they can't be linked into a ROM) and also permits GitLab CI to build soft-loadable versions of ROM WiFi drivers or SDFS. Version 7.70. Tagged as 'BuildSys-7_70'
Update ModuleDB with PineA64 modules
Add PineA64 components
Version 7.71. Tagged as 'BuildSys-7_71'
Add Tabs and TreeView gadgets to Disc build
Version 7.72. Tagged as 'BuildSys-7_72'
Add VFPSupport to header exports for Disc builds
This is required to resolve softload builds of any component that uses a VFP SWI, for example as part of a CI job. Version 7.73. Tagged as 'BuildSys-7_73'
Add missing components for Browse
Change ImageLib components to type EXP in Browse builds
Version 7.74. Tagged as 'BuildSys-7_74'
Add initial support for HAL & kernel library builds
Extend the CLibrary shared makefile to add support for building HAL and kernel versions of libraries, with 'h' and 'k' suffixes respectively. These are built with stack limit checking & frame pointers disabled, and with RISCOS_HAL and RISCOS_KERNEL defines enabled as appropriate. Note that currently there's nothing done to protect the SB register in HAL builds of libraries, or to deal with references to data sections.
Add RISCOS_ZM assembler variable
This is intended to act as a replacement for the zM variable, which is hard to search for. zM will be removed in 2024.
Add RISCOS_MODULE defines
These go hand-in-hand with the RISCOS_HAL and RISCOS_KERNEL defines, to allow code to identify when it's being built for inclusion in a module.
Attempt to document the different defines
There are a number of different defines/variables which the makefile fragments pass into the compiler/assembler when building code. Add a new document (Makefile.Docs.Defines) which attempts to document them and their intended use. Version 7.75. Tagged as 'BuildSys-7_75'
Movements to make Components files easier to compare
Detail: Move Portable export up in IOMD32 to match Tungsten/S3C2440/S3C6410. Move SCSIFS/PCI to equivalent place in the exports at the top of file. Remove some extra # in separator blocks for Titanium. Admin: Based on a submission from Timothy E Baldwin
Remove unneeded components
Detail: Remove NVRAM/PortManager from builds where unused. Remove MakePSFont/PDumperDM/DDT from ROM builds. For ROMs where some install a component and others only export it, settle on a common place to put the component in the list from a majority vote. Admin: Based on a submission from Timothy E Baldwin BCM2835/BonusBin/BuildEnv/Disc/IOMD32/OMAP3/4/5/PineA64/PlingSystem/Titanium Tungten/iMx6 builds checked. Unmaintained S3C2440/6410/BCM2835Pico not checked.
Add ImageLibJPEG to Disc
Without this ImageLib fails the export libs phase with an error, ideally ImageLib needs fixing so it isn't split in this fashion. No change to build output (the contents of HardDisc4). Version 7.76. Tagged as 'BuildSys-7_76'
rpcgen was migrated to Git
Remove SDCreate, add WinEdit
Detail: SDCreate is now provided in the respective nightly downloads. Offer WinEdit instead as a utility more pertinent to the DDE.
[560] Add DHCP to PlingSystem
Version 7.77. Tagged as 'BuildSys-7_77'
Add XOLIB variable to AppLibs & ModuleLibs
Detail: Also build it for those components which depend on InetRes Admin: Required by InetRes-5_97 and later. Version 7.78. Tagged as 'BuildSys-7_78'
Paint and Draw Disc components edits
Don't use TARGET= for getting the theme sprites, to avoid 2 things overriding it. Don't append !Paint or !Draw for the install path, the shared makefiles does this. Version 7.78. Not tagged
Add Clock to the bonus binaries
Version 7.79. Tagged as 'BuildSys-7_79'
Add Internet 5 variant of rpclib
Admin: Also keep GNUmakefiles in sync by adding ${XOLIB} variables. Version 7.80. Tagged as 'BuildSys-7_80'
Add HostApp makefile fragments
The HostApp fragment is designed to be used for building apps/tools for running on the build host. It's currently fairly basic (just a stripped-down and tweaked version of CApp), but it should be sufficient for most purposes. The main advantage of this over HostTools+CApp (as used previously) is that HostApp will make sure to use the host's version of the CLib stubs, avoiding any incompatibilities between the host and target CLib versions. RISC OS version has been tested with a Disc build (after modifying the relevant HostTools-using components), GNU version is untested. Version 7.81. Tagged as 'BuildSys-7_81'
Change default RAMASMDEFINES to mirror AAsmModule
The AAsmModule shared makefile fragment predefines two assembly variables by default when targeting a softload binary: `standalone` (set to {TRUE}) and `MergedMsgs` (set to the path to the merged `CmdHelp`/`Messages` file). It's reasonably common for components to migrate over time from AAsmModule to CModule; to assist with this process, change the default setting for `RAMASMDEFINES` to match. Once this is merged, the following components could have their Makefiles simplified: Debugger, MakePSFont, NVidia and VFPSupport. Version 7.82. Tagged as 'BuildSys-7_82'
Split out SparkFS into component parts
Version 7.83. Tagged as 'BuildSys-7_83'
Updates to library file defines
* Add symbolic names for ImageLib libraries.
Updates to library include path defines
* Define cross-platform name for ConfigLib header include path. * Undefine `${TCPIPINC}` when building with GCC (as with the standard C headers, the headers in TCPIPLibs conflict with those on the default include path when compiling with GCC. Our TCPIPLibs headers appear to be incompatible with GCC, so resolve the conflict by removing TCPIPLibs from the path).
Add missing phony targets
* Add `standalone` target for CApp makefile clients. This is analogous to `standalone` for CModule clients, and is implemented as an alias for the `all` target. This is useful because cppcheck CI jobs need a consistent way to ensure that all local autogenerated source and header files have been created, so that cppcheck can fully analyse the source code. * Enable install target for cross-compiling CLibrary components. `install` was missing from the list of targets that need to be re-run from within the `objs` subdirectory.
Regularise default SOURCES_TO_SYMLINK
* Add `hdr/*` to `CApp` - such components can use assembly, which might have need for assembly header files. Brings this in line with `CModule`. * Add `c++/*`, `hdr/*`, `VersionNum` and `VersionASM` to `CLibrary`. Brings this in line with `CApp` and `CModule`, means `SyncLib` doesn't need to explicitly add `hdr/*` and `NBLib` doesn't need to explicitly add `c++/*` or `VersionNum`. Strictly speaking, as a special case, `VersionNum` isn't required for `CLibrary` clients, since a copy is always available under `Export` renamed as `LibVersion`, but it's nice to be consistent. * Remove `Resources` from `AAsmModule` - it needs (and already has) special handling because it's a directory rather than a file.
Build SparkFSApp from sources
Version 7.84. Tagged as 'BuildSys-7_84'
Further library type changes
Detail: * Case correct FetchLib's object filename, and prevent applications linking against the module variant * Add SPARKLIB * For CTools - Remove unused Common and NBLib exports - Ensure inetlib/rpclib/unixlib/socklib install phases are run following the makefile changes in TCPIPLibs-5_75
Move SparkFS, reference 9 codec modules
Version 7.85. Tagged as 'BuildSys-7_85'
Fix cross-compile `install` rule for `AAsmModule`
This was accidentally stripping the `,ffa` from the filename at the final copy step.
Enable `CmdHelp` merging rule when `CUSTOMRES=no` and cross-compiling
In the cross-compiling case, a rule is defined targeting `MERGEDMSGS`, which the phony target `resources_cmdhelp` depends on, but the definition is conditional on `CUSTOMRES` not being `custom` or `no`. In a use-case which is believed to be unique to LanManFS, it is required that the resource files not be registered to ResourceFS via the Messages module, but by LanManFS itself, both for RAM and ROM builds, but the merging of `CmdHelp` and `Messages` files is still required. To leverage the `Messages` merging code in `CModule`, re-enable the `MERGEDMSGS` rule when `CUSTOMRES=no` (which is arguably the correct setting for LanManFS) but leave it disabled for `CUSTOMRES=custom` to permit full customisation if required.
Build 6x SparkFS codecs from sources
Version 7.86. Tagged as 'BuildSys-7_86'
Build 2x SparkFS codecs from sources
Version 7.87. Tagged as 'BuildSys-7_87'
Add RealTime to the bonus binaries
Version 7.88. Tagged as 'BuildSys-7_88'
Install CompressPNG as PCompMod
Detail: In order to fit within a 10 letter FileCore limit pre RISC OS 4, shorten the on disc module name following the lead of CompressJPEG (JCompMod). Version 7.89. Tagged as 'BuildSys-7_89'
Add symbolic names for additional compiler warnings
Norcroft's `-We` option suppresses warnings about casts between function pointers and non-function objects. Norcroft's `-Wn` option suppresses warnings about implicit narrowing casts. GCC doesn't have equivalents to these warnings, so they expand to an empty string if that's the selected compiler.
Define SUFFIX_TEMPLATE
This allows RISC OS Wimp template files with filetype fec to be referenced identically whether native or cross-compiling (it expands to an empty string when used natively).
Report errors encountered during version number insertion
The use of ';' between subcommands threw away the status of earlier ones. Replace with '&&'.
Add IZipFS, PPADriverJ, build SparkLzh
CTools: add BootCommands to the developer !System, since its SysMerge script checks for its presence for the X command. Disc: activate SparkLzh to build the Lzh codec from sources. Version 7.90. Tagged as 'BuildSys-7_90'
Change how top-level phony rules are overridden
A common pattern previously in use was for a shared makefile to define a top-level phony rule (the sort of thing that srcbuild or a !Mk file would use as the target to pass to amu) but with a macro expansion within the rule name. This allowed clients to override the rule by assigning any value to the macro. However, this approach makes it relatively difficult for clients to be adapted to support cross-compilation. This is because when cross-compiling, the shared makefiles utilise nested invocations of the make tool in order to facilitate an out-of-tree build directory layout. Therefore, clients need to determine whether they are cross-compiling, and if so, whether they are in the context of the inner or outer make invocation, before they can decide whether or not to redefine the phony target. This can be achieved in as little as 3 extra lines: CURDIR ?= objs ifeq (objs,$(notdir ${CURDIR})) # redefinitions of top-level phony rules placed here endif but this wasn't universally popular. Instead, taking inspiration from INSTTYPE, we can chain from each ${PHONY} rule to a ${PHONY}_custom rule and have the client makefile define the ${PHONY}_custom rule instead. Crucially, in the cross-compiling case, the shared makefile can then take care of ensuring this only happens on the inner make invocation. In summary: When setting `CUSTOMEXP` to `custom`, clients should henceforth * define `export_hdrs_custom` and `export_libs_custom` rather than redefine `export` * define `export_hdrs_custom` rather than redefine `export_hdrs` * define `export_libs_custom` rather than redefine `export_libs` When setting `CUSTOMROM` to `custom`, clients should henceforth * define `install_rom_custom` rather than redefine `install_rom` * define `rom_custom` rather than redefine `rom` * define `rom_link_custom` rather than redefine `rom_link` When setting `CUSTOMSA` to `custom`, clients should henceforth * define `install_custom` rather than redefine `install` * define `standalone_custom` rather than redefine `standalone` `CUSTOMDBG` and `CUSTOMGPA` are now removed. These were not being used by any client makefiles, but it seems probable that the rules they related to (`debug` and `gpa_debug` respectively) would have needed overriding in precisely the same circumstances as `install` and `standalone`, so in future `CUSTOMSA` should be used for these also. Version 7.91. Tagged as 'BuildSys-7_91'
Fix 'install_rom' rule for 'HAL'
Detail: Since srcbuild treats HAL type components as "not C" during the install ROM phase, yet the HAL fragment inherits most of its rules from CModule, there's no install_rom rule to override (as there is with AAsmModule, for example) so no need to suffix it with ${CUSTOM_ROM}. This was preventing the link and copy step for clients of the HAL fragment. Version 7.91. Not tagged
Assorted ModuleDB changes
Detail: * MakeInstrument and MakeInstrumentApp added * Relocate MIDIPlayer * Split ARLib to produce two targets * Add entry for 310Support Version 7.92. Tagged as 'BuildSys-7_92'
Add MakeIns to bonus binaries and 310Support to PlingSystem
Detail: Adds !MakeIns MIDI app from ESP. Build 310Support from recently discovered sources. Version 7.93. Tagged as 'BuildSys-7_93'
Fix ModuleDB path for PPADriverJ
Path for PPADriverJ had an extra "RiscOS" prefix meaning builds adding it to their Components file would fail. Version 7.93. Not tagged
Build 1x SparkFS codec from sources
Version 7.94. Tagged as 'BuildSys-7_94'
Add ARLib to Disc and BonusBin
Also add application library variables by which they may be referred. Version 7.95. Tagged as 'BuildSys-7_95'
Add ARWork, ARPlayer, and AREncode to BonusBin
Version 7.96. Tagged as 'BuildSys-7_96'
Add NVMeFS/Filer/Driver to ModuleDB
Also add NVMeFS header to Disc build for swis.h (required by HForm). Version 7.97. Tagged as 'BuildSys-7_97'
Add NVMeDriver header exports to the Disc build
Also remove KeyWatch (not required by Disc or BuildEnv for swis.h generation). Version 7.98. Tagged as 'BuildSys-7_98'
Line up PineA64 components with the other platforms
Version 7.99. Tagged as 'BuildSys-7_99'
Logs for RiscOS/Env from Env-1_44 to Env-1_49
Backfill missing cross-compilation Env files
Change format of APCS specifier to asasm
It appears that recent versions have moved to a more standardised syntax, matching other tools.
Define AMUMACHINE when cross-compiling
This environment variable is required by srcbuild.
Define HDR_PATH
This variable allows cross-compiling asasm to parse file specs with a `Hdr:` prefix. This facility should be mirrored in cross-compiling objasm soon. Version 1.45. Tagged as 'Env-1_45'
Save 32k of ROM in IOMD
Requires HdrSrc-2_94 Version 1.46. Tagged as 'Env-1_46'
Improvements to `!Common.sh` script (for cross-compiling)
* `make` is changed from an alias to a function. This allows many CI scripts to be simplified, since they will no longer require `shopt expand_aliases`. It also allows us to be `source`d from within a subshell, when alias definitions have no effect, which is useful in certain special cases. * `mk` function now uses `trap` to clean up whatever the manner in which it is exited. It also runs in `-e` mode (and uses an OR operator to avoid `grep` failures being considered fatal) so that `mk` behaves the same, whether the calling shell was in `-e` mode or not. (This is useful because CI scripts are run in `-e` mode by default.) * `mk` now builds the `make` arguments using an array, to avoid any issues with special characters in any of the strings used. * Now passes ShellCheck tests. * Set correct tool options for cross-compiling Raspberry Pi ROMs (reflects addition of `Machine=RPi` from Library-1_76). Version 1.47. Tagged as 'Env-1_47'
Add PineA64 envfile
Version 1.48. Tagged as 'Env-1_48'
Set Build$HostLibs
Required by the HostApp makefile fragment, to allow it to find the host versions of CLib/C++Lib that were installed by InstallTools
Update SharedUnixLibrary RMEnsure to 1.14
GCC 4.7.4r3 ships with 1.14, but it only appears to RMEnsure 1.12. Bump our RMEnsure up to 1.14 just in case it really does need the newer version.
Clean up !Common,feb a bit
Delete a few commented out lines that appear to relate to pre-2008 versions of the file. Version 1.49. Tagged as 'Env-1_49'
Logs for RiscOS/Library from Library-2_04 to Library-2_09
Rename variable
Use SetPaths$Dir, but during a transition period still allow SetPaths32$Dir from older issue DDEs. Version 2.05. Tagged as 'Library-2_05'
Tidy docs
Detail: Remove old copies of amu/cc/cmhg/resgen docs, see Documents.DDE.ChangeLogs for the maintained copies. xpand is now a component in its own right, point the docs there.
Resqueeze stripdepnd/chmod
Admin: Using squeeze 5.13, so RISC OS 6 doesn't refuse to expand them with AIF checking enabled.
Updated srcbuild binary
Admin: srcbuild-0_58 built with cc 5.86. Version 2.06. Tagged as 'Library-2_06'
Support Machine=CortexA53
Version 2.07. Tagged as 'Library-2_07'
Install host versions of CLib & C++Lib
Update InstallTools to install the host versions of CLib & C++Lib (headers & libraries) in Library.Acorn.HostLibs. This will provide the HostTools makefile (& friends) access to them, shielding them against any incompatibilities between (e.g.) the host CLib stubs and the target CLib stubs. Version 2.08. Tagged as 'Library-2_08'
Correct corruption of one tokenised BASIC file
During the import to Git from CVS in 2019, some files (including the one affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents (if you interpret it as ASCII text). In a tokenised BASIC file like this one, this is a syntax error. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> Build/Make8Bit,ffb which will only update your working tree and the index. Version 2.08. Not tagged
Updated romlinker binary
Admin: romlinker-0_07 built with cc 5.91. Version 2.09. Tagged as 'Library-2_09'
Logs for RiscOS/Sources/Apps/Alarm from Alarm-2_95 to Alarm-2_96
Modernise build structure
Detail: * Rewrite `Makefile` to use shared makefile fragments * Uses `modgen` to create the !Alarm module, which obsoletes some source files * Rename a couple of resource files to match their names when installed * All the files in `Resources:$.Apps.!Alarm` are now registered by the !Alarm module, so you can kill or unplug the module to hide it * The `Code` blob used to be installed in ResourceFS both by the Messages module and by the !Alarm module - now de-duplicated (only in Messages) * Consolidate `.gitignore` files * Enable GitLab CI Admin: Requires BuildSys-7_59 Version 2.96. Tagged as 'Alarm-2_96'
Logs for RiscOS/Sources/Apps/ChangeFSI from ChangeFSI-1_63 to ChangeFSI-1_70
Add PNG output option
Detail: The front end adds a new 'PNG output' menu, taking its cues from the Sprite output menu, minus those options that don't make sense for Portable Network Graphics. Internally, the image is processed as though a sprite (this is needed because the output window is rendered by the OS and the OS has no built in PNG support) then converted to PNG on the fly during saving. The choices file is extended to save/recall the output window settings as appropriate. Admin: Submission for PNG bounty.
Remove 2D templates, minor 16bpp improvements
Detail: * Remove support for pre 'NewLook' 2D templates * Correct interactive help messages for square/rectangular sprite output (broken in ChangeFSI-1_63) * Distinguish between 4k/32k/64k modes when the output mode is the current mode Version 1.64. Tagged as 'ChangeFSI-1_64'
Fix for error with PNG write at 8bpp or lower
Detail: Outputting a PNG via the desktop frontend at 8bpp or lower would report an 'Undimensioned array' error because the colourindex arrays were missing. Temporarily create these during the save operation. Version 1.65. Tagged as 'ChangeFSI-1_65'
Raise the image line/area limits to 8k
Increase the max next slot to process lines to > 8k. Increase the max work area for internal images to allow 8k x 8k. Given a choice of creating a large dynamic area or using the app slot, prefer the latter. Fix bug reusing a stale area address when trying to process an image > max work area: 1. ChangeFSI switches to buffer via file mode 2. On completion of processing the buffer is freed, but the area address returned anyway 3. Desktop front end tries to read the sprite name from the (now absent) area, leading to an abort in ReturnName in the kernel's sprite handler this would complete correctly if done via the command line. Tested with a 7200x5400 PNG. Now loads correctly on a large memory machine, and reports "Can't get enough memory to process image" on a 64MB Risc PC. Fixes https://www.riscosopen.org/forum/forums/1/topics/3977?page=5#posts-125179 Version 1.66. Tagged as 'ChangeFSI-1_66'
[567] Don't quit if CompressPNG/CompressJPEG missing
The *ERROR in the *RMEnsure has an untrappable error code of 0. Use XOS_CLI instead. Rationalise the 3 ways of reporting a line number on "(code XYZ)". Version 1.67. Tagged as 'ChangeFSI-1_67'
[570] Fix for skipping unknown ILBM chunks
Chunks which are odd length have a byte of padding (to halfword align), but ChangeFSI wasn't taking this into account when skipping unknown chunks. In the example cited ('MAINBAR') it was &11F long. Version 1.68. Tagged as 'ChangeFSI-1_68'
Fix version check in the frontend
Version 1.69. Tagged as 'ChangeFSI-1_69'
[563] Shorten name of CompressPNG module on disc
Version 1.70. Tagged as 'ChangeFSI-1_70'
Logs for RiscOS/Sources/Apps/Chars from Chars-2_05 to Chars-2_06
Fix crash on systems without Unicode font support
Version 2.06. Tagged as 'Chars-2_06'
Logs for RiscOS/Sources/Apps/Draw from Draw-1_41 to Draw-1_46
Fix for multiple column text area scaling
Detail: With the D option for more than 1 column, text areas need the handler for scaling, which was removed in Draw-1_39. Put it back. Admin: From an investigation by David Pitt. Ref https://www.riscosopen.org/forum/forums/4/topics/16556 Version 1.42. Tagged as 'Draw-1_42'
Intermediate Makefile install phase
Detail: In order to unblock some other changes in BuildSys adapt the Makefile to key off INSTTYPE for theme install, and for INSTDIR to be the dir in which !Draw is installed.
Retire unmaintained DXF support
Recognising that very few DXF files load faithfully (without error, and where the image is correct) remove the importer from the core application - this code could be further developed as an external helper along with other vector formats such as PostScript and SVG. As support for ctl was dropped a long time ago also remove debug !Draw.Control. Following !Paint's example, the disc copy of the application includes a minimal set of !Sprites and !Sprites22 taken from the Morris4 theme. Version 1.43. Tagged as 'Draw-1_43'
Fix debug build and add Reporter support
Detail: This also makes !Make and !Debug work again. There is a new !Debug option; "*Set Trace$To r" will output to Reporter.
Paste from menu inserts where pointer was when main menu opened
Detail: Ctrl-V still pastes wherever pointer is, even if outside window. Admin: Reported on forum, https://www.riscosopen.org/forum/forums/4/topics/16632 Version 1.44. Tagged as 'Draw-1_44'
Use constants from HdrSrc to define draw_tagtyp
To define the enum values for draw_tagtyp, use the constants defined in Global/DrawObj.h
Save y-spacing, subdivision for rect. grid, and colour too
Detail: Write out a new object type so that all the grid options are retained. Doc/Grid - describe new object type DrawCheck.c - copy existing draw_OPTIONS entries DrawFileIO.c - functions to read and write new object type. If not present, will fall back to using a square grid. Admin: Ticket #295 Version 1.45. Tagged as 'Draw-1_45'
Correct mangling of test programs
Four of the test programs were always BASICTxt (i.e. ASCII) files, but assigned filetype FFB (which is intended only for tokenised BASIC). Whenever these files have had licence headers inserted (both prior to initial release under the Castle shared source licence, and again when they were relicensed to Apache) the headers were inserted as though they were tokenised BASIC, resulting in an unusable file. Correct this by changing the filetype to FD1 and replacing the licence header with an ASCII version. This also requires a minor update to .gitattributes to inform GitLab that they are still BASIC files. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> .gitattributes git checkout <this commit> Test/FontTest3,fd1 git checkout <this commit> Test/TestPDriv+,fd1 git checkout <this commit> Test/fonttest,fd1 git checkout <this commit> Test/fonttest2,fd1 git rm Test/FontTest3,ffb git rm Test/TestPDriv+,ffb git rm Test/fonttest,ffb git rm Test/fonttest2,ffb which will only update your working tree and the index. Version 1.45. Not tagged
[577] Fix for autoscroll of tools pane
In the template 'pane' minimise the work area so it can't autoscroll.
[582] Fix for abort when parsing font size near end of slot
When text is loaded into a diagram, and that text happens to be near the end of the Wimp slot, and there's no intervening 0 byte (Draw text areas use \n as terminators), then when getting the font size the call to strtod() could abort in a hidden library call to strlen() when it scans forwards looking for a terminator. Much of the time you'd get away with it if the previous use of that page happened to contain a 0 byte. Play it safe and copy the text to convert to a buffer before using the C library functions. The conversion buffer is set to be larger than the longest possible value, rather than clipping the text exactly, so that LONG_MAX and HUGE_VAL can be returned in the error case. Version 1.46. Tagged as 'Draw-1_46'
Logs for RiscOS/Sources/Apps/Maestro from Maestro-2_13 to Maestro-2_20
Improvements to tie handling
-Ties can be now be over or under the note. -Only notes in the current or next bar are checked for being tied to. -The tie sprite is scaled to match the gap between notes. -Ties can no longer be attached to rests. -Deleting the second note also deletes the tie. Version 2.14. Tagged as 'Maestro-2_14'
Add Chords
Detail: Maestro doesn't have any concept of chords, so notes in the same x column are just overlaid on one another. In the case of notes with barbs (quavers, etc) this can result in messy or unintelligible layouts. 'Staggered' notes (where note heads are in too close proximity and need to be nudged) are just shifted right, with no proper algorithm to determine which note heads need to be moved or where they should go. To address this - Expand Note blocks to 1 word to make space to hold more data - Calculate Chord and Stagger data for Notes within Gates - Update typesetting routines to space and redraw chords accurately Admin: Tested with a variety of Maestro files Version 2.15. Tagged as 'Maestro-2_15'
Memory Changes
Detail: Each Maestro file is held in memory as nine blocks of bytes: one for 'Gate' data, and eight for Note information for each audio channel. Maestro reserved a very big WimpSlot of 720K, and merely divided the space between the end of the program and the end of the Wimpslot by 9 to get equally spaced pointers for each byte block. This was very wasteful (Maestro files are typically only 1-2K in size), and there's no checking to prevent writes from running off the end of the Wimpslot. These changes - Add new memory management routines - Place all program data in resizable heap blocks - Remove EnsureRMA check Admin: Tested on a variety of Maestro files. There's still plenty of inefficiency in the way Maestro handles its data but typically, even with Sprites11 loaded, the Wimpslot goes down to 380K. Version 2.16. Tagged as 'Maestro-2_16'
Bug fixes
A number of fixes following testing of recent changes: - PROCinsert_gate: Ensure pointers to music data are preserved when the Gate heap block is resized, to prevent possible corruption - PROCmove_note: Call to PROCSetupBarStarts is superfluous here, since it's called later on - PROCplay_notes: Fix calculation of tie lengths - PROCdraw_notes: Ensure dots are positioned correctly after staggered notes - A number of Maestro files tested have key signatures of 1/x. It's not clear how these were created (the interface has never allowed it) but since such signatures are technically legal, add sprites to display them correctly when encountered. Also extend the interface to allow them to be entered into scores. These bar lengths seem to cause the scrolling to become a little jerky but otherwise appear to work fine. Version 2.17. Tagged as 'Maestro-2_17'
Add beaming
Dynamically beam barbed notes (quavers, etc). Beams are added to score on loading a file, and updated as notes are edited. Only notes of the same orientation are beamed and notes in the same chord must be placed in the same column on the score. Version 2.18. Tagged as 'Maestro-2_18'
Consolidate Gate data
- Expand Gate blocks to 8 bytes, and store x positions and widths in the main Gate bytestream - Remove PTYPE%(), PX%() and PW%() arrays from code - Remove check for max gates in file - files now limited only by available memory - Rewrite typesetting, printing and loading/saving routines to use the new Gate blocks - Update Notes documentation Version 2.19. Tagged as 'Maestro-2_19'
Fix for null pointer dereference finding a bar
The array GPn%() demarks completed bars so if at the end of the search be careful not to try to find the gate_xpos of an unassigned array entry. Due to BASIC not using lazy evaluation this must be tested for explicitly rather than just swapping the tests around. Ref: https://www.riscosopen.org/forum/forums/4/topics/18712
Fix for rubout issue on incomplete bars
The quick exit test on end% was using the xpos of the gate start, which would be the start of the bar to the left, when it should be using the rightmost note drawn (of the not-yet-complete bar). This meant if you placed a few notes they could be rubbed away with another window until the bar line was added. Ref: https://www.riscosopen.org/forum/forums/4/topics/18698 Version 2.20. Tagged as 'Maestro-2_20'
Logs for RiscOS/Sources/Apps/Paint from Paint-2_37 to Paint-2_54
Don't release the clipboard when caret claims go past
Detail: Look at the Message_ClaimEntity flags and only release the clipboard if it's a clipboard claim, not if the caret flags are set. Version 2.38. Tagged as 'Paint-2_38'
Add PNG and JPEG output options
Detail: Alongside the familiar Sprite save box, there are now options to convert to PNG or JPEG too. Both exporters offer (simplified) sub options to determine the compression level. Export is disabled in the event that the supporting modules CompressJPEG or CompressPNG are missing. Updated interactive help messages and menus, templates for the new save as dialogues. Admin: Submission for PNG bounty. Version 2.39. Tagged as 'Paint-2_39'
Remove dead variable
Fixes for failure to export some sprites as PNG
Detail: Buffer overflow fix for certain 24bpp + alpha sprites Ref: https://www.riscosopen.org/forum/forums/8/topics/2146?page=24#posts-121254 Attempt to write invalid output when 8bpp paletted + alpha sprite, 8bpp with per-pixel alpha is not a combination PNG allows, so this is now upscaled to 24bpp + alpha first Ref: https://www.riscosopen.org/forum/forums/5/topics/16425?page=1#posts-121264 Admin: Submission for PNG bounty. Version 2.40. Tagged as 'Paint-2_40'
Ensure latest support module
Add export handlers for RGB sprite types
Detail: Missing handlers for RGB (versus BGR) sprites. Fix for dropping of rightmost column in some 1bpp test sprites. Improve colour dynamic range exported for 4k/32k/64k images (no longer shifts in 0's). Admin: Submission for PNG bounty.
Save time & space in export converters
Detail: Precalculate the source and destination pixel addresses at the top of the loop. Combine BGR and RGB for 16bpp sprites by means of a component swap at the output step. Together, saves approx 300 bytes, and lots of repeated address calculations. Actively reject non-RGB family sprites; Paint doesn't support these more generally. Version 2.41. Tagged as 'Paint-2_41'
Brush tool enhancements
Detail: A visual brush 'palette' now makes it easy to see the internal shapes or chosen sprite. More clear brush tool window layout. Adds an opacity slider. Tint of a sprite using the currently selected colour using a ColourTrans transfer function. Use alpha channel sprite as the brush sprite. Fix to colours_entry() in Colours.c for 16M colour sprites. Notes - The non-100% opacity features are disabled if supporting modules are missing/too old. Translucent painting is performed into an off screen buffer, then the result merged onto the sprite once the mouse is idle. Admin: Submission for Paint bounty. Version 2.42. Tagged as 'Paint-2_42'
Brush pane tweaks
Detail: Hide the scrollbar under the brushes if the pane is narrow enough to show all. Remove excess space after interactive help token.
Fix for cancelling a scale/shear still going ahead with the operation
Detail: The shortcuts F4 (Scale X), Shift-F4 (Scale Y) and Ctrl-H (Shear) could not be cancelled. Pressing ESC (or clicking outside the window) performs the action as if you had pressed Enter, which is not the case if reached via the menus. Admin: Ref: https://www.riscosopen.org/forum/forums/4/topics/16541#posts-124210 Version 2.43. Tagged as 'Paint-2_43'
Improvement to zoom functionality
Detail: Previously, when using Ctrl + scrollwheel to zoom out it's possible for the window to shrink and no longer lie under the mouse, meaning you have to keep chasing it around the screen. The code now attempts to keep the same pixel under the mouse pointer first with the scroll bars and then by moving the window if that's insufficient, but it avoids moving window furniture off the edges of the screen. Zooming initiated by keyboard, mouse wheel or magnifier keeps the window the same size and shape whenever possible. Zoom in coarse steps in the form x:1 or 1:x is now possible by Ctrl-Shift-resize. Admin: Ref https://www.riscosopen.org/forum/forums/8/topics/2146?page=21#posts-99304 Submmission for Paint bounty. Version 2.44. Tagged as 'Paint-2_44'
Fix colour issue painting with a brush at reduced opacity
Detail: Certain colours on a 256-colour sprite were appearing wrong when brush painting at reduced opacity. For example, the grey colour 208 appeared blueish. This was caused by a sign propagation problem in colours_entry_from_gcol().
Fix for cosmetic rubout issue on changing to/from artist friendly colours in choices
Detail: Changing the Colour window layout in choices would immediately affect all open colour windows, and not redraw them. The corrected behaviour keeps the colour choice on a per psprite basis, so only newly opened Colours follow the choices (in common with the other choices).
Keep a per-table copy of the transfer function workspace
Detail: Brush translation table code changed to keep a copy of the four word workspace (for the ColourTrans transfer function) with each translation table. This avoids situations where changes to the brush settings weren't causing the translation table to be rebuilt. For example: this may have caused the brush colour to get stuck after toggling the palette a few times via the menu.
Reduce flicker when changing aspect preserving zoom level
Detail: Avoid unnecessary redraws. Admin: Submission for Paint bounty. Version 2.45. Tagged as 'Paint-2_45'
Initial alpha transparency editing support
Detail: * Allow creation of new format sprites: - Alpha mask sprites - Alpha channel sprites * Enhanced Brush tool ideas: - Alpha channel sprite support + sprite brushes effectively provide airbrush support New brushes are provided in the brush tool with Gaussian blur. By relying on the underlying OS_SpriteOp calls, only RGB blending of alpha sprites is supported; when you paint over a transparent or translucent region of a sprite, it always turns fully opaque, except when using the Transparent colour. On an alpha masked sprite, painting in the transparent colour always turns the affected pixels fully transparent. Admin: Submmission for Paint bounty. Version 2.46. Tagged as 'Paint-2_46'
[546] Don't hide 'Bad sprite file' errors
Rather than use wimpt_complain for those SpriteOps involved in loading a file (which leads to a 'Paint has gone wrong' style error box), use werr tp show the message in one step.
Lookup missed message tokens
A few calls to werr() were passing tokens rather than looking them up first.
[545] Keep create dialogue open after error
Take note whether create_create_sprite() succeeds or not, only dispose of the dbox on success. Common up the disposal of the 'Create' dbox via psprite_close_createbox(), previously there were several copies of the same code and some of them leaked the transparency_menu menu. In psprite_create_show() nothing uses auto_open == -1 any more, delete unused submenu support.
[493] Bring to top when opening the same file twice
Follow the same logic as Draw and Edit, in that if a file is already open of the same name and unmodified, just bring the existing file to the top rather than open a confusing second copy in memory. Version 2.47. Tagged as 'Paint-2_47'
Fix for crash double clicking in sprite window
Detail: Making 1 new sprite and repeatedly double clicking on it in the sprite window would cause a fatal internal error. A bug introduced in Paint 2.24 was not checking whether the tag was a window before proceeding. Admin: Submission for Paint bounty. Version 2.48. Tagged as 'Paint-2_48'
Remove workaround for bug #540
Fix for crashes on use of brush tool
Detail: When trying to drop the brush translation table pointer Paint would often crash depending on previous tool selections (because the workspace is shared between tools) with data aborts. Ensure that on deselection the toolspace is explicitly set to NULL. Admin: Submission for Paint bounty. Version 2.49. Tagged as 'Paint-2_49'
Intermediate Makefile install phase
Detail: In order to unblock some other changes in BuildSys adapt the Makefile to key off INSTTYPE for theme install, and for INSTDIR to be the dir in which !Paint is installed.
Fix for soft brush use on 256 colour sprite with no mask
Detail: Using a soft brush on a 256 colour sprite with no mask at all caused the screen to flash and wipes the whole sprite (seen in sprite file window, the sprite window itself not updated). Admin: Ref https://www.riscosopen.org/forum/forums/8/topics/2146?page=26#posts-130727 Submission for Paint bounty. Version 2.50. Tagged as 'Paint-2_50'
Add editable DPI facility for sprites
Detail: New menu entry allows the sprite mode word to be changed without changing the contents of the bitmap image. Admin: Submission for Paint bounty. Version 2.51. Tagged as 'Paint-2_51'
Enable translucent brush with sprite into 256 colour sprites
Detail: Previously this combination was disabled due to painting in odd colours when the target sprite was 256 colours but with no palette. From ColourTrans 1.96 and later a default palette is substituted. Add a runtime check that the appropriate version is available; implicitly it will be since Paint is in the same ROM as ColourTrans, but for the disc copy provided for RISC OS 3.50 it isn't. Admin: Submission for Paint bounty. Version 2.52. Tagged as 'Paint-2_52'
Correct mangling of test programs
Eleven of the test programs were always BASICTxt (i.e. ASCII) files, but assigned filetype FFB (which is intended only for tokenised BASIC). Whenever these files have had licence headers inserted (both prior to initial release under the Castle shared source licence, and again when they were relicensed to Apache) the headers were inserted as though they were tokenised BASIC, resulting in an unusable file. Correct this by changing the filetype to FD1 and replacing the licence header with an ASCII version. This also requires a minor update to .gitattributes to inform GitLab that they are still BASIC files. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> .gitattributes git checkout <this commit> Test/CTransTest,fd1 git checkout <this commit> Test/FloodTest,fd1 git checkout <this commit> Test/GenTab,fd1 git checkout <this commit> Test/InsColTest,fd1 git checkout <this commit> Test/InsertTest,fd1 git checkout <this commit> Test/SelTab2,fd1 git checkout <this commit> Test/SelTab3,fd1 git checkout <this commit> Test/SelTab4,fd1 git checkout <this commit> Test/TSumner/SizeChTes2,fd1 git checkout <this commit> Test/TSumner/SizeChTest,fd1 git checkout <this commit> Test/TestInsCol,fd1 git rm Test/CTransTest,ffb git rm Test/FloodTest,ffb git rm Test/GenTab,ffb git rm Test/InsColTest,ffb git rm Test/InsertTest,ffb git rm Test/SelTab2,ffb git rm Test/SelTab3,ffb git rm Test/SelTab4,ffb git rm Test/TSumner/SizeChTes2,ffb git rm Test/TSumner/SizeChTest,ffb git rm Test/TestInsCol,ffb which will only update your working tree and the index. Version 2.52. Not tagged
Reword mask name repetition
Detail: When viewed in the create sprite dialogue the word mask appeared twice "Mask Simple Mask" change this so the name in the pop-up are all merely types of mask. Admin: Spotted during review of User Guide chapter for Paint.
Remove editable DPI facility for sprites
Admin: This feature needs more work under the Paint bounty.
[563] Shorten name of CompressPNG module on disc
Version 2.53. Tagged as 'Paint-2_53'
[554] Tile in all modes even if no matching tile is not in the Wimp pool
Detail: Use a similar search algorithm to the Wimp when looking for a tool sprite: first try for one of the same bit depth, else fall back to 'tile_1', else give up and fill with grey. Use ColourTrans to map colours from any arbitrary source sprite to the current screen mode. Introduce a new 'fully qualified mode' structure to hold the tuple of values which specify a given mode.
Fix for 2nd use of insert/delete rows/columns not completing on click
Detail: Open a sprite, menu Paint->Edit->Delete columns, drag out a few columns, then select click to confirm the deletion (works). Repeat the process, the 2nd use doesn't do anything when select clicking to confirm. This was caused by Paint now tracking gain/lose caret events, the gain caret caused by clicking in the sprite window resulted in a call to menus_insdel_frig() which cancelled the insert/delete action before the mouse click event was delivered. Since the gain caret event isn't wanted, just return early at line 1266.
Use flags in place of hex constants
Detail: Use Wimp window flags where available. Combine mouse bbit flags were sensible to do so.
Insert default palette when translucent merging into <= 256 colours
Detail: This locally replicates what ColourTrans 1.96 did, without the side effects which that caused. When stamping/tinting with a translucent shade of a sprite into a <= 256 colour target which has no palette, temporarily add one. As memory moving an entire sprite file is expensive, instead 1. clone the sprite header on the stack 2. append a palette 3. fix up the pointers to point at the original sprite/mask data 4. do the paint operation 5. adjust the pointers back to the original (unpaletted) sprite header Also remove the test of ColourTrans 1.96 since this is no longer needed.
Fix for ignoring Ctrl-Scroll & Shift-Scroll on sprite windows
Detail: With the WindowScroll module present, and 'Line multiple' option off, no wimp_ESCROLL events were being delivered as the WindowScroll module was handling up/down scrolling itself. Now, Paint requests extended scroll information so that it can interpret the state of Ctrl and Shift to do alternative actions. Version 2.54. Tagged as 'Paint-2_54'
Logs for RiscOS/Sources/Apps/SciCalc from SciCalc-0_90 to SciCalc-0_91
[551] Sign toggle not working with E notation
Detail: A result of the form 1E-6 would not have its sign toggled by ± correctly because of the negative exponent, instead changing to 0 then -6. If NumberComplete% or there's no E, simply look at the leading character. Admin: Submission from Stuart Painting. Version 0.91. Tagged as 'SciCalc-0_91'
Logs for RiscOS/Sources/Apps/SparkFSBin from SparkFS-1_46 to SparkFSBin-1_51
Updated compressor modules
Admin: Version 1.50 of the 9 compressor backends built with cc 5.91 in the Disc environment. The SparkFS module is built with cc 5.91 in the PlingSystem environment and is only required for RISC OS 3.50 and earlier (no international help). Version 1.50. Tagged as 'SparkFSBin-1_50'
Retire 6 compressor binaries
Admin: Now built from sources in RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs Version 1.50. Not tagged
Retire 2 compressor binaries
Admin: Now built from sources in RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs Version 1.50. Not tagged
Retire 1 compressor binary
Admin: Now built from sources in RiscOS/Sources/FileSys/ImageFS/SparkFS/Codecs Version 1.50. Not tagged
Updated SparkFS module
Admin: The SparkFS module is built with cc 5.92 in the PlingSystem environment and is only required for RISC OS 3.50 and earlier (no international help). Version 1.51. Tagged as 'SparkFSBin-1_51'
Logs for RiscOS/Sources/Desktop/Desktop from Desktop-2_77 to Desktop-2_77-1
Rewrite rules for install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the install target is redefined after AAsmModule is included, so it will be affected. The install rule is only used for copying the theme sprites in a Disc build. Version 2.77. Not tagged
Logs for RiscOS/Sources/Desktop/DragAnObj from DragAnObj-0_09-2 to DragAnObj-0_10
[568] Fix DragAnObjectStart when SVC stack is not USR mode accessible
Detail: Load the DragAnObject rendering userfunc parameters and address before switching to USR mode. Version 0.10. Tagged as 'DragAnObj-0_10'
Logs for RiscOS/Sources/Desktop/FilerAct from FilerAct-0_62-3-g75233663 to FilerAct-0_64
Use "Resources:$...." not "Resources:..."
If the current directory is not it's root these are not equivalent. Version 0.63. Tagged as 'FilerAct-0_63'
Retire undocumented Filer_Action$Skip CVS filter
Once used within Acorn to skip over CVS control directories copied from NFS.
Add intercept for writes to special OS applications
When Filer_Visibility is set to hide special OS applications (!Boot, !Choices, !Scrap, !Territory), monitor attempts to copy or move similarly named objects into their place. Without this they would appear to vanish into a black hole. If hidden, and an attempt to overwrite one of the special OS apps is made, the operation is halted with a warning box similar to the read only warning. The operation can be aborted entirely, that 1 clashing object can be skipped, or the operation retried. A new subreason to Message_FilerControlAction allows the visibility state to be tracked "live", so while halted the user can go to !Configure and unhide them, then click on Retry to complete the task. Fix an issue that the error messages (ER0-ER3) were after a {DictTokens} directive, but the messages are looked up using msgs_lookup() which doesn't use MessageTrans and so doesn't understand tokenised strings. Version 0.64. Tagged as 'FilerAct-0_64'
Logs for RiscOS/Sources/Desktop/Filter from Filter-0_29-1-gfc7abb71 to Filter-0_30
Error improvements
Don't return untrappable error numbers of 0. Do use the error returning form of Wimp_ReadSysInfo. Version 0.30. Tagged as 'Filter-0_30'
Logs for RiscOS/Sources/Desktop/ShellCLI from ShellCLI-0_37 to ShellCLI-0_39
Translate module to C
Detail: Replace s.ShellCLI with C source and header files and assmbler veneers and CMHG file. Change Makefile to build for C. Version 0.38. Tagged as 'ShellCLI-0_38'
Set date from VersionNum
Admin: Ensures the date is consistent for anyone who doesn't run the git-mtime.py script locally. Version 0.38. Not tagged
Switch to _swix for SWI calls
Detail: Saves 15% of code space, partly through use of CLib stubs rather than linking with OSLib, and partly by recent versions of Norcroft inlining many common calls via _swix. Also removes the need for many casts from os_error to _kernel_oserror.
Enable CI
Detail: Stop using quoted string Module_ComponentName in CMHG file Reflect new languages used in `.gitattributes` Move `.gitignore` to the top level and complete it Resolve some signed/unsigned comparison warnings
Logs for RiscOS/Sources/Desktop/Switcher from Switcher-1_53 to Switcher-1_54
Take into account size of kernel RW/zero-init area
Add the size of the kernel's RW/zero-init area (as reported by OS_Memory 16) into the total for the "Hardware/system" category. Version 1.54. Tagged as 'Switcher-1_54'
Logs for RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_81 to TaskWindow-0_85
Fix SWI calls not returning when TaskWindow_Morite received
Was calling OS_Exit immediately upon TaskWindow_Morite being received, even if in a SWI call. Instead flag for later attention like Message_Quit. This results in error being returned from sleeping SWI calls, and OS_Exit being called in a callback after supervisor mode code has had a chance to clean up. Version 0.82. Tagged as 'TaskWindow-0_82'
Don't crash on "%TaskWindow -display -ctrl"
Detail: s.TaskMan: Alter initial value of PassOnVectors in inittask This fixes a bug, that if an editor is not currently running then starting a task window with "%TaskWindow -display -ctrl" from the new task option in the task manager causes a branch through zero. Whilst I have not worked out the exact detail of the crash, the cause appears to be that PassOnVectors is set to false before GetParentTask is called. In GetParentTask, Wimp_StartTask is called, which emits control characters. This causes GetParentTask to be re-entered (this time via MyWrchV rather than the start-up -display code). It gets hazy what happens after to branch through zero, but changing it to set PassOnVectors=true before the initial GetParentTask fixes the issue. If an editor is already running then the crash doesn't occur because it responds to the Message_TW_NewTask, so Wimp_StartTask is never called. If the -ctrl switch is absent then the control characters from Wimp_StartTask are ignored by MyWrchV. If -display is absent then it never calls GetParentTask during the start-up code. Admin: Tested standalone on RPCEmu and RPi3B+ Version 0.83. Tagged as 'TaskWindow-0_83'
[532] Map missing TaskWindow$Server variable to a nice error
* Check TaskWindow$Server exists first to avoid misleading error trying to run it * Delete leftover Help (see CmdHelp) * Add safety range check to SWI handler Version 0.84. Tagged as 'TaskWindow-0_84'
[468] Fix INKEY requiring an extra key press if Escape key pressed
Detail: Escape being pressed whilst in an OS_Byte 129 call (MyByteV) was not being handled on return to MyRdChV before the TaskWindow suspended itself via a Wimp_Poll. Added check for Escape on entry to MyRdChV. Admin: Remove redundant RestPSR just before OS_ReadEscapeState. Extended reach of title string ADR when CMDHELP=None. Version 0.85. Tagged as 'TaskWindow-0_85'
Logs for RiscOS/Sources/Desktop/Wimp from Wimp-5_80 to Wimp-5_87-1
[378] Extra switches to set button true colours
WimpVisualFlags gains -ButtonColour -ButtonWellColour -ButtonHighlightColour to allow a theme designer to set the button/well/pressed colours for R1-R7 slabbing to some other colour, and -ButtonBorderFaceColour -ButtonBorderOppColour -ButtonBorderShallowColour for the outlines. The given colours are only used when there is no 'C' validation.
Add themeable icon bar tiles
Allow theme designers to use a different sprite for the background tile of the iconbar, distinct from the other windows. This looks for 'tile_i' before falling back to 'tile_1' as before, in addition to the existing 'tile_m' for menus. Version 5.81. Tagged as 'Wimp-5_81'
Fix Message_TaskInitialise reporting wrong slot size
Message_TaskInitialise was reporting that MemoryLimit was the slot size of the application, which was resulting in the task manager showing the wrong slot size if for some reason MemoryLimit had been artificially reduced below ApplicationSpaceSize (e.g. due to the task being a child of a C system() call). And because MemoryLimit is lower than ApplicationSpaceSize, any attempt the task makes to grow/shrink its wimp slot is denied, so task manager will be stuck showing the wrong value for the entire lifetime of the task. Fix Message_TaskInitialise to use ApplicationSpaceSize instead, so that the total size of the slot is reported instead of just the usable area. This fixes task manager incorrectly showing that Fat32Fs has a slot size of 0 on some of my Raspberry Pis, when really it has a size of 256K. This discrepancy was also causing the "System memory allocation" numbers to not total up correctly (the sum was 256K lower than the displayed total).
Crunch ROM icon sprites
Save around 50KB of ROM space by converting the icon sprites to use RISC OS 3.5 mode words instead of numbered modes, reducing the size of the mask data to around a quarter of its old value. Tested in IOMD ROM, with boot sequence disabled (to ensure the ROM sprites get used). Version 5.82. Tagged as 'Wimp-5_82'
Abandon set caret position if the window or menu isn't there
During destruction of the menu tree, if set caret position fails when resetting the caret to the old position (ie. illegal window handle as the window has been deleted) then destroying the menu tree also fails with catastrophic results. Therefore * Do not fault SetCaretPosition to invalid window handle, just change it to -1 * Do not try to redraw areas of an invalid window when moving caret Version 5.82. Not tagged
Fix to invalidate entire tile cache
A hardwired 18 in reset_all_tiling_sprites meant that one slot was never cleared, so a change in the Wimp's sprite pool could leave a cached sprite pointer pointing to something invalid. Ref https://www.riscosopen.org/forum/forums/5/topics/16708 Version 5.83. Tagged as 'Wimp-5_83'
[539] Add missing PNG file type icon to ROM sprites
For each of the 5 actively maintained ROM sprite sets add file_b60 and small_b60. Also copy it into the disc based Morris4 theme. Version 5.83. Not tagged
Fix crash on closing menu containing a writeable icon with focus as part of the menu tree
* When closing menus, set_caret_position is called to remove the caret from the menu tree which tries to redraw the icon without a caret as the window is still defined and valid * This happens after clearing the menutaskhandle though, so the redraw can't page in the right task * The redraw then fails badly trying to access memory from the wrong task Version 5.84. Tagged as 'Wimp-5_84'
[555] Fix for corrupt registers in Service_ModeChange
Service_ModeChange -> recalcmodevars -> readvduvars2 but readvduvars2 uses r5 and r6.
[519] Wimp crash on bad title bar validation
Reset the redrawhandle when creating a new window, so an empty title validation string doesn't cause an unwanted page in of another task. This could lead to a subsequent abort if the wrongly paged in task had a smaller slot when attempting to dereference the pointer.
[509] Fix abort autoscrolling off a window with no icons
When looking up the user icon button type passed in R3/R4, use the window handle in R3 rather than 'handle' which is the window in which autoscrolling started. This caused an abort if that window contained no icons (because w_icons = -1, and R4 != -1 leading to R5 = 15 and invariably an address in zero page somewhere).
Fix for zombie task preventing desktop exit after shutdown
When the last task closes down have the clipboard manager task go dormant rather than pending. Otherwise, we get stuck in a race condition wanting to start back up again when the Task Manager's shutdown dialogue quits (Ctrl-Shift-F12 then Ctrl-Shift-F12). Wimp01.s: Define symbolic names for the special values if clipboard_taskhandle for states pending/run now/dormant. Wimp02.s: When the final task closes down, *now* it is safe to go to the pending state. Wimp07.s: Tidy up runthetask, and use Wimp version of 200 for the temporary task initialised rather than pass an undefined R3 to Wimp_Initialise. Share a common OS_CLI tail. CBTask.s: When asked to quit via user message 0, set the state to dormant. Version 5.85. Tagged as 'Wimp-5_85'
Add HTML and GIF icons to Morris4 disc sprites
file_faf and file_695 taken from !Browse.
[581] Revise assumption that ROM toolsprites are always unmasked
Wimp-3_99o introduced an assumption that any toolsprites in ROM are to be plotted unmasked, and that holds for Ursula and later where the ROM set don't need the underlying colour (gadgets are always grey and rely on the tintfunc to make the focus titlebar cream). The toolsprites in the RISC OS 3.10 ROM however are almost entirely transparent as their 2D look just plots pixels on top of the underlying fill colour. Change the logic to look at all the toolsprites and only use the solid plot SpriteOp if they are all truly solid (skipping the titlebar, since those are already special cased by dofunkytitlebar and the tintfunc).
[580] Fix for excessive RMA jumps when *IconSprites on RISC OS 3.10
Pre Medusa sprites are held in the RMA. Wimp 5.26 adjusted the RMA behaviour where previously after *IconSprites a resize of -256MB would surprise apps that wanted some RMA for things in their !Boot or !Run files but found there was none due to having looked at their sprites. However, the resize of -256MB does not always result in 0kB free space, so each *IconSprites command ended up net growing the RMA by whatever the shrink left *plus* the previous free amount. Fix this by reading the free space in the RMA and adjusting up or down as needed to always end up with a safe free space position.
Add WimpVisualFlag to turn off icon bar borders
Given it's now possible to have a different tile sprite for the icon bar background, it may look wrong to have a black border around that window. Allow it to be turned off.
Add !Choices application icon to disc sprite pool
One each for the maintained themes. Special thanks to Richard Hallas for contributing the RISC OS 5 design.
[603] Add missing low res Morris4 icons
taskmanager & user2 (copied from switcher). vdivider (copied from Ursula set). And, less mission critical, ic_alarm & ic_chars & ic_configure created. Version 5.86. Tagged as 'Wimp-5_86'
Rewrite rules for resources
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `resources` target is redefined after `AAsmModule` is included, so it will be affected. Rewrite the rules so that they will continue to work the same (at least for native builds) both before and after BuildSys is updated. Version 5.86. Not tagged
[627] Fix for malformed Message_DataRequest
The message was being correctly formulated in memory, but the declared length omitted the terminator word. Version 5.87. Tagged as 'Wimp-5_87'
Add vcddisc icon to the sprite pool
One each for the maintained themes. Special thanks to Richard Hallas for contributing the RISC OS 5 design, along with re-rendered versions of cddisc/acddisc/pcddisc with an alternative blend to the background.
Make use of button well colour option for Raspberry theme
Wimp 5.81 and later support a set of WimpVisualFlags which allow the button colours to be customised per theme. While the faces and shadow in the Raspberry theme have a similar tone to tile_1, the yellow well around a default action button jars with the focus window title bar yellow. Use a -ButtonWellColour switch to match them. Version 5.87. Not tagged
Logs for RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_55 to ADFS-3_56-1
FIQ routine cache flush fixes
In the HAL case, the 3 args for OS_SynchroniseCodeAreas were being loaded in exactly reverse order, ending up copying immediate #1 to R0+R1+R2. In the non-HAL case, some over-zealous cleanup in ADFS-3_45 had deleted the line label 02 so it no longer assembled. Fixes instruction abort seen when copying from floppy to Econet filestore. Version 3.56. Tagged as 'ADFS-3_56'
Add Lazarus (Bush Internet TV set-top series) machine support
Detail: Currently, this is just a copy of the IOMD machine setup. Version 3.56. Not tagged
Logs for RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_15 to ADFSFiler-1_16
Rewrite rules for resources
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `resources` target is redefined after `AAsmModule` is included, so it will be affected. Rewrite the rules so that they will continue to work the same (at least for native builds) both before and after BuildSys is updated. Version 1.15. Not tagged
New build variant for NVMeFS
Detail: * Added the ability to build NVMeFiler. * Backup and format menu items are always shaded for NVMeFS since these filing systems are not currently supported by the backup code. Version 1.16. Tagged as 'ADFSFiler-1_16'
Logs for RiscOS/Sources/FileSys/FSLock from FSLock-1_25 to FSLock-1_26-1
Allow for !Scrap in the root of the boot drive
Add an extra lookup step so that !Scrap can live outside of !Boot on the locked drive. Version 1.26. Tagged as 'FSLock-1_26'
Use HostApp makefile fragment
Also fix MkClean to strip dependencies from scrambler/mk Version 1.26. Not tagged
Rewrite rules for rom install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install_rom` and `rom` targets are redefined after `AAsmModule` is included, so they will be affected. Version 1.26. Not tagged
Logs for RiscOS/Sources/FileSys/FileCore from FileCore-3_75-1-g04030b45 to FileCore-3_78
Fix check-byte for laying out defect list on big discs
Detail: s.FormSWIs LayoutBootBlock: Calculate the checkbyte for the second defect list (>512M) in accordance with the PRM: "The byte yy is a check-byte calculated from the previous words in the second defect list" Currently the code includes all of the first defect list including its terminator when calculating the check-byte for the second defect list. As a result an empty defect list goes from &20000000 &40000020 to &20000000 &40000000 I do not believe this code would ever have been used before, since FileCore_LayoutStructure is only used in the OS 1) To format floppies, which are smaller than 512MB and 2) To format the RAM disc, which up till now has been smaller than 512MB. FileCore never looks at the >512M defect list outside of FileCore_LayoutStructure, the defect command is not able to add defects to the second list. HForm already calculates the checkbyte in accordance with the PRM, and this change ensures that large RAM discs will conform. Admin: Tested by examining 600MB RamDisc0. Version 3.76. Tagged as 'FileCore-3_76'
Use symbolic names for DA operations
Tighten DA access permissions
Given not all page table formats can represent user mode RO + privileged R/W, and there's no reason for FileCore to let the user peek its internal structures, tighten this up and remove user mode access entirely. Tested in a Titanium ROM with SCSIFS/RamFS/SDFS/ADFS. Version 3.77. Tagged as 'FileCore-3_77'
Fix file extensions not being zeroed on removable discs
Here's a bug that's probably been around forever, but was recently observed when running FSBash on Raspberry Pi. When a file is extended by OS_Args, either by setting the extent directly or by setting the file pointer beyond the current end of the file, FileCore is the entity that is responsible for filling the intervening space with zeros. This it does by constructing a scatter list in the scratch space. However, there's a problem with that, because if it has to mount the discs in one or more drives in order to establish which drive contains the disc which holds the file being extended, then that mount operation also needs to use the scratch space. This happens particularly frequently on platforms like Raspberry Pi where there is no hardware media insertion detection, which means that we have to assume the media might have changed after a timeout since the last sucecssful data operation. However, it would also affect any other removable drive if the media was removed and reinserted since the last DiscOp. What appears to have ended up happening is that the boot block of the mounted disc was loaded to the scratch space, then interpreted as a scatter list. The defect list terminator, &20000000, happens to point at the base of the RMA, so rather than extending the file with zero bytes, the start of the RMA got copied there instead. Fixed by explicitly calling FindDisc just before we start to construct the scatter list in scratch space. Successfully soak tested with FSBash for 6 hours. Version 3.78. Tagged as 'FileCore-3_78'
Logs for RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_87-1-gdc166065 to FileSwitch-2_92
Add BASICTxt filetype
Programmer's Reference Manual Volume 4 Table C defines a filetype for non-tokenised BASIC programs. Add support for this to FileSwitch with a Filetype name, load and run action. Version 2.88. Tagged as 'FileSwitch-2_88'
Remove quotes from @Run/LoadType_FFB/FD1
Detail: Quotes in an alias mean If "<Alias$@RunType_FD1>" = "" Then ... doesn't work. The quotes aren't necessary, because filenames can't have spaces in anyway. Admin: Tested on Linux and RPCEmu. Boots and fixes above problem. Version 2.88. Not tagged
Revert "Remove quotes from @Run/LoadType_FFB/FD1"
This reverts commit ec553fef722a2c06095d6b8b724016ec08d4fa60. The above commit causes various BASIC programs to fail as they rely on the location of quotes in order to parse their command line. Version 2.88. Not tagged
Cross-compilable
Detail: * Makefile: get directory separator and header extension from shared makefiles. * Build variable ImageSize (inherited by amu/make from environment) needs passing to objasm on command line. * Consolidated .gitignore to root. * Enable GitLab CI. Version 2.88. Not tagged
Fix for NULL pointer dereference with Count/Copy/Wipe ops on duff FS
Each of the 3 wildcard accepting OS_FSControl options takes its own copies of the paths in Util_CommonStart then frees the PassedFilename (and co). This is generally OK because the src name is kept in a 'copy block' struct relative to R7 (and, for Copy, the dst in a second struct relative to R8). However, when needing to get info on objects or other low level operations, if the FS is marked in the 'DuffFS' table it would then do a safety check for multiple $'s in the PassedFilename and in doing so dereferences a NULL pointer. Ref https://www.riscosopen.org/forum/forums/4/topics/17259 Since the filenames constructed by resolving wildcards for Count/Copy/Wipe are all sanitised by Process_WildPathname we can skip the safety check; there will only be 1 $ by then. FSUtils3.s: Correct misleading comment LowLevel.s: Avoid NULL pointer dereference, drop noisy debug on every FS lookup Version 2.89. Tagged as 'FileSwitch-2_89'
Use OS_TaskControl 0 to reset the SVC stack
Instead of manually resetting the SVC stack pointer when starting a new task, prefer to use the stack reset routine that's exposed by OS_TaskControl 0 in RISC OS Select / 5. If that routine isn't available, fall back to the old method of doing it manually. Requires Kernel-6_61 to build.
[480] Make use of fsfile_ReadInfoNoLen
Update EnsureCanonicalObject so that it can optionally skip reading the file/object length, based on the new argument R7. Then trace back through the callers to have them pass in an appropriate value based on whether they care about the length or not. TopPath_DoBusinessToPath has also gained a new flag bit to suppress reading the length, but so far I've only updated DoThePath to use it. Result: If you have a file in PipeFS which is open for writing, and then attempt to open it for reading using OS_Find, it'll now open immediately instead of PipeFS trying to block/sleep until it's no longer open for writing. Why: Since at least as far back as RISC OS 3.6, PipeFS tries to sleep inside fsfile_ReadInfo if the file is open for writing. But a combination of buggy sleep logic and TaskWindow's lazy approach to UpCall 6 meant that (prior to TaskWindow 0.65) it wouldn't sleep for long and would instead allow the open to proceed while the file is still open for write. The ability to have both a reader & writer active at the same time is basically the whole point of PipeFS, so this change restores that pre-TaskWindow 0.65 behaviour without having to remove the sleep logic from PipeFS (it's a well-intentioned feature, even though it's been broken for decades) Tested by performing a ROM build, checking that it works, and running some PipeFS tests. This fixes the original issue described in ticket 480: https://www.riscosopen.org/tracker/tickets/480 Version 2.90. Tagged as 'FileSwitch-2_90'
Replace magic constant
Trim some dead code
Add option to track CallFSFile_Given stats
Track how many of each fsfile op is handled, and how many OS_File 5 cache hits occur, to help judge the effectiveness of the caching
Update OS_File to use fsfile_ReadInfoNoLen where possible
One of the fixes in PipeFS 0.25 was to fix the fsfile_ReadInfo operation to block until the pipe is no longer open for write (instead of failing with a "file not found" error, as it had done previously). This fix had some knock-ons for FileSwitch, since the contemporary version (2.89) only made use of fsfile_ReadInfo. E.g. trying to open a pipe for read while it's open for write would block due to TopPath_DoBusinessToPath using fsfile_ReadInfo when FileSwitch is checking whether the file exists. This specific issue was fixed in FileSwitch 2.90 by changing some areas of FileSwitch to use fsfile_ReadInfoNoLen instead. Further testing has revealed a few more areas which are making unnecessary use of fsfile_ReadInfo and have the potential to break programs. Specifically, with FileSwitch 2.90 & PipeFS 0.25, programs which use GCC's UnixLib will get stuck if they try to open a PipeFS file for write while running in a taskwindow. E.g. the call to GNU.gawk in Env.!Common. This happens because after opening the file, UnixLib attempts to set its attributes using OS_File 4, which in turn causes FileSwitch to attempt to examine the file using fsfile_ReadInfo. Fix this issue by changing OS_File 4 to use fsfile_ReadInfoNoLen, along with all the other applicable OS_Files: 0-3, 7-11, 18, and 24. For OS_File, this leaves just OS_File 5, 6, 12-17, 20-23 and 255 using fsfile_ReadInfo, since they all need to return the length to the caller, and OS_File 19, which doesn't use fsfile_ReadInfo at all.
Change ChangeDirectory to use fsfile_ReadInfoNoLen
It doesn't care about the object length, so don't bother trying to read it.
Change OS_FSControl to use fsfile_ReadInfoNoLen where possible
CanonicalisePathEntry and RenameEntry changed to use fsfile_ReadInfoNoLen, since neither of them care about the length of the object
Change TopPath_DoBusinessForDirectoryRead to use fsfile_ReadInfoNoLen
This call doesn't return the directory length, so there's no reason for it to attempt to read it Version 2.91. Tagged as 'FileSwitch-2_91'
Fix register corruption in CopyFile_EnsureDestFileWriteable
FileSwitch 2.90 introduced a register corruption bug in *Copy which would (typically) result in an abort if the copy isn't going ahead because the destination exists. This was down to the (undocumented) input of R7 being corrupted by the call to EnsureCanonicalObject, and not being restored before it gets used later on by the call to Util_PrintName. Fix the code to restore R7 before calling Util_PrintName, and update the comments surrounding a couple of functions to make sure at least some of the undocumented inputs are documented. Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/17802 Version 2.92. Tagged as 'FileSwitch-2_92'
Logs for RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_14-1-g774c67f3 to DOSFS-1_15
Reintroduce ARMv2 support for disc builds
DOSFSctl.s: Use macros to expand into the 3 possible variants we want. MFSmacros.s: Swap round CLRV NE/SETV EQ pair because SETV also clears Z as a side effect, so would have activated the CLRV as well. Simplify the Ccall macro as only the state of V is significant (and preserving lr), there's no need to preserve all the other flags.
Enable CI
Renames for filename case sensitivity Minor Makefile tidy up
Eliminate 2.5k of repeated code
Each of 41 uses of Ccall has a common tail. Split that tail off and call it like a function instead, saving ~2.5k. Version 1.15. Tagged as 'DOSFS-1_15'
Logs for RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_32 to RAMFS-2_33
Allow disc sizes 512MB - 2GB
Detail: s.RamFS50: - Add patch-through for RamFS_SectorDiscOp - Put stars next to NZones2 fields in disc record as this needs filling in now - In InitDiscRec, increase the maximum number of zones to 127 The maximum was previously 16, so this concerns me because I don't know why that was! However, raising the maximum like this give smalller minimum fragment sizes at every size of RAM disc tested, and enables discs bigger than 512MB. (Defined as min frag size in bytes = (idlen + 1) * LFAU size in bytes) - Also in InitDiscRec, after the algorithm has completed, save only the LSB of the number of zones (r2) in NZones, and save the MSB in NZones2. s.RamFS15: In MiscOp Mount, don't convert address from sectors to bytes, as it is passed to us in bytes already for this operation. s.Defns: Enable BigDiscs2 work Admin: Tested at a variety of sizes, including doing ChangeDynamicArea -RamFSSize nM, then create a file for n = 10 to 900 step 10. RamFS_SectorDiscOp tested by running *DiscKnight -v RamFS 0 which calls by name and examining sectors through Zap which calls by number. Tested by others up to 2GB - 4kB Version 2.33. Tagged as 'RAMFS-2_33'
Logs for RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_10-1-ge51e62d5 to SDFS-0_12
Enable GitLab CI and address issues identified
Some genuinely dead code identified and removed, plus an out-of-bounds memory access in case all possible drives had already been allocated. Some minor printf format specifiers addressed (should have no effect) and removed useless variable.
Support controllers with lower block size limits
Some controllers (such as the eMMC controller in the Pinebook) require transfers to be limited to a smaller number of blocks per operation than is permitted by a generic SDHCI controller.
Support optional factory-fit non-removable memory devices
Some boards feature non-removable memory devices with a no-fit option that can only detected by seeing whether the device responds or not once we start trying to talk to it. To support these, defer drive allocation until the UnitAttached service call. This is already designed to dynamically add extra drives in case a shared MMC bus is found, so the only difference is that the initial number of drives is 0, not 1. Note that there is still a minimum of 1 drive per slot for removable slots, since a removable slot may be empty at module initialisation time, and there's no way to electrically distinguish an empty socket from a no-fit socket. Version 0.11. Tagged as 'SDFS-0_11'
Support for controllers that misbehave when they see CMD23
For such controllers, we terminate all multi-block transfers using a subsequent CMD12 rather than by prefixing them with CMD23. Fixes misbehaviour observed with the SDHOST controller which is now used for the SD slot on WiFi-capable Raspberry Pi models prior to the Pi 4, and for any SD card HATs on generation-4 Raspberry Pis. Version 0.12. Tagged as 'SDFS-0_12'
Logs for RiscOS/Sources/HWSupport/FPASC from FPASC-4_37-1-g6a0dd699 to FPASC-4_39-1
[516] Return divide by zero for non integer -ve powers of 0
Return +INF and a divide by zero exception for things like 0^-0.5 principally to match what is expected by the C standard, and also so BASIC64 matches the result for 1/SQR(0) too.
[515] Fix for loop converting packed decimal infinity/NaNs
On encountering an exponent > &4100 (or > &FE0000 for extended packed) to consider as a NaN or infinity, the emulation ends up in LDFConvert_Packed_NaNInf. However, this is written as a leaf function and returns with MOV PC,LR when the singular caller of it doesn't expect a return so the LR value is actually still pointing at the last BL around line 1926. This creates an infinite loop. Escape the loop by popping the true return value which was stacked on entry. Version 4.38. Tagged as 'FPASC-4_38'
Add support for Machine=CortexA53
Version 4.39. Tagged as 'FPASC-4_39'
Enable CI
Add Bush Internet TV set-top box support
Detail: Note that for Bush box support only, FPEmulator can be built with support for hardware FP only (the Bush box has an ARM7500FE SoC). But it's useful to be able to run this under RPCEmu for testing, so FPEmulator is set to "Both" mode (hardware and software FP support). Version 4.39. Not tagged
Logs for RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_42 to Sound1-1_43-1
Return an error on out of range SWI
Don't just silently return for a bad SWI, return an error. Also simplify the SWI return a little. Remove some unused/duplicated header and makefile includes. Version 1.43. Tagged as 'Sound1-1_43'
Build fix
Version 1.43. Not tagged
Logs for RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_33 to Sound2-1_34
Out of range SWI fixes
When scheduling a SWI, ensure the X bit is set when despatched. This used to be the case: the version in RISC OS 3.60 forced the X bit, but this was mis-translated to XOS_CallASWI for StrongARM with the X bit clear in R10. Fixes https://www.riscosopen.org/forum/forums/4/topics/6760 Report an error for attempts to call out of range SWIs from our SWI jump table. Delete unused Help/Syntax. Version 1.34. Tagged as 'Sound2-1_34'
Logs for RiscOS/Sources/HWSupport/USB/USBDriver from USBDriver-1_31 to USBDriver-1_32-1
Adapt to different `C_EXP_HDR` settings
An upcoming change to BuildSys adjusts the default setting of `C_EXP_HDR` so that it doesn't include a trailing `.h` for native builds. Since we use the value of this variable in one of our rules, adapt accordingly (note that this implementation will work with both old and new BuildSys). Version 1.31. Not tagged
Use HostApp makefile fragment
Also fix makefile so that the generated usbdevs.h & usbdevs_data.h files are actually treated as dependencies for building makedevs Version 1.31. Not tagged
Add missing token for 'Isochronous'
Update USB device database
usbdevs from NetBSD 1.808. Version 1.32. Tagged as 'USBDriver-1_32'
Rewrite rules for exports
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `export` target is redefined after `CModule` is included, so it will be affected. Version 1.32. Not tagged
Logs for RiscOS/Sources/Internat/Territory/TerritoryManager from Manager-0_57 to TerritoryManager-0_58
Added Colemak (UK) keyboard layout and some Swedish l10n
Detail: Added Colemak where pertinent (requires corresponding change in IntKey) Added some Swedish help text Admin: Tested on IOMDHAL under RPCEmu and BCM2835 on Pi 3B and 1. Version 0.58. Tagged as 'TerritoryManager-0_58'
Logs for RiscOS/Sources/Kernel from Kernel-6_43 to Kernel-6_70
Get a tag for 5.28
Back to odd numbered development
Version 6.43. Not tagged
Remove remains of led setting from PageTest
This was introduced on 2002-10-07 in Kernel-5_35-4_79_2_48 the removed on 2002-11-30 in Kernel-5_35-4_79_2_51 as it was "liable to crash".
Remove pointless double test of Ctrl and Shift
Eliminate callback check to Portable_Idle races
Previously both `RdchInkey` and `PageTest` enabled interrupts after running callbacks before calling Portable_Idle with the result that callback could be delayed until the next interrupt. * Change `process_callback_chain` to leave interrupts disabled, and rename accordingly. * Remove redundant check of CallBack_Flag. * In `PageTest` move running calbacks into `CtrlShiftTest`, so that it is immediately before the test. * Re-enable interrupts at appropriate locations. Tested on StrongARM Risc PC. Version 6.44. Tagged as 'Kernel-6_44'
Build fix to DebugTerminal
Changes in Kernel-6_44 left an undefined symbol in s.HAL in DebugTerminal_Rdch. These mods resolve that, and also add a note in s.Kernel to reflect this usage. Version 6.45. Tagged as 'Kernel-6_45'
Increase RamFS limit to 2GB
Detail: RamFS now supports disc sizes up to 2GB-4KB, so raise the dynamic area limit from 508MB. Admin: Tested with a disc size up to 928MB Version 6.46. Tagged as 'Kernel-6_46'
Fix Service_ModeTranslation memory corruption
In HandleServiceModeTranslation, make sure WsPtr is initialised correctly before trying to use it. Fixes system heap corruption when responding to Service_ModeTranslation (most likely overwriting part of ChocolateMABlocks, and causing a crash when loading future modules) Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/11/topics/15973 Version 6.47. Tagged as 'Kernel-6_47'
Allow the kernel workspace to be easily relocated
Rather than specifing absolute addresses for the workspace, use ObjASM's storage layout support.
Move ROM constant and add ASSERT
Move ROM constant to KernelWS with the reset of the memory layout. Add ASSERT to guard against workspace colliding with ROM.
Fix ROM check for callbacks
Check now works if ROMLimit is precisely at the end of ROM causing ROMLimit to not be a valid immediate.
Allow ZeroPage at any 64K aligned address
Change ZeroPage calculation so that ZeroPage can be at any 64K aligned address. Version 6.47. Not tagged
Make supervisor stack inaccessible to user mode
Previously the supervisor stack was read-only in user mode, but since the supervisor stack is typically empty when the CPU is in user mode, it's questionable whether any software actually makes use of this facility. To simplify support for the long descriptor page table format (which doesn't support the user-RO + privileged-RW access mode), let's try and remove usermode SVC stack access completely. Tested on Raspberry Pi 4 Version 6.48. Tagged as 'Kernel-6_48'
Preserve LR and CPSR in DebugTX
This ensures that the debug macros may be freeley placed without concern for if LR and CPSR contain important values, and avoid the of code only working because the debug code changes the flags with the effect of a bug appearing when debugging is enabled. Version 6.49. Tagged as 'Kernel-6_49'
More declarative memory map
Although storage maps are useful for allowing the fixed areas of the memory map to be relocated, it isn't clear in the current definition what the size of each area is, and it's hard to ensure that all the areas are kept at the correct alignment. Replace the current basic workspace definition with one which makes use of the new ASpace macro, to allow addresses to be calculated automatically based on the size & alignment of each area. Also output the address of each area in the build log for easy debugging/verification. Binary unchanged.
Remove some quirks from the memory map
The correct amount of space is now reserved for Kbuffs, and there's no need to have a 1MB gap where the old PhysicalAccess window was. Tested on Raspberry Pi 4
Expose ABTSTK via OS_ReadSysInfo 6
It's the only privileged-mode stack which doesn't have its address exposed via OS_ReadSysInfo 6. Expose it so that software which wants to know its address can read it instead of relying on hardcoded values. Tested on Raspberry Pi 4 Version 6.50. Tagged as 'Kernel-6_50'
Fix GSTrans of quoted macro variable
*BASIC *SetMacro Macro Test SYS "OS_GSTrans", """<Macro>""", &10000, &100 Would result in an erroneous "String not recognised" error as the end of macro variable was reached before closing quote. Fix by reordering the checks.
Fix OS_EvaluateExpression
OS_EvaluateExpression is documented as applying GSTrans to any strings within the expression, but did instead GSTrans the entire expression. This would result in a sequence such as: *Set Alias$@RunType_FD1 "Basic -quit ""%0"" %*1" *If "<Alias$@RunType_FD1>"="" Then Set Alias$@RunType_FD1 @RunType_FFB %*0 raising a "Unknown operand" error as the quote in the variable were interpreted as expression syntax. See https://www.riscosopen.org/forum/forums/5/topics/16127 Unfortunately skipping the initial GSTrans breaks common code such as: If "<StrED_cfg$Dir>" = "" AND <Ctrl$Pressed> = 0 Then ... If "<Zap$OSVsn>" <> "" Then SetEval ZapFonts$OSVsn <Zap$OSVsn> Fix by applying a GSTrans transformation over unquoted parts of the expression, then applying GSTrans over the quoted strings. Version 6.51. Tagged as 'Kernel-6_51'
Prepare logical_to_physical for 64bit phys addrs
ppn_to_physical, logical_to_physical, physical_to_ppn & ppn_to_physical have now all been changed to accept/receive 64bit physical addresses in R8,R9 instead of a 32bit address in R5. However, where a phys addr is being provided as an input, they may currently only pay attention to the bottom 32 bits of the address.
Start moving page table code into s.ShortDesc
In preparation for the addition of long descriptor page table support, start moving low-level page table routines into their own file (s.ShortDesc) so that we can add a corresponding long descriptor implementation in the future. * logical_to_physical, MakePageTablesCacheable, MakePageTablesNonCacheable, AllocateBackingLevel2, AMB_movepagesin_L2PT, AMB_movecacheablepagesout_L2PT, AMB_moveuncacheablepagesout_L2PT routines, and PageNumToL2PT macros, all moved to s.ShortDesc with no changes. * Add new UpdateL1PTForPageReplacement routine (by splitting some code out of s.ChangeDyn)
OS_FindMemMapEntries now uses logical_to_physical
Reduce the number of routines which directly examine the page tables, by changing OS_FindMemMapEntries to use logical_to_physical.
More code uses logical_to_physical & physical_to_ppn
GetPageFlagsForR0IntoR6 & MoveCAMatR0toR3 changed to use logical_to_physical & physical_to_ppn, to reduce the number of routines which are performing direct page table access.
DecodeL1/L2Entry -> LoadAndDecodeL1/L2Entry
Change the DecodeL1/L2Entry routines so that instead of accepting a page table entry as input, they accept a (suitable-aligned) logical address and fetch the page table entry themselves. This helps insulate the calling code from the finer details of the page table format.
Remove more direct page table access
RISCOS_LogToPhys and OS_Memory 20 (compatibility page) changed to use suitable subroutines for reading the page tables instead of accessing them directly.
Remove unused BangCam routine
Somewhere along the way, BangCam became redundant. Get rid of it.
[RISCOS_]AccessPhysicalAddress uses page flags
Currently RISCOS_AccessPhysicalAddress allows the caller to specify the permissions/properties of the mapped memory by directly specifying some of the L1 page table entry flags. This will complicate things when adding support for more page table formats, so change it so that standard RISC OS page flags are used instead (like the alternate entry point, RISCOS_AccessPhysicalAddressUnchecked, already uses). Also, drop the "RISCOS_" prefix from RISCOS_AccessPhysicalAddress and RISCOS_ReleasePhysicalAddress, and remove the references to these routines from the HAL docs. These routines have never been exposed to the HAL, so renaming them and removing them from the docs should make their status clearer. Version 6.52. Tagged as 'Kernel-6_52'
Remove SysCommsModule pseudo-module
Historically many commands of BBC Micro heritage were not included in UitilyModules, but were separated out into a separate pseudo-module, SysCommsModule, to allow for them to be terminated by any non-letter for compatibility with the BBC Micro. However with the introduction of `Oscli_HashedCommands` in August 1999 (and earlier in Ursula branch) this was broken except for *FX, *KEY, *OPT and *TV, which are handled by a special case making SysCommsModule redundant. SysCommsModule is an obsitcle to making the kernel assemble to relocatable AOF as it requires Module_BaseAddr to have 2 different values and therefore be a absolute varaible instead of a section relative symbol. This commit does not change behaviour with `Oscli_HashedCommands` enabled which is the default, except for listing the command under UtilityModule in *Help output. Which `Oscli_HashedCommands` disable this change removes the special behaviour. Version 6.53. Tagged as 'Kernel-6_53'
Ensure PhysIllegalMask is initialised correctly
Remove the lazy initialisation of PhysIllegalMask and instead manually initialise it during MMU init. This fixes some situations where the lazy initialisation doesn't work (PhysIllegalMask isn't in a zero-initialised area of workspace, so if the HAL isn't doing a RAM clear then it could be garbage)
Adjust alignment of PageShifts
PageShifts is only accessed with "ADRL xx, PageShifts-1"; adjust the alignment so that PageShifts-1 is word aligned, to try and avoid us hitting any ADRL range limits (which has happened with the runtime ShortDesc vs. LongDesc selection from future commits)
Initial long descriptor support
This adds initial support for the "long descriptor" MMU page table format, which allows the CPU to (flexibly) use a 40-bit physical address space. There are still some features that need fixing (e.g. RISCOS_MapInIO flags), and the OS doesn't yet support RAM above the 32bit limit, but this set of changes is enough to allow for working ROMs to be produced. Also, move MMUControlSoftCopy initialisation out of ClearWkspRAM, since it's unrelated to whether the HAL has cleared the RAM or not.
Remove CAM size limit
Previously the CAM sat inside a fixed 16MB window, restricting it to storing the details of 1 million pages, i.e. 4GB of RAM. Shuffle things around a bit to allow this restriction to be removed: the CAM is now located just above the IO region, and the CAM start address / IO top will calculated appropriately during kernel init. This change paves the way for us to support machines with over 4GB of RAM. FixedAreasTable has also been removed, since it's no longer really necessary (DAs can only be created between the top of application space and the bottom of the used IO space, and it's been a long time since we've had any fixed bits in the middle of there)
Initial large phys addr support for RISCOS_AddRAM
Define that bit 12 of the RISCOS_AddRAM flags indicates that the supplied start, end, and sigbits values are in 4KB units instead of byte units. This allows a 44 bit address space to be used, higher than the 40 bit LPAE limit. The page list that RISCOS_AddRAM constructs will now store everything in 4KB page units, however any RAM above 4GB will currently be thrown away when the list is later transferred to the PhysRamTable which the OS uses at runtime. Version 6.54. Tagged as 'Kernel-6_54'
Fix MaxInterrupts for Pi 4
Value needs to be increased from 256 to 320, so that the IRQ table is large enough to allow the core 2 & 3 private interrupts to be managed.
Ensure IIC bus list is fully initialised
IICInit only initialises the entries for valid IIC buses (i.e up to the limit returned by HAL_IICBuses), but some code accesses the array without checking against the HAL_IICBuses limit. This causes problems because the array lives in the SkippedTables area of workspace, meaning it isn't zero-initialised automatically. Ensure that the entries for the invalid bus numbers are zero-initialised, so that code which doesn't check against HAL_IICBuses won't mistake the invalid entries for valid IRQ-driven buses (InitialiseIRQ1Vtable, Reset_IRQ_Handler, etc.) Also, protect against overwriting the end of the array if HAL_IICBuses is more than the OS supports. Fixes hang on startup on Pi 4 if memory is filled with -1 (and OS is told that RAM isn't clear), and on Pi400 with normal memory: https://www.riscosopen.org/forum/forums/11/topics/16313 Version 6.55. Tagged as 'Kernel-6_55'
Fix RISCOS_AddRAM memory table description
There are 20 length bits per entry, not 22
Support RAM banks with high physical addresses
This changes PhysRamTable to store the address of each RAM bank in terms of (4KB) pages instead of bytes, effectively allowing it to support a 44 bit physical address space. This means that (when the long descriptor page table format is used) the OS can now make use of memory located outside the lower 4GB of the physical address space. However some public APIs still need extending to allow for all operations to be supported on high RAM (e.g. OS_Memory logical to physical address lookups) OS_Memory 12 (RecommendPage) has been extended to allow R4-R7 to be used to specify a (64bit) physical address range which the recommended pages must lie within. For backwards compatibility this defaults to 0-4GB.
Add MaxCamEntry32 & CPUFlag_HighRAM
MaxCamEntry32 is an internal variable which the kernel can use to quickly determine whether a RAM page has a 32bit physical address or something larger, by comparing with the physical page number (currently entries in PhysRamTable are sorted such that all 32bit pages come first) CPUFlag_HighRAM (aka OS_PlatformFeatures 0 bit 21) is a flag that external code can use to detect whether any high RAM is present, and thus whether 64bit physical address APIs should be preferred over 32bit ones (once the new APIs are implemented!). Using APIs which only support 32bit physical addresses will result in functionality being limited.
Define OS_Memory 0 page block format
Add to s.ChangeDyn a definition of the OS_Memory 0 page block format, and update all relevant code to use those definitions instead of hardcoded offsets.
Add OS_Memory 64, to supersede OS_Memory 0
OS_Memory 64 is an extended form of OS_Memory 0 which uses 64bit addresses instead of 32bit. Using 64bit physical addresses allows conversions to/from physical addresses to be performed on pages with large physical addresses. Using 64bit logical addresses provides us some future-proofing for an AArch64 version of RISC OS, with a 64bit logical memory map.
Extend OS_Memory 19 for 64bit phys addresses
Bit 11 of R0 can be used to indicate that the callback functions use 64bit physical addresses instead of 32bit ones.
Update OS_Memory 19 to understand non-DMAable memory
If the HAL has flagged a chunk of RAM as non-DMAable, OS_Memory 19 (DMAPrep) will now indicate that DMA to/from that region should use a bounce buffer.
Add Service_PagesUnsafe64 & PagesSafe64
These use a page block with a 64bit address fields (matching OS_Memory 64). The page list(s) contain the full list of pages involved in the operation, unlike the 32bit PagesUnsafe / PagesSafe calls, which only list pages which have 32bit addresses. The kernel issues the service calls in the following order: 1. Service_PagesUnsafe64 2. Service_PagesUnsafe 3. Service_PagesSafe 4. Service_PagesSafe64 Since only one PagesUnsafe operation can occur at a time, a program which supports both service calls can safely ignore the PagesUnsafe / PagesSafe calls if a PagesUnsafe64 operation is in progress (the PagesUnsafe call will only list a subset of the pages from the PagesUnsafe64 call). The 32bit PagesUnsafe / PagesSafe calls will be skipped if no 32bit pages are being replaced. The addition of these calls means that NeedsSpecificPages DAs (and PMPs) can now request pages which have large physical addresses. Note that the page replacement logic now has the restriction that pages which have 32bit physical addresses can only be replaced by other pages which have 32bit physical addresses. This is necessary to ensure that users of the old 32bit APIs see the page replacement take place. However it does mean that programs will be unable to claim pages of low RAM which are in use if there are not enough free low RAM pages in the free pool. A future optimisation would be to update the service calls so that they don't list required pages which are in the free pool; if all the required pages are in the free pool this would allow the service calls (and FIQ claiming) to be skipped completely.
Remove 1MB bodge from LongDesc LoadAndDecodeL1Entry
LoadAndDecodeL1Entry will now always return the size/alignment of the entry. This allows ConstructCAMfromPageTables to walk over a 2MB long descriptor page table pointer in one go, instead of splitting it into two 1MB chunks (as if short descriptor page tables were in use) and calling LoadAndDecodeL1Entry twice. This has allowed the 1MB result alignment bodge to be removed from the LongDesc version of LoadAndDecodeL1Entry.
Support runtime selection of pagetable format
Runtime selection between long descriptor and short descriptor page table format is now possible (with the decision based on whether the HAL registers any high RAM or not). The main source changes are as follows: * LongDesc and ShortDesc switches are in hdr.Options to control what kernel variant is built * PTOp and PTWhich macros introduced in hdr.ARMops to allow for invocation of functions / code blocks which are specific to the page table format. If the kernel is being built with only one page table format enabled, PTOp is just a BL instruction, ensuring there's no performance loss compared to the old code. * _LongDesc and _ShortDesc suffixes added to various function names, to allow both versions of the function to be included at once if runtime selection is enabled * Most of the kernel / MMU initialisation code in s.HAL is now encased in a big WHILE loop, allowing it to be duplicated if runtime switching is enabled (easier than adding dynamic branches all over the place, and only costs a few KB of ROM/RAM) * Some more functions (notably AccessPhysicalAddress, ReleasePhysicalAddress, and MapInIO) have been moved to s.ShortDesc / s.LongDesc since they were already 90% specific to page table format
Log -> phys conversion improvements
* RISCOS_LogToPhys upgraded to allow it to cope with all page types (added support for 64KB "large" pages and lazily-mapped pages) * Added OS_Memory 65, which calls through to RISCOS_LogToPhys, to allow regular software to do logical-to-physical conversions for all page types (other calls, like OS_Memory 0/64, typically only work with 4KB pages) * LoadAndDecodeL2Entry updated to always return a page/entry size, like LoadAndDecodeL1Entry Version 6.56. Tagged as 'Kernel-6_56'
Fix compressed ROM support
When PhysRamTable was updated to store addresses in page units instead of byte units (commit df4efb6), the code which allocates the ROM decompression workspace didn't get updated, causing it to break. Add a few extra shifts to the code in order to account for the changes. Fixes issue reported on forums with (compressed) OMAP3 ROM failing to boot: https://www.riscosopen.org/forum/forums/5/topics/16446 Version 6.57. Tagged as 'Kernel-6_57'
Build kernel using relocatable AOF
* Add KernelBaseA absolute symbol. * Use KernelBase - KernelBaseA to convert some expressions to/from AREA relative form. * Link to correct address. * Remove ORG directive * Move EndOfKernel to separate AREA
Support multiple source files
Allow RW/ZI sections to be used
* Instruct the linker to place any RW/ZI data sections in the last ~16MB of the memory map, starting from &ff000000 (with the current toolchain, giving it a fixed base address is much easier than giving it a variable base address) * The RW/ZI section is mapped as completely inaccessible to user mode * The initial content of the RW section is copied over shortly after MMU startup (in Continue_after_HALInit) * Since link's -bin option produces a file containing a copy of the (zero-initialised) ZI section, the kernel binary is now produced from a "binary with AIF header" AIF with the help of the new 'kstrip' tool. kstrip extracts just the RO and RW sections, ensuring the ROM doesn't contain a redundant block of zeros for the ZI section. This should make it easier to use C code & arbitrary libraries within the kernel, providing they're compiled with suitable settings (e.g. non-module, no FP, no stack checking, like HALs typically use)
Tidy up data abort handling
There was some redundant code needlessly pushing & popping various registers to the stack, left behind from when we removed the code that dealt with 26-bit processor vector reads on StrongARM & processed the proto-OS_AbortTrap "abort indirection nodes".
Add extra LTORG to s.HAL
Needed to resolve some literal pool range issues when long descriptor page table support is enabled
Allow arbitrary errors to be fed into DumpyTheRegisters
Improve LibKern
Add kalloc (malloc with an error pointer), free, _kernel_irqs_disabled, _kernel_irqs_off, _kernel_irqs_on, and a simple memcpy implementation. Export the symbols so they're actually usable from other object files.
Split AMB_LazyFixUp in two
If lazy task swapping is active, but it isn't a lazy task swapping abort, AMB_LazyFixUp will force all of application space to be mapped in, in order to protect the data/prefetech abort environment handlers from triggering unexpected recursive aborts (which could easily happen if the handlers make use of application space in any way). Recursive aborts generally aren't tolerated by these handlers because they're entered in ABT32 mode and may rely on the DFSR/DFAR registers being correct. To allow for more stages to be added to the abort handler inbetween lazy task swapping fixup & invoking the abort environment handler, AMB_LazyFixUp has now been split in two so that the code which maps in all of application space can be excuted at a more suitable time.
Add extra ops to hdr/Copro15ops
More data & prefetch abort registers
OS_PlatformFeatures 34: Report presence of some CP15 regs
Report whether: * DFAR & DFSR are writable * IFAR, IFSR, AIFSR, ADFSR are implemented
Add OS_AbortTrap implementation
This supports all the load/store instructions, including FPA & VFP/NEON. Most instructions are handled directly via the base version of the AbortTrap API that was first implemented in RISC OS Select. However, to properly cope with LDREX/STREX, and future support for prefetch aborts, the API has been extended to allow the kernel to request that a block of memory is mapped in with certain permissions. For LDREX/STREX the kernel will then rewind the PC so that the instruction can be retried directly. Test code in Dev/AbortTrap exists in order to allow checking of all major functionality, along with code for building the code in a softloadable module for easier/quicker testing.
Use decgen cache files
Sadly we need one file per combination of action files, but by adding these pre-generated cache files to git we can speed up building the kernel from clean by a significant amount.
Add abortable DA support
This implementation should be compatible with RISCOS Ltd's implementation.
Fix OS_ReadSysInfo 7 to record prefetch abort details
OS_ReadSysInfo 7 is meant to record the details of the last data or prefetch abort that was passed to the environment handlers. This was implemented in Ursula, but the code for recording the prefetch abort details got lost somewhere during the 32 bit conversion process. Restore it.
AbortTrap prefetch abort support
Also make lazy task swapping aborts to use IFAR where possible, to ensure any Thumb-2/Jazelle instructions which cross page boundaries are handled correctly.
Add AP 1 emulation for long descriptor page tables
The long descriptor page table format doesn't support RISC OS access privilege 1 (user RX, privileged RWX). Previously we were downgrading this to AP 0 (user RWX, privielged RWX), which obviously weakens the security of the memory. However now that we have an AbortTrap implementation, we can map the memory as "user none, privileged RWX" and provide user read support via AbortTrap's instruction decode & execute logic. There's no support for executing usermode code from the memory, but the compatibility issues caused by that are likely to be minimal.
Make OS_Memory 24 report Abortable DAs
Version 6.58. Tagged as 'Kernel-6_58'
Fix a couple of comment typos
Allocate OS_PlatformFeatures 0 bit 22
Pyromaniac doesn't allow low-level control or examination of the memory map; allocate an OS_PlatformFeatures bit to allow software to directly detect this limitation instead of having to rely on the affected SWIs erroring. https://www.riscosopen.org/forum/forums/3/topics/16609
Add safety checks to s.CPUFeatures
To avoid CallASWI's CPUFeatures implementation getting dangerously out of sync with the kernel, add extra asserts to both sets of sources to check try and make sure both sets of sources get updated when new flags are added.
Fix AbortTrap's handling of LDA instruction for emulated AP1
When AP1 memory is being emulated (long descriptor page tables are in use), the AbortTrap machinery is used to emulate usermode read access. This provides coverage for all read instructions except those that AbortTrap handles via MemMap requests - LDREX, LDA, LDAEX, LDF & LFM. LDREX & LDAEX request both read & write access, so are fine (the MemMap request will get passed through to the registered AbortTrap handlers). LDF & LFM are irrelevant, since they only exist on ARM7500FE (on other machines FPEmulator will translate them to regular LDR/LDM, which are handled correctly) LDA however, will generate a plain "memmap with usermode read" request. When AbortTrap looks at the permissions of emulated AP1 it doesn't take into account the fact that the usermode read permission is being emulated, so it thinks that everything is fine and claims the memmap was successful, causing the abort handler to retry the instruction without making any changes, resulting in an infinite abort loop. Deal with this by detecting the above situation and also requesting usermode execute access. This will avoid the kernel (and hopefully the registered AbortTrap handlers) from thinking that the emulated AP1 is acceptable, without adversely affecting the behaviour of other instructions or access privileges. If no handler is present or the memmap request is denied, the abort will get passed on to the next stage of the abort handler (i.e. you'll get a standard data abort from trying to LDA from arbitrary emulated AP1 memory) The new test program (Dev/AbortTrap/attest_ap1) will check that this edge case is dealt with correctly. Tested on Pi 4, for both long & short page tables Version 6.59. Tagged as 'Kernel-6_59'
Add symbols for access privileges to Hdr:OSMem
These are the 4 common access privilege values in bits 0-3 of OS_DynamicArea 0 and word 3 of the entries used with OS_Read/SetMemMapEntries. They are equivalent to the kernel's internal OSAP_* symbols. Version 6.59. Not tagged
[549] Fix untranslated OS_SetVarVal error message
Deleting a non-existent system variable resulted in the error message: System variable '%0' not found. Version 6.60. Tagged as 'Kernel-6_60'
Resync with allocations database
Version 6.61. Tagged as 'Kernel-6_61'
Define RISCOS_KERNEL when building the kernel
To match BuildSys 7.76
Use kernel build of SyncLib
SyncLib use is still disabled by default, but this ensures that when we do enable it we'll be using the right version of the library.
Align HAL workspace to doubleword boundary
Will be useful for HALs that want to use LDREXD/STREXD to workspace locations
Mark a few bytes of unused workspace as spare
Implement OS_TaskControl 0
Add an implementation of RISCOS Ltd's OS_TaskControl 0. In addition to the documented Select behaviour of resetting the IRQ and SVC stacks, under RISC OS 5 it resets ABT+UND, and some other important kernel variables (IRQsema + CDASemaphore)
Change *Go to use TaskControl_ResetStacks
Change OS_Module 0 to use TaskControl_ResetStacks
Change ErrHandler to use TaskControl_ResetStacks
Change OS_Exit to use TaskControl_ResetStacks
Change OS_BreakPt to use TaskControl_ResetStacks
Change DumpyTheRegisters to use TaskControl_ResetStacks
Version 6.62. Tagged as 'Kernel-6_62'
Add LTORG to s.TaskControl
Needed for BCM2835 builds, at least. Guess I should have checked that things built correctly after all the rebasing & cherry-picking that went into preparing the MR.
[498] Fix memory corruption when shrinking appspace too far
If lazy task swapping is disabled, and appspace is an AMB node, it was possible to map out the page at &7000 and trigger an abort by attempting to shrink application space to a negative size, e.g. by using "*ChangeDyn -RamFSSize" to create a RAM disc larger than the amount of available RAM. Fix it by sanity checking the DA/AMBNode size within AMBDAHandler before passing on the request to the lower-level growpages/shrinkpages calls (shrinkpages requires the input to be valid and will break if given a negative size). Version 6.63. Tagged as 'Kernel-6_63'
Fix aborttrap for ARMv3
Was trying to use SYS mode to access user registers, which was introduced in ARMv4. Fix by using STM and LDM instead. Also support reading and writing registers for 26-bit modes. Tested on RPCEmu. Version 6.63. Not tagged
Preserve R4 in DumpyTheRegisters
R4 contains the offset to adjust the PC value to use in the error message, but was being corrupted by changes in Kernel 6.62 (commit 6baad1bcd50). Version 6.64. Tagged as 'Kernel-6_64'
Use HostApp makefile fragment
Version 6.64. Not tagged
Fix register corruption in HandleServiceEnumerateScreenModes
File this under "how did this ever work": the call to DoBasicVetMode was corrupting R5 if the VIDC list was accepted by the driver (and potentially corrupting it if it wasn't), which would then cause a crash or memory corruption if this wasn't the last pixel depth that we wanted to try for this X/Y/Hz combination. This wouldn't have affected most people since most machines will be using MDFs or EDID, but I'm not sure how this got missed during my initial testing of the feature (Service_EnumerateScreenModes implementation for legacy monitor types). Fixes issue reported on forums with *Desktop crashing in the kernel after shift-booting on Iyonix: https://www.riscosopen.org/forum/forums/5/topics/17705?page=4#posts-140181
Fix HandleServiceEnumerateScreenModes returning mostly nonsense modes
A mistake in the interlace handling changes that were made in Kernel 6.21 meant that when HandleServiceEnumerateScreenModes populates the buffer that's returned to the caller, all of the modes were getting treated as interlaced, resulting in most of them reporting a Y resolution that's twice what it should be. Attempting to use those mode entries (e.g. constructing a mode selector block and calling OS_ScreenMode 0 or OS_CheckModeValid) would then most likely fail. Fix the code to look at the correct VIDC list member when checking for interlace. This fixes things so that (when using legacy monitor types) the mode lists reported by Service_EnumerateScreenModes and the display manager are once again valid. Version 6.65. Tagged as 'Kernel-6_65'
Additional HALDevice assignments for Rockchip
Version 6.67. Tagged as 'Kernel-6_67'
Rewrite rules for export rom install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `export`, `install`, `install_rom` and `rom` targets are redefined after `AAsmModule` is included, so they will be affected. Version 6.67. Not tagged
Get configured language from ROM module position
There's no assured 1:1 relationship between ROM module and module chain position now some modules can be started early for keyboard detection (and even ignoring that, if you *Unplug something the module chain numbers all change), so take the configured language to mean the position in the system ROM. Version 6.68. Tagged as 'Kernel-6_68'
Add symbolic names for VIDC20 device-specific flags
Add VCO, TV, NTSC video flag to VDU VideoDevice descriptor for Bush IBX (and possibly others later). Allows the HAL to convey hardware settings to the VIDC20Driver at run time. Also add the Lazarus machine name to the list of machines for abort trap. Version 6.69. Tagged as 'Kernel-6_69'
Add OS_Exit test code
OSExitArgs checks how OS_Exit handles its arguments, whether it passes the call on to the error or exit handler, and the register state on entry to those handlers. It will currently fail on this version of the kernel due to a register corruption bug introduced when OS_Exit was changed to use TaskControl_ResetStacks (the state of R0-R2 on entry to exit handlers has never been documented, and some handlers rely on R0-R2 being in a valid state to pass into another OS_Exit call, but TaskControl was corrupting R1-R2, preventing the return code from being passed on)
Fix register corruption in OS_Exit
Although it's never been officially documented, RISC OS has historically used the following values for R0-R2 when calling the exit environment handler: R0 = 0 (or some other "safe" value) R1 = R1 from OS_Exit R2 = Return code Some exit handlers were relying on this (e.g. Shared C Library / ANSILib). Changing OS_Exit to use TaskControl_ResetStacks was causing R1 & R2 to be corrupt, with the result that non-zero, non-error-generating return codes from C programs were being lost and reset to zero. Document things more clearly and ensure R0-R2 have acceptable values so that software which relies on the old behaviour will work again.
Improve error handling in OS_Exit
The poor documentation of OS_Exit in the PRMs means there could be many pieces of software which are using it in a dangerous way. E.g. the famous issue of "OS_Exit generates a garbage error if the return code is out of range" that's documented in the OS StrongHelp manuals - where people (quite rightly) assumed that the OS would generate the "return code out of range" error, when in reality the OS has only ever used the error pointer that was supplied by the caller. Try and improve on things slightly by having OS_Exit sanity check the supplied error pointer before it tries to use it. This doesn't alter the cases where OS_Exit decides to silently ignore the supplied error pointer / return code (if R0 isn't word aligned, or historically, if R0 wasn't word aligned and wasn't in the low 64MB of address space), it just alters the logic for what error pointer gets sent to OS_GenerateError when it does decide to raise an error. If the error pointer looks bad (it's below &4000 or not pointing to at least 8 bytes of readable memory) then it will get swapped out for one of the "return code out of range" errors which get used when you *Set Sys$ReturnCode. Version 6.70. Tagged as 'Kernel-6_70'
Logs for RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_19 to AsmUtils-0_21
Enable CI
Fix only issue identified: missing .gitignore
Adapt clz (and family) to use CLZ instructions where available
Version 0.20. Tagged as 'AsmUtils-0_20'
Add 64-bit versions of clz and family
Where algorithms naturally use 64-bit quantities, these functions will lend themselves to even better optimisation under AArch64. Also opt back in to the softload_gnu CI job, since this is one of the components for which it already passes. Version 0.21. Tagged as 'AsmUtils-0_21'
Logs for RiscOS/Sources/Lib/DebugLib from DebugLib-0_72 to DebugLib-0_73
Match up vprintf and dvprintf argument qualifiers
Detail: Use the same const-ness as ANSI specify for vprintf in our prototype. Correct a surprising number of out of step comment heading blocks. Version 0.73. Tagged as 'DebugLib-0_73'
Logs for RiscOS/Sources/Lib/OSLib from OSLib-6_90-1 to OSLib-6_90-2
Support cross-compilation
While this component is stored in pre-compiled form, we need the header filenames to be converted to postfix-extension form during the export phase so that compilers and other code analysis tools will find them. Because this is a somewhat unusual component, this is achieved with a custom makefile for cross-compilation use. Support is also included for converting the object files to ELF format when exporting, if `${TOOLCHAIN}` is `GNU`. Enable GitLab CI (native `Makefile` given partial GNU make compatibility to facilite some of the CI jobs, and as a side-effect will enable correct syntax colouring in GitLab). Tagged as 'OSLib-6_90-2'
Logs for RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-6_08 to RISC_OSLib-6_22-1-g4b14cbfe
Use "Resources:$...." not "Resources:..."
If the current directory is not it's root these are not equivalent. Version 6.09. Tagged as 'RISC_OSLib-6_09'
Add the single precision hyperbolic math routines to the stubs
Version 6.09. Not tagged
Fix for modff() yielding wrong results
Detail: modff() single precision function yielded wrong results for both fractional and integral part for most numbers because the wrong exponent bias was subtracted. Version 6.10. Tagged as 'RISC_OSLib-6_10'
[535] fminf(x,y) / fmaxf(x,y) corrupt result for equal non-zero parameters
Detail: fminf(x,y) / fmaxf(x,y) corrupted the result when x==y and x!=0.0 due to ANDing/ORRing a single precision register with the high word of a double precision register pair when fixing up signs for mixed +/- 0 parameters in an analogous fashion to fmax/fmin (which are correct). Version 6.11. Tagged as 'RISC_OSLib-6_11'
Cross-compilation support
Detail: * GNUmakefile: add translation of Makefile to GNU make / cross-compilation requirements (this component is too non-standard to make much use of the shared makefiles) * Makefile: comment out rules for objects that aren't used for any targets, for clarity; don't clean files that are never created * Various: change to using OS-agnostic filename path syntax * Various: ensure case matches for filename paths (don't assume host filing system is case-agnostic)
Auto-create empty directories
Detail: * Remove empty directories and have the Makefiles create them * Consolidate and complete .gitignore
Enable GitLab CI/CD
Detail: * Enable GitLab CI * Address issues identified by CI jobs, excluding those related to cppcheck * Enable GitLab CD for stubs (used implicitly when linker is invoked by cc) Version 6.12. Tagged as 'RISC_OSLib-6_12'
Add VFPSupport SWIs to swis.h
Version 6.12. Not tagged
Retire StrongARM build switch
Harvard caches are here to stay - can't conceive why we'd ever want to build binaries that didn't support them again. SASTMhatbroken is now conditional on the target (i.e. lowest supported) architecture being 4 or below - i.e. the workaround for the StrongARM bug isn't needed for ROMs targeting ARMv5 or above.
Add variants of _swi and _swix that take a va_list
These are typically useful for wrapper functions that want to do something before and/or after a SWI call, and which therefore need to pass a pointer to their own variadic arguments into the guts of _swi or _swix. The pairs of functions _swi and _vswi, and _swix and _vswix, are almost identical, differing only in argument marshalling. There being only two additional entries, I didn't think it was worth introducing a whole new library chunk. Instead, I've tacked them onto the end of chunk 2 (the basic clib functions). Note that this means that any applications that use these new entries will need to take responsibility for RMEnsuring this version of the SharedCLibrary module and softloading a newer one if necessary.
Reduce _swi/_swix stack usage
The (previously StrongARM-bracketed) code was overallocating stack space by 3 words in order to retain compatibility with the now-deleted dynamic code build variant. Version 6.13. Tagged as 'RISC_OSLib-6_13'
Tweak swis.h for older C standards
Prior to C18, you couldn't have duplicate typedefs (even if identical) so if you `#include` both `<stdio.h>` and `"swis.h"` the `typedef __va_list` conflicted if you specified `-c90` or `-c99`. (The header was already incompatible with `-pcc`.) Version 6.13. Not tagged
Update PickRoutineVariant to support chained variant blocks
Add C11/C18 stdatomic.h implementation
This implementation relies heavily on a new set of _kernel_atomic_* functions which implement all the atomic operations. Multiple different implementations of the functions are provided, to cater to all machines from ARMv2 to ARMv8. When targeting multiple CPU architectures, multiple variants will be compiled into the module, and the most appropriate variant will be selected at runtime when the client's stubs are filled in (using an extended version of the existing PickRoutineVariant system). Currently ROM clients will just use the variant for the oldest enabled architecture, to avoid the performance hit of runtime switching on every function call. The 40 new routines have been placed in a new library chunk (#6), so that old CLibs will properly reject any client that tries to use them, and to avoid ~500B of stubs bloat for programs that don't use them. Test & benchmark code is provided in the test/atomic folder.
Remove ARMv8 atomic routines
They need more optimisation before they're worth using over the ARMv7 routines; probably rewriting so that there are separate instances for barriers vs. non-barriers.
More flexible handling of atomics on pre-ARMv6K
For pre-ARMv6K, we generally have two sets of atomic routines available: * Fast routines which use a SWP spinlock, but are unsafe for use from interrupt handlers and the like * Safe routines which disable IRQs, but (in usermode) are much slower due to requiring SWI calls to enable/disable IRQs. Currently CLib decides which set of routines to use: modules get the slow & safe ones, while applications get the fast & unsafe ones. This change gives control of that choice to the program, by introducing the _kernel_init_flags variable. The stub code will (weakly) import this symbol and pass the value to CLib when calling the init SWI. CLib will then use the value to decide whether to fill the stubs with the safe or unsafe versions of the routines. With this change, the default is now to use the slow & safe routines, for both modules and applications. This is to ensure that code which is written/tested for ARMv6K+ machines won't run into unexpected issues when run on older machines (since the ARMv6K+ routines are safe for use from all execution contexts). The init flags are used to opt-in to the unsafe routines. Clients which are directly linked with CLib (ROM code, ANSILib) should be unaffected by this change, and will continue to use the safe routines, as before. Version 6.14. Tagged as 'RISC_OSLib-6_14'
CLib header updates
Detail: Sync the disc copies of the compiler's internal headers from cc 5.89. Add <stdalign.h> and <stdnoreturn.h> and <uchar.h> in support of C18. Now the compiler sets __STDC_VERSION__ appropriately on the nightly builds it is no longer necessary to use predefine 'DDE' to enable those additions. Version 6.15. Tagged as 'RISC_OSLib-6_15'
Fix capturing of registers in ErrorHandler
Back in RISCOS_Lib 5.35, a bug was introduced in ErrorHandler where it would try saving the registers to a garbage address for SCL builds where SASTMhatbroken is false. This bug has gone unnoticed until now because up until a few months ago, SASTMhatbroken was always true (commit 3b7d39bd in RISCOS_Lib 6.13). Move the offending line of code out of the SASTMhatbroken block so that register capturing will work correctly for all build configs. Fixes issue reported on the forums (tested with a ROM build on Pi 4): https://www.riscosopen.org/forum/forums/4/topics/17647 Version 6.16. Tagged as 'RISC_OSLib-6_16'
Remove side-effects of failed SWP detection
CheckIfSwpAvailable currently uses an error environment handler to detect the case where SWP isn't available. However there are a number of things the OS does before it invokes the error handler which could have unwanted effects - e.g. issuing Service_Error & ErrorV, clearing the hourglass, closing redirection file handles, and setting the CAO to point to the error handler. In particular the latter was found to cause the current disc image + PlingSystem to get fatally stuck on ARM2 machines - when Boot.Desktop runs any *Repeat command, application space was being shrunk to zero when Repeat calls Wimp_Initialise. Fix these problems by changing the SWP detection to directly hook on to the undefined instruction vector. See also https://www.riscosopen.org/forum/forums/4/topics/17688#posts-137994 Version 6.16. Not tagged
Don't test for LDREX then use LDREXB
Presence of LDREX does not imply presence of LDREXB. If LDREX is not available SWP was being used, so a word sized operation is appropriate. Version 6.16. Not tagged
Let clients receive gain and lose caret events
Detail: Add case labels for gain and lose caret events in rlib/win.c Admin: This is in support of Ticket #426; To plot its own caret Draw will need to receive these events. Version 6.17. Tagged as 'RISC_OSLib-6_17'
Update RISC OS Makefile to more closely match GNUmakefile
Make use of the $<, $^ and $@ automatic variables to simplify many rules, making the makefile easier to maintain and bringing it more in line with GNUmakefile. Replace the following Makefile variables with their GNUmakefile equivalents, including using the same techniques that GNUmakefile uses to generate/specify the values: * ANSI_OBJS -> ANSILIB_OBJS * ANSI_MOD_OBJS -> ANSILIBM_OBJS * CLIB_MOD_OBJS -> SHAREDCLIB_OBJS * ROM_OBJS -> ROMSHAREDRLIB_OBJS * RLIB_OBJS -> RISCOSLIB_OBJS * RLIB_MOD_OBJS -> RISCOSLIBM_OBJS Also adopt the use of STUBS_OBJS, ROMSCTUBS_OBJS, RSTUBS_OBJS and ROMSTUBS_OBJS to specify the stub object files.
Complain if the client stubs are larger than the module stubs
If the client stubs are larger than the module stubs (i.e. might be trying to use routines which don't exist in the shared library), the old behaviour was to fill the excess entries with branches to zero, which would cause an unexpected runtime error in the middle of program execution. (Except that for 32bit builds of CLib this logic was broken and it would fill the excess entries with routine addresses, most likely causing an undefined instruction abort) Change the behaviour so that instead of planting a ticking time-bomb in the running app, the CLib init SWI will instead exit with a far more useful "Shared C Library out of date" error.
Remove unused _lib_init_table symbol
Attempting to use this symbol would be dangerous, since AFAIK the order in which the linker will place the different Stub$$Init sections is undefined. Just stick to using Stub$$Init$$Base to locate the start of the stubs, like we've been doing for the past 20 years (CLib 5.41)
Lib_Init SWI comment correction
On return, R0 will be updated with the high end of workspace (R2 from input)
Annotate the library chunks with when they were extended
Update stubs to not use dangerous library chunk entries
There are a few times over the years where existing library chunks have been extended by adding new entries onto the end. However this is an unsafe thing to do, because older CLibs which don't support those entries will do one of the following: * Fill the entries with branches to random addresses (pre-5.37) * Fill the entries with branches to zero (5.37+, APCS-R) * Fill the entries with random addresses within CLib (5.37+, APCS-32) To solve these problems, I've decided to go with the safest approach possible: * Add new library chunks containing all of the entries which had been added to existing chunks * For the stubs, the troublesome entries are only available via the new chunks, and the chunks they used to be in have been shrunk to their original sizes * For compatibility with programs built with old stubs, the CLib module supports the use of the troublesome entries by both the new chunks and their original chunks * Updated the "Add new entries ..." text in the chunk entry files to discourage people from adding new entries Programs built using these new stubs, which use the troublesome entries, will require the user to install a new CLib which supports the new chunks. Running against an old CLib will fail safely with an "Unknown library chunk" error. The new chunks are set up as follows: * Chunk 7 contains the C99 float/double math functions (63 entries) * Chunk 8 contains the C99 complex math functions (50 entries) * Chunk 9 contains the other functions which have been moved around (e.g. large file support, aligned allocs, _vswi) (24 entries) Version 6.18. Tagged as 'RISC_OSLib-6_18'
Restore RISC OS makefile
Revert commit 9d96a7e0; it looks like it adversely affected the link order of the many C$$data sections, causing the library chunks in the ROM version of CLib to have incorrect size values for the static data areas. (This also suggests that if GNUmakefile was used to build a ROM version of CLib it could be broken in the same way) Re-apply the relevant bits from 87239378 so that the new stub files are still included. Future commits will hopefully restore the safe bits of 9d96a7e0 (and hopefully make things more robust) Fixes issue reported on the forums with the ROM version of CLib rejecting all ROM C modules (and probably all RAM C modules): https://www.riscosopen.org/forum/forums/4/topics/17736 Version 6.19. Tagged as 'RISC_OSLib-6_19'
Reorganise exit routes
Detail: armsys.c, hostsys.h, clib/cl_entries.s, clib/cl_body.s * Move the init flags from stdlib.c into an _init_flags struct. * Move the finalisation function from stdlib.c into armsys namespace. * Save a word of workspace by moving the error recursion flag there too. clib/cl_spare.s * Spare workspace added stdlib.c * Library finalisation and flags moved to armsys.c
Static data clarification
* Delete clib.s.cl_statics, it appears to be unused and only serves to confuse the already complex static data handling! * Added a couple of asserts that - at least in the stubs, if not in the initialisers in the shared library - ensure the kernel and C static data areas don't diverge from the magic fixed values documented in the PRM. * Remove misleading comment in clib.s.clibdata. * Add simple documentation file describing how the statics work.
Clarifications
Detail: Add some documentation on the language descriptor and its use, following recent investigations.
Work around free failure on finalisation if module re-entered
During module finalisation, we call fclose(), and one of the things this does if to attempt to free() a pointer from the application heap. For reasons not entirely clear, the pointer is not valid if the module entry point has been called more than once, and this results in free() failing noisily. However, it's also obvious that we shouldn't be attempting to manipulate the application heap from module finalisation, as we may not even have our own application slot mapped in at the time. So the workaround presented here is to skip the free() if we are not in USR mode.
Enhancements to atexit and friends
The number of atexit callbacks you can register is now essentially unlimited. For module clients, the vector chain of callbacks is stored in the RMA, as was the previous fixed-size static buffer. Add a library atexit() function now that we have lots of room for one, and move _terminateio() call into it. This means that IO is properly cleaned up after every USR mode module entry, if it happens more than once to the same instantiation. Function pointers in the vector chain are now zeroed when called, which means the pointers won't be accidentally re-called after subsequent USR mode module entries. Note that there can now be holes left if USR mode and SVC mode atexit() calls were intermingled and one or more USR mode entry has completed. Neither atexit() nor at_quick_exit() callbacks are now issued after a call to abort().
Add support for (C++) static constructor and destructor functions
Later versions of the toolchain move on from the CFront model for static object construction and destruction (which used symbols called '__link' in object files which the linker manipulated into a linked list pointed at by the symbol '__head'). Now, global or file-scope constructors are indicated by function pointers emitted into the area C$$ctorvec, with the function bodies being emitted into the area C$$ctor. The C library supports the calling of global or file-scope destructors in two ways: either they can be registered using atexit() calls from within the corresponding constructor (these are issued first) or function pointers can be provided in the area C$$dtorvec (with function bodies in the area C$$dtor). Function- or block-scope static-storage-duration destructors are a bit more complicated, since they are only constructed when the block in which they are declared comes into scope at run-time. For a module client, this means that they may be constructed in either USR or SVC mode. However, the destruction must be deferred until module finalisation in SVC mode, since there is no way for a USR mode constructor to know whether the scope will later be re-entered from SVC mode. For this scenario, atexit() will not suffice, and new entry _clib_at_destruction() must be used. (It is also valid to use this entry from global or file-scope constructors.) We add this 1 new function to cl_entry5. This chunk has not yet appeared in a stable release, nor included in a DDE release. Annotate these events too. The locations of the C$$ctor, C$$ctorvec, C$$dtor and C$$dtorvec areas are not established until client link time, so to convey this information to the shared C library, we need to extend its interface with the stubs. This is done by adding 8 additional words onto the end of the language description struct. Furthermore, so that this information is passed from the shared library kernel to the language-specific part (clib), the InitProc() entry in the language description struct is now passed a pointer to that struct. Similarly, _clib_initialise(), which previously took no arguments, now takes that pointer (but performs sanity checks on it and its contents, so that it can confidently handle old stubs for which the value of a1 is undefined). Add test programs to exercise the new functionality, without requiring the use of a C++ compiler.
RMEnsure a newer SharedCLib in stubs if they detect ctors/dtors
Also fix what looked like an accidental commit of code that caused any errors detected during the RMEnsures to be suppressed!
Reinstate cppcheck job
This is possible because the CI job has been reworked to exclude pre-existing diagnostics. Also remove definition of WHITESPACE_WHITELIST since newer versions of the whitespace job also exclude pre-existing diagnostics automatically. Version 6.20. Tagged as 'RISC_OSLib-6_20'
CLib header updates
Detail: stdio.h - rename unused member to 'clib' namespace to avoid clash with widely used macro __unused. Admin: Disc copy of the change featured with cc 5.91.
Avoid zero-page read for assert() by clients compiled to C90
This was detected by cppcheck's nullPointerRedundantCheck diagnostic. Version 6.20. Not tagged
Format txt paragraphs regardless of starting point
Change rlib (by extension, !Edit) to behave as the User Guide describes for the 'Edit->Format text' menu entry: "Place the cursor anywhere in the paragraph, choose Edit/Format text, type in a value for width and press Return" Previously, that only worked if at or between paragraph starts. Now, for any start point, Ctrl-F6 steps through the text and reformats it. Version 6.21. Tagged as 'RISC_OSLib-6_21'
Extra flag bit defines for rlib
Detail: wimp.h: Add 6 missing window flags, and flags for Wimp_SetColour. bbc.h: Add VDU 0. Version 6.21. Not tagged
Add test code for long command line handling
The LongCmd program will try running itself with various lengths of command line, checking for any cases where the command line becomes corrupt or where a crash occurs. The 'test' script will run this test. LongCmdM is a module version of the LongCmd sub-process; LongCmd can run it in order to test handling of long command lines by runnable modules. The 'testm' script will run this test. LongCmdU is a utility for generating long command lines and injecting them into DDEUtils, so that the next LongCmd / LongCmdM instance which runs will consume them. This allows testing of the case where nothing's stopping application space from growing (testu script). Currently the tests fail due to lack of stack/buffer limit checking in _kernel_init.
Move O_ArgString initialisation to a subroutine
Initialise O_ArgString later on
Move O_ArgString initialisation to near the end of _kernel_init, so that a future version can call _kernel_malloc / _kernel_alloc in order to allocate more memory if the arg string is too long for the root stack chunk
Update CopyArgString to allocate a buffer if necessary
If the root stack chunk is too small to contain the argument string, CopyArgString will now use _kernel_malloc / _kernel_alloc to allocate a buffer which is large enough to hold it.
Improve safety of stack unwinding
* Update default_unwind_handler to reject any frame with a PC below &8000 * Update _backtrace to perform some of the same safety checks as default_unwind_handler and revert to simpler output if the frame looks dodgy
DDEUtils command line etiquette fixes
In system(), try harder to avoid leaving DDEUtils with an unwanted command line, to avoid the next DDEUtils-aware program getting confused if it starts up and finds it.
Improve kallocExtendsWS poking
In the stubs, improve the comments around the poking of _kernel_kallocExtendsWS to make it clear that 0x115 is (and always has been?) the location of the variable, and add an assert to make sure that we'll catch any cases where the variable accidentally moves. Version 6.22. Tagged as 'RISC_OSLib-6_22'
Add NVMeFS SWI numbers to swis.h
Version 6.22. Not tagged
Logs for RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_69 to TCPIPLibs-5_78
Add numeric service name support to getaddrinfo()
Useful extra flag AI_NUMERICSERV was added in 2005 https://svnweb.freebsd.org/base?view=revision&revision=140908 as defined in RFC3493. Merge those changes to our copy. Tested with an application which used a numeric (rather than named in InetDBase:Services) service. Version 5.70. Tagged as 'TCPIPLibs-5_70'
Header file update
The change in TCPIPLibs-5_69 updated sys/time.h from FreeBSD revision 18397, but omitted the changes to the sys/stat.h header file which was in the same commit. Merge those too and bring it up to RCS revision 8.12 from 1995. Version 5.71. Tagged as 'TCPIPLibs-5_71'
LibraryDoc update
Detail: * De-emphasise COMPAT_INET4 as it is due to be removed * Warn about about "errno.h" with ANSI header of the same name Version 5.71. Not tagged
Part merge from FreeBSD 12.3 for disc based components
Detail: In support of the updated disc based utilities residing in !Internet, selected updates from the corresponding FreeBSD 12.3 headers are required to build. *headers* Makefile - now exports sctp and capsicum headers. arpa/inet.h - partial merge to add in_addr_t type. arpa/tftp.h - partial merge to update error codes. unistd.h - correction to usleep prototype. net/ethernet.h - partial merge to add ether_XtoY prototypes. net/if.h - partial merge to add LINK_STATEs and if_announcemsghdr. net/if_types.h - fully merged. net/route.h - partial merge of RTV_ and RTM_ defines. netinet/in.h - partial merge of IPPROTO defines. netinet/ip_icmp.h - partial merge of ICMP subreason codes. netinet/sctp.h - new file. netinet/sctp_constants.h - new file. netinet/sctp_header.h - new file. netinet/sctp_uio.h - new file. sys/capsicum.h - dummy header (privilege model doesn't apply on RISC OS). sys/cdefs.h - noop FBSDID for source files with that tag present. sys/param.h - partial merge to add nitems array counting macro. sys/socket.h - partial merge of CMSG defines and extra SO options. sys/sockio.h - partial merge of extra SIOC options. sys/sysctl.h - partial merge of CTLTYPE/CTL_SYSCTL lists, constify pointers. sys/time.h - partial merge of operations on timespecs and more CLOCK sources. sys/types.h - partial merge of clockid_t for CLOCK sources and 64b kvars. sys/uio.h - correction to iov_base prototype. *inetlib* ether_addr.c - new file, ether_XtoY functions. gethnad.c - updated to set h_errno correctly. getifaddrs.c - moved here from UnixLib to avoid circular link dependency. getnainfo.c - updated to FreeBSD r167121 to add AF_LINK support. sysctlbyna.c - constify pointers. inetlib.h - constify sysctl pointers. *socklib* socklib.h - constify sysctl pointers. *unixlib* alloc.c - new file, reallocf function. clockgtime.c - new file, clock_gettime function (based on gtimeofday.c). err.c - fix to verr to use variadic sprintf, add errc and warnc families. herror.c - extended to define hstrerror function for resolver errors. kvm.c - add support for 64b kvars. sleep.c - add an implementation of usleep by calling on select. strlcat.c - new file, strlcat function. strlcpy.c - new file, strlcpy function. strtonum.c - new file, strtonum function. trimdomain.c - new file, trimdomain function. unixlib.h - added new functions, as above. Note the long long variables must be hidden in pcc mode (for building rpclib). Admin: Submission for TCP/IP bounty.
Add minimalist (text only) libxo implementation
Detail: libxo is a printf-like library used by some command line tools which then have the option to write output in various textual forms. In the case of the disc based utilities only a limited subset of the library functionality is required, and this implementation provides only text generation from the various xo formatting/command strings. Its RISC OS name is xolib, and like UnixLib this is intended to assist in porting command line tools that use libxo, rather than being a full implementation. xo.h - the complete header file from Juniper Networks textonly.c - a text only implementation for RISC OS command line tools Admin: Submission for TCP/IP bounty. Version 5.72. Tagged as 'TCPIPLibs-5_72'
Administrative changes
Detail: * Reorder !ExportAll - inetlib requires socklib.h and unixlib.h to already have been exported in order to build * Vestige of RISC iX (sys/arm/fp.h) removed * Assume long filenames available to eliminate a rename during export_hdrs Admin: Derived from work by Ben Avison.
Switchover rpclib to Inet5
Detail: Updated to support Internet 5 style structures, and now built that way too. Admin: Submission for TCP/IP bounty. Version 5.73. Tagged as 'TCPIPLibs-5_73'
Change ownership of exported headers, restore filenames
Detail: Filenames restored where previously truncated at 10 characters. Have rpclib export its own headers, as socklib/xolib/inetlib/unixlib do. Don't export TCPIPLibs:rpcsvc any more (unused).
Bulk import of RPCSRC-4.0 from Solaris sources
Admin: These are the unmodified sources, to create a point to diff against, they will not build yet.
Replace Sun RPC licence with a 3-clause BSD licence (part 1)
With the explicit permission of Sun Microsystems in 2009. Citation: https://git.freebsd.org/src.git commit 2e322d37
Replace Sun RPC licence with a 3-clause BSD licence (part 2)
With the explicit permission of Wim Coekaerts, Senior Vice President, Linux and Virtualization at Oracle Corporation. Citations: * rpclib/rpcsvc/x/rnusers, rpclib/rpcsvc/x/yp: https://git.freebsd.org/src.git commit 8785398f * other files: https://spot.livejournal.com/315640.html
Replace Sun RPC licence with a 4-clause BSD licence (part 3)
This is the last remaining bit of code using the Sun licence, so remove it from the LICENSE file too. Citation: https://opensource.apple.com/source/portmap/portmap-3/portmap.c.auto.html
Clarify licence of rquota.x
This file is distributed as part of OpenSolaris under the CDDL licence. Citation: https://github.com/illumos/illumos-gate.git revision 7c478bd9
Remove demo programs
These are unused, and the licensing conditions on them are unclear.
Attribute and relicence rpclib/etc/c/getopt
The original author appears to have been William LeFebvre, and the code has been relicensed by him under the 3-clause BSD licence. Citation: https://fossies.org/linux/top/getopt.c
Port of rpclib to RISC OS
Detail: Reapply changes made for rpclib to build & run on RISC OS. Admin: Submission for TCP/IP bounty. Version 5.74. Tagged as 'TCPIPLibs-5_74'
Cross-compilable
Detail: * Makefiles rewritten to use shared makefiles * socklib/mkveneers now adapts between prefix/suffix filename extensions * fix a few cases of incorrect-case include filenames * consolidate and complete `.gitignore` * enable GitLab CI * cppcheck infinite-inclusion issue resolved by rewriting headers at export time for cross-compilation builds * added missing licence header to test/c/timeo Version 5.75. Tagged as 'TCPIPLibs-5_75'
Add __min_size to sys/cdefs.h
Version 5.76. Tagged as 'TCPIPLibs-5_76'
Retire obsolete or unused headers
Detail: Remove internal use svcdebug.h (moved to Internet component). Remove 4x headers, RISC iX vestiges of podule ("eXpansion Card Bus") support. Admin: Submission for TCP/IP bounty. Version 5.77. Tagged as 'TCPIPLibs-5_77'
Socket library updated from FreeBSD 12.4
Detail: recv5 and send5 updated from libc/net/recv.c and send.c respectively. Prototypes in socklib.h changed to use socklen_t or size_t as applicable in socket.h changed to avoid mismatch. During a transition period, and in order to avoid pointer mismatch errors at compile time for code written using 'int', the type socklen_t is currently a signed type. Admin: Submission for TCP/IP bounty.
Retire obsolete Xerox NS address family
Detail: This mirrors a change made in FreeBSD SVN revision 111926, 05-Mar-2003. Update library documentation to remove references to it too. Admin: Submission for TCP/IP bounty. Version 5.78. Tagged as 'TCPIPLibs-5_78'
Logs for RiscOS/Sources/Lib/UnicodeLib from Unicode-0_63-1-gf47d7578 to Unicode-0_63-2-g1b8b080f
Use HostApp makefile fragment
Also fix !MkClean to strip dependencies from mkunictype/mk Version 0.63. Not tagged
Logs for RiscOS/Sources/Lib/mbedTLS from mbedTLS-2_20 to mbedTLS-2_33
Library update
Detail: This is release 2.16.9 direct from ARM, with customisations to ro_config.h/timing.c/entropy_poll.c/net_sockets.[c|h] to port to RISC OS. Version 2.21. Tagged as 'mbedTLS-2_21'
Make a NULL URL bind to INADDR_ANY and initialise nbio flag
Detail: Changed mbedtls_net_bind to accept a NULL url which will bind the socket to INADDR_ANY. Changed mbedtls_net_init to initialise nbio to blocking (0) - previously uninitialised. Admin: Tested with demonstration server on ARMX6. Version 2.22. Tagged as 'mbedTLS-2_22'
Library update
Detail: This is release 2.16.10 direct from ARM, with customisations to ro_config.h/timing.c/entropy_poll.c/net_sockets.[c|h] to port to RISC OS. Version 2.23. Tagged as 'mbedTLS-2_23'
Library update
Detail: This is release 2.16.11 direct from ARM, with customisations to ro_config.h/timing.c/entropy_poll.c/net_sockets.[c|h] to port to RISC OS. Version 2.24. Tagged as 'mbedTLS-2_24'
Library update
Detail: Includes fix for CVE-2021-44732. This is release 2.16.12 direct from ARM, with customisations to ro_config.h/timing.c/entropy_poll.c/net_sockets.[c|h] to port to RISC OS. Version 2.25. Tagged as 'mbedTLS-2_25'
Library update
Detail: This is release 2.28.0 direct from ARM, with customisations to * ro_config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * crypto_platform.h (config path) * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS.
Library update
Detail: Includes fix for CVE-2022-35409. This is release 2.28.1 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.26. Tagged as 'mbedTLS-2_26'
Library update
Detail: This is release 2.28.2 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.27. Tagged as 'mbedTLS-2_27'
Update AWK script to run with POSIX names
Detail: When processing the mbedTLS version string for CMHG select between h.ro_config and ro_config.h naming. Enable CI job. Version 2.28. Tagged as 'mbedTLS-2_28'
Library update (intermediate)
Detail: This is an intermediate update from ARM with changes prior to a mechanical re-style of the entire library. It represents the changes from 2.28.2 to 1 commit before the style change.
Switch to the new code style
Detail: This is the result of running mbedtls-rewrite-branch-style.py on the library. ARM made this change to the 2.28.x branch on 11-Jan-2023.
Library update
Detail: This is release 2.28.3 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.29. Tagged as 'mbedTLS-2_29'
Library update
Detail: This is release 2.28.4 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.30. Tagged as 'mbedTLS-2_30'
Library update
Detail: Includes fix for CVE-2023-43615. This is release 2.28.5 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.31. Tagged as 'mbedTLS-2_31'
Switch to dual licensing model
Detail: ARM now offer mbedTLS in dual Apache-2.0 OR GPL-2.0-or-later, which results in all the heading blocks being updated (with no code change). We continue to select the Apache-2.0 option for RISC OS, as before.
Library update
Detail: Includes fix for CVE-2024-23170 and CVE-2024-23775. This is release 2.28.7 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.32. Tagged as 'mbedTLS-2_32'
Library update
Detail: Includes fix for CVE-2024-28960. This is release 2.28.8 direct from ARM, with customisations to * ro_[crypto_]config.h * timing.c * entropy_poll.c * net_sockets.[c|h] * platform.h/debug.h (_MSC_VER is unset) to port to RISC OS. Version 2.33. Tagged as 'mbedTLS-2_33'
Logs for RiscOS/Sources/Lib/remotedb from remotedb-0_12 to remotedb-0_12-1-gc06162f1
Drop COMPAT_INET4 support
Detail: This component is only used with DebugLib, and all uses of ${DEBUGLIB} are linked with ${NET5LIBS}, so this combination wouldn't have worked anyway. Use agnostic TCPIPLibs: include path, so CI works. Version 0.12. Not tagged
Logs for RiscOS/Sources/Lib/zlib from zlib-1_20-1-ga1e54231 to zlib-1_22
Tabify Makefile
Replace spaces in Makefile with tabs. Version 1.20. Not tagged
Update to zlib 1.2.5.3, plus modifications
Detail: zlib 1.2.5.3 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.5.3 - c/example - Deleted Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface Testing: - Added a BASIC test of the ZLib_GZ* SWIs - Noted how to drive minigzip (now in test\ in the official distribution) - c/minigzip moved with test code - Add dummy gzdopen() to c/modlib to satisfy minigzip
Update to zlib 1.2.6.1, plus modifications
Detail: zlib 1.2.6.1 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.6.1 Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface
Update to zlib 1.2.7.3, plus modifications
Detail: zlib 1.2.7.3 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.7.3 Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface
Update to zlib 1.2.8, plus modifications
Detail: zlib 1.2.8 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.8 Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface
Update to zlib 1.2.12, plus modifications
Detail: zlib 1.2.12 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.12 Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface
Add extra functions from zlib 1.2.12
4 new SWIs corresponding to uncompress2(), [in|de]flateGetDictionary(), deflatePending(). 2 functions which are just wrappers on read and write. Version 1.21. Tagged as 'zlib-1_21'
Update to zlib 1.2.13, plus modifications
Detail: zlib 1.2.13 update: - README, c/*, h/*, doc/* - Updated to zlib 1.2.13 Changes compared to the official zlib distribution: - h/zutil - Use OS_CODE of 0x0d for RISC OS, as decreed by rfc1952 - c/gzlib, c/gzread, c/gzwrite, h/zconf, h/zlib, h/gzguts - Reintroduced ability to use ISO file access functions instead of POSIX ones, to allow the library to be easily used with Norcroft. Added gzgetheader() and gzputheader() functions to allow easy read/write of gzip file headers via the gzip file interface Version 1.22. Tagged as 'zlib-1_22'
Logs for RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_41 to Freeway-0_42
Adjust capitalisation for UpCall
Detail: Fix capitalisation of UpCall.h for case-sensitive filesystems Version 0.41. Not tagged
Drop COMPAT_INET4 support
Detail: Fill in the sockaddr_in address length, migrate msghdr initialisation, cater for varying ifconf entry size, don't hardwire the IFNAMSZ. Use agnostic TCPIPLibs: include path, so CI works. Admin: Submission for TCP/IP bounty. Version 0.42. Tagged as 'Freeway-0_42'
Logs for RiscOS/Sources/Networking/AUN/Net from Net-6_26 to Net-6_27
Drop COMPAT_INET4 support
Detail: Fill in a missed sockaddr length in gwroute/startup.c, cater for varying ifconf entry size. Admin: Use agnostic TCPIPLibs: include path so CI works. Submission for TCP/IP bounty. Version 6.27. Tagged as 'Net-6_27'
Logs for RiscOS/Sources/Networking/DHCP from DHCP-0_27 to DHCP-0_27-1
Build fix when CmdHelp=None
Detail: Messages is still required even if the OS doesn't support command help. Version 0.27. Not tagged
Logs for RiscOS/Sources/Networking/Econet from Econet-5_80-1-g691d0361 to Econet-5_81
Run time discover IO controller address
Rather than always using &3200000, try to look up IOC/IOMD's address. Pull out common FIQ downgrade accessing code as a macro. Tested on an A5000 (OS 3.10) with 0243,020 NIC and SA Risc PC (OS 5.28) with AEH60 NIC. Version 5.81. Tagged as 'Econet-5_81'
Logs for RiscOS/Sources/Networking/Ethernet/EtherCPSW from EtherCPSW-0_05 to EtherCPSW-0_06-1
Use OS_Memory 65
Instead of manually poking around in the page tables, use OS_Memory 65 for logical -> physical address translation of the controller address. Version 0.06. Tagged as 'EtherCPSW-0_06'
Rewrite rules for AutoSense disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install` and `standalone` targets are redefined after `CModule` is included, so they will be affected. Stop using Module_ComponentName in the CMHG help/title strings. Version 0.06. Not tagged
Logs for RiscOS/Sources/Networking/Ethernet/EtherGENET from EtherGENET-0_02 to EtherGENET-0_04
Fix typo in token name
Ref: https://www.riscosopen.org/forum/forums/4/topics/15846 Version 0.03. Tagged as 'EtherGENET-0_03'
Rewrite rules for AutoSense disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install` and `standalone` targets are redefined after `CModule` is included, so they will be affected. Stop using Module_ComponentName in the CMHG help/title strings. Version 0.03. Not tagged
Debug fix
Add back & populate the ctrlnum member so the debug makes sense.
Minor MAC side changes
bcmgenet.c: Updated to NetBSD's revision 1.7 bcmgenetvar.h: Updated to NetBSD's revision 1.2 miivar.h: Updated to NetBSD's revision 1.71
Add support for KSZ9131 PHY
Rev 1.1 Pi 400's use a different PHY due to chip shortages, but this wasn't working because some of the vendor specific LED control register writes at 0x1C unfortunately landed on vendor specific registers which force enabled MDI-X. * Record the PHY id and switch on this at the points where it's not using the generic IEEE register definitions. * In mii_mediachg() don't advertise 1000bT half duplex which isn't supported, and set the advertise flags before starting an autonegotiate. * In mii_tick() mangle the KSZ9131 link status register into the equivalent layout as the AUXSTS register on the BCM54213 so it can share reporting code. Tested on a rev 1.1 Pi 400, rev 1.0 Pi 400, and straight Pi 4B. Version 0.04. Tagged as 'EtherGENET-0_04'
Logs for RiscOS/Sources/Networking/Ethernet/EtherK from EtherK-0_25 to EtherK-0_25-1
Rewrite rules for AutoSense disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install` and `standalone` targets are redefined after `CModule` is included, so they will be affected. Stop using Module_ComponentName in the CMHG help/title strings. Version 0.25. Not tagged
Logs for RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_42 to EtherUSB-0_44
Adjust capitalisation for UpCall
Detail: Fix capitalisation of UpCall.h for case-sensitive filesystems Version 0.42. Not tagged
Rewrite rules for AutoSense disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install` and `standalone` targets are redefined after `CModule` is included, so they will be affected. Version 0.42. Not tagged
Update CDC backend to complete ECM support
Change to use NetBSD's header for the CDC definitions
Improvements to CDC-ECM to increase range of supported devices
Detail: Allow class CDC-ECM and those whose top level class is 0.0:0 too. Open an interrupt pipe in order to get status notifications, use this to populate the device abilities/status more accurately. When querying the MAC address, parse the language table before requesting the string. MTU correctly calculated. Log improvements to help debugging.
Automatically set configuration of certain CDC devices
Detail: Some communication devices have several configurations, including a CDC one which is not the default selected. Add these to the the products match mechanism (using table entries, or system variables) so that EtherUSB can automatically select the correct configuration when encountered. The configuration change is made on a callback when trying to open the CDC device, which on first pass returns a failure error. This is because at the time USBDriver sends the 'Attached' service call we can't issue star commands which affect the USB stack without the risk of a reentrancy problem. Once idle the callback fires and sets the configuration and the new descriptors can be read safely for a second pass at opening. If EtherUSB is subsequently killed, restore the default device configuration so the system is back in the state in which it was found - this avoids a hang with devices which don't start up in the CDC configuration by default. Admin: Add a rule for debug to account for makefile changes in BuildSys 7.91.
Fix for race condition with ShareFS on some CDC adapters at 1Gbps
Detail: ShareFS (using UDP) could get in a race condition when pushing files > 4kB to a remote share. The transmit buffer was large enough to send multiple frames without checking for any receives, so the acknowledge from the remote share was lost. Retry logic within ShareFS concluded the frames should be resent, with the same result - no ack - followed by resending. The computer would consume 100% of CPU time retrying until the cable was unplugged. Protocols using TCP were not affected due to window size negotiation inherent in that connection type. Reduce the transmit buffer size to 2048 bytes (+1 for a workaround for DeviceFS 0.69 and earlier) to match 3 of the other EtherUSB backends. This gives chance to check the receive queue between transmitted frames. Use symbolic names for arguments to usb_control(). Increase the module version number reported to InetSetup by the AutoSense utility. This ensures that if a module with CDC support is softloaded and configured then on restart the RMEnsure in Choices:Internet.Startup will not leave the user without an interface if an older copy is present in ROM. Admin: Submission for USB bounty. Version 0.43. Tagged as 'EtherUSB-0_43'
Fix for NULL pointer dereference if options string is also NULL
In products_match() not all code paths assign 'options' to an empty string, so it is possible that it's still NULL by the time it reaches the backend. Version 0.44. Tagged as 'EtherUSB-0_44'
Logs for RiscOS/Sources/Networking/Ethernet/EtherY from EtherY-0_64 to EtherY-0_64-1
Rewrite rules for AutoSense disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `install` and `standalone` targets are redefined after `CModule` is included, so they will be affected. Stop using Module_ComponentName in the CMHG help/title strings. Version 0.64. Not tagged
Logs for RiscOS/Sources/Networking/Fetchers/AcornSSL from AcornSSL-1_06 to AcornSSL-1_06-2-g0c417946
Adjust capitalisation for UpCall
Detail: Fix capitalisation of UpCall.h for case-sensitive filesystems Version 1.06. Not tagged
Case correction to CMHG include
Detail: mbedtls -> mbedTLS Use agnostic TCPIPLibs: include path, so CI works. Version 1.06. Not tagged
Logs for RiscOS/Sources/Networking/Fetchers/HTTP from HTTP-1_04 to HTTP-1_09
Add ability to register user defined methods
Detail: Two new SWIs (see Docs/AddMethds) allow a client to register a method which AcornHTTP will then handle on its behalf based on some flags. In many cases the method can just follow a GET or PUT in operation. Version 1.05. Tagged as 'HTTP-1_05'
Allow for leading zero in chunk lengths for chunked transfer encoding
Remove test for first character of chunk length being '0' as that means the fetch fails if the chunk length is non-zero with a leading zero. Version 1.06. Tagged as 'HTTP-1_06'
Correction for discarding of the last cookie in the queue
After the for loop last->next will have been NULL and the call to cookie_unlink_cookie expects the first parameter to be a pointer to the variable where the head of the queue is stored, not a pointer to the cookie to be discarded. Version 1.07. Tagged as 'HTTP-1_07'
Correct the counting of stored and queued cookies
Tallies of the stored and queued cookies are maintained in total_cookies and unread_cookies. Both have errors in their calculation. The queued cookie count continued going up even when MAX_COOKIES_IN_QUEUE was reached and older cookies were being discarded. Also errors in the counting and the condition meant that two more cookies were queued than defined in MAX_COOKIES_IN_QUEUE. The total_cookies count was reduced when a cookie was discarded from the queue via HTTP_ConsumeCookie because destroy_cookie is used for freeing a cookie structure in both situations. The count was also reduced in two situations where new cookies were not added to the store because they were invalid. One case was HTTP_AddCookie if an invalid parameter was given, and the other case was in creating a cookie via an HTTP response. To solve this the total_cookies decrement operation is moved from destroy_cookie to remove_cookie_from_list.
Correct the handling of paths read from cookie file or HTTP_AddCookie
Any path read from the cookie file, and any path parameter to HTTP_AddCookie was processed as though it was actually a URI path, as is used for the default value for the path if no Path attribute appears in the Set-Cookie header. The effect was that each time the cookie file was read, the last slash of the path and any following material was discarded, meaning the paths gradually got shorter until they disappeared altogether.
Correct domain-matching of received cookies
The check_domain_valid function failed to match the full target domain if the domain did not start with a full-stop. The last two characters of the initial element of the name were not matched. There was also no check that the match took us up to a full-stop in the request's hostname. There was a similar bug in domain-matching where the domain DID begin with a full-stop, as strstr was used for matching without anchoring the match to the starts of the respective strings. Note, this code is still largely conforming with the obsolete RFC2109 and will need to be amended for RFC6265 compliance.
Correct checks on domain and path when selecting cookies to send with request
Firstly, despite comments throughout the code about how the cookies were sorted in reverse order of the path in order to automagically output them in the correct order, the cookies were not being stored in reverse order! Corrected. Corrected stripping the file element from end of request path, which managed to reduce '/abc/index.html' to '/abc/' but failed to reduce '/index.html' to '/'. Ensure that matching cookie path as a substring of request path only matches if the substring reaches the next '/' delimiter. Match the reversed domain name at the start of the request domain, rather than anywhere in the string. (More work needed here for RFC 6265 compliance.) Added a little extra debugging to make it easier to see what's going on.
Remove support for obsolete Cookie2 and Set-Cookie2 headers
The Cookie2 header was being added to every request. Removed. (Note that the header will be suppressed even if the client manually passes it as an extra header in the request.) Support for the Set-Cookie2 response header has been dropped from mainstream browsers for many years. Removed.
Remove support for cookie port restrictions
In order to work towards RFC 6265 support, it is desirable to simplify the code by removing features which were made obsolete in RFC 6265, which was published in April 2011.
Removed support for cookie comments
As a step towards RFC6265 compliance, removed support for Comment attribute in order to simplify code. There was never much functional code relating to comments, which were stored but not made accessible to the client.
Remove support for cookie version attribute
The Version attribute was deprecated in RFC6265 in April 2011 and is no longer widely supported (if it ever was). Removing support simplifies the code which will make it easier to maintain and enhance.
Allow .foo.bar as valid cookie domain for host foo.bar
Domain matching will have to work differently when we move to RFC 6265 because the leading full-stop would be removed. This commit fixes a fault with the old-style cookie support.
Further correction for domain matching
The old-style cookie support stores the cookie domains with a leading full stop (e.g. .riscosopen.org) but if a cookie was created with HTTP_AddCookie you could get round this restriction. A cookie with domain riscosop.org created that way would have matched the host domain www.riscosopen.org. This change fixes that. This code will need to be revisited to implement RFC 6265 because of host-only matching and stripping the leading full stops, but for the moment this removes a domain-matching bug in the old-style cookie support. Version 1.08. Tagged as 'HTTP-1_08'
Drop COMPAT_INET4 support
Detail: Fill in the sockaddr_in address length. Use agnostic TCPIPLibs: include path, case correct CMHG, so CI works. Admin: Submission for TCP/IP bounty. Version 1.09. Tagged as 'HTTP-1_09'
Logs for RiscOS/Sources/Networking/Fetchers/URL from URL-0_58-1-gda0a9f61 to URL-0_58-2-gfd089d34
Fixup exports on case sensitive FS
Case correct the CMHG file so the URL.h header export works, needed by several other fetchers. Remove ancient CMHG 5.16 support. Drop unnecessary COMPAT_INET4 switch (only links with InetLib). Use agnostic TCPIPLibs: include path, so CI works. Version 0.58. Not tagged
Logs for RiscOS/Sources/Networking/Modem/Dialler from Dialler-0_30 to Dialler-0_31
File cleanups
Detail: Delete build time created dirs. Rename taskobey files back to full length.
Makefile recreated from fragments
Detail: Minor C99 issues addressed, use central headers for OS_ constants where a clash arises, remove various duplicated includes. Rename CMHG file to use the one derived from the component name. Refer to AsmUtils path directly. Enable CI: * Case correct the exported Dialler.h * Override TARGET * Add copyright blocks to test BASIC scripts Admin: Built old/new blockdriver/DeviceFS debug/nodebug rom/standalone combinations. Submission for TCP/IP bounty. Version 0.31. Tagged as 'Dialler-0_31'
Logs for RiscOS/Sources/Networking/Modem/PPP from PPP-1_46 to PPP-1_48
Fix for abort in FileSwitch using blockdriver interface
When the 'combo' module was created in PPP-1_45 a couple of places wrongly converted the #ifndef BLOCKDRIVER and translated it to be enabled when the DeviceType was != 0 (ie. blockdriver being used). As a result, when using the blockdriver FileSwitch gets called to do various IOCtl calls with a null handle, leading to a data abort. Swap the (now run time) condition back to how they were at compile time in PPP-1_44. Version 1.47. Tagged as 'PPP-1_47'
Enable CI
Detail: Use agnostic TCPIPLibs: include path, case correct header files, so CI works. Reimport The Serial Port drivers as ObjAsm style source rather than binaries. Consolidate gitignore files.
Drop COMPAT_INET4 support
Detail: Fill in the sockaddr_in address length, cater for varying ifconf entry size. Be explicit about selecting "sys/errno.h" versus <errno.h>. Admin: Submission for TCP/IP bounty. Version 1.48. Tagged as 'PPP-1_48'
Logs for RiscOS/Sources/Networking/NFS from NFS-3_27 to NFS-3_29
Use more constants from central headers
Add support for extension lookup via MimeMap
Remove support for the NFS private list of extensions mapping to RISC OS types in InetDBase:extensions, use the MimeMap instead. On reading: * If the NFS name has a ",ttt" extension take that * Otherwise, if the NFS name has a '.' near the end, try to look that up in the MimeMap * Otherwise, if neither succeeds choose Text or UNIX Ex based on the file's x attribute On writing: * If the RISC OS name has a "/extn" style extension, try to find it in the MimeMap * If successful and that type matches the RISC OS type, don't append a ",ttt" extension * Otherwise, if Text or UNIX Ex don't append an extension * Otherwise, append ",ttt" so the type isn't lost Tested on FreeBSD 13.0-RELEASE.
Preserve full load/exec for untyped files
Rather than turning any untyped file into ",lxa" suffix (and in the reverse direction giving the base address of the Kernel back), support ",llllllll-xxxxxxxx" style suffixes like RPCEmu does in order to preserve the full load and execution addresses. ChangeInfo.c/pathmunge.c: Extra code to parse the suffix, and simplification of existing suffix checkers. Cache.c: Spot load/exec style suffixes too. Version 3.28. Tagged as 'NFS-3_28'
Drop COMPAT_INET4 support
Admin: Requires corresponding change in rpclib. Submission for TCP/IP bounty. Version 3.29. Tagged as 'NFS-3_29'
Logs for RiscOS/Sources/Networking/NetTime from NetTime-0_44 to NetTime-0_45
Drop COMPAT_INET4 support
Detail: !Internet has ensured Internet 5.02 (or later) since as far back as CVS history goes, so no need to support here. Add the sockaddr length field as required. Use agnostic TCPIPLibs: include path, so CI works. Admin: Submission for TCP/IP bounty. Version 0.45. Tagged as 'NetTime-0_45'
Logs for RiscOS/Sources/Networking/Omni/Apps/Omni from Omni-2_32 to Omni-2_34
Makefile recreated from fragments
* Use CModule for the bulk of the work, then a sub-makefile for the resources copying * Remove the custom code trying to work out a country path, so Omni follows the same layout as a other applications * Delete unused HOn/HOff Version 2.33. Tagged as 'Omni-2_33'
Drop COMPAT_INET4 support
Detail: Drop COMPAT_INET4 switch, not needed as OmniClient only links with InetLib. Change the requirements for the Startup script to want Internet 5 or later. Use Push/Pull so single word stack operations turn into LDR/STR. Enable CI job. Admin: Submission for TCP/IP bounty. Version 2.34. Tagged as 'Omni-2_34'
Logs for RiscOS/Sources/Networking/Omni/Protocols/OmniAccess from Access-0_17 to Access-0_17-1-g49be75ee
Adjust capitalisation for UpCall
Detail: Fix capitalisation of UpCall.h for case-sensitive filesystems Version 0.17. Not tagged
Logs for RiscOS/Sources/Networking/Omni/Protocols/OmniLanManFS from OmniLanManFS-2_66 to OmniLanManFS-2_70
Option to enable hidden files to be seen in LanManFS
Details: Allow name mode to select visibility of hidden files to be switched on or off. The default remains off. Resources/UK/CmdHelp, cmhg/LanMan_MH, c/LanMan and c/SMB modified. SMB_Delete, SMB_Rename and SMB_GetAttibs in c/SMB modified to work with switch. Admin: Tested with ARMX6 connected to Armbian. Version 2.67. Tagged as 'OmniLanManFS-2_67'
Preserve full load/exec for untyped files
Rather than turning any untyped file into ",lxa" suffix (and in the reverse direction giving the base address of the Kernel back), support ",llllllll-xxxxxxxx" style suffixes like RPCEmu does in order to preserve the full load and execution addresses. Xlate.c: Extra code to parse the suffix, and simplification of existing suffix checkers. CoreFn.c/Xlate.h: Need to pass on the exec address too for when creating new files via Xlt_AddROType. Makefile/LanMan_MH: Case of CMHG file changed to match sources. Version 2.68. Tagged as 'OmniLanManFS-2_68'
Drop COMPAT_INET4 support
Detail: Fill in the sockaddr_in address length. Use agnostic TCPIPLibs: include path, so CI works. Admin: Submission for TCP/IP bounty. Version 2.69. Tagged as 'OmniLanManFS-2_69'
[613] Use server timezone in timestamp conversion
Detail: The SMB protocol requires the timesstamp to be in the server's timezone. The serverTimeZone returned by SMB_Negotiates used to convert the RISC OS timestamp to SMB timestamp. Tested by reading the filestamp of a saved file on Windows, Linux and RISC OS. Tested with AMU. Compiling from a Linux server AMU now sees mods to files made from other OS as newer. Note: Connecting to a local server in the winter in the UK will not exhibit the timestamp problem as the server timezone will be 0. Version 2.70. Tagged as 'OmniLanManFS-2_70'
Logs for RiscOS/Sources/Networking/Omni/Protocols/OmniNFS from OmniNFS-0_73 to OmniNFS-0_74
Drop COMPAT_INET4 support
Detail: Fill in the sockaddr_in address length, cater for varying ifconf entry size. Use agnostic TCPIPLibs: include path, so CI works. Admin: Submission for TCP/IP bounty. Version 0.74. Tagged as 'OmniNFS-0_74'
Logs for RiscOS/Sources/Networking/URI from URI-0_27 to URI-0_27-1
Fix installing exported library
Version 0.27. Not tagged
Logs for RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_18 to MakePSFont-1_19-1-gb762edd9
Use "Resources:$...." not "Resources:..."
If the current directory is not it's root these are not equivalent. Version 1.19. Tagged as 'MakePSFont-1_19'
Correct reformatting of one header file
During the import to Git from CVS in 2019, some files (including the one affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents. This has no functional effect in this case, but it is still desirable to restore the formatting to its original style. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> hdr/MakePSFont which will only update your working tree and the index. Version 1.19. Not tagged
Logs for RiscOS/Sources/Printing/Modules/PDModules from PDModules-4_64 to PDModules-4_65
Reduce JPEG to greys when Level 2 requests printing in grey
Of the 4 possible combinations Printer JPEG Colour Colour OK to send original JPEG Colour Grey OK to send original JPEG Grey Colour <= Not OK Grey Grey OK to send original JPEG we must take care not to send the original colour JPEG to a grey printer. Doing so would previously have been masked because the toner would print it grey on paper, but with much more PostScript printing being used to distill to Adobe PDF it's obvious to see the mistake. For simplicity, when this (rare) case is encountered just use the Level 1 policy of converting the JPEG to an 8bpp greyscale sprite. This requires an extra operator (dubbed 'J8G' in Printer Manager's prologue.
Fix for errors trying to print 4k/64k/RGB sprites in grey
The change in PDModules-4_63 handled output in colour, but didn't exercise the code path taken when greyscale PostScript is requested. This failed in two ways: 1. "Bad X dpi/Y dpi" due to attempting to change a SpriteType_RISCOS5 by manipulating bits 27-31 directly (the DPI values are encoded differently for type 15) 2. "Bad colour translation table" due to always supplying SpriteExtend with a plain '32K.' colour translation table to lookup the greys in when an extended '32K+' is needed TranSprite.s: Make the table based on the source sprite mode word first, then map that to an equivalent DPI grey. Private.s: New utility routine medusa_same_dpi_g256_mode to get the DPI bits right. Sprite.s: Rework sprite_make32Ktable to allow it to generate 4k/32k/64k tables and to generate '32K+' format when appropriate. Shuffle the sprite_mapNNN routines up so they're within ADR range. Tested printing a Draw file with all true colour combinations of test sprites, then converting with Adobe Distiller. Version 4.65. Tagged as 'PDModules-4_65'
Logs for RiscOS/Sources/Printing/PDumpers from PDumpers-1_46 to PDumpers-1_46-1
Rewrite rules for exports
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `export_hdrs` target is redefined after `AAsmModule` is included, so it will be affected. Also take the opportunity to remove the overrides of clean rules, and missing definition of XWIPE. Version 1.46. Not tagged
Logs for RiscOS/Sources/Printing/PrintDefs from PrintDefs-0_52 to PrintDefs-0_53
Update path of QMS printer definitions in USBMap
Version 0.53. Tagged as 'PrintDefs-0_53'
Logs for RiscOS/Sources/Printing/PrinterManager from Manager-1_89-1-g58f5a005 to PrinterManager-1_91
Add J8G operator to Level 2 prologue
In support of a corresponding fix in PDriverPS 4.65, add a new operator which consumes an 8bpp greyscale image which has been pre-converted from JPEG (in a similar manner to Level 1) so that a colour JPEG printed at Level 2 to a monochrome printer comes out grey rather than in colour. Version 1.90. Tagged as 'PrinterManager-1_90'
Add generic paper sizes for A0 and A1
Version 1.91. Tagged as 'PrinterManager-1_91'
Logs for RiscOS/Sources/Programmer/Debugger from Debugger-2_07-1-g4ffc3ea2 to Debugger-2_08
Fix VLD2/VST2 "single lane" disassembly
Register increments were off-by-one, resulting in nonsense like "VLD2.8 {D0[3],D0[3]},[R0]"
Remove CSDB architecture version warnings
Although CSDB was only codified at around the time that ARMv8.4 was introduced, there aren't any architecture version restrictions placed on it in the ARMv8 ARM, and the encoding was even added to a new edition of the ARMv7 ARM, also without any architecture version restrictions. For ordinary instructions this would feel a lot like a documentation error, but since CSDB is a barrier instruction which fits inside a NOP-like address space (MSR which doesn't write to any PSR fields), and it was introduced as part of Arm's Spectre/Meltdown mitigations, it's likely that Arm did their homework and confirmed that the encoding has the correct behaviour on all (licensed) implementations. The ARMv7 ARM only goes back to ARMv4, but it's likely that older CPUs also implement CSDB correctly, by virtue of the fact that they'll be too old to be doing any speculative execution. With the above in mind, it should be safe to remove our "ARMv8.4 or later" warning from the disassembly. Version 2.08. Tagged as 'Debugger-2_08'
Logs for RiscOS/Sources/Programmer/FrontEnd from FrontEnd-1_34 to FrontEnd-1_35
Be explicit about which flex is being used
Detail: * There's a flex.h in both rlib and tboxlibs, we want the superset in tboxlibs, consistently use that one throughout. * Enable GitLab CI.
Remove redundant SWI handler
Detail: * The SWIs were moved to DDEUtils in 1990, but the decode left here, except it silently returns no error for all unknown SWIs. * Use OS_Module reasons from central ModHand.h header. * Use CMHG to generate the (correct) function prototypes. Admin: The SWI base reservation is needed for the Wimp messages, which are still used. Version 1.35. Tagged as 'FrontEnd-1_35'
Logs for RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_91 to HdrSrc-3_05
Adjust capitalisation for UpCall
Detail: Makefile: Export to "h.UpCall" rather than "h.Upcall"; this change won't affect any builds, but if anybody includes "Global/Upcall.h" then cross-compilation fails on case-sensitive filesystems since GNUmakefile uses "UpCall". Admin: Untested Version 2.92. Tagged as 'HdrSrc-2_92'
Resync with allocations database
* Various new public filetypes * New keyboard layout Version 2.93. Tagged as 'HdrSrc-2_93'
Add 32k HAL size option
For those HALs which are << 64k this would allow 32k of space reclaim, giving the full progression 32->64->96->128 to choose from. Version 2.94. Tagged as 'HdrSrc-2_94'
ARMVv4 architecture switch correction
Looks like a copy/paste of the ARMVH switch, with the effect that [Support|No]ARMVv4 were both unset false (should be impossible) and [Support|No]ARMVH cross wired as the ARMVv4 value instead. Version 2.95. Tagged as 'HdrSrc-2_95'
Suppress warnings when UAL is in use
Detail: APCS Return macro changed when UAL is in use to remove warnings. Push and Pull in Hdr:Macros also changed for UAL. PullAPCS and single register push/pull substitute Push and Pull macros. Version 2.96. Tagged as 'HdrSrc-2_96'
Support Machine=CortexA53
Version 2.97. Tagged as 'HdrSrc-2_97'
Define STREX result codes
Add STREX_succeeded & STREX_failed to Hdr.Global.CPU.Generic32, so components don't have to define their own versions Version 2.98. Tagged as 'HdrSrc-2_98'
Resync with allocations database
Version 2.99. Tagged as 'HdrSrc-2_99'
Only include Hdr:Machine.<Machine> from Hdr:CPU.Arch if not already
The logic behind this is to permit the calling source file to override which `Machine` type is used, by `GET`ting a different one first. This can be useful for a component that can only be built for one `Machine` type (for example, many IOMD-only driver modules). Version 2.99. Not tagged
Resync with allocations database
Version 3.00. Tagged as 'HdrSrc-3_00'
Resync with allocations database
Version 3.01. Tagged as 'HdrSrc-3_01'
Add FramADR macro
While poking around in FileSwitch I spotted that (a) it currently isn't using the FramLDR/FramSTR macros (instead manually calculating offsets from Proc_LocalStack), and (b) in a few places it was using `ADD dest, sp, #Proc_LocalStack+n*4` to get the address of an argument. Add a FramADR macro which can be used to perform that task, so that everything is ready for switching FileSwitch over to using the Fram macros. Version 3.02. Tagged as 'HdrSrc-3_02'
Resync with allocations database
Version 3.03. Tagged as 'HdrSrc-3_03'
Re-add Lazarus (Bush IBX set-top box) support
Extend hdr/CPU/Arch to set up the corresponding CPU type flags. Also changes to hdr/Machine/Machine to recognise the "Lazarus" machine type as an IOMD variant using the HAL (because ARM7500FE is a SoC with an FPA-enabled ARM7 with VIDC and IOMD on a single chip). Version 3.04. Tagged as 'HdrSrc-3_04'
Resync with allocations database
Version 3.05. Tagged as 'HdrSrc-3_05'
Logs for RiscOS/Sources/Programmer/HostFS from HostFS-0_02-4_2_2_1 to HostFS-0_04
Cross-compilable
Detail: * Rewrite makefile to use shared makefiles (requires splitting off into sub-makefiles because there are both app and module targets) * Alter to support assembly with objasm, not just aasm * Enable GitLab CI * Consolidate and complete .gitignore Admin: Requires BuildSys-7_58 Version 0.02 (HAL.2). Tagged as 'HostFS-0_02-HAL_2'
Cross-compilable
Detail: * Rewrite makefile to use shared makefiles (requires splitting off into sub-makefiles because there are both app and module targets) * Alter to support assembly with objasm, not just aasm * Enable GitLab CI * Consolidate and complete .gitignore Admin: Requires BuildSys-7_58 Version 0.03. Tagged as 'HostFS-0_03'
Merge branch 'HAL'
* The target `TML_HostFS` continues to build the driver for the TML podule, as was the case previously on branch `master`. * The target `TML_HostFS` from the `HAL` branch, which is a veneer to the `DADebug` module, can now be built by using the new target `DA_HostFS`. * The target `HAL_HostFS` builds the variant that uses the HAL DebugTX API, as was the case previously on branch `HAL`. Version 0.04. Tagged as 'HostFS-0_04'
Logs for RiscOS/Sources/Programmer/RTSupport from RTSupport-0_17-1 to RTSupport-0_18
Extra protection against async aborts
Version 0.14 changed the default PSR for new threads to disable async aborts, to match how most (all?) machines run the main RISC OS thread. However there are a few other places in the code which set the PSR to constant values and could allow async aborts to slip in. Track down the places where constant PSR values are being used and make sure the A bit gets set, to avoid async aborts becoming enabled. Version 0.18. Tagged as 'RTSupport-0_18'
Logs for RiscOS/Sources/Programmer/Squash from Squash-0_30 to Squash-0_31
Cross-compilable
* Change to OS-agnostic filename specs in GET/LNK statements * Consolidate and complete .gitignore files * Enable GitLab CI
Move workspace size handling into cssr/zssr files
Create library target
By calling the makefile file with `COMPONENT=SquashLib`, we can now build the core (de)compression source files into a library suitable for linking directly with an executable.
Portability fixes
* The (de)compression code relied on `char` being unsigned. Now make this explicit, so it will still work with toolchains/platforms where this is not the case. * Bitfield members `input_caller` and `output_caller` were signed and therefore couldn't match various enum values (flagged by a gcc warning when cross-compiling; may indicate a long-standing bug). Version 0.31. Tagged as 'Squash-0_31'
Logs for RiscOS/Sources/Programmer/ZLibMod from ZLibMod-0_04 to ZLibMod-0_05
Add extra SWIs from zlib 1.2.12
4 new SWIs corresponding to uncompress2(), [in|de]flateGetDictionary(), deflatePending(). Version 0.05. Tagged as 'ZLibMod-0_05'
Logs for RiscOS/Sources/SystemRes/Configure from Configure-1_92 to Configure-1_93
[550] Reorder the backdrop thumbnail sprites
Sprites updated to match the order now provided on disc, and lined up radio icons. Version 1.93. Tagged as 'Configure-1_93'
Logs for RiscOS/Sources/SystemRes/Configure2/Installer from Installer-0_17 to Installer-0_17-1-g972ad672
Disable header export
There are no headers to export so disable header export to prevent export phase failing with an error. Tested in Disc build, no change to output. Version 0.17. Not tagged
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/Config2PluginxxxxMerge from xxxxMerge-2_09 to Config2PluginxxxxMerge-2_10
Support merging of Choices when they're relocated
Intercept merges destined for !Boot.Choices and replace the destination path with one derived from Choices$Dir. In the default case this is a no-op, but if Choices are relocated to a !Choices app we want to retarget those. Version 2.10. Tagged as 'Config2PluginxxxxMerge-2_10'
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/FilrSetup from FilrSetup-0_28-1-gc155611c to FilrSetup-0_29
Add option to hide special OS applications
This is the corresponding change to Filer-2_49 to allow the "Hide OS files" option to be configured. Fade the option if Filer < 2.49. Also fade the Filer_DClickHold option if Filer < 2.21, since this plugin is provided in RO500Hook but that option post dates RISC OS 5.00. Version 0.29. Tagged as 'FilrSetup-0_29'
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/PinSetup from PinSetup-0_25-1-gdfcc9e52 to PinSetup-0_26
Save custom image relative to boot if possible
To dodge an error if the boot drive is renamed, transform paths to user's custom images to be relative to Boot$Path if possible. This matches the behaviour of the Boot setup plug-in and Pinboard. Also rationalise the generation of *Backdrop commands (2 places). Version 0.26. Tagged as 'PinSetup-0_26'
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/ScrnSetup from ScrnSetup-0_44-1-gc21b8e31 to ScrnSetup-0_45
Squash a few warnings
Remove the C_WARNINGS override from the makefile, and put those extern objects into header files, or mark static as appropriate.
[559] Don't allow selection of an empty MDF
If ScreenModes returns an error to LoadModeFile, report the error then revert to the "Auto" monitor type, rather than leaving a duff MDF in the monitor type selection. Version 0.45. Tagged as 'ScrnSetup-0_45'
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/ThemeSetup from ThemeSetup-0_05 to ThemeSetup-0_07
Propagate theme button colours
If a theme designer uses any of the 6 button colour switches in the CoFlags obey file, propagate those to the theme setup in Choices. If not specified, set the defaults to the values the Wimp has always used. If an old Wimp is in use, just stick with the limited switches (as unknown switches are faulted). Version 0.06. Tagged as 'ThemeSetup-0_06'
Fix minor load/set glitches
Give OS_GBPB a larger buffer to enumerate the themes, and post filter those that are too long for the gadget (rather than bailing out with a buffer overflow error). Correct a discrepancy between the gadget buffer size and #define. Correct the fallback button well colour (when not given explicitly) to not be light blue, due to WimpVisualFlags wanting RGB values rather than palette entries. See https://www.riscosopen.org/forum/forums/1/topics/16369?page=3#posts-125961 and https://www.riscosopen.org/forum/forums/4/topics/16741 and https://www.riscosopen.org/forum/forums/5/topics/16708#posts-125707 Version 0.07. Tagged as 'ThemeSetup-0_07'
Logs for RiscOS/Sources/SystemRes/Configure2/PlugIns/TimeSetup from TimeSetup-0_10 to TimeSetup-0_11
[508] Changes to Russian timezones
Russia moved to permanent winter time from permanent summer time, so all timezones move back 1h. Version 0.11. Tagged as 'TimeSetup-0_11'
Logs for RiscOS/Sources/SystemRes/DesktopBoot from DesktopBoot-1_30 to DesktopBoot-1_37
Remove compile time COMPAT_INET4 support
The only part of !Boot which is TCPIPLibs related is BootVars. However, BootVars is run before we get chance to load a newer Internet module, so must run time select which to support. Fortunately the member wanted from the returned union from socketioctl is in the same place in both BSD4.3 and BSD4.4 so all that's needed is to select the appropriate command. Also, BootVar's local makefile rewritten to use shared makefiles.
Allow for !Scrap & !Choices in the root of the boot drive
During BootRun, see if !Scrap is in the root of the boot drive. During SetChoices, see if !Choices is in the root of the boot drive. Version 1.31. Tagged as 'DesktopBoot-1_31'
Only look back within 1 major version
In order to reduce dependencies between the various parts of !Boot, only look back in the current major version, no earlier. Edit references to ROxxxHook.[Apps|Res|Boot] and Utilities.xxx accordingly. Delete unused RO200Hook.
Always kill off BorderUtils after loading new Wimp
The check on Boot$OSVersion was bogus; if a Wimp > 3.16 got loaded kill it. Version 1.32. Tagged as 'DesktopBoot-1_32'
Integrate check for optional ROM softload
Recognise that some people wish to use softloaded ROMs for testing, by having BootRun check for this. If nothing is there, boot proceeds unchanged. This solves a handful of minor issues compared with having it in PreDesk * Backing up your Choices is ~4MB smaller * No longer relies on the number of prefixed ! to ensure it's alphabetically early * Because PreDesk runs files before directories, the SetUpNet step would come first and waste time obtaining a DHCP lease, only to then reboot * Moves a read-only resource out of Choices The check is after PreDesktop (obey) is run so that any path macros are set up. Docs updated. Version 1.33. Tagged as 'DesktopBoot-1_33'
Import of RO530Hook
Version 1.34. Tagged as 'DesktopBoot-1_34'
Import of source code for RMFind support utility.
32-bit compatible.
Build changes to use objasm.
Use Push/Pull in RMFind
Relocate RMFind to Library
To avoid a !Boot packaging dependency, since this utility is generally useful and not particularly related to !Internet, add RMFind to the library. Also: remove the install_FreePool rule (ModuleDB refers to its source directly). Version 1.35. Tagged as 'DesktopBoot-1_35'
Updated the IfThere utility to add header/footer mark
Version 1.36. Tagged as 'DesktopBoot-1_36'
Declare a BootFirmware path for hardware drivers to use
Add missing STM{}^ patches for Econet
Take advantage of the fact that RISC OS 3.70 and later definitely aren't using an ARM2 to claw back 2 words of NOP-after-mode-change. These 2 words can be used to split out the STM{}^ to avoid the StrongARM bug mentioned. Version 1.37. Tagged as 'DesktopBoot-1_37'
Logs for RiscOS/Sources/SystemRes/InetRes from InetRes-5_78 to InetRes-6_07
Updated trusted root CA data
Version 5.79. Tagged as 'InetRes-5_79'
Updated trusted root CA data
Version 5.80. Tagged as 'InetRes-5_80'
Updated trusted root CA data
Version 5.81. Tagged as 'InetRes-5_81'
Updated trusted root CA data
Version 5.82. Tagged as 'InetRes-5_82'
Perform sanity tests on certificate data
Others are possible (and may be added later) but these would have caught the recent bad update. This job is placed in the static_analysis stage, so will slot neatly in when we add the common CI jobs. Version 5.83. Tagged as 'InetRes-5_83'
Updated trusted root CA data
Version 5.84. Tagged as 'InetRes-5_84'
Updated trusted root CA data
Version 5.85. Tagged as 'InetRes-5_85'
Updated trusted root CA data
Version 5.86. Tagged as 'InetRes-5_86'
Drop arp from emergency utils
The emergency utils carry the minimal set to configure an interface. ARP isn't needed for that, nor is it referred to by ResourcesFS' Internet.!Run file, so drop it to save ~10k of ROM space. Version 5.87. Tagged as 'InetRes-5_87'
Updated trusted root CA data
Version 5.88. Tagged as 'InetRes-5_88'
Updated trusted root CA data
Version 5.89. Tagged as 'InetRes-5_89'
Updated trusted root CA data
Version 5.90. Tagged as 'InetRes-5_90'
Updated trusted root CA data
Version 5.91. Tagged as 'InetRes-5_91'
Updated trusted root CA data
Version 5.92. Tagged as 'InetRes-5_92'
Updated trusted root CA data
Version 5.93. Tagged as 'InetRes-5_93'
Updated trusted root CA data
Version 5.94. Tagged as 'InetRes-5_94'
Add MimeMap entries for ISO and CUE files
Version 5.95. Tagged as 'InetRes-5_95'
Updated trusted root CA data
Version 5.96. Tagged as 'InetRes-5_96'
Remove redundant tools
Detail: Map-MBone, MRInfo and MTrace multicast tools are obsolete. These were removed in FreeBSD 7 because DVMRP is considered legacy (and doesn't support IPv6), and replaced by PIM-SM. Admin: Update utils Makefile to use the shared makefile rules. Remove unused 'X' which is now part of BootCommands.
Bulk import of disc tools from FreeBSD 12.3 sources
Admin: These are the unmodified sources, to create a point to diff against, they will not build yet.
Port of ARP to RISC OS
Admin: Requires xolib (in TCPIPLibs)
Port of gethost to RISC OS
Port of ifconfig to RISC OS
Update of IfRConfig
Detail: Expand table of IFFBITS names. Minor C99 syntax changes.
Port of inetstat to RISC OS
Admin: Requires xolib (in TCPIPLibs)
Update of ipvars
Detail: Remove COMPAT_INET4 support. Add response to -help.
Port of md5 to RISC OS
Port of ping to RISC OS
Port of route to RISC OS
Update of showstat
Detail: Makefile rewritten.
Port of sysctl to RISC OS
Port of tftp to RISC OS
Port of traceroute to RISC OS
No longer install AUNMap to !Internet
Detail: AUNMap is now managed by InetSetup-0_61 and picked up from Choices, so the copy here is an unused duplicate. Version 5.97. Tagged as 'InetRes-5_97'
Add MimeMap entries for Z-Code and Blorb files
Version 5.98. Tagged as 'InetRes-5_98'
Updates to disc based tools in !Internet
Detail: Updates to ifconfig, inetstat, ping, sysctl integrated from FreeBSD 12.4 Includes fix for CVE-2022-23093. Version 5.99. Tagged as 'InetRes-5_99'
Updated trusted root CA data
Version 6.00. Tagged as 'InetRes-6_00'
Add MimeMap entries for MP4 and MKV files
Remove RMFind duplicate
Detail: This utility is now to be found in the DesktopBoot component. Version 6.01. Tagged as 'InetRes-6_01'
Remove definition of __min_size
Version 6.02. Tagged as 'InetRes-6_02'
Updated trusted root CA data
Version 6.03. Tagged as 'InetRes-6_03'
Rewrite rules for disc install
BuildSys 7.91 changes how top-level phony rules are overridden. In this component, the `standalone` target in the `Sources/utils` makefile is redefined after `AAsmModule` is included, so it will be affected. Rewrite the rules so that they will continue to work the same (at least for native builds) both before and after BuildSys is updated. Version 6.03. Not tagged
Updated trusted root CA data
Version 6.04. Tagged as 'InetRes-6_04'
Updated trusted root CA data
Version 6.05. Tagged as 'InetRes-6_05'
Updated trusted root CA data
Version 6.06. Tagged as 'InetRes-6_06'
Update MimeMap with more audio formats
Version 6.06. Not tagged
Backfill MIME types for recent filetype allocations
Intersect the contents of Hdr:FileTypes post 2015 with the IANA MIME type allocations, for those entries which are missing. Those being: * GEDCOM (HdrSrc 2.75) * YAML (HdrSrc 2.90) * JPEG2000, WebP (HdrSrc 2.93) * DICOM, HDR, DWG, IGES, STL (HdrSrc 3.01) Additionally: * List .vcard as an alternative extension for &ACF * Promote image/bmp to the official IANA section now it's recognised by them * Correct the hyphens to dots in the WBMP vendor type Version 6.07. Tagged as 'InetRes-6_07'
Logs for RiscOS/Sources/SystemRes/InetSetup from InetSetup-0_60 to InetSetup-0_63
Relocate AUNMap to Choices
User editable AUNMap now lives in Choices, created from Blanks if absent. Remove forever out of date reference to !Internet version from Blanks/User. Version 0.61. Tagged as 'InetSetup-0_61'
[566] Fix for unticking 'Try name server too' option
Adjust the logic so that if the section containing Set Inet$Resolvers exists at all then we will tick 'Try name server too', so that it doesn't become unticked if the nameserver boxes are left empty, as they would be when DHCP provides these. Version 0.62. Tagged as 'InetSetup-0_62'
[594] Select application sprite based on theme
Add the Morris4 and Ursula sprites recovered from historical versions of this component, select between them based in Wimp$IconTheme. Version 0.63. Tagged as 'InetSetup-0_63'
Logs for RiscOS/Sources/SystemRes/LoadWimp from LoadWimp-0_12 to LoadWimp-0_14
Resources updated from Wimp-5_84
4 new tokens have been added since the last update, and 1 revised. Version 0.13. Tagged as 'LoadWimp-0_13'
Sync title bar middle sprites with the Wimp copy
The background fill of tbarmid[t|b][22] was changed to grey #2 in Wimp-3_99o, update these four to match. Otherwise, if you happen to use *ToolSprites this set, all the title bars are bleached out almost white. Version 0.14. Tagged as 'LoadWimp-0_14'
Logs for RiscOS/Sources/SystemRes/System from System-1_01 to System-1_07
Import of ABCLib 4.21
Detail: Corrections to the encoding of some FPA opcodes. Version 1.02. Tagged as 'System-1_02'
Remove SerialUtils binary
Now installed from SerialUtils component, since BuildSys-7_66. Version 1.03. Tagged as 'System-1_03'
Import of ABCLib 5.00
Detail: Add run time support for VFP Version 1.04. Tagged as 'System-1_04'
Import of ABCLib 5.01
Detail: Workaround library workspace corruption with old client apps Version 1.05. Tagged as 'System-1_05'
Update CLib & CallASWI RMEnsures
Stub reorganisation in CLib 6.18/6.19 means that old programs which have been rebuilt and linked against new stubs may require the user to be running CLib 6.18+. So increase the CLib RMEnsure to 6.19 to make sure this new version of CLib is loaded early on in the boot sequence. CallASWI RMEnsure has also been increased to the current version (0.20), since there have been a few important bug fixes and feature additions since the previously ensured version (0.09). CLib RMEnsure update fixes issue reported on forums with current disc image failing to boot correctly on non-bleeding-edge ROMs: https://www.riscosopen.org/forum/forums/11/topics/17774 Version 1.06. Tagged as 'System-1_06'
Correct corruption of one tokenised BASIC file
During the import to Git from CVS in 2019, some files (including the one affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents (if you interpret it as ASCII text). In a tokenised BASIC file like this one, this is a syntax error. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> Jurassic/MakeOSVer,ffb which will only update your working tree and the index. Version 1.06. Not tagged
Remove ThreeTen binary
Admin: Now built from sources in RiscOS/Sources/Toolbox/310Support. Version 1.07. Tagged as 'System-1_07'
Logs for RiscOS/Sources/SystemRes/ThemeDefs from ThemeDefs-0_11 to ThemeDefs-0_12
[564] Fix for absent RamFS icon on RISC OS 3
An old (version < 1.19) Switcher is patched when a theme is loaded in order to make the switcher icon name distinct. However, using *RMFaster to get a RAM copy to patch caused a problem that it now appears late enough in the module list that it's after all the resident filers and so never gets the Service_StartFiler call and so the machinery to restart RamFS' filer front end is ineffectual. Fix this by instead using OS_Module 10 to insert the patched copy. This keeps the module list order, and so when the service call goes round Filer's task handle is successfully captured. Tested on RISC OS 3.60. Version 0.12. Tagged as 'ThemeDefs-0_12'
Logs for RiscOS/Sources/SystemRes/Unicode from Unicode-0_35-1 to Unicode-0_35-1-1-g648c68f8
Use HostApp makefile fragment
Version 0.35. Not tagged
Logs for RiscOS/Sources/SystemRes/UserGuide from UserGuide-0_02 to UserGuide-0_03
Updated StarComms information
Admin: From community feedback plus a sweep of new command allocations since the previous edition. Version 0.03. Tagged as 'UserGuide-0_03'
Logs for RiscOS/Sources/Toolbox/ToolboxLib from ToolboxLib-1_18 to ToolboxLib-1_21
Add missing methods and flags
Detail: ColourDbox - GetHelpMessage/SetHelpMessage methods added Iconbar - 4 extra flags added Menu - 2 extra flags added Scale - min/max structure members switched to match tboxlibint and module Admin: Omissions discovered during User Interface Toolbox manual update. Version 1.19. Tagged as 'ToolboxLib-1_19'
Make tboxlibint path explicit in #includes
This allows <Lib$Dir>.tboxlibint to be removed from eventlib's command line include path. Version 1.20. Tagged as 'ToolboxLib-1_20'
Correct reformatting of one documentation file
During the import to Git from CVS in 2019, some files (including the one affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents. This has no functional effect in this case, but it is still desirable to restore the formatting to its original style. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> toolboxlib/docs/MakeGen which will only update your working tree and the index. Version 1.20. Not tagged
Export headers and veneers on behalf of TabsGadget and TreeView
Version 1.21. Tagged as 'ToolboxLib-1_21'
Logs for RiscOS/Sources/Toolbox/tboxlib from Common-0_26-1 to tboxlib-0_29
Add more ColourPicker message definitions
Detail: Added definitions for Message_ColourPickerColourChanged. Added definitions for ResetColourRequest. Version 0.27. Tagged as 'tboxlib-0_27'
Make all #includes relative to the including file
This allows <Lib$Dir>.tboxlibint to be removed from our command line include path. Henceforth, clients of this library also won't need to put it (or C:tboxlibint) in their command line include paths either. It also means that when building the library, only local copies of header files are used (as opposed to a mixture of local and exported copies, as previously). Version 0.28. Tagged as 'tboxlib-0_28'
Call memory allocation functions in matched pairs
When client modules are paired with a Toolbox that doesn't support the Toolbox_Memory SWI the mem functions fall back to using calloc, free, and a local implementation of realloc via OS_Module 13. These variants are also used by Toolbox itself for allocations prior to being linked into the module chain. However, the CLib now allocates extra to record private information behind the allocation so mem must either call calloc/free/realloc *or* OS_Module 6/7/13, not a mixture of the two. Since realloc from a module is broken in the CLib built into RISC OS 3.10, we opt to call OS_Module 6/7 to avoid needing to consider that bug. Version 0.29. Tagged as 'tboxlib-0_29'
Logs for RiscOS/Sources/Utilities/HForm from HForm-2_76 to HForm-2_78
Added support for formatting NVMe drives
Detail: Extra prompt for filing system (N)VMeFS, and similar drive selection logic based on other similar filing systems already present in HForm. UK resources updated accordingly.
Improve input selection method for filing system
Detail: Rather than select from an increasing list of one letter abbreviations, give the user the long form name to choose from with the cursor keys. Remove logic that selected SCSIFS over ADFS, since HForm-2_76 there's a warning against formatting the main harddisc which is what that was trying to minimise the chance of happening. Version 2.77. Tagged as 'HForm-2_77'
Query the drive name/serial from NVMeFS
Detail: Use NVMeDriver_ControllerInfo if possible rather than having the user guess which drive is about to be formatted from the drive number alone. Suppress the FS selection step if there's only 1 FS available. Version 2.78. Tagged as 'HForm-2_78'
Logs for RiscOS/Sources/Utilities/Patches/PatchesPatch from Patch-1_38 to PatchesPatch-1_39
Fix for misclassifying valid uncompressed AIFs
UnSqueeze was only checking for old school "BLNV 0" in the decompressor field, and so on encountering "MOV R0,R0" would report 'Input file is not a valid AIF run image' rather than the correct 'Input file is not squeezed' error. Version 1.39. Tagged as 'PatchesPatch-1_39'
Logs for RiscOS/Sources/Video/Render/Colours from Colours-1_95 to Colours-1_97
Use HostApp makefile fragment
Version 1.95. Not tagged
Enable default palette substitution
Detail: When output is switched to a sprite, but the sprite has no palette, substitute a default one. This mirrors a change made in RISC OS Select for ColourTrans 1.73. Admin: In support of Paint bounty work. Version 1.96. Tagged as 'Colours-1_96'
Correct reformatting of two source files
During the import to Git from CVS in 2019, some files (including the ones affected here) were accidentally reformatted, on the assumption that they were Makefiles, to use leading tabs for indents. This has no functional effect in this case, but it is still desirable to restore the formatting to its original style. If you wish to obtain a version of any earlier commit with this correction applied, first check that commit out, then either git cherry-pick <this commit> which will create a new commit with the correction applied, or git checkout <this commit> MakeNew git checkout <this commit> MakeOld which will only update your working tree and the index. Version 1.96. Not tagged
[604] Fix for inverted text box colour in paletted modes
Detail: Turn defaultpalettes back off (cf. Colours 1.95) as this caused writable icons to be the wrong colour in low colour modes because the Wimp palette is not the same as the default palette tables which ColourTrans substitutes. Furthermore, in 256 colour modes deselected Filer icons had the wrong colour caused by an attempt to lookup a palette for a true colour mode - a test has been added for <= 8bpp should the option ever be enabled in future. Version 1.97. Tagged as 'Colours-1_97'
Logs for RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_84 to SprExtend-1_86-1-gf0ed23f7
Tabify Makefile
Replace spaces with tabs in Makefile so it works with GNU Make. Version 1.84. Not tagged
[507] Fix translucent plots of 32k/64k source into 16M
The combining shifts for 4k source are 0/4/8 <-- all even, OK 32k source are 0/5/10 64k source are 0/5/11 When the destination is a 16M colour mode (ie. full 8bpp mask) this results in an attempt to generate an odd shift of &FF which can't be encoded in a 12b immediate. The code generator asserts ("ror < 32") and thus no plot is produced. Spot this case and stick in an extra LSL by 1 to ensure the mask can be represented, then compensate with an extra right shift during the combining ORR. Version 1.85. Tagged as 'SprExtend-1_85'
Add `rom_link` rule
This permits this component's type in ModuleDB to be changed to `C`, which is a prerequisite for further upcoming build changes. Version 1.85. Not tagged
[540] Fix buffer overflow in ExpandMaskSizeToR0
A mistake in the arguments passed to move_memory_up resulted in the code moving twice as much data as needed, potentially causing it to write off the end of the sprite area. Fix the bad argument, and add a couple of extra comments. Fixes https://www.riscosopen.org/tracker/tickets/540 Version 1.86. Tagged as 'SprExtend-1_86'
Use HostApp makefile fragment
Version 1.86. Not tagged
Logs for RiscOS/Sources/Video/Render/Super from Super-0_16 to Super-0_16-1-g5cb068cf
Use HostApp makefile fragment
Version 0.16. Not tagged
Logs for RiscOS/Sources/Video/UserI/Picker from Picker-0_56-2-g2ddd12e7 to Picker-0_59
Use "Resources:$...." not "Resources:..."
If the current directory is not it's root these are not equivalent. Version 0.57. Tagged as 'Picker-0_57'
Fix for flags read back being out of sync with the picker
Detail: SWI ColourPicker_ReadDialogue claims to return the current state (and does so for the colour) but was returning the cached copy of the flags word. Ensure this is always up to date whenever the colour is changed by copying the 'none' state into the cached flags. Admin: Discovered during Toolbox Unification bounty work.
Fix for being unable to change None and colour setting in a single call
Detail: SWI ColourPicker_UpdateDialogue allows the possibility of changing both colour and transparency state by setting bits 1 and 6 of the input flags. However, bit 6 has the side effect of using the Set_Values entry point which calls the colour changed model SWI which unsets the 'None' flag because the colour was set. Swap around the order of actioning the flags such that the colour is set before considering the new 'None' setting. Admin: Discovered during Toolbox Unification bounty work.
Rename INCLUDE_OSLIB to OSINC
Correct the Wimp message lengths
Detail: When message_COLOUR_PICKER_COLOUR_CHOICE or message_COLOUR_PICKER_COLOUR_CHANGED were sent the size of the Wimp message was set based on the model's private state structure size, rather than the extension field size. Update the message calculation to use the model's info_size value. Admin: Discovered during Toolbox Unification bounty work. Version 0.58. Tagged as 'Picker-0_58'
Fully fill 'None' swatch in 180dpi modes
The Crosshatch sprite wasn't quite tall enough for the swatch when plotted in an EY0 mode, and didn't account for the icon being inset from the window border. For width, we now tile the sprite as needed (rather than enlarge the one in Resources). Version 0.59. Tagged as 'Picker-0_59'
Logs for RiscOS/Utilities/Autobuild/ABRelease from ABRelease-1_00 to ABRelease-1_12
Update softload obey files
Also, remove the local copies of Prompt/SoftLoad in favour of the centrally held ones in 'Generic'. Version 1.01. Tagged as 'ABRelease-1_01'
Fix fallback BASIC64 command to work with command line arguments
Version 1.02. Tagged as 'ABRelease-1_02'
Add 5 packages from BootResources
These 5 items don't have dependencies or subdivisions, so can be handled by the existing package generator. Also fix a problem with the package generator when the major version number changes the package suffix wasn't being reset to '1', eg. "Thing_1.23-5.zip" "Thing_1.24-6.zip" (expected "Thing_1.24-1.zip" here) Version 1.03. Tagged as 'ABRelease-1_03'
Build fix
Detail: Make the path of the CSD without the system variable having $< as a substring, which amu 5.36 now tries to expand as a makefile variable. Version 1.04. Tagged as 'ABRelease-1_04'
Add 1 package from BootResources
Checking the boot sequence reveals !Internet is still correctly checked at each use so is safe to package on its own. A side benefit being CertData updates will now be flagged in PackMan. Delete OMAP3Live disc support (was removed from BuildSys-7_33 in 2019). Version 1.05. Tagged as 'ABRelease-1_05'
Update SysMerge script
DHCP added (ref BuildSys-7_77).
Move softload out of Choices
Bulk rename from Choices.Boot.PreDesk.!!SoftLoad -> Resources.SoftLoad Update URLs to HTTPS
Add ABRelease accompanying resources for PineA64 download
Version 1.06. Tagged as 'ABRelease-1_06'
Add Boot softload facility to Titanium ROM update
This will enable a Titanium to have the same softload option shown at boot time as the Iyonix & RPC have always had. Delete old TrySoftload obey file. Version 1.07. Tagged as 'ABRelease-1_07'
Updated SoftLoad binary
Admin: SoftLoad-1_22 built with cc 5.90 in the Disc environment.
Merge Softload facility for RiscPC, Iyonix, & Titanium machines
After the previous change, the facility to softload a ROM at boot is effectively the same on all these machines. This change generates it from a single Generic set of source files, rather than the sets for each of 5 build processes previously. Some insignificant inconsistencies have been eliminated, and 14 files merged into 7. The Prompt BASIC program is now BasicTxt, and Crunched for release. Testing: All 5 builds have been generated by simulating the AutoBuilder, and the resulting zips compared before and after these changes with no significant differences found. Version 1.08. Tagged as 'ABRelease-1_08'
Add 1 package from Utilities
Detail: SparkFS was previously not offered as a package so that the read-only version didn't class with the full version. Version 1.09. Tagged as 'ABRelease-1_09'
Enable menu selection of Softload ROM at boot
This change is mainly to enable a choice from several ROMs to be made at boot to softload, but it also... - Displays version & date of available ROMs, in date sequence. - Remembers last ROM used as default for auto-boot next time. - !Help file added to SoftLoad. - Allows extra Message files for different Territories. - The ROM version check is dynamic, not fixed in !Run. - Only affects RiscPC, Iyonix & Titanium builds. Detail: The main changes are to the Prompt program, with parameters added to !Run and Loader. Admin: Developed and tested on a Titanium running 5.24 softloading 5.28 & many 5.29. Also tested on RPCEmu 0.9.4 with all combinations of: Running 3.50, 3.60, 3.71, 4.02, 4.39, 5.20, 5.22, 5.24 & 5.28 Softloading 3.60, 3.71, 4.39, 5.20, 5.22, 5.24, 5.28 & 5.29 Version 1.10. Tagged as 'ABRelease-1_10'
Add ReadMe for Replay applications
Version 1.11. Tagged as 'ABRelease-1_11'
[630] Changed SoftLoad to allow it to run on Kinetic Risc PC and A7000/A7000+
Both these use the IOMD ROMs, which dynamically change the platform type. Changed Prompt and !Help accordingly. Tested on RPCEmu with A7000, but no Kinetic available. Version 1.12. Tagged as 'ABRelease-1_12'