Disc Changes 5.22 to 5.24
Changes: Disc 5.22 to 5.24
Components changed
- castle/RiscOS/Apps/!WinEdit from WinEdit-1_09 to WinEdit-1_11
- castle/RiscOS/BuildSys from BuildSys-6_64 to BuildSys-7_22
- castle/RiscOS/Env from Env-1_31 to Env-1_37
- mixed/RiscOS/Library from Library-1_76 to Library-1_92
- mixed/RiscOS/Modules from Modules-0_27 to Modules-0_29
- castle/RiscOS/Sources/Apps/Alarm from Alarm-2_87 to Alarm-2_93
- mixed/RiscOS/Sources/Apps/ChangeFSI from ChangeFSI-1_52 to ChangeFSI-1_61
- castle/RiscOS/Sources/Apps/Chars from Chars-1_25 to Chars-2_04
- castle/RiscOS/Sources/Apps/CloseUp from CloseUp-3_18 to CloseUp-3_19
- castle/RiscOS/Sources/Apps/Diversions/Flasher from Flasher-1_09 to Flasher-1_10
- castle/RiscOS/Sources/Apps/Diversions/Madness from Madness-0_47 to Madness-0_48
- castle/RiscOS/Sources/Apps/Diversions/Patience from Patience-0_74 to Patience-0_76
- castle/RiscOS/Sources/Apps/Diversions/Puzzle from Puzzle-1_08 to Puzzle-1_09
- castle/RiscOS/Sources/Apps/Draw from Draw-1_27 to Draw-1_30
- castle/RiscOS/Sources/Apps/Maestro from Maestro-2_01 to Maestro-2_05
- castle/RiscOS/Sources/Apps/Paint from Paint-2_17 to Paint-2_23
- castle/RiscOS/Sources/Apps/SciCalc from SciCalc-0_83 to SciCalc-0_87
- castle/RiscOS/Sources/Apps/Squash from Squash-0_55 to Squash-0_56
- castle/RiscOS/Sources/Audio/SoundCtrl from SoundCtrl-1_03 to SoundCtrl-1_06
- castle/RiscOS/Sources/Desktop/Desktop from Desktop-2_75 to Desktop-2_76
- castle/RiscOS/Sources/Desktop/DragASprit from DragASprit-0_19 to DragASprit-0_21
- castle/RiscOS/Sources/Desktop/FilerAct from FilerAct-0_60 to FilerAct-0_62
- castle/RiscOS/Sources/Desktop/Free from Free-0_41 to Free-0_42
- castle/RiscOS/Sources/Desktop/Switcher from Switcher-1_44 to Switcher-1_50
- castle/RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_76 to TaskWindow-0_80
- castle/RiscOS/Sources/Desktop/Wimp from Wimp-5_47-file1ad to Wimp-5_61
- castle/RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_48 to ADFS-3_54
- castle/RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_07 to ADFSFiler-1_12
- castle/RiscOS/Sources/FileSys/CDFS/CDFS from CDFS-2_61 to CDFS-2_63
- castle/RiscOS/Sources/FileSys/FileCore from FileCore-3_66 to FileCore-3_75
- castle/RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_83 to FileSwitch-2_86
- castle/RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_08 to DOSFS-1_13
- castle/RiscOS/Sources/FileSys/NetPrint from NetPrint-5_59 to NetPrint-5_61
- castle/RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_29 to RAMFS-2_32
- castle/RiscOS/Sources/FileSys/ResourceFS/ResourceFS from ResourceFS-0_25 to ResourceFS-0_26
- castle/RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_28 to SCSIFS-1_32
- cddl/RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_08 to SDFS-0_10
- castle/RiscOS/Sources/HWSupport/CD/ATAPI from ATAPI-1_33 to ATAPI-1_44
- castle/RiscOS/Sources/HWSupport/DeviceFS from DeviceFS-0_71 to DeviceFS-0_73
- castle/RiscOS/Sources/HWSupport/DMA from DMA-0_21 to DMA-0_23
- mixed/RiscOS/Sources/HWSupport/FPASC from FPASC-4_33 to FPASC-4_36
- castle/RiscOS/Sources/HWSupport/IIC from IIC-0_18-4_5_2_8 to IIC-0_18-4_5_2_13
- castle/RiscOS/Sources/HWSupport/Parallel from Parallel-0_78 to Parallel-0_79
- castle/RiscOS/Sources/HWSupport/PCI from PCI-0_13 to PCI-0_15
- castle/RiscOS/Sources/HWSupport/Podule from Podule-1_70 to Podule-1_72
- castle/RiscOS/Sources/HWSupport/Portable from Portable-0_69 to Portable-0_70
- castle/RiscOS/Sources/HWSupport/SCSI/SCSIDriver from SCSIDriver-1_18 to SCSIDriver-1_19
- mixed/RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_19 to SCSISoftUSB-0_21
- castle/RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_11 to SCSISwitch-2_14
- castle/RiscOS/Sources/HWSupport/Sound/Sound0 from Sound0-1_71 to Sound0-1_72
- castle/RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_40 to Sound1-1_41
- castle/RiscOS/Sources/Internat/Territory/Manager from Manager-0_56 to Manager-0_57
- castle/RiscOS/Sources/Kernel from Kernel-5_35-4_79_2_261 to Kernel-6_01
- castle/RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_17 to AsmUtils-0_19
- castle/RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_85 to RISC_OSLib-5_95
- mixed/RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_60 to TCPIPLibs-5_63
- castle/RiscOS/Sources/Lib/Unicode from Unicode-0_61 to Unicode-0_62
- castle/RiscOS/Sources/Networking/DHCP from DHCP-0_26 to DHCP-0_27
- castle/RiscOS/Sources/Networking/Econet from Econet-5_75 to Econet-5_80
- bsd/RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_30 to EtherUSB-0_41
- bsd/RiscOS/Sources/Networking/Ethernet/EtherY from EtherY-0_62 to EtherY-0_64
- castle/RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_38 to Freeway-0_41
- bsd/RiscOS/Sources/Networking/MimeMap from MimeMap-0_17 to MimeMap-0_19
- castle/RiscOS/Sources/Networking/AUN/Net from Net-6_24 to Net-6_26
- castle/RiscOS/Sources/Networking/Omni/Apps/Omni from Omni-2_21 to Omni-2_28
- castle/RiscOS/Sources/Networking/Omni/Protocols/LanManFS from LanManFS-2_48 to LanManFS-2_61
- castle/RiscOS/Sources/Printing/FontPrint from FontPrint-1_36 to FontPrint-1_37
- castle/RiscOS/Sources/Printing/Manager from Manager-1_83 to Manager-1_89
- castle/RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_15 to MakePSFont-1_16
- castle/RiscOS/Sources/Printing/Modules/PDModules from PDModules-4_60 to PDModules-4_61
- castle/RiscOS/Sources/Printing/Modules/PDriver from PDriver-3_39 to PDriver-3_40
- castle/RiscOS/Sources/Printing/Modules/PDumperSpt from PDumperSpt-1_30 to PDumperSpt-1_31
- castle/RiscOS/Sources/Printing/Modules/RemPrnSpt from RemPrnSpt-1_13 to RemPrnSpt-1_15
- castle/RiscOS/Sources/Printing/PrintDefs from PrintDefs-0_49 to PrintDefs-0_50
- castle/RiscOS/Sources/Printing/PrintEdit from PrintEdit-0_52 to PrintEdit-0_55
- castle/RiscOS/Sources/Printing/T1ToFont from T1ToFont-1_35 to T1ToFont-1_36
- castle/RiscOS/Sources/Programmer/ArmBE from ArmBE-1_06 to ArmBE-1_07
- castle/RiscOS/Sources/Programmer/DDEUtils from DDEUtils-1_74 to DDEUtils-1_75
- castle/RiscOS/Sources/Programmer/Debugger from Debugger-1_87 to Debugger-2_02
- castle/RiscOS/Sources/Programmer/FrontEnd from FrontEnd-1_32 to FrontEnd-1_34
- castle/RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_50 to HdrSrc-2_75
- castle/RiscOS/Sources/Programmer/RTSupport from RTSupport-0_11 to RTSupport-0_17
- castle/RiscOS/Sources/SystemRes/Boot from Boot-1_22 to Boot-1_26
- castle/RiscOS/Sources/SystemRes/Configure from Configure-1_91 to Configure-1_92
- castle/RiscOS/Sources/SystemRes/Configure2/Installer from Installer-0_13 to Installer-0_15
- castle/RiscOS/Sources/SystemRes/Configure2/Main from Main-2_11 to Main-2_12
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/Bootxxxx from Bootxxxx-0_13 to Bootxxxx-0_14
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/DiscSetup from DiscSetup-0_10 to DiscSetup-0_12
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/FilrSetup from FilrSetup-0_24 to FilrSetup-0_26
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/HelpSetup from HelpSetup-0_13 to HelpSetup-0_14
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/PinSetup from PinSetup-0_23 to PinSetup-0_24
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/ScrnSetup from ScrnSetup-0_32 to ScrnSetup-0_42
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/SndSetup from SndSetup-2_07 to SndSetup-2_08
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/ThemeSetup from ThemeSetup-0_04 to ThemeSetup-0_05
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/TimeSetup from TimeSetup-0_07 to TimeSetup-0_10
- castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/xxxxMerge from xxxxMerge-2_08 to xxxxMerge-2_09
- castle/RiscOS/Sources/SystemRes/Fonts from Fonts-0_09 to Fonts-0_10
- castle/RiscOS/Sources/SystemRes/InetSetup from Source-0_54 to Source-0_58
- mixed/RiscOS/Sources/SystemRes/Internet from Internet-5_57 to Internet-5_61
- castle/RiscOS/Sources/SystemRes/Scrap from Scrap-1_94 to Scrap-1_95
- castle/RiscOS/Sources/SystemRes/System from System-0_98 to System-1_00
- castle/RiscOS/Sources/SystemRes/Unicode from Unicode-0_34 to Unicode-0_35
- mixed/RiscOS/Sources/ThirdParty/Desk/Lib/Desk from Desk-3_2_5-NoUnaligned-LongerResPath to Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix
- mixed/RiscOS/Sources/ThirdParty/DPilling/Apps/SparkFS from SparkFS-1_43 to SparkFS-1_44
- castle/RiscOS/Sources/Toolbox/Common from Common-0_23 to Common-0_26
- castle/RiscOS/Sources/Toolbox/Libs from Libs-0_24 to Libs-0_27
- castle/RiscOS/Sources/Utilities/HForm from HForm-2_70 to HForm-2_75
- castle/RiscOS/Sources/Utilities/ShowScrap from ShowScrap-0_08 to ShowScrap-0_09
- bsd/RiscOS/Sources/Utilities/Usage from Usage-1_03 to Usage-1_04
- castle/RiscOS/Sources/Video/Render/Colours from Colours-1_91 to Colours-1_95
- castle/RiscOS/Sources/Video/Render/Draw from Draw-1_21 to Draw-1_22
- castle/RiscOS/Sources/Video/Render/Fonts/Manager from Manager-3_76 to Manager-3_79
- mixed/RiscOS/Sources/Video/Render/JCompMod from JCompMod-0_06 to JCompMod-0_08
- castle/RiscOS/Sources/Video/Render/ScrBlank from ScrBlank-2_33 to ScrBlank-2_34
- mixed/RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_65 to SprExtend-1_82
- castle/RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_38 to ScrModes-0_67
- castle/RiscOS/Sources/Video/UserI/ScrSavers/AcornLogo from AcornLogo-0_03 to AcornLogo-0_04
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Circles from Circles-0_04 to Circles-0_05
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Pogo from Pogo-0_03 to Pogo-0_04
- castle/RiscOS/Sources/Video/UserI/ScrSavers/ScrBounce from ScrBounce-0_03 to ScrBounce-0_04
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Scrolling from Scrolling-0_08 to Scrolling-0_09
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Slider from Slider-0_03 to Slider-0_04
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Smear from Smear-0_03 to Smear-0_04
- castle/RiscOS/Sources/Video/UserI/ScrSavers/Swarm from Swarm-0_04 to Swarm-0_05
- castle/RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_59 to ABRelease-0_85
Components added
- mixed/RiscOS/Sources/HWSupport/USB/USBDriver version USBDriver-1_28
- castle/RiscOS/Sources/Networking/AUN/Apps/Access+ version Access+-1_04
- bsd/RiscOS/Sources/Networking/Ethernet/EtherCPSW version EtherCPSW-0_03
- mixed/RiscOS/Sources/Networking/AUN/RouteD version RouteD-3_00
- mixed/RiscOS/Sources/Networking/NFS version NFS-3_26
- castle/RiscOS/Sources/Networking/Omni/Protocols/OmniNFS version OmniNFS-0_71
- castle/RiscOS/Sources/Networking/Omni/Protocols/NetFiler version NetFiler-1_19
- castle/RiscOS/Sources/Networking/Omni/Protocols/Access version Access-0_17
- castle/RiscOS/Sources/Networking/URI version URI-0_26
- castle/RiscOS/Sources/SystemRes/UserGuide version UserGuide-0_01
Components removed
Full Change Logs
Logs for castle/RiscOS/Apps/!WinEdit from WinEdit-1_09 to WinEdit-1_11
Logs for castle/RiscOS/BuildSys from BuildSys-6_64 to BuildSys-7_22
Relocate xpand, add front end to DDE applications Tagged as BuildSys-6_65
Enable doLog for disc based SharedSnd Want it for everything pre-Risc PC, and for issue 1 Risc PCs without 16 bit sound upgrades. Tagged as BuildSys-6_66
Update OMAPVideo build options Detail: Components/ROOL/OMAP3, Components/ROOL/OMAP3Live, Components/ROOL/OMAP4 - OMAPVideo-0_34 now requires the OMAP revision to be specified as a makefile parameter rather than via CDEFINES Admin: Tested on BeagleBoard, PandaBoard Required for OMAPVideo-0_34 to build Tagged as BuildSys-6_67
Add RemoteDebug to CTool components Nested include in DebugLib.h requires it, spotted by Martin Avison. Tagged as BuildSys-6_68
Ensure FPEmulator is aware of zero page relocation. Keep zero page relocation disabled for iMx6 for now. Add ZeroPain to ModuleDB Detail: Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, S3C6410, Tungsten - Add "FPEANCHOR=High" to FPEmulator build options so that it uses the relocated FPEAnchor location instead of the old one. In the future FPEmulator will be fixed so that it doesn't use a hard-coded address, but for now we need to manually tell ROM versions where FPEAnchor is. Components/ROOL/iMx6 - Override the kernel's default decision and leave zero page relocation disabled. R-Comp can decide when it's a sensible time to enable it. ModuleDB - Add ZeroPain. The module isn't used in any components files yet, but it's good to list it here forthe sake of completeness. Admin: Tested with Iyonix ROM build Requires Kernel-5_35-4_79_2_268 for FPEAnchor setting to match reality Tagged as BuildSys-6_69
Extend resources phase to handle more than just Messages Using the InstViaRG script CModule will now collate a list of files (using the syntax for the InstRes script employed by the CApp shared makefile) for resources, rather than the previous Messages file only. The list is specified in INSTRES_FILES, or if for some reason the standalone and ROM versions need to be different INSTRAM_FILES and INSTROM_FILES (cf. INSTAPP_FILES in CApp). Shock new documentation for CModule added. Tagged as BuildSys-6_70
Add AcornURI to the disc image Remove DDEUtils from PlingSystem (binary identical duplicate of that in the disc image) Tagged as BuildSys-6_71
Retire Binaries components file Add BonusBin components file The former was tediously hand run by ROOL while the sources were first being published and included a lot of components that weren't actally suitable to be RAM loaded, for example because they had no ResourceFS registration step. Many of these have been tidied and included in the HardDisc4/PlingSystem products. Tagged as BuildSys-6_72
Add existence of SATAFS, SATAFiler, and SPIDriver modules to ModuleDB Detail: Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as BuildSys-6_73
Retire TinyStubs The ROM build of TinyStubs has done nothing since version 0.07 (1998) except count how many clients it has and refuse to die if non zero. The last RAM set of Toolbox modules to use it was just before Expresso (Java Risc PC) in 1998 also. The Toolbox modules now make use of more functions than TinyStubs provided so can simply use the normal C libary. While 'tlink' (the special linker used to link against TinyStubs) is mentioned in passing in application note 280 it doesn't appear Acorn ever released it, plus there's no 32 bit version available. Tested over several months in an IOMD ROM. Tagged as BuildSys-6_74
Updated the CTools components file and added UtilLib to the ModuleDB. Tagged as BuildSys-6_75
Add GPIO for exports Previously located in the Kernel headers, now exported from GPIO. Tagged as BuildSys-6_76
Extra components files Detail: OMAP5 components, submission from Willi Theiss. Titanium components, submission from Elesar. Some extra modules in the ModuleDB. Added EtherCPSW AutoSense to the disc image. Admin: May not build, some bits still being reviewed. Tagged as BuildSys-6_77
New method to control default CMOS settings Detail: Rather than fill the Kernel sources with an ever-increasing number of platform-specific switches to control the default CMOS settings, this change introduces a variable which passes the requirements direct from the Components file to the Kernel. Since it uses a comma-separated list of address/value pairs, it is inherently extensible. All the symbolic names of addresses from Hdr:CMOS are available, and any valid objasm expression can be used for the value. Tagged as BuildSys-6_78
New modules in the ModuleDB Detail: Add OMAP5 HAL, ADFS 4 and SATADriver. Put HALs back in alphabetical order. Tagged as BuildSys-6_79
Add Allocate to the ModuleDB Add Allocate, for CTools components file. Move !MakeModes out of the ROM modules section into the disc apps section. Temporarily remove ATAPI from Titanium so the build completes without error. Tagged as BuildSys-6_80
Add module for OMAP5 port Detail: OMAPHDMI added to the ModuleDB Admin: Wanted by OMAP5 components file, but omitted in BuildSys-6_77. Tagged as BuildSys-6_81
Add Connector to the ModuleDB And install it in the bonus binaries. Tagged as BuildSys-6_82
Fix PlingSystem build for version 4.34 of FPEmulator Detail: Machine build switch now standardised to be compatible with Hdr:CPU.Arch since FPEmulator now relies on that. One side-effect improvement is that the binary in System:400.Modules.FPEmulator now includes FPA support so RISC OS 4 or 5 users on an A7000+ will no longer lose hardware acceleration if they softload FPEmulator. Admin: PlingSystem build now completes again. Tagged as BuildSys-6_83
Fix OMAPHDMI component type Tagged as BuildSys-6_84
Move SPIDriver component in ModuleDB from private to castle tree Tagged as BuildSys-6_85
Add BCMSupport to Raspberry Pi ROMs Detail: Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Add BCMSupport to ROM Admin: BCM2835 ROM tested on Pi 1B/2B/3B Pico ROM untested Tagged as BuildSys-6_86
Add Freeway and MimeMap to PlingSystem Tagged as BuildSys-6_87
No longer install CFSI-JPEG from SprExtend Admin: Requires ChangeFSI-1_58 or later. Tagged as BuildSys-6_88
Add SATADriver for its exports Export needed by CDFSSoftATAPI. Tagged as BuildSys-6_89
Add support for "26" machine type. PlingSystem updates. Detail: ImageName/SysMap - Add support for "26" machine type Components/ROOL/PlingSystem - Remove manual specification of All32 machine type for BASIC - would have resulted in code which isn't ARMv2 compatible. Remove 350 version of TaskWindow - the 310 version should be fine for all OS versions that PlingSystem targets. Document why SharedSnd is using the All machine type. Admin: Tested with PlingSystem build Tagged as BuildSys-6_90
Use the same optional resources syntax for AAsmModule as for CModule Copy over the rules that use platform agnostic InstRes to copy their extra resources (for those modules wanting more than just the default Messages+CmdHelp). Copy over the logic that allows INSERTVERSION to be run on Messages files (from CApp shared makefile) so modules which have a front end can get their dates from Messages. Add INSERTVERSION facility to CModule too. Tagged as BuildSys-6_91
Shuffle module order Detail: Ordering of FPE with respect to ScreenModes not important post ScrModes-0_55. Tagged as BuildSys-6_92
Add Omni's NetFiler To the module database, and Disc components. Tagged as BuildSys-6_93
Add SerialDeviceSupport to Raspberry Pi ROMs Detail: Components/ROOL/BCM2835, Components/ROOL/BCM2835Pico - Enable SerialDeviceSupport (OS_SerialOp/SerialV bridge to the underlying 'serialctrl' DeviceFS API) Admin: Tested on Raspberry Pi 1 B Requires BCM2835-0_59 and DualSerial-0_25-4_8_2_14 Tagged as BuildSys-6_94
Use default SDCMOS switch Requires BCM2835-0_61 and SDCMOS-0_17. Tagged as BuildSys-6_95
Add Net components Tagged as BuildSys-6_96
Added PartMan module to database. Detail: Introducing a basic partition manager. Admin: Tagged as BuildSys-6_97
Modify EtherTH path in module database to main repository Detail: Admin: Tagged as BuildSys-6_98
Reflect import of AHCIDriver module Detail: change moduledb and iMxd component Admin: Tagged as BuildSys-6_99
Pico build fix Need tboxlib for the messages header for internationalised DWCDriver. Force the default language CMOS to 10 since Pico is 1 module short, such that BASIC V is the default (not BASIC VI) per discussion https://www.riscosopen.org/forum/forums/5/topics/6744 Tagged as BuildSys-7_00
Introducint iMx6 HAL to ROOL repository Detail: Admin: Tagged as BuildSys-7_01
Final iMx6 module Detail: Admin: Tagged as BuildSys-7_02
GPIO export needed too Detail: Admin: Tagged as BuildSys-7_03
Update Pico components Force BCMVideo to work discless using a built in MDF, in lieu of EDID. Tagged as BuildSys-7_04
Match up module order All the other targets place ScreenModes earlier for EDID probing reasons. Tagged as BuildSys-7_05
Change order of modules in build to take advantage of recent ScrModes EDID changes Detail: Admin: tested on iMx6 Tagged as BuildSys-7_06
Fix BuildHost build Detail: Components/ROOL/BuildHost - ColourPicker needed for header exports Admin: Tested with BuildHost build Tagged as BuildSys-7_07
Add GPIO to BCM2835 Same as for Pico, ordinary Pi users can enjoy wiggling their I/O. Tagged as BuildSys-7_08
Add BorderUtils to ModuleDB and PlingSystem Also spotted that the CTools components file doesn't add a copy of CallASWI/FPEmulator to the EndUser directory. These 2 modules are required (the stubs include RMEnsures of CLib/CallASWI/FPEmulator). Tagged as BuildSys-7_09
Add OmniAccess to module database & Disc components Tagged as BuildSys-7_10
Add BASICVFP to relevant ROMs Detail: - ModuleDB - Define BASICVFP component - Components/ROOL/BCM2835, BCM2835Pico, OMAP3, OMAP3Live, OMAP4, OMAP5, Titanium, iMx6 - Add BASICVFP to ROM for all ARMv6+ machines Admin: BCM2835 build tested Requires BASIC-1_67, Library-1_91 Tagged as BuildSys-7_11
Add RouteD to the module database & Disc image Tagged as BuildSys-7_12
Repoint component path Admin: Formerly named 'NetBSD' now 'USBDriver'. Submission for USB bounty. Tagged as BuildSys-7_13
Repoint EHCIDriver & OHCIDriver Admin: OHCIHeaders removed from ModuleDB. For those components that use the USBHAL add that to the EXP phase. Tagged as BuildSys-7_14
Add Access+ to the disc image, improve CLibrary makefile Add Access+ as a utility, called out by the "Local networks" chapter of the User Guide, and missing since RISC OS 3.70 days (despite ShareFS having the functionality). Add an install target to the CLibrary makefile, this allows the library to be installed somewhere other than the exports directory which is useful for the CTools component for example. Tagged as BuildSys-7_15
Change PDebug & RemoteDebug component types Detail: In order that they be considered during the 'install' phase, make these 2 components type C rather than type EXP. Components/ROOL/BonusBin & PlingSystem: change all libraries to only be exported Components/ROOL/CTools: add an install location for PDebug, needed by DebugLib Admin: Fix for DDE build missing some required libraries. Required CLibrary shared makefile revision 1.9. Tagged as BuildSys-7_16
Set machine for 310 copies of TaskWindow & CallASWI Detail: CallASWI now contains an ASSERT for No32bitCode, so in the All environment it doesn't build. TaskWindow standalone module has ADR out of range. Admin: For CTools. Tagged as BuildSys-7_17
Skip EHCIHALLib export Detail: No longer a target of this component. Tagged as BuildSys-7_18
Components file updates Detail: Relocate AHCIDriver. Re-order the first few modules of iMx6 to match the other ROMs in light of ScreenModes dependency changes. Omit ZeroPain, this is provided in the download ZIP as a disc component. Omit EtherUSB - no sources in the products file so the build failed. Do run the ABRelease phase otherwise the autobuilder produces no output. Minor white space changes. Tagged as BuildSys-7_19
Add (Omni)NFS to the disc image ModuleDB: Add entry for OmniNFS. Move NFS now it's been scrubbed clean for publishing. Components/Disc: Add OmniNFS and NFS to !Omni. It may be more appropriate to put NFS in !System, let's see. Tagged as BuildSys-7_20
Changes to keep GNUmakefiles and Makefiles compatible Detail: GNUmakefiles/AAsmModule: * Adopt same extensible syntax for describing resources phase files as CModule (see BuildSys 6.91) GNUmakefiles/AppLibs: * Don't permit CALLXLIB to be used for application builds (see BuildSys 6.61) * Reflect MODMALLOCLIB leafname change (see BuildSys 6.61) * Add TBOXINTLIB, TBOXINTDBGLIB, PDEBUGLIB, PRISMLIB, REMOTEDBLIB, TRACELIB, UNICODELIB and include more libs in DEBUGLIBS (see BuildSys 6.63) GNUmakefiles/CApp: * Add install_debug_app rule for debug app installations (see BuildSys 6.53) GNUmakefiles/CLibrary: * Allow additional dependencies to be specified using LIB_DEPENDS (see BuildSys 6.63) * Gains install target (see BuildSys 7.15) GNUmakefiles/StdTools: * Add shell implementation of FAppend (see BuildSys 6.45) - compatible except for the fact that the destination is given current timestamp * ${NOP} no longer implicitly includes the silent-command prefix character @ (see BuildSys 6.50) * Add CPVFLAGS (see BuildSys 6.53) although it can't achieve anything as a suffix to the command * Add shell implementation of EraseCVS (see BuildSys 6.53) * Add InstViaRG tool (see BuildSys 6.70) Tagged as BuildSys-7_21
Add User Guide supporting material to disc Detail: ModuleDB & components files updated Tagged as BuildSys-7_22
Logs for castle/RiscOS/Env from Env-1_31 to Env-1_37
Import of developer bonus binaries env file Tagged as Env-1_32
Extra environment options Detail: OMAP5 and Titanium environments defined. !Common.sh CPU switch changed to ARMv7 as appropriate. Admin: Submission from Willi Theiss (OMAP5) and Elesar (Titanium). Tagged as Env-1_33
Change to target machine Detail: Use CortexA7 for code generation options for Titanium, as a synonym for A15. Admin: Submission from Elesar. Requires HdrSrc-2_55. Tagged as Env-1_34
Change PlingSystem over to using the new "26" machine type Detail: ROOL/PlingSystem,feb - Instead of using the Archimedes machine type, use "26". This allows for e.g. recognition of the StrongARM MSR bug in Hdr:Machine.Machine, and allows CLib to build multiple variants of some routines to target the different CPU architectures (e.g. long multiplies) Admin: Tested with PlingSystem build Requires HdrSrc-2_63, Library-1_87, BuildSys-6_90 Tagged as Env-1_35
Added iMx6 env file Detail: Admin: Tagged as Env-1_36
really add iMx6 env file Detail: Admin: Tagged as Env-1_37
Logs for mixed/RiscOS/Library from Library-1_76 to Library-1_92
Retire use of stripnulls Sources in Tools/Sources/LibUtils for reference. Tagged as Library-1_77
Update srcbuild binary to 0.51 Detail: Build/srcbuild,ff8 - Updated from 0.50 to 0.51, to fix a null pointer dereference Admin: Tested with Iyonix ROM build srcbuild built using CC 5.71 Tagged as Library-1_78
New tool InstViaRG Perl script that (recursively) scans a directory and outputs a via file that can subsequently given to ResGen. Useful to collect up resource directories for RAM loading versions of modules. Removed obsolete 'SetAccess' which was used with SrcFiler before CVS. Tagged as Library-1_79
Resurrect stripnulls utility Tagged as Library-1_80
ToGPA binary updated From ToGPA-0_03 built with cc 5.71 in the Disc environment. Tagged as Library-1_81
Extra ToolOptions Detail: Added Cortex-A15 as a known machine. Set the -cpu option for Cortex-A8 and -A9 to ARMv7. Admin: Submission from Willi Theiss. Tagged as Library-1_82
Improve Hdr2H to alow skipping of regions Detail: Build/Hdr2H,102 - If a line starts with ";NoHdr2H{" then skip all following lines until a ";NoHdr2H}" line is found. This allows blocks which are too tricky for Hdr2H to understand, or simply irrelevant to C code, to be ignored by the tool and not added to the C header. Admin: Tested with iMX6 ROM build Update romlinker to version 0.06 Detail: Build/romlinker,ff8 - Update to a build of version 0.06, produced using cc 5.71 Admin: Tested with Raspberry Pi, IOMD ROM builds Tagged as Library-1_84
307: Add missing InstViaRG perl file as an install for CTools builds. Tagged as Library-1_85
Avoid stale copies of objsize and ResGen Copy these two tools from the DDE, so you don't end up overwriting them with old copies that require manual updates. Tagged as Library-1_86
Add support for "26" machine Detail: ToolOptions/APCS-32,feb - Add support for the new "26" machine Admin: Tested with PlingSystem build Tagged as Library-1_87
Add decgen encodings describing ARMv8 AArch32 instructions These can be overlaid on top of the larger ARMv7 encodings to add the new ARMv8 opcodes, or to fault them as undefined by using the nARMv8 one. Currently missing the new VFP and SIMD opcodes. Tagged as Library-1_88
Add FAppend to DDE install phase Remove stripnulls Detail: Some of the shared makefiles use FAppend, so ship it in !SetPaths.Lib32. Unused stripnulls put in the attic (again). Tagged as Library-1_89
Rebuild tools to be ARMv8 compatible Detail: GNU/diff,ff8, GNU/gawk,ff8, Unix/Sed,ff8, Unix/grep,ff8, Unix/wc,ff8 - Rebuilt using latest BuildHost sources (GCC 4.7.4r3) to resolve UnixLib ARMv8 incompatibility Misc/decgen/decgen,ff8, Misc/decgen/!ReadMe - Import new ARMv8-compatible decgen build (GCC 4.7.4r3) to solve the same UnixLib issue there as well Admin: Tested building BCM2835 ROM on Raspberry Pi 3 Tagged as Library-1_90
Tweak objasm alias setup Detail: ToolOptions/APCS-32,feb - Add a new objasm alias, ObjAsmVFP, for assembling code that requires VFP word ordering for DCFD (objasm will complain if it sees conflicting -APCS fp options on the command line, so we can't just use "-APCS /vfp" with the existing alias) To keep things simple, drop support for old versions of objasm Admin: Tested with Raspberry Pi ROM build Tagged as Library-1_91
Add decgen encodings file for ARMv8 VFP/NEON instructions Detail: Misc/decgen/encodings/ARMv8FP_AArch32 - New encodings file, containing the full set of ARMv8 floating point instructions (mostly built from the existing v7 VFP & NEON files) Admin: Encodings checked against decaof 5.18 via new Debugger module Tagged as Library-1_92
Logs for mixed/RiscOS/Modules from Modules-0_27 to Modules-0_29
Update DDEUtils binary DDEUtils 1.75 imported. Removed stale 13 year old DDT module, not used by the Env/!Common script. Tagged as Modules-0_28
SharedUnixLibrary 1.14 Detail: SharedULib,ffa - Bump supplied SUL version to 1.14, as provided by GCC 4.7.4r3 Admin: Tested with BuildHost, BCM2835 builds Tagged as Modules-0_29
Logs for castle/RiscOS/Sources/Apps/Alarm from Alarm-2_87 to Alarm-2_93
Preserve DST bit when saving !Alarm settings Alarm was reading the DST flag on startup, and saving that value whenever its own settings were saved, not accounting for the fact that they may have changed in between (eg. by reconfiguring the machine). Delete that logic, just preserve the DST bit across the 1 place the CMOS is written. Fix for ticket #409. Tagged as Alarm-2_88
Clearer dialogues and a bug fix Detail: Icons in 'setup' and 'alarm' dialogue regrouped to be clearer for the user, and rephrased UK resources to say "recurring alarm" rather than a repeating one. Fix bug with rollover in the alarm set from December to January. Admin: Submission from Alan Robertson. Tagged as Alarm-2_89
Avoid unnecessary remainder calculations Detail: s/Browser - Avoid unnecessary remainder calculations in DivRem macro Admin: Tested on Cortex-A15 Tagged as Alarm-2_90
Rename Mon-Fri back to working week Detail: Alarm uses Territory_ReadCalendarInformation to determine the span of the working week, so should not hard wire the western working week days. Admin: Found during review of Alarm's User Guide chapter. Tagged as Alarm-2_91
Fix for 1 pixel offset error when Y sub-pixel anti-aliasing turned on Detail: Due to eigen factor rounding the Y offset calculation ended up 1 pixel too low when worked out in OS units. Switch to millipoints instead, including for plotting, so the sub-pixel Y offset isn't truncated. Admin: Based on a submission from Colin Granville, with edits. Tagged as Alarm-2_92
Ordering of the set alarm dialogue fields Detail: The alarm setting dialogue read as "Thu June 2010 30 12 13" which is rather unnatural for en-gb territory, reorder it to say "Thu 30 Jun 2010 at 12 13". Currently, there's no API to read the preferred ordering from the territory, however the templates would need translating per territory any way so can re-order the icons as required too. Admin: From User Guide feedback. Tagged as Alarm-2_93
Logs for mixed/RiscOS/Sources/Apps/ChangeFSI from ChangeFSI-1_52 to ChangeFSI-1_61
Add support for 24 (and 32) bpp PCX files ChangeFSI's slightly lapse check of >= 8bpp header vetting for PCX meant it would try to load such files and fail with an EOF error. * Change header parsing to correctly deduce a 24 or 32bpp PCX is being handled, select the appropriate decoder * Add a sample 4 plane 8 bit PCX to the tests directory, created with ImageMagick * Docs updated Note that is seems highly unlikely from inspection of the code that 5/6/7bpp PCX files will come out the right colour since the PCX file format header only has space for 16 palette entries but ChangeFSI will continue reading off the end of the table into the start of the image data. However, no examples of 5/6/7bpp images could be found in the wild, so let sleeping dogs lie. Tagged as ChangeFSI-1_53
Fix for CLI processing of very large sprites (>64MB) When the output sprite is calculated to be too big to fit in the upper limit of dynamic area size, ChangeFSI would attempt to create the output to disc in smaller chunks. However, the size required by the sprite header was not accounted for, eg. a 5000x4000 32bpp image would come out as 80000000 exactly. Fix this by flushing the sprite header (and palette) before spooling out the image. Tested with a nobbled dynamic area size of 128k, used 8bpp 2000x1000 sprite as test and processed this to S32,90,90 S16,90,90 28d 28 27 to exercise true colour, 256 palette, and bpp < 8. Note, the desktop front end isn't helped by this as it requires the image to all be in memory at once for the display step, but the CLI version can now output practically unlimited sprite files. Deleted call to PROCflushoutput in the JPEG/JPEGMONO code path, since addr% is never incremented it never gets called and the file that is being written to in o% is set type to FF9 at the end anyway. Tested with JPEG75 JPEGMONO75 Made Wimp version check consistent with 2 other occurences elsewhere in the source for the same template-related feature. Tagged as ChangeFSI-1_54
Add support for type 10 (64k colour) sprites and those with wide masks Sprite type 10 is now accepted as an input format, by defining the appropriate 5:6:5 colour lookup tables. Sprites with wide masks (8b alpha channels) are now also accepted, though like binary masks the mask is simply ignored. Previously these fell into a signed < 256 trap and were being mistaken for numbered modes which the OS then choked on. When showing the mode number in the "About this image" dialogue the number is now given in hex if it's not a numbered mode (0-255), this is fractionally more useful than decimal. Enlarged the "About this image" display fields per the Style Guide. Corrected the comments in the colour mapping code (lines 6551-6552, 7043-7044). Tagged as ChangeFSI-1_55
Add support for type 15 (extended type) and 16 (4k colour) sprites Sprite type 16 is now accepted as an input format, by defining the appropriate 4:4:4 colour lookup tables. Type 15 class RGB is handled too with 1/2/4/8/12/15/16/32bpp sprites with and without RGB/BGR reversal. Other changes: Tighten up the check for BTPC files, it turns out BTPC 5 also exists but has an incompatible format, so rather than trying to decode them and fail, fail early. Mention the return code in Documents/CmdBasUse. Change real variable 'rgb' to integer since it's only holding a flag. Tested with a variety of special sprites, and a BTPC 5 file. Tagged as ChangeFSI-1_56
Update cjpeg and djpeg to later versions Detail: Using the IJG8d code for these disc based utilities gains all of the more recent JPEG extensions including arithmetic coding, when ChangeFSI falls back to using djpeg if the SpriteExtend based decoder can't cope. Makefile and jconfig.h updated to build on RISC OS. Admin: Submission for the JPEG bounty. Tagged as ChangeFSI-1_57
Generate CFSI-JPEG locally Detail: For fast JPEG decoding, simply call SpriteExtend's JPEG SWIs directly, rather than carry a cutdown version of the core of SpriteExtend. The !Run file RMEnsures check for UtilityModule 3.60, so there's always some version of JPEG SWIs available to call. If not, ChangeFSI falls back to decoding JPEGs via PBM files using its disc based copy of djpeg. Admin: Submission for the JPEG bounty. Tagged as ChangeFSI-1_58
[236] Adjust scaling factors to avoid righthand/bottom edge conditions source/ChangeFSI: After rounding up the scaled output size, recalculate the div/mul factors so they produce a whole number of pixels instead of falling off the end of the input array and mixing in black. source/DesktopFE: Remove dead variable "safe%" and change tofitx/tofity to integers. Minor clarification in CmdBasUse documentation. Tested with a 100x100 green sprite, scaled by 5:3/5:3 and 3:7/3:7. Fixes ticket #236. Tagged as ChangeFSI-1_59
Fix for CVE-2013-6629 and CVE-2013-6630 Merged from IJG release 8d1. Tagged as ChangeFSI-1_60
Docs update Detail: Compuserve->CompuServe Admin: From User Guide feedback. Tagged as ChangeFSI-1_61
Logs for castle/RiscOS/Sources/Apps/Chars from Chars-1_25 to Chars-2_04
Add support for selecting from Unicode fonts Detail: Changed !RunImage to support working with the Unicode Font Manager, and revised !Help. Replacement templates, and revised Messages for the extra menus and window layout. As this component also features in the disc image (RO350Hook) it also degrades on earlier Font Managers. Admin: Submission from Chris Wraight. To get the code point names while hovering with the mouse, Unicode-0_35 should be updated for the CharNames table. Tagged as Chars-2_00
Fix RAM exhaustion with many fonts, and choices inversion Detail: Line 1012 - Use the heap to claim/extend space for fonts. Fixes wimpslot problem with many installed fonts. Line 914-916 - Invert the choices file keywords to match the variables they set. Minor - Remove SWI constants, since the build system (Squish) gets these from swis.h. Don't listen for MESSAGE_HELPREPLY%. Change IconHandle to an integer. Use OS_ReadModeVariable to get eigenvalues since there's only 2 it's not worth constructing a list for OS_ReadVduVariables. Admin: Submission from Chris Wraight, with minor edits. Tagged as Chars-2_01
Internationalisation and terminology changes Detail: When generating the encoding menu the terms "Default" and "UTF8" were looked up via the Messages file, however the selection logic and update of the display field used hardwired English. Now, the internal variables Alphabet$ and Encoding$ are English but when required for display are always looked up. Now that works, use the preferred term "UTF-8" per Unicode consortium and Style Guide page 133. Admin: From review of User Guide chapter. Tagged as Chars-2_02
Fix bug returning incorrect character based on mouse position Detail: Clicking right of the last character would result in the first character on the next row being selected. Now returns nothing Admin: Tested on RPCEmu 0.8.15 using RISC OS 5.23 Submission from Alan Robertson. Tagged as Chars-2_03
Fallback to system font if Wimp$Font is unset If the configured desktop font is 0 (use Wimp$Font) but that variable is unset, use system font instead like the Wimp does rather than failing to get a font handle from Font Manager. Refactor the extraction of configured font from CMOS using bitshift and mask future tech. Tagged as Chars-2_04
Logs for castle/RiscOS/Sources/Apps/CloseUp from CloseUp-3_18 to CloseUp-3_19
Use Wimp_PollIdle Detail: bas/!RunImage - When our window is open, use Wimp_PollIdle to rate limit how often we update it. This avoids pointless CPU thrashing on modern machines, which are capable of updating the window hundreds of times per second, or at least faster than your monitors refresh rate. This also has the added bonus of reducing software pointer flicker to a less awful level. Admin: Tested on Raspberry Pi, iMx6 Tagged as CloseUp-3_19
Logs for castle/RiscOS/Sources/Apps/Diversions/Flasher from Flasher-1_09 to Flasher-1_10
Makefile recreated from fragments Renamed help and templates into standard format. Removed hardwired version number from Messages (now inserted at build time). Correct X offset for menu opening per Style Guide. Tagged as Flasher-1_10
Logs for castle/RiscOS/Sources/Apps/Diversions/Madness from Madness-0_47 to Madness-0_48
Makefile recreated from fragments bas/!RunImage - this is a text version of the former Resources/!RunImage,ffb revision 1.1.1.1 so CVS can sensibly diff it. Tagged as Madness-0_48
Logs for castle/RiscOS/Sources/Apps/Diversions/Patience from Patience-0_74 to Patience-0_76
Style Guide compliance change Detail: Changes made to Patience's main window storing to reflect Style Guide. Option is no longer in the Choices window, but accessed from the main menu. Choices dialogue and Messages file updated, and Help file edited to reflect change. Admin: Submission from Chris Wraight. Tagged as Patience-0_75
Add ellipsis for Help Detail: Style Guide page 50. Admin: From User Guide feedback. Tagged as Patience-0_76
Logs for castle/RiscOS/Sources/Apps/Diversions/Puzzle from Puzzle-1_08 to Puzzle-1_09
Consistency improvements Rename dangerous looking "Reset" button to "Default" to match the !Configure plugins. Change "Default" button behaviour such that only Select click does something (restore factory defaults) rather than confusing reload existing/restore factory with Select/Adjust. Don't double translate the templates - previously PROClabelwindows would change all the text via the Messages file. References to "View" window in the !Help changed to "Display" options window. Spotted while updating User Guide chapter. Tagged as Puzzle-1_09
Logs for castle/RiscOS/Sources/Apps/Draw from Draw-1_27 to Draw-1_30
Fix for abort when dragging an unknown filetype to Draw, and a bogus error message Various places in Draw were making an error block (via makmsg or retmsg macros) from a cast pointer using the msg part of RISC_OSLib. However, as RISC_OSLib caches the messages file and returns direct pointers to it, the resulting error blocks would often not be word aligned, leading to an abort when the Wimp tries to copy it for the Wimp_ReportError. In turn, the abort would be reported as unhelpful "wimpt1" message because the signal handler was looking it up in the application messages, not the default RISC_OSLib messages. Draw.c: New function top copy the msg to a word aligned static struct. Fix signal handler to use msgs_default_control_block() so that "wimpt1" can be found. Draw.h/others: Replace makmsg and retmsg with calls to the new aligning function. Tested by dragging a GIF and a BMP to Draw, and it no longer aborts. Tagged as Draw-1_28
Static analysis fixups Line 114: Remove the potential divide by zero by considering that the only way to get xspace=0 is when yspace <= 1, in which case it's a unity grid. Line 295: Add some brackets to make the expression unambiguous. Fortunately with Norcroft ((thing & 1) == 1) results in the same output as (thing & (1 == 1)) in this situation. From a tip off in https://www.riscosopen.org/forum/forums/4/topics/3990 Tagged as Draw-1_29
Edit UTF-8 text in text entry with backspace correctly On starting a new string using the text entry tool, cache the current alphabet, then when backspace is pressed handle deletes properly when the alphabet is UTF-8 by skipping over continuation marks until a non continuation mark is found. The backspace code can afford to be simplistic because any invalid UTF-8 sequences already in the file when it is opened will end up (via Ctrl-E) in a Wimp writeable, which is handled by the Wimp's robust code. Only newly created strings are able to have backspace applied, so by definition they were entered just moments earlier, and so reasonable to assume they're valid UTF-8. Having entered a string, get the bounding box right by calling Font_ScanString rather than manually walking the string with Font_CharBBox (Font_ScanString was already being used for transformed text, so rotated bounding boxes were right). Now the two are common, make a font_scanstring() function to handle both. This could be further simplified by just editing existing strings in place, see ticket #426. Tagged as Draw-1_30
Logs for castle/RiscOS/Sources/Apps/Maestro from Maestro-2_01 to Maestro-2_05
Update sprites to use 16 colours (greys) Detail: Improve the visual appearance of scores by using blended graphics. Only the sprite set in use is now held in memory, previously unused sets were too, and add support for EX0 EY0 modes. Sprites updated based on bitmap captures of the PMS font by Richard Hallas, with kind permission. Admin: Submission from Chris Wraight. Tagged as Maestro-2_02
Time signature and positional improvements Detail: * Time signatures are now displayed as sprites, both on screen and printed * Take the plunge and delete the sprites that are unused * Some minor positioning tweaks and updates to the sprite files Admin: Submission from Chris Wraight. Tagged as Maestro-2_03
Substitute common SWI names for strings Detail: During a build Squish will look up OS and Wimp SWIs (and others), so remove the run time lookup. SendMessage->Wimp_SendMessage; OS_File->OS_File; GetWindowOutline->Wimp_GetWindowOutline; unused SetColour deleted. Tagged as Maestro-2_04
Don't broadcast replies to Wimp messages Detail: bas/!RunImage - Fix PreQuit blocking, HelpReplies, and DataLoadAcks to be sent to the task that sent the original message, instead of being broadcast to all tasks Admin: Tested on Raspberry Pi 3B+ Fixes issue reported on the forums which could lead to StrongED dereferencing a bad pointer: https://www.riscosopen.org/forum/forums/4/topics/9451 Tagged as Maestro-2_05
Logs for castle/RiscOS/Sources/Apps/Paint from Paint-2_17 to Paint-2_23
Turn off close icon on transitory dbox The 'shapshot' window shouldn't have a close icon, otherwise it automatically gets an iconise icon, and you can't sensibly iconise or uniconise it as it's transitory. Tagged as Paint-2_18
Fix incorrect calculation of memory requirements for alpha-masked sprites Detail: c/PSprite - Fix psprite_size to correctly calculate the memory required by alpha masks Admin: Tested on Raspberry Pi Fixes issue reported on forums with 'Not enough memory' errors from SpriteExtend when resizing or adding rows/columns to alpha-masked sprites: https://www.riscosopen.org/forum/forums/4/topics/3610 Tagged as Paint-2_19
Fix unreliable sorting of sprites Detail: c/Menus - Fix sprite sort code to take into account the fact that variable-length array allocations may cause flex blocks to be moved (due to CLib allocating the array from the heap) Admin: Tested on Raspberry Pi Appears to fix 'sort by name' sometimes resulting in a random sort order being used Will hopefully fix 'out of memory' error reported on forums (unable to reproduce here, but this is a likely cause) https://www.riscosopen.org/forum/forums/4/topics/3657 Tagged as Paint-2_20
Moderate spray can density based on time not CPU speed Detail: The spray tool rate was ultimately determined by the number of wimp polls per second, which on a fast CPU can be 10,000's making the spray can more of a circle drawing tool. Use OS_ReadMonotonicTime to moderate the spray rate, so the speed of the CPU doesn't matter. Default density increased to 100 to achieve roughly the same density as a StrongARM Risc PC would previously. Admin: Submission for the Paint bounty. Tagged as Paint-2_21
Add 4k and 64k new sprite selector Detail: Put in minimal support to create 4k and 64k sprites (currently, TBGR only) so that the User Guide chapter makes sense. Previously it was only possible to create such sprites by switching to that mode and doing a screen capture. Admin: Tested on RISC OS 4.02 (ie. without 4k & 64k support) and RISC OS 5.23 (ie. with). Tagged as Paint-2_22
Add mousewheel zoom/scroll and auto scrolling of selected tools Detail: The mouse wheel can now be used to * scroll up/down * +shift to scroll left/right * +control to zoom in/out on an open sprite editing window. The sprite editing window will auto scroll when the mouse approaches the border with * the move whole sprite "hand" tool * the copy block "camera" tool * the move block "scissors" tool Admin: Submission for the Paint bounty. Tagged as Paint-2_23
Logs for castle/RiscOS/Sources/Apps/SciCalc from SciCalc-0_83 to SciCalc-0_87
Clipboard ownership fix SciCalc would reply to clipboard requests even if someone else owned it, leading to the wrong thing being pasted depending on the order applications were running. Fix submitted by Chris Wraight. Makefile changed to use centralised BasCrunch script. Tagged as SciCalc-0_84
Restore some lost 3.10 compatibility A handful of trivial mistakes stopped this working properly on RISC OS 3.10 as it always used to. Messages: Correct the justification of Copy value/Copy summary for the system font (the Wimp right justifies when in outline font). !Runimage: Change the redraw rectangle to cover the summary line as well as the result line, otherwise the rubout goes wrong on Wimp 3.16. This is harmless on later Wimps as it just results in a duplicate redraw rectangle when the summary icon is updated. Calculate the maximum menu width in system font units rather than just using 80 all the time. Change PROCwimp_additem to create indirected icons for text longer than 12 letters, so all the entries use that PROC so the width is calculated properly (indirected icons were written out longhand before). Tested on an A5000. Tagged as SciCalc-0_85
Handful of SciCalc fixes Detail: Some functions would be executed multiple times as some of the buttons had Click/Drag enabled. Fixes problem reported https://www.riscosopen.org/forum/forums/4/ opics/3630. Leading zero in negative numbers would propagate during calculations. Fixes problem reported https://www.riscosopen.org/forum/forums/4/topics/3614 The MR function does not always display correctly. It needs to replace the summary bar text if a sum is complete, and it also needs to retain the number prefix if in a non-decimal base. Rounding errors creeping in in some circumstances caused by rogue @% variables in the wrong places and with the wrong values. Fixes ticket #412. UI confusion with a non "sticky" option field in the choices dialogue, moved to the View menu instead. Fixes ticket #413. Help updated to reflect the changes described. Removed some unused Message translations. Admin: Submission from Chris Wraight. Tagged as SciCalc-0_86
Reflect choices made when reopening choices Detail: On changing SciCalc's choices, reopening the dialogue would show the previous settings (having written the new ones to disc). This change reflects the choices immediately. Admin: Submission from Chris Wraight. Tagged as SciCalc-0_87
Logs for castle/RiscOS/Sources/Apps/Squash from Squash-0_55 to Squash-0_56
Recapitalise iconbar menu Ref Style Guide iss 3 page 46, only initial leading capitals please. Removed redundant WimpSlot setting command from !Run. Tagged as Squash-0_56
Logs for castle/RiscOS/Sources/Audio/SoundCtrl from SoundCtrl-1_03 to SoundCtrl-1_06
Allow mixers to be identified by device name, where possible Detail: c/module - If a version of SoundDMA is in use which supports the device enumeration/selection APIs, allow mixers to be identified by name rather than by number. SoundDMA will be relied upon for name resolution, allowing stable device names/IDs to be used rather than the unstable numbering system. For compatibility, "0" (for *commands) and NULL (for SWIs) will be interpreted as a reference to the mixer for the current default audio device. Also fix AddDevice not filling in the device number when adding the new device. Admin: Tested on iMX6 Tagged as SoundCtrl-1_04
Update to use new controller selection terminology Detail: c/module - Update references to SoundDMA SWIs and rename some functions/variables so that audio controller devices are referred to as "Controller" rather than "Device". Apart from the necessity to use the new SWI name & flag/reason code constants this is effectively just a cosmetic change to the sources. Admin: Tested on Raspberry Pi Requires Sound0HAL-1_84 / Sound0Trid-1_69 / Sound0-1_72 Tagged as SoundCtrl-1_05
MixVolume parsing correction SoundCtrl is supposed to accept "0" to mean the default mixer where not written out longhand, for example as written by earlier versions of the !SndSetup configure plugin from RISC OS 5.00 up to and including SndSetup-2_07. However, the match for "0" never happened and the MixVolume command was subsequently ignored. Tagged as SoundCtrl-1_06
Logs for castle/RiscOS/Sources/Desktop/Desktop from Desktop-2_75 to Desktop-2_76
Remove use of RESOURCEEXTRA Requires BuildSys-6_91. Tagged as Desktop-2_76
Logs for castle/RiscOS/Sources/Desktop/DragASprit from DragASprit-0_19 to DragASprit-0_21
Avoid unnecessary remainder calculations Detail: s/StartUp - Avoid unnecessary remainder calculations in DivRem macro Admin: Tested on Cortex-A15 Tagged as DragASprit-0_20
Fix redraw issue with alpha drop shadow Detail: s/StartUp - When the alpha drop shadow is in use, the foreground sprite is one row+column larger than normal, to allow the shadow to be feathered. However the drag box calculations weren't taking this into account, resulting in slightly wonky coordinates that can result in redraw issues in some situations (specifically, the screen area under the sprite's current location is filled with a plain colour if the bounding box overlaps the graphics window in a certain manner). Introduce orig_x_size and orig_y_size variables so that the drag box calculations can be correct regardless of how much padding is added to the image (with the limitation that the padding must be on the right / bottom) Also, fix the AtPointer support so that the pointer is placed at the centre of the input sprite, not the padded sprite. Admin: Tested on Raspberry Pi Resolves ticket #402, and similar corruption with animated windows (e.g. start a drag of a sprite which overlaps !Alarm's icon) Tagged as DragASprit-0_21
Logs for castle/RiscOS/Sources/Desktop/FilerAct from FilerAct-0_60 to FilerAct-0_62
Fix null pointer dereference when continuing after some errors Detail: c/listfiles - If the first call to enumerate the contents of a directory fails (e.g. when trying to step into a bad image file), next_entry_to_return will be left at a value >= entries_in_buffer. This doesn't impact the operation of the state machine, but it will cause a null/bad pointer dereference in the user interface code when switch_buttons() calls read_next_node_parameters() and the code attempts to construct the path name of the current object. Fix the issue by terminating the path if an invalid cache entry index is found. Admin: Tested on Iyonix with zero page relocation Tagged as FilerAct-0_61
Fix for NULL pointer dereference skipping/retrying the last file If an error occurs during an operation (for example, during a copy move where the source is on a read only medium) the status window changes to an error window with "Abort/Skip/Retry". The skip and retry options call read_next_node_parameters() to peek the next queued item, but would attempt to OS_File 5 of a NULL filename if the error happens when there are no more. Check the next_nodename isn't NULL to avoid an abort in OS_GSInit with zero page protection enabled. Tagged as FilerAct-0_62
Logs for castle/RiscOS/Sources/Desktop/Free from Free-0_41 to Free-0_42
Remove use of RESOURCEEXTRA Requires BuildSys-6_91. Tagged as Free-0_42
Logs for castle/RiscOS/Sources/Desktop/Switcher from Switcher-1_44 to Switcher-1_50
Use new OS_Memory 16 items for calculating correct system workspace & hardware/system size Detail: s/Switcher - Calculate system workspace as the sum of ZeroPage, ScratchSpace and DebuggerSpace sizes. This fixes the value being 4KB smaller than it should be when high processor vectors are in use (since the debugger is currently given a page of its own for that case). Also include processor vector page (if any) in hardware/system total (currently not needed, but may be in future) Admin: Tested on Raspberry Pi Values listed in system memory section now total up correctly Tagged as Switcher-1_45
Update to cope with physical memory pools Detail: For physical memory pools, the max size returned by OS_ReadDynamicArea/OS_DynamicArea 2 might be a lie - although the maximum logical size of a PMP is fixed, the maximum physical size can be updated dynamically, so that a PMP can avoid wasting memory for a page list which is mostly unused. So whenever we want to resize a PMP, we ignore the max size indicated by the OS and instead treat it as if it has a max of 4GB s/Switcher - Implement the above, by replacing calls to OS_ReadDynamicArea with calls to OS_DynamicArea 2 (so DA flags can be read). Also fix some bits of code to do unsigned comparisons on size values, and to cope with the fact that OS_ChangeDynamicArea essentially limits us to +/-2GB at a time (although currently we just clamp the request, rather than make multiple requests) Admin: Tested on Pandaboard Tagged as Switcher-1_46
Fix application and next slot size limits Detail: s/Switcher - Fix ReadDynamicArea routine to use OS_ReadDynamicArea when reading the details of application space (since OS_DynamicArea doesn't recognise the fake application space DA) Admin: Tested on imx6 Fixes inability to increase size of (e.g.) filer action wimpslot, and fixes 'next' slot size not being clamped to 512MB Tagged as Switcher-1_47
Remove conflicting save desktop settings Saving the desktop boot file results in some conflicting settings. Since to be able to save it you must have a writable medium, you also have <Choices$Write> so you should be using !Configure. Remove the ChangeDynamicArea lines from being written * FontSize - this was specifically mentioned as conflicting in the RISC OS 3.60 User Guide, in the memory dialogue of old !Configure or Font setup plugin now. * SpriteSize - deprecated in the RISC OS 3.10 PRM, so don't encourage it to be non zero on boot up * RamFsSize - likewise in the memory dialogue of old !Configure or Disc setup plugin now. Still writes the WimpSlot size, since there's no corresponding !Configure item for that and it can be resized before every app starts anyway. Tagged as Switcher-1_48
Avoid unnecessary remainder calculations Detail: s/Switcher - Avoid unnecessary remainder calculations in DivRem macro Admin: Tested on Cortex-A15 Tagged as Switcher-1_49
Include page zero compatibility page in system workspace size Detail: s/Switcher - If the page zero compatibility page is present, add it to the system workspace total size Admin: Tested on BB-xM Tagged as Switcher-1_50
Logs for castle/RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_76 to TaskWindow-0_80
Fix 32bit conversion issue Detail: s/Taskman - Generation of TaskWindow_Dying error within ByteV handler wasn't balancing the stack correctly, causing it to try branching to the PSR. Fix this, and tighten up the code a bit (can use R0 as temp as it'll always be set to something sensible on exit) Admin: Tested on iMx6 Fixes reported issue with machine stiffing when killing task windows containing running programs Issue was only observed on pre-PMP kernel version, where the code would have branched into the free pool (loaded PSR appeared to be &80000193), corrupted some memory, and then got stuck in a loop Presumably this has never been spotted on other systems because there would have rarely been any memory at that location, generating an immediate abort, but the error message gets swallowed because the task is exiting? (or there was memory there, but the user got lucky and the code aborts before fatally corrupting anything) Tagged as TaskWindow-0_77
Remove ARM2-era NOPs. Avoid updated PSR macros generating redundant NOPs where possible. Detail: s/Taskman - Remove all NOPs from after PSR manipulation macros; the macros now take care of these for us. Change some RestPSR instances to the "f" variant, so that the macro won't insert ARM2 NOPs. Admin: Tested PlingSystem build on (ARM3) RISC OS 3.1 Requires HdrSrc-2_63 to be ARM2 safe Tagged as TaskWindow-0_78
Clear the exclusive monitor when returning to a pre-empted task Detail: s/Taskman - As described in the ARM ARM, the local exclusive monitor is allowed to be a bit dumb when it comes to comparing addresses, and so a manual CLREX is required whenever we return to code that has been unwillingly pre-empted Admin: Tested on Raspberry Pi Tagged as TaskWindow-0_79
Fix off-by-one error in INKEY timer Detail: s/Taskman - When TaskWindow was converted to use TickerV instead of VSync events for implementing the INKEY timer, one line of code was left in the wrong place, causing all INKEY delays to be 1cs longer than they should Admin: Tested on PandaBoard 100 * OS_Byte 129,0,0 now completes instantly (was 1s), 100 * OS_Byte 129,1,0 now completes in 1s (was 2s), both now matching single-tasking behaviour Should fix issue reported on forums with OS_Byte 129,0,0 -heavy programs running unreasonably slow: https://www.riscosopen.org/forum/forums/4/topics/9317 Tagged as TaskWindow-0_80
Logs for castle/RiscOS/Sources/Desktop/Wimp from Wimp-5_47-file1ad to Wimp-5_61
Only skip ColourTrans calls for 32bpp TBGR The whizzy new TRGB modes can't assume 32bpp sprite data is equivalent to 32bpp palette entries, so must use ColourTrans. * Disable the use-in-place optimisation if that's the case * Update the comments to reflect this logic more clearly Fix bug in non Medusa case, STRB was using the wrong register as the base address. Tested briefly with 'Raspberry' theme, unchanged from previous version. Tagged as Wimp-5_48
Disable Wimp_ClaimFreeMemory if the free pool is a PMP Detail: s/Wimp08s - If the free pool is a PMP, it's fairly safe to say there'll be no logical mapping, so don't allow Wimp_ClaimFreeMemory to succeed. Also cope with OS_Memory 10 potentially being unimplemented - swallow any error it generates, and refuse to claim the free pool. Admin: Tested on Pandaboard Fixes crashes and subsequent OS_ChangeDynamicArea failures caused by software trying to claim the free pool (e.g. FileCore temp buffers). Tagged as Wimp-5_49
Reinstate Wimp_ClaimFreeMemory Detail: This restores support for Wimp_ClaimFreeMemory, via having the Wimp manage a small-ish (4MB) DA that is used to satisfy Wimp_ClaimFreeMemory requests. The Wimp will only ever grow the DA, but the DA is shrinkable, so the system should shrink it as necessary should the free pool run too low. Options/s/!Default, Options/s/32, Options/s/Ursula - Add DynamicAreaWCF option to control support for the Wimp_ClaimFreeMemory DA. Enable the option for any builds of the module destined for RISC OS 5. Options/s/!Debug - New debug option for Wimp_ClaimFreeMemory debugging (mainly DynamicAreaWCF code path) Wimp/s/Wimp01 - Add calls to create/destroy DA on startup/shutdown Wimp/s/Wimp08s - DA create/destroy implementation. DA is only used if the free pool is a PMP or the Wimp expects kernel free pool locking but the kernel doesn't support it. Modify Wimp_ClaimFreeMemory to use the DA if it's present. Admin: Tested on Raspberry Pi Restores compatibility with software which relies on Wimp_ClaimFreeMemory, e.g. GDraw module (cause of "No free memory" errors reported by many) Note that Wimp_ClaimFreeMemory is still considered deprecated and support may be removed in future OS versions. Tagged as Wimp-5_50
Make use of power saving features when sat waiting for user input Detail: s/Wimp03 - Move two key bits of power-saving logic out of repollwimp and into a new subroutine (powersave_tick) s/Wimp01, s/Wimp07 - Call powersave_tick when displaying an error box or "Press SPACE or click mouse to continue", so that CPU will drop speed and enter WFI state instead of running at full tilt. Admin: Tested on Pandaboard Fixes issue reported on forums with CPUs getting hot for no good reason: https://www.riscosopen.org/forum/forums/4/topics/3749 Tagged as Wimp-5_51
Avoid unnecessary remainder calculations Detail: s/Wimp01, s/Wimp02, s/Wimp05, s/Wimp08s, s/Wimp10 - Avoid unnecessary remainder calculations in DivRem macro. Also make more use of DivRem's ability to accept a constant (not a register) as the divisor. Admin: Tested on Cortex-A15 Tagged as Wimp-5_52
Fix invalid AMB node handle being used when low on memory Detail: s/Wimp08s - If OS_AMBControl allocate is asked for a AMB node with a size > 0, but no pages can be claimed, it frees the node and returns an invalid handle (0). Make sure that the Wimp's allocateslot routine is aware of this, so that we don't try passing that bad handle back to AMBControl later on s/Iconbar - Use nullptr constant instead of -1 when checking task_slotsize (aka AMB node handle on modern machines) Admin: Tested on BB-xM Fixes abort seen when attempting to start a task with no pages in the free pool Tagged as Wimp-5_53
Remove redundant GET Detail: s/Wimp - IO header doesn't appear to be necessary for build, so don't get it Admin: Tested with PlingSystem build (new "26" machine type aims to be machine-independent, so doesn't define $GetIO) Untested at runtime Tagged as Wimp-5_54
[399] Menu shortcuts misplaced if the menu has a scroll bar When a menu is so tall it gains a scroll bar, the shortcuts were incorrectly justified. Change the MOVE VDU sequence prior to plotting the menu entry so Font Manager justifies the text correctly. Tagged as Wimp-5_55
Fix use of uninitialised pointer Detail: s/Wimp01 - initwcfda tries to look up the dynamic area name using MsgTrans, so make sure the 'messages' pointer is initialised before we call it Admin: Tested on iMx6 Tagged as Wimp-5_56
Recache currentmode at the right time Detail: Modification to make the Wimp reread 'currentmode' by calling OS_ReadSysInfo 1 in the following circumstances 1. On module init (accounts for being softloaded off disc) 2. At Service_Reset (accounts for any graphics driver starting after it in ROM module order) 3. When Service_ModeFileChange (new, this catches the new mode selected by an MDF or EDID during !Boot) Commoned up these 3 cases into 1 function. This restores the design intent that to get the monitor's native resolution it is *not* required to configure the MonitorType=EDID, indeed doing so wouldn't have helped loading EDID off disc if the monitor's data is found to be incorrect and needing overriding. Admin: Tested on a Pandaboard with MonitorType=Auto and resolution chosen as "Native", resulting in a desktop at the panel resolution. Tagged as Wimp-5_57
Gate the recache of currentmode The operations at module init and at Service_PreReset are both implicitly pre desktop, however it is valid to have Service_ModeFileChanged while in the desktop (for example, if selecting a different MDF from !ScrnSetup). Gate the one hanging off Service_ModeFileChanged to only act when there are no tasks active (ie. outside the Wimp). Fixes problem reported https://www.riscosopen.org/forum/forums/4/topics/9206 with NetSurf redraw. Tagged as Wimp-5_58
Remove startup delay from power saving code Detail: s/Wimp02 - Get rid of the magic ~30 second delay before the Portable_Speed/Portable_Idle power saving kicks in. The fast/slow thresholds are self-adjusting, and any non-null poll event will kick the system into high speed, so removing the startup delay isn't likely to have any adverse affect on desktop startup time. s/Wimp01 - MaxIdleEvents is now redundant, remove it Admin: Tested on Raspberry Pi 3 Should resolve issue reported on the forums where RPCEmu thrashes the hosts's CPU for 30 seconds after entering the desktop: https://www.riscosopen.org/forum/forums/10/topics/8990 Tagged as Wimp-5_59
Fix crashes when a Wimp_Poll post-filter causes the Wimp to postpone switching to a VFP-enabled task Detail: s/Wimp07 - In ExitPoll, swap around the order of restoring the FP context and calling the poll post-filter so that the FP context is restored after the post-poll filter has been invoked. Previously, the VFP(+FPA) context would be restored, then the post-poll filter would be invoked. If the post-poll filter was claimed, the Wimp would then scan the pollwords again and most likely decide to switch to a different task. The appslot will then be switched over, and ExitPoll will be invoked again, attempting to restore the VFP/FPA context for that task - potentially causing a crash or other bad things because the VFP context used by the original choice of task is no longer paged in. For FPA this was never really a problem, since the context is stored in the RMA rather than being potentially stored in appspace. s/Wimp03 - Add some extra debug out for tracking VFP context management Admin: Tested on wandboard Fixes issue reported on forums, where using the numpad in VFP SciCalc would cause a crash if KeyExtend was loaded: https://www.riscosopen.org/forum/forums/4/topics/10293 Tagged as Wimp-5_60
Fix for bad error pointer deleting non existent sprite Doing *WimpKillSprite _not_there_ had the following behaviour Priority | Sprite exists Sprite doesn't Sprite is ROM Lo then Hi | Deletes Bad error ptr Silence Hi then Lo | Deletes Silence Silence The bad error pointer was caused by an early return if the high priority pool is the ROM sprites (because the earlier failure to find it in the low priority pools set V, and the early return used TEQ, so the error pointer in R0 was the SpriteOp reason code). Proceed to try to look up the sprite, even if there's no hope of deleting it, in order to get a valid error message. Tagged as Wimp-5_61
Logs for castle/RiscOS/Sources/FileSys/ADFS/ADFS from ADFS-3_48 to ADFS-3_54
Refactor unaligned LDM in old style error return Would only trigger if ADFS was being run on an ARMv7 but using an old style FileCore that didn't support the new error scheme, hence mostly for completeness. Spotted by Jon Abbott, ref https://www.riscosopen.org/forum/forums/4/topics/3682 Typo in error string corrected in passing. Tagged as ADFS-3_49
Use HAL device for PATA IDE controller, and a few minor fixes ADFS 3 is currently both a filing system and a hardware poker, so have it own the PATA device for now as a stepping stone to a PATADriver module; export the header. No longer call HAL entries, look for the HAL device, activate, and call that instead. At API 0.00 it just has the exact same 3 functions as the previous HAL entries only refactored to pass a device pointer in R0. Makefile/IDEDevice.hdr/ADFS.s/Adfs00.s: Export, include, and reserve workspace. Adfs12.s/IDEDetect.s: Refactor function calls. Messages: Unrelated correction to pluralisation of 'Sectors'. Adfs50.s: Hunt for the IDE controller device. Fix oflaofla error if run on a non HAL machine - OS_Hardware errors but the ErrXFree code label expects the error pointer in R9 not R0. Tested in an IOMD build. Tagged as ADFS-3_50
Preserve R12 across HAL device calls Detail: s/Adfs12, s/IDEDetect - Ensure R12 is preserved over HAL device calls, the calling conventions allow the HAL to clobber it Admin: Tested on Iyonix Fixes abort during ROM init Tagged as ADFS-3_51
Export a few extra bits CDFSSoftATAPI 1.35 and later uses symbols instead of magic numbers for ADFS_IDEDeviceInfo and ADFS_ATAPIOp, export them here so this combination builds. Tagged as ADFS-3_52
Calculate the offset to the hardware-dependent information Don't assume that the disc address to MiscOp_Mount is always &C00, in order to locate the hardware-dependent information (see PRM 2-215), calculate the offset properly. This fixes a problem that FileCore 3.74 triggered where the LBA flag was no longer being recovered now the alignment of the request in R2 has changed, causing some drives to no longer mount if they also don't support CHS addressing. Strictly speaking there's no guarantee that FileCore is even asking for the boot block at all; ADFS should read the sectors itself before fulfilling the request, but historically it's always assumed that the boot block was being read, so let sleeping dogs lie. Ref https://www.riscosopen.org/forum/forums/4/topics/9390 Tagged as ADFS-3_53
Remove legacy 700us DRQ timeout for write ops Detail: Early versions of the ATA spec mandated that drives should assert DRQ within 700us of a write command being issued. However later versions of the spec have dropped this limit, and some devices (e.g. CF cards) are known to regularly exceed the limit. Remove the 700us timeout from ADFS, so that these devices can operate correctly. s/Adfs14 - Modify DRQ timeout check so that it will fall back to polling from TickerV if the initial 700us loop times out. s/StaticsIDE - Add extra word to workspace, so that the TickerV routine can still timeout the operation Admin: Tested on IOMD (~4M FSBash ops), Tungsten (~500K FSBash ops) Fixes "disc error 20" seen when using IDE-CF adapter on RiscPC, thanks to reasarch by Jon Abbot: https://www.riscosopen.org/forum/forums/4/topics/9557 Tagged as ADFS-3_54
Logs for castle/RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_07 to ADFSFiler-1_12
Fix for weird text in floppy format menu The menu icon block for the various native format floppy discs was writing the length and validation string pointers the wrong way round. By chance, there's now a vaguely valid validation string character at the address of the length of the "ADFS 1600K (F+)" entry, which made is into a string of 'o's for some reason. Also, corrected the width calculation for half a system font character at either end - not that relevant as the Wimp's calculated it for years. Tested briefly in an IOMD ROM, menu looks right. Tagged as ADFSFiler-1_08
Avoid unnecessary remainder calculations Detail: s/Backup, s/Format - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as ADFSFiler-1_09
Remove use of RESOURCEEXTRA & PRIVATEMSGS Requires BuildSys-6_91. Tagged as ADFSFiler-1_10
Standardise drag-to-iconbar system variable name While the behaviour introduced with Ursula whereby files can be dropped on the iconbar filer icon to start a copy/move operation, there is a hidden bit of functionality that you can set an alternative destination directory other than the root. This is governed by a system variable, however Acorn's implementation erroneously called this a path, when in fact it's a directory (no trailing dot). RISC OS Ltd fixed this by the time RISC OS 4.00 came along, so this change brings this filer into sync. For reference, the variable is "FSTitle + Filer$DefaultDir", where FSTitle can be found by calling OS_FSControl 33. eg. SCSIFiler$DefaultDir SDFSFiler$DefaultDir ADFSFiler$DefaultDir Tagged as ADFSFiler-1_11
Fix null pointer dereference when building floppy Format menu Detail: s/ADFSFiler - The commenting out of the MOV R5,#0 line in a previous bug fix left a null pointer dereference in the code when EnumFormats_Flags is checked. Examination of the code suggests the intent was to use the MOV R5,#0 to skip the EnumFormats_Flags check, so modify the preceeding CMP to check for R5=0 or R0=0. Admin: Tested in Iyonix ROM softload Fixes issue #436 https://www.riscosopen.org/tracker/tickets/436 Tagged as ADFSFiler-1_12
Logs for castle/RiscOS/Sources/FileSys/CDFS/CDFS from CDFS-2_61 to CDFS-2_63
Reclassify *CDDevices Unlike SCSI/USB/PCI/SDIO device list commands, *CDDevices required CDFS to be the active filing system. Remove the FS flag from its command table entry so it can be entered at other times. Tested briefly, drive was listed with SCSIFS active. Tagged as CDFS-2_62
Avoid unnecessary remainder calculations Detail: s/EntryFile, s/FileMan, s/Misc - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as CDFS-2_63
Logs for castle/RiscOS/Sources/FileSys/FileCore from FileCore-3_66 to FileCore-3_75
Try harder when looking for buffer space Detail: s/FileCore30 - Update FindBuffer so that if it failed to find enough spare memory for the buffer (and the RMA is allowed) it will try and grow the RMA dynamic area (current code just aims to use the spare heap space without expanding the DA). Admin: Tested on Raspberry Pi Fixes "No room for buffer" error being generated in some situations, following the removal of Wimp_ClaimFreeMemory/free pool locking Tagged as FileCore-3_67
Refactor unaligned STM in old style error return Don't rely on an STM with either of the bottom 2 bits set to store on a word aligned boundary any more. Fixes abort when an old style error is reported to FileCore on ARMv7. Spotted by Jon Abbott, ref https://www.riscosopen.org/forum/forums/4/topics/3682 Tagged as FileCore-3_68
Avoid unnecessary remainder calculations Detail: s/BigDirCode, s/Identify - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as FileCore-3_69
Build fix Module_Title->Module_TitleStr from Kernel-5_54. Tagged as FileCore-3_70
Fix for nonsense sector offsets (and abort) with *Map of old map disc For new map discs NextFs returns the address of the map zone in R10, which was being used to lookup entries in the disc record. However, for old map discs R10 is a multiple-of-3 offset into the free space map. This was aborting on the 2nd call due to an unaligned LDR at line 3205. Even on platforms that permit unaligned loads the printed results were wrong because the disc address for an old map disc is in bytes but the value printed out was shifted up by Log2SectorSize. A DD floppy disc could have free space fragments starting at 7M - nonsense. Fixed by checking the DiscFlags and only reading from the map zone/sector shifting for new map. Tested with an ADFS-L floppy disc. Tagged as FileCore-3_71
[415] Report dir full when hitting dir size limit FileCore would allow objects to be added to BigDir extensible directories until eventually failing and leaving an unopenable broken directory behind. In fact, the on disc directory was sound, but after updating the parent in GrowBigDir it would reload the child into the dir cache with FindDir, FindDir called SanityCheckBigDirHeader which was rejecting BigDir's of exactly 4MB that was created moments earlier. Now, during the initial attempt grow, a check is made for exceeding BigDirMaxSize before trying to enlarge the dynamic area (while it would be possible to translate the error from maxing out the dynamic area, there could be situations where there genuinely isn't enough memory to enlarge the area) and a more polite "Dir full" error returned. Tested with an initially empty drive (so the dynamic area must grow) and with one that previously created a maximal directory (dynamic area already large enough). Also tightened up a couple of places loading byte wide variables using LDR, relying on the modulo 31 properties of LSR/LSL, when we can simply load the value as a byte for the same cost. Tagged as FileCore-3_72
Fix to sort dirs correctly when no territory is loaded Detail: FileCore is defined as a case insensitive FS (ie. MyFile can't coexist in the same directory as mYfILE). Prior to a territory being selected the BigDir binary chop sort would (via the Internat_UpperCase macro) abandon a directory search once it mismatched, and so would never find !Territory in order to select the territory in the first place. Have Internat_UpperCase use ASCII uppercase until that time. Admin: Based on a submission from Colin Granville, with modifications. Tagged as FileCore-3_73
Fixes in BigSectors option Previous testing with RAMFS was limited by the size of RAM disc, and hence complexity of layout, meaning some cases with BigSectors were missed. FileCore20.s: During mount, when loading the defect list from the boot block at &C00, take care to round down the source sector address to account for it only being aligned up to 1k sectors (but not for 2k and 4k). FileCore25.s: When loading the head of a BigDir (to find out its actual size) and finding it to be > 2k, skip loading the bit from 2k-4k, since that was already loaded when the head was read in, and reading it a second time offset by 2k fails the head/tail check. FileCore31.s: When building a table to decide which zones to compact, use FindBuffer() to get some temporary store if too large to fit into ScratchSpace. Identify.s: Comment updated. BigDirCode.s: (Unrelated) Fix for bad error pointer being passed back, due to R0 being restored on encountering an error during directory rename. FSBashed for 300k cycles on Titanium with an assortment of manufacturer drives, capacities, and sector sizes. Tagged as FileCore-3_74
Increase upper range of idlen to 21 bits When 'BigMap' support was added drive sizes were such that (see table and discussion in Doc/BigDisc/BigDiscs) an upper maximum of 19 bits for idlen was appropriate. Now that drives of 2^29 sectors are readily available (the limit of 'BigDisc' support) the idlen limit of 19 has meant the minimum object size has grown too. This change uses the remaining 2 indirect disc address bits to get a factor x4 reduction in minimum object size, at the expense of a 4x larger map. Defns.s: Parameterise idlen for big and small maps. Small's limit remains 15, big's limit raised from 19 to 21. Identify.s: When mounting, use the parameterised idlen upper limits to decide whether it's a valid disc or not. FileCore32.s: Adjust the BIC masks to knock out the extra 2 bits when forming the hash of the object id. Fix long standing bug updating the wrong entry in the hash table (due to LSL #2 giving 5x the entry index, rather than 3x). FileCore15.s: Take care not to shift b20 of idlen into C as a side effect of a flags changing opcode. An audit of FileCore showed this to be the only site where the subsequent condition code(s) depended on C. Tools/basic/DispMap: Updated to support BigMaps at all, previously it only worked with NewMap discs. Tested with an assortment of drives with FSBash for 300k cycles of scrambling for idlen = 17, 19, 20 & 21. Tagged as FileCore-3_75
Logs for castle/RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_83 to FileSwitch-2_86
Avoid unnecessary remainder calculations Detail: s/CtrlUtils, s/OSGBPB - Avoid unnecessary remainder calculations in DivRem macro Admin: Tested on Cortex-A15 Tagged as FileSwitch-2_84
Fix to OS_FSControl 13 when no territory is loaded Detail: PRM2-97 describes filing system name matching as case insensitive. However, the Internat_LowerCase macro is a no-op when there's no case conversion table, such as prior to the territory loading. Change FindFSName to use an case insensitive ASCII match until the territory starts. Fixes a problem with EtherUSB failing to start because it was using Devices: (rather than devices:). A global search of the sources shows SerMouse and the Kernel would also be affected. Admin: Submission from Colin Granville. Tagged as FileSwitch-2_85
Eliminate global OS_SynchroniseCodeAreas Detail: s/FSControl - Change the post-Service_UKCompression call to OS_SynchroniseCodeAreas to be a ranged up rather than a global one. Admin: Tested on iMx6 Improves performance with SMP ROMs, where global D-cache clean isn't really possible Tagged as FileSwitch-2_86
Logs for castle/RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_08 to DOSFS-1_13
Fix a few potential memory leaks Some of the long filenames handling added in DOSFS-0_79 (DOSFSops.c revision 4.10) introduced extra points to return in the face of error, but didn't free memory allocated earlier in the function. Add missing free()'s. From a tip off from Dominic Plunkett in http://www.riscosopen.org/forum/forums/4/topics 3990#posts-51013 Tagged as DOSFS-1_09
Allow mounting discs with 1 letter names, and 2x buffer overrun fixes DOSFS would prefer to use the disc title from the volume name entry in the root directory, even if this reduced to 1 letter, which would then lead to "Disc drive not known" errors. Since the disc couldn't be mounted it couldn't be renamed either, requiring a trip to a PC to do so. Now, if the cleaned up name is < 2 characters long, ignore it and use the one based on the volumeid, and if that doesn't exist, use the default one ("Untitled") from the Messages file. In OpsFunc.c used memset() in place of a byte set loop. Ref https://www.riscosopen.org/forum/forums/4/topics/9503 DOSFS.c, line 621: remove the excess NULL so the sprintf fits into the 10 byte buffer, not 11. DOSFS.c, line 1556: restore the original intent for *CopyBoot in light of the structure/union reorg DOSshape.h revision 4.7 in DOSFS-0_79. Previously the boot code was copied in its entirity as an opaque blob, but the loop was left unchanged, overrunning the sector buffer. A useful example of the extent of the boot code is given in http://thestarman.pcministry.com/asm/mbr/DOS50FDB.htm which shows the code uses up every last byte of the sector. Tested with a disc called "R", which can now be mounted. A floppy with no name and no volume id, and one with no name and a volume id. Tagged as DOSFS-1_10
No longer offer PCMCIA SRAM card as a format option Untangle the PCMCIATRUE misnomer - what it really meant was "offer PCMCIA card as an option for *Format AND allow non floppy geometries". Nothing has shipped with PCCardFS since October 1994, so stop offering it as a possible *Format. However, we do rely on the non floppy geometries for things like SD cards and USB sticks, so retain that with a new switch (permanently enabled) called NONFLOPPIES. Tested with a Pi SD card and a 4GB USB stick. Tagged as DOSFS-1_11
Reject overly-large discs, and other invalid things Detail: c/Accessors, h/Accessors, Makefile - Added some simple 'image accessor' routines to abstract over accessing the underlying disc/image file. These accept 64bit disc addresses and will check to make sure any size limits imposed by the lower-level API are adhered to (512MB limit for FileCore_DiscOp, or extent of image file for OS_GBPB) h/MsgTrans, Resources/Germany/Messages, Resources/UK/Messages - Add a couple of new error messages h/Helpers - Add a couple of macros to simplify reading 16/32bit values that are split into multiple bytes in struct definitions. Change writeWORD & loadWORD to accept void* instead of char* so they can be used with other types like 'byte' h/DOSshape - Add '0' suffix to some struct members so they can be used with new READ_0123 macro h/ADFSshape - Make sure put_doublestep is safe to use with bools c/DOSdirs - Remove pointless malloc of small temporary array c/DOSclusters - Use new READ_ macros in max_sector() c/DOSFS - Use new READ_ macros so code is less painful to read. Use new image accessor system to get rid of some boilerplate for reading from the disc (+ extra error checks). Change 32bit values to 64bit where it looks like it's necessary, and use bools in place of a couple of 0/1 ints. Reject any discs which are too big for the 32bit fields in the ADFS disc record. c/OpsFunc - Update DOSFS_image_open in ways similar to the code in c/DOSFS, making use of READ_, image accessor, 64bit values, and adding extra error checks. Admin: Tested with assorted large & small image files & SD cards on a BB-xM, and some DOS/Atari floppy discs on a RiscPC FAT partitions larger than 4GB (or which extend past the 4GB FileSwitch limit) are now rejected, as are image files which have been truncated A future improvement could be to lift the disc/partition identification code out of c/DOSFS and c/OpsFunc and unify it, since both files contain fairly similar code German messages are in need of translation Tagged as DOSFS-1_12
Remove redundant NULL pointer check Detail: c/DOSdirs - Now that nbuff is an array held on the stack, there's no need for findSUBDIR to check whether it's a null pointer Admin: Builds, untested Issue spotted by Dominic Plunkett Tagged as DOSFS-1_13
Logs for castle/RiscOS/Sources/FileSys/NetPrint from NetPrint-5_59 to NetPrint-5_61
Minor fixes Interface.s: Use error &1E6 for Bad SWI. HelpTexts: Use hardspaces to ensure the print server lines up with other *Configure values. Commands.s: Fix top-bit-set address bug where commands issued above 2G would be interpreted as a *Configure syntax request. Sort out confusion about internationalising configure commands - the 'PS' of the status report shouldn't be looked up since that would mean the *Configure command changed for each language. Tested on a high vectors ARMv7 with strict alignment checking enabled, printing a ~170k DrawFile through PrinterManager 1.83 through NetI 6.26 to !Spooler 1.10 via Ethernet physical link. Tagged as NetPrint-5_60
Add support for RAM variant Usual boiler plate code to register with ResourceFS. Tested briefly on a Risc PC. Tagged as NetPrint-5_61
Logs for castle/RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_29 to RAMFS-2_32
Adjust RAMFS to permit larger RAM disc formatting Detail: Increased the number of sectors per track in the disc record in s.RamFS50 This prevents the track count getting too large and causing an abort in RAMFSFiler. Admin: tested in iyo JB Tagged as RAMFS-2_30
Add support for the RAMFS dynamic area potentially being a PMP Detail: s/Defns - Add PMP switch to switch between PMP-compatible code and old code. Add BigDisc2 switch to enable my (non-functional) support for RAM discs > 512MB. Fix broken debug switches (Hdr:Proc already gets included somewhere), and add PMP debug switch. s/RamFS05 - Replace generic BlockMove function with BlockRead/BlockWrite functions which map in pages on demand, using a basic LRU cache to reduce page table thrashing. s/RamFS15 - Updated to use BlockRead/BlockWrite functions, and BigDisc2 support s/RamFS50 - BigDisc2 code. PMP-related initialisation. Admin: Tested on Pandaboard, with and without PMP dynamic area Note that due to nonfunctional support for RAM discs >512MB, the resize handler in the kernel currently places a 512MB limit on the DA. Tagged as RAMFS-2_31
Avoid unnecessary remainder calculations Detail: s/RamFS50 - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as RAMFS-2_32
Logs for castle/RiscOS/Sources/FileSys/ResourceFS/ResourceFS from ResourceFS-0_25 to ResourceFS-0_26
Fix for returning whole monitor name When *OPT1,2 is enabled ResourcefS would return the whole name including path, when it's supposed to only return the leafname. Scan for the last dot to do so. Replace magic 0/1/2 with object_nothing/file/directory from Hdr:LowFSI. Tagged as ResourceFS-0_26
Logs for castle/RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_28 to SCSIFS-1_32
Small changes to enable interaction with PartMan module Detail: Changes are compile time enabled with the compile time option PartitionManager set TRUE Admin: Tagged as SCSIFS-1_29
Fix memory corruption when encountering a floppy-type device with SCSI ID >= 4 Detail: s/ScsiFs20 - Fix UnlockMedia to perform the correct translation between SCSI ID and FileCore drive number Admin: Tested on Raspberry Pi Fixes issue reported on forums when many drives connected: https://www.riscosopen.org/forum/forums/4/topics/3831 Tagged as SCSIFS-1_30
Minor improvements Detail: hdr/mymacros, s/ScsiFs05 - Remove some unused 26bit-only macros. Use REV instruction in RevBytes macro when possible. Replace most manual PSR manipulation with common macros. s/Hdr_fst, s/ScsiFs15 - Use Portable_Idle within 1s wait loop, to avoid thrashing the CPU Admin: Tested on Raspberry Pi Tagged as SCSIFS-1_31
Make 'Hide' file feature more useful when SCSIFS in ROM Detail: s/ScsiFs05, s/ScsiFs50 - Listen out for Service_BootChoicesVarsSet and use it as a trigger to check for any devices which should be hidden by the Hide file. This ensures that devices which are detected prior to the boot sequence starting will get Hide-processed Admin: Tested on Raspberry Pi Partially resolves ticket #309 (there's still the problem that a multi-card reader could use up all available drive numbers during ROM init, preventing the boot drive from mounting) Tagged as SCSIFS-1_32
Logs for cddl/RiscOS/Sources/FileSys/SDFS/SDFS from SDFS-0_08 to SDFS-0_10
Add ReadInfo subreason to map from logic drive SDFS_ReadCardInfo,1 allows the logical drive number to be mapped to bus/slot/RCA in a roughly analogous way to ADFS_IDEDeviceInfo. Otherwise, there's no way to map from drive number to the physical card. Exports & docs updated. Tagged as SDFS-0_09
Add missing messages directive Missing {DictTokens} added, otherwise when the CmdHelp gets concatenated it's never seen a directive and does nothing with the {Token0}. Tagged as SDFS-0_10
Logs for castle/RiscOS/Sources/HWSupport/CD/ATAPI from ATAPI-1_33 to ATAPI-1_44
branches: 1.11.2; Fix for NULL pointer dereference When no drives are detected (but some are configured) CDFSSoftATAPI goes dormant by setting its private word to 0. However, when the module finalises (eg. an RMReinit) that NULL value is then used to call CD_Unregister, and attempting to free the same NULL value with OS_Module. Also replaced magic numbers from Hdr:ModHand and Hdr:OsBytes. Tagged as ATAPI-1_34
Fix null pointer dereference Detail: s/Module - Fix null pointer dereference in drive detection code if an ATAPI drive is found which failed to respond to ADFS's identify packet Admin: Tested in Iyonix ROM softload Should fix issue reported on forums: https://www.riscosopen.org/forum/forums/5/topics/3929 Tagged as ATAPI-1_34-1_11_2_1
Update for compatibility with ADFS 4 Detail: The physical ID by which ATA and ATAPI drives are address has been expanded in ADFS 4 from 2 bits to 12. For now, CDFSSoftATAPI is still limited to 4 drives, and scans the first 4 physical IDs returned by SWI ATA_Enumerate (falling back to the 4 legacy physical IDs if the SWI isn't found). This will fail on boards with more than 4 physical SATA ports, but caters for all current hardware. Also sneaked in the use of LDRH in the SWI dispatcher. Admin: Tested on a Titanium board. Tagged as ATAPI-1_35
Support newer ARMs better Detail: A couple of the routines relied on pre-ARMv6 style LDM functionality, and would abort on ARMv7+ (or ARMv6 in ARMv7 mode, if we ever get an ARMv6 platform with ATAPI). Also took the opportunity to replace a lot of byte swizzling code fragments with REV instructions if only targeting ARMv6 or later. Bit of a shame they weren't macroised considering how many times they were used... Admin: Untested Tagged as ATAPI-1_36
Delete pre-source control switches Now we're using CVS, the switches from 1997 and earlier are just clutter. Built same binary, not tested. Tagged as ATAPI-1_37
Fix for spurious error message mounting DVDs When CDFS wants to change the drive's data mode to mount a DVD it does so via CD_SetParameters. As a side effect of that call, the read retry count is written too. Some drives return illegal request errors when trying to set the read retry count (even though they're marked as changeable), so just swallow the error like CDFSSoftSCSI does (driver.c revision 1.4 line 566). Fixes "Compact disc is faulty" error with Samsung SH-S223B drive - the error message was spurious as it's just the default the error handler assumes when it can't look up error 0x50. Tagged as ATAPI-1_38
Try a 3rd time to ReadData from a drive The ReadData function already has 2 workarounds for some quirks with Sony and Panasonic drives, using READ_CD to emulate the behaviour of READ_DATA because the latter didn't work on the particular models Acorn shipped. However, with DVD drives some firmware vendors have been a bit literal about what READ_CD does, so you end up in a situation of being able to read a CD but not a DVD in an otherwise identical setup. Change the retry loop from 2 goes to 3. On the 3rd attempt just try using READ_DATA(12) like the standard intended, so we retain the former workarounds and only use that command last. Note that READ_DATA(2) only has a 2 byte block count which would be a truncation from READ_CD's 3, so using READ_DATA(12) with a 4 byte block count keeps the command block shuffling simpler. Tested on a HP branded TS-H653 and Pioneer DVR-TD11RS with an ISO9660 DVD-R. Tagged as ATAPI-1_39
Fix null pointer dereference Detail: s/Module - Fix null pointer dereference in drive detection code if an ATAPI device is found which failed to respond to ADFS's identify packet Admin: Untested Should fix issue reported on forums: https://www.riscosopen.org/forum/forums/5/topics/3929 Tagged as ATAPI-1_40
Avoid unnecessary remainder calculations Detail: s/DriverCode - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as ATAPI-1_41
Fix slight endianness confusion 2 of 3 MODE_SENSE blocks were specifying the receiving buffer size little endian when it should be big. Fortunately, our buffer size is 0x0944 and 0x4409 is bigger than that, so there's always room to receive the response. Use objasm's {TRUE} for true. Tagged as ATAPI-1_42
Go straight to READ(12) rather than using READ CD emulation on new ATAPI drives In the central data transfer step (DriverCode.s around line 450) there are up to 3 goes at doing the transfer, attempting to work around some problems in <unspecified model> Sony drive and Panasonic CD-571B. Others may be affected similarly. However, the very latest combined DVD/CD reader, eg. SATA attached SH-224DB/BEBE, have given up entirely with READ CD. In particular, they do not error it, nor are any bytes transferred to the buffer. This falls foul of CDFSSoftATAPI's 3 step approach, because the absence of an error is taken as success and the (junk RMA) block passed up to CDFS. Unfortunately because the model of Sony reader is not mentioned in the sources nor CVS history we can't do a string match on the model name. Instead, we now look at the reply to IDENTIFY and look for any declaring ATAPI-5 or later. ATAPI-5 was released in 2000, which definitely post dates the workaround by 4 or 5 years. hdr/IDEdefs: declare offset for IDENTIFY to the version fields. Module.s: hook out the version (being careful that pre ATAPI-4 don't have this field). Make a note in the DriveFlag if READ(12) is suspect vintage. Variables.s: reintroduce the DriveFlag in the HAL case DriverCode.s: free up a register to load DriveFlag into, look at the DriveFlag, skip straight to READ(12) on ATAPI-5 or later. Tested on Titanium. Fixes bogus "CDFS does not support that type of disc" with a simple ISO9660 formatted DVD, due to an untouched RMA block being parsed by CDFS. Tagged as ATAPI-1_43
Fix drive lock status reporting for empty drives Detail: s/DriverCode - Change IsDrawerLocked handler to read the lock status from the drive via mode page &2A, rather than doing a completely unrelated TEST UNIT READY command. On the offchance that &2A isn't implemented, just fall back on our softcopy of the lock state, which is effectively what TEST UNIT READY was doing in the first place. Admin: Tested on Iyonix CD_IsDrawerLocked now returns a sensible value for empty drives, instead of a drive empty error Fixes issue reported on forums where CDFS iconbar menu doesn't allow empty drives to be ejected (for ATAPI, at least): https://www.riscosopen.org/forum/forums/4/topics/3652 Tagged as ATAPI-1_44
Logs for castle/RiscOS/Sources/HWSupport/DeviceFS from DeviceFS-0_71 to DeviceFS-0_73
Fix for handling of device driver buffer creation call PRM 2-612 says the device driver can modify R3-R6 during buffer creation in order to change the buffer creation parameters used with BufferManager. However, the subsequent logic in DeviceFS meant that if the buffer already existed the flags (R3) never got used. In practice this only affects the magic buffer numbers 0-9 retained for BBC Micro compatibility (Keyboard/Serial in/Serial out/Printer/Sound 0-3/Speech/Mouse), and of those only Serial & Parallel are in DeviceFS, and of those Parallel had a workaround, so really only the SerialDeviceDriver gains a fix here. Tested in an IOMD ROM. Tagged as DeviceFS-0_72
Avoid referencing free'd memory Detail: The Unlink macro also released the memory back to the RMA, but in 2 cases passed the old pointer around in a service call. Change Unlink to only remove from the linked list, and add a Free macro to do the release after the service call. Admin: Spotted by Colin Granville. Tagged as DeviceFS-0_73
Logs for castle/RiscOS/Sources/HWSupport/DMA from DMA-0_21 to DMA-0_23
Fix to argument mixup When reprogramming a buffer due to early overrun, R2 should be the length not the physical address. Tagged as DMA-0_22
Documentation update Detail: Doc/HAL_DMAAPI - Document the requirements of HAL devices and DMAManager clients with respect to memory barriers Admin: Documentation change, not tagged Not tagged
Add support for double buffered NoInitIRQ type DMA controllers Detail: Preprogram the current and next transfers before kicking off the first. Note that it is no longer possible to infer from the status call whether it's a double or single buffered controller, so a new HAL device flag is added to signal this. The new flag is only required for NoInitIRQ type DMA controllers, but other double buffered controllers may set it for information purposes. Admin: Submission from Elesar. Tested on Titanium HAL. Tagged as DMA-0_23
Logs for mixed/RiscOS/Sources/HWSupport/FPASC from FPASC-4_33 to FPASC-4_36
Support ARMv8 (and potentially some ARMv7) cores, and a bugfix. Detail: * In ARMv7 onwards, the undefined instruction processor vector can be entered for untaken conditional architecturally undefined instructions (and for these purposes, all FPA instructions can be considered architecturally undefined) so we now need to perform the condition code check in software even for the first FPA instruction in a run. * There were a few cases where the FPEmulator module itself does some untaken FPA instructions (to access a hardware FPA) before its undefined instruction handler is installed. These have been replaced with conditional branches over on the opposite condition. * Related bugfix: since ARMv5, the "NV" condition code space has been considered to represent different instruction encodings and because there were never any MCR2, CDP2 etc instructions for the FPA coprocessor, these cause the CPU to take the undefined instruction processor vector. But due to the nature of the previous condition code checks in our undefined instruction handler, an NV instruction that was first in a run of FPA instructions would always be executed, while one that was later in a run of FPA instructions would never be. This has now been changed so that they all generate an undefined instruction exception on ARMv5 onwards, wherever they are found. Admin: Tested on Raspberry Pi 3. Tagged as FPASC-4_34
Fix handling of instructions that fail the condition code check (take 2) Detail: coresrc/s/fpeundef - Fix FPEUndefHandler to make sure FPEReturn is called with Rwp pointing to the current context, not the global workspace. If the instruction which failed the condition code check was followed by one which passes the check, we'd end up trying to interpret the global workspace as a FP context, leading to unpredictable results (e.g. workspace corruption if the instruction writes to a register) Admin: Tested on Raspberry Pi 3 Fixes issue seen where "ADFLTD F1,F1,F0 : MVFS F0,F1" was corrupting the FPE context pointer due to MVFS writing to F0, causing a crash on all following FP instructions Also likely to fix issue reported on forums: https://www.riscosopen.org/forum/forums/11/topics/5265 Tagged as FPASC-4_35
Avoid self-modification for 26bit RAM builds Detail: riscos/Makefile - tweak FPEAnchor handling so that 26bit RAM builds use the legacy low FPEAnchor location instead of storing FPEAnchor locally. This results in a read-only module that can be used in custom ROMs, and saves a few bytes of space. Admin: Tested via building PlingSystem and checking FPEAnchorType is set correctly Tagged as FPASC-4_36
Logs for castle/RiscOS/Sources/HWSupport/IIC from IIC-0_18-4_5_2_8 to IIC-0_18-4_5_2_13
Error number alignment & minor tidying The trunk version of IIC uses &20301 as "IIC in use" by defining it locally at the top of the source, whereas the RISC OS 5 kernel (using the HAL branch of IIC) uses &20302. Since the trunk version with reentrancy checking was only ever shipped in STBs, take the allocation in Hdr:NewErrors as gospel and swap to using that. Other minor tidying: * Use Push/Pull instead of STM/LDM * Beef up some comments * Use Unix style filenames in the Makefile Built, but not tested. Tagged as IIC-0_18-4_5_2_9
Simplify 32 bitting None of the internal functions of IIC require flags preservation, so don't bother preserving them. Use PSR manipulation macros where possible instead of longhand. Tagged as IIC-0_18-4_5_2_10
Fix to work on pre-HAL machines The attempt to call OS_IICOp first corrupts r14, which is carefully stacked only to cause a prefetch abort on return. Stack r10 instead. Tested on RISC OS 4.02. Tagged as IIC-0_18-4_5_2_11
Add command to list the IIC devices New command *IICDevices probes each bus and reports what it finds. When an ACK to an address read is received Service_IIC is set round to see if any resident device drivers have definitive knowledge about what's at the address (cf. Service_PCI), otherwise a guess will be made based on a small lookup table in the Messages. hdr/IIC: Subreason for name lookup IICMod.s: Loop over the buses, report what's there. CmdHelp/Messages: New syntax, error messages, and table of IIC devices Tested on IOMD, Titanium, and a Raspberry Pi 2. Tagged as IIC-0_18-4_5_2_12
Switch out pre-HAL code This is the HAL branch of the module, so there's no need to carry round all the IOC poking code which never gets called. Tagged as IIC-0_18-4_5_2_13
Logs for castle/RiscOS/Sources/HWSupport/Parallel from Parallel-0_78 to Parallel-0_79
Remove workaround for DeviceFS bug Fixed properly in DeviceFS-0_72. Tagged as Parallel-0_79
Logs for castle/RiscOS/Sources/HWSupport/PCI from PCI-0_13 to PCI-0_15
Implement missing memory attribute support for PCI_HardwareAddress & PCI_LogicalAddress Detail: s/Interface - Now that OS_Memory 13 allows the cache policy to be specified, PCI_HardwareAddress & PCI_LogicalAddress (which have always been documented as allowing the policy to be specified) can have support for it implemented. PCI_LogicalAddres now also has support for specifying the cacheability implemented (was also documented but unimplemented). Admin: Tested on Iyonix Tagged as PCI-0_14
Documentation update Detail: doc/PCI_API - Mention OS_MMUControl 2 in addition to OS_MMUControl 1 when talking about memory barriers Admin: Documentation change, not tagged Not tagged
Fix PCI_RAMAlloc to be physically aligned Detail: Although PCI_RAMAlloc claims to allocate blocks at the given alignment, both of the two implementations available (OS_Heap 7 and non-OS_Heap 7) perform the alignment and boundary checks using the logical address of the block. Most of the time this seems to work (few clients need anything greater than 4K page alignment), but for those clients that do need greater alignment, this can easily lead to failure. s/Memory - Change PCI_RAMAlloc implementation so that it ensures the block of memory it uses is aligned in both logical and physical spaces. Really it's only the physical alignment we care about, but for now the easiest/safest fix is to match the alignment and stick with the current logically-aligned allocation routines. s/GetAll, s/Interface, s/Memory - Use definitions from Hdr:OSMem where appropriate Admin: Tested on Raspberry Pi 3 SMP module is now able to correctly get a 16K-aligned block for use as L1PT Note that skipping the first few pages of the area recommended by OS_Memory 12 does introduce the risk of non-aligned/non-contiguous areas being returned once the DA becomes close to full. But, for the case where the desired 32MB physically aligned block isn't available and we fall back to smaller block sizes, there's always been the danger that we'll start returning invalid blocks to the client (whether due to the client asking for an alignment we can't satisfy, or the DA exceeding the limits of the aligned area OS_Memory suggested to us) Tagged as PCI-0_15
Logs for castle/RiscOS/Sources/HWSupport/Podule from Podule-1_70 to Podule-1_72
Accept NIC or NIC ROM base as section in R3 Detail: This pair of addresses was accepted prior to the hardware abstraction for Tungsten, but was lost as it's not mentioned in PRM 5a. This restores the ability to use the NIC or NIC ROM as a base in R3. Admin: Required by Econet. Tagged as Podule-1_71
Build fix Module_Title->Module_TitleStr from Kernel-5_54. Tagged as Podule-1_72
Logs for castle/RiscOS/Sources/HWSupport/Portable from Portable-0_69 to Portable-0_70
Remove use of RESOURCEEXTRA Requires BuildSys-6_91. Tagged as Portable-0_70
Logs for castle/RiscOS/Sources/HWSupport/SCSI/SCSIDriver from SCSIDriver-1_18 to SCSIDriver-1_19
Free up some command namespace Change command to *ScsiDevices to match the other similar ones (IIC, SDIO, GPIO, SPI, SATA etc) with the intention that *Devices can in future be repurposed to list all subsets. For now, alias one to the other during the transition. Tagged as SCSIDriver-1_19
Logs for mixed/RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_19 to SCSISoftUSB-0_21
Invert IRQ restore logic Detail: If IRQs were not off, reenable them on exit. This is an academic fix as the CMHG veneers would reenable them when the CPSR is restored, but now self consistent with the other exits in this file. Admin: Spotted by Colin Granville. Not tested here. Tagged as SCSISoftUSB-0_20
Correct case sensitive compare never matching In the module post init service call handler SCSIdriver -> SCSIDriver. While a caseless compare would also solve this, the only disc loading copy in RO5x0Hook loads the disc based SCSIDriver first anyway, so there's always a matched set there (as in ROM). Remove unused module post final service call handler too. module.c: adjust case, remove unused code modhdr.cmhg: remove unused service call table entry glue.c: adjust case (of debug/comments) Makefile: simplified given recent shared makefile improvements, notably the debug flags are now picked up from CDFLAGS/CMHGDFLAGS based on the target !MkDebug/!MkRam: pass in the target for which the obey file relates rather than 'all' Tagged as SCSISoftUSB-0_21
Logs for castle/RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_11 to SCSISwitch-2_14
Don't pass silly error numbers to MsgTrans Detail: c/module - Don't pass silly error numbers to MessageTrans_ErrorLookup - the kernel will now fault them. Admin: Tested on Raspberry Pi 3 Fixes a case of "bad error pointer" seen during ROM init Tagged as SCSISwitch-2_12
Prevent command unlink from winding past the start of the list Detail: When a scsi command terminates prematurely the command structure needs to be removed from the relevant linked list. The code for doing this could wind back to before the start of teh list, resulting in a data abort. see unqueue_cmd_slot in c.scsi. Admin: tested in iMx6 Tagged as SCSISwitch-2_13
Free up some command namespace Change command to *ScsiDevices to match the other similar ones (IIC, SDIO, GPIO, SPI, SATA etc) with the intention that *Devices can in future be repurposed to list all subsets. For now, alias one to the other during the transition. Tagged as SCSISwitch-2_14
Logs for castle/RiscOS/Sources/HWSupport/Sound/Sound0 from Sound0-1_71 to Sound0-1_72
Update header to reflect Sound0HAL changes Detail: hdr/Sound - Updated to match Sound0HAL-1_84; device selection/enumeration SWIs have been renamed to "Controller" to avoid ambiguous terminology Admin: Untested Tagged as Sound0-1_72
Logs for castle/RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_40 to Sound1-1_41
Avoid unnecessary remainder calculations Detail: s/Sound1 - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Tagged as Sound1-1_41
Logs for castle/RiscOS/Sources/Internat/Territory/Manager from Manager-0_56 to Manager-0_57
Re-evaluate AutoDST state when RTC is synchronised Detail: s/Daylight, s/ModHead - On Service_RTCSynchronised, re-evaluate the current DST state if AutoDST is enabled. Should help ensure that the DST state remains correct whenever OS_ResyncTime is used to reset the soft RTC. Admin: Tested in Iyonix ROM image Tagged as Manager-0_57
Logs for castle/RiscOS/Sources/Kernel from Kernel-5_35-4_79_2_261 to Kernel-6_01
Fix aborts on Cortex-A15 when using lazy task swapping Detail: s/VMSAv6 - After AMB_LazyFixUp has modified the page tables, perform a DSB + ISB to ensure the page table write has completed before we return from the abort handler. Admin: Tested on IGEPv5 Fixes aborts seen in desktop, e.g. when !CloseUp is rebuilding its sprite (heavy RAM write activity delaying pagetable write?) Tagged as Kernel-5_35-4_79_2_262
Get a tag for 5.22 Tagged as Kernel-5_35-4_79_2_263
Back to odd numbered development Tagged as Kernel-5_35-4_79_2_264
Ensure IO memory is marked as non-executable Detail: s/HAL - The VMSAv6/v7 memory model allows speculative instruction fetches from any memory (including device/strongly-ordered), unless the memory is marked as non-executable. So to prevent interference with read-sensitive devices we must make sure all appropriate IO memory is marked as non-executable. Admin: Tested on IGEPv5 Fixes data corruption seen when reading from SD card Tagged as Kernel-5_35-4_79_2_265
Fix HiProcVecs build. Remove old-style PublicWS definitions. Detail: s/ARMops - Added extra LTORG to fix HiProcVecs build error for some platforms hdr/PublicWS - Remove the old (non-Legacy_) workspace exports, and add a comment explaining how the newer Legacy_ exports should be used. Admin: HiProcVecs ROMs for various platforms now appear to build OK Untested at runtime Tagged as Kernel-5_35-4_79_2_266
Add extra OS_DynamicArea subreason Subreason 20 takes a logical address and tells you which area it lies in, including system areas (ie. those returned by OS_Memory 16. This allows areas to change type in future without the caller needing to care where the kernel put it. Tagged as Kernel-5_35-4_79_2_267
Enable high processor vectors/zero page relocation. OS_DynamicArea 20 fixes. Detail: Makefile, hdr/Options - By default enable high processor vectors/zero page relocation for compatible machines, but also allow the components file to override the setting if required s/ChangeDyn - Fix OS_DynamicArea 20 to check the correct range for doubly mapped areas, and to correctly localise its error message Admin: Tested on Iyonix Tagged as Kernel-5_35-4_79_2_268
Add builtin software pointer support Detail: This set of changes adds support for rendering software mouse pointers directly in the kernel, rather than requiring graphics drivers to render them themselves as was the case previously. If a driver returns from GraphicsV_Features with the 'hardware pointer' bit clear, and a call to GraphicsV_UpdatePointer is returned unclaimed, then the kernel will step in and render a software pointer. This allows selective control over which areas of the screen the software pointer is used (e.g. if hardware only supports its use in some areas) hdr/KernelWS - Shrink PointerXEigFactor to 1 byte to free up some space for tracking the display log2bpp. Use 8 words of space for tracking software pointer state. s/vdu/vducursoft - Adjust existing the existing calls to the software pointer RemovePointer/RestorePointer functions so that they're called with IRQs enabled s/vdu/vdudriver - Keep track of display log2bpp. Claim/release memory needed for restoring pixels under software pointer. s/vdu/vdugrafhal - Update HAL_VideoUpdatePointer handling so that 0 can be returned in a1 to indicate the GraphicsV call should be left unclaimed. s/vdu/vdupalxx - Trigger updates of the cached software pointer palette whenever it's likely to become invalidated. s/vdu/vdupointer - Add software pointer implementation. Relying on a SpriteExtend OS_SpriteOp would be nice, but we're in the background so have to do plotting & unplotting manually. ColourTrans is used to cache the pointer palette colours for the current mode, although we're limited to calling it from a callback. Admin: Tested on Raspberry Pi & BB-xM Pointer is very flickery under some circumstances (e.g. running !CloseUp) due to needing to plot/unplot around any VDU driver screen access (as per text cursor). So code may need revising in future once we can trap reads/writes from specific screen memory pages. Tagged as Kernel-5_35-4_79_2_269
Fix software pointer being enabled when it isn't needed. Improve HangWatch support. Detail: s/vdu/vdupointer - For any mode where the software pointer is usable, RestorePointer was restoring the software pointer regardless of whether it was in use at the time RemovePointer was called. This would cause both the software & hardware pointers to be briefly enabled at the same time, potentially causing flickering or other glitches. Fix the issue by making sure RestorePointer only restores if the software pointer was actually in use at the time RemovePointer was called. Also, attempt to deal with the situation where the pointer might have moved to a location where the software pointer is no longer required. s/Middle - Improve integration of HangWatch with the abort handler - avoid overwriting the top of the SVC stack so that it can be preserved for the HangWatch dump. Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_270
Expose more areas via OS_ReadSysInfo 6 & OS_Memory 16. Expose processor vectors base + size via OS_PlatformFeatures. Detail: hdr/KernelWS - Define processor vectors address. Currently same as ZeroPage, but in the future will differ for some machines. hdr/OSRSI6, s/Middle - Expose VecPtrTab & NVECTORS via OS_ReadSysInfo items 85 & 86 s/Kernel - Add OS_PlatformFeatures 32, for returning the base + size of the processor vectors s/MemInfo - Add areas 12 thru 15 to OS_Memory 16, for reporting ZeroPage, ProcVecs, DebuggerSpace and ScratchSpace. The task manager can now use these for calculating memory usage instead of assuming 32K workspace from &0-&8000. Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_271
Add HAL device numbers for Raspberry Pi SPI controllers Detail: hdr/HALDevice - Add a new device type for SPI controllers, and allocate two device numbers for use on the Pi (to differentiate between the main and aux controllers) Admin: Tested on Raspberry Pi B & 2 B Tagged as Kernel-5_35-4_79_2_272
Improve support for VMSAv6 cache policies & memory types. Expose raw ARMops via OS_MMUControl & cache information via OS_PlatformFeatures. Detail: Docs/HAL/ARMop_API - Document two new ARMops: Cache_Examine and IMB_List hdr/KernelWS - Shuffle workspace round a bit to allow space for the two new ARMops. IOSystemType now deleted (has been deprecated and fixed at 0 for some time) s/ARM600 - Cosmetic changes to BangCam to make it clearer what's going on. Add OS_MMUControl 2 (get ARMop) implementation. s/ARMops - Switch out different ARMop implementations and XCB tables depending on MMU model - helps reduce assembler warnings and make it clearer what code paths are and aren't possible. Add implementations of the two new ARMops. Simplify ARM_Analyse_Fancy by removing some tests which we know will have certain results. Use CCSIDR constants in ARMv7 ARMops instead of magic numbers. Update XCB table comments, and add a new table for VMSAv6 s/ChangeDyn - Define constant for the new NCB 'idempotent' cache policy (VMSAv6 normal, non-cacheable memory) s/HAL - Use CCSIDR constants instead of magic numbers. Extend RISCOS_MapInIO to allow the TEX bits to be specified. s/Kernel - OS_PlatformFeatures 33 (read cache information) implementation (actually, just calls through to an ARMop) s/MemInfo - Modify VMSAv6 OS_Memory 0 cache/uncache implementation to use the XCB table instead of modifying L2_C directly. This allows the cacheability to be changed without affecting the memory type - important for e.g. unaligned accesses to work correctly. Implement cache policy support for OS_Memory 13. s/Middle - Remove IOSystemType from OS_ReadSysInfo 6. s/VMSAv6 - Make sure BangCam uses the XCB table for working out the attributes of temp-uncacheable pages instead of manipulating L2_C directly. Add OS_MMUControl 2 implementation. s/AMBControl/memmap - Update VMSAv6 page table pokeing to use XCB table s/PMF/osinit - Remove IOSystemType reference, and switch out some pre-HAL code that was trying to use IOSystemType. Admin: Tested on Iyonix, ARM11, Cortex-A7, -A8, -A9, -A15 Note that contrary to the comments in the source the default NCB policy currently maps to VMSAv6 Device memory type (as per previous kernel versions). This is just a temporary measure, and it will be switched over to Normal, non-cacheable once appropriate memory barriers have been added to the affected IO code. Tagged as Kernel-5_35-4_79_2_273
Fix DebuggerSpace page to be cacheable Detail: s/HAL - A typo seems to have resulted in the HiProcVecs DebuggerSpace page being mapped in as NCB instead of CB. Fix it. Admin: Untested. Tagged as Kernel-5_35-4_79_2_274
Added iMx6 spi device and GPIO revision types to relevant device headers Detail: Admin: Tagged as Kernel-5_35-4_79_2_275
added iMx6Q GPIO Device type (omitted earlier) Detail: Admin: Tagged as Kernel-5_35-4_79_2_276
Correct typos .. - sign not a good idea in header file variable name Detail: Admin: Tagged as Kernel-5_35-4_79_2_277
Fix some re-entrancy issues. Minor optimisations. Detail: s/TickEvents: - Change initial TickNodeLeft check in ProcessTickEventChain to exit on HI rather than NE. This fixes a case where the ticker event chain can become corrupted if ProcessTickEventChain is re-entered while in the middle of processing multiple nodes which are due to fire at the same time (after initial node is removed from the list, head node will be left with a TickNodeLeft value of 0) - Move "IRQ's off again" PSR write to be after the 10 label, to ensure that IRQs are off before we examine/process the next node (naughty CallEvery may have exited with IRQs enabled) - Stop using crusty old WritePSRc macro (currently generates 4 instructions for something that should be 1) - Also get rid of ARM2-era NOPs - Optimise CallEvery check to be MOVS rather than LDR + CMP Admin: Tested on Pandaboard Should fix problem reported on forums with apparent wrap-around of TickNodeLeft value of first node: https://www.riscosopen.org/forum/forums/5/topics/3544 May also fix other ticker corruption problems: https://www.riscosopen.org/forum/forums/4/topics/2708 Tagged as Kernel-5_35-4_79_2_278
Replace WriteBuffer_Drain ARMop with a suite of memory barrier ARMops Detail: - Docs/HAL/ARMop_API - Updated with documentation for the new ARMops. - s/ARMops - Set up pointers for the new memory barrier ARMops. Add full implementations for ARMv6 & ARMv7; older architectures should be able to get by with a mix of null ops & write buffer drain ops. Update ARMopPtrTable to validate structure against the list in hdr/OSMisc - hdr/KernelWS - Reserve workspace for new ARMops. Free up a bit of space by limiting ourselves to 2 cache levels with ARMv7. Remove some unused definitions. - hdr/OSMisc - New header defining OS_PlatformFeatures & OS_MMUControl reason codes, OS_PlatformFeatures 0 flags, and OS_MMUControl 2 ARMop indices - Makefile - Add export rules for OSMisc header - hdr/ARMops, s/ARM600, s/VMSAv6 - Remove CPUFlag_* and MMUCReason_* definitions. Update OS_MMUControl write buffer drain to use DSB_ReadWrite ARMop (which is what most existing write buffer drain implementations have been renamed to). - s/GetAll - Get Hdr:OSMisc - s/Kernel - Use OS_PlatformFeatures reason code symbols - s/vdu/vdudecl - Remove unused definition Admin: Tested on ARM11, Cortex-A8, Cortex-A9 Tagged as Kernel-5_35-4_79_2_279
Switch default NCB cache policy to MergingIdempotent (i.e. Normal, non-cacheable) Detail: s/ARMops - Change VMSAv6 cache policy mapping so that default NCB policy maps to Normal, non-cacheable memory rather than Device memory. This allows unaligned accesses to work, and also delivers some major performance improvements for some activities (write performance seems about 2x better than Device) Docs/HAL/ARMop_API - Wrap the new barrier ARMop description text to match the rest of the file Admin: Tested on ARM11, Cortex-A7, -A8, -A9 Note - relaxed memory consistency rules for Normal vs. Device mean that now more than ever, developers authoring device drivers for ARMv6+ need to be careful to use memory barriers in all the right places (preferably the new ARMop barriers exposed by OS_MMUControl 2 to ensure compatibility with all machines) Tagged as Kernel-5_35-4_79_2_280
Fix examination of L2 cache Detail: s/ARMops - In Analyse_WB_CR7_Lx, we need to check against Cache_Lx_MaxLevel*2, because the cache size selection register counts I + D caches separately Admin: Tested on IGEPv5 Tagged as Kernel-5_35-4_79_2_281
Added 3 HALDevice headers - SPI, Ether, and AHCI Detail: Admin: Tagged as Kernel-5_35-4_79_2_282
Corrected makefile omissions. Removed errant tab characters from EtherDevice header Detail: Admin: Tagged as Kernel-5_35-4_79_2_283
Add initial support for "physical memory pools" Detail: This set of changes adds support for "physical memory pools" (aka PMPs), a new type of dynamic area which allow physical pages to be claimed/allocated without mapping them in to the logical address space. PMPs have full control over which physical pages they use (similar to DAs which request specific physical pages), and also have full control over the logical mapping of their pages (which pages go where, and per-page access/cacheability control). Currently the OS makes use of two PMPs: one for the free pool (which now has a logical size of zero - freeing up gigabytes of logical space), and one for the RAM disc (logical size of 1MB, allowing for a physical size limited only by the amount of free memory) Implementing these changes has required a number of other changes to be made: * The CAM has been expanded from 8 bytes per entry to 16 bytes per entry, in order to allow each RAM page to store information about its PMP association * The system heap has been expanded to 32MB in size (from just under 4MB), in order to allow it to be used to store PMP page lists (1 word needed per page, but PMP pages may not always have physical pages assigned to them - so to allow multiple large PMPs to exist we need more than just 1 word per RAM page) * The &FA000000-&FBFFFFFF area of fixed kernel workspace has been shuffled around to accomodate the larger CAM, and the system heap is now located just above the RMA. * SoftResets code stripped out (unlikely we'll ever want to fix and re-enable it) * A couple of FastCDA options are now permanently on * Internal page flags shuffled around a bit. PageFlags_Unavailable now publicly exposed so that PMP clients can lock/unlock pages at will. * When OS_ChangeDynamicArea is asked to grow or shrink the free pool, it now implicitly converts it into a shrink or grow of application space (which is what would happen anyway). This simplifies the implementation; during a grow, pages (or replacement pages) are always sourced from the free pool, and during a shrink pages are always sent to the free pool. File changes: - hdr/KernelWS - Extend DANode structure. Describe CAM format. Adjust kernel workspace. - hdr/OSRSI6, s/Middle - Add new item to expose the CAM format - hdr/Options - Remove SoftResets switch. Add some PMP switches. - s/ARM600, s/VMSAv6 - Updated for new CAM format. Note that although the CAM stores PMP information, BangCamUpdate currently doesn't deal with updating that data - it's the caller's responsibility to do so where appropriate. - s/ChangeDyn - Lots of changes to implement PMP support, and to cope with the new CAM format. - s/HAL - Updated to cope with new CAM format, and lack of logical mapping of free pool. - s/MemInfo - Updated to cope with new CAM format. OS_Memory 0 updated to cope with converting PPN to PA for pages which are mapped out. OS_Memory 24 updated to decode the access permissions on a per-page basis for PMPs, and fixed its HWM usage for sparse DAs. - s/NewReset - Soft reset code and unused AddCamEntries function removed. Updated to cope with new CAM format, PMP free pool, PMP RAMFS - s/AMBControl/allocate - Update comment (RMA hasn't been used for AMBControl nodes for a long time) - s/AMBControl/growp, s/AMBControl/memmap, s/AMBControl/shrinkp - Update for new CAM format + PMP free pool - s/vdu/vdudriver - Strip out soft reset code. Admin: Tested on Pandaboard This is just a first iteration of the PMP feature, with any luck future changes will improve functionality. This means APIs are subject to change as well. Tagged as Kernel-5_35-4_79_2_284
Remove OS_Memory 10 and associated code Detail: s/MemInfo - Remove OS_Memory 10 (free pool locking). Locking the free pool has never been a very nice thing to do, so now that there's no logical mapping of the free pool it seems like it's a good time to outlaw the behaviour altogether. s/ChangeDyn - No free pool locking means one less thing to check when claiming the OS_ChangeDynamicArea mutex. hdr/KernelWS - VRAMRescue_control workspace variable is no longer needed Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_285
Fix IOMD build Detail: s/ChangeDyn - Differing zero page workspace layout between HiProcVecs {TRUE} and {FALSE} means the difference between FreePoolDANode being a valid 8 bit immediate constant or not. Just use a long-form LDR instead since the code in question isn't performance-critical. Admin: Tested briefly under RPCEmu Tagged as Kernel-5_35-4_79_2_286
Misc memory management tweaks & fixes Detail: s/ChangeDyn - Fix OS_DynamicArea 20 to work properly with sparse & PMP DAs. It now checks against the max extent of the area rather than the current size; this matches the logic used for checking fixed system workspace areas. The call only determines the ownership of a logical address, and it's considered the caller's responsibility to check if there's actually a page at the given address. s/ChangeDyn - Revise OS_DynamicArea 25 to remove the redundant 'PMP page flags' entry, and to allow pages to be looked up by either PMP page index, phys page number, or DA page index s/ChangeDyn - Tidy up InitDynamicAreas by adding the NextFreePage routine to help determine the next page to be added to the free pool. s/AMBControl/Workspace, s/AMBControl/main, s/AMBControl/memmap - Fix lazy mapping in of pages to use the correct L2PT flags for the default CB cache policy s/AMBControl/allocate - Get rid of magic constant when extracting page flags from DA flags, and make note of the fact that assorted bits of code ignore the flags s/AMBControl/growp, s/AMBControl/shrinkp - Reverse the page order when growing/shrinking areas, to match OS_ChangeDynamicArea. This helps both DAs and application space to have pages allocated to them in contiguous physical order - which in turn helps produce shorter, more optimal scatter lists for DMA Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_287
Updated some CMOS default settings for 'CortexA9' builds Detail: default SCSIFSDrive to 4, and both FontMax and FontSize to their max values. (the machines in question have a min of 512Meg of ram - being miserly with font caches is unhelpful) Admin: tested on iMx6 Tagged as Kernel-5_35-4_79_2_288
Take into account bus speed when determining IIC op max retry count Detail: s/PMF/IIC - when dealing with IIC transfers which use the high-level HAL API, take into account the bus speed when calculating the max retry count. Otherwise if (e.g.) writing to CMOS we may give up before the device has recovered from the previous write (which is typically listed as a max time of 5ms) Admin: Fixes issues with CMOS checksum not being updated correctly if using IIC bus speeds > 100khz Tagged as Kernel-5_35-4_79_2_289
Change some default CMOS settings, using custom build switch Detail: Default to SCSI::4 for boot driver is custom switch at buildtime (EnforceSCSI4) is defined. 2 fontcache items also defaulted with this switch Admin: tested on iMx6 Tagged as Kernel-5_35-4_79_2_290
OS_ChangeDynamicArea tweaks and fixes Detail: s/ChangeDyn - A few fixes to make behaviour be a closer match for the pre-PMP code, and a bit of tidying to get rid of redundant code paths: - Remove shrinkable DA checks from AreaShrink - the source of the op is never the free pool, so TryToShrinkShrinkables wouldn't have done anything anyway - Fix ShrinkFreePoolToAppSpace to behave more like old OS_ChangeDynamicArea when it was asked to shrink the free pool - allow partial moves (if move amount too large to fit in app space), shrink shrinkables if free pool is unable to satisfy request, and call CheckAppSpace to make sure app space is OK with being changed - Remove redundant logic from AreaGrow for clamping grow size to free pool max size (if dest was free pool - dest will never be free pool with current implementation). "Dest is apl space, moving reduced amount" comment was also inaccurate. - Fix AreaGrow logic for taking memory from application space to only do so if the dest isn't application space (I can't see anything in the old implementation to protect against this - but, then again, the old implementation didn't seem to fully deal with grows of application space properly anyway, e.g. MemLimit would be updated on a free pool shrink, but not on an app space grow) - Add extra sanity check to AreaGrow after taking memory from application space Admin: Tested on iMx6 Fixes issue with application space having little or no memory if not booting to desktop (due to free pool shrink performed by kernel failing due to shrink amount being larger than app space max size) Tagged as Kernel-5_35-4_79_2_291
Fix handling of FIQ mode exceptions Detail: s/Middle - When handling an FIQ-mode exception, protect the register dump pointer around the call to HAL_FIQDisableAll Admin: Tested on Raspberry Pi Fixes data abort within kernel when an abort occurs is FIQ mode Tagged as Kernel-5_35-4_79_2_292
Fix application space & shrinkable DA shrinking within PMP grow code Detail: s/ChangeDyn - Fix a couple of places where registers were being clobbered, preventing application space & shrinkable DA shrinking logic from being invoked correctly when performing a PMP PhysOp call Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_293
Fix bad pointer dereference and other issues with *ScreenLoad Detail: s/vdu/vdugrafj - Rewrite WritePaletteFromSprite to fix some issues with the logic which decides whether to change screen mode: - ModeNo was always being treated as if it was a mode selector block, causing bad pointer dereferences if it was actually a numbered mode. Prior to zero page protection the code would have eventually stumbled its way through to the mode change code. - For checking the pixel format, only the Log2BPP was being compared, resulting in code deciding that (e.g.) modes with differing RGB order were the same - However the eigen value checking was also broken (checking wrong part of generated mode selector block), causing the mode change logic to always be taken s/vdu/vdugrafdec - Increase size of SloadModeSel so it's actually large enough to hold the generated mode selector - old code would have run off the end a bit (thankfully, it was the last thing in that particular workspace block) Admin: Tested on BB-xM, *ScreenLoad'ing sprites from various modes Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/3649 Tagged as Kernel-5_35-4_79_2_294
Extended HAL SPI device. Still work in progress Tagged as Kernel-5_35-4_79_2_295
Hand off ownership of GPIODevice The kernel has no place holding this header export, since it doesn't use it nor implement any of its interfaces. Tagged as Kernel-5_35-4_79_2_296
Raise some workspace limits, define extra devices Detail: Raise the maximum number of interrupts and IIC buses acceptable, to account for the OMAP5 port. Add TLV320/TLV320/SDMA/SDMA/AM572x/GC320/CPSW/SynopsisDWC for Titanium. Add OMAP5/OMAP5/OMAP5/TWL6037/OMAP5/OMAP5/SynopsisDWC for OMAP5. Admin: There's likely some rationalisation to be had here, these controllers especially across the OMAP3/4/5 are probably the same thing really and don't merit individual allocations. Tagged as Kernel-5_35-4_79_2_297
New method to control default CMOS settings Detail: Rather than fill the Kernel sources with an ever-increasing number of platform-specific switches to control the default CMOS settings, this change introduces a variable which passes the requirements direct from the Components file to the Kernel. Since it uses a comma-separated list of address/value pairs, it is inherently extensible. All the symbolic names of addresses from Hdr:CMOS are available, and any valid objasm expression can be used for the value. Admin: This removes the need for the EnforceSCSI4 switch, and leaves almost no uses of the Machine variable in the Kernel either. Tagged as Kernel-5_35-4_79_2_298
Fix overriding of default CMOS settings. Reserve HAL device ID for the official Raspberry Pi touchscreen/display. Detail: s/PMF/i2cutils - Move $CMOS_Override to the start of DefaultCMOSTable, so that it can be used to override values which are already in the table (since NVMemory_ResetValue stops its search on the first address match) hdr/HALDevice - Add new Touchscreen device type and reserve an ID for the official Pi touchscreen controller Admin: Tested on Raspberry Pi Fixes filesystem incorrectly defaulting to ADFS Tagged as Kernel-5_35-4_79_2_299
Allocate some extra HAL device IDs Detail: hdr/HALDevice - Allocate device IDs for iMX6 HDMI audio controller, and a generic software mixer Admin: Tested in iMX6 ROM build Tagged as Kernel-5_35-4_79_2_300
Add OS_ReadSysInfo 9,6 and 9,7 Subreason 7 returns a string naming the HAL platform. Use HAL entry 97 to get this, and obsolete 97/98/99 in favour of using a HAL device. Line up the HAL video entries to match the others. Subreason 6 is just back filling one ROL added, testing this on RISC OS Select just returned the OS name so we do the same now (same as subreason 0, not sure what ROL's distinction was for). Allocate a HAL device for PATA IDE controllers, and the 2 known ones to date - Tungsten and IOMD systems. Tagged as Kernel-5_35-4_79_2_301
Fix a couple of mode specifier/string conversion issues Detail: s/vdu/vduswis - Fix conversion of mode specifier to mode string so that the X eigen value is only reported in the mode string if it was included in the mode specifier; previously was erroneously basing the decision on whether the Y eigen was specified, resulting in e.g. "EX4294967295" if only the Y eigen was included - Fix a stack imbalance causing the conversion of mode string to mode specifier crashing (typically with branch through zero) if an invalid eigen value is specified in the string (e.g. EX-1 as above) Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_302
Define some extra platform feature flags For disc based applications (ie. those that don't know the architecture at build time, like a ROM would) we have OS_PlatformFeatures to provide an abstract way of seeing when new chunks of instructions get added. Back at ARMv6 ARM deprecated SWP, but currently we have no way of knowing that at runtime without grubbing round the coprocessor registers. Add 3 new flags * One to say LDR/STREX is (not) available * One to say that SWP/SWPB is (not) available * One to say that CLREX and LDR/STREX[B|H|D] is (not) available shame it took a few goes for ARM to bring in these variants, requiring 3 flags not 1. Also: Condition the exception on vector read code on No32bitCode, rather than just having it permanently disabled. Improve the HAL device docs. Tested on a StrongARM Risc PC, Model B Pi, and Titanium. Tagged as Kernel-5_35-4_79_2_303
Support for ARMv8 Detail: * Filled in CPU tables for publicly documented ARMv8 cores (Cortex-A53,57,72). * Recent ARM ARMs (e.g. section B1.9.2 of the ARMv7AR ARM) permit the core to take an undefined instruction exception upon encountering even not-taken conditional undefined instructions. This option is exercised by the Cortex-A53, unlike all ARMv7 cores previously supported by RISC OS. This unfortunately trips up a lot of kernel code that adapts to different architectures at runtime. These have now all been replaced with branches over the affected code on the opposite condition. * Fixed bug in HAL_InvalidateCache_ARMvF: for the main body of the loop, which was written as though to act on the CLIDR register, r8 actually contained the CTR register instead. Admin: Tested on Raspberry Pi 3 Tagged as Kernel-5_35-4_79_2_304
OS_Memory 13/14/15 fixes Detail: s/HAL - Change RISCOS_AccessPhysicalAddress & RISCOS_ReleasePhysicalAddress (aka OS_Memory 14 & 15) to use the MMU_ChangingUncached ARMop instead of TLB_InvalidateEntry, as on ARMv6+ the MMU version ensures the write has been flushed to be visible by the TLB, while the TLB invalidate call doesn't. Fix RISCOS_MapInIO (aka OS_Memory 13) not detecting regions which have already been mapped in due to L1_XN flag masking issue. Also issue DSB+ISB after the page table write(s) to ensure it's visible by the TLB hardware. Admin: Tested on IGEPv5 Tagged as Kernel-5_35-4_79_2_305
Cache maintenance fixes Detail: This set of changes tackles two main issues: * Before mapping out a cacheable page or making it uncacheable, the OS performs a cache clean+invalidate op. However this leaves a small window where data may be fetched back into the cache, either accidentally (dodgy interrupt handler) or via agressive prefetch (as allowed for by the architecture). This rogue data can then result in coherency issues once the pages are mapped out or made uncacheable a short time later. The fix for this is to make the page uncacheable before performing the cache maintenance (although this isn't ideal, as prior to ARMv7 it's implementation defined whether address-based cache maintenance ops affect uncacheable pages or not - and on ARM11 it seems that they don't, so for that CPU we currently force a full cache clean instead) * Modern ARMs generally ignore unexpected cache hits, so there's an interrupt hole in the current OS_Memory 0 "make temporarily uncacheable" implementation where the cache is being flushed after the page has been made uncacheable (consider the case of a page that's being used by an interrupt handler, but the page is being made uncacheable so it can also be used by DMA). As well as affecting ARMv7+ devices this was found to affect XScale (and ARM11, although untested for this issue, would have presumably suffered from the "can't clean uncacheable pages" limitation) The fix for this is to disable IRQs around the uncache sequence - however FIQs are currently not being dealt with, so there's still a potential issue there. File changes: - Docs/HAL/ARMop_API, hdr/KernelWS, hdr/OSMisc - Add new Cache_CleanInvalidateRange ARMop - s/ARM600, s/VMSAv6 - BangCam updated to make the page uncacheable prior to flushing the cache. Add GetTempUncache macro to help with calculating the page flags required for making pages uncacheable. Fix abort in OS_MMUControl on Raspberry Pi - MCR-based ISB was resetting ZeroPage pointer to 0 - s/ARMops - Cache_CleanInvalidateRange implementations. PL310 MMU_ChangingEntry/MMU_ChangingEntries refactored to rely on Cache_CleanInvalidateRange_PL310, which should be a more optimal implementation of the cache cleaning code that was previously in MMU_ChangingEntry_PL310. - s/ChangeDyn - Rename FastCDA_UpFront to FastCDA_Bulk, since the cache maintenance is no longer performed upfront. CheckCacheabilityR0ByMinusR2 now becomes RemoveCacheabilityR0ByMinusR2. PMP LogOp implementation refactored quite a bit to perform cache/TLB maintenance after making page table changes instead of before. One flaw with this new implementation is that mapping out large areas of cacheable pages will result in multiple full cache cleans while the old implementation would have (generally) only performed one - a two-pass approach over the page list would be needed to solve this. - s/GetAll - Change file ordering so GetTempUncache macro is available earlier - s/HAL - ROM decompression changed to do full MMU_Changing instead of MMU_ChangingEntries, to make sure earlier cached data is truly gone from the cache. ClearPhysRAM changed to make page uncacheable before flushing cache. - s/MemInfo - OS_Memory 0 interrupt hole fix - s/AMBControl/memmap - AMB_movepagesout_L2PT now split into cacheable+non-cacheable variants. Sparse map out operation now does two passes through the page list so that they can all be made uncacheable prior to the cache flush + map out. Admin: Tested on StrongARM, XScale, ARM11, Cortex-A7, Cortex-A9, Cortex-A15, Cortex-A53 Appears to fix the major issues plaguing SATA on IGEPv5 Tagged as Kernel-5_35-4_79_2_306
Fix crash when making SVC stack uncacheable. Fix poor Pi 3 memory benchmark performance Detail: s/MemInfo - To avoid cache coherency issues when the current SVC stack page is being made uncacheable, shift SP somewhere else by temporarily dropping into IRQ mode s/ARMops - Change default VMSAv6 cache policy to writeback, write allocate. Unlike other CPUs we've supported so far, Cortex-A53 suffers very badly from writes to read-allocate pages, with performance being roughly equivalent to writes to non-cacheable memory. Using a write (+read) allocate policy seems to be needed to get the expected performance, and may help boost other CPUs too. Admin: Tested on IGEPv5, Pi 3 Tagged as Kernel-5_35-4_79_2_307
Removed hdr.SPIDriver as it is now managed by the SPIDriver module Tagged as Kernel-5_35-4_79_2_308
Complete removal od SPIDevice Detail: (remove reference to SPIDevice in makefile) Tagged as Kernel-5_35-4_79_2_309
New HAL device ID reservations Detail: hdr/HALDevice - Reserve device IDs for BCM283x CPU clock device and GPU mailbox device Admin: Tested on Raspberry Pi 1B/2B/3B Tagged as Kernel-5_35-4_79_2_310
Improve safety of OS_Memory 0 "make temporarily uncacheable" and *Cache off Detail: s/MemInfo - Wrap OS_Memory 0 in some code which will temporarily claim the FIQ vector when making pages temporarily uncacheable, to avoid any issues caused by modern ARMs ignoring unexpected cache hits s/VMSAv6 - Claim FIQs when OS_MMUControl is asked to make a change to the SCTLR, to avoid similar issues on modern ARMs. Also make the stack temporarily uncacheable before disabling the cache, so that we don't run into any problems using the stack inbetween disabling the cache and completing the clean+invalidate. Admin: Tested on Pi 2B, 3B *Cache off now works reliably on Pi 2B, although there is sometimes a pause of a few seconds while things sort themselves out (USB?) *Cache off "works" on Pi 3B but everything will fall over soon afterwards due to the Cortex-A53 not supporting LDREX/STREX to non-cacheable pages (or when the page is effectively non-cacheable, i.e. cacheable page with cache disabled) Tagged as Kernel-5_35-4_79_2_311
Resync with allocations database Tagged as Kernel-5_35-4_79_2_312
Add SWI error pointer validation, SeriousErrorV hooks, and OS_ReadSysInfo 15 Detail: Resources/UK/Messages, hdr/KernelWS, s/Kernel - On return from a SWI with V set, do some basic validity checks on the error pointer in order to try and catch buggy SWIs that return bad pointers or invalid error blocks. If a bad pointer is found we'll substitute it with a pointer to a different error block, which has the SWI number in the error message, to allow the user to identify the source of the problem. (There's also a chance we'll crash when investigating a bad pointer, but crashing here in the kernel is preferable to crashing elsewhere because R12 should still contain the SWI number) hdr/OSMisc - Define SeriousErrorV reason codes and extended ROM footer entry IDs hdr/Options - Remove HangWatch integration flag, obsolete now that SeriousErrorV is available s/ArthurSWIs - Keep defaultvectab up to date with vector allocations s/Middle - Update serious error handling to call SeriousErrorV at several key points. This allows for accurate crash dumps to be obtained, along with a mechanism to warn low-level components such as RTSupport that the privileged mode stacks are being flattened. s/Middle - Add OS_ReadSysInfo 15, for enumerating extended ROM footer entries s/PMF/osbyte - Update InitNewFX0Error to use the ROM footer entry ID defined in hdr/OSMisc Admin: Tested on Pi 1B, 2B, 3B Tagged as Kernel-5_35-4_79_2_313
Revise error pointer validity checks Detail: s/Kernel, hdr/KernelWS - Avoid performing error pointer checks for XOS_GenerateError, since (a) it's a no-op as far as errors are concerned, and (b) many programs take advantage of that fact and abuse the SWI for other purposes (triggering callbacks, BASIC string conversion, etc.) Admin: Tested on Raspberry Pi Fixes issue reported on forums with Sunfish crashing: https://www.riscosopen.org/forum/forums/5/topics/4060 Tagged as Kernel-5_35-4_79_2_314
Relax error pointer validity checks some more Detail: s/Kernel - Some types of error lookup code work by passing a bogus error number into MessageTrans_ErrorLookup and then fixing it up afterwards. To avoid breaking such code, we'll now ignore any bad error numbers from XMessageTrans_ErrorLookup. However obviously bad pointers and the non-X form will still be caught. Admin: Tested on Raspberry Pi 3 (e.g.) SWI "XMessageTrans_Lookup","@@@@BadParm" now works Tagged as Kernel-5_35-4_79_2_315
Correction to comment - it's NVRAM, not PortMan Tagged as Kernel-5_35-4_79_2_316
Deduce CPUFlag_LongMul/Thumb/DSP from the right bitfields The TST operations for LongMul & Thumb were at odds with the ARM ARM, move those. We can get the DSP flag from an ID register too now, rather than relying on the Q flag being writeable in the PSR. Fortunately, the fields we were previously TSTing also had set bits - so the OS_PlatformFeatures 0 flags were coming out right anyway on all real ARMv7's. Tagged as Kernel-5_35-4_79_2_317
Avoid unnecesssary remainder calculations Detail: s/HeapSort, s/vdu/vdugrafc, s/vdu/vduswis - Avoid unnecessary remainder calculations in DivRem macro s/PMF/i2cutils, s/PMF/osword - Make use of DivRem's ability to accept a constant as the divisor Admin: Tested on Cortex-A15 Tagged as Kernel-5_35-4_79_2_318
Add new OS_PlatformFeatures reason code for reading CPU features (inspired by ARMv6+ CPUID scheme). Add OS_ReadSysInfo 8 flags for indicating the alignment mode the ROM was built with. Fix long-standing bug with OS_PlatformFeatures when an unknown reason code is used. Detail: s/CPUFeatures, hdr/OSMisc, hdr/KernelWS - Code and definitions for reading CPU features and reporting them via OS_PlatformFeatures 34. All the instruction set features which are exposed by the CPUID scheme and which are relevant to RISC OS are exposed, along with a few extra flags which we derive ourselves (e.g. things relating to < ARMv4, and some register usage restrictions in instructions). s/CPUFeatures is designed to be easily copyable into a future version of CallASWI without requiring any changes. s/ARMops - Read and cache CPU features during ARMop initialisation s/GetAll - GET new file s/Kernel - Hook up the CPU features code to OS_PlatformFeatures. Fix a long standing stack imbalance bug (fixed in RISC OS 3.8, but never merged back to our main branch) which meant that calling OS_PlatformFeatures with an invalid reason code would raise an error, even if it was the X form of the SWI that was called. Similar fix also applied to the unused service call code, along with a fix for the user's R1-R9 being corrupt (shuffled up one place) should an error have been generated. s/MemInfo - Extra LTORG needed to keep things happy s/Middle - Extend OS_ReadSysInfo 8 to include flags for indicating what memory alignment mode (if any) the OS relies upon. Together with OS_PlatformFeatures 34 this could e.g. be used by !CPUSetup to determine which options should be offered to the user. Admin: Tested on Raspberry Pi 1, 2, 3 Tagged as Kernel-5_35-4_79_2_319
Fix CPU features being clobbered by software RAM clear Detail: s/ARMops, s/HAL - Move CPU feature init to after the RAM clear, to prevent the cached values being clobbered on platforms where the HAL doesn't perform the RAM clear s/CPUFeatures - Update/clarify comment Admin: Tested on Raspberry Pi Fixes issue spotted by Sprow Tagged as Kernel-5_35-4_79_2_320
[308] SpriteOp 11 (merge sprite areas) gets slow for large numbers of sprites Detail: s/vdu/vdugrafh - Rewrite MergeSpriteAreas so that memory movement is now O(N) instead of O(N^2). Checking for duplicate sprites is still slow (O(N^2) search), but this resolves the main performance bottleneck with the code. s/vdu/vdugrafg - Add a variant of SpriteCtrlBlk which skips the call to GetName; this helps MergeSpriteAreas for the common case of a dest area with lots of sprites and a source area with a handful of sprites (SpriteCtrlBlk is now called on the source area once per dest sprite, previously was called on the dest area once per source sprite). Admin: Tested on Raspberry Pi 1, merging Sovereign theme Sprites11 file with itself (2.2MB file, 358 sprites) Old code took 860cs, new code takes 18cs (15cs of which appears to be loading the second copy of the file, judging by *SLoad timings) Tagged as Kernel-5_35-4_79_2_321
Revise WFE detection Detail: s/CPUFeatures - Take account of the fact that single-core ARMv7+ chips implement MPIDR but aren't guaranteed to implement a useful WFE. So for ARMv7+, only report WFE as being available/useful if MPIDR indicates that virtualisation extensions are supported. Admin: Tested on Raspberry Pi 1 & 3, BB-xM Tagged as Kernel-5_35-4_79_2_322
Revise comments - it's multiprocessing extensions, not virtualisation Tagged as Kernel-5_35-4_79_2_323
Fix PMP corruption caused by early errors generated by OS_DynamicArea 21 Detail: s/ChangeDyn - When DynArea_PMP_PhysOp generates an error during the initial page list scan, make sure r12 is initialised to the (new) PMP size, as expected by PMPMemoryMoved. s/AMBControl/allocate, s/AMBControl/growshrink - Document some extra exit conditions for the AMB allocate & grow/shrink routines Admin: Tested on BB-xM Fixes RAM disc PMP becoming corrupt when attempting to grow it (e.g. via *ChangeDynamicArea) by an amount larger than the amount of free memory in the system Tagged as Kernel-5_35-4_79_2_324
Add OS_PlatformFeatures 0 flag to indicate that the "Unknown OS_PlatformFeatures reason codes always raise an error" bug has been fixed Detail: hdr/OSMisc - Use bit 31 to indicate that the error reporting bug has been fixed s/ARMops - Make sure the flag is set when preparing ProcessorFlags (i.e. the OS_PlatformFeatures 0 flags) Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_325
Fix teletext mode when zero page relocated Detail: s/vdu/vduttx - References to VduDriverWorkSpace need to be ZeroPage-relative. Without relocation, it looks like most of these addresses were hitting the Debugger workspace page, avoiding an immediate crash but causing no text to appear on screen. Admin: Tested on Raspberry Pi 1 Tagged as Kernel-5_35-4_79_2_326
Clear the exclusive monitor when returning to pre-empted code Detail: s/Kernel - Add macro for CLREX, which uses a dummy STREX on basic ARMv6 machines. Clear the exclusive monitor after issuing transient callbacks, to cope with callbacks being triggered on exit from IRQ s/ArthurSWIs, s/HAL, s/NewIRQs - Clear the exclusive monitor on exit from IRQ handlers & default FIQ handler s/VMSAv6 - Clear the exclusive monitor on entry to the data abort pre-veneer Admin: Tested on Raspberry Pi Non-transient callback handlers, custom abort handlers, FIQ handlers, and anything else which returns directly to interrupted user code is responsible for issuing its own CLREX if the code has done something that could have left the local monitor in the exclusive state (e.g. calling a SWI counts towards this, as there's no guarantee the monitor will be open on exit from the SWI) Tagged as Kernel-5_35-4_79_2_327
Summary: Imported OS_Memory 12 from Ursula. Imported EarlierReentrancyinDAShrink fix from Ursula. Detail: OS_Memory 12 allows the kernel to suggest physical pages to callers who need that sort of information without wanting to have them grub around in the page tables. EarlierReentrancyInDAShrink should allow RAMFS and FileCore to delete their RAMFS related dynamic areas when the Switcher is used to drag the RAM disc bar to zero. Admin: Required by Interlace 0.63 or later. Tagged as Kernel-5_36
Summary: Fixed an EXITS that should be an EXIT. Detail: An EXITS without EntryS was used in a conditional block. It does not need to be EXITS. Admin: Only affects STB builds. Tested in 32-bit Lazarus build. Tagged as Kernel-5_37
Summary: 32-bit kernels will refuse to initialise non 32-bit modules. Detail: The kernel will examine all modules that it is requested to initialise and will refuse to initialise any module without a module flags word entry in its module header or with bit 0 the first flags word being clear (bit 0 being ModuleFlag_32bit) Error message added to all the messages files. New error block added to message counting block. The Non-32-bit module message is not a cached error message, though. Admin: Tested in 32-bit Lazarus build. Tagged as Kernel-5_38
Summary: BBE changes. Detail: Also a fix to the DRAM allocation in s/ARM600 to fix address masking. Admin: Required by BBE. Tagged as Kernel-5_39
Summary: Fix to bugzilla bug 4065 Detail: 1MB VRAM was not being correctly identified. This was due to register corruption in r12 in the VRAM detection routines in s.ARM600. This bug has been a longstanding one introduced in Kernel 4.69 two years ago. Admin: Been put through the Kev&Mike change control process (tm). Tagged as Kernel-5_40
Summary: New OS_NVMemory reason code added. Detail: OS_NVMemory 5 - read / write value of NVRamWriteSize in: R0 = 5 R1 = new value of NVRamWriteSize (in bytes, multiple of 256), or -1 to return size. out: R1 = value of NVRamWriteSize This can be used to read and set the size of the protected area of NVRAM. This is needed for Customer A 2, where there is a need to deprotect the protected area so that NVRAM tags can be written. Admin: Code by MStephens. Built and checked in by me ;-) Tagged as Kernel-5_41
Summary: Previous version did not work. Detail: Forgot to add a section of code when merging the work - the new reson code would not work. Admin: Built and tested this time ;-) Tagged as Kernel-5_42
Summary: Added a couple of new sub-reason codes to OS_ReadSysInfo 6; Optimised the default IrqV handler. Detail: * OS_ReadSysInfo 6 tells grubby programs lots of grubby info. This has been extended to include: 18 - relocated base of OS SWI despatch table 19 - relocated base of IRQ device head nodes 20 - relocated end of IRQ device head nodes 21 - top of the IRQ stack These values are known to be useful for debugging purposes. * The default IrqV handler gets the device number times three on entry in R0. It then went through a loop subtracting three and incrementing a counter to divide by three. This has been replaced by four ARM instructions which should give the same results (three to divide by three and one to set R0 to zero - as the old code did). If the device number is outside the range 0..31, the new code may produce inaccurate results, but this should not happen. Admin: Not tested ;) Tagged as Kernel-5_43
Summary: Minor optimisation to the heap manager for performance enhancement. Detail: When splitting a free block in order to satisfy an allocation request, don't split if the remaining free space falls below a specified threshold (<= 8 bytes) to avoid creating lots of tiny free blocks, but instead gift the extra 8 bytes to the newly allocated block. This should stop the worst case heap fragmentation seen with OS_Heap heaps (particular the Toolbox's dynamic area). Admin: Tested in Ursula desktop build. Tagged as Kernel-5_44
Summary: New exports, and a bugfix to error handling. Detail: * Hdr2H can cope with hdr.EnvNumbers, hdr.ModHand and hdr.Variables, so C versions of these headers are now exported (in addition to RISCOS.h, which has been exported for some time). * The default owner of ErrorV is responsible for filling in the error handler's buffer, but was failing to compensate for the PC word at the start of the buffer when truncating the error message, leading to possible overruns of the buffer. Admin: Too trivial to test. Tagged as Kernel-5_45
branches: 4.90.2; Summary: New vector allocation (external) Detail: LowPriorityEventV (&28) added. Admin: Received in allocations resync from Alan Glover last week. Tagged as Kernel-5_46
Summary: Patch to s/PMF/osinit to support FastNC Detail: FastNC has different serial init to all other boxes. Admin: Tested on FastNC using Products/Ursula rev 1.196 as a base build. Tagged as Kernel-5_46-4_90_2_1
Documented change to SVC stack structure during ErrorV. Tagged as Kernel-5_47
Merge HAL branch to trunk Detail: This change merges the past 15+ years of HAL branch development back to the trunk. This is effectively the end for non-HAL builds of the kernel, as no attempt has been made to maintain it during this merge, and all non-HAL & non-32bit code will soon be removed anyway. Rather than list everything that's been added to the HAL branch, it's easier to describe the change in terms of the things that the HAL branch was lacking: * Trunk version of Docs/32bit contained updated comments for the SVC stack structure during ErrorV * Trunk version of s/HeapMan contained a tweak to try and reduce the number of small free blocks that are created * Trunk version of s/Kernel contained a change to only copy 248 bytes of the error string to the error buffer (down from 252 bytes), to take into account the extra 4 bytes needed by the PSR. However this goes against the decision that's been made in the HAL branch that the error buffer should be enlarged to 260 bytes instead (ref: https://www.riscosopen.org/tracker/tickets/201), so the HAL build will retain its current behaviour. * Trunk version of s/MsgCode had RMNot32bit error in the list of error messages to count when countmsgusage {TRUE} * Trunk version of s/PMF/i2cutils contained support for OS_Memory 5, "read/write value of NVRamWriteSize". Currently the HAL branch doesn't have a use for this (in particular, the correct NVRamWriteSize should be specified by the HAL, so there should be no need for software to change it at runtime), and so this code will remain switched out in the HAL build. Admin: Tested on Raspberry Pi Tagged as Kernel-5_48
Delete pre-HAL and 26bit code Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a 32bit HAL build): * HAL * HAL26 * HAL32 * No26bitCode * No32bitCode * IncludeTestSrc * FixR9CorruptionInExtensionSWI Various old files have also been removed (POST code, Arc/STB keyboard drivers, etc.) Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Tagged as Kernel-5_49
Delete STB code Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a desktop build): * STB * RO371Timings * NormalSpeedROMS * AutoSpeedROMS * RISCPCBurstMode * InterlacedPointer * ParallelFlashUpgrade (and s/FlashROM file) * Embedded_UI Some of the deleted code might be worth revisiting in future: * OS_ReadSysInfo 4 support for storing the MAC in alternate CMOS locations (including 2nd copy for error checking) or fetching via Service_MachineAddress * Mouse handling changes, possibly aimed at hiding the mouse pointer if a mouse isn't connected * More strict CMOS validation in s/NewReset Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Tagged as Kernel-5_50
Delete lots of old switches Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a 32bit HAL build): * FixCallBacks * UseProcessTransfer * CanLiveOnROMCard * BleedinDaveBell * NewStyleEcfs * DoVdu23_0_12 * LCDPowerCtrl * HostVdu * Print * EmulatorSupport * TubeInfo * AddTubeBashers * TubeChar, TubeString, TubeDumpNoStack, TubeNewlNoStack macros * FIQDebug * VCOstartfix * AssemblingArthur (n.b. still defined for safety with anything in Hdr: which uses it, but not used explicitly by the kernel) * MouseBufferFix * LCDInvert * LCDSupport * DoInitialiseMode * Interruptible32bitModes * MouseBufferManager * StrongARM (new CacheCleanerHack and InterruptDelay switches added to hdr/Options to cover some functionality that StrongARM previously covered) * SAcleanflushbroken * StrongARM_POST * IrqsInClaimRelease * CheckProtectionLink * GSWorkspaceInKernelBuffers * EarlierReentrancyInDAShrink * LongCommandLines * ECC * NoSPSRcorruption * RMTidyDoesNowt * RogerEXEY * StorkPowerSave * DebugForcedReset * AssembleKEYV * AssemblePointerV * ProcessorVectors * Keyboard_Type Assorted old files have also been deleted. Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Tagged as Kernel-5_51
Tidy things up a bit Detail: hdr/Options - Reduce the scope of SASTMhatbroken and InterruptDelay switches so that they're only enabled when we're building for ARMv4 targets s/ARM600, s/VMSAv6, s/ExtraSWIs, s/Exceptions - Move duplicate code out of s/ARM600 & s/VMSAv6 and into shared locations. OS_UpdateMEMC, the bulk of OS_MMUControl, and OS_SynchroniseCodeAreas are now located in s/ExtraSWIs. Meanwhile the data & prefetch abort veneers have been moved to the new file s/Exceptions. s/ARM600 and s/VMSAv6 are now almost purely to do with the different page table formats. s/GetAll - GET s/Exceptions Admin: Tested on Raspberry Pi Tagged as Kernel-5_52
Improve handling of *DUMPing a stream The checks in *DUMP tried to spot a stream (ie. a file that can be opened with OS_Find but that OS_File 5 doesn't think is there), but in doing so never set the address or offset, so the hex values shown on the left of the screen would be whatever junk was in r2 & r3. Reorder the tests so it starts at 0 and runs until EOF. Make use of OSFile_ReadWithType rather than trying to deduce if it's an untyped file ourselves. Tested with *DUMP random: from SystemDevs-1_33. Tagged as Kernel-5_53
Resolve 2x header clashes hdr/AHCIDevice: Remove this, since it clashes with the (differing API version number) copy exported by SATADriver. Post merging the Kernel back to the trunk the newer file datestamp has meant the wrong one gets exported during any ROM build which includes both components. Since the Kernel doesn't need AHCIDevice itself, it is left to the respective client (SATADriver or AHCIDriver in this case) to export them. hdr/ModHand: Resolve the longstanding clash of Module_Title with the same named symbol that CMHG uses. There are very few assembler needing to look at the module header (Kernel, FileCore, Debugger, Podule) directly, but every C module which uses CMHG and wants one of the ModHandReason values ends up with a duplicate define. Obsolete Arthur era Module_LoadAddr value. ArthurSWIs.s/MoreComms.s/NewReset.s/SWINaming.s/SysComms.s/Utility.s: Module_Title->Module_TitleStr. ModHand.s: Module_Title->Module_TitleStr. Recode Module_LoadAddr using the file type from Hdr:FileTypes. GetAlls.s: Drop unused NVRAM and PortMan headers. Add Hdr:FileTypes. Tagged as Kernel-5_54
Add support for shareable pages and additional access privileges Detail: This set of changes: * Refactors page table entry encoding/decoding so that it's (mostly) performed via functions in the MMU files (s.ARM600, s.VMSAv6) rather than on an ad-hoc basis as was the case previously * Page table entry encoding/decoding performed during ROM init is also handled via the MMU functions, which resolves some cases where the wrong cache policy was in use on ARMv6+ * Adds basic support for shareable pages - on non-uniprocessor systems all pages will be marked as shareable (however, we are currently lacking ARMops which broadcast cache maintenance operations to other cores, so safe sharing of cacheable regions isn't possible yet) * Adds support for the VMSA XN flag and the "privileged ROM" access permission. These are exposed via RISC OS access privileges 4 and above, taking advantage of the fact that 4 bits have always been reserved for AP values but only 4 values were defined * Adds OS_Memory 17 and 18 to convert RWX-style access flags to and from RISC OS access privelege numbers; this allows us to make arbitrary changes to the mappings of AP values 4+ between different OS/hardware versions, and allows software to more easily cope with cases where the most precise AP isn't available (e.g. no XN on <=ARMv5) * Extends OS_Memory 24 (CheckMemoryAccess) to return executability information * Adds exported OSMem header containing definitions for OS_Memory and OS_DynamicArea File changes: - Makefile - export C and assembler versions of hdr/OSMem - Resources/UK/Messages - Add more text for OS_Memory errors - hdr/KernelWS - Correct comment regarding DCacheCleanAddress. Allocate workspace for MMU_PPLTrans and MMU_PPLAccess. - hdr/OSMem - New file containing exported OS_Memory and OS_DynamicArea constants, and public page flags - hdr/Options - Reduce scope of ARM6support to only cover builds which require ARMv3 support - s/AMBControl/Workspace - Clarify AMBNode_PPL usage - s/AMBControl/growp, mapslot, mapsome, memmap - Use AreaFlags_ instead of AP_ - s/AMBControl/main, memmap - Use GetPTE instead of generating page table entry manually - s/ARM600 - Remove old coments relating to lack of stack. Update BangCam to use GetPTE. Update PPL tables, removing PPLTransL1 (L1 entries are now derived from L2 table on demand) and adding a separate table for ARM6. Implement the ARM600 versions of the Get*PTE ('get page table entry') and Decode*Entry functions - s/ARMops - Add Init_PCBTrans function to allow relevant MMU_PPLTrans/MMU_PCBTrans pointers to be set up during the pre-MMU stage of ROM init. Update ARM_Analyse to set up the pointers that are used post MMU init. - s/ChangeDyn - Move a bunch of flags to hdr/OSMem. Rename the AP_ dynamic area flags to AreaFlags_ to avoid name clashes and confusion with the page table AP_ values exported by Hdr:MEMM.ARM600/Hdr:MEMM.VMSAv6. Also generate the relevant flags for OS_Memory 24 so that it can refer to the fixed areas by their name instead of hardcoding the permissions. - s/GetAll - GET Hdr:OSMem - s/HAL - Change initial page table setup to use DA/page flags and GetPTE instead of building page table entries manually. Simplify AllocateL2PT by removing the requirement for the user to supply the access perimssions that will be used for the area; instead for ARM6 we just assume that cacheable memory is the norm and set L1_U for any L1 entry we create here. - s/Kernel - Add GetPTE macro (for easier integration of Get*PTE functions) and GenPPLAccess macro (for easy generation of OS_Memory 24 flags) - s/MemInfo - Fixup OS_Memory 0 to not fail on seeing non-executable pages. Implement OS_Memory 17 & 18. Tidy up some error generation. Make OS_Memory 13 use GetPTE. Extend OS_Memory 24 to return (non-) executability information, to use the named CMA_ constants generated by s/ChangeDyn, and to use the Decode*Entry functions when it's necessary to decode page table entries. - s/NewReset - Use AreaFlags_ instead of AP_ - s/VMSAv6 - Remove old comments relating to lack of stack. Update BangCam to use GetPTE. Update PPL tables, removing PPLTransL1 (L1 entries are now derived from L2 table on demand) and adding a separate table for shareable pages. Implement the VMSAv6 versions of the Get*PTE and Decode*Entry functions. Admin: Tested on Raspberry Pi 1, Raspberry Pi 3, Iyonix, RPCEmu (ARM6 & ARM7), comparing before and after CAM and page table dumps to check for any unexpected differences Tagged as Kernel-5_55
Fix OS_BreakPt when called from SVC mode Detail: s/Middle - A mistake during the 32bit conversion process left OS_BreakPt attempting to use the PSR as the address of the register dump if the call came from SVC mode, most likely resulting in an abort. Admin: Tested on Raspberry Pi Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/11/topics/6308#posts-56649 Tagged as Kernel-5_56
Fix OS_FindMemMapEntries Detail: s/ChangeDyn - Since the introduction of the 16 byte CAM entry format, OS_FindMemMapEntries has contained a bug where requesting the details for an address which does not have an L2PT page allocated for it (e.g. a location in ROM) would result in a misaligned CAM entry pointer being generated, resulting in either a crash or incorrect data being returned Admin: Tested on Raspberry Pi 2 Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/6393 Tagged as Kernel-5_57
Fix stack imbalance and incorrect return value in OS_DynamicArea 23 (PMP resize) Detail: s/ChangeDyn - When OS_DynamicArea 23 returned an error, R2 wasn't being set to zero correctly, incorrectly suggesting that a change had been made. And when a non-error resize of zero was being performed, registers were being pulled twice, resulting in a stack imbalance and crash. Admin: Tested on BB-xM Tagged as Kernel-5_58
Misc memory management fixes Detail: s/ChangeDyn - Fix register corruption in PMP_LogOp when mapping a page into a location that already contains a page. Fix excessive TLB flush in AreaShrink. s/ARM600, s/VMSAv6 - Add asserts to GetTempUncache to detect invalid register combinations Admin: Tested on BB-xM Tagged as Kernel-5_59
Fix CAM indexing in DoTheGrowPageUnavailable Detail: s/ChangeDyn - A routine that was missed during the upgrade from 8 byte CAM entries to 16 byte CAM entries, DoTheGrowPageUnavailable was using still using the old CAM entry size, potentially corrupting the CAM whenever it was called (i.e. if a DA grow requested a page that had already been claimed for exclusive use by someone else) Admin: Tested on BB-xM Tagged as Kernel-5_60
Fix wrong XCBTable being used for pre-rev T StrongARMs. Update HAL UART API docs. Detail: s/ARMops - Fix pre-rev T StrongARMs using the wrong XCBTable, causing invalid page flags to be used for the write-through cache policy Docs/HAL/Serial - Update HAL UART API docs. Mostly filling in some blanks, but also correcting a couple of things, and documenting new Features bit 4, LineStatus bit 8, and the effect on InterruptID. Admin: Tested on pre-rev T StrongARM RiscPC Tagged as Kernel-5_61
Prevent disabling of the D-cache on Cortex-A53. Other OS_MMUControl 0 fixes. Detail: On Cortex-A53, a load/store exclusive instruction will abort if it targets non-cacheable memory or if the D-cache is disabled. Since the correct operation of these instructions is important to the OS and apps, it makes sense to prevent *Cache Off / OS_MMUControl 0 from being able to disable the D-cache on such systems. hdr/OSMisc, s/ARMops - Add new OS_PlatformFeatures 0 flag to indicate when disabling of the D-cache isn't allowed s/VMSAv6 - Update MMUControl_ModifyControl to force the D-cache to always be on when the "unsafe to disable D-cache" PlatformFeatures flag is set. Also, disallow mismatched I+D cache settings if we have an L2 cache (causes issues due to IMB ops only flushing to PoU), and fix dangerous D-cache invalidation when it's only the I-cache which is being disabled s/ARM600 - Clean up MMUControl_ModifyControl a bit so that it's a closer match to the VMSAv6 version, and fix the dangerous D-cache invalidation. Admin: Tested on ARM11, Cortex-A7, Cortex-A53 Tagged as Kernel-5_62
Don't flag FileCore disc error error numbers as being invalid Detail: s/Kernel - FileCore breaks the usual error number rules for disc errors and uses numbers of the form &XX01YYC7, which was tripping up the sanity checks due to making use of the reserved bits 24-30. Add an extra rule to allow that form of errors through. Admin: Tested on Raspberry Pi Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/3/topics/3540#posts-58635 Tagged as Kernel-5_63
Issue Service_ModulePostInit when really post init Previously, the service call was sent when the module was in the service call chain/command table hash/SWI table hash, but not actually in the list of modules - so any recipient trying to look something up with OS_Module would get denial that the module existed. Move the service call issue step to *after* it's linked into the module list. Tagged as Kernel-5_64
Update error block validity checks to cope with Wimp "program errors" Detail: s/Kernel - With RISC OS 3.5, one of the ways Wimp_ReportError detects program errors is by bits 24-29 of the error number being set to 011011. Update our error block validity checks to allow that pattern through. Admin: Tested on Raspberry Pi Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/3/topics/3540?page=2#posts-60089 Tagged as Kernel-5_65
Reimplement AMBControl ontop of the PMP system Detail: With this set of changes, each AMB node is now the owner of a fake DANode which is linked to a PMP. From a user's perspective the behaviour of AMBControl is the same as before, but rewriting it to use PMPs internally offers the following (potential) benefits: * Reduction in the amount of code which messes with the CAM & page tables, simplifying future work/maintenance. Some of the AMB ops (grow, shrink) now just call through to OS_ChangeDynamicArea. However all of the old AMB routines were well-optimised, so to avoid a big performance hit for common operations not all of them have been removed (e.g. mapslot / mapsome). Maybe one day these optimal routines will be made available for use by regular PMP DAs. * Removal of the slow Service_MemoryMoved / Service_PagesSafe handlers that had to do page list fixup after the core kernel had reclaimed/moved pages. Since everything is a PMP, the kernel will now deal with this on behalf of AMB. * Removal of a couple of other slow code paths (e.g. Do_AMB_MakeUnsparse calls from OS_ChangeDynamicArea) * Potential for more flexible mapping of application space in future, e.g. sparse allocation of memory to the wimp slot * Simpler transition to an ASID-based task swapping scheme on ARMv6+? Other changes of note: * AMB_LazyMapIn switch has been fixed up to work correctly (i.e. turning it off now disables lazy task swapping and all associated code instead of producing a build error) * The DANode for the current app should be accessed via the GetAppSpaceDANode macro. This will either return the current AMB DANode, or AppSpaceDANode (if e.g. pre-Wimp). However be aware that AppSpaceDANode retains the legacy behaviour of having a base + size relative to &0, while the AMB DANodes (identifiable via the PMP flag) are sane and have their base + size relative to &8000. * Mostly-useless DebugAborts switch removed * AMBPhysBin (page number -> phys addr lookup table) removed. Didn't seem to give any tangible performance benefit, and was imposing hidden restrictions on memory usage (all phys RAM fragments in PhysRamTable must be multiple of 512k). And if it really was a good optimisation, surely it should have been applied to all areas of the kernel, not just AMB! Other potential future improvements: * Turn the fake DANodes into real dynamic areas, reducing the amount of special code needed in some places, but allow the DAs to be hidden from OS_DynamicArea 3 so that apps/users won't get too confused * Add a generic abort trapping system to PMPs/DAs (lazy task swapping abort handler is still a special case) File changes: - s/ARM600, s/VMSAv6, s/ExtraSWIs - Remove DebugAborts - s/ArthurSWIs - Remove AMB service call handler dispatch - s/ChangeDyn - AMB_LazyMapIn switch fixes. Add alternate internal entry points for some PMP ops to allow the DANode to be specified (used by AMB) - s/Exceptions - Remove DebugAborts, AMB_LazyMapIn switch fixes - s/Kernel - Define GetAppSpaceDANode macro, AMB_LazyMapIn switch fix - s/MemInfo - AMB_LazyMapIn switch fixes - s/AMBControl/AMB - Update GETs - s/AMBControl/Memory - Remove block size quantisation, AMB_BlockResize (page list blocks are now allocated by PMP code) - s/AMBControl/Options - Remove PhysBin definitions, AMBMIRegWords (moved to Workspace file), AMB_LimpidFreePool switch. Add AMB_Debug switch. - s/AMBControl/Workspace - Update AMBNode to contain an embedded DANode. Move AMBMIRegWords here from Options file. - s/AMBControl/allocate - Fake DA node initialisation - s/AMBControl/deallocate - Add debug output - s/AMBControl/growp, growshrink, mapslot, mapsome, shrinkp - Rewrite to use PMP ops where possible, add debug output - s/AMBControl/main - Remove PhysBin initialisation. Update the enumerate/mjs_info call. - s/AMBControl/memmap - Low-level memory mapping routines updated or rewritten as appropriate. - s/AMBControl/readinfo - Update to cope with DANode - s/AMBControl/service - Remove old service call handlers - s/AMBControl/handler - DA handler for responding to PMP calls from OS_ChangeDynamicArea; just calls through to growpages/shrinkpages as appropriate. Admin: Tested on pretty much everything currently supported Tagged as Kernel-5_66
Make s/ChangeDyn slightly more readable by splitting some routines out into a separate file Detail: s/MemMap2 - New file containing assorted low-level memory mapping routines taken from s/ChangeDyn. N.B. There's no special significance to this being named "MemMap2", it's just a name that stuck due to some earlier (abandoned) changes which added a file named "MemMap". s/ChangeDyn - Remove the routines/chunks of code that were moved to s/MemMap2. Also some duplicate code removal (Regular DA grow code and DoTheGrowNotSpecified are now rely on the new DoTheGrowCommon routine for doing the actual grow) s/GetAll - GET s/MemMap2 at an appropriate time Admin: Tested on pretty much everything currently supported Tagged as Kernel-5_67
Add new ARMops. Add macros which map the ARMv7/v8 cache/TLB maintenance mnemonics (as featured in recent ARM ARMs) to MCR ops. Detail: - Docs/HAL/ARMop_API - Document the new ARMops. These ops are intended to help with future work (DMA without OS_Memory 0 "make temp uncacheable", and minimising cache maintenance when unmapping pages) and aren't in use just yet. - hdr/Copro15ops - Add new macros for ARMv7+ which map the mnemonics seen in recent ARM ARMs to the corresponding MCR ops. This should make things easier when cross-referencing docs and reduce the risk of typos. - hdr/KernelWS - Shuffle kernel workspace a bit to make room for the new ARMops - hdr/OSMisc - Expose new ARMops via OS_MMUControl 2 - s/ARMops - Implement the new ARMops. Change the ARMv7+ ARMops to use the new mnemonic macros. Also get rid of myDSB / myISB usage from ARMv7+ code paths; use DSB/ISB/etc. directly to ensure correct behaviour - s/HAL - Mnemonic + ISB/DSB updates. Change software RAM clear to do 16 bytes at a time for kernel workspace instead of 32 to allow the kernel workspace tweaks to work. Admin: Binary diff shows that mnemonics map to the original MCR ops correctly Note: Raspberry Pi builds will now emit lots of warnings due to increased DSB/ISB instruction use. However it should be safe to ignore these as they should only be present in v7+ code paths. Note: New ARMops haven't been tested yet, will be disabled (or at least hidden from user code) in a future checkin Tagged as Kernel-5_68
Place restrictions on the use of cacheable doubly-mapped DAs Detail: The kernel has always allowed software to create cacheable doubly-mapped DAs, despite the fact that the VIVT caches used on ARMv5 and below would have no way of keeping both of the mappings coherent This change places restrictions the following restrictions on doubly-mapped areas, to ensure that cache settings which can't be supported by the cache architecture of the CPU can't be selected: * On ARMv6 and below, cacheable doubly-mapped areas aren't supported. * Although ARMv6 has VIPT data caches, it's also subject to page colouring constraints which would require us to force the DA size to be a multiple of 16k. So for now keep things simple and disallow cacheable doubly-mapped areas on ARMv6. * On ARMv7 and above, cacheable doubly-mapped areas are allowed, but only if they are marked non-executable * The blocker to allowing executable cacheable doubly-mapped areas are the VIPT instruction caches; OS_SynchroniseCodeAreas (or callers of it) would need to know that a doubly-mapped area is in use so that they can flush both mappings from the I-cache. Although some chips do have PIPT instruction caches, again it isn't really worth supporting executable cacheable doubly-mapped areas at the moment. These changes also allow us to get rid of the expensive 'sledgehammer' logic when dealing with doubly-mapped areas File changes: - s/ARM600, s/VMSAv6 - Remove the sledgehammer logic, only perform cache/TLB maintenance for the required areas - s/ChangeDyn - Implement the required checks - s/MemMap2 - Move some cache maintenance logic into RemoveCacheabilityR0ByMinusR2, which previously would have had to be performed by the caller due to the sledgehammer paranoia Admin: Cacheable doubly-mapped DAs tested on iMx6 (tried making screen memory write-through cacheable; decent performance gain seen) Note OS_Memory 0 "make temporarily uncacheable" doesn't work on doubly-mapped areas, so cacheable doubly-mapped areas are not yet safe for general DMA Tagged as Kernel-5_69
Make MMU_Changing ARMops perform the sub-operations in a sensible order Detail: For a while we've known that the correct way of doing cache maintenance on ARMv6+ (e.g. when converting a page from cacheable to non-cacheable) is as follows: 1. Write new page table entry 2. Flush old entry from TLB 3. Clean cache + drain write buffer The MMU_Changing ARMops (e.g. MMU_ChangingEntry) implement the last two items, but in the wrong order. This has caused the operations to fall out of favour and cease to be used, even in pre-ARMv6 code paths where the effects of improper cache/TLB management perhaps weren't as readily visible. This change re-specifies the relevant ARMops so that they perform their sub-operations in the correct order to make them useful on modern ARMs, updates the implementations, and updates the kernel to make use of the ops whereever relevant. File changes: - Docs/HAL/ARMop_API - Re-specify all the MMU_Changing ARMops to state that they are for use just after a page table entry has been changed (as opposed to before - e.g. 5.00 kernel behaviour). Re-specify the cacheable ones to state that the TLB invalidatation comes first. - s/ARM600, s/ChangeDyn, s/HAL, s/MemInfo, s/VMSAv6, s/AMBControl/memmap - Replace MMU_ChangingUncached + Cache_CleanInvalidate pairs with equivalent MMU_Changing op - s/ARMops - Update ARMop implementations to do everything in the correct order - s/MemMap2 - Update ARMop usage, and get rid of some lingering sledgehammer logic from ShuffleDoublyMappedRegionForGrow Admin: Tested on pretty much everything currently supported Tagged as Kernel-5_70
Implement support for cacheable pagetables Detail: Modern ARMs (ARMv6+) introduce the possibility for the page table walk hardware to make use of the data cache(s) when performing memory accesses. This can significantly reduce the cost of a TLB miss on the system, and since the accesses are cache-coherent with the CPU it allows us to make the page tables cacheable for CPU (program) accesses also, improving the performance of page table manipulation by the OS. Even on ARMs where the page table walk can't use the data cache, it's been measured that page table manipulation operations can still benefit from placing the page tables in write-through or bufferable memory. So with that in mind, this set of changes updates the OS to allow cacheable/bufferable page tables to be used by the OS + MMU, using a system-appropriate cache policy. File changes: - hdr/KernelWS - Allocate workspace for storing the page flags that are to be used by the page tables - hdr/OSMem - Re-specify CP_CB_AlternativeDCache as having a different behaviour on ARMv6+ (inner write-through, outer write-back) - hdr/Options - Add CacheablePageTables option to allow switching back to non-cacheable page tables if necessary. Add SyncPageTables var which will be set {TRUE} if either the OS or the architecture requires a DSB after writing to a faulting page table entry. - s/ARM600, s/VMSAv6 - Add new SetTTBR & GetPageFlagsForCacheablePageTables functions. Update VMSAv6 for wider XCBTable (now 2 bytes per element) - s/ARMops - Update pre-ARMv7 MMU_Changing ARMops to drain the write buffer on entry if cacheable pagetables are in use (ARMv7+ already has this behaviour due to architectural requirements). For VMSAv6 Normal memory, change the way that the OS encodes the cache policy in the page table entries so that it's more compatible with the encoding used in the TTBR. - s/ChangeDyn - Update page table page flag handling to use PageTable_PageFlags. Make use of new PageTableSync macro. - s/Exceptions, s/AMBControl/memmap - Make use of new PageTableSync macro. - s/HAL - Update MMU initialisation sequence to make use of PageTable_PageFlags + SetTTBR - s/Kernel - Add PageTableSync macro, to be used after any write to a faulting page table entry - s/MemInfo - Update OS_Memory 0 page flag conversion. Update OS_Memory 24 to use new symbol for page table access permissions. - s/MemMap2 - Use PageTableSync. Add routines to enable/disable cacheable pagetables - s/NewReset - Enable cacheable pagetables once we're fully clear of the MMU initialision sequence (doing earlier would be trickier due to potential double-mapping) Admin: Tested on pretty much everything currently supported Delivers moderate performance benefits to page table ops on old systems (e.g. 10% faster), astronomical benefits on some new systems (up to 8x faster) Stats: https://www.riscosopen.org/forum/forums/3/topics/2728?page=2#posts-58015 Tagged as Kernel-5_71
Implement some ARM11 errata workarounds Detail: s/ARMops, s/HAL - Add workarounds for some of the scary errata that were previously weren't dealing with (720013, 716151, 714068) Admin: Tested on Raspberry Pi 1 Tagged as Kernel-5_72
Disable public use of new ARMops until ready Detail: hdr/OSMisc, s/ARMops - Don't expose the new ARMops via OS_MMUControl 2, they haven't been fully tested/developed yet Admin: Builds, untested Tagged as Kernel-5_73
Add support for custom teletext modes Detail: This set of changes: * Adds support for the T, TX and TY mode string elements (as per RISCOS Ltd) * Adds support for entering arbitrary-resolution teletext modes by using mode selector blocks with the Teletext mode flag set * ScrRCol and ScrBRow mode variables can be provided in the mode selector in order to restrict the number of text rows/columns in teletext modes (as per RISCOS Ltd) * If the rows / columns are restricted in this manner then the text window will be centered on the screen, to try and avoid things looking too ugly (no variable text scaling implemented) * For HiResTTX, all colour depths >= 4bpp are now supported by teletext. This essentially makes the TTX256 switch obsolete. * If the "native" mode 7 is unavailable then the kernel will try a series of fallback resolutions & colour depths in an effort to find a combination that works Known bugs/issues: * Teletext column count has a max limit of 255 due to TTXDoubleCounts being a byte array * If there's a border around the text window, the border will not be refreshed when changing transparency modes using a VDU 23,18,0 sequence * ScreenLoad looks like it can overflow the LargeCommon buffer (no buffer size check) - needs fixing before LargeCommon can be safely shrunk below (Old)TTXMapSize File changes: - hdr/KernelWS - Make CharWidth non-conditional. Adjust handling of teletext workspace; it's now allocated from the system heap to allow it to cope with arbitrary screen sizes - s/vdu/vdu23 - Make CharWidth non-conditional - s/vdu/vducursoft - Make CursorTeletext cope with arbitrary colour depths, make CharWidth non-conditional, remove hard-coded teletext values - s/vdu/vdudriver - Deal with teletext workspace allocation during ModeChangeSub. Deal with selecting teletext modes (and validating colour depth) in GenerateModeSelectorVars. - s/vdu/vdugrafl - Make CharWidth non-conditional. Calculate offset required for text window centering. - s/vdu/vdumodes - Remove TTX256 - s/vdu/vduswis - Try other teletext modes if native mode 7 not available. Extend OS_ScreenMode reason codes to cope with teletext mode strings. - s/vdu/vduttx - Update to use dynamic workspace. Replace various hardcoded values with variable lookups. Update character plotting + colour/palette selection to work with true-colour modes if HiResTTX. - s/vdu/vduwrch - Move some useful code into a subroutine. Update FastCLS to cope with true-colour teletext. Update AddressR0R1 to cope with text window centering offset. Make CharWidth non-conditional. Admin: Tested on Raspberry Pi, BB-xM VDU 23,18,0 in 256-colour teletext now works correctly (previously 64-colour mode was in use, causing palette update to be ruined by VIDC1-mangling) Tagged as Kernel-5_74
Fix screen redirection when in teletext modes. Fix *ScreenLoad buffer overflow. Detail: s/vdu/vdugrafl, s/vdu/vduttx - Adjust initialisation & shutdown of TTX workspace to fix workspace being erroneously freed/reinitialised when redirecting output to a sprite s/vdu/vdugrafk - If ScreenLoad needs to load one row at a time (e.g. when graphics window width != sprite width), allocate a block from the RMA instead of assuming that ScrLoaBuffer is large enough hdr/KernelWS - Get rid of ScrLoaBuffer, and shrink LargeCommon to a suitable size. Frees about 2K of VDU workspace. s/GetAll - Move Hdr:Sprite earlier in list of GETs Admin: Tested on Raspberry Pi Tagged as Kernel-5_75
Fix inverted global vs. per-page cache flush logic in PMP LogOp_MapOut Detail: s/ChangeDyn - Set r6 bit 0 if the area is smaller than the cache range threshold, because that's what's checked for at lines 3077 and 3092 Admin: Tested on Raspberry Pi Tagged as Kernel-5_76
Expose CLREX via OS_PlatformFeatures To account for ARM changing their minds about how to clear the exclusive lock on different architectures, provide a function pointer with a known good implementation. This is similar to the run of NOPs returned by OS_PlatformFeatures 0 for those that need it. If in the future any errata or similar are needed, then there's only 1 place to change it, plus clients don't need their own CPU type detection logic. Tagged as Kernel-5_77
Fix incorrect OS_SynchroniseCodeAreas call Detail: s/Arthur2 - When installing a code system variable, a register fumble resulted in OS_SynchroniseCodeAreas being called with a bogus address range. Fix it. Admin: Tested on Pandaboard Tagged as Kernel-5_78
Streamline PL310 ARMops Detail: Some closer examination of the PL310 TRM reveals that there's no need to poll for completion of maintenance operations if we only use atomic ops. Since there's no particular need for us to use the background ops, just rewrite everything to use the atomic ops and get rid of the polling. This should also avoid the need for any costly locking in SMP setups. File changes: - s/ARMops - Updated as above Admin: Tested on Pandaboard, iMx6 Tagged as Kernel-5_79
Extend MonitorType configure keyword Detail: Accept a monitortype of 'EDID' (as distinct from 'Auto', which uses the ID pins) to force the kernel, via ScrModes, to use the native screen mode prior to executing the boot sequence. Required for discless boot, this also helps if the boot sequence fails, the desktop will be entered in the monitor's native resolution, or a fallback if GraphicsV rejects that. The allocation of the EDID monitor type has been carefully selected to degrade to 'Auto' when used with an older OS. That way the configuration in CMOS is safe to use with softloads on top of older physical ROMs. When OS_ScreenMode is queried return the 'Auto' type, ie. at an API level there's no distinction. Admin: Requires HdrSrc-2_67. Submission for the EDID bounty. Tagged as Kernel-5_80
Resync with allocations database (added symbolic names for Internet Event subreason
codes)
Tagged as Kernel-5_81
Initial support for the ExtraBytes VIDC control list item Detail: The ExtraBytes control list item can be used to add padding between framebuffer rows. When the kernel sees a VIDC list containing this item, it will now adjust the LineLength and ScreenSize mode variables accordingly, with the end result that the correct amount of memory will be allocated for the framebuffer and the OS will render into it correctly. Files changed: - hdr/KernelWS - Add DisplayLineLength variable to allow the correct LineLength value to be preserved when screen output is redirected to a sprite - s/vdu/vdudriver - Make ModeChangeSub initialise DisplayLineLength before calling SwitchOutputToSprite. Update PushModeInfo to take ExtraBytes into account when calculating LineLength and ScreenSize. - s/vdu/vdugrafl - Adjust SwitchOutputToSprite to use DisplayLineLength when restoring screen output - s/vdu/vduwrch - Fix full-screen CLS to not write to the padding bytes Admin: Tested on Raspberry Pi 3 Tagged as Kernel-5_82
Tweak OS_ReadModeVariable optimisations Detail: s/vdu/vduswis - Don't use RMVForCurrentMode when R0 = ModeNo, only use it if R0 is -1. This ensures that results for explicitly-specified modes will always represent the base properties of the mode and won't be influenced by any unusual properties of the current mode, e.g. LineLength/ScreenSize alterations caused by driver-specific framebuffer padding. Admin: Tested on Raspberry Pi 3 Tagged as Kernel-5_83
Fix software pointer when ExtraBytes is in use Detail: s/vdu/vdupointer - The software pointer code was calculating LineLength manually, due to previous kernel versions not storing a copy of the value that would be safe to use during screen redirection. Fix the code to use the new DisplayLineLength variable, so that the software pointer will be correct in modes which have row padding. Admin: Tested on Raspberry Pi 3 Tagged as Kernel-5_84
branches: 4.129.2; Fix to OS_ReadSysInfo 1 Detail: Prior to ScreenModes starting (when CurrentMonitorType becaomes 7) this SWI would return Auto as 31 for EDID rather than -1, as would be the case had ReadMultiField been called. Change to use -1 for consistency and so it gets translated to type 3 (VGA). Admin: Submission from Willi Theiss. Tagged as Kernel-5_85
Merge Kernel-5_86 Detail: hdr/EtherDevice: Merge in Kernel-5_86 to keep branch up-to-date with MAIN Admin: Untested Tagged as Kernel-5_86-4_129_2_1
Initial SMP changes Detail: This commit lays some of the groundwork for SMP support within the HAL, kernel, and OS. Makefile, hdr/HALDevice, hdr/DBellDevice - Add definitions for a doorbell HAL device, to allow CPU cores to signal each other via interrupts hdr/HALEntries - Repurpose HAL_Matrix and HAL_Touchscreen entry points for new SMP-related entry points. Add a couple of IRQ-related definitions. hdr/KernelWS - Boost MaxInterrupts to 256 hdr/Options - Add new SMP build switch to control whether the kernel is built in SMP-friendly mode or not. SMP-friendly kernels should still run on single-core machines, but may behave slightly differently. s/ARMops - Make as many ARMops SMP-safe as possible, relying on hardware support for broadcasting of cache/TLB maintenance operations s/ExtraSWIs - Make SMP-friendly full OS_SynchroniseCodeAreas only sync application space and the RMA (full-cache IMB not really possible with SMP) s/NewIRQs - Update IRQ despatcher comments to (hopefully) reflect reality Docs/SMP/HAL, Docs/SMP/IRQ - Add documentation covering the new HAL calls and IRQ behaviour Admin: Tested on Raspberry Pi 2, 3, OMAP4, iMX6 Tagged as Kernel-5_86-4_129_2_2
Add OS_Memory 19, which is intended to replace the OS_Memory 0 "make uncacheable" feature, when used for DMA Detail: Making pages uncacheable to allow them to be used with DMA can be troublesome for a number of reasons: * Many processors ignore cache hits for non-cacheable pages, so to avoid breaking any IRQ handlers the page table manipulation + cache maintenance must be performed with IRQs disabled, impacting the IRQ latency of the system * Some processors don't support LDREX/STREX to non-cacheable pages * In SMP setups it may be necessary to temporarily park the other cores somewhere safe, or perform some other explicit synchronisation to make sure they all have consistent views of the cache/TLB The above issues are most likely to cause problems when the page is shared by multiple programs; a DMA operation which targets one part of a page could impact the programs which are using the other parts. To combat these problems, OS_Memory 19 is being introduced, which allows DMA cache coherency/address translation to be performed without altering the attributes of the pages. Files changed: - hdr/OSMem - Add definitions for OS_Memory 19 - s/MemInfo - Add OS_Memory 19 implementation Admin: Tested on Raspberry Pi 3, iMx6 Tagged as Kernel-5_86-4_129_2_3
Merge in latest changes from main branch Tagged as Kernel-5_88-4_129_2_4
Fix global OS_SynchroniseCodeAreas. ARMop tweaks. Detail: s/ExtraSWIs - Fix global OS_SynchroniseCodeAreas using the wrong appspace size; would have resulted in appspace only being partially synced if some pages were mapped out due to lazy swapping s/ARMops, s/ExtraSWIs, s/MemMap2 - Simplify code by making DCache_LineLen / ICache_LineLen store the actual line length values on ARMv7+ instead of the log2 values. Optimise SMP I-cache invalidation by allowing it to do a global invalidate. Ensure all ARMv7+ range checks use LO instead of NE, to avoid any problems with mismatched I/D line lengths (can't be sure the op range was rounded to the larger of the two) Admin: Tested on iMX6 Tagged as Kernel-5_88-4_129_2_5
Merge latest changes from main branch Tagged as Kernel-5_89-4_129_2_6
Merge in latest changes from main branch Tagged as Kernel-5_97-4_129_2_7
Added link to Phy powerup and reset routine in EtherDevice Detail: Admin: tested on iMx6 revD1 and revC2 Tagged as Kernel-5_86
Add a compatibility page zero for high processor vectors / zero page relocation builds Detail: When HiProcVecs is enabled, there will now be a read-only page located at &0 in order to ease compatibility with buggy software which reads from null pointers Although most of the page is zero-filled, the start of the page contains a few words which are invalid pointers, discouraging dereferencing them, and a warning message if the memory is interpreted as a string. On ARMv6+ the page is also made non-executable, to deal with branch-through-zero type situations OS_Memory 20 has been introduced as a way of determining whether the compatibility page is present, and also to enable/disable it File changes: - hdr/Options - Add CompatibilityPage option - hdr/OSMem - Declare OS_Memory reason code 20 - hdr/KernelWS - When CompatibilityPage is enabled, make sure nothing else is located at &0 - s/NewReset - Enable compatibility page just before Service_PostInit (try and keep zero-tolerance policy for null pointer dereferencing during ROM init) - s/MemInfo - OS_Memory 20 implementation. Add knowledge of the compatibility page to OS_Memory 16 and 24. Admin: Tested on BB-xM Tagged as Kernel-5_87
Resync with allocations database Not tagged
Add UUID output formatter to conversions OS_ConvertVariform 15 outputs 128b numbers per RFC4122. Tagged as Kernel-5_88
Change module initialisation to be a two pass scheme Detail: To make it easier to support arbitrary complexity keyboard controllers (eg. USB via DWCDriver on the Pi) have the kernel do the early keyboard recovery key press detection instead of the HAL. During the first pass those modules used for reading the keyboard are started, ignoring the CMOS frugal bits. The keyboard is then scanned for 3s, during which time the RAM is cleared (unless the HAL indicated it has already been done). During the second pass the remaining modules are started respecting the CMOS frugal bits. Any which were already started in the first pass are inserted into the new chain, so the keyboard is reset once and only once. Boot times, with a 300cs key scan time in NewReset. Risc PC with 160MB RAM (128+32+0). Times from turning on power to initial "beep", using a stopwatch. RISC OS 3.70 RISC OS 5.22 This OS ARM610 12.5 10.4 10.3 ARM710 11.8 10.2 9.7 StrongARM 233 11.1 9.5 8.4 In NewReset.s: Remove old KbdScan code (leave Reset_IRQ_Handler for IIC only) If HAL_KbdScanDependencies returns a null string then present KbdDone flag and skip to full init. A few vestiges of soft resets removed. Do RAM clear when waiting for INKEY (being careful not to trash the running modules...). Clearing just the freepool on a 2GB Titanium cleared 7EFD6 pages (99.2%). In ModHand.s: 2nd pass need to sneaky renumber the nodes (so *ROMModules is in the right order, frugal bits line up) without resetting the chain In HAL.s: Change ClearPhysRAM to ClearWkspRAM, such that it only clears the kernel workspace rather than all RAM. The bulk of the RAM is cleared during the keyboard scan by new function ClearFreePoolSection. Add a variant of Init_MapInRAM which clears the mapped in RAM too (as these very early claims will not be in the free pool when the RAM is cleared later). Remove HAL keyboard scan setup & IRQ handler. Fix bug in HALDebugHexTX2, the input value needs pre-shifting by 16b before continuing. In GetAll.s, PMF/osbyte.s: Use Hdr:Countries and Hdr:OsBytes for constants. In PMF/key.s, PMF/osinit.s: Relocate the key post init from PostInit to KeyPostInit. Changed PostInit to not tail call KeyPostInit so they can be called independently. In hdr/KernelWs: Improve comments, add InitWsStart label to refer to. In hdr/HALEntries: Add HAL_KbdScanDependencies. Delete KbdFlag exports. Took the opportunity to reorder some of the higher numbered HAL entries and re-grouping, specifically (112,120) (84,106,108,117). Admin: Tested on an ARM6/ARM7/SA Risc PC, BeagleBoard xM, Iyonix, Pandaboard ES, Wandboard Quad, IPEGv5, Titanium, Pi 2 and 3. Requires corresponding HAL change. Submission for USB bounty. Tagged as Kernel-5_89
Tweak handling of zero page compatibility page Detail: s/MemInfo, hdr/KernelWS - Rather than peeking L2PT to determine if the compatibility page is enabled, use a workspace var to track its state. This ensures we won't get confused if other software decides to map something of its own to &0. s/NewReset - Ensure the CompatibilityPageEnabled flag is initialised correctly Admin: Tested in Iyonix ROM softload Tagged as Kernel-5_90
Fix initial OS_ResyncTime to occur before Service_PostInit Detail: s/NewReset - In Kernel-5_89, the initial OS_ResyncTime call was erroneously moved to after Service_PostInit, which had the side-effect of causing TerritoryManager's initial evaluation of AutoDST rules to be performed using an uninitialised RTC, with varying side effects depending on the user's timezone (e.g. UK stuck in DST all year round due to lack of BST in 1970). Move the call back to its original location so that TerritoryManager and any other PostInit claimants can see the correct time. Admin: Tested in Iyonix ROM Resolves ticket #441 Tagged as Kernel-5_91
Fix 2x output stream redirection bugs Detail: s/Oscli: - Reorder RemoveOscliCharJobs to avoid WrchV being left claimed while the output stream is being closed, to resolve ticket #420. - Register usage also tweaked a bit to make the code a bit shorter & easier to read - Fix RedirectWrch to deal with errors correctly. PSR save/restore macros were added to the routine during the 32bit conversion process, but (a) they were inadvertantly causing all errors to be ignored, and (b) they were redundant since WrchV has no special in/out requirements for the PSR flags Admin: Tested on Pandaboard Ticket #420 fix based around Colin's fix from https://www.riscosopen.org/forum/forums/4/topics/5269 Tagged as Kernel-5_92
Unplug/RMInsert with podule module fix During the first pass keyboard scan the ROM module nodes are built off the anchor ROMModuleChain. During the second pass the whole set of ROM module nodes are temporarily constructed anchored on the stack, then switched over. This caused a problem when a duplicate name module was encountered on a podule (eg. MbufManager in a NIC) because FindROMModule searches from the ROMModuleChain anchor, didn't find a match, so created a new node rather than linking it to the NewerVersion/OlderVersion linked list on the existing node. Then *Unplug and *RMInsert would say "Module is not in ROM" if the optional podule specifier was given, because the search stopped at the first node with the right name. Swap round the second pass so it anchors directly on ROMModuleChain, and keeps the first pass anchor on the stack (needed only occasionally to copy over details of modules already initialised). Tested on a Risc PC with NIC, can now selectively unplug MbufManager again. Tagged as Kernel-5_93
Teletext fixes Detail: s/vdu/vdugrafl - Disable hardware scrolling if we're in a teletext mode with a border. Quick fix in lieu of adding some code to make sure the relevant border areas are cleared when scrolling. s/vdu/vduttx - Ignore VDU 23,18,<n> sequences when outside of teletext. Fixes a crash when screen update suspend/resume sequences are used. Admin: Tested on RiscPC Tagged as Kernel-5_94
Recover gracefully from a completely blank set of CMOS Newly born boards have all 0xFF's in their CMOS (EEPROM), but the new order of keyboard scan did Init -> Scan keyboard -> Check (or wipe) CMOS and would therefore leave 0xFF's in a select few kernel workspace areas and OS_Byte values. Defer the init which reads CMOS until after the check/wipe step. Only the screen area size is now done early, but MassageScreenSize clamps that properly anyway. Arthur3.s: Relocate stranded function SetupPrinterBuffer to osinit. PMF/key.s: Drop support for SoftReset. PMF/osinit.s: Stuff in hardcoded defaults at early init. Retrieve the proper ones later. Take ownership of SystemSprite/RamFS/Font Manager dynamic areas (deferrable). vdudriver.s: Use symbolic name. NewReset.s: Defer SystemSprite/RamFS/Font Manager area creation, MouseInit, Read(Hard)CMOSDefaults until later. hdr/Options: Delete unused IgnoreVRAM. Remove MaxRAMFS_Size now PMPs make it not useful. Shuffle ARM6Support/XScaleMiniCache/XScaleJTAGDebug to be adjacent to their definitions. Tested by filling first 256 bytes with 0xFF and powering up. Reset now completes, OS_Byte variables look sensible. Tagged as Kernel-5_95
Fix some pointer colour issues. Fix PaletteV 6 (blank screen) return value. Detail: s/vdu/vdudriver - On startup, initialise all palettes to 0, not just Pal_Blank. Ensures that entries which might not always be explicitly initialised (e.g. pointer) are self-consistent. Also make sure InitialiseMode communicates the pointer palette to the new GV driver, since some components tend to program it in a lazy manner (e.g. Hourglass) s/vdu/vdupalxx - Fix UpdateAllPalette setting R4 to 0 on exit. Fix PV_BlankScreen R0 return value to be 0/1 as the comment suggests instead of always being 0 due to GraphicsV calls. Admin: Tested on wandboard Fixes incorrect hourglass colours after reset, due to software RAM clear not wiping the kernel's palette (kernel + Hourglass thought old colours were still in use, but IMXVideo hadn't been told any colours yet so was using defaults of 0) Tagged as Kernel-5_96
Adapt A15 KnownCPUFlags to account for LDREX and friends When SyncLib-0_04 is used in conjunction with SDIODriver, the exclusive access instructions (instead of SWP) abort when the cache is off, causing the machine to hang if *Cache Off is used. See A15 TRM section 6.4.5 for the logic. Copy the A53's known CPU flags to prevent the D cache being turned off. Tagged as Kernel-5_97
Make it easier to debug aborts that were triggered by ABT/UND code Detail: s/Middle - Tweak register dump generation so that it'll attempt to provide sensible R13 & R14 values if the abort came from the same mode that we're handling the abort in. R13 will be adjusted by however much data we've pushed onto the stack, and R14 will be set to &DEADDEAD to indicate that the CPU has corrupted it and we don't know what the original value was. Admin: Tested on BB-xM Tagged as Kernel-5_98
Fix for num lock oddity at power on when configured off The default OS_Byte value enabled num lock, but this was passed to the keyboard *before* a decision to wipe the CMOS (and hence potentially override it) was made. This left the LED on until a key was pressed, regardless of the configured state. Change the default OS_Byte value to be off so there's only one transition (off->on, or off->off), and refresh the keyboard after the validity of CMOS has been made. Ref: https://www.riscosopen.org/forum/forums/4/topics/10400 Tagged as Kernel-5_99
Fix ability for PMPs to claim specific pages Detail: s/ChangeDyn - Due to the way that some page flags map to the same bits as (different) DA flags, the Batcall that PMP_PreGrow makes in order to claim the requested page was getting confused and thinking that the special DMA PreGrow handler should be used instead of the DA-specific one (which in this case is a custom one responsible for claiming the right page). Modify PMP_PreGrow so that it only supplies DA flags to the Batcall, and patches in any custom page flags afterwards. Also swap magic number for appropriate symbol in PMPGrowHandler. Admin: Tested on BB-xM Fixes CAM corruption when a PMP claims a specific page, due to the PMP code and DA code disagreeing about which page should be used Tagged as Kernel-6_00
Resync with allocations database Detail: Resolve allocation clash for vector &2C. It appears that RISCOS Ltd used this vector in RISC OS 6 without getting it allocated - they really should have known better, since Hdr:RISCOS has always one of the header files centrally managed and coordinated between the two forks of RISC OS. Resolved by moving SeriousErrorV to &2D since it is a relatively recent addition (April 2016) and hasn't yet featured in a stable RISC OS 5 release. Also correct some comments elsewhere in Hdr:RISCOS. Tagged as Kernel-6_01
Logs for castle/RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_17 to AsmUtils-0_19
Prefer CPS over MSR when performing PSR manipulation Detail: s/irqs - ensure_irqs_off / ensure_irqs_on now use CPS when building for ARMv6+, as it has better performance than MSR Admin: Tested on Cortex-A15 Tagged as AsmUtils-0_18
Correction to function prototype The implementation of osvarlen expects 2 arguments, but the header file only declares 1, so R4 becomes undefined. Tagged as AsmUtils-0_19
Logs for castle/RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_85 to RISC_OSLib-5_95
Fix null pointer dereference in stack backtrace code Detail: c/armsys - _kernel_language will return NULL if the PC was outside any known library language block, so make sure to check for that before dereferencing the pointer Admin: Builds, untested Tagged as RISC_OSLib-5_86
Open colour picker menus in the right place Function dboxtcol() always opens colour pickers as transient submenus (in the flags to ColourPicker_OpenDialogue, plus listening for the menus deleted message) but chose to open the dialogue at the current mouse pointer, so obscuring part of the menu rather than opening it where the Style Guide wants it. wimp.h: Add a struct definition of menuwarn messages. txtedit.c/dbox.c/ctl.c: Use the menuwarn struct rather than indexing the words[]. dboxtcol.c: Provided the last wimp event was the menu warning, use the x/y coordinates from that instead of the mouse pointer. Remove some local defines in favour of central ones. Make sure we use 0x80000000/0x7F000000 like the PRM says for the other 2 corners of the dialogue, not 0,0. Tested in a disc build of !Draw. Not tagged
Remove arbitrary limits on menu sizes Detail: When RISC_OSLib is used to generate menus using menu_new and menu_extend there are two (undocumented?) limits on the total menu size: - 64 items on a menu. Any more are silently ignored. - 1024 bytes of indirect text. Above this, any items have several bytes of random rubbish displayed in the menu entry. rlib.c.menu (r4.6) has been changed to: - remove menu_workarea which was on the stack, and caused limits. - only use malloc'd storage areas for the menu. - reduce the data copied by at least 50% by changing processing from: copy; update; copy to : realloc extend (& copy?); update; realloc shrink (no copy). - remove the limits by adding more storage dynamically. - simplify code, which reduces the object code size by about 7%. Admin: The changes have been tested on an Iyonix running RO5.23, and VRPC running RO4.39, with a large C program with about 80 menus. The only noticeable effects were beneficial. It has also been tested with artificially low ADDITEMS and ADDBYTES. Submission from Martin Avison. Tagged as RISC_OSLib-5_87
Support for ARMv8 Detail: The SWP and SWPB instructions have finally been removed in ARMv8, after having been deprecated for a very long time. This version adds alternative versions of code that used to use them with ones that use LDREX/STREX and LDREXB/STREXB instead. Soft-loadable C libraries will choose between implementations at runtime using OS_PlatformFeatures; ROM builds only include the appropriate version for the target hardware. Admin: Tested on Raspberry Pi 3. Tagged as RISC_OSLib-5_88
Prefer CPS over MSR for PSR manipulation. Use UDIV/SDIV for general-purpose division, and UMULL for /10. Detail: s/k_body: - _kernel_irqs_off and _kernel_irqs_on now use CPS for disabling/enabling IRQs as opposed to MSR. Apart from being shorter code sequences, it's generally a faster instruction. - __rt_udiv and __rt_sdiv (and aliases) now use the UDIV and SDIV instructions if building for ARMv7VE - __rt_udiv10 and __rt_sdiv10 (and aliases) now use UMULL to multiply by 1/10 when building for targets with long multiply support, as this is faster than the old method. UDIV/SDIV can be fast too, but only for small numbers, making UMULL the best for the general case. Admin: Tested on Cortex-A15 Prototyping of division routines on assorted CPUs shows that UDIV/SDIV is generally between 20% and 400% faster than the old routine (Cortex-A7, Cortex-A53), or up to 1300% faster on Cortex-A15 (the CPU does not like the old routine!) Division by 10 is now about 20% faster across all appropriate CPUs Tagged as RISC_OSLib-5_89
[391] localtime() ignores manual timezone configuration Detail: When in the default C locale localtime() would return the wrong time for nonzero timezones. Admin: Tested with softloaded C library for each ROM release supported. Submission from Rick Murray. Tagged as RISC_OSLib-5_90
When multiple CPU architectures are supported, allow dynamically linked clients to be given optimal versions of routines where possible Detail: This set of changes adds support for representing architecture-specific variants of routines within the export tables which the shared C library uses to fill in the client's stubs. This allows builds of the module which target multiple architectures (e.g. IOMD, Raspberry Pi, or softloads) to offer the most optimal versions of routines to clients wherever multiple variants exist. If only one architecture is supported, only one version of each routine will be built, and no variant tables will be generated. Currently routine selection for staticly linked clients isn't supported - staticly linked targets will only use the most backwards-compatible version of the routines, as before. Also not all routines are catered for yet (e.g. _ll_udiv) File changes: - s/h_common - New file containing macros used during variant table construction - Makefile - Set SHARED_C_LIBRARY to {TRUE} for SCL builds of assembler code, as per the SHARED_C_LIBRARY #define - kernel/s/k_body, s/longlong - For routines which have multiple variants available for the target architectures, build all variants, and generate variant table entries using the new RoutineVariant macro. This has required some reordering of the different variants to make sure that when both versions are built, the most backwards-compatible one will be first (and thus will be called by staticly linked clients) - s/h_modmacro - "Entry" macro (when building SCL export tables) changed to use DCD instead of B, to allow byte-aligned symbols to be represented (low bits of symbol address is now used as 'is a variant table' flag) - s/initmodule - Client stub initialisation rewritten to take into account the B -> DCD change, and to detect and evaluate variant entries - clib/s/cl_entries, kernel/s/k_entries, kernel/s/k_entries2 - Update library entry tables to reference the variant forms of routines where relevant Admin: Tested on Raspberry Pi 1, 2, 3 (ROM), RISC OS 3.1 & StrongARM 3.7 (softload 26bit build) Requires Kernel-5_35-4_79_2_325 Tagged as RISC_OSLib-5_91
Remove ARM2 NOPs Detail: kernel/s/k_body, s/initmodule - Remove NOPs from after PSR manipulation macros; the macros now fully take care of ARM2 & StrongARM compatibility for us Admin: Tested PlingSystem build on (ARM3) RISC OS 3.1 Requires HdrSrc-2_63 for ARM2 compatibility Tagged as RISC_OSLib-5_92
Eliminate some global OS_SynchroniseCodeAreas calls Detail: kernel/s/k_body - Eliminate a couple of global OS_SynchroniseCodeAreas calls in _kernel_init and _kernel_system s/initmodule - Eliminate a global OS_SynchroniseCodeAreas call in _Shared_Lib_Module_SWI_Code Admin: Tested on iMx6 Improves performance with SMP ROMs, where global D-cache clean isn't really possible Tagged as RISC_OSLib-5_93
Put ctl in the attic The ctl part of rlib has various memory leaks (ref https://www.riscosopen.org/forum/forums/4/topics/9503) reflecting its abandoned state. See the FrontEnd module for a more flexible implementation of the same GUI-in-a-text-file scripting language. The ctl API was not in C release 3 (it post dates that) nor in C release 4 manual, and the whole of rlib was removed from C release 5 in favour of the Toolbox. The change log at the top of rlib/s/rl_spare shows it was briefly added in early 1990 then removed in April 1991. 26 years later, cull it from the Makefile too. Tagged as RISC_OSLib-5_94
Make abort handling more robust Detail: kernel/s/k_body - Update AbortFindHandler to check that SP & SL are both word aligned, especially because the code will attempt to load from SL to check for the stack chunk magic marker. Admin: Tested on BB-xM Avoids some "abort while in abort handler" type scenarios if an abort occurs while SP/SL are invalid Tagged as RISC_OSLib-5_95
Logs for mixed/RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_60 to TCPIPLibs-5_63
Add missing singularly linked list initialiser Macros merged from FreeBSD SVN revision 51955. Tagged as TCPIPLibs-5_61
TCPIP header updates protocols/routed.h updated from FreeBSD revision 32545, circa 1998 as is Internet 5.xx, to replace the 1993 copy that seemed to be missed in the last update. LibraryDoc & dcistructs.h typos. filestat.c and unixlib.h function prototype of filestat corrected to reduce warnings. Tagged as TCPIPLibs-5_62
Updates to queue.h macros Detail: Add safe _FOREACH iterators to the rest of the queue.h types (from FreeBSD revision 118904). Retire CIRCLEQ. Use TAILQ instead, it provides the same functionality (from FreeBSD revision 70469). Tagged as TCPIPLibs-5_63
Logs for castle/RiscOS/Sources/Lib/Unicode from Unicode-0_61 to Unicode-0_62
Update to Unicode 3.2.0 Detail: Update UnicodeData from http://www.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.tx which is a later (and last in the 3.x series) version of the database. Update unictype_is_ideograph() to match the ranges given in that version of the standard, and remove the entries that were checking if a UCS2 (16 bit) value with 0x20000 and 0x30000. Admin: The updated UnicodeData is used for CharNames in !Unicode for !Chars. Tagged as Unicode-0_62
Logs for castle/RiscOS/Sources/Networking/DHCP from DHCP-0_26 to DHCP-0_27
Don't pass silly error numbers to MsgTrans Detail: c/module - Don't pass silly error numbers to MessageTrans_ErrorLookup - the kernel will now fault them Admin: Tested on Raspberry Pi 3 Tagged as DHCP-0_27
Logs for castle/RiscOS/Sources/Networking/Econet from Econet-5_75 to Econet-5_80
Add support for RAM variant Now we use the shared makefiles & accept MessageTrans is present, we get a RAM variant with merged messages almost for free. Add the supporting ResourceFS register/deregister code, this removes the need for a separate EconetMsgs module. Tested on a RISC OS 3.70 Risc PC with AEH60 card, browsing a server & copying files to and fro. Tagged as Econet-5_76
Add Ursula fast service table, make hardware base common Added an Ursula fast reject service call table, inspected in !Verma for correctness. Remove the 'PoduleCapable' switch, since in both cases it boils down to an LDR of the address of the 68B54 controller there's little to choose between it being in the workspace or a constant in ROM. Changed 2x unaligned loads into LDRB's since only 1 byte values are needed (Commands.s). Tested on an AEH60 on RISC OS 3.70. Tagged as Econet-5_77
Fix for RMA corruption Detail: ImmediateRecord can hold a TxCB, but was only sized for CommonCB. When in ROM the neighbouring module seems tolerant of the start of its workspace being overwrittem, but when softloaded (esp. on RISC OS 3.xx) frequent "Heap corrupt" or address exceptions would occur. Admin: Submission from Ian Bradbury. Tagged as Econet-5_78
32-bit compatible Detail: Added a veneer to the SWI handler so that internally they can corrupt flags and only on exit are 26 .v. 32 bit differences considered. No need to flags preserve the service call handler(s), module init, module finalisation. Fix bug in RxGetRegisters, the value in r9 pointing to the register block is a banked FIQ mode register, so the IRQ r13/r14 and SVC r13/r14 would be written whereever the unbanked r9 happened to be pointing. May also be worth considering adding a RxGetRegisters32 so the extra PSR fields can be read (not done). Changed references to ADR rN, IOC to MOV rN, #IOC. For OS_Byte calls use names from Hdr:OsBytes. Fix for lock up in SetTicker. If Service_ClaimFIQ were to return an error, the function returned without re-enabling interrupts. Extra PLP inserted. Removed manual NOPs after PSR fiddling macros, these are now included in the macro where required with HdrSrc-2_63. Delete many unused macros from Macros.s to save having to bother 32 bitting them. Made 32 bit write of processor vector (required in a 32 bit configuration on a 26 bit system) conditional on :LNOT:No32bitCode, so it's omitted for machines without MSR/MRS. Admin: Submission from Ian Bradbury, with input from Rob Sprowson. Tested with AEH60 NIC on Risc PC with RISC OS 3.71, 4.02, 5.22. Tested using motherboard Econet module with RISC OS 3.10 on an A5000. For RISC OS 5, requires Podule-1_71 for the NIC address lookup, and also hardwiring a different IOC address (this is not currently looked up at runtime). Tagged as Econet-5_79
Minor fixes Detail: Change some signed pointer compares to be unsigned. Report network speed in kilohertz not kelvinhertz. Admin: Not tested - the code changes are in debug switches only. Tagged as Econet-5_80
Logs for bsd/RiscOS/Sources/Networking/Ethernet/EtherUSB from EtherUSB-0_30 to EtherUSB-0_41
Further throughput improvements ax88772.c: Modified to work with changes made to net.c and usb.c. Increased buffer sizes, allow more than one packet receipt. ax88172.c/mcs7830.c/pegasus.c: Modified to work with changes made to net.c and usb.c. smsc95xx.c: Copyright header simplified by using pronoun form "the copyright holders" rather than repeating this list. Modified to work with changes made to net.c and usb.c. Reading of MAC address from EEPROM fixed. products.c: Added SMSC9730 device id (uses smsc95xx backend). net.c/net.h: tx_queue removed, all transmit buffering is now done in the USB code. usb.c: Function usb_write() blocks until room is available, or times out. Use USBDriver header rather than defining local SWI numbers. Messages: Renamed DescSMC token to DescSMC9. Removed redundant Stat7 statistic. Submission from Colin Granville. Tested on Pi B+ and OMAP3, not tested on OMAP4, but believed to markedly improve its performance over version 0.30. Tagged as EtherUSB-0_31
Addition of SMSC 75xx backend Support for USB product ids 0x7500 and 0x7505. Submission from Colin Granville. Tagged as EtherUSB-0_32
Buffer size correction Cut and paste mistake from smsc95xx during review. Tagged as EtherUSB-0_33
Improve resilience to USB stack hot swapping Detail: Listen out for different service calls so EtherUSB keeps connected even if DeviceFS/USBDriver/HC backends get restarted. Admin: Submission from Colin Granville. Tagged as EtherUSB-0_34
Add support for AX88772B variants Detail: More careful manipulation of the control register, and extra entries in the product lookup table, adding support for AX88772B controllers. Added EUI48 check function, blank MAC addresses are now replaced by locally generated ones in dongles so cheap they don't have one of their own. Admin: Submission from Colin Granville. Tagged as EtherUSB-0_35
Support ARMv8 Detail: This module previously used both SWP and SWPB instructions, which have been withdrawn in ARMv8. Now use SyncLib to provide the equivalent functionality, which will use LDREX/STREX or LDREXB/STREXB instead when appropriate. Admin: Tested on Raspberry Pi 3. Tagged as EtherUSB-0_36
Don't pass silly error numbers to MsgTrans Detail: c/module - Don't pass silly error numbers to MessageTrans_ErrorLookup - the kernel will now fault them. Admin: Tested on Raspberry Pi 3 Tagged as EtherUSB-0_37
Speed reporting and buffer sizing for SMSC75xx backend Detail: net.c: added support for 1000Mb speed smsc75xx.c: reduced MAX_RX_FIFOSIZE to 16k (avoids problems with Kernel keyboard scanning); corrected determination of ethernet speed (read from SMC75XX_MAC_CR register) net.h: added net_speed_1000Mb (in net_speed_t) and speed_1000Mb (in struct net_abilities_t) Messages: added Sp1000 and Dit21 for supporting 1000Mb speed Admin: Submission from Colin Granville. Tagged as EtherUSB-0_38
Improvements to SMSC 95xx backend and common MII handling Detail: c/smsc95xx - Convert code to use the common MII backend. Reduce verbosity of debug output. Fix two sets of status callbacks running (callback_status_adapter + device_status). Tweak/refactor a couple of other bits as necessary in order to get 10M links working reliably. c/mii, h/mii, h/net - Allow backends to indicate their level of support for PAUSE functionality, so that we can advertise it correctly when performing auto-negotiation (previously no pause ability would have been advertised) c/config - Ensure config_parse_arguments passes through the PAUSE capabilities to the output net_config_t. Use the (currently unused) ERR_BAD_CONFIG for if autonegotiation is disabled but either speed or duplex setting not specified (avoids MII code or backends getting confused as to what options they should use) Resources/UK/Messages - Tweak wording of ERR_BAD_CONFIG so that it's more sensible for the new usage doc/!ReadMe - Remove the note about 10M links not being supported by the SMSC 95xx backend. Update the changelog to point people towards CVS for recent changes. Admin: Tested on PandaBoard + Raspberry Pi 3, using SMSC 95xx and AX88772 devices SMSC testing results: * Previously, 10M links were non-functional * Previously, manually-configured 100M full duplex links would suffer terrible performance * Previously, any attempt to reconfigure a link on Pi 3 would result in a "Device broken or misbehaving" error? (or at least, that's how 0.38 is behaving for me now) * Now, all combinations of configuration (speed + link + auto/noauto) appear to work correctly, except for manually-configured full-duplex links, which still suffer from terrible performance AX88772 was used to verify MII changes haven't broken anything for other backends; testing showed no significant differences to previous version (all speed + link + auto/noauto modes working) Resolves ticket #342: https://www.riscosopen.org/tracker/tickets/342 Note that currently the SMSC 95xx backend is the only backend to advertise PAUSE functionality via the common MII code; a future improvement would be to set up the other backends appropriately (set correct flags in net_abilities_t) Tagged as EtherUSB-0_39
Fix pegasus backend. Update *ejconfig syntax message. Detail: c/pegasus - Add mii_abilities() call to fix backend not working since extra sanity checks were added to config_parse_arguments() in EtherUSB 0.39. Also switch over to using the common status callback code, and provide a configure function. Resources/UK/CmdHelp - Update *ejconfig syntax message, since it was missing some things like 'noauto'. Admin: Tested on beagleboard Fixes pegasus backend not working since EtherUSB 0.39: https://www.riscosopen.org/forum/forums/4/topics/10119 Tagged as EtherUSB-0_40
Add SMSC78xx support Detail: c/smsc78xx, c/module, c/products, h/backends, Makefile - Add SMSC78xx driver, for the chip used in the Raspberry Pi 3B+ c/config, c/mii, h/mii - Add support for gigabit MIIs & associated (auto) configuration c/net, h/net - Handle gigabit link types. Pass verbose flag through to backend info function. c/smsc95xx - Make configure_link const-correct Resources/UK/CmdHelp - Update *EJConfig syntaxt text to include 1000 option Resources/UK/Messages - Add 78xx backend name & device-specific info tokens Admin: Tested on Raspberry Pi 3B & 3B+ Manually configured gigabit links aren't supported yet Gigabit half-duplex isn't supported (78xx MAC limitation) For the 78xx, manually-configured full-duplex links appear to suffer terrible RX performance (as seen on 95xx). All supported auto modes appear to work correctly. Tagged as EtherUSB-0_41
Logs for bsd/RiscOS/Sources/Networking/Ethernet/EtherY from EtherY-0_62 to EtherY-0_64
Debug correction, and fix for mbuf loop on fragmented packet eymodule.c: Correction to debug message typo. glue.c: On fast machines if you're unlucky while sending out a fragmented packet which has been provided as a list of mbufs length > 1, having sent the first chain in the list by using CAT() the chain is free'd but without cropping the hdr off which now points to a free'd mbuf. An incoming packet just at that moment would likely recycle the mbuf and the result is a circular linked list which MbufManager can't process. Unlink hdr before freeing to break the chain. Tagged as EtherY-0_63
Minor debug sync up and clearer pointers Pass the NIC struct to the name_chip function, even though it's unused at present. Add a few local pointers to struct ifnet so that the subsequent dereferences are clearer. No functional change. Built, but not tested. Tagged as EtherY-0_64
Logs for castle/RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_38 to Freeway-0_41
Have Freeway look after its own messages Remove faulty logic for Service_MessageFileClosed, MessageTrans reopens the file, so no need to do it again locally. Usual register/deregister/reregister code for ResourceFS. Replace clumsy casts of (_kernel_oserror *)0 with NULLs. Tagged as Freeway-0_39
Messages correction Admin: Authentification->Authentication. Discovered during User Guide error message audit. Tagged as Freeway-0_40
Keep messages open when dormant When Freeway concludes it has no interfaces, it called fw_final() & closed the messages file. In turn any errors reported from SWIs or *commands came out as untranslated tokens. Move the release_msgs() to when the module finalises in fw_module_final(), not just when it's given up trying. Also close the messages if fw_init() returns an error - there was one case where that would not happen and leave MessageTrans/ResourceFS pointing at some old RMA. Replaced a few magic numbers with defines from the appropriate headers. Tested in a machine with no network interface, which used to say "FWNoInet" in response to *FWShow. Tagged as Freeway-0_41
Logs for bsd/RiscOS/Sources/Networking/MimeMap from MimeMap-0_17 to MimeMap-0_19
Print the result of a command line lookup of DOS extension Right code, but wrong braces - the result (or error) were never shown in the DOS lookup case. Fixes ticket #410. Tagged as MimeMap-0_18
Add support for standalone variant Usual ResourceFS boiler plate code, and messages for pre RISC OS 3.60 help & syntax. Added missing fullstop to help message in passing. Tested briefly on a Risc PC. Tagged as MimeMap-0_19
Logs for castle/RiscOS/Sources/Networking/AUN/Net from Net-6_24 to Net-6_26
Have Net look after its own messages Net was trying to share some messages with the Econet module, though on balance this wasn't particularly useful as it then needed to duplicate message handling code to keep 2 files open. Because those messages were held in AUNMsgs they didn't get tokenised in ROM, overall ending up taking more space. Register in ResourcesFS at run time for RAM targets, add tokenisation directives for ROM targets, removed redundant !Configure related strings. Changed the messages fd to be int's to ensure word alignment. Removed inappropriate Service_MessageFileClosed handler, MessageTrans reopens the files (since the fd is in the RMA) so no need to reopen them a second time. This service call is intended to recache direct pointers to tokens, but none are ever taken. Save time by just making textbuf a zero length string rather than memset()ing the whole buffer. Resolved a couple more compiler warnings (but NetG still doesn't compile). Fix bug where a failure to enable the internet event would decrement the internet event count for any other modules interested in that event. Use CMHG finalisation rather than atexit(). Error "AUN not configured" now uses a non zero trappable error number. Error number for BadSWI corrected from 0x111 to 0x110. Requires HdrSrc-2_51 for the error number. Tagged as Net-6_25
Build fix Messages were ending up registered as Resources.Net.Messages.Net.Messages due to using the wrong makefile variable. Tagged as Net-6_26
Logs for castle/RiscOS/Sources/Networking/Omni/Apps/Omni from Omni-2_21 to Omni-2_28
Export some Omni constants Create an export Interface/OmniClient.h with the SWI numbers and subreason codes in. Use these in Client.c in place of local copy. Minor typos in Docs/SWI_Spec corrected. Tagged as Omni-2_22
Install NetFiler icons to !Omni Also, in the various script files, stop abusing <Omni$Path> variable, use it as Omni: like it was intended. Tagged as Omni-2_23
Add support for drag-to-iconbar for all of Omni's clients The bones of support for this were already present, but disabled by the 'EXPERT' switch. Since the other filers have supported the operation since Ursula, enable & refactor the code to use the same protocol the other filers use. Allow a non root destinate to be used if the variable 'FSTitle + Filer$DefaultDir' is set. Remove dead UserDrag code. Tested with LanManFS and (Omni) NetFiler. Tagged as Omni-2_24
Bump up the username limit The user name field had a miserly 32 character limit, while the password field is 64. Align them both (internally they're stored in malloc'd strings so there's no inherent application limit). Tagged as Omni-2_25
Add sprites for OmniAccess Deeper colour themes-based sprites for disc based OmniAccess. Tagged as Omni-2_26
Add OmniNFS resources Install the hi-res sprites for OmniNFS, and tidy up the Startup script to require DCI4 minimum (since it's built with COMPAT_INET4. Trim out an unused error string. Tagged as Omni-2_27
Recreate some lost utils Trying to enable OmniAccess by just turning on the flag in Startup would lead to failure because the Dormant and KillTask utilities were missing. Manually running the modules worked though. Dormat/KillTask:Recreate them. Makefile/StartShare:Install them under Utils/Access rather than in the RMStore since they're not modules. Startup:Sort out the ensures; don't bother supporting DCI2 any more, since we ensure UtilityModule 3.50 because of some MRS/MSR, also avoids funny business with AUNMsgs. Tagged as Omni-2_28
Logs for castle/RiscOS/Sources/Networking/Omni/Protocols/LanManFS from LanManFS-2_48 to LanManFS-2_61
Fix for null pointer assignment Can't zero the t2flags having just set hServer to NULL. Tagged as LanManFS-2_49
Be more efficient with buffers Take note of, and use, the MaxBufferSize that the server tells us during negotiation rather than a fixed value. If the server doesn't say, use 1k as the default as before. Submission from Colin Granville. Tagged as LanManFS-2_50
Build fix RES_PATH needs the component name too. Tagged as LanManFS-2_51
Add support for NTLM authenticated logins SMB.c: Line 875 don't free chain pB that early it is (and was being) used later on. Fixes to correct which SMB_RxWords the Sesskey and bloblen are retrieved from, for each of the dialects supported. Call the new auth code when the protocol flags require it. Don't uppercase passwords all the time, the server may require case sensitivity. md5c.c/md4c.c: Verbatim copies of the RSA reference implementations of MD4 and MD5 from the respective RFC's. Auth.c: Implementation of the hash/mash/reply that Microsoft requires. Define AUTHTEST of this file to build a simple application that verifies the algorithms. Tested against a Win7 install, inspecting in Wireshark that the passwords are no longer sent in the clear. Implements ticket #332. Submission from Colin Granville. Tagged as LanManFS-2_52
Fix for garbled translation One too many %s's in the code, one too few in the messages file. This resulted in diagnostics messages (eg. at the bottom of *ListFS) to show a %s that hadn't got substituted. Tagged as LanManFS-2_53
Fix for buffer overrun The PRM entry for Free reason 1 is very vague, it requires the length of the drive name including a terminator, not strlen() of the drive name. Free uses this directly to allocate RMA to copy into (though for drive names that aren't a multiple of 8 we're saved by OS_Module rounding up claims). Also use Free SWI values from headers rather than defining them again locally. Tagged as LanManFS-2_54
Don't pass silly error numbers to MsgTrans Detail: c/LanMan - Don't pass silly error numbers to MessageTrans_ErrorLookup - the kernel will now fault them. Admin: Tested on Raspberry Pi 3 Fixes "bad error pointer" message when e.g. failing to log on to a share: https://www.riscosopen.org/forum/forums/4/topics/5264 Tagged as LanManFS-2_55
[419] LanManFS does not see all visible files Detail: When the number of files read from the server didn't fit in the OS_GBPB buffer, continuation of the enumeration would fail. Resume key *and* filename used when resuming a directory enumeration to the same directory. Admin: Submission from Colin Granville. Tagged as LanManFS-2_56
Fix out-by-1 error reporting monitor name For *OPT1,2 the FS is supposed to report the leafname. LanManFS uses strrchr() to find the dot but hadn't incremented past it when returning the pointer. Tagged as LanManFS-2_57
Correction to configure syntax help The args to LMTransport are mandatory, so should be in <> brackets rather than []. Tagged as LanManFS-2_58
Fix for truncating writes to servers that declare MaxBufferSize >= 64k smb.c, lines 2726 onwards: when chopping up the next buffer, make sure the size sent still fits in the SMB_COM_WRITE count field (16 bits). For completeness, make sure the estimate of bytes remaining is similarly saturated too. smb.c, lines 2711-2713: cifs-v1-spec-02 section 5.27 says the server always expects to receive up to 65535 bytes, so this test should not be subject to the negotiated MaxBufferSize, and is expected to often exceed it. Currently we use 32k, if this is ever increased we really ought to take into account MaxRawSize that the server tells us. Tested with a handful of files of power-of-2 sizes and odd sizes. Inspection in Wireshark looks OK. Variation of a diagnosis by Will Ling https://www.riscosopen.org/forum/forums/4/topics/8966 Tagged as LanManFS-2_59
Resolved issue where RISC OS name '1 2/3' gets wrongly translated. Detail: The translate routine that converts contentious characters in a RiscOS file name to equivalent DOS ones was being invoked a second time. Normally this wouldn't be critical, but a / in riscos was converted to the . in DOS, correctly , then converted back again. This error mode with more than one contentious character in (particularly) a directory name had recently come to light. Admin: Tested by building a RiscOS rom image on a pc based LanManFS mount without errors. Tagged as LanManFS-2_60
Name resolution, wildcarded FSEntry_File 5 & 9, and buffer overrun fixes Make SMB_RxWords a bit bigger per static anaylsis https://www.riscosopen.org/forum/forums/4/topics/9503 when LONGNAMES is undefined, since NT LM 0.12 dialect is allowed at the same time as short names. A change to name translation in LanManFS-2_60 broke all forms of nested contentious name resolution, ie. where a leafname containing a contentious character was itself in a directory containing one. The cited problem names ('1 2/3' and '1 /s') can both be resolved at one level only, no 2nd pass is required. The resolution function walks along the elements of the path one at a time to reach the leaf (ie. no element is processed twice). A test case has been created to allow some regression testing when making future changes in this area. When building tboxlibint Copy h.* <Lib$Dir>.tboxlibint.h.* when the directory is empty FileSwitch checks the destination ending in ...\h\* which the short names translation would error with ENOWILDCARD, but the long names translation attempts to resolve it by finding the trailing '\' and appending a '*' (ie. not doing anything), this returns no results and is passed back unfaulted. The special check in fsentry_file() for ENOWILDCARD for the two ReadCatalogueInformation thus doesn't trigger, and an attempt to FileGetAttribs() is made on the still wildcarded path. This is rejected by the server when in SMB_GetAttribsX2() does a TRANSACT2_QUERYPATHINFORMATION, which expects a non wildcarded object (on Windows servers at least), propagating an error back up to the user. This stopped a ROM build from completing the exports phase via LanManFS on a Windows share. Const-ify a few things. Changed files Xlate.c: Revert change from revision 1.21, return ENOWILDCARD when appropriate. SMC.c: Increase MAX_WCT buffer size to 17. UK/CmdHelp: Add some missing chevrons round the command syntax for required parameters. test/Contentious: Test case for nested contentious character resolution code. Tagged as LanManFS-2_61
Logs for castle/RiscOS/Sources/Printing/FontPrint from FontPrint-1_36 to FontPrint-1_37
Style Guide compliance change Detail: Enlarge the 'Defaults' and 'Save' buttons to 52 high in the 'Download' window. Remove specific reference to RISC OS 3 in the !Help. Part of User Guide review. Tagged as FontPrint-1_37
Logs for castle/RiscOS/Sources/Printing/Manager from Manager-1_83 to Manager-1_89
Correction to file type name Hdr:FileTypes and the User Guide say FC6 = PrintDfn. Make it so. Tagged as Manager-1_84
Make path search order consistent Change Printers$Path definition so !Run and !Boot agree with eachother, and with the (less often used) ROM variants of same (spotted by Steffen Huber). Also, rename temporary use of Choices$ variable since that's not registered to !Printers. Tagged as Manager-1_85
[438] PostScript printer feeds stuck at default Detail: Having selected 'Default printer settings' once a logic error meant whatever future feed was selected, the selection would always revert to the default. Admin: Fix for ticket #438. Submission from Richard Coleman. Tagged as Manager-1_86
Clarify terminology for what Net is Same as for InetSetup 0.57 rename 'Net' in the connection dialogue as 'Econet', since a network printer means something totally different now. Spotted while capturing User Guide screen shots. Tagged as Manager-1_87
Write through the right system variable Remove the misuse of PrinterChoices$Path for writing through * It's stated in the sources it only ever has one directory on it, so might as well not be a path * It's not in !Printers allocated namespace * We can save some effort canonicalising it Drop support for the define 'UseChoices'; always use them. Global search and replace of PrinterChoices: for <Printers$ChoicesRW>. (cf. Boot$ChoicesRW). Tagged as Manager-1_88
Fade parallel connection if it's not there Detect whether a parallel port is available, and if not fade the option in the connection dialogue. Additionally, if the default connection type (set by *Configure Print) isn't there, don't try selecting it - fall back to "None". RunImage: Generalise the saved-connection-not-there warning box, by a new cnct_type_installed function. Use that again when setting the default connection type. Simplify a couple of bits of Sparrow support code. SupportPS & SupportPDF: Fix bug introduced in Printers-1_88 where adding a postscript printer would generate an invalid filename (was missing a + to concatenate strings). Tagged as Manager-1_89
Logs for castle/RiscOS/Sources/Printing/Modules/MakePSFont from MakePSFont-1_15 to MakePSFont-1_16
Makefile recreated from fragments init.s: Use Push/Pull for fewer warnings module.h/module.c: Use central headers or CMHG generated header in preference mheader.cmhg: Declare the resource filename here registry.c/use.c: Unjumbled double header inclusion convert.c/provide.c: Mark many functions as static Messages: Remove (now) unused message E06 Tagged as MakePSFont-1_16
Logs for castle/RiscOS/Sources/Printing/Modules/PDModules from PDModules-4_60 to PDModules-4_61
Fix for NULL pointer dereference at end of PostScript page When the last rectangle is encountered at the end of list, don't try reading the rectangle details in, just finish the page. Manually inspected the PostScript output from a simple Draw file with a line in it - grestores & gsaves/restores & saves match up still. Tagged as PDModules-4_61
Logs for castle/RiscOS/Sources/Printing/Modules/PDriver from PDriver-3_39 to PDriver-3_40
Makefile recreated from fragments Use {TRUE} and {FALSE}, Push/Pull, Unix style file names, and $MergedMsgs for the source of the resources when built standalone. Tagged as PDriver-3_40
Logs for castle/RiscOS/Sources/Printing/Modules/PDumperSpt from PDumperSpt-1_30 to PDumperSpt-1_31
Makefile recreated from fragments Tagged as PDumperSpt-1_31
Logs for castle/RiscOS/Sources/Printing/Modules/RemPrnSpt from RemPrnSpt-1_13 to RemPrnSpt-1_15
Build fix Use default RES_PATH. Tagged as RemPrnSpt-1_14
Fix for NULL pointer dereference when Access disabled With Access turned off in InetSetup Freeway doesn't run, so Inet$LocalAddr is unset, so getenv() returns a NULL pointer. Be more careful not to strncpy() it. Tagged as RemPrnSpt-1_15
Logs for castle/RiscOS/Sources/Printing/PrintDefs from PrintDefs-0_49 to PrintDefs-0_50
Move install destination of PCL definition Unlike all other def which are installed by vendor, the PCL def was grouped by language, meaning there was pretty much no chance of anyone guessing which printer it was for. Install it as Canon.MF4690PL instead. Wipe the resulting empty installed PCL directory (due to recursive copy used). Update readme for Canon printers to mention it. Tagged as PrintDefs-0_50
Logs for castle/RiscOS/Sources/Printing/PrintEdit from PrintEdit-0_52 to PrintEdit-0_55
Various minor fixes The iconbar icon was declared with the wrong width so was spaced too far from its neighbour, now calculates the width from the sprite rather than using 84 OSU hardwired. Delete user message 5 registration/handling (handler was previously commented out, but was still requesting the message from the Wimp). Missing interactive help for 'Fast parallel' icon added. Re-order the OPENOUT->stamp->write->CLOSE to avoid file sharing error on networked FS where the file stamp requires renaming the file. Remove crazy AND%11111111 from BPUT lines. BPUT: put a byte? Fix saving of "default_gname" tag, bug introduced in 4.1.3.1, which meant the preferred resolution only got saved if fast parallel was deselected. Tested on LanManFS, no longer errors on saving. Tagged as PrintEdit-0_53
Correction to file type name Hdr:FileTypes and the User Guide say FC6 = PrintDfn. Make it so. Tagged as PrintEdit-0_54
Enlarge writable icons Detail: Per Style Guide, set the numerous writable icons to 52 OSU high. No longer maintain or look for 2D Templates. Admin: From review of PrintEdit's User Guide chapter. Tagged as PrintEdit-0_55
Logs for castle/RiscOS/Sources/Printing/T1ToFont from T1ToFont-1_35 to T1ToFont-1_36
Makefile recreated from fragments Tagged as T1ToFont-1_36
Logs for castle/RiscOS/Sources/Programmer/ArmBE from ArmBE-1_06 to ArmBE-1_07
Makefile amendment Use CUSTOMRES=no to denote no resources. Tagged as ArmBE-1_07
Logs for castle/RiscOS/Sources/Programmer/DDEUtils from DDEUtils-1_74 to DDEUtils-1_75
Added additional debugging via HAL_DebugTX with enabling switch Detail: Added some debugging code to reroute, (assmebly time option) debug output through the HAL debug route. Has proved useful locating null pointer errors with vectors assembled high. Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as DDEUtils-1_75
Logs for castle/RiscOS/Sources/Programmer/Debugger from Debugger-1_87 to Debugger-2_02
Added module name and offset to *ShowRegs command Detail: *Showregs now indicated module name and offset if address is in a module Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as Debugger-1_88
Fix annotation of FPSCR LEN & STRIDE fields Detail: s/Debugger - Fix some broken logic in *ShowVFPRegs that was causing the FPSCR vector length fields to be reported incorrectly if vector stride was enabled Admin: Tested on Raspberry Pi Tagged as Debugger-1_89
Add *Where to debugger's armoury Largely inspired/ripped off from the DebugTools module, but using OS_DynamicArea 20 for the bulk of area searching. The address to lookup goes through the usual parser for Debugger commands so can be a hex address/register/implied exception PC if no arguments given. Removed limited lookup from *ShowRegs command; this wasn't especially useful being hardwired to PC since only data aborts have a valid PC, normally the other registers are more interesting. Fix miscapitalisation of ShowVFPRegs syntax (presumably to avoid it using Token0) by adding a DictTokens directive, since the syntax is used by code in the module which doesn't work with Token0. Split German messages out into CmdHelp/Messages. Tested in an IOMD ROM build with various edge cases. Tagged as Debugger-1_90
Fix typo in VSRI disassembly Detail: actions/ARMv7_ASIMD - The instruction is VSRI, but the disassembly was stating VRSI. Fix. Admin: Untested Issue reported by Fred Graute: https://www.riscosopen.org/forum/forums/4/topics/3956 Tagged as Debugger-1_91
Add exception dump generation and processing facilities Detail: This set of changes adds support for the following features: * A new code system variable, Debugger$DumpOptions, to control whether exception/crash dumps are collected from SeriousErrorV and where they should be output * Dump output can be in raw (binary) or annotated (text) form. * Annotated form provides detailed annotation of the stack(s), detecting certain constructs such as SWI invocations, IRQsema frames, CMHG veneers, APCS stack frame chains, and most forms of assembler function calls. The output isn't as easy to understand as a proper stack backtrace would be, but the low-level nature allows it to cope with corrupt or partially-overwritten stack frames, and avoids making invasive changes to components in order to make them backtrace-friendly * Stack annotation is able to make use of embedded ROM debug symbols (to be supported by romlinker 0.06) and Norcroft-style embedded function names in order to provide function-level location information for most ROM components and applications * System variables Debugger$RawFile and Debugger$AnnotatedFile to specify where to save raw and annotated exception dumps (preliminary, approach may change in future) * As well as supporting saving to file, the exception dumps can also be sent to the HAL via HAL_DebugTX, or if a program is driving SeriousErrorV directly it can use SeriousErrorV_CustomReport to have it fed to a custom callback function The code is structured in such a way that the core dump annotation code can potentially be built into a standalone application to allow offline processing of dumps (offline application not part of this checkin) File changes: c/exc, h/exc - Core code for producing the annotated exception dumps hdr/ExcDump - Header detailing the format of the binary dump s/ExceptionDump - Code variable and SeriousErrorV handling. Several support calls (used by c/exc) are also implemented here, in order to separate the dump processing from any interrogation of the originating machine Makefile - Updated for c/exc inclusion, and C header generation from hdr/ExcDump Resources/UK/Messages, Resources/Germany/Messages - New messages used by exception dump code c/support - Add a strcmp implementation, and extend vsprintf to be vsnprintf. Add support for string width format specifier. s/Debugger - Workspace definitions and init/shutdown hooks for exception dump code. Refactor *Where so that the locate logic is separate from the message output logic, to allow the locate logic to be used by the exception dump code. Admin: Tested on Raspberry Pi German messages in need of translation Tagged as Debugger-1_92
Fix truncated error messages in annotated exception dumps. Fix Debugger$DumpOptions syntax error. Detail: c/exc - The error message was being shoved into a 64 byte buffer, causing truncation. Rather than making the buffer bigger (trying to keep stack usage to a minimum), bypass the buffer and write the message straight to the output. Also add an extra newline at the end of DescribeBlocks so that the output doesn't run directly into the annotated R15/R14 that are output by AnnotateAll. Resources/Germany/Messages, Resources/UK/Messages - Update EXC_MSG_ERROR (X18) for the above. Remove Debugger$RawFile and Debugger$AnnotatedFile hint text from Debugger$DumpOptions syntax error message - CopyError wasn't causing the magic newline codes to be translated, and the error buffer (aka StringBuffer) is too small for such a long message anyway. Admin: Tested on Raspberry Pi Tagged as Debugger-1_93
ARMv6/v7 disassembly accuracy improvements, ARMv7MP ARMv7VE additions ARMv6.s Add missing conditionals on DBG. Add ERET (v7VE). Add MRS/MSR banked (v7VE), and its funky encoding of the banked register. Check bit 22 of SRS/RFE properly, otherwise some undefined instructions get wrongly decoded as SRS/RFE. CGlue.s Use prefix 'A' for arch warnings, so they can be kept together in the messages file. Debugger.s: Around line 990, refactor up front decoding to pick out NV instruction space like the ARM ARM says to do. This makes subsequent decoding much simpler to follow, and removes lots of backdoor checks on bits 28-31 scattered later on in the decode - fixes problem with CPS #mode being wrong when bit 4 set. Add HVI (v7MP). Note this is a made up pre-UAL form of HVC (cf. SWI->SVC, SMI->SMC) for now. Add PLDW (v7VE). Put back flags preservation on Conditions routine, otherwise TestStr preserves flags if no conditions are wanted, but doesn't if they are - was causing some of the Saturates family to be misclassified as undefined. Test/V6V7tests Add samples of each of the extra instructions. Resources/UK/Messages, Resources/Germany/Messages Messages files updated. Tested with 'testbed' over the 256M EQ condition code, plus 256M NV condition code, with no unexplained mismatches. Tagged as Debugger-1_94
Build fix Module_Title->Module_TitleStr from Kernel-5_54. Tagged as Debugger-1_95
Express wacky shifts as the ARMARM says we should Reinstate the check that an immediate value that doesn't use the preferred encoding is disassembled to #value,ror such that reassembling it would give you back the original op code. Tested with a handful of values, plus inspected all duplicates possible in Excel. Tagged as Debugger-1_96
Add XScale DSP disassembly Three instructions, MIA/MAR/MRA, 14 years late. Tagged as Debugger-1_97
Add ARMv8 AArch32 disassembly Opcodes for CRC32/HLT/SEVL/LDA/STL/LDAEX/STLEX and DMB/DSB options. Makefile: Add ARMv8_AArch32 actions and encodings to dis2. actions/ARMv7,dis2.h: Extend the DMS/DSB decoding to warn about ARMv8 specific ones (previously undefined) ARM.s/ARMv6.s: Slot in decode. CGlue.s/Debugger.s/Messages New token for "ARMv8 or later" warnings. Tested by brute force all 256M instructions in NV space and 256M conditionals, comparing the output against dis2. Currently missing the new VFP and SIMD opcodes. Tagged as Debugger-1_98
Remove unnecessary made up opcode We don't need to invent a pre-UAL variant of HVC, since BASIC accepts HVC with or without the #. Replace made up HVI with HVC. Tagged as Debugger-1_99
When there's no VFP don't offer ShowVFPRegs It just gives a bad SWI error since VFPSupport is missing. In practice this is IOMD and Tungsten platforms, at least in the absence of a VFPEmulator. Tagged as Debugger-2_00
Exception dump fixes & improvements Detail: c/ExceptionDump - Disable unused ExcLooksLikePSR() function. Fix DescribeBlocks() printing the wrong indices for OS_Memory 16 items. Make AnnotateAll() attempt to unwind the ABT/UND stack if the abort came from that mode. Fix some cases where empty lines used for formatting were missing. Resources/UK/Messages, Resources/Germany/Messages, s/ExceptionDump, h/exc - Add message tokens X25 & X26 for the ABT & UND stack headers. Admin: Tested on BB-xM German messages in need of translation Tagged as Debugger-2_01
VFP/NEON disassembly improvements Detail: actions/ARMv8FP_AArch32, Makefile - Add disasembly for the ARMv8 VFP/NEON instructions actions/ARMv7_ASIMD, actions/ARMv7_VFP - Fix incorrect disassembly of VCLS, VMOVN, VRSUBHN, VFNMA, VFNMS c/util - Add disassembly for MVFR2 register s/ARM - Tweak coprocessor instruction decoding logic; ARMv8 uses some of the CDP2 instructions for VFP/NEON cache/vfp - Updated decgen cache file Test/c/testbed - Improve fopen/system error checking. Add some more rules to deal with (expected) differences between Debugger/dis2 and decaof. Admin: Tested on Raspberry Pi 3 Disassembly for new instructions (+ some nearby values) checked against BASIC 1.74 + decaof 5.18 Requires Library-1_92 Tagged as Debugger-2_02
Logs for castle/RiscOS/Sources/Programmer/FrontEnd from FrontEnd-1_32 to FrontEnd-1_34
Makefile amendment Use CUSTOMRES=no to denote no resources. Get the service call numbers from the Services.h. Get the image base from AsmUtils. Tagged as FrontEnd-1_33
Add some FrontEnd syntax Detail: The syntax string was in help, and no help given. Add/ammend these. Admin: Spotted during User Guide command summary review. Tagged as FrontEnd-1_34
Logs for castle/RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_50 to HdrSrc-2_75
Resync with allocations database Detail: * Filetype for MJPEG files * Extra AUN error * Resolved error base clash between AbortRegions and VFPSupport * New alias for OS_Byte 221 Tagged as HdrSrc-2_51
Update VMSAv6 definitions Detail: hdr/MEMM/VMSAv6 - Remove XScale-specific L1_X, L2_X, L2L_X flags. Add L2_S flag. Add definitions for the cache size ID register fields. Admin: Tested on ARM11, Cortex-A7, -A8, -A9, -A15 Tagged as HdrSrc-2_52
Resync with allocations database Detail: Two extra kernel error numbers in NewErrors Updated comment in FSNumbers to state filing system prefix used by SDFS Tagged as HdrSrc-2_53
Resync with allocations database Detail: Various allocations relating to SPIDriver and SATAFS made public Tagged as HdrSrc-2_54
Support for OMAP543x, AM5728 and ADFS 4 Detail: * Complete the Cortex-A7 support which was initially added for RPi 2, to allow for builds that only target Cortex-A7. Because Cortex-A15 and Cortex-A17 CPUs are indistinguishable architecturally from Cortex-A7 (all are ARMv7VE with VFPv4, Advanced SIMD v2 and hardware integer divide) any such platforms are expected to use Machine=CortexA7. Also bear in mind that if we ever support multiple cores on big.LITTLE CPUs, execution can move between these core types at runtime, making an assembly time option to distinguish between them meaningless! * Correct Machines All and All32 to include support for VFPv4 * Decloak the ATA driver SWI chunk * Add a global error allocation for use by the ATA subsystem (placed in global space because it propagates into the CD stack) Tagged as HdrSrc-2_55
Add a symbol definition for HYP mode Detail: This is the mode used for hypervisor exceptions in ARMv7VE and later. Tagged as HdrSrc-2_56
Resync with allocations database Detail: A couple of new error allocations for the sound subsystem Tagged as HdrSrc-2_57
New compile-time architecture flags: * ARMv7VE (virtualisation extension) * ARMv8 * ARMv8 cryptographic extension Machine=RPi builds now targets ARMv8 as well as ARMv6 and ARMv7; Machine=CortexA7 builds now set the VE flag; and All and All32 include ARMv8. Tagged as HdrSrc-2_58
Resync with allocations database Tagged as HdrSrc-2_59
Optimise DivRem and PSR manipulation macros Detail: hdr/Macros - DivRem is now able to use UDIV when building for architectures that support it. A "norem" option is also available, to allow the remainder calculation to be skipped if it's not needed (since we don't get it for free when using UDIV). hdr/CPU/Generic32 - PHPSEI, WritePSRc and SetMode now use the ARMv6 CPS instruction where possible, delivering performance gains compared to the equivalent MSR. Where CPS isn't used, WritePSRc now attempts to emit a single MSR instead of the 4 instructions generated by the SCPSR macro. Admin: Tested on Cortex-A15 PSR manipulation macros trialed on a few different CPU architectures to arrive at the conclusion that CPS is as good or better than MSR Tagged as HdrSrc-2_60
GET a header dependency Detail: hdr/Macros - Several macros now depend on Hdr:CPU.Arch, and it's reasonable to assume more architecture-specific optimisations will be made in future, so make sure we GET that header if necessary Admin: Tested on Raspberry Pi Fixes issues building components that GET Hdr:Macros but not Hdr:CPU.Arch, e.g. DivRem usage in several HALs Tagged as HdrSrc-2_61
Revert change from HdrSrc 2.61 Detail: hdr/Macros - Remove GET of Hdr:CPU.Arch that was added in HdrSrc 2.61. Closer inspection of the OS sources suggest that only a handful of files were affected by the DivRem breakage, so to avoid HdrSrc turning into a tangled mess of headers that all include each other it's been decided that it's better to stick with the status quo and require users of Hdr:Macros to include Hdr:CPU.Arch as and when necessary (99% of the time Hdr:System will have already pulled it in). Admin: Tested on Raspberry Pi Tagged as HdrSrc-2_62
Add new "26" machine type. Simplify ARM2 support. Detail: hdr/Machine/26, hdr/Machine/Machine - Add new "26" machine type, which targets all 26 bit machines/OS versions (running only in 26 bit mode) hdr/CPU/Arch - Use ELIF to avoid bracket spam. Remove duplicate CortexA7 case. hdr/CPU/Generic26 - Add NOPs to PSR manipulation macros in order to make them ARM2-safe (Generic32 macros are already structured to have suitable NOPs when generating 32bit-neutral code, so it makes sense for Generic26 to take care of ARM2 as well). This removes the need for components which use these macros to insert any manual NOPs, whether for the StrongARM MSR bug or the ARM2 TEQP bug. hdr/CPU/Generic32 - Flag the StrongARM MSR NOP diagnostic message as a warning, so the line number can be included in the output, so developers can more easily investigate the issue. Admin: Tested with PlingSystem build Tagged as HdrSrc-2_63
CortexA7 is missing from the HiResTTX switch. This means on Titanium MODE 7 doesn't really work because the DVI framer chip can't clock as low as 13.5MHz for 320x200. Tagged as HdrSrc-2_64
Add new PSR manipulation macros, optimised for 32bit machines Detail: Many of our existing PSR manipulation macros (specifically, ones used for changing mode or controlling interrupts) are based around the code sequences you'd typically use on a 26bit system. Although this has worked well in terms of producing a 32bit version of the OS, it's also left us with macros that can be sub-optimal for 32bit machines, or are inconvenient to use due to the potential of corrupting other PSR flags This change adds a new set of macros which are designed and optimised for 32bit-only targets, but can still fall back to 26/32bit neutral or 26bit-only configurations hdr/CPU/Generic32: - Add the new macros (SEI, CLI, SetModeSEI, SetModeCLI & variants). - Improve existing SetMode macro to add 26bit compatibility, and to add an extra optimisation for pre-ARMv6 (emit single MSR if IRQ state is known) - Improve SCPSR to allow the source mode to be any 32bit mode - Fix conditional 26bit/32bit neutral SCPSR - the 32bit check TEQ corrupts NZCV so we can't do conditional execution on $cond after it (and we've already branched on the opposite condition anyway) - Fix 26bit/32bit neutral SCPSR to preserve NZCV when following the MSR code path - Make CLRPSR and SETPSR just call through to SCPSR - in terms of output the first two have no advantages over SCPSR - Update WritePSRc documentation to reflect that it can now be used in any (non-USR) source mode hdr/CPU/Generic26: - Update WritePSRc documentation to match Generic32 Admin: Tested on Raspberry Pi Output of new macros manually checked for various machine types (RPi, Tungsten, All, 26) Tagged as HdrSrc-2_65
Fix SetMode macro Detail: hdr/CPU/Generic32 - Copy-paste error led to wrong variable name in a conditional block Admin: Tested on Raspberry Pi, Iyonix Tagged as HdrSrc-2_66
Resync with allocations database Tagged as HdrSrc-2_67
Resync with allocations database Detail: Additional kernel error numbers for Jeffrey Lee Tagged as HdrSrc-2_68
Update VMSAv6 page table definitions Detail: hdr/MEMM/VMSAv6 - Add AP_PROM for the "privileged mode ROM" permission. Define the shareable bit for L1 page table entries. Admin: Tested on Raspberry Pi Tagged as HdrSrc-2_69
Resync with allocations database Detail: Additional error and service call definitions requested by Sprow Tagged as HdrSrc-2_70
Resync with allocations database (extensions to GraphicsV) Tagged as HdrSrc-2_71
Resync with allocations database (SMP module definitions) Tagged as HdrSrc-2_72
Fix non-functional teletext on some platforms, and standardise on HiResTTX across the board Detail: * Neither of our native Cortex-A9 machines natively support 16 colour modes, so HiResTTX must be used since the kernel only supports >16 colour TTX when that option is on. * Our Cortex-A8 machines can do 16 colours, but we might as well switch them to HiResTTX as well since they've got plenty of horsepower to render it at that resolution. * That just leaves IOMD as the odd one out using low-res TTX. If hardware scrolling or VDU 23,18,1 is used then performance of hi-res TTX doesn't seem to be that much worse than low-res, so for consistency it's probably best to take the performance hit and run all platforms with HiResTTX. hdr/Machine/Machine - Updated as above. Also use TTX256 for Cortex-A9 so that the "native" mode 7 will be 256 colour instaed of 16 colour. Admin: Tested on Pandaboard, iMX6, BB-xM, StrongARM RiscPC Fixes lack of teletext on Pandaboard + iMX6 Tagged as HdrSrc-2_73
Add GNUmakefile for cross-compilation use Detail: HdrSrc is such an unusual component that the only shared makefile fragment it uses is StdTools. Almost every line requires edits to accommodate the differences between amu and GNU make, so for clarity we use separate makefiles for the two tools. Admin: I'd forgotten that I'd created the XCompile branch a few years back until just now! I think this is a superior solution because it confines the changes to a single file, at least in the short-term. Tagged as HdrSrc-2_74
Resync with allocations database Tagged as HdrSrc-2_75
Logs for castle/RiscOS/Sources/Programmer/RTSupport from RTSupport-0_11 to RTSupport-0_17
Simplify standalone build Lump the Priorities in with the Messages using INSTRES_FILES. Remame CMHG file to match the default. Delete double message file handling code. Build, but not tested. Tagged as RTSupport-0_12
Cache translated error messages Detail: c/module - Make use of mess.c's error caching facility to avoid having to call MessageTrans when returning errors. Should give a bit of a performance boost when dealing with common errors (e.g. "Cannot yield in this context") Admin: Tested on Raspberry Pi Tagged as RTSupport-0_13
Leave A bit set in SPSR when creating a thread ARM have started using the extension bits (8 to 15) of the PSR, but have given bit 8 a safe default of being set (mask asynchronous aborts). Since the kernel doesn't handle these RTSupport will create the thread state with A=1 as it would be at reset. Tagged as RTSupport-0_14
Listen out for SeriousErrorV_Recover Detail: c/module, cmhg/RTSupportHdr, h/global, s/scheduler - Add a handler for SeriousErrorV, so we can be notified when the privileged mode stacks are being flattened. This is safer than watching out for serious errors to arrive via ErrorV, although the ErrorV approach is still necessary in order to deal with old kernels or serious error generators that don't currently use SeriousErrorV (e.g. FPASC/VFPSupport) Admin: Tested on Raspberry Pi Tagged as RTSupport-0_15
Fix to processor identification The expression would never match an ARM7, so attempting to softload the module on an ARMv3 era machine (no SYS mode) would not give a graceful error message. From a tip off in https://www.riscosopen.org/forum/forums/4/topics/3990 Tagged as RTSupport-0_16
Clear the exclusive monitor when returning to pre-empted code Detail: s/scheduler - Add a second variant of the PreEmptionRecovery routine, which issues a CLREX on entry. Use a workspace variable to select which routine is required (for supporting multiple CPU architectures at runtime) h/scheduler - Declare new symbols exported by s/scheduler c/module - Initialise PreEmptionRecoveryPtr with the correct value, depending on whether the CPU supports LDREX/STREX or not Admin: Tested on Raspberry Pi Tagged as RTSupport-0_17
Logs for castle/RiscOS/Sources/SystemRes/Boot from Boot-1_22 to Boot-1_26
Correction to default run path !Boot was adding its private utilities (!Boot.Utils) to the global run path, which isn't the intent of that directory. Changed singular use of HOn to use a fully qualified path to !Boot.Utils. User commands should go in !Boot.Library, as before. Tagged as Boot-1_23
EndMode to endmode A handful of MDFs had opening 'startmode' but closing 'EndMode', which MakeModes complains about. Bulk edit these to 'endmode'. Tagged as Boot-1_24
Remove workaround for pre-RISC OS 3.50 The extra AddToRMA in BootRun is no longer needed, the true cause was a bug fixed in Wimp-5_55 reading IRQsema's address, which caused the RMA to be clamped. Tested on a real A5000. Tagged as Boot-1_25
Add ROM patches for the ADFS "disc error 20" fix Detail: This set of changes adds a "disc error 20" fix to ADFS for RISC OS 3.50 thru 4.02, using similar code to that used for the fix that was applied to ADFS itself (in ADFS 3.54). This is to resolve issues with modern IDE devices which don't adhere to the DRQ timeout that old versions of the ATA spec mandated. File changes (all within Source/ROMPatch): - patches/s/ADFS354 - Generic assembler source for the disc error 20 fix - ihf2c/c/ihf2c - Source for a C utility that was used to help produce the ROM patch data - patches/adfs354,feb - Utility script for building the different versions of the ADFS patch and converting to ROMPatch form - patches/350/h/ADFSpatch, patches/360/h/ADFSpatch, patches/370/h/ADFSpatch, patches/371/h/ADFSpatch, patches/402/h/ADFSpatch - Added/updated ADFS patches - patches/350/h/patch, patches/371/h/patch, patches/402/h/patch - Include new ADFSpatch files where relevant - UK/h/messages - Update ROMPatch version numbers - c/rompatch, s/module - Add a word of writable workspace to the module which the ADFS patch can use - patches/402/h/CDSFTpatch - Remove duplicate patch (duplicate of RESLVpatch) - patches/402/h/MSGSpatch - Document the patches - ReadMe, Install/ROMPatch/!RunImage,ff8 - Remove redundant/outdated files (the main Boot makefile will build and install ROMPatch for us) Admin: Tested on a RISC OS 3.70 StrongARM RiscPC with a CF-IDE adapter, disc error 20 is no more 3.50/3.60/3.70/3.71/4.02 also tested under RPCEmu, manually provoking the different code paths to check hook points are correct Tagged as Boot-1_26
Logs for castle/RiscOS/Sources/SystemRes/Configure from Configure-1_91 to Configure-1_92
Don't postmortem when merely run at the CLI FontMerge is intended to be a Wimp task, but only installs a signal handler for SIGOSERROR after calling Wimp_Initialise. Therefore, when invoked from the command line the "Window Manager is in use" error ends up with the default signal handler in the CLib, which postmortems. Install a simple non-wimp error handler. Also, don't try to clone !Sprites23 when adding supplementary (numbered) !Fonts directories when dir is full, these haven't been provided since Ursula. Version manually bumped to 0.03, since FontMerge is a sub component of Configure. Tagged as Configure-1_92
Logs for castle/RiscOS/Sources/SystemRes/Configure2/Installer from Installer-0_13 to Installer-0_15
Makefile recreated from fragments Get OS_ReadVarVal assistance from AsmUtils, remove local OSVar.s. Rename CMHG file to follow the autogenerated name, and resource area to Resources() similarly. Tagged as Installer-0_14
Add extra parameter for osvarlen() Requires AsmUtils-0_19. Tagged as Installer-0_15
Logs for castle/RiscOS/Sources/SystemRes/Configure2/Main from Main-2_11 to Main-2_12
Offer CMOS defaults when the kernel knows what they are Since 2013 (ref ticket #316) we stopped including a ResetCMOS file in the ROxxxHook directory because the numerous HAL based targets meant it wasn't possible to define a safe set of defaults for all hardware. However, the result of that is the the 'CMOS/Default' menu entry in !Configure is never enabled (unless the OEM provides an overriding ResetCMOS themselves). Query the kernel, and is the OS_NVMemory reason code to read the defaults from the OS is available, reenable the 'CMOS/Default' menu entry, and when the time comes simply transfer those defaults by writing them back. Main.c/Main.h: New flag for OS_NVMemory 6 being available Plugin.c: Use symbols for OS_File & OS_GBPB ToolboxE.c: Offer defaults, and copy them, if ResetCMOS isn't found Problem spotted while reviewing the User Guide's configure chapter. Tagged as Main-2_12
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/Bootxxxx from Bootxxxx-0_13 to Bootxxxx-0_14
Use define from wimp.h Requires (Toolbox) Libs-0_25. Tagged as Bootxxxx-0_14
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/DiscSetup from DiscSetup-0_10 to DiscSetup-0_12
Raise RAM disc clamp when possible If the 'PMP' extensions for dynamic areas are available, allow the numberrange gadget to choose a larger RAM disc, and if not clamp at 128MB as before. Use unsigned types to hold memory amounts, and calculate in pages where possible to avoid overflow/signedness issues above 2GB. As at time of writing RAMFS is still being worked on, this plugin doesn't respect that, so if you choose a size larger than RAMFS supports it'll choose the lower of the two. Tested briefly on a Risc PC with 256MB RAM with and without PMP dynamic areas. Tagged as DiscSetup-0_11
Improve dialogue layout Detail: Move the CDFS buffers to be with the CD drives number. Rename the Miscellaneous settings to ADFS settings. Admin: Following review of User Guide configure chapter. Tagged as DiscSetup-0_12
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/FilrSetup from FilrSetup-0_24 to FilrSetup-0_26
Enlarge text clipping boxes In system font, some text got clipped. Tagged as FilrSetup-0_25
Use define from wimp.h Requires (Toolbox) Libs-0_25. Tagged as FilrSetup-0_26
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/HelpSetup from HelpSetup-0_13 to HelpSetup-0_14
Style Guide dialogue change Detail: The dialogue had an option which required turning on to disable a feature. Per Style Guide page 66 invert its sense to avoid a double negative. Admin: Following review of User Guide configure chapter. Tagged as HelpSetup-0_14
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/PinSetup from PinSetup-0_23 to PinSetup-0_24
Enlarge text clipping boxes In system font, some text got clipped. Tagged as PinSetup-0_24
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/ScrnSetup from ScrnSetup-0_32 to ScrnSetup-0_42
Enlarge text clipping boxes In system font, some text got clipped. Tagged as ScrnSetup-0_33
Increase screen mode "try" timeout from 5 to 10 seconds Detail: h/defines - Increase DisplayTestDuration to 10 seconds Resources/UK/Messsages - Update warning message to say 'ten' Admin: Tested on Iyonix Should fix problem reported on forums where 5 second timeout wasn't long enough to be any use when using an HDMI splitter: https://www.riscosopen.org/forum/forums/5/topics/3867 Tagged as ScrnSetup-0_34
Make monitor type into a display field + popup menu Was previously a StringSet, but these are limited to only one level of menu tree. Turned off "Deliver event before showing" for the popups in the main window, since nothing registered events against them. No longer spends an eternity rebuilding the monitors menu when adjust clicking on 'Cancel', because the read_choices() function also used to scan the MDFs to make the menu. Now it really does just read the choices back in. Correction to interactive help for the "Resolution" menu - the guidance about square and rectangular pixels was back to front. Tagged as ScrnSetup-0_35
Group manufacturers together in the type menu The plugin scans all the subdirectories of BootResources:Configure.Monitors but then presents the findings unsorted in a huge menu. Now there are lots of MDFs the menu is so big it has a scrollbox too. To simplify this, and make finding the right one easier, collect up the monitors by manufacturer (inferred from name of the topmost directory) into submenus. Tested on a Risc PC with a mix of complexities of subdirectories from a default !Boot. Tagged as ScrnSetup-0_36
Make the previous selection more obvious Having chosen a monitor type from within a group, it wasn't very obvious from which group it came. Follow the same behaviour as a font menu: tick the parent when an exclusive selection is made from its child. Tagged as ScrnSetup-0_37
Fix for thinking 0th model is Auto type The current_montype variable now holds the entry number within the menu for the selected manufacturer, whereas it used to be the current entry for the 1 (and only) models menu. So, when selecting any 0th model from a submenu this would be mistaken as the former 'Auto' entry, and the PreDesk$Configure file wiped out. Rescope current_montype to be static so it can only be used for its intended purpose, and derive 'Auto' or not in set_monitor_choices() by whether the filename is NULL like elsewhere. Use defines when calling OS_ScreenMode rather than magic numbers. Should fix issue described in https://www.riscosopen.org/forum/forums/11/topics/6370 introduced in ScrnSetup-0_36. Tagged as ScrnSetup-0_38
Fix for Auto setting not being stored 3rd time's a charm: in changing from a stringset changed to a menu selection event, nothing was updating the globals holding the monitor details for the Auto case calling switch_monitor(). Move that call so it is. Change menus_are_grey to a boolean. Tagged as ScrnSetup-0_39
Add support for EDID monitors in the system Detail: Upgrade the MDF directory enumeration to minimally parse EDID data blobs. Add these to the list of known monitors. This allows a disc based MDF to override faulty data in the monitor, or on systems such as IOMD that don't support EDID, for them to benefit from a library of blobs rather than needing a parallel set of MDFs creating. Add the path of EDID blobs exported by ScrModes to those scanned for monitor definitions. EDID data is always placed in the top level manufacturer menu below 'Auto'. Add interactive help to clarify what 'Auto' means and how it differs from the EDID data. common.c: Relocate [un]grey_gadget() from screen.c. main.c: Simplify unnecessary memset(). Create a flag based on ScreenModes_Features whether the host OS supports EDID or not. monitor.c: Extra scanning. Conflict resolution if duplicate monitor definitions exist from differing sources. Simple EDID parser to get the monitor name (else default string) and DPMS flags. Admin: Submission for the EDID bounty. Tested with ScrModes-0_61, and also on earlier versions, on RISC OS 5.23. Briefly tested on RISC OS 3.70 with !Boot.Resources.Configure.Monitors containing EDID data (should be ignored). Tagged as ScrnSetup-0_40
Minor UI improvements Detail: Move the resolution picker menu after the monitor type picker menu, so the logical order flows better. Fix for failure to unshade menus after cancelling a 'Try' operation with the Auto monitor type. Improve the clarity of the magic EDID entry by using the text 'Auto (BrandX 123GTI)' in the menu so it stands out from other non-Auto detected types. Admin: Submission for the EDID bounty. Tagged as ScrnSetup-0_41
Improve fading logic when unselecting Native When the previously configured mode was Native, in order to avoid accessing the colour flags array with a -ve index, the depth was arbitrarily set to 1bpp. However, if the graphics controller doesn't support 1bpp the search would exit with no matches the the colour/frame rate popups remained greyed and unselectable. Instead let the loop run up to the highest colour depth (16M), the best match logic will pick the best colour/frame rate combination, but more importantly the GUI controls will be activated. Tagged as ScrnSetup-0_42
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/SndSetup from SndSetup-2_07 to SndSetup-2_08
Allow configuration of default audio controller device Detail: If SndSetup detects that a version of SoundDMA is in use which supports controller enumeration & selection, the plugin display will have an extra string set gadget which can be used to select which device should be used When switching between devices the list of mixer controllers will update accordingly The controller selection will be saved to the SndSetup choices file, along with the mixer settings - with mixer settings being saved for all mxiers that are present, not just the selected one. File changes: - Resources/UK/Res,fae, h/defines - Updated to add the new string set and tweak the layout a bit - h/sound, c/sound - Added linked list of controller devices. Mixer channel detail arrays are now allocated on demand and stored as part of the controller details. Channel details now also tracks the currently selected mute & gain settings, since we can no longer rely on the UI to store those values for us if we're recreating gadgets when switching device. - c/main - Mixer volume slider setup separated out into its own function, so it can be repeated whenever we switch device. - h/common - Forward-declare of new function Admin: Tested on Raspberry Pi, iMx6, Iyonix, RiscPC Requires Sound0HAL-1_84 / Sound0Trid-1_69 / Sound0-1_72 Tagged as SndSetup-2_08
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/ThemeSetup from ThemeSetup-0_04 to ThemeSetup-0_05
Fix for bogus font menu text if Wimp$Font is unset If the configured desktop font is 0 (use Wimp$Font) but that variable is unset, such as having installed !Boot afresh having previously used a non-ROM font, the call to getenv() would return a NULL pointer which was copied into the font display field. Check the result before doing a strcpy(). Tagged as ThemeSetup-0_05
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/TimeSetup from TimeSetup-0_07 to TimeSetup-0_10
Add extra parameter for osvarlen() Also, split Korea into North and South now they're on different timezones. Requires AsmUtils-0_19. Tagged as TimeSetup-0_08
Typo in country name Admin: Submission from Chris Mahoney. Tagged as TimeSetup-0_09
[433] Spelling mistake in resources Saudia->Saudi. Tagged as TimeSetup-0_10
Logs for castle/RiscOS/Sources/SystemRes/Configure2/PlugIns/xxxxMerge from xxxxMerge-2_08 to xxxxMerge-2_09
Put the pane in the right place When Sys/Font/Boot merge are run in a mode < 1024 pixels tall, the act of creating the toolbox objects for the main window plus pane is subject to the Wimp clipping the windows to the top of the screen they were created in in the Res file. So, if used in a less tall mode (say 800x600) the pane is wrongly offset in the agenda view. Edit the Res files to be -512, -1024 OSU down in the bottom left corner to avoid this. Tagged as xxxxMerge-2_09
Logs for castle/RiscOS/Sources/SystemRes/Fonts from Fonts-0_09 to Fonts-0_10
Reinstate vintage Porterhouse font The Portrhouse.Standard font was originally shipped with RISC OS 2 and designed by Graham Bartram, but was subsequently dropped as it didn't fit any known character set encoding. It makes an easy to read (fixed size, 10pt) desktop font, though the Wimp's default 12pt size results in poor scaling, setting Wimp$FontSize 128 gives window title text at the right kind of scale. The font has been extracted as bitmaps and the missing Latin1 glyphs drawn (eg. Euro symbol, ellipsis) and reordered to match the Acorn Latin1 encoding, then reencoded mechanically. The bitmap version is stored for future reference. Note that on systems where the Font Manager's memory is above 256MB requires Font Manager 3.78 or later, a bug in earlier versions right back to the Risc PC led to an abort when plotting any bitmap font. Tagged as Fonts-0_10
Logs for castle/RiscOS/Sources/SystemRes/InetSetup from Source-0_54 to Source-0_58
Logs for mixed/RiscOS/Sources/SystemRes/Internet from Internet-5_57 to Internet-5_61
Add Tftp to the disc based !Internet commands A TFTP client is described in the TCP/IP Protocol Suite manual but seems to have been lost somewhere along the way, perhaps when the Internet 5 work was done? TFTP is often used to load OS images or similar boot time stuff as it's a very simple (and insecure) protocol. Port a contemporary client from FreeBSD (circa March 2000) with a few changes to allow it to run on RISC OS. Makefile: Remove the BareMinUtils option. Nothing uses it, and it wouldn't work anyway since it's missing !Run. Add Tftp Tested against OpenTFTP server 1.64 running on Windows, GETting and PUTing a number of files. Tagged as Internet-5_58
Spelling correction netmark->netmask Tagged as Internet-5_59
Internet resource updates and additions Detail: Add some trusted root certificates to InetDBase: for use by AcornSSL. Remove 'pong', such that it doesn't have to be maintained (the Internet module responds to ICMP requests). Change the examples in AUNMap for a 10.x.x.x based network. Add ssh/https/nfsd to our table of known services (for AcornSSL and NFS). Admin: Submission for TCP/IP bounty. Tagged as Internet-5_60
Fixes from static analysis Ref https://www.riscosopen.org/forum/forums/4/topics/9503#posts-72595 and subsequent offline checks. arp: missing return from non-void delete() (from FreeBSD 13977) ifconfig: undefined variable m (from FreeBSD revision 13145) correct return types to void for xxx_getaddr() (from FreeBSD revision 19914) inetstat: dead array variable buf2[] removed ipvars: missing return value from main() map-mbone: missing va_end (from NetBSD revision 1.8) md5: file handle leak on error (from FreeBSD revision 292955) mrinfo: missing va_end (from NetBSD revision 1.12) mtrace: missing va_end (from NetBSD revision 1.18) newfiler: add comment for apparent missing return sysctl: fix QUAD variable type (from FreeBSD revision 88696) though academic since Internet doesn't have any quad_t variables explicit function return types added in PathConf.c BootNet: change RMIfThere alias to use temporary variable from its own namespace Tagged as Internet-5_61
Logs for castle/RiscOS/Sources/SystemRes/Scrap from Scrap-1_94 to Scrap-1_95
Makefile recreated from fragments bas/!RunImage - this is a text version of the former Resources/!RunImage,ffb revision 4.2 so CVS can sensibly diff it. Tagged as Scrap-1_95
Logs for castle/RiscOS/Sources/SystemRes/System from System-0_98 to System-1_00
Import of ABCLib 4.18 Detail: Fix to restore error message on return from a SWI in a service module when the ERROR keyword is used. Make library functions patched at run time work with PROCs and FNs which are further from the RMA than the branch range of B/BL. Thanks to Pineapple software for their help with this update. Tagged as System-0_99
Remove BorderUtils binary Now installed from BorderUtils component. Tagged as System-1_00
Logs for castle/RiscOS/Sources/SystemRes/Unicode from Unicode-0_34 to Unicode-0_35
Add CharNames lookup table to Unicode resources Detail: Centralised code point -> name lookup table for any applications requiring one. The table is compressed to save memory and readable by MessageTrans for convenience. Admin: The table is derived from Lib/Unicode/data/UnicodeData using the following procedure: 1. Add #{HelpTokens} to the top of the file 2. Run tagextract $.dir_containing_charnames_file $.dicttags $.helptags 3. Run msgext $.helpmess $.helptags 4. Run tokgen $.helpmess $.helptokens 5. Run msgtok $.helptokens $.helptags 6. Add the copyright heading 7. Append the help tokens file at the end of the process Tagged as Unicode-0_35
Logs for mixed/RiscOS/Sources/ThirdParty/Desk/Lib/Desk from Desk-3_2_5-NoUnaligned-LongerResPath to Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix
Add 2 extra wimp message structs, fix a heap corruption
Added Desk_message_deviceclaim and Desk_message_deviceinuse to Wimp.h (the message
number was defined, but no convenience struct).
Fix a bug in Desk_MsgTrans_LoseFile which was passing the wrong pointer to
MessagesTrans which then corrupted the heap by clearing a flag at the wrong place.
The latter fixes the report of OmniClient crashing
https://www.riscosopen.org/forum/forums/4/topics/3545
which used the LoseFile function.
Changes fed back to !Desk maintainer, these are local patches in the meantime.
Tagged as Desk-3_2_5-NoUnaligned-LongerResPath-WimpStructs-LoseFileFix.
Logs for mixed/RiscOS/Sources/ThirdParty/DPilling/Apps/SparkFS from SparkFS-1_43 to SparkFS-1_44
Updated read-only SparkFS Detail: A complete rebuild, all modules given 1.44 version number. New !Run file which will reduce problems with the System folder not being present and creating over large dynamic areas. Zip module has the only zero page protection bug reported (so far) fixed. Admin: Thanks to David Pilling for permission to host this. Tagged as SparkFS-1_44
Logs for castle/RiscOS/Sources/Toolbox/Common from Common-0_23 to Common-0_26
Minor header file adjustments Everything TboxMake did can now be done with the makefiles in BuildSys. Header file services.h was just a proxy for Global/Services.h. style.h: Corrections to constants from the Style Guide. These two values are unused, so mainly academic. messages.c/objmodule.c/string32.c: Unused services.h removed. Tagged as Common-0_24
Add defines for the other 14 Wimp colours Tagged as Common-0_25
Add message FilerDevicePath to headers C version of the definition from Hdr:Messages. Tagged as Common-0_26
Logs for castle/RiscOS/Sources/Toolbox/Libs from Libs-0_24 to Libs-0_27
Add message FilerDevicePath to headers C version of the definition from Hdr:Messages. Tagged as Libs-0_25
Finalisation fix, docs & header improvment The error check on eventlib finalisation was reversed in sense, so no error returned before resetting the id_block and mask values. Clarify eventlib's use of malloc() in its docs for reduced head scratching. Add missing const qualifier to wimp_report_error() prototype. Add some stripdepnd's so cleaning also restores the makefiles. Tagged as Libs-0_26
Add defines for extra ActionButton flags The Window module supports opening at pointer or at centre (both in the template definition, and via Set|GetClickShow. Add defines to reflect this. Tagged as Libs-0_27
Logs for castle/RiscOS/Sources/Utilities/HForm from HForm-2_70 to HForm-2_75
Update for compatibility with ADFS 4 Detail: The physical ID by which ATA drives are addressed has been expanded in ADFS 4 from 2 bits to 12. ADFS 4 has a new SWI which converts from logical to physical drive number to avoid the awkward enumeration previously used by HForm. Previous versions of HForm would only detect ATA drives on ADFS 4 if the physical ID was 0, which is OK for single-port boards with no port multipliers, but was a problem for machines like Titanium. Admin: Tested on a Titanium board. Tagged as HForm-2_71
Remove Columbo-ism HForm had an annoying habit, having asked all the questions including "are you sure you want to format the drive?", only to come back with one more thing: setting the LFAU size. To make matters worse Escape had been disabled by that point so you had no option but to enter a valid LFAU. Move the calculation of LFAU up above the final question, so the "are you sure" really is the last chance to bail. Other general useability improvements: * Make the spacing of questions/defaults/questionmarks consistent across all questions, and consistent with the User Guide * Fix "Number too large" error if a non power of 2 LFAU was chosen * Don't offer all 3 filing system names when only 2 are present (the same prompt was used for all cases even if the FS was absent) Administrative improvement: * Install the disc copy in the right place from !MkInstall. Tagged as HForm-2_72
Report the SD/MMC card product name and manufacturer where available If possible, show the OEM & product name when a card is selected for formatting, like SCSIFS and ADFS do for their drive types. Otherwise, say "OTHER". Messages: Line up the disc capacity message. Tagged as HForm-2_73
Increase support for formatting up to idlen of 21 Check which version of FileCore we have, and use that to pick an appropriate idlen (in a similar manner to idlen of 19 or 15 was chosen for BigDisc support). As idlen is increased so to are the number of zones, and so to is the size of the map to hold those zones inside HForm. Rather than ballooning the map DIM again, reduce it back to its pre-Ursula size of &40000 and instead write the new map out as it is generated. Fix for longstanding syntax error in PROCWriteOldFsMap, an errant 'p' had been added. Changed NukeDOS, and its name, to use the existing Buf% rather than leaking a DIM of its own. Tested with a range of 512B sector drives manually picking LFAUs to get idlen=17 to idlen=21 inclusive, then cross checking with DiscKnight 1.52. Tagged as HForm-2_74
Make SCSI formatting less confusing Detail: bas/!RunImage - Change PROCGetDriveToUse to list SCSI devices in SCSIFS drive order, and ask for a SCSIFS drive number. Asking for a FS drive number makes SCSI formatting consistent with ADFS & SDFS formatting. Previously devices would have been listed in the order they were found by the SCSI bus enumeration code, and the code would have asked for an index into that list, without giving any indication of the SCSIFS drive numbers that are assigned to each device. Until, that is, the SCSIFS drive number is shown to the user at the final "Are you sure?" prompt, potentially resulting in confusion because in many cases the SCSIFS drive number won't match the device number assigned by HForm. Admin: Tested on BB-xM with a mix of 'hard' and 'floppy' devices connected Tagged as HForm-2_75
Logs for castle/RiscOS/Sources/Utilities/ShowScrap from ShowScrap-0_08 to ShowScrap-0_09
Makefile recreated from fragments Tagged as ShowScrap-0_09
Logs for bsd/RiscOS/Sources/Utilities/Usage from Usage-1_03 to Usage-1_04
Add an extra icon so the column headings line up Usage's "Task" and "CPU Usage" column headings only lined up in system font because they used spaces for alignment. Split the column headings into 2 icons so they're always in the same place regardless of font. Rephrase/repunctuate a few of the interactive help messages to follow the style of the other built in apps, eg. no ! before the app name. Spotted while updating User Guide chapter. Tagged as Usage-1_04
Logs for castle/RiscOS/Sources/Video/Render/Colours from Colours-1_91 to Colours-1_95
Correction to help lookup Broken since version 1.75, ColourTrans' internal commands were trying to use the non internationalised text as the token name to lookup due to a bit of conditional assembly that got reversed. Spotted by Andrew Conroy. Tagged as Colours-1_92
Fix DecodeSprite potentially corrupting the ColourTrans_GenerateTable flags Detail: s/MainSWIs - DecodeSprite updates R11 with extra flags which describe the palette format used by the sprite. However the first time ColourTrans_GenerateTable calls DecodeSprite it does so with R11 set to the SWI flags, potentially corrupting them. Preserve R11 to make sure this doesn't happen. Admin: Fixes issue spotted by Willi Theiss; if ColourTrans was given the name of a 256 colour sprite with only a partial (64 entry) palette it was getting confused and trying to treat the name pointer as a sprite pointer, leading to a crash Tested on Raspberry Pi 3 Tagged as Colours-1_93
Avoid unnecessary remainder calculations Detail: s/Commons, s/DevicePal, s/Dither, s/FontColour - Avoid unnecessary remainder calculations in DivRem macro s/Header - Remove unused Divide macro Admin: Tested on Cortex-A15 Tagged as Colours-1_94
Remove use of RESOURCEEXTRA Requires BuildSys-6_91. Tagged as Colours-1_95
Logs for castle/RiscOS/Sources/Video/Render/Draw from Draw-1_21 to Draw-1_22
Make use of UDIV where possible Detail: s/Draw - Make DivRem2 macro just be a wrapper around DivRem rather than a clone of it, allowing UDIV to be used Admin: Tested on Cortex-A15 Tagged as Draw-1_22
Logs for castle/RiscOS/Sources/Video/Render/Fonts/Manager from Manager-3_76 to Manager-3_79
Avoid unnecesary remainder calculations Detail: s/BlendingS, s/Font_Arith, s/Fonts03, s/Fonts04 - Avoid unnecessary remainder calculations in DivRem macro Admin: Tested on Cortex-A15 Tagged as Manager-3_77
Fix for failure to plot bitmap fonts when the font cache is above 256MB The bitmapped font paintmagnified routine uses bit indexes, which needs an effective 35 bit address (for a 4bpp IntMetrics+x90y45 font). In preparation for Medusa (>=256MB machine) the top 3 bits are kept in paint_inptr and the bottom 32 bits in the inptr register (R4). However, a mixup meant the top 3 bits from paint_inptr were added before an extra 2 bit shift, so the font cache address becomes nonsense, leading to an abort. Fonts02.s: Reorder the calculation. Tested with Porterhouse bitmap font, with the font cache at &37000000 (ie. one of the top 3 bits are set), using it as the desktop font, in !Edit, printing to a PostScript and bit image printer, and in !TechWriter. Tagged as Manager-3_78
Fix bad error pointer returned by Font_LoseFont Detail: s/Fonts01 - Change a TEQ to a CMP to ensure the V flag is cleared; if a font handle like &80000000 was supplied then the opening CMP would set the V flag, accidentally causing the code to return a garbage error pointer. s/Errors - Apparently AddError requires '$' to be doubly-escaped to '$$$$' to stop objasm from throwing a warning. Admin: Tested on wandboard Fixes AODT on SYS "Font_LoseFont",&80000000 Tagged as Manager-3_79
Logs for mixed/RiscOS/Sources/Video/Render/JCompMod from JCompMod-0_06 to JCompMod-0_08
Makefile recreated from fragments !MkInstall: Fixed to install the module in the right place. jcompmod.c: Use defines generated from CMHG. Use the correct error base. Keep our international errors in compact (const) form, rather than using _kernel_oserror structs. Update function prototypes to match CMHG. trace.c: Remove use of SKIP macro, so we don't depend on OSLib headers for just that. JCompModHdr: Updated to use the date and version from VersionNum Renamed for shared makefiles Tagged as JCompMod-0_07
Add support for CompressJPEG_Comment tag injection You can now annotate the JPEGs you create with this handy pocket sized SWI. The maximum comment length of 65000 comes from the 'wrjpgcom' utility from the IJG library of the same vintage. Tested briefly with a modified version of ChangeFSI to put my name in, and cross check the result on http://regex.info/exif.cgi Tagged as JCompMod-0_08
Logs for castle/RiscOS/Sources/Video/Render/ScrBlank from ScrBlank-2_33 to ScrBlank-2_34
Avoid unnecessary remainder calculations Detail: s/ScrBlank - Avoid unnecessary remainder calculations in DivRem macro. Also, make use of the ability to pass in a constant as the divisor. Admin: Tested on Cortex-A15 Tagged as ScrBlank-2_34
Logs for mixed/RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_65 to SprExtend-1_82
Fix rendering of sprites with garbage in the top bits of each pixel Detail: Sources/PutScaled - Correct the hints in the pixel format table to not flag a component as being at the highest position in the colour if it doesn't actually touch the highest bit in the colour. Otherwise, the "We can merely shift this down into place" optimisation in convert_pixel() may be used, resulting in garbage data from the top bits of the source pixel being placed into the output. Admin: Tested on Iyonix 32bpp TBGR sprite with garbage in top byte of each pixel, now displays correctly in 15/16bpp TRGB modes Issue reported by Rob Sprowson Tagged as SprExtend-1_66
Fix orphaned dynamic area Detail: Sources/SprExtend - Only initialise the JPEG workspace pointer + DA number the first time Init is called. This prevents the dynamic area from being orphaned if a JPEG operation is performed during the ROM boot (prior to Service_Reset), as is the case with BootFX on the Raspberry Pi. Admin: Tested on Raspberry Pi Task manager now shows one JPEG workspace DA, whereas before there were two. Tagged as SprExtend-1_67
Fix deleting columns from alpha masked sprites Detail: Sources/SprAdjSize - Fix a load of an unused register clobbering the register that was being used to work out whether a sprite has an alpha mask or not, with the end result being that mask data would be shuffled incorrectly when deleting columns from alpha masked sprites Admin: Tested on Raspberry Pi Fixes issue reported on forums with alpha-masked sprite data becoming corrupt when deleting columns in Paint: https://www.riscosopen.org/forum/forums/4/topics/3610 Tagged as SprExtend-1_68
Fix corrupt R0 during JPEG plot The JPEG_PlotScaled SWI (and friends) was pulling R0 at the wrong moment, so corrupting it. This manifested as "Incomplete or corrupt JPEG" when trying to plot a JPEG via the PostScript driver for example (which expects R0 preserved for no error). Looks like ~5 year old bug, presumably not many people printing JPEGs to PostScript, or all suffering in silence. Tested on a Risc PC - printed a picture from !Draw to postscript, then PDF'd it. Tagged as SprExtend-1_69
Rewrite of find_image_dims Detail: Now handles 0xFF padding, previously acceptable encoded images including padding were incorrectly rejected. Calculate the workspace for greyscale images correctly, the itype flags included the density (and latterly the SOF) flags, but the workspace calculation assumed it only contained 1 or 3 (for colour components). Exit cases now made common and propagate file errors correctly. Minor changes to the assembler that uses find_image_dims to handle 4 colour component return (now a 3 bit return value). Merge the other M_THING enum from IJG8d so we don't need our own copy. Fix signed pointer comparison. Use symbolic defines from Global & Interface headers where possible. The jdata pointer arg is now treated as const. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_70
Import of IJG8d library sources Detail: Using the decoder in "example.c" as a starting point, we try to follow that sequence more closely even if in our embedded implementation some of the functions don't do much. Uses the default colour backend for 32bpp BGR output for most of the unusual cases. The most common 2x2 subsampling case uses a custom merged upsampler and colour converter, with colour output directly in RISC OS format for the respective screen mode. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_71
Transcode arithmetics Detail: Import of the raw coefficient Huffman entropy compressor elements of the IJG8d library. We don't need a full compressor (ala JCompMod) since there's never a need to go all the way through IDCT/upsampling/colour conversion only to reverse the whole process; it's sufficient only to collect up the raw coefficients and recompress them as a baseline JPEG. Two extra (temporary) dynamic areas are introduced, once to hold the raw coefficients and the other to act as a scratch file to make the JPEG in. See Doc/JPEGMmgr. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_72
Transcode progressives Detail: Enable the Huffman and arithmetic progressive code paths, these are handled much like arithmetic: undo the entropy part of the encoding process into a dynamic area full of raw coefficients, recompress as a baseline image, copy the image into the JPEG workspace for real time redraw. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_73
Bug fixes Detail: Remove the unused gray (sic) output colour space support. Remove the patches to set output colour space to RGB, this can be overridden in code per the design intent of the library. Only decode luma for grey output. Fix bug rendering test image monorose2x4 - this was caused by the huffman pointer saving not decoding enough MCUs when the source image is monochrome hence an MCU outputs 8x8 rather than hsamp x vsamp pixels. Also removed the setting of insufficient_data in the entropy decoder, this meant that any error at the end of the image (eg. truncated) would cause the rest of the image to not render because JPEGs are stored top down but RISC OS plots them bottom up. Fix endless failure to match previously cached JPEG, especially at 16bpp, when the source JPEG doesn't meet the fast colour conversion criteria (eg. not 2x2 subsampling). The flags test was checking the requested flags against the filtered flags, which never matched (because the unmet options get cleared). Now, keep the original flags prior to filtering and compare those on the basis that the conversion decision will be consistent; simply ANDing out those modifiable flags doesn't help because then you can't spot when they genuinely change (eg. a mode change) as the filtered flags determine what format the blitter is expecting back. Fix bug causing aborts when the user manually resizes (down) the JPEG workspace DA. The calculation of new_size in jpeg_find_image_dims() had at some point lost the height multiplier on the band buffer, so when auto resizing back up again the buffer was too small to convert a whole band into. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_74
Add lossless JPEG support Detail: Update scanning, diffusing, line fetching to handle 1x1 DCTs. For transcoding, skip the jcmaster check on block_size having to generate optimal huffman tables - for a 1x1 DCT we don't need a huffman table at all and the defaults will suffice. For diffusing, rather that write out longhand another specialised diffuser to handle the 1x1 case, just overallocate one line in the band buffer and let it diffuse a line of garbage. Implement integer fast 1x1 DCT routine (to avoid having to drag in 25k of generic IDCT_ISLOW code). Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_75
Lazy MCU decoding Detail: Only colour convert from the left clipping border (rounded down) to the right (rounding up). Only entropy decode the DC component for blocks likewise, skipping AC and IDCT steps. Admin: Submission for the JPEG bounty. Tagged as SprExtend-1_76
Repair ROM build Detail: Amend asmcore static dependency to create an o directory, so rom build target works Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as SprExtend-1_77
Fix quality loss for some alpha blending ops. Perform dynamic CPU feature detection. Detail: c/asmcore - Fix loss of quality for some alpha blending, e.g. 4K LARGB sprite being rendered into a 16M colour mode. All three channels were being expanded to 8 bit, but then two were being erroneously truncated to 4 bit. Sources/SprExtend - Make use of OS_PlatformFeatures + OS_ReadSysInfo to detect CPU features at runtime instead of relying on a hardcoded value. Should allow for better code generation with softload versions or Raspberry Pi 2/3 ROM versions. Admin: Tested on Raspberry Pi 1, 3, Iyonix Tagged as SprExtend-1_78
Fix to dpcm calculation leading to divide by zero in !Draw For JPEGs specified in dots-per-cm some dodgy looking bytewise fractions and missing brackets meant the x and y densities always came out as zero, leading to an abort in !Draw when it asks JPEG_[File]Info for this to convert to internal units. Correct the calculation and split it onto 2 lines for readability. Tested with a sample JPEG at 37dpcm (~93dpi). Tagged as SprExtend-1_79
Fix for access outside array bounds Can't allocate PC, so loop can stop at R14. Ref https://www.riscosopen.org/forum/forums/4/topics/9503 Tagged as SprExtend-1_80
Fix for CVE-2013-6629 and CVE-2013-6630 Merged from IJG release 8d1. Tagged as SprExtend-1_81
Fixes from static analysis asmcore.c: fix to align16() function to align as advertised due to operator precedence, and potential buffer overrun of userregs[]. Test/bigtest.c: correct some always false if's and printf() formatters Ref: https://www.riscosopen.org/forum/forums/4/topics/9503#posts-72595 Unrelated, Sources/SprExtend and Sources/SprOp: use symbolic name for sprite name size. Tagged as SprExtend-1_82
Logs for castle/RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_38 to ScrModes-0_67
Added prototype EDID support code. This should be considered beta-quality work-in-progress code that gives us a new *command (ReadEDID) that attempts to read the list of supported display mode information from a connected monitory and configure the system for it, as if an MDF file had been loaded containing that information. Admin: Community testing is required for this feature. Please try replacing the LoadModeFile line in your !Boot.Choices.Boot.PreDesk.Configure.Monitor file with a line saying "ReadEDID". If you get a sensible looking list of modes when the machine boots, then things should be OK. If you see an error, please get in touch with ROOL on the "Bounties - ReadEDID" topic. You'll clearly need to be running a ROM with this version of ScreenModes in it! Tagged as ScrModes-0_39
Extended to optionally generate a saved mdf instead of updating the current loaded mdf. Detail: For field support it is extremely helpful to determine what a customer's monitor reports. Whilst (hopefully) this module will correctly produce modes the monitor can handle and the computer generate, when that doesn't happen support types need to be able to find out why, ideally using the same exact information that is generated. So: The ReadEDID command, if called with a full file name, will now save the discovered mdf information to that file instead of loading it. The resultant mdf can be used directly, or used as the basis for further modifications. It exports additional information in the header section which may prove helpful to 'mdf tweakers'. Admin: Tested in imx rom. In 'advertised' use it is the same code as before. It is only when the filename is given to the readedid command that different paths are invoked. Further enhancements may be desirable. Tagged as ScrModes-0_40
Made safer to deploy in current ROMS, and added further stuff to generated mdf Detail: Added several things 1) Readedid routine not called in module initialise. 2) Flag added to determine whether old loadmodefile usage, or new readedid usage. Defaults to loadmodefile mode until a readedid command with no parameters, then swirches to edid reading mode. Reverts again if loadmodefile command is used. 3) Tidied up error message when graphicsv fails to read the edid due to connectivity issues. 4) Added hex dump of edid data blocks read to end of a saved mdf file. 5) Implemented read of second ans subsequent 128 byte edid blocks, if required. Admin: tested in imx rom Tagged as ScrModes-0_41
Corrected 'interlaced:' to 'interlaced' Detail: Admin: Tagged as ScrModes-0_42
Numerous tweaks and fixes Detail: c/ScrModes: - Double-checked all the DMT timings against the spec and corrected a few mistakes in both the DMT timings list and the established timings list. - Tidied up DMT & established timing formatting a bit, made static data arrays const - Fixed preferred mode handling so that it'll forget the preferred mode if you load an MDF after reading EDID (preferred_mode->bit0 used as a cheeky flag, in preference over malloc/free). Fixes crash/bad behaviour on startup caused by returning a duff preferred mode from Service_MonitorLeadTranslation on startup. - Added sanity checks to avoid null pointer dereferences if preferred_mode or new_preferred_mode are null - Fixed preferred mode handling to work correctly with interlaced modes (fixed it to use the frame width & height instead of the field width & height) - Tweaked CVT extension block handling - swapped the "- 17" with "- 18" in order to take into account the presence of the checksum byte - Tweaked GTF calculation to round pixel_khz to nearest when calculating it. I don't think this is mentioned in the spec, but when comparing some timings against the GTF spreadsheet this fixes ScreenModes being off by 1kHz in a few cases - When outputing an MDF, don't output display range parameters if the block wasn't found - Fix MDF output of interlaced modes (frame width/height vs. field width/height), use more accurate mHz frame rate value instead of Hz one - Make GraphicsV_IICOp calls use the correct GraphicsV driver number; current_graphicsv_driver() function added to replace ad-hoc code in a couple of other places - Fix reading of extension blocks. Also tweak logic to avoid re-reading the first block. - Initialise 'thefilename' when calling parseedid so that ERR_NOMODES will display something vaguely sensible Admin: Tested on Raspberry Pi (ROM), Pandaboard (ROM), Iyonix (softload) Appears to read EDID correctly from test monitors (BenQ FP737s, BenQ FP241W, ADI TD-523N), but there are some minor discrepancies in MDF output for some modes Tagged as ScrModes-0_43
Fix bogus vertical bounds reported in MDF comments Detail: c/ScrModes - Make sure compute_modedescription is used to initialise frame_mhz (and line_hz). Fixes bogus vertical bounds in MDF comments, and will fix order of modes as defined by sorting function modes_inorder. Also change horizontal bounds comment to use stored line_hz value instead of computing it on the fly Admin: Tested on Pandaboard Tagged as ScrModes-0_44
Added 'CreateModeFile' instead of optional file name on ReadEDID now needs a file path for where to save the created mdf. It'll use the name in the EDID for the file name Admin: tested in iMx6 Tagged as ScrModes-0_45
Fix bad merge. Improve Get_DTD_ASCII & MDF saving. Detail: c/ScrModes - Fix a bad merge causing a compute_modedescription() call to go missing. Fix Get_DTD_ASCII to avoid reading one byte too many, and to ensure the buffer is null terminated. Also strip any control characters. Improve MDF saving to return an error if the file couldn't be created, and to substitute various unsafe characters with underscores Admin: Tested on Pandaboard Tagged as ScrModes-0_46
Add support for CVT 3 byte codes & VTB-EXT blocks. Other misc fixes. Detail: c/ScrModes, h/modex - Added support for CVT 3 byte codes & VTB-EXT blocks. Add framework for sorting modes by EDID priority. Move CEA extension block handling into its own function & increase error checking. Resources/Germany/CmdHelp, Resources/UK/CmdHelp - Fix missing message token & incorrect syntax of syntax message Admin: Code submission from William Harden Tested on Raspberry Pi Tagged as ScrModes-0_47
Fix decoding of DTD sync polarities. Add support for some missing established timings. Detail: c/ScrModes - Fixed decoding of DTD polarties in dtd_block_to_modedesc. Add support for some missing established timings (generated by GTF/CVT as we don't have any known-good values to use as a reference) Admin: Tested on Pandaboard Submission from William Harden Not tagged
Fix some more sync polarity issues. Don't support DTDs for stereoscopic modes. Detail: c/ScrModes - Replace magic numbers used for sync polarities with HSync_Positive, VSync_Negative, etc. #defines. Fix GTF2 polarity to be correct. Fix CVT/CVT RB polarities to be correct (+ some incorrect code indentation). Make dtd_block_to_modedesc return true/false for success/failure so we can reject stereoscopic 3D modes. Admin: Tested on Pandaboard Tagged as ScrModes-0_48
Add support for parsing and reporting the contents of CEA 861-D audio-related EDID blocks Detail: Makefile - Export a C version of hdr/ScrModes Resources/Germany/Messages, Resources/UK/Messages, h/errors - Add new error message cmhg/ScrModesv, hdr/ScrModes - Declare existence of ScreenModes_EnumerateAudioFormats SWI. Declare ScreenModes_ReadInfo reason codes. h/modex - Extend MonitorDefinition struct to allow it to store the speaker mask & audio format information that's extracted from the EDID c/ScrModes - Extend support for processing of CEA extension blocks. All block revisions > 0 should now be accepted, and rudimentary parsing of CEA data block collections is implemented (currently, only extracts information from audio related blocks). Add SWI ScreenModes_EnumerateAudioFormats to allow details of the supported formats to be returned in either "raw" or "friendly" forms. Add ScreenModes_ReadInfo reason code 1 to allow reading of the speaker mask (+ validity bits). Also fix *LoadModeFile to allow EDID blocks to be loaded without first having to issue *ReadEDID first (EDIDEnabled flag issue). Admin: Tested on iMX6 with assorted EDID blocks German messages file in need of translation Tagged as ScrModes-0_49
Fix a few issues with EDID established timings Detail: c/ScrModes: - Added established timings for 720x400 @ 70Hz to be used in place of the auto-generated timings. For a BenQ FP737s-D, these match the expected timings listed in the manual, and they actually result in a picture displaying (auto-generated timings did not). - Split the guts of generate_dmt_mode out into a separate function so it can easily be used for adding the 720x400 @ 70Hz ModeDefinition - Fix established timing handling to only call generate_dmt_mode if the DMT defines timings for a given mode (old logic meant that only 720x400 @ 70Hz was falling through to the auto-generate case) - Fix established timing auto-generation to cope with the possibility of timings_byte being non-zero Admin: Tested on iMx6 on a variety of monitors 720x400 @ 70Hz now displays correctly on a FP737s-D 640x480 @ 67Hz now works too (albeit with a warning about being a non-preset mode, this one is listed in the EDID but not in the manual) Tagged as ScrModes-0_50
Fix audio format merge logic Detail: c/ScrModes - When removing 'candidate' from the list of audio formats, it's the number of formats which we want to decrement, not the pointer to the start of the list. Admin: Tested on iMx6 Fixes "RMA allocation failed" and other issues when dealing with monitors with complex audio capabilities Tagged as ScrModes-0_51
Fix *LoadModeFile not reporting errors when parsing EDID files. Fix another "RMA allocation failed" bug with audio format processing. Detail: c/ScrModes - Fix loadedid() not returning errors from parseedid() c/ScrModes - Fix bad use of realloc() in add_audio_format() - if audio_format_count hits zero then it's expected for realloc to return NULL. Admin: Tested on iMx6 Tagged as ScrModes-0_52
Add support for parsing CEA Short Video Descriptors (SVDs). Fix loaded EDID files being overwritten with monitor EDID during Service_DisplayChanged. Detail: h/CEAModes - Table of CEA mode timings from CEA 861-D s/ScrModes - Implement process_cea_video_data_block() in order to support SVD parsing. Ensure loadedid() sets the EDIDEnabled flag to 0, to prevent the loaded EDID (potentially) being replaced during Service_DisplayChanged. Admin: Tested on iMx6 Tagged as ScrModes-0_53
Fix bug in CVT-RB timing calculation, add GTF range check Detail: Rounding the pixel clock to 0.25MHz was not correctly performed due to clock step division being outside the floor() function, so all times came out in steps of 1MHz. In GTF timing with interlacing v_lines_rqd specifies ROUND(v_lines/2,0) rather than ROUNDDOWN(v_lines/2,0). Abandon GTF calculations early if they result in a -ve duty cycle. Update margins to 1.8% from standard. Admin: Mode with non-multiple-of-1MHz clock tested, now matches VESA CVT spreadsheet. GTF change not tested since int_rqd = 0 the code wasn't called. Margin% change not tested since margins_rqd = 0 the code wasn't called. Submission for the EDID bounty. Tagged as ScrModes-0_54
Switch to integer implementation Detail: The dynamic range of the values being computed easily fit within integer types, so use these instead of doubles. This makes ScrModes independent of its position in intialisation with respect to FPEmulator once more, and saves 1k of code space too. Functions generate_mode_using_gtf(), generate_mode_using_cvt_rb(), generate_cvt3_timing() affected. Admin: Test added to brute force compare float and fixed point results. Submission for the EDID bounty. Tagged as ScrModes-0_55
Take advantage of tail of generate functions being common Detail: Now all generation steps end in compute_modedescription()/add_proposed_mode()/display mode_parameters(), combine these steps into the add_proposed_mode() function. Fix for CVT and GTF generation steps never setting the 'priority' member of the descriptor. These are now set to 6 per Table 5.1 of EDID spec 1.4. Admin: Submission for the EDID bounty. Tagged as ScrModes-0_56
Do fill in DPMS support Detail: Don't ignore the monitor's power saving features for EDID; fill in the DPMS value properly. Admin: Submission for the EDID bounty. Tagged as ScrModes-0_57
Resolve allocation clash with RISCOS Ltd Detail: Some cross-checking against the RISC OS Select documentation revealed that ScreenModes_ReadInfo 1 had already been claimed by ROL for the purpose of reading the monitor's supported DMPS state, causing a clash with our recently-introduced usage of reading the monitor speaker mask. Implement ScreenModes_ReadInfo 1 as per ROL's spec, and change the "read speaker mask" call to ScreenModes_ReadInfo 2. File changes: - c/ScrModes, hdr/ScrModes - as above Admin: Tested on Raspberry Pi Tagged as ScrModes-0_58
Fix typo in DMT modes table Detail: c/tables - 540 != 640 Admin: Tested on Raspberry Pi Tagged as ScrModes-0_59
Check for array bounds Detail: Define MAXDMTMODENUM to guard against requesting DMT timing not in our table. Assert that the table size matches the define. Lowercased some 'X' (edidsupport.c), change to _swix (mdfsupport.c). Admin: Submission for the EDID bounty. Tagged as ScrModes-0_60
Offer export of raw EDID blob and complementary MDF export Detail: Export the EDID raw data as a file in ResourceFS. This allows the Screen Setup plugin to scan that directory to pick up the currently connected monitor, and similarly select it from !Boot.Choices.PreDesk. The EDID data can also be drag & drop copied or exported for offline analysis. Add SaveModeFile command. This differs in that it works on the current set, to be symmetrical with LoadModeFile which loads the current set. Also fixes issues of losing the original mode names given; NULL pointer dereference when the EDID block contains no modes (eg. VIDCDriver); and no long writes out malformed MDFs which can't be loaded into !MakeModes (this seems to be because the CreateModeFile command was based on a stale copy of EDIDDecode which fixed the same bug circa 2012). Query the current GraphicsV driver for the deepest colour depth for the preferred mode, rather than assuming 32bpp is always possible (eg. because of bandwidth or graphics controller constraints). If the configured MonitorType is EDID but no EDID could be read, or it was corrupt, substitute a safe VESA monitor to allow the kernel to select something close to MODE 28. Add ScreenModes_Features SWI so the Screen Setup plugin knows whether it's safe to offer EDID in its dialogues. Retire the ReadEDID command (no longer needed since LoadModeFile can load the exported EDID blob, or one from disc) and CreateModeFile commands (see SaveModeFile). Internationalise the default monitor title ("Unidentified") used when EDID doesn't contain one. Admin: New file - doc/BootStates documents all possible situations, and their recovery, for both the MDF and (non-hotplug) EDID schemes. New file - doc/EDIDGoals states the aims of the EDID support from both a user and support perspective. Submission for the EDID bounty. Tagged as ScrModes-0_61
Reinstall *readedid command as it IS needed in some circumstances Detail: Admin: tested on iMx6 Tagged as ScrModes-0_62
Remove ReadEDID command. Extend Service_DisplayChanged response Detail: ReadEDID command removed. New subreason code added to reason code 0 of Service_DisplayChanged to oblige ScrModes to load the EDID based modes it discovered. Required because current behaviour would ignore any EDID based modes once a LoadModeFile command had been issued. Admin: Tested on iMx6 Tagged as ScrModes-0_64
Add support for new GraphicsV_VetMode2 call Detail: VetMode2 allows the driver to give the OS extra feedback about a proposed mode. In particular, it allows the driver to suggest a value for the ExtraBytes control list item, so by using the VetMode2 call ScreenModes is able to support modes where the video driver requires extra padding to be added to the framebuffer. h/modex - Remove local definitions of control list item numbers. Reserve space for one extra control list item in the VIDCList structure. c/ScrModes - Use Global/VIDCList.h for control list item numbers. Update mode_valid to make use of VetMode2 where available, and give it the ability to copy the resulting VIDCList into a caller-supplied buffer, allowing service_modeextension to easily use the correct ExtraBytes setting. Admin: Tested on Raspberry Pi 3 Requires Kernel-5_82 Tagged as ScrModes-0_65
Fix EDID use at startup Detail: c/ScrModes - Re-introduce the using_edid check in the Service_DsiplayChanged handler, that was removed in ScreenModes 0.64. Removing the check completely breaks automatic EDID use (via MonitorType EDID), causing the kernel to panic and treat everything as mode 0 (due to no mode definitions being available). Admin: Tested on Raspberry Pi 3 Should fix issue reported on forums (bad screen mode during boot after upgrading from RC15): https://www.riscosopen.org/forum/forums/4/topics/9342 Tagged as ScrModes-0_66
Make EDID handling more robust Detail: c/edidsupport: - Make readedid() check that the EDID has a valid header. Previously only the checksum was checked, which is wholly insufficient (e.g. an EDID block full of null bytes would be considered valid). loadedid() also updated for consistency, although with the current code the header will have already been detected by loadmodefile(). - Add some extra checks to readedidblock() to cope with more situations in which the GraphicsV call could fail. Fix confusing comment/code ordering. h/errors, Resources/Germany/Messages, Resources/UK/Messages - Add new "Invalid EDID block" error, for use when no valid header is found Admin: Tested on Raspberry Pi 3 Booting an EDID-enabled Pi without a monitor (and with the broken BCMVideo 0.47) no longer results in an (unintelligible) error box on entry to the desktop + system stuck in mode 0 However, note that other issues in the boot sequence mean that booting with EDID enabled and no monitor still isn't 100% working (PreDesk Repeat will terminate early, potentially skipping some directories) Tagged as ScrModes-0_67
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/AcornLogo from AcornLogo-0_03 to AcornLogo-0_04
Numerous screensaver/setup improvements Notably the setup application allowed the setting of the aniation speed but that didn't affect the animation speed at all. This was because the corresponding code in the screensaver was disabled due to being totally wrong. Now, the speed setting is interpreted, and for the double banked case the previous frame is blacked out and for the single bank case the area moved is blacked out (to eliminate flicker). Squash the animation frames so they don't occupy 765k of disc space, new unsquash code added (from Pogo saver). Set 'Cancel' as the escape action button so the setup window closes when Escape is pressed. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as AcornLogo-0_04
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Circles from Circles-0_04 to Circles-0_05
Numerous screensaver/setup improvements Slowed down the circle drawing a bit so there's a few seconds of animation to watch before blackout. Purpose (which appears in the info box in the screen setup plugin) no longer says "Demo screensaver". Changed to using common functions in "saver.c" rather than local ones. There's no setup app for this saver as there's nothing to configure. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Circles-0_05
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Pogo from Pogo-0_03 to Pogo-0_04
Numerous screensaver/setup improvements Reworked the sprite plotting to not leave a trail of flickering pogo stick animation on the screen, this was caused by confusion about OS units mostly and writing into the wrong screen bank. Replaced the squash code with some that's sensible - this now uses a squash file exactly as output by !Squash rather than a homebrew format. The screensaver app was also supplied with both the squashed and not squashed versions of the sprite just for extra comedy. Changed to using common functions in "saver.c" rather than local ones. There's no setup app for this saver as there's nothing to configure. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Pogo-0_04
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/ScrBounce from ScrBounce-0_03 to ScrBounce-0_04
Numerous screensaver/setup improvements Set 'Cancel' as the escape action button so the setup window closes when Escape is pressed. UK run file moved into UK resources. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as ScrBounce-0_04
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Scrolling from Scrolling-0_08 to Scrolling-0_09
Numerous screensaver/setup improvements Simplified reading/writing of choices, and error handling therein. Set 'Cancel' as the escape action button so the setup window closes when Escape is pressed. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Scrolling-0_09
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Slider from Slider-0_03 to Slider-0_04
Numerous screensaver/setup improvements Set 'Cancel' as the escape action button so the setup window closes when Escape is pressed. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Slider-0_04
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Smear from Smear-0_03 to Smear-0_04
Numerous screensaver/setup improvements UK run file moved into UK resources. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Smear-0_04
Logs for castle/RiscOS/Sources/Video/UserI/ScrSavers/Swarm from Swarm-0_04 to Swarm-0_05
Numerous screensaver/setup improvements The default swarm speed in the code didn't match the default in the setup app. Additionally, the default was 0, which on modern CPUs is impossibly fast flying for bees - so when using the 'Try' option in the screen setup plugin the result didn't make sense nor match what the dialogue showed. UK run files moved into UK resources. Other admin changes: * Makefiles recreated from fragments * Version number now auto inserted from VersionNum * Messages and common code "saver.c" sync'd with other screensaver/setup apps * Removed references to Filer Configure from RMEnsure error messages * Removed never used info from setup app messages, ensuring they're never out of date by deleting them * Removed non internationalised "Screensave setup" from error box titles * Load settings from Choices: write settings through <Choices$Write> * Fix null pointer dereference when -openat switch has too few arguments * Symbolic names used instead of magic numbers where possible Tested on RISC OS 4.02. Tagged as Swarm-0_05
Logs for castle/RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_59 to ABRelease-0_85
Update readme Remember to point out that the HardDisc4 needs some extra modules & stuff copying for pre RISC OS 5 machines. Tagged as ABRelease-0_60
Update readme The TungstenDev softload readme was still referring to RISC OS 5.16 from 5 years ago. Tagged as ABRelease-0_61
Prepare for zero page relocation Detail: Resources/Generic/ZeroPain - New folder containing a build of ZeroPain 0.02 plus usage instructions Resources/(BCM2835Dev|OMAP3Dev|OMAP4Dev|TungstenDev)/release_autobuild,feb - Updated to add ZeroPain to the output zip file Resources/(BCM2835Dev|OMAP3Dev|OMAP4Dev|TungstenDev)/ReadMe.txt - Added warning note about zero page relocation being enabled Admin: release_autobuild tested with packaging an Iyonix ROM Tagged as ABRelease-0_62
Readme update SWI name correction. Tagged as ABRelease-0_63
Update to ZeroPain 0.04 Detail: Resources/Generic/ZeroPain/!Boot/Choices/Boot/PreDesk/!ZeroPain/ZeroPain,ffa - Updated to a build of version 0.04 of the module Resources/Generic/ZeroPain/ReadMe.txt - Remove the note that unaligned loads don't work; ZeroPain will now emulate whatever behaviour the system control register indicates are in use Admin: Tested on Raspberry Pi, Iyonix Fixes inconsistent abort behaviour of BASIC depending on whether BASIC was built to use unaligned/rotated loads or not Tagged as ABRelease-0_64
Move TextGadgets in SysMerge obey file Has never been 3.10 compatible so lives in 350 now. Tagged as ABRelease-0_65
Update !SysMerge script Required by BuildSys-6_71. Tagged as ABRelease-0_66
Update to latest version of softload tool Detail: Resources/(IOMDHAL|IOMDHALDev|Tungsten|TungstenDev)/soft/!Boot/Choices/Boot/PreDesk/! SoftLoat/SoftLoad,ff8 - Updated to a build of version 1.20 of the tool, to ensure correct operation when running on OS versions which use the new CAM format Admin: Tested on Iyonix, softloading to and from ROMs which use the new and old CAM formats Tagged as ABRelease-0_67
Add supporting ReadMe's for developer bonus binaries product Tagged as ABRelease-0_68
Copy ReadMe to the right place Wait until the dir exists before trying to copy a ReadMe there, silly. Tagged as ABRelease-0_69
Update !SysMerge script Vestigial module TinyStubs no longer installed Tagged as ABRelease-0_70
Add ABRelease resources for OMAP5 and Titanium Details: OMAP5Dev based on OMAP4Dev, minus the SD card instructions. Titanium based on OMAP4Dev, plus flash programming instructions. Admin: Lined up OMAP3 & 4 readme's to 80 columns. Tagged as ABRelease-0_71
Update ABRelease copies Softload 1.21 taken. FlashQSPI 0.06 taken. Also moved Softload and Prompt into the Generic directory, rather than keeping two copies of the same thing. Tagged as ABRelease-0_72
More descriptive error message When the file's not found, say so, rather than falling through and failing with "Cannot DIM negative amount". Tagged as ABRelease-0_73
Update to ZeroPain 0.06 Detail: This change updates the ROM downloads to come bundled with ZeroPain 0.06, which has had the kill switch date moved from the end of 2015 to the release of RISC OS 5.24, and is now able to leverage the Debugger module's ability to generate annotated stack dumps. Resources/Generic/ZeroPain/ReadMe.txt - Update ZeroPain readme to cover the new features and kill date Resources/Generic/ZeroPain/!Boot/Choices/Boot/PreDesk/!!ZeroPain/ZeroPain,ffa - Update module binary. Built with Norcroft 5.71. Admin: Tested on Raspberry Pi Tagged as ABRelease-0_74
Update to SysMerge install script Tagged as ABRelease-0_75
Update SysMerge script 350.TaskWindow no longer differentiated, so don't try to install it. Tagged as ABRelease-0_76
Update ReadMe's Clarify CMOS use with OMAP3/4, copy notes to BCM2835. Update FlashQSPI to latest for Titanium. Tagged as ABRelease-0_77
Update SysMerge script Add Net components. Tagged as ABRelease-0_78
Support softloading on pre-EDID ROMs Detail: Repoint PreDesk$Configure if no EDID support is available. This ensures that any settings made with the Screen Setup plugin will remain compatible with the host OS. Admin: PreDesk !Run file tested, however the changes to the release_autobuild scripts aren't. Tagged as ABRelease-0_79
Update SysMerge script BASIC/BASIC64 added (ref BuildSys-6_90). Tagged as ABRelease-0_80
Update Raspberry Pi ROM image name Detail: Resources/BCM2835(Dev)/release_autobuild,feb - For the release candidate images, we've standardised on calling the ROM riscos/img. But the archives produced by the autobuilder output them under the name 'riscos'. Update the autobuilder to also use riscos/img, to save the user the hassle of renaming the image when installing it. Admin: Untested Tagged as ABRelease-0_81
Update to ZeroPain 0.07 Detail: Resources/Generic/ZeroPain/!Boot/Choices/Boot/PreDesk/!!ZeroPain/ZeroPain,ffa - Update to ZeroPain 0.07, for better behaviour with the compatibility page introduced by Kernel-5_87 Admin: Tested on BB-xM Tagged as ABRelease-0_82
Update !SysMerge script for BASIC-1_72 To handle the situation where the disc based BASIC V has *not* been loaded, but the disc based BASIC VI has, add a dummy obey file to the Library so that it can start *BASICFPA instead. At some future point this can be removed when the disc based BASIC combines all 3 floating point types in one. Tagged as ABRelease-0_83
Add ABRelease accompanying resources for iMx6 download Admin: Derived from the BCM2835Dev set. Tagged as ABRelease-0_84
Readme dead links and corrections Detail: Fix wiki links to point at actual page not redirector. Copy common paragraphs to OMAP5 from OMAP3/4. Add SDCreate notes to iMx6. Tagged as ABRelease-0_85