Tungsten 5.22
Changes: Tungsten 5.20 to 5.22
Components changed
- Prepare from Prepare-0_04 to Prepare-0_05
- castle/RiscOS/Apps/!Builder from builder-0_21 to Builder-0_26
- gpl/RiscOS/Apps/!Perl from Perl-2013-05-27 to Perl-0_04
- castle/RiscOS/BuildSys from BuildSys-6_18 to BuildSys-6_66-1
- castle/RiscOS/Env from Env-1_24 to Env-1_31
- castle/RiscOS/Export from Export-0_07 to Export-0_09
- mixed/RiscOS/Library from Library-1_61 to Library-1_76
- mixed/RiscOS/Modules from Modules-0_25 to Modules-0_27
- castle/RiscOS/Sources/Apps/Alarm from Alarm-2_86 to Alarm-2_87
- castle/RiscOS/Sources/Apps/Chars from Chars-1_23 to Chars-1_25
- castle/RiscOS/Sources/Apps/Draw from Draw-1_23 to Draw-1_27
- castle/RiscOS/Sources/Apps/Edit from Edit-1_68 to Edit-1_73
- castle/RiscOS/Sources/Apps/Help2 from Help2-3_20 to Help2-3_22
- castle/RiscOS/Sources/Apps/Paint from Paint-2_13 to Paint-2_17
- bsd/RiscOS/Sources/Audio/SharedSnd from SharedSnd-1_12 to SharedSnd-1_16
- castle/RiscOS/Sources/Desktop/DragAnObj from DragAnObj-0_09 to DragAnObj-0_09-2
- castle/RiscOS/Sources/Desktop/DragASprit from DragASprit-0_15 to DragASprit-0_19
- castle/RiscOS/Sources/Desktop/Filer from Filer-2_33 to Filer-2_39
- castle/RiscOS/Sources/Desktop/FilerAct from FilerAct-0_59 to FilerAct-0_60
- castle/RiscOS/Sources/Desktop/Filter from Filter-0_27 to Filter-0_28
- castle/RiscOS/Sources/Desktop/Pinboard from Pinboard-0_96 to Pinboard-0_98
- castle/RiscOS/Sources/Desktop/ShellCLI from ShellCLI-0_36 to ShellCLI-0_37
- castle/RiscOS/Sources/Desktop/Switcher from Switcher-1_41 to Switcher-1_44
- castle/RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_75 to TaskWindow-0_76
- castle/RiscOS/Sources/Desktop/Wimp from Wimp-5_30 to Wimp-5_47
- castle/RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_06 to ADFSFiler-1_08
- castle/RiscOS/Sources/FileSys/CDFS/CDFS from CDFS-2_57 to CDFS-2_61
- castle/RiscOS/Sources/FileSys/CDFS/CDFSFiler from CDFSFiler-2_48 to CDFSFiler-2_49
- castle/RiscOS/Sources/FileSys/FileCore from FileCore-3_61 to FileCore-3_66
- castle/RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_82 to FileSwitch-2_83
- castle/RiscOS/Sources/FileSys/FSLock from FSLock-1_22 to FSLock-1_24
- castle/RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_01 to DOSFS-1_08
- castle/RiscOS/Sources/FileSys/NetFS/NetFiler from NetFiler-0_79 to NetFiler-0_80
- castle/RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_28 to RAMFS-2_29
- castle/RiscOS/Sources/FileSys/RAMFS/RAMFSFiler from RAMFSFiler-0_38 to RAMFSFiler-0_39
- castle/RiscOS/Sources/FileSys/ResourceFS/ResFiler from ResFiler-0_19 to ResFiler-0_20
- castle/RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_26 to SCSIFS-1_28
- castle/RiscOS/Sources/HAL/Tungsten from Tungsten-0_46 to Tungsten-0_57
- bsd/RiscOS/Sources/HWSupport/CD/SCSI from SCSI-0_03 to SCSI-0_04
- castle/RiscOS/Sources/HWSupport/DMA from DMA-0_20 to DMA-0_21
- mixed/RiscOS/Sources/HWSupport/FPASC from FPASC-4_32 to FPASC-4_33
- castle/RiscOS/Sources/HWSupport/PCI from PCI-0_11 to PCI-0_13
- castle/RiscOS/Sources/HWSupport/Podule from Podule-1_69 to Podule-1_70
- castle/RiscOS/Sources/HWSupport/SCSI/SCSIDriver from SCSIDriver-1_16 to SCSIDriver-1_18
- mixed/RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_17 to SCSISoftUSB-0_19
- castle/RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_09 to SCSISwitch-2_11
- castle/RiscOS/Sources/HWSupport/SerMouse from SerMouse-0_09 to SerMouse-0_10
- castle/RiscOS/Sources/HWSupport/Sound/Sound0Trid from Sound0Trid-1_67 to Sound0Trid-1_68
- castle/RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_38 to Sound1-1_40
- castle/RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_30 to Sound2-1_32
- castle/RiscOS/Sources/HWSupport/Sound/Voices/Percussion from Percussion-1_15 to Percussion-1_17
- castle/RiscOS/Sources/HWSupport/Sound/Voices/StringLib from StringLib-1_16 to StringLib-1_18
- castle/RiscOS/Sources/HWSupport/Sound/Voices/WaveSynth from WaveSynth-1_19 to WaveSynth-1_24
- castle/RiscOS/Sources/HWSupport/UnSqzAIF from UnSqzAIF-0_09 to UnSqzAIF-0_10
- mixed/RiscOS/Sources/HWSupport/USB/NetBSD from NetBSD-0_80 to NetBSD-0_93
- castle/RiscOS/Sources/Internat/IntKey from IntKey-0_97 to IntKey-0_98
- castle/RiscOS/Sources/Internat/Messages from Messages-1_10 to Messages-1_11
- castle/RiscOS/Sources/Internat/Territory/Manager from Manager-0_55 to Manager-0_56
- castle/RiscOS/Sources/Internat/Territory/Module from Module-0_58 to Module-0_60
- castle/RiscOS/Sources/Kernel from Kernel-5_35-4_79_2_190 to Kernel-5_35-4_79_2_263
- castle/RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_16 to AsmUtils-0_17
- castle/RiscOS/Sources/Lib/callx from callx-0_08 to callx-0_09
- castle/RiscOS/Sources/Lib/Configure from Configure-0_10 to Configure-0_11
- castle/RiscOS/Sources/Lib/DebugLib from DebugLib-0_66 to DebugLib-0_71
- castle/RiscOS/Sources/Lib/ModMalloc from ModMalloc-0_05 to ModMalloc-0_07
- castle/RiscOS/Sources/Lib/PDebug from PDebug-0_08 to PDebug-0_09
- castle/RiscOS/Sources/Lib/PlainArgv from PlainArgv-0_04 to PlainArgv-0_05
- castle/RiscOS/Sources/Lib/remotedb from remotedb-0_11 to remotedb-0_12
- castle/RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_77 to RISC_OSLib-5_85
- mixed/RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_58 to TCPIPLibs-5_60
- castle/RiscOS/Sources/Lib/Unicode from Unicode-0_60 to Unicode-0_61
- castle/RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_37 to Freeway-0_38
- castle/RiscOS/Sources/Networking/AUN/Access/ShareFS from ShareFS-3_54 to ShareFS-3_55
- castle/RiscOS/Sources/Networking/AUN/AUNMsgs from AUNMsgs-0_21 to AUNMsgs-0_25
- mixed/RiscOS/Sources/Networking/AUN/Internet from Internet-5_57 to Internet-5_60
- castle/RiscOS/Sources/Networking/AUN/MManager from MManager-0_28 to MManager-0_30
- castle/RiscOS/Sources/Networking/DHCP from DHCP-0_23 to DHCP-0_26
- mixed/RiscOS/Sources/Networking/Ethernet/EtherK from EtherK-0_24 to EtherK-0_25
- castle/RiscOS/Sources/Networking/Omni/Protocols/LanManFS from LanManFS-2_38 to LanManFS-2_48
- castle/RiscOS/Sources/Networking/Resolver from Resolver-0_69 to Resolver-0_71
- castle/RiscOS/Sources/Programmer/BASIC from BASIC-1_54 to BASIC-1_59
- castle/RiscOS/Sources/Programmer/BootCmds from BootCmds-1_47 to BootCmds-1_48
- castle/RiscOS/Sources/Programmer/DDEUtils from DDEUtils-1_73 to DDEUtils-1_74
- castle/RiscOS/Sources/Programmer/Debugger from Debugger-1_83 to Debugger-1_87
- castle/RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_28 to HdrSrc-2_50
- castle/RiscOS/Sources/Programmer/Obey from Obey-0_39 to Obey-0_40
- mixed/RiscOS/Sources/SystemRes/Internet from Internet-5_51 to Internet-5_57
- gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/DDTLib from DDTLib-0_04 to DDTLib-0_06
- gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/Trace from Trace-0_09 to Trace-0_12
- gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/Wild from Wild-0_04 to Wild-0_06
- castle/RiscOS/Sources/Toolbox/Common from Common-0_20 to Common-0_23
- castle/RiscOS/Sources/Toolbox/Gadgets from Gadgets-0_35 to Gadgets-0_37
- castle/RiscOS/Sources/Toolbox/Libs from Libs-0_23 to Libs-0_24
- castle/RiscOS/Sources/Toolbox/ToolAction from ToolAction-0_32 to ToolAction-0_36
- castle/RiscOS/Sources/Toolbox/Toolbox from Toolbox-1_53 to Toolbox-1_55
- mixed/RiscOS/Sources/Video/HWSupport/NVidia from NVidia-0_39 to NVidia-0_50
- castle/RiscOS/Sources/Video/Render/Colours from Colours-1_85 to Colours-1_91
- castle/RiscOS/Sources/Video/Render/DrawFile from DrawFile-1_57 to DrawFile-1_58
- castle/RiscOS/Sources/Video/Render/Fonts/ITable from ITable-0_16 to ITable-0_18
- castle/RiscOS/Sources/Video/Render/Fonts/Manager from Manager-3_74 to Manager-3_76
- castle/RiscOS/Sources/Video/Render/Fonts/ROMFonts from ROMFonts-0_76 to ROMFonts-0_77
- castle/RiscOS/Sources/Video/Render/Hourglass from Hourglass-2_17 to Hourglass-2_19
- mixed/RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_51 to SprExtend-1_65
- castle/RiscOS/Sources/Video/UserI/Display from Display-0_40 to Display-0_41
- castle/RiscOS/Sources/Video/UserI/Picker from Picker-0_53 to Picker-0_56
- castle/RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_35 to ScrModes-0_38
- castle/RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_52 to ABRelease-0_59
Components added
- bsd/RiscOS/Sources/HWSupport/RTC version RTC-0_01
- mixed/RiscOS/Sources/HWSupport/VFPSupport version VFPSupport-0_10
- bsd/RiscOS/Sources/Networking/MimeMap version MimeMap-0_17
- mixed/RiscOS/Sources/Programmer/Squash version Squash-0_30
- bsd/RiscOS/Sources/Video/Render/BlendTable version BlendTable-0_02
Components removed
- bsd/RiscOS/Sources/HWSupport/VFPSupport
- castle/RiscOS/Sources/HWSupport/RTCAdjust
- castle/RiscOS/Sources/Networking/MimeMap
- castle/RiscOS/Sources/Programmer/BASICTrans
- castle/RiscOS/Sources/Programmer/Squash
Full Change Logs
Logs for Prepare from Prepare-0_04 to Prepare-0_05
Update to install GCC 4 Detail: Prepare,feb, Resources/UK/Intro - Prepare script and docs updated to install GCC 4 + SharedLibs instead of GCC 2.95.4 Admin: Tested on GCC 4 BuildHost tree Tagged as Prepare-0_05
Logs for castle/RiscOS/Apps/!Builder from builder-0_21 to Builder-0_26
Logs for gpl/RiscOS/Apps/!Perl from Perl-2013-05-27 to Perl-0_04
Logs for castle/RiscOS/BuildSys from BuildSys-6_18 to BuildSys-6_66-1
BCMSupport not needed Module did nothing, being superceded by VCHIQ. Tagged as BuildSys-6_19
Shared makefile enhancements AAsmModule: Comments sync'd with implementation ModuleLibs/AppLibs: Add the RMVersion library CApp: Now APP_OBJS and APP_DBG_OBJS don't need the '.o' suffix in common with OBJS and DBG_OBJS Changed insertion of version numbers to be common for Messages/Obey/Desc files through new 'INSTAPP_VERSION' dummy rule INSTALLAPP_DEPEND renamed to INSTAPP_DEPENDS to match other INSTAPP_stuff CUtil: Use addprefix'd APP_OBJS StdTools: Default SQUISHFLAGS now set Added INSERTVERSION Tagged as BuildSys-6_20
Remove SndSetupVIDC from Disc components Now in SndSetup. Tagged as BuildSys-6_21
Add SoundControl to Disc exports Tagged as BuildSys-6_22
Update BuildHost for GCC 4 Detail: Makefiles/GCCRules - Makefile containing rules for building tools with GCC 4. These rules are intended to replace the rules in StdRules for when GCC is in use. ModuleDB - Added libgnu4 Components/ROOL/BuildHost - Build libgnu4 instead of libgnu Admin: Building BuildHost now requires a GCC4-based setup (Env-1_25, Modules-0_26, Library-1_63, etc.) Tagged as BuildSys-6_23
Added ThemeSetup to module database and disc components Tagged as BuildSys-6_24
All builds now build the Squash module from source Tagged as BuildSys-6_25
ADFSFiler added to Disc components for its theme sprites Tagged as BuildSys-6_26
Add EtherY autosense to InetSetup on the disc image Tagged as BuildSys-6_27
Add Internet module to PlingSystem components list Tagged as BuildSys-6_28
Add BlendTable to ModuleDB & ROM images. Add BlendTable & InverseTable to Disc exports. Detail: ModuleDB - Added BlendTable Components/ROOL/BCM2835, IOMD32, OMAP4, OMAP4, S3C2440, S3C6410, Tungsten - BlendTable added to all ROMs for use by SpriteExtend Components/ROOL/Disc - BlendTable & InverseTable added to export stage in order to allow CFSI-JPEG to build Admin: OMAP3 ROM tested on BB-xM CFSI-JPEG tested on Iyonix Tagged as BuildSys-6_29
Add APCS-R SharedCLib to the 310 subdirectory of !System in the Disc build Tagged as BuildSys-6_30
Copy over SA_DEPEND and ROM_DEPEND feature from CModule to AAsmModule Revert change to Disc component revision 1.59, there's no point providing just the CLib in 310/Modules since it needs CallASWI and FPEmulator which also aren't here. See Components/PlingSystem and the ReadMe improvement in ABRelease-0_56. Tagged as BuildSys-6_31
Changes to keep GNUmakefiles and Makefiles compatible Detail: Makefiles/CApp: * Naming of object file variables rationalised in line with CModule * Noted that INSTAPP_VERSION files must also be present in INSTAPP_FILES for compatibility with GNUmakefiles - requires changes to individual top-level makefiles, but not BuildSys Makefiles/CLibrary: * Naming of object file variables rationalised in line with CModule Makefiles/CModule: * Removed unused variable OBJS_ Makefiles/StdTools: * Retired TIDYDESC GNUmakefiles/AppLibs: * Add CONLIB, RMVSN, SYNCLIB GNUmakefiles/CApp: * Default definition of INSTAPP * Naming of object file variables rationalised in line with CModule * CLEAN_DEPEND removed, clean made a double-colon rule (it's worth noting that such additional clean rules are now only executed from the component's top-level directory: this was not true for the old extra_clean rules that this replaces, in the GNUmakefiles case) * Rename of INSTALLAPPFILES to INSTAPP_FILES * Rename of INSTALLAPP_DEPEND to INSTAPP_DEPENDS * Insertion of component version into Desc files now done using AwkVers script rather than the C preprocessor (note, will require editing of Desc files to comply). Also supports versions in Messages and !Run files, controlled by new variable INSTAPP_VERSION GNUmakefiles/CLibrary: * Naming of object file variables rationalised in line with CModule * clean rules now only executed from the component's top-level directory, as with CApp GNUmakefiles/StdTools: * Added INSERTVERSION (AwkVers), retired TIDYDESC * Perl scripts now explicitly passed to perl - no need to chmod +x the scripts in RiscOS/Library * asasm/objasm include paths and APCS/Machine/UserIF predefines set to match Makefiles Admin: Tested in a CTools build Tagged as BuildSys-6_32
Add RTC module to module database Replace RTCAdjust with RTC in IOMD and Tungsten builds. Add RTC to OMAP3 and OMAP4 builds. Tagged as BuildSys-6_33
Change Debugger from being an assembler component to C Detail: ModuleDB - The Debugger module is now classified C, not assembler, to allow us to safely start using some C code within it Admin: Required for Debugger-1_85 Tagged as BuildSys-6_34
Add BASIC[64] to the !System archive Add RTC as an export on the Disc components (for NetTime) Retire BASICTrans, placing alphabetically pleasing BlendTable in its slot Tagged as BuildSys-6_35
Change VFPSupport type & source location. Add export to CTools. Detail: ModuleDB - Changed VFPSupport to a C module located in the mixed folder; required for VFPSupport-0_06 Components/ROOL/CTools - Add VFPSupport export; required for building Debugger-1_86 Admin: Tested with Raspberry Pi & OMAP3 ROMs Tagged as BuildSys-6_36
Mark Squash as a C module Tagged as BuildSys-6_37
Move Meteors from closed to bsd Special thanks to the estate of Neil Raine for permission to publish the Meteors sources. Added to disc components. Tagged as BuildSys-6_38
Updated to add iMx6 components and modules Detail: 3 specific lines added into ModuleDB reflecting items in (currently) private branch iMx6 components file added Admin: J Ballance initial Tagged as BuildSys-6_39
Corrected a couple of details wrt EtherTH module naming Detail: corrected references from EtherET to EtherTH in moduleDB and Components files Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as BuildSys-6_40
Reintroduce SDCMOS to OMAP ROMs Detail: Components/ROOL/OMAP3, Components/ROOL/OMAP4 - Reintroduce SDCMOS to OMAP ROMs. Since SDCMOS 0.10 the module will no longer remain active if hardware CMOS is present, and so should be safe to include in the ROM without risk of poor performance/stability issues if people mistakenly have both hardware CMOS and a CMOS file. Admin: Tested on BB-xM Confirmed that CDMOS is only active if both hardware CMOS is absent and a CMOS file is present Tagged as BuildSys-6_41
Create cut-down Raspberry Pi build Detail: This is a command-line-only build, designed to operate without an accompanying RISC OS disc image. Also added the GPIO module to the ModuleDB so it can be included in ROM builds. Tagged as BuildSys-6_42
Repoint module database entry Tagged as BuildSys-6_43
Add Hopper to the disc components Hopper, PsychoEffects, QTheMusic added to module database. Tagged as BuildSys-6_44
Revise BBE target BootCommands 1.39 and later allow 1k command lines with *DO so there's no need to override the definition of ${PERL} any more. Also, add comments to AAsmModule about the various CUSTOM overrides possible. Tagged as BuildSys-6_45
Drop 2 tools tlink - a long since abandoned special tool used to link the toolbox modules against TinyStubs around RISC OS 3.50 era, no 32 bit version has ever been made, so by implication it's not being used aasm - the sources were lost some time in the 1990's, and hasn't been supplied as part of the DDE for over a decade Documentation updated to reflect current tools. Tagged as BuildSys-6_46
Move ScreenModes to before video drivers Detail: Components/ROOL/BCM2835, BCM2835Pico, IOMD32, OMAP3, OMAP3Live, OMAP4, Tungsten - Moved ScreenModes (+FPEmulator) to just before the video drivers, so that (once the EDID changes are submitted) the first mode change will be able to use EDID-derived mode timings instead of fixed ones. IOMD change is somewhat non-essential due to lack of EDID reading support, but keeps things consistent with the other ROMs. Also moved PandoraKey to be with the other keyboard (USB) drivers. Admin: Tested on BB-xM, Iyonix, Pandora, Raspberry Pi, RiscPC Tagged as BuildSys-6_47
Improvements to resources phase rules AAsmModule: The preferred override is now 'CUSTOMRES' to match CModule, though the former 'RESOURCES' is still accepted as a transitional step. The internal phoney targets (like resources-None) can no longer be augmented with :: since that doesn't make sense. Copied some block comments from CModule so they're easier to compare. Fixed the resourcesno/resourcesNo never appearing, this is because when CUSTOMRES=no you end up with two rules called resourcesno and no rule called resources. CModule: Added resources_res and resources_messages and resources_templates as well as RESOURCEEXTRA support (from AAsmModule). Copied some block comments from AAsmModule so they're easier to compare. Tested in an IOMD ROM resources phase. Tagged as BuildSys-6_48
Improvements to AAsmModule shared makefile Detail: * Corrected and added documentation at head of file * Now defines an "all" target * DIRS now has a default value (i.e. behaviour now matches the other shared makefiles) freeing the master makefile from needing to specify platform- specific paths * Added cross-compilation version Admin: Tested by cross-compiling the BASIC module Tagged as BuildSys-6_49
Make debug builds a bit simpler AAsmModule: Remove SA_DEBUG override, instead use ASDFLAGS like CModule does. CModule: If the target is 'debug' allow CMHGDFLAGS to pass extra defines into CMHG, this avoids the common problem of having to have 2 CMHG files and select between them. Other - sync the messages token check/copying, use ${NOP} and ${FAPPEND} and ${DO}, and od.${RES_OBJ} isn't dependent on ${DIRS} since it already has that when creating o.${RES_OBJ}. Tagged as BuildSys-6_50
Fix some Disc build errors Detail: Makefiles/AAsmModule - Reintroduce IfThere check of LocalRes:Messages, so that components which don't have any messages file will build correctly once again Makefiles/CApp - Ensure ${INSERTVERSION}'d files are writable; fixes errors when performing repeated Disc builds of components which mark their install directory tree as readonly. Admin: Fixes issue reported on forums with DDEUtils not being present in recent disc images: https://www.riscosopen.org/forum/forums/11/topics/2848 Tagged as BuildSys-6_51
Fix some tool build issues Detail: Components/ROOL/BuildHost - Enable Squash export phase now that the sources are public (plus, it's needed for building stuff). Tweak 'xpand' and 'do' option strings so that they'll build properly (previously, errored out due to looking for bad makefile rules) Admin: BuildHost build now completes without error Tagged as BuildSys-6_52
Various updates generally associated with CTools builds. Components (ROOL CTools): * Added new components (ITable, BlendTable, RTC) for exports * Switch to using Install: rather than <Install$Dir> to help CLX * Replace CToolsCD component with DDE component ModuleDB tweaks: * Added the (closed source) DDE resources component * Added a component for BuildSys itself (so DDE can get the Makefiles) Shared makefile tweadded ERASECVS to the standard tools * Added a verbose copy flags CPVFLAGS for big copy operations * Added "install" rule for debug app builds (amu install INSTTYPE=debug) Tagged as BuildSys-6_53
Corrected some DDE-related bits from the previous commit. Won't affect anyone other than CTools builds. Tagged as BuildSys-6_54
Added AHCIDriver to module database Detail: Admin: jwb Tagged as BuildSys-6_55
corrected misspelt AHCIDriver. no other changes Detail: Admin: JWB Tagged as BuildSys-6_56
Tweak to the ModuleDB to allow builds (e.g. CTools) to include some more of the common librabries in their install phase. The ones I've added are (almost) all required by shared makefiles - e.g. for debug app builds. Also a minor fix to CModule shared makefile to cope with certain arrangements of source files in a component. Tagged as BuildSys-6_57
CTools build will now export things into an "Exports" directory. This replaces the "AcornC/C++.Libraries" directory that we had before, which was a random mash-up of bits of a real "Exports" directory. Also reverted the CModule change - leave this job to components to deal with in their own makefiles. Tagged as BuildSys-6_58
CTools build now includes Kernel with an install phase to get at its exported headers. Admin: requires Kernel-5_35-4_79_2_242 or later (branch HAL). Tagged as BuildSys-6_59
Do 'rom_link' against the same thing you do 'rom' with During the rom phase, ROM C modules would be linked against ${ROMCSTUBS}, ie. clib. During the rom_link phase, they'd be linked against ${ABSSYM}, ie. clib and rlib. As RISC_OSLib contains various wimp_ symbol names which clash with ${WIMPLIB} from the Toolbox, so you can't write a ROMmable C module which links against the Toolbox and uses the shared makefiles. We define a new variable ROM_SYMS which is initialised to ${C_ABSSYM}, ie. just the clib to match the stubs used during the rom phase, and the ${ROMCSTUBS} is now appended to ${ROM_LIBS} so it can be overridden rather than being hardwired into the rule. For completeness SA_LIBS can now also be overridden to remove ${CLIB} if desired. CApp/CLibrary now use ${NOP} silently. Tagged as BuildSys-6_60
Repoint CALLXLIB Tack a 'zm' on the end to match callx-0_09. Mark the application version as invalid, since callx can't be used from an application which gets paged out. Tagged as BuildSys-6_61
Repoint ModMalloc library Not tagged
Add SharedSound to PlingSystem Detail: Components/ROOL/PlingSystem - Build and install a copy of SharedSound suitable for RISC OS 3.1+ Admin: Tested on emulated RO 3.11 & 3.70 SA RiscPC Requires HdrSrc-2_49 Tagged as BuildSys-6_62
Add ability to specify dependicies for CLibrary New capability for the CLibrary shared makefile to specify arbitrary dependencies (via ${LIBDEPENDS}) required before the main event, this might be used to, for example, run a perl script or something to generate some code or headers. Add PDEBUGLIB PRISMLIB REMOTEDBLIB TRACELIB and UNICODELIB to the AppLibs and ModuleLibs. Repoint DDTLIB WILDLIB TRACELIB. For the PlingSystem build, put TextGadgets in the 350 directory since it currently only supports text areas in dynamic areas. Tagged as BuildSys-6_63
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Tagged as BuildSys-6_64
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
Logs for castle/RiscOS/Env from Env-1_24 to Env-1_31
Updates for GCC4 based tools Detail: !Common,feb - Ensure SharedULib 1.12 is loaded. Boot !GCC (i.e. GCC 4) and !SharedLibs if present Admin: Required for GCC4 based tools to function Requires Modules-0_26 for SharedULib 1.12 Tagged as Env-1_25
Comment change only Detail: For those components that support cross-compilation, the mk.sh scripts are being changed to assume that the castle/bsd/mixed etc directories are no longer merged together. This is in line with the change to recommended practice for native builds (see the Prepare component in the root of CVS). This has no impact on Env, except for the comments in the Env files about what they expect the PWD to be on entry. Tagged as Env-1_26
Increase OMAP4 ROM size Detail: ROOL/OMAP4,feb - OMAP4 ROM size increased from 4MB to 5MB, to cope with some incoming changes Admin: Builds, but untested Tagged as Env-1_27
Add Env file for cut-down Raspberry Pi build Tagged as Env-1_28
Define Install$Path in addition to Install$Dir The !Common script will now define a macro variable for Install$Path which contains <Install$Dir>. which means install targets can now be specified in the form "Install:foo" rather than "<Install$Dir>.foo". This is especially handy because any path that has a / in it can end up being munged from UNIX to RISC OS form, even if it was a RISC OS path in the first place. But one thing that prevents the munging is if the path has a : in it. Long story short, you can now do stuff like this: INSTDIR=Install:DDE.AcornC/C++.Library which was hopelessly broken prior to this change. Admin: Requires mkdir 1.04 for the full goodness. Will be put into the main Library component at some point soon. Tagged as Env-1_29
Resync cross-compile version of !Common with RISC OS native version. Also add a couple more cross-compile Env files. Tagged as Env-1_30
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Tagged as Env-1_31
Logs for castle/RiscOS/Export from Export-0_07 to Export-0_09
Remove local copy of Squash header now that sources have been published Tagged as Export-0_08
Remove MimeMap export Headers now come from the component itself. Tagged as Export-0_09
Logs for mixed/RiscOS/Library from Library-1_61 to Library-1_76
Retire TidyDesc Use INSTAPP_VERSION from the shared makefiles in preference. Tagged as Library-1_62
Add perl script for handling GCC makefile dependencies Detail: Build/GCCDepend,102 - Script for handling the makefile dependencies generated by GCC4. It converts them to a format which AMU can understand. Admin: Required in order to build the GCC-based tools once they're updated to GCC4 Tagged as Library-1_63
Update GCC-based tools to versions built using GCC 4 Detail: GNU/diff,ff8 - Updated to binary built from diff-1_18 sources GNU/gawk,ff8 - Updated to binary built from gawk-0_02 sources Unix/Sed,ff8 - Updated to binary built from sed-0_02 sources Unix/grep,ff8 - Updated to binary built from grep-0_02 sources Unix/wc,ff8 - Updated to binary built from textutils-0_01 sources Admin: Tested with ROM + disc builds on BB-xM Build system is now fully ARMv7 safe? Tagged as Library-1_64
Add decgen to the misc tools Detail: Misc/decgen/* - Add a copy of decgen (http://www.phlamethrower.co.uk/riscos/decgen.ph ) so that it can finally start being used for generating the Debugger disassembler. This is a stripped down copy of the 1.40 release containing just the bits we need. Admin: Required for building Debugger-1_85 Tagged as Library-1_65
Update to decgen 1.41 Detail: Misc/decgen/!ReadMe, Misc/decgen/decgen,ff8 - Update to decgen 1.41, required by latest version of VFPSupport Admin: Tested on Raspberry Pi Tagged as Library-1_66
Add alias of SP When building with BASIC that doesn't recognise SP as register 13, make sure it's defined locally just incase. Spotted by Willi Theiss on an A9Home. Tagged as Library-1_67
Don't try to BBE export Vector There's no Vector binary. Move 'do' and 'Where' utils alongside 'X' util. Move 'ToGPA' into Build directory, since it's now used in module. Tagged as Library-1_68
Import of updated squeeze binary Squeeze 5.12 from DDE24, this is needed as the next move in the cat and mouse chase with RISC OS Select, which was rejecting some seemingly valid binaries as detailed https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/HWSupport/UnSqzAIF/Docs/ ignatures here. Tagged as Library-1_69
Update to latest romlinker, rompress versions in order to gain uImage support Detail: Build/romlinker,ff8 - Build of romlinker 0.05 Build/rompress,ff8 - Build of rompress 0.03 Admin: Built with Norcroft 5.69 Tested with building, compressing & booting Tungsten & OMAP4 ROMs Tagged as Library-1_70
Update 'zip' binary with an ARMv7 safe copy for ABRelease Delete unused tool MakeTime. Tagged as Library-1_71
Added mkdir 1.04 binary. Tagged as Library-1_72
Update to srcbuild 0.50 Detail: Build/srcbuild,ff8 - Updated to a build of version 0.50, so that errors encountered during the disc install phase will cause the build to fail Admin: Binary built with Norcroft 5.69 Tested with BuildHostDev, DiscDev, PlingSystem builds Tagged as Library-1_73
Various components rebuilt using latest toolchain. Corrected case of the ResGen tool to match how it installs itself. Extended makefile's install rule to support CTools builds. Tagged as Library-1_74
Tweak InstallTools script so 'prepare' step works with latest DDE. Tagged as Library-1_75
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Tagged as Library-1_76
Logs for mixed/RiscOS/Modules from Modules-0_25 to Modules-0_27
Update to SharedULib 1.12 Detail: SharedULib,ffa - Version 1.12 of SharedUnixLibrary Admin: Required by the incoming GCC4-based tools Tagged as Modules-0_26
Import of FrontEnd 1.32 binary The front end to !ObjAsm requires a bug fix in 1.31, but the modules here only had 1.30. Tagged as Modules-0_27
Logs for castle/RiscOS/Sources/Apps/Alarm from Alarm-2_86 to Alarm-2_87
Correction to interactive help The \A token includes a to, so don't say "to to". Tagged as Alarm-2_87
Logs for castle/RiscOS/Sources/Apps/Chars from Chars-1_23 to Chars-1_25
Use GETVERSION directly Tagged as Chars-1_24
Fix for menu opening position Chars took it upon itself to open the font menu at x-102,y+64 rather than x-64,y+0 like the Style Guide says. Also fixed misreported buffer size to OS_ReadVarVal - moot since the next link uses the $ operator to pick up the string which is limited to 256 anyway. Tagged as Chars-1_25
Logs for castle/RiscOS/Sources/Apps/Draw from Draw-1_23 to Draw-1_27
Add support for background blended text and text areas The background colour for text can now be set to "none" in the colour picker to request Draw to blend to background, rather than a fixed colour. In the saved file 0xFFFFFFFF, or -1, is used (same as foreground colour transparent) which would render gracefully as a white background on older versions of !Draw. For text areas the \B and \C commands can use -1 -1 -1 for the RGB components to denote transparency (3 arguments are defined as required in the text area spec, even though only 1 would really be needed). When text in a text area has a foreground colour of 'transparent' no text is plotted, this is to be consistent with the behaviour for ordinary text. Reordered the 'Enter' submenu to have the tools listed in the same order that they appear in the tools pane. Moved MIN/MAX macros into common header. Draw will only offer this functionality if an appropriate background blending Font Manager is in use, this is required as !Draw appears inside RO350Hook for machines that predate the functionality. Tagged as Draw-1_24
Build fix Message_SetPrinter renamed. Tagged as Draw-1_25
Pop to top a draw file if already open rather than loading again As for !Edit and the filer, when asked to open the same thing a second time, just re-present the one already in memory rather than opening a second time. We borrow the logic from !Edit - the (uncanonicalised) filename must be the same, unmodified, with the same datestamp. If all these are true just pop the existing window (or newest of the views when multiple views exist) to the top. Draw.c: Change the boolean expression at line 2191. While previously correct (not wimp_MDATALOAD does include wimp_MDATAOPEN) it subsequently relied on load_file to skip wimp_MDATASAVE. DrawFileIO.c: Add check of load/exec/modified/filename. Defer creating a new diag until later on to avoid annoying screen flicker when disposing of the diag (similarly for error cases). Fix confusion returning FALSE as a pointer. Tagged as Draw-1_26
Fix rendering in 4K colour modes Detail: c/DrawDispl - displ_gcol() function was failing to do anything in 4K colour modes, resulting in selection boxes, grid marks, etc. appearing in arbitrary colours Admin: Tested on Pandaboard Tagged as Draw-1_27
Logs for castle/RiscOS/Sources/Apps/Edit from Edit-1_68 to Edit-1_73
Minor template fixup In the quit dialogue the button wasn't regimental 52 OS units high so looked a little odd. This commit is mostly to get a new version number to match the redraw fix in RISC_OSLib-5_78. Removed duplicates 'tbash' and 'txtbug', see Test directory for the originals. Tagged as Edit-1_69
Eliminate need for EditIntern headers edit.c: txtar.h and txtoptmenu.h weren't actually needed since none of their definitions were in use. txtfile.h was being used for a single function which is now implemented in save_one_txt(), sharing code with the panic file save function. Accept RISC_OS_PLUS switch (circa RISC OS 3.00) is always true now, and delete some experimental code. Fix bug in panic file saves to Wimp$ScrapDir, the filetype was being derived from bits 20-31 of the load address rather than 8-19. Panic save also changed to use RISC_OSLib style SWI functions rather than _swi and _swix. message.c: Take ownership of the task window defines, same as SrcEdit has for some years. Tested in a RAM install, printing a 2 line BASIC program out. Tagged as Edit-1_70
Build fix Message_SetPrinter renamed. Tagged as Edit-1_71
Switch from ArcEdit style model to clipboard cut & paste model edit.c: Register clipboard wimp messages on startup. Mark local functions as static. message.c: Let the task window accept clipboard pastes too. This is tied to the 'Ignore ctrl' menu option. When enabled (default) then ^C ^V are filtered out to for clipboard typing to the task, and filters control characters from the task too (as before). When disabled, ^C ^V are passed raw to the task, and all VDU is displayed raw from the task. Cut & paste can still be performed in the disabled case by using the Edit->Select menu. Messages: Remove TaskInput from Task menu, add clipboard keys to Select menu, add swap case to Select menu. Slim down the Misc menu which was too wide in system font. Update interactive help. Use some more of the escape code tokens in interactive help. Declare the previously secret Ctrl-Shift-F1 hotkey for Expand tabs. Templates: Line use magic search character '\n' in the dialogue. New documentation 'ClipKeys' is a complete survey of the hotkeys for !Edit and !SrcEdit with reference to the RISC OS 3.70 welcome manual and a few hidden ones, compared with the current implementation. Requires RISC_OSLib-5_85. Tagged as Edit-1_72
Remove unused source 'ctl' is some kind of abandoned text based application generator, long since superceded by the Toolbox. The sources aren't used in building this component. Tagged as Edit-1_73
Logs for castle/RiscOS/Sources/Apps/Help2 from Help2-3_20 to Help2-3_22
Use GETVERSION directly Tagged as Help2-3_21
Get the version string for info box from messages Tagged as Help2-3_22
Logs for castle/RiscOS/Sources/Apps/Paint from Paint-2_13 to Paint-2_17
Don't silently do nothing when trying to rename to a duplicate name Paint, when renaming a sprite via alt-clicking on the name, would silently do nothing if the target name already exists. This was different behaviour to renaming via the menu (which gives "Sprite name already exists") and the Filer (which gives "Filename already exists". Now, alt-click-rename also gives a suitable error. Tagged as Paint-2_14
Fix rendering issues in new screen modes. Add basic support for new sprite types. Detail: c/Main, c/PSprite, h/main - Update window background rendering & sprite translation table caching to work properly with new screen modes. c/Main, c/Menus, c/PSprite, h/PSprite, h/main - Code to generate description text for sprite colour count now uses new shared function, psprite_get_colours(), which understands the new sprite formats and won't crash horribly if given something unknown. Admin: Tested on BB-xM with new format sprites and new screen modes Needs extending to report more info about new format sprites (RGB order, alpha channel, wide mask, etc.) along with relevant editing facilities. Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as Paint-2_15
Various bugfixes. Improve sprite info dialog. Detail: - Handling of currently selected foreground & background colour rewritten; colour is now stored as a 'main_colour' struct, in order to allow representation of alpha level, pixel colour/palette index (which must be 4 bytes for things like CMYK) and ECF index (previously encoded as negative colour values). Fixes crashes when editing RISC OS 5 32bpp ARGB sprites. Note that although the alpha level is now stored internally, and tools should mostly respect it, palette/colour picker limitations mean that only 0/255 is available when selecting colours. - "Select colour" code rewritten to decode all the new pixel formats correctly; colours_entry() now accepts a sprite mode word instead of a number-of-colours value - "Full info" display tweaked to give more information about the mask (now displays no mask, normal mask, alpha mask, alpha channel) - Sprite info dialog extended to display lots more information, including OS version compatibility - Fix sprite menu to disallow add/remove mask option if the sprite has a RISC OS 5 alpha channel - Fix ECF pattern that's used for the background of masked sprites to get black/white colour values from ColourTrans when in >8bpp modes, to ensure correct colours in new RISC OS 5 modes - Fix palette window to render ECF patterns correctly - when creating the sprite that shows the ECF pattern in the palette, psprite_setup_ecf() was failing to set its palette due to passing a sprite pointer to ColourTrans but setting the flags as if it was a sprite name - Fix sprwindow_redisplay() and sprwindow_invalidate() to refresh the display correctly when in full info mode; was previously assuming only one column of sprites visible - Fix sprites with alpha channels to have the mask ECF pattern plotted in the background Files changed: - Resources/UK/Messages, Resources/UK/Templates,fec, c/Colours, c/Main, c/Menus, c/PSprite, c/SprWindow, c/Tools, h/Colours, h/MenuD, h/PSprite, h/main Admin: Tested on BB-xM Amongst others, fixes issue reported on forums with spritefile window not refreshing correctly when in full info display with multiple columns: http://www.riscosopen.org/forum/forums/8/topics/2146?page=5#posts-31272 Tagged as Paint-2_16
Build fix Message_SetPrinter renamed. Tagged as Paint-2_17
Logs for bsd/RiscOS/Sources/Audio/SharedSnd from SharedSnd-1_12 to SharedSnd-1_16
Changed to use NdrDebug instead of local debug functions Changed GET of filenames to use <name>.<extension> form. Built, but not tested. Tagged as SharedSnd-1_13
Signed pointer comparison fix In SWI InstallDriver reason codes > 2 are interpreted to mean a pointer to an install driver block, but this used a signed comparison so registering blocks in the top half of memory would fail. SWIS.s: Comparison changed to process 0/1/2 and > 2 correctly SoundDrv.s & Handler.s: Eliminated ADR range function by just using ADRL Module.s: Zero length command table replaced by a 0 in the command entry of the module header Memory.s: Signed loop exit changed for unsigned one (not relevant since the workspace is < 2G) Drivers.s: SWI name moved inside doDMI switch Tagged as SharedSnd-1_14
Internationalised Errors are now looked up via MessageTrans. The driver names (registered via InstallDriver or to SoundDriver_Install) are now also looked up. Note, the SharedSound_DriverInfo SWI used to return r2 as the pointer to a pointer to the name, the documentation seems vague as to what the intent was, but it seems more likely that a pointer to the name was what was intended. The name string is buffered (because it needs looking up for internationalisation anyway). Tested briefly, inspecting the workspace for name lookups and sending a fake Service_SoundDriver service call. Two errors deliberatly triggered to check error text. Tagged as SharedSnd-1_15
Enable log driver for the machines which may need it Detail: s/Gets - Enable the log driver (which mixes 16 bit audio down to 8 bit log) for the machines which may need it Admin: Tested in 'All' build on emulated RO 3.11 & 3.70 SA RiscPC Tagged as SharedSnd-1_16
Logs for castle/RiscOS/Sources/Desktop/DragAnObj from DragAnObj-0_09 to DragAnObj-0_09-2
Update to use OSRSI6 header Detail: s/DragAnObj - Updated to use OSRSI6 header for OS_ReadSysInfo 6 reason code instead of a magic number Admin: Tested on rev A2 BB-xM. Not tagged. Not tagged
Logs for castle/RiscOS/Sources/Desktop/DragASprit from DragASprit-0_15 to DragASprit-0_19
Add support for translucent rendering of dragged sprites Detail: As per ROL's version of DragASprite, we now support translucent drags as well. As long as you have a suitable SpriteExtend version, DragASprite will try and use translucent drags wherever it used to use hatching before. The only exception to this is in 1bpp modes, where blending is essentially impossible and so it sticks with the old hatching code. As with ROL's version, the only way of disabling translucent drags (short of loading an older SpriteExtend) is to set bit 8 of the flags in R0 when calling DragASprite_Start. File changes: s/Drag - Drag sprite rendering now goes via new TranslucentPlot routine, to allow translucent/non-translucent rendering to be performed as appropriate s/Startup, s/Support - Updated with code to detect when translucency is and isn't supported. A few OS_SpriteOp reason code magic numbers replaced with symbols. Admin: Tested on BB-xM Tagged as DragASprit-0_16
Disable drop shadow when using translucency Detail: s/StartUp - By popular demand, automatically disable the drop shadow when we're performing a translucent drag, as general opinion seems to be that translucent drags will look better without it. Reportedly this also matches the behaviour of ROL's version of the module. Admin: Tested on BB-xM Tagged as DragASprit-0_17
Add support for translucent drop shadows Detail: Drop shadows were disabled in DragASprite 0.17 when using translucency due to them looking a bit ugly. This change brings them back, but implemented in a different manner to produce a better result. Instead of using a standard sprite and rendering it with translucency, we create a sprite with an alpha channel and use the alpha to control the relative intensity of the dragged sprite and its shadow. The alpha channel also allows us to feather/blur the shadow, getting rid of the hard edges that were mostly resposible for the previous version looking so poor. s/Drag - Adjust TranslucentPlot to support plotting of the ABGR sprite s/StartUp - Adjust drag startup logic so that >2bpp uses an ABGR sprite, 2bpp uses a translucent plot (+ hard shadow), and 1bpp continues to use dithering/hatching. Add new GenerateTranslucentDropShadow routine that's responsible for creating the ABGR sprite. Adjust GetByteSizeOfSprite to return separate values for the size of the foreground (masked/ABGR) and background sprites. s/Support - Add new check for whether the kernel supports ABGR sprites Admin: Tested on BB-xM Fixes issue #390: https://www.riscosopen.org/tracker/tickets/390 Tagged as DragASprit-0_18
Fix flickery drags. Tweak translucent drop shadows. Detail: s/Drag - When moving the dragged sprite, avoid plotting over the top of its old location in order to prevent flicker caused by overdraw. This flicker wasn't so apparent with the older translucent or hatched sprite plotting, but is a lot more noticeable with ABGR sprites. s/StartUp - Use 50% alpha for the ABGR sprite in true colour modes, to match hatching & non-drop shadow variants. Also make the drop shadow completely invisible when behind the sprite - better than having it there but making it almost completely imperceptible in order to try and hide the fact that it always looks a bit funny Admin: Tested on Iyonix Tagged as DragASprit-0_19
Logs for castle/RiscOS/Sources/Desktop/Filer from Filer-2_33 to Filer-2_39
Add support for sorting dir contents numerically as well as alphabetically New option to the display menu "Numerical sort" modifies the existing 4 sort methods (name, size, type, date) to sort by interpreting any numbers as cardinals. This modifier only really has effect on "Sort by name" since the other three already sort numerically. This means for example a dir containing "File9,File10,File11" will appear in that order, whereas sorting by name alone would show "File10,File11,File9". SelStuff0.s/SelStuff.s/Gets.s: Removed. Single function placed into SelStuff. ModHdr.s/OpenDir.s/Commands.s/DebugFlags.s: Decoding of -NumericalSort switch, switched out undocumented 'Query' flags. DecodeMenu.s/MenuCreate.s: Handle menu entry, simplify rename code a little. HelpSrc.s/Messages: Extra help text. SortDir.s: Pass option flag to Territory_Collate. WkspEtc.s: Corrected definition of db_sm_type and db_sm_size. Tagged as Filer-2_34
Fix to Filer_OpenDir parsing Correcting the db_sm_ variable names to match the values stored in CMOS location 198 exposed the fact that the old order was masking a bug where the ReadArgs switch order didn't match the syntax string. Syntax string switched round. Fix for ticket #369. Tagged as Filer-2_35
Redraw items in a more optimal order Detail: This change moves some identical code out of event_redraw_window and UpdateFile, to create the RedrawDirectory routine. This new routine improves on the original code by using the spare part of the userdata block to build a list of all files which need redrawing, and then sorting the list by filetype & state in order to try and make sure all files which have the same sprites are drawn in one go. This helps avoid thrashing the translation table generation code in the Wimp/ColourTrans, and helps improve CPU cache performance. File changes: s/Redraw - Cut up event_redraw_window and UpdateFile to create the new RedrawDirectory routine and SortAndDraw subroutine. s/SortDir - Add sort_redraw function which is used to sort the files into their redraw order. However it takes different arguments to the other sort routines and so is only of use to SortAndDraw. Admin: Tested on Iyonix, BB-xM, StrongARM RiscPC Tagged as Filer-2_36
Fix incorrect d_filesperrow calculation when directory path name is wider than the screen Detail: s/Open - When widening the viewer width so that the full directory name is visible, clamp the value to the screen width before calculating d_filesperrow. Without this fix the window width will get clamped to the screen width (by the Wimp?), but d_filesperrow will reflect the pre-clamp value, potentially causing one or more columns of files to be placed outside the window bounds until the window is next resized. s/Errors, s/GoFiler, s/Redraw - Swap some ADRs for ADRL and fix a typo that prevented the module from building when debugging was enabled Admin: Tested on BB-xM with some long path names and 640x480 screen Tagged as Filer-2_37
Increased size of stackbot in s.WkspEtc to allow space for longer file/path names. changed from &200 to &400. This extends the max length the filer can handle from approx 250 chars to at least double that. Tagged as Filer-2_38
Fix error on drag termination When DragASprite is unplugged the Filer would error on terminating a file drag. Changed to 'X' SWI like all the other DragASprite_Stop uses. Tested on a Risc PC with & without the DragASprite setting enabled. Tagged as Filer-2_39
Logs for castle/RiscOS/Sources/Desktop/FilerAct from FilerAct-0_59 to FilerAct-0_60
Build fix Message_FilerOpenDir renamed. Tagged as FilerAct-0_60
Logs for castle/RiscOS/Sources/Desktop/Filter from Filter-0_27 to Filter-0_28
FilterManager builds as a soft-loadable version again Detail: ADR didn't reach Tagged as Filter-0_28
Logs for castle/RiscOS/Sources/Desktop/Pinboard from Pinboard-0_96 to Pinboard-0_98
Use OS_SpriteOp 65 for tiled backdrop sprites Detail: s/StartLoop - Use OS_SpriteOp 65 for drawing tiled backdrop sprites. Fall back to manual tiling code in softload versions if OS_SpriteOp 65 unavailable. Admin: Tested on Iyonix, BB-xM Requires HdrSrc-2_42 Tagged as Pinboard-0_97
Fix background tiling logic Detail: s/StartLoop - Fix non-softload version to exit immediately after the tiled OS_SpriteOp instead of falling through to the old manual loop. Make sure r1 is initialised correctly for the manual loop (contrary to the source comments, the function was previously relying on r1 being a pointer to the redraw rectangle on entry) Admin: Tested on BB-xM (ROM build with OS_SpriteOp 65), Iyonix (softload without OS_SpriteOp 65 available) Issue spotted by eagle-eyed Sprow Tagged as Pinboard-0_98
Logs for castle/RiscOS/Sources/Desktop/ShellCLI from ShellCLI-0_36 to ShellCLI-0_37
Build fix Move Hdr:Services up above Hdr:Wimp Built, but not tested. Tagged as ShellCLI-0_37
Logs for castle/RiscOS/Sources/Desktop/Switcher from Switcher-1_41 to Switcher-1_44
Treat memory sizes as unsigned Detail: s/Switcher - Treat memory sizes as unsigned values. We don't deal with negative sizes, so there's no reason to be using signed arithmetic. Admin: Tested on BB-xM Tagged as Switcher-1_42
Escape some dollars, sort out value of NULL Change $ => $$ to reduce substitution warnings. Be consistent about NULL (being 0) not -1, otherwise the total memory bar vanishes on systems with >= 2GB of RAM. Tagged as Switcher-1_43
Fix for menu opening position Switcher took it upon itself to open its menus at x-width/2,y-12 rather than x-64,y+0 like the Style Guide says. Tagged as Switcher-1_44
Logs for castle/RiscOS/Sources/Desktop/TaskWindow from TaskWindow-0_75 to TaskWindow-0_76
Build fix Move Hdr:Services up above Hdr:Wimp Built, but not tested. Tagged as TaskWindow-0_76
Logs for castle/RiscOS/Sources/Desktop/Wimp from Wimp-5_30 to Wimp-5_47
Replace OS_SpriteOp reason code magic numbers with definitions. Add support for new screen modes. Detail: s/Tiling, s/Tiling3D, s/Watchdog, s/Wimp05, s/Wimp07, s/Wimp09 - Replaced OS_SpriteOp reason code magic numbers with symbolic definitions. s/Wimp01 - Update *WimpMode / Wimp_SetMode to use OS_ScreenMode 13 (mode string to specifer) in place of its own code if a mode specifier string has been given. Note - mode number handling is unchanged, so a mode specifier string which begins with a mode number will currently have the specifier part ignored. s/Wimp01, s/Wimp02 - Flag_* -> ModeFlag_* renaming s/Wimp02 - Fix mode specifier copying to only stop copying when we hit a mode variable of -1. Previous code would also stop if the variable value was -1. Update mode set code to apply the Wimp's special greyscale palettes if the greyscale mode flag is set (i.e. greyscale mode was set via specifier generated by OS_ScreenMode 13) Admin: Tested on BB-xM Tagged as Wimp-5_31
3 minor fixes, 2 minor enhancements Makefile: * Conditionally copy the disc resources, saving a little build time. Wimp10.s; hdr/Wimp: * Issue Service_WimpToolSpritesChanged when the tool sprite area is changed. Wimp05: * Fix bug in softloaded versions of the Wimp where menus would randomly lose the keyboard shortcut text. This was caused by use of an LDR to retrieve a byte wide variable. This specifically affected some softloads because the Wimp gets squeezed, and during unsqueezing the Wimp's workspace ends up being allocated from the same bit of RMA that used to contain the squeezed copy of the module (=lots of random numbers). Wimp09: * Fix bug where configuring WimpSpritePrecedence to ROM when a theme is loaded would cause redrawing of window textures to fail. This is because the Wimp intersects the ROM and RAM sprite areas and deletes any duplicates from the RAM area when remaking the fast lookup sprite list. So if the RAM sprites include the "tile_1" (etc) sprite on redrawing the desktop the Wimp points to this, then intersects the lists and deletes the sprite, leaving the pointers pointing at junk. Now, on deleting something, the window tile pointers are invalidated. Fixes ticket #346. Wimp02: * Fix bug where the title bar text, when the desktop font is the system font, is incorrectly rendered in the colour selected by WimpVisualFlag -WindowOutlineColour. The Wimp now restores the text colour if -WOC has set the graphics colour to something other than black. Administrative - In Wimp01, swap a couple of SpriteReasons from magic numbers. In the init of variables use the common reset_all_tiling_sprite function. In Tiling3D, more SpriteReasons, and rationalise the registers used in reset_all_tiling_sprites. Tagged as Wimp-5_32
Fix logic which decides whether to plot sprites using the Kernel or SpriteExtend to take into account the new sprite modes Detail: s/Wimp01 - Add NColour mode variable to the list of variables cached for the current screen mode. Add modeflags & ncolour to the sprite & tool sprite variables. s/Wimp04, s/Wimp10 - Update cachespritedata and cachetoolspritedata to look at the modeflags, ncolour and alpha mask flag when deciding if sprite_needsfactors should be set or not (i.e. whether the code ultimately uses OS_SpriteOp 52 or 34). This should allow the Wimp to correctly detect if a sprite can safely be rendered by the Kernel or not (except for double pixel vs. non-double pixel - but presumably nobody's using double pixel mode sprites for icons/tool sprites, otherwise it would be fixed by now?) s/Wimp04 - Add an extra safety check to icon text rendering after a crash was seen when calling Wimp_PlotIcon outside of a redraw loop Admin: Tested on BB-xM Fixes problem reported on forums with 32bpp, alpha-masked sm!Netsurf icon vanishing from filer when viewed in 32bpp modes https://www.riscosopen.org/forum/forums/3/topics/309?page=4#posts-25995 Tagged as Wimp-5_33
Add support for *iconspriting of alpha-masked sprites. Fix icon shading/inverting to work with true colour sprites. Detail: Options/s/!Default, s/NewSWIs, s/Wimp01: Updated ROM sprite find code, *IconSprites and Wimp_Extend 13 to understand a new spritefile suffix. If the Wimp detects that RISC OS Select style alpha masked sprites are supported, and we're not using the mode 23 sprites, then the code will enable support for alpha masked sprites of the form !SpritesA1, !SpritesA2, !SpritesA, etc. Alpha-masked sprites are only looked for when looking for square pixel sprites or just before looking for the default sprites. This means the full search pattern for (e.g.) a !Sprites21 mode would be as follows: !Sprites21 (original mode) !SpritesA2 (next squarer mode, alpha sprites) !Sprites22 (next squarer mode) !SpritesA (default alpha sprites) !Sprites (default sprites) Like with !Sprites11 support, this feature can be toggled off via the SpritesA option if necessary. s/Wimp01, s/Wimp04: Updated icon plotting code (wimp_SpriteOp_putsprite and calculateinverse) to allow true colour sprites/icons to be rendered shaded/inverted. For this to work the Wimp needs a version of SpriteExtend which supports colour mapping (specifically it checks for the relevant ROOL version number). The colour mapping function which is used to build the translation tables used for shading/inverting palettised sprites is too slow to be sensibly used on a per-pixel basis, so the first time a shaded/inverted true colour sprite is requested the Wimp will generate a set of lookup tables which can be used by a much simpler colour mapping routine. To keep memory usage down these lookup tables only use 4K colours each; however the quality isn't always that great and so this may need revising in future. Admin: Tested on BB-xM Tagged as Wimp-5_34
Change Wimp_ReadSysInfo 2 to not return alpha sprite names. Add Wimp_ReadSysInfo 29 and Wimp_Extend 257. Detail: s/Wimp01 - Change romspr_suffix initialisation so that it won't store alpha sprite suffixes. This has the knock-on effect of making Wimp_ReadSysInfo 2 no longer return alpha sprite suffixes, without affecting any of the sprite search code hdr/Wimp, s/Wimp01 - Add Wimp_ReadSysInfo 29 to read the alphaspriteflag value - i.e. whether alpha sprites are supported by the OS/Wimp and *IconSprites, Wimp_Extend 13, etc. will look for them hdr/Wimp - Document the private Wimp_Extend reason codes and add a couple of ROL's reason codes s/NewSWIs - Tidy up Wimp_Extend implementation to use a jump table instead of a load of tests and branches. Add an implementation of ROL's Wimp_Extend 257, which just acts as a wrapper around Wimp_Extend 13 Admin: Tested on Raspberry Pi Wimp_ReadSysInfo 2 change should fix issue reported on forums with software unexpectedly using low-res sprites or failing altogether: http://www.riscosopen.org/forum/forums/4/topics/2274 Tagged as Wimp-5_35
Implement sprite translation table caching Detail: This set of changes allows the Wimp to cache the last-used translation table, and cleans up some instances where translation tables were being generated and then not used s/Wimp01 - Expand selecttable_args to store all 8 registers needed by ColourTrans_GenerateTable. Add 1K of space for caching the palette that the cached translation table was generated from. Remove unused spriteX, spriteY variables. s/Wimp04 - Split cachespritedata in two. cachespritedata now only caches the basic information, while the new cachespritepixtable rotuine will generate a translation table (shaded/inverted if required). This allows table generation to be deferred until we're just about to render the sprite, ensuring that the table isn't generated only to not be used. Also updated icon sprite rendering to check the sprite is within the graphics window before attempting to render it, allowing removal of one more case where tables can be needlessly generated. s/NewSWIs, s/Wimp09 - Change ADR to ADRL s/Tiling, s/Tiling3D - Use cachespritepixtable when needed Admin: Tested on Iyonix, BB-xM, StrongARM RiscPC Tagged as Wimp-5_36
Fix to build with HdrSrc-2_42. Use OS_SpriteOp 65 where possible. Detail: s/Wimp01 - Update Wimp_SpriteOp handler to cope with the new SpriteReason_BadReasonCode value. Initialise unused bits of spritebits to 1 so that it acts as a whitelist, only allowing through operations that we know are safe. s/Tiling3D - Use OS_SpriteOp 65 for drawing tiled window backgrounds. Softload versions will fall back to using the old manual tiling code if OS_SpriteOp 65 is unavailable. s/Wimp10 - Use OS_SpriteOp 65 for drawing the tiled sprites that make up scrollbar wells and bars. Falls back to manual tiling in softload versions. Admin: Tested on Iyonix, BB-xM Requires HdrSrc-2_42 Tagged as Wimp-5_37
Disallow Wimp_SpriteOp 38 (create/remove alpha) Detail: - s/Wimp01 - Add OS_SpriteOp 38 (create/remove alpha) to the list of banned SpriteOp's for Wimp_SpriteOp. OS_SpriteOp 38 is almost always guaranteed to modify the target sprite, and so in keeping with other sprite modification ops it shouldn't be allowed via Wimp_SpriteOp. Admin: Tested on BB-xM Tagged as Wimp-5_38
Protect memory above MemoryLimit being nuked when starting a task Detail: s/Wimp08s - Improve testapplication to detect situations where data is being stored above MemoryLimit, e.g. if a C app uses system() to issue *WimpTask Usually the CAO check will detect this kind of situation, except for the case where a single-tasking app issues *WimpTask - in which case the CAO will get reset to the Wimp module due to ModHandReason_Enter being used to get into USR mode so a temp parent task can be created Wimp_SlotSize checks MemoryLimit against ApplicationSpaceSize before allowing the wimpslot to be resized, so it seems to be a bit of an oversight that the task startup code wasn't doing the same Admin: Tested on BB-xM Fixes ticket #279: https://www.riscosopen.org/tracker/tickets/279 Tagged as Wimp-5_39
Fix *WimpMode/Wimp_SetMode to return an error when given a bad mode selector block. Re-read configured mode on Sevice_Reset. Detail: s/Wimp01 - Reinitialise currentmode on Service_Reset in order to get the correct mode in the case of a GraphicsV driver overriding it (driver may not have been initialised at the time of the first call in module init). Add a bit more mode debugging and ensure ValidateAddress code completely removed under Medusa. s/Wimp02 - Issue OS_CheckModeValid in validatemode so we can detect cases where a valid looking mode selector block doesn't actually map to a mode definition. Add more mode debugging code. Admin: Tested on Raspberry Pi Fixes issue where "F12 -> *BASIC -> MODE 0 -> QUIT -> return" wouldn't restore screen mode correctly if currentmode had been set to a bad mode selector (e.g. after a CMOS reset nukes the LoadModeFile command), due to WimpMode's lack of error checking Note that this merely prevents currentmode being set to a bad mode at the time of *WimpMode/Wimp_SetMode - if a mode which is valid suddenly becomes invalid (e.g. due to loading a new MDF but not reselecting a valid wimp mode) then the Wimp will still fail to set a sensible mode on return to the desktop. Tagged as Wimp-5_40
Fix for missing window backgrounds/scroll bars when tiled sprite op not supported For the backgrounds, the code was switched with 'standalone' however the Wimp actively wipes SA_FLAGS in its makefile so the standalone switch is always false during the install phase of a disc build. Also, the standalone switch is used to include resources which are ordinarily handled by the boot sequence prefixing the WindowManager$Path rather than using ResourceFS. For the scroll bars, the decision to plot manually was being made by looking at the V flag on return from Tool_SpriteOp, except that that function uses EntryS/EXITS so the caller can't see the return flags. Added new switch CanTileManually, removed 0 use tilewithspriteops switch. Changed single use of NoFontBodge switch to use preferred 'outlinefont'. Tested on RISC OS 4.02. Tagged as Wimp-5_41
Fix for incorrect names on pinned windows The post increment of R14 when looking for a control/space terminator meant that the search for a leafname started one too far along. So in the situation where memory contained something like <window_title><null><dot><garbage> the code would pick up the dot and try to use <garbage> as a leafname. Submission from Fred Graute. Fix for ticket #244. Tagged as Wimp-5_42
Fix G16 modes Detail: s/Wimp02 - With Kernel-5_35-4_79_2_210 and later, the greyscale palette flag updates in real time to reflect the current state of the palette. Therefore we must read the state of the flag before we set our colour palette, otherwise we won't know that we need to apply the greyscale fixup afterwards. Admin: Tested on BB-xM Tagged as Wimp-5_43
Add definitions of button types 11/14/15 Button type 11 was added in 1988 so is about time it had a symbol to refer to it in the sources. Added & used said symbols. Removed 'DoubleIcon' switch, prototype button type 12. Built binary identical module, not tested. Not tagged
Fix for incorrect menu widths in system font Width counting of menus in the system font would continue until a control terminator was found, however in the case of a non indirected menu entry of exactly 12 characters there is no terminator, so the menu would be too wide (by however many non terminator bytes happened to follow the menu definition in memory). This would normally end up 16 OS units too wide (because it'd encounter a zero after the menu items flags of the next menu entry). Tagged as Wimp-5_44
Fix for background colour too light on non-bordered icons Wimp04.s: Line 991, a register fumble meant the special case check (when the icon background colour equals the window work area colour) always failed so the icon background was lightened. Removed unnecessary ADR. Wimp10.s: Function getborder() made more readable by use of symbols instead of magic numbers Fixes ticket #395 reported by Paul Reuvers. Tagged as Wimp-5_45
Fix to warning Detail: Previous test for include order of Hdr:Services and Hdr:Wimp was broken. See HdrSrc 2.46 for the other half of this fix. Tagged as Wimp-5_46
Add ptr_drop to the sprite pool This is a left handed pointer to signify a drag and drop operation in progress. The sprite makes use of the mask to define the hotspot to be the tip of the arrow, for Wimp/SpriteExtends that understand that. Propagated the hotspot definition on ptr_write to the other sprite sets, previously it was only in the Iyonix theme. Missing ptr_menu and friends added to Morris theme. Made file_ffb more distinct from the other system files in Ursula theme. Tagged as Wimp-5_47
Logs for castle/RiscOS/Sources/FileSys/ADFS/ADFSFiler from ADFSFiler-1_06 to ADFSFiler-1_08
Import of alternate sprites for Ursula and Morris4 themes Makefile changed to pick the sprite from ${USERIF}. New target 'ThemeDefs' for installing the copy on disc. Tagged as ADFSFiler-1_07
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
Logs for castle/RiscOS/Sources/FileSys/CDFS/CDFS from CDFS-2_57 to CDFS-2_61
Correction to error number &1089E is in the allocation for ADFS (filing system 8) not CDFS. Tagged as CDFS-2_58
Replace indexes into PVD with sensible names All references into the PVD now use defines rather than mystic numbers. Fix in CutSpace for 2 letter CD titles being cropped to 1 letter. Tested with 2 letter CD ISO and with a photo CD/ISO9660/CD-I test disc. Tagged as CDFS-2_59
Various CDFS enhancements * Increase BGET/BPUT buffer declared to FileSwitch to 2k to match the natural sector size (FileSwitch has been able to support this since version 2.28) * Remove local debug macros, use those from NDRDebug instead * Change to use SETV/CLRV macros now the ones in HdrSrc are 26/32 neutral * Clarify those situations where LBA mode is being selected by using symbol 'LBAFormat' * Extend *WHICHDISC to allow an optional drive number to be provided (the code has existed for years, but the GSTrans flags and help denied its use) Tagged as CDFS-2_60
Add support for Joliet format CD-ROMs hdr/Hashes s/Directory s/EntryFile s/FileMan s/Filer s/Free - mass search and replace of lots of poorly named definitions, removing unused ones, creating implicit ones hdr/MyMacros - shuffle some registers in ConvertToArchyDate to save one temporary so it can be used for something else - moved ReplaceBadCharacters here hdr/Options - extra debug option s/DiscOp - add Joliet, rename buffer indicies per hdr/Hashes - the fallback filetype assignment (when neither the ARCHIMEDES system extension nor MimeMap can help) can now be overridden by setting CDFS$DefaultType (which defaults to &FFD) s/SWI - remove DAT<->MPEG mapping from the internal mapping table s/Variables - trim out unused SWI_buffer reservation Tested with valid ISO/Joliet/RockRidge supported combinations, documented in Docs/Combos, and accompanying test ISO images now stored there. Tested with CD-I format disc 'Jigsaw' from Britannica. Tested with High Sierra format disc 'Kings Quest V'. Tested with photo CD sampler from Kodak. Tagged as CDFS-2_61
Logs for castle/RiscOS/Sources/FileSys/CDFS/CDFSFiler from CDFSFiler-2_48 to CDFSFiler-2_49
Build fix Hdr:Services moved up above Hdr:Wimp. Tagged as CDFSFiler-2_49
Logs for castle/RiscOS/Sources/FileSys/FileCore from FileCore-3_61 to FileCore-3_66
Minor tidy ups Service call table made unconditional. Typo in Hdr:FileCore corrected. Comments improved, and other misc housekeeping. Tagged as FileCore-3_62
Add support for 2k and 4k sector sizes s/Commands: Make sure the defect list (via *DEFECT) does a read/modify/write of the boot block on 2k and 4k drives. The checksum generation code was largely common and although commented to be called as though it was common wasn't actually due to a cut and paste mistake on label 37. Deleted common/uncalled code. s/DebugOpts; s/FileCore15: Peripheral changes. s/FileCore20: Read in the defect list via an intermediate buffer then copy out into the dynamic area. s/FileCore70: Declare the buffer size as 4k to FileSwitch, internally FileCore expresses this in a single byte * 32 so is now at the limit of the range of FcbBufSz. s/FileCore80: Perform transfers in the foreground when the sector size exceeds FileCore's 1k buffers. It's not worth bothering. s/FormSWIs; s/Identify: Vet and reject attempts to layout invalid zone/sector size combos (see Doc/1Zone). Doc/MiscOp: Correct a couple of calculation mistakes. Doc/1Zone: New documentation detailing the possible valid combinations of a 1 zone fixed disc, and why for 2k and 4k sectors this is rejected. Test/BigSectors: Patch to apply to RAMFS to make it a 4k filing system. Note, the smallest 2 zone RAM disc with 4k sectors is 4052kB, in which case the map is at +3F0000; copy at +3F2000; root directory object at +3F4000. Tagged as FileCore-3_63
Support the Raspberry Pi model B+ Detail: There's some questionable code in DoSwi[Sector]DiscOp[64] where it calls PollChange in an apparent attempt to support the ADFS floppy state machine. In the no-card-detect SDFS case, we can detect from a card's state whether it has been changed or not; to be able to signal this to software that cares about such things, we increment the sequence number late in the process. The downside is that when the card *has* changed, two consecutive PollChanged calls will differ from the steady state: the first because MaybeChanged is signalled, the second because the sequence number mismatches. DetermineDiscType didn't handle this gracefully, ending up pointing off the internal array of disc records, resulting in a string of gibberish when canonicalising a drive-based file spec. Fixed by having DetermineDiscType double-check that the drive is not empty. Fixed UpCall_MediaNotPresent and UpCall_MediaNotKnown to actually use the media type string from MiscOp 4. For example, you'll now see "Please insert card 'RISCOSpi'" being generated by the Wimp under SDFS. Improved documentation of MiscOps 4 and 5. Admin: Already in use in RC12a. Tagged as FileCore-3_64
Fix abort affecting Raspberry Pi B+ and Raspberry Pi 2 Detail: These two boards don't have functional card detect lines on their microSD slots, so follow a different code path from most other RISC OS platforms. There was an issue when you accessed an object (other than the root directory) for which it (if it was a directory) or any of its parent directories were not in the directory cache, and it is specified by reference to disc name rather than drive number, and where the disc is not currently in a drive (or it's in a drive but hasn't been mounted since it was inserted). The additional PollChange inserted by DiscOp with a specified boot block (as used to identify the disc format when scanning drives to see if the disc in each drive has changed) which was intended to support some ADFS floppy drives had the side-effect with SDFS-type card-detect-less change detection (which has to wait until at least one DiscOp has been issued before it can tell if the card has changed) that FileCore's disc and drive records became unlinked part-way through the FullLookup routine. In later subroutines, this meant we ended up misidentifying the controller to which the disc was attached, and because SDFS didn't (until recently) have any hard discs, the hard disc controller was uninitialised, resulting in a data abort. This is fixed by making WhatDisc check for whether the disc record it's about to return has been delinked from the drive record, and repeat the process if so. Also removed some dead code (an alternate entry to WhatDiscCommon) while I was at it. Admin: Tested on Raspberry Pi B+ and 2. Tagged as FileCore-3_65
Fix stack imbalance in big directory error handling Detail: s/BigDirCode - Fix stack imbalance in GrowBigDir when DefaultMoveData returns an error Admin: Tested on Raspberry Pi Tagged as FileCore-3_66
Logs for castle/RiscOS/Sources/FileSys/FileSwitch from FileSwitch-2_82 to FileSwitch-2_83
Fix buffer overflow in *cat when dealing with long paths. Fix spurious errors when examining files with certain load addresses Detail: s/CtrlUtils - Increase MaxFilenameSpace (used to reserve stack space for *cat directory path) from 400 bytes to StaticName_length (i.e. 1K) s/FileTypes - Avoid IsFileTyped erroneously returning with V set if r2 is within a certain range (e.g. &7ff00000). Now all exits go via code that ensures V is clear. Admin: Tested on Raspberry Pi Tagged as FileSwitch-2_83
Logs for castle/RiscOS/Sources/FileSys/FSLock from FSLock-1_22 to FSLock-1_24
Change to use objasm Previously this component relied on BASIC to assemble the module (and patch in the default password etc). Instead, use objasm so we can pull in all the normal system defines and make use of it's stricter checking. A new tool "scrambler" performs the operation of patching in the default password. Notes - This is a literal translation of former 'FSLockSRC', bugs and all. Put several unused files in the attic. Tested in an IOMD ROM. Tagged as FSLock-1_23
Fix some bugs, tidy up a bit Bugs - Fix data abort when entering the password at the command prompt, OS_ReadLine with flags in R0 on a 32 bit system treats them as an address - Correct mode change when sulking to use the right CPSR_c value (was using mode %1111 for ABT32 when should be %10111 Tidying - no need to use run time checks for 26 or 32 bit now we have sight of No32bitCode and No26bitCode switches - trim some REM's left over from conversion from BASIC - escape '$' in resource name - use read_CMOS function in FSLock_Init - use selective I cache flush rather than whole world - use CLRV and SETV macros - use ASCII_LowerCase macros Tested in an IOMD ROM, no longer data aborts with FSLock_Unlock command, binary inspected at key sites in a 26 bit version too but not tested. Tagged as FSLock-1_24
Logs for castle/RiscOS/Sources/FileSys/ImageFS/DOSFS from DOSFS-1_01 to DOSFS-1_08
Fix divide-by-zero bug Detail: Somewhere in the process of adding FAT16/FAT32 support, a bug was was introduced where an attempt was made to calculate the number of sectors in a cluster before the cluster size (in bytes) had been determined. This affected invalid (e.g. blank) image files, as well as old 160K/320K DOS floppies that aren't supposed to contain a valid boot block. Admin: Issue raised by the Raspberry Pi NOOBS team when they failed to set up the DOS partition where FileCore was expecting it to be. Tagged as DOSFS-1_02
Fix a few null pointer dereferences in dprintf() statements DOSdirs.c: be more careful about %s of NULL pointers DOSFS.c: don't waste time strcmp() of PCMCIA format name when you can compare by index Debug version built, less oflaoflaolfa now. Tagged as DOSFS-1_03
Don't subscribe to service calls you do nothing with 0x42 and 0x68 removed from service call table and service call handler. Tagged as DOSFS-1_04
Added some doxygen comments Also corrected various confusions about NULL (a pointer) and the ASCII character 0. Reindented consistently. Tagged as DOSFS-1_05
Revise filename shortening rules The rules DOSFS used to create the short name version of a long filename were quite wide of the recommendations from Microsoft. This causes problems in particular with bootloaders that are a little more simplistic and use the short name form, only to find "BOOTCODE.BIN" has been replaced by "BOOTCO~1.BIN" by DOSFS. Also, the long filename entried created for new long filenames left the reserved fields unset. Some of these seem to have special meanings to Windows which faults them ("extended attribute handle invalid") when running chkdsk. DOSnaming.c: replaced the shorten_lfn function, sprinkled in a few token consts, set the reserved fields in long file names to 0 DOSclusters.c/OpsFunc.c/OpsFile.c: remove shorttemp[14] no longer needed, simplify sprintf/memcpy/memcpy into a single sprintf DOSFS.h: familiar MIN/MAX maxros added Tested in isolation in harness "test/shorten" and comparing floppy discs generated with "test/shortgen" from Windows and DOSFS. Fixes ticket #313. Tagged as DOSFS-1_06
Change last couple of uses of trace macros to use DebugLib This town ain't big enough for the two of us. Tagged as DOSFS-1_07
Fixes to stop DOSFS erroneously claiming partitions that aren't valid In particular with ADFS, attempting to format an ATA drive purchased from a PC box shifter would often lead to the machine hanging on startup meaning you can't get as far as running !HForm. Further analysis showed that the problem was caused by DOSFS latching onto the PC partition table and attempting to claim the Service_IdentifyDisc. This would then be followed by trying to load the FAT via FileCore in situations where the FAT to load were bigger than the disc size represented by the disc record FileCore has attached to the disc. This primarily concerns things with partition tables (like a fixed disc). Things got off to a bad start, some inaccurate keyboard mashing meant the definition for DOS_bootsector added up to 520 bytes, and this was loaded into a malloc'd 512 byte buffer. The representation of the disc size (bbsize) was being kept in a signed integer, so the single (rather weak) test of checking the boot block declared size (bbsize) being greater than the partition declared size (winisize) would always be accepted for partitions > 2GB. Additionally, the bbsize was multiplied by DOSsecsize and performed as a byte compare rather than a sector compare, leading to overflow. Invariably this check would pass (either due to the sign bit being set, or overflow) and DOSFS would claim the service and go ahead and try to read in an unfeasibly large FAT. DOSFS is now much more strict about checking * be sure bbsize can fit in the partition by comparing as unsigned number of sectors, convert to bytes later * be sure bbsize is non zero * be sure the FAT isn't bigger than bbsize * be sure the root directory isn't bigger than bbsize only then claim the service. DOSshape.h: Correct the size of the DOS_bootsector back to 512 bytes. ADFSshape.h: Remove unused grubby FileCore constants, especially as we're not likely to encounter any 256B/sector drives! Add the extra disc record fields to get us up to 'BigDisc' in FileCore parlance. DOSFS.c: If the rootsize is zero, have a go at using the FAT32 ones instead. Previously this logic only triggered if the FAT32 extended signature was present, but that signature is for the fields that follow it - the FAT size preceeds. Only update the return variables if we're confident we're going to claim the service. Remove dead variable 'notracks'. Tested on a sample of 4 ATA drives > 10GB from different vendors previously used in PCs. All 4 used to hang when installed, now they do not. Tagged as DOSFS-1_08
Logs for castle/RiscOS/Sources/FileSys/NetFS/NetFiler from NetFiler-0_79 to NetFiler-0_80
Build fix Hdr:Services moved up above Hdr:Wimp. Tagged as NetFiler-0_80
Logs for castle/RiscOS/Sources/FileSys/RAMFS/RAMFS from RAMFS-2_28 to RAMFS-2_29
Adapt to work when Min_Zones is not 1 The code assumed Min_Zones was 1, despite offering a variable suggesting it could be changed arbitrarily. It now can be. Removed the unnecessary duplicate empty defect list. Tagged as RAMFS-2_29
Logs for castle/RiscOS/Sources/FileSys/RAMFS/RAMFSFiler from RAMFSFiler-0_38 to RAMFSFiler-0_39
Build fix Hdr:Services moved up above Hdr:Wimp. Tagged as RAMFSFiler-0_39
Logs for castle/RiscOS/Sources/FileSys/ResourceFS/ResFiler from ResFiler-0_19 to ResFiler-0_20
Build fix Hdr:Services moved up above Hdr:Wimp. Tagged as ResFiler-0_20
Logs for castle/RiscOS/Sources/FileSys/SCSIFS/SCSIFS from SCSIFS-1_26 to SCSIFS-1_28
Minor cleanups * Upcall and OsByte symbols used from central headers * T and F swapped for ObjAsm built in variables * Deleted some unused CPU and hardware definitions * Put unused files in the attic Tested briefly, still worked. Tagged as SCSIFS-1_27
Internationalised In addition - simplify WrDec to just use OS_ConvertCardinal1 hence not need a division routine - change the Hide check to at least use Choices: correctly, if you must - macros Text and baddr eliminated Tested in an OMAP3 ROM build. Tagged as SCSIFS-1_28
Logs for castle/RiscOS/Sources/HAL/Tungsten from Tungsten-0_46 to Tungsten-0_57
Add RTC device HAL RTC device added after probing IIC address &D0. Moved CallOS macro into a header. Tagged as Tungsten-0_47
Remove obsolete stub HAL video API implementation Detail: s/Boot, s/Bideo - Removed obsolete HAL video API implementation. A stub implementation is no longer required for systems that have a GraphicsV driver in a module, and can even cause problems if the OS decides to use the HAL implementation instead of the module one. Admin: Tested in Tungsten ROM softload Requires Kernel-5_35-4_79_2_203 Tagged as Tungsten-0_48
Fix to chained IIC transfers Detail: s/IIC - Make sure next_transaction initialises R4 (transfer length) before calling next_read/next_write. Without this the usual method of performing multi-byte writes (transaction 1: write 1 byte containing address, transaction 2: write N bytes of data) will fail and be left in a zombie state due to a stop bit being sent after the first byte of the 2nd transaction. A similar situation is possible if you want to perform a multi-byte read, split into multiple buffers. Admin: Tested in Iyonix ROM softload OS_NVMemory 4 no longer hangs with transfer lengths > 1 Tagged as Tungsten-0_49
Changed to use simpler HAL_IICDevice Also now range checks the bus argument. Tagged as Tungsten-0_50
Propagate fix from IOMD-0_31 Got the IIC transfer data offset wrong, harmless in this HAL since the stack already had to have space for 2 complete transfers. Not tested. Tagged as Tungsten-0_51
Trim NullEntries from end of HAL table Built, but not tested. Tagged as Tungsten-0_52
Delete some dead code, update docs doc/PCI_HALAPI: Updated docs for PCI_HALAPI a bit. hdr/80321: Typo. hdr/StaticWS: 2 dead variables removed. s/PCIasm HAL_PCI[Read|Write]IO[Byte|Halfword|Word] switched out as they're never used and don't appear in the HAL entry points table either. Unused pci_device_for_int and pci_found_vram deleted. Added a couple of function block comments, and other general commenting. Unused HAL_PCISlotNumber deleted. Tagged as Tungsten-0_53
Minor HAL API corrections HAL_HardwareInfo - as word 0 specified that no IOMD or VIDC was present, don't waste time reporting anything in word 2. HAL_PhysInfo - report the ROM range as an inclusive range for op 2, same as the RAM is for op 1. Requires Kernel 4.79.2.248 to get the corresponding ROM range change. Tagged as Tungsten-0_54
Use KbdFlags from OSEntries header Exposed possible return with reserved bit 8 set when enter was pressed. Tagged as Tungsten-0_55
Repaired flash programmer source to correctly hunt for and use HAL strap data Detail: Admin: tested in iyonix from fresh dev build Tagged as Tungsten-0_56
Error message updated Tagged as Tungsten-0_57
Logs for bsd/RiscOS/Sources/HWSupport/CD/SCSI from SCSI-0_03 to SCSI-0_04
Let through mode sense page 1 sizes other than 10 From SCSI standard MMC-2 onwards the read/write error recovery parameters page has been defined with a page length of 10, however earlier editions (and drafts) used a page length of 6. Rather than rejecting drives built on these standards, since we only want the read retry count at offset 3, permit page 1 responses of either 10 or 6 bytes, reject < 6. driver.c - change length check to 6 - adjust comments/debug to remind the reader why cmodule.c - fix bug which led to a data abort in MessageTrans, when RAM loaded and the number of CD drives is configured as 0 (or CDDriver is unplugged) and so registration fails, the messages file would be deregistered without first closing the file, leaving MessageTrans' descriptor linked list pointing at non existant messages Tested with a Ricoh MP7040S on the Acorn SCSI podule. Tagged as SCSI-0_04
Logs for castle/RiscOS/Sources/HWSupport/DMA from DMA-0_20 to DMA-0_21
Fix sync callbacks for list-type DMA channels. Improve handling of Service_PreReset. Detail: s/DMA - Fixed sync callback logic of list-type channels to match that used by buffer-type channels. Old logic would result in too many sync callbacks being made at the start of a transfer, followed by dmar_Gap becoming negative and (potentially) no sync callbacks being made for the remainder of the transfer. s/Front, s/ModHead, s/SWI - Make SWI handler refuse to service any SWI following Service_PreReset. This helps avoid bad things happening should a client try to access DMA channels/transfers after we've reset everything during PreReset (although really it's our own fault for not telling the clients about the controller reset) Resources/UK/Messages, s/Errors - Define the error that we return when called following Service_PreReset. Admin: Tested on Raspberry Pi Tagged as DMA-0_21
Logs for mixed/RiscOS/Sources/HWSupport/FPASC from FPASC-4_32 to FPASC-4_33
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Tagged as FPASC-4_33
Logs for castle/RiscOS/Sources/HWSupport/PCI from PCI-0_11 to PCI-0_13
Fix for nonsense error and implement a 'todo' action An (unlikely) error during ScanBus would end up with an error block pointing to &00000004 as although the V bit was carefully preserved, R0 wasn't. Add a RAM flag to remember if the module is operating in no-PCI-bus mode (for PCI_RAMAlloc and PCI_RAMFree) so that the bus access SWIs can return a meaningful error. Resources/UK/Messages, Errors.s: New error message "NoPCIBus". GetAll.s: Remove unnecessary header includes, and use {FALSE} and {TRUE}. Module.s: Record result of OS_ReadSysInfo call to determine if there's a PCI bus or not. Do fail to initialise in the RAM loading case if ResourceFS register fails. Scan.s: Preserve R0 if ScanBus returns an error. Add some comments. Interface.s: Inspect flag and report error for those SWIs that are harmful when no bus exists, anything going via ValidateHandle doesn't need to since pci_handles will be 0 in that case. Relocate FindFreeHandle to Scan.s. Tested briefly with and without the "got PCI" bit set, showing the appropriate error being returned. Tagged as PCI-0_12
Make PCI_MemoryWrite more useful Previously the behaviour was thus MemoryRead for (i = 0; i < wordcount; i++) buffer[i] = *pcimem MemoryWrite for (i = 0; i < wordcount; i++) pcimem[i] = *buffer so in the write case the buffer was largely redundant and the SWI would data abort when copying > 1MB as it fell outside the temporary IO assignment from OS_Memory 14. Now it does MemoryWrite for (i = 0; i < wordcount; i++) *pcimem = buffer[i] the most common case where wordcount = 1 is unchanged, and MemoryRead is unchanged. Also - sprinkle in some more comments - make use of mem_to_phys_offset that the HAL is kind enough to have given us, even if it is 0 - update the capability id bits from PCI-SIG ECN from April 2010 Tested with a parallel port PCI card, which reported it had vendor specific capabilities (InfCap09). Tagged as PCI-0_13
Logs for castle/RiscOS/Sources/HWSupport/Podule from Podule-1_69 to Podule-1_70
Fix to acceptable rom section types in R3 Repair a couple of deviations from PRM 5a-628 Extension ROM sections numbers are limited to -16 (was -32). When a hardware base address is given it may be the slow/medium/fast or synchronous base (was only synchronous). Also Recode the 32 bit mode check to allow running on pre ARMv3 (pointless, but allows an assembly time check to be removed) Save a couple of instructions elsewhere Always take TokHelpSrc for help, since the build system now always generates it Built, but not tested. Tagged as Podule-1_70
Logs for castle/RiscOS/Sources/HWSupport/SCSI/SCSIDriver from SCSIDriver-1_16 to SCSIDriver-1_18
Add support to loader for 128k EPROMs Contrary to the silkscreen (and logically, based on the number of pins on the chip socket) the SCSI podule supports EPROMs up to 1Mbit. This is confirmed on page 72 of the user manual. Also, correct failure to lookup the legacy IRQ semaphore location due to not initialising R0=6. Tested in Acorn SCSI podule on RISC OS 3.70 and 5.20. Tagged as SCSIDriver-1_17
Update SCSI podule driver for more recent SCSI switchers The SCSISoftWD33C93 driver was used as a test bed for the SCSI switcher, but a typo in the supported features mask meant that it didn't work any longer after SCSI switch 2.01 (version 2.00 didn't check the features mask, hence it worked). Makefile * Can now produce either SCSILog or standalone SCSIDriver or SCSISoft module, based on the TARGET and/or COMPONENT SCSIEquates * Shuffle some common equates around so the same header can be used with SCSILog and SCSIDriver SCSIMacros * A cut and paste fumble meant the DisableIRQs macro actually left them enabled * Lined up SCSIDriver * Changed to accept podule numbers 0-7 for Risc PC (was 0-3) * Get the base address from Podule manager rather than IOC era logical addresses * Chopped out some long redundant switches * Use PSR manipulation macros to allow 26 or 26/32 or 32 bit compatible variants * Fix typo in features mask to &22 (was &21) * Use PLP after PHPSEI rather than RestPSR, the preserve value from PHPSEI is not guaranteed RestPSR compatible * Don't re-register a second time on Service_Reset, this is not needed in the loaded-from-ROM; loaded-from-disc; or reinit cases (since the module initialisation already registers), and don't wipe the workspace when a client to SCSI switcher (it get's very confused as transactions are in play) SCSILog * Delete defines now taken from SCSIEquates * Get the base address from Podule manager rather than IOC era logical addresses * Changed to accept podule numbers 0-7 for Risc PC (was 0-3) Requires HdrSrc-2_32 Tested on AKA31 podule, on a StrongARM RISC OS 3.70, and a StrongARM RISC OS 5.20, in both SCSISoftWD33C93 and SCSIDriver configurations connected to a CD-ROM drive and harddisc, copying the contents of a random CD onto the harddisc. Tagged as SCSIDriver-1_18
Logs for mixed/RiscOS/Sources/HWSupport/SCSI/SCSISoftUSB from SCSISoftUSB-0_17 to SCSISoftUSB-0_19
Open and finish fixes Reorder the open pipe special fields to match those in the USB driver to side step the DeviceFS parsing problem prior to DeviceFS-0_69 Make the upcall handler robust to device streams being shut, see http://www.riscosopen.org/forum/forums/3/topics/1970 for the gritty details. Tagged as SCSISoftUSB-0_18
Fixes and improvements to SCSI request padding Detail: In order to keep block-based SCSI devices happy, the data transfer length must be a multiple of the block size. Unfortunately the RISC OS SCSI API considers the act of padding requests out to the correct size to be a driver problem rather than a client problem, and the USB SCSI spec doesn't provide a guaranteed way for a host to determine the correct transfer length for a command which has failed. To cope with this SCSISoftUSB contains some code to pad block read/write transfer lengths out to a multiple of the USB packet size. For high-speed USB devices using standard 512 byte sector sizes this works fine, but for low-speed devices or devices with less common block sizes it falls short. To rectify this SCSISoftUSB now listens out for any CAPACITY commands which are sent to the device and peeks at the result to determine the correct block size to use. Except for rare cases where the client takes a random guess at the block size this should allow SCSISoftUSB to get the correct block size itself without having to implement lots of extra logic to deal with devices being slow to initialise, etc. Additionally the padding code has been rewritten to ensure writes are padded with nulls (previously would read off the end of the supplied source data), and excess read bytes are discarded (previously would write off the end of the destination buffer) File changes: c/glue, h/global Admin: Tested on Raspberry Pi USB2 devices forced to run at USB1 speed now behave themselves during non-sector sized filecore ops Tagged as SCSISoftUSB-0_19
Logs for castle/RiscOS/Sources/HWSupport/SCSI/SCSISwitch from SCSISwitch-2_09 to SCSISwitch-2_11
Report something other than 'unknown' for capacity in *DEVICES Appears to be accidentally commented out since 2.05, both determinedevice() and scsi_determine_device() now follow the same logic. Previously no capacity SCSI op was made, hence -1 -1 translated to 'unknown'. Makefile simplified based on more recent CModule fragment additions. CMHG file lined up nicely! Tested briefly on BBxM over USB, and on Acorn AKA31 podule. Tagged as SCSISwitch-2_10
Internationalised Also lower cased the 'k' of kilobytes to match the kernel and SI. Tagged as SCSISwitch-2_11
Logs for castle/RiscOS/Sources/HWSupport/SerMouse from SerMouse-0_09 to SerMouse-0_10
Fix for null pointer dereference when no Serial device While not addressing ticket #401 per se, we can at least not give the oflaofla error when no Serial device is found in DeviceFS. Tagged as SerMouse-0_10
Logs for castle/RiscOS/Sources/HWSupport/Sound/Sound0Trid from Sound0Trid-1_67 to Sound0Trid-1_68
Define Service_Sound reason code for broadcasting automatic tuning state Detail: hdr/Sound - Add Service_SoundAutoTune definition, which SoundChannels will issue whenever automatic tuning is enabled or disabled Admin: Untested Matches changed made in Sound0HAL-1_77 Tagged as Sound0Trid-1_68
Logs for castle/RiscOS/Sources/HWSupport/Sound/Sound1 from Sound1-1_38 to Sound1-1_40
Issue Service_SoundAutoTune when automatic tuning enable/disable state changes Detail: s/Sound1 - Change the Sound_Tuning implementation so that Service_SoundAutoTune will be issued whenever automatic tuning is turned on or off. Allow automatic tuning to be used on systems without 16 bit sound; we just calculate the frequency manually from the sample period. Fix 64 bit multiply in SoundShared; MLAS does not set the carry flag to anything useful Admin: Tested on BB-xM Tagged as Sound1-1_39
Cleanup pass Detail: s/Sound1 - Follow the PRM's instructions and issue Sound_Mode before Sound_SampleRate, instead of assuming Sound_SampleRate 1 would be safe on systems without 16 bit sound. Single-reg LDM/STM swapped for Pull/Push to fix assembler warnings. Admin: Tested on BB-xM Tagged as Sound1-1_40
Logs for castle/RiscOS/Sources/HWSupport/Sound/Sound2 from Sound2-1_30 to Sound2-1_32
Automatically adjust tempo for current sample rate + DMA buffer size Detail: The Sound_QTempo SWI has always been defined as accepting a tempo value that's relative to the number of beats per centisecond. However the implementation has never attempted to adjust the value to match the current sound system settings; it's always worked under the assumption that one buffer = one centisecond. For default sound settings on an Archimedes this would have been almost correct, but for modern machines with different sample rates or buffer sizes it's generally wrong. This change rectifies that, by taking whatever tempo value was supplied to the SWI and adjusting it behind the scenes so that the core scheduling code uses the correct beat increment. For compatibility with existing software which may be relying on the fact that tempo was never dealt with correctly, this new behaviour can be disabled and the old behaviour used instead simply by disabling automatic tuning via Sound_Tuning. s/Sound2 - As above. Added RecalcTempo routine which is responsible for relculating the internal tempo value whenever the external value changes or the sound system configuration changes. This is called from SoundQTempo whenever the user-facing tempo value changes, and from the service call handler whenever the sound system configuration changes or when automatic tuning is turned on or off. Admin: Tested on BB-xM !Maestro now plays music at the correct speed when switching the sound system through different sample rates This goes part way towards fixing issue #347; fixes for the voice generators are still required: https://www.riscosopen.org/tracker/tickets/347 Tagged as Sound2-1_31
Cleanup pass Detail: s/Sound2 - Follow the PRM's instructions and issue Sound_Mode before Sound_SampleRate, instead of assuming Sound_SampleRate 1 would be safe on systems without 16 bit sound. Admin: Tested on BB-xM Tagged as Sound2-1_32
Logs for castle/RiscOS/Sources/HWSupport/Sound/Voices/Percussion from Percussion-1_15 to Percussion-1_17
Make the voice generator correctly adjust itself for the current sound system configuration Detail: s/Percussion - Similar to StringLib, Percussion uses various accumulator values that were tuned for a 48us sample period an 100Hz buffer fill rate. These values will now be calculated dynamically based around the current sound system configuration, ensuring the correct output is produced across all sensible configurations. Also swapped single-reg LDM/STM for Pull/Push to fix performance warnings from the assembler. Admin: Tested on BB-xM Voices now sound correct at high and low sample rates, small and large buffer sizes Part of the fix for ticket #347: https://www.riscosopen.org/tracker/tickets/347 Tagged as Percussion-1_16
Adjust redundant voice entry PRM 4-13 says it should be LDMFD, whereas the Pull macro will emit something different for 1 register. Lead by example and use an explicit LDMFD. Not tested - this entry point hasn't been used for years. Tagged as Percussion-1_17
Logs for castle/RiscOS/Sources/HWSupport/Sound/Voices/StringLib from StringLib-1_16 to StringLib-1_18
Make the voice generator correctly adjust itself for the current sound system configuration Detail: s/StringLib - The various accumulator values that StringLib's voice generator uses used to assume a 48us sample period and 100Hz buffer fill rate. Now the accumulators will be calculated correctly for the current sound system configuration, ensuring the correct output is produced across all sensible configurations. Also swapped single-reg LDM/STM for Pull/Push to fix performance warnings from the assembler. Admin: Tested on BB-xM Music played through Maestro now sounds correct at high and low sample rates, small and large buffer sizes Part of the fix for ticket #347: https://www.riscosopen.org/tracker/tickets/347 Tagged as StringLib-1_17
Adjust redundant voice entry PRM 4-13 says it should be LDMFD, whereas the Pull macro will emit something different for 1 register. Lead by example and use an explicit LDMFD. Not tested - this entry point hasn't been used for years. Tagged as StringLib-1_18
Logs for castle/RiscOS/Sources/HWSupport/Sound/Voices/WaveSynth from WaveSynth-1_19 to WaveSynth-1_24
Remove 2 dead wave descriptors Tested on IOMD, still went beep after the change. Tagged as WaveSynth-1_20
Fix buffer overflow in Finished code Detail: s/WaveSynth - The main fill routine at Fill0A checks for the end of the buffer before writing any samples, while Finished used to check after writing samples. The wave table pointer is advanced after the samples are written but before Fill0A checks for the end of the buffer, so if the end of the wave table is reached just after the end of the buffer has been reached then the code will branch into Finished and attempt to write past the end of the sound buffer. Admin: Tested on Iyonix Should fix issue reported on forums with WaveTable crashing in the Finished routine: https://www.riscosopen.org/forum/forums/4/topics/2673 Tagged as WaveSynth-1_21
Make wave table segment durations take into account current sound configuration Detail: s/WaveSynth - Introduced a new FixDuration macro to adjust the wave table segment duration values to take into account the current sound sample period (stored values are relative to a 48us period). Swap single reg LDM/STM for Pull/Push macros to fix performance warnings from assembler. Admin: Tested on BB-xM Beep now sounds correct at highest and lowest sample rates Part of the fix for ticket #347: https://www.riscosopen.org/tracker/tickets/347 Tagged as WaveSynth-1_22
More buffer overflow fixes Detail: s/WaveSynth - Although WaveSynth normally outputs samples 4 at a time, the wave table segment can be advanced at any point. If it advances to a valid segment then everything is fine and it will correctly continue from where it left off within a 4-sample block. But if it reaches the end segment then it goes straight to the Finished routine, which assumes a multiple of 4 samples can be written. Fix this by making Finished check for the buffer end before each write. Admin: Tested on BB-xM Should hopefully fix the overflow issues this time: https://www.riscosopen.org/forum/forums/4/topics/2673?page=1#posts-34085 Tagged as WaveSynth-1_23
Adjust redundant voice entry PRM 4-13 says it should be LDMFD, whereas the Pull macro will emit something different for 1 register. Lead by example and use an explicit LDMFD. Not tested - this entry point hasn't been used for years. Tagged as WaveSynth-1_24
Logs for castle/RiscOS/Sources/HWSupport/UnSqzAIF from UnSqzAIF-0_09 to UnSqzAIF-0_10
Internationalised For completeness mainly, though it was not true that the error number 0 english message has hidden - RMREINIT of the module would have revealed the text too. Note, as this module also appears in !System for 3.70 the message includes both token and default text (as HWDep isn't in the global messages in 3.70). Tagged as UnSqzAIF-0_10
Logs for mixed/RiscOS/Sources/HWSupport/USB/NetBSD from NetBSD-0_80 to NetBSD-0_93
Ensure state consistent for restarting a transfer within a callback Merge of code change from revision 1.152 of usbdi.c from NetBSD, function usb_transfer_complete - this just swaps the ordering around to ensure the callback & done are in the right order. Built, but not tested. Tagged as NetBSD-0_81
Merge in latest usbd_new_device() changes from NetBSD Detail: dev/usb/c/usb_subr - Merge in latest usbd_new_device() changes from NetBSD (rev 1.196). This primarily changes around the order of the SET_ADDRESS and descriptor get calls, as well as changing the descriptor get to request 64 bytes of data instead of 8. build/Version - Bump USBDriver version number Admin: Tested on BB-xM, Raspberry Pi, Iyonix ROM softload Fixes issue reported on forums with Raspberry Pi Model A not initialising correctly when connected as a device. Previously it was getting stuck fetching the descriptors after setting the address. http://www.riscosopen.org/forum/forums/5/topics/2534 Tagged as NetBSD-0_82
Missing va_end()'s added Tagged as NetBSD-0_83
Fixes to callback implementation used by HAL drivers Detail: build/c/usbhal - Restructured triggercbs() so that it doesn't use irqsema to prevent callbacks triggering recursively, as this behaviour can be required sometimes (e.g. xfer timeout callback for a blocking xfer that's being performed within the bus explore callback). Instead, a 'callbacks needed' flag is used to decide whether callbacks should be processed, which operates in a similar way to the kernel's CBack_VectorReq flag - once a triggercbs() instance starts processing callbacks, no other calls will process them until a new callback is inserted. Also fixed indexing of the callback array within triggercbs() to correctly deal with wrap-around build/Hdr/usbhal, dev/usb/h/usbhal - Add cbs_needed to workspace Admin: Tested on BB-xM with high processor vectors Fixes hang during boot time keyboard scan that was seen when certain devices were connected Tagged as NetBSD-0_84
Tidy up exported USBDevFS.h Detail: build/h/USBDevFS - Added extra #ifdef guard to allow USBDevFS.h to be safely included by software that uses the BSD USB headers. Add the DeviceFS_CallDevice codes that USBDriver uses. build/h/service - Removed redundant secondary definition of the service call structures which the drivers were using internally build/c/ehcihal - Removed redundant #includes build/c/ehcidriver, build/c/ohcidriver - Use USBDevFS.h instead of service.h build/c/usbmodule - Use USBDevFS.h instead of service.h. Get rid of local DeviceCall definitions and use the ones which are now in USBDevFS.h. Also switched over to using Interface/DevicsFS.h for the main DevicsFS call reason codes, to match the naming convention used by USBDevFS.h (as opposed to the OSLib naming convention that was used previously). Stripped the unused OBSOLETE_SERVICE_CALLS code. build/Makefile - Add usbdi_util.h to the header exports Admin: Tested with building OMAP3, Tungsten & BCM2835 ROMs Builds to binary-identical modules as previous version. Tagged as NetBSD-0_85
Updated to latest usbdevs file from NetBSD Detail: dev/usb/usbdevs - Updated to the latest version from the NetBSD CVS, mainly for several new DisplayLink product IDs. Merged in our TouchBook definitions from rev 1.5, and commented out a couple of duplicate products. dev/usb/c/usb_quirks - Updated to cope with MetaGeek vendor being renamed to Misc build/Version - Bump USBDriver version number Admin: Tested in OMAP3 ROM build Tagged as NetBSD-0_86
Include device speed in *USBDevInfo output. Corrections to header export. Detail: build/c/usbmodule - Improve *USBDevInfo to display the devices connection speed build/h/USBDevFS - Correct device speed listing to match reality build/Version - Bump USBDriver version number Admin: Tested on Raspberry Pi Tagged as NetBSD-0_87
Merge in some EHCI fixes from NetBSD. Other minor changes. Detail: build/Version - Bump EHCIDriver version number build/c/ehcihal, build/c/ehcimodule, build/c/ohcimodule - Use the HAL USB controller type & flag definitions from Hdr:HALEntries instead of using magic numbers build/c/ehcimodule - Avoid double-read of hardware register in debug version of bus_space_read_4(); ensures that we report the value that's actually returned to the driver dev/usb/c/ehci - Merge in the following revisions from NetBSD: - 1.172, 1.173, 1.178, 1.193 - Support for controllers with embedded transaction translators - 1.174 - alloc_sqtd_chain() fix for short packets that end on page boundaries - 1.179 - ehci_set_qh_qtd() fixed to terminate alternate next qTD pointer with EHCI_NULL, not 0 dev/usb/h/ehcireg - Updated to latest NetBSD version (1.34) dev/usb/h/ehcivar - Merge in revision 1.38 (ETTF support) Admin: Tested on BB-xM Tagged as NetBSD-0_88
Update to use rationalised power and overcurrent API OHCIDriver (only) had sketchy support for a HAL based scheme for controlling the port power and monitor overcurrent. However the implementation was limited to supporting the single port required for an embedded product (aka Rhenium in the CVS history). The change makes it follow a model much more akin to the HAL_TimerDevice/HAL_TimerIRQStatus/HAL_TimerIRQClear set of functions. Version: Bumped OHCIDriver and USBDriver version numbers. ohcimodule.c: Use some defines from OsBytes.h. Group the debug variables within the OHCI_DEBUG define so they go away in the release case. Allow for up to 15 ports to be controlled via the revised HAL API, and pass something other than a hardwired controller of 0 when controlling/monitoring power. Enumerate the device numbers for overcurrent monitoring on startup. Deal with the possibility of one (or more) of the device numbers being shared interrupts. Squash a few trivial compiler warnings. ohcimodhead.cmhg: rename the handler/entry to reflect their use for overcurrent ohci.c: Allow for up to 15 ports to be controlled by passing in the port index where needed. usb_subr.c/usbdivar.h: Remove a RISC OS-ism in datatoggle, to converge with NetBSD a bit. ehcivar.h/usb_port.h: Relocate the overrides for mutex_ functions here since this is the only controller using them. Previously when in "usb_port.h" they would indirectly get dragged in ia the nested include in "usb.h". The could in fact now be implemented using SyncLib, an exercise left to the reader. usb.h Merge some of the device classes and other allocations from NetBSD. While it's not been possible to test the revised API, due to not having sight of the original platform on which it was implemented, none of the actively maintained HALs currently use the HAL based power and overcurrent scheme anyway, so the new code never gets called. In that respect, it's no more broken then the previous single port-single controller version. Tagged as NetBSD-0_89
Add some extra SMSC usbdevs From NetBSD revision 1.687, this adds the 9514 hub featured on the Pandaboard. Tested on a Pandaboard rev A3, now named in *USBDEVICES. Tagged as NetBSD-0_90
Use KbdFlags from OSEntries header Exposed possible return with reserved bit 8 set when enter was pressed. Tagged as NetBSD-0_91
Revisit Service_PreReset activity Detail: Recent investigations in stalling of OS_Reset showed that with multiple driver modules it was possible for the monotonic timer to be turned off before the usb system had shut down. Service_PreReset needs a rapid finite response to silence the relevant module's hardware and ensure it cannot intiiate something that could stall the reset process. As a result USBDriver module no longer issues Service_USB_DriverDying in its Service_PreReset response; it merely silences itself and removes itself from any vectors. This EHCIDriver and OHCIDriver modules now only need to silence themselves when receiving Service_PreReset. Admin: tested in iMx6 and iyonix Tagged as NetBSD-0_92
Deregister IRQ handlers in Service_PreReset Detail: build/c/ehcimodule, build/c/ohcimodule - Deregister IRQ handlers in Service_PreReset. Fixes a hang during reset on OMAP4. build/Version - Bump module version numbers for recent changes. Admin: Tested on Pandaboard, Iyonix Tagged as NetBSD-0_93
Logs for castle/RiscOS/Sources/Internat/IntKey from IntKey-0_97 to IntKey-0_98
Build fix Would fail to build with anything other than Keyboard=All since the Pandora key table is only included in that case, yet the code refers to it unconditionally. Wrapped Pandora bits with Keyboard=All switch. Tested briefly in an IOMD ROM with Keyboard=UK. Tagged as IntKey-0_98
Logs for castle/RiscOS/Sources/Internat/Messages from Messages-1_10 to Messages-1_11
Add HWDep to global messages Useful for small/headless modules whose only error message is the one where they kill themselves having not found a hardware dependency. Tagged as Messages-1_11
Logs for castle/RiscOS/Sources/Internat/Territory/Manager from Manager-0_55 to Manager-0_56
Header definition of a collation flag Tagged as Manager-0_56
Logs for castle/RiscOS/Sources/Internat/Territory/Module from Module-0_58 to Module-0_60
Add support for collation with numbers Flag bit 2 to Territory_Collate will now cause the territory module to consider digits 0-9 as though they were cardinals rather than as text. For example, an fl ligature followed by 50 would be considered to be equal to "fl000000050" when in this mode. Test program added to test directory, the algorithm used is based on strnatcmp(). Tagged as Module-0_59
Fix for infinite loop compare the same numbers Messing with the flags in r3 meant the main loop never thought the compare fulfilled the user's request, so tried again... SYS"Territory_Collate",-1,"test1","test1",5 no longer hangs. Tagged as Module-0_60
Logs for castle/RiscOS/Sources/Kernel from Kernel-5_35-4_79_2_190 to Kernel-5_35-4_79_2_263
Back to odd numbered development. Tagged as Kernel-5_35-4_79_2_191
Add system peripheral type NVRAM for some common types/sizes Tagged as Kernel-5_35-4_79_2_192
Announce an RTC sync with a service call Step changes in RealTime are now accompanied by a service call. Note the initial read isn't announced, mainly because this is before the module chain is started so nobody's listening anyway. Tagged as Kernel-5_35-4_79_2_193
Add support for the new RISC OS 5 style sprite mode word. Add partial support for alpha channel sprite masks. Implement OS_ScreenMode reasons 13-15 Detail: ECFShift/ECFYOffset: - hdr/PublicWS - Add ECFShift and ECFYOffset to list of public exports (SpriteExtend was using hardcoded values). Rearrange exports so that VduWorkspace exports are now labelled as such. - hdr/KernelWS - Make sure ECFShift & ECFYOffset match their exported locations - hdr/OSRSI6, s/Middle - Add OS_ReadSysInfo 6 items 83 & 84, for reading ECFYOffset and ECFShift locations Mode flags/VDU variables: - Makefile - Add hdr/VduExt to the C header exports - hdr/VduExt - Get rid of NotRVVTBarWobblyBits macro and defined VDU variables manually so that Hdr2H will handle them. Begin replacing overly generic 'Flag_*' mode flag definitions with 'ModeFlag_*' instead. Define new flags as required by the new screen/sprite modes. Add OS_ScreenMode reason codes and mode selector format (from s.vdu.vdudecl) - NewModes/NEWF2, NewModes/OldPSSrc, NewModes/PSSrc, s.vdu.vdu23, s.vdu.vducursoft, s.vdu.vdudriver, s.vdu.vdugrafg, s.vdu.vdugrafj, s.vdu.vdugrafl, s.vdu.vdumodes, s.vdu.vdupal10, s.vdu.vdupal20, s.vdu.vdupalette, s.vdu.vdupalxx, s.vdu.vduwrch - Renaming Flag_* to ModeFlag_* - s.vdu.vdudecl - Remove OS_ScreenMode reason codes & mode selector format definitions; these are now in hdr/VduExt. Flag_* -> ModeFlag_* renaming. - s.vdu.vdupalxx - Apply a greyscale palette in PV_SetDefaultPalette if the greyscale mode flag is set New sprite types: - s.vdu.vdudriver - Extend GenerateModeSelectorVars to deal with the wide mask flag, 64K sprites, and the new RISC OS 5 sprite mode word format. - s.vdu.vdugrafdec - Store more information about the sprite in the SprReadNColour ... SprLog2BPC block. - s.vdu.vdugrafg - Update SpriteVecHandler to be able to detect whether RISC OS 5 format sprites are allowed palettes. Update SetupSprModeData to store the extra sprite info that's defined in vdugrafdec. Update PutSprite to fault any sprites with wide masks - SpriteExtend must be used for that (once implemented!) - s.vdu.vdugrafh - Update WritePixelColour to avoid temporary poking of NColour VDU variable for 8bpp sprites. Correctly replicate data when writing to RISC OS 5 format sprites. Update ReadPixelMask, WritePixelMask, SpriteMaskAddr, GetMaskspWidth to deal with wide masks. Delete obsolete bounce_new_format_masks routine. - s.vdu.vdugrafi - Comment updated to reflect new reality - s.vdu.vdugrafj - Get rid of unused code block in CreateHeader/PostCreateHeader. Update SanitizeSGetMode to generate RISC OS 5 style sprite mode words where applicable. Update DecideMaskSize to rely on GetMaskspWidth for calculating mask width. - s.vdu.vdugrafl - Update SwitchOutputToSprite/SwitchOutputToMask to deal with the new sprite formats. Allow PushModeInfoAnyMonitor to fail. - s.vdu.vduswis - Extended OS_ReadModeVariable to cope with new sprite types Misc: - s.vdu.vdudriver - Fixed bug with VIDCList copying where any -1 value in the structure would terminate the copy, instead of only -1 as a control item number - s.vdu.vduswis - Implemented OS_ScreenMode 13 (Mode string to specifier), 14 (mode specifier to string), and 15 (set mode by string). Mostly as per ROL's specs, but minus support for teletext attributes, and plus support for new RISC OS 5 attributes (L... layout specifier, 4096 & 24bpp packed modes, etc.) - s.vdu.vduwrch - Pick correct default text colours for the new modes Admin: Tested on BB-xM Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as Kernel-5_35-4_79_2_194
Fix errors building for pre-ARMv7 Detail: s/vdu/vduswis - Add an extra LTORG that's within range of LDR r14,=&1FFF instruction Admin: Tested in Iyonix softload Fixes build errors for Tungsten ROM, should fix IOMD + BCM2835 too. Tagged as Kernel-5_35-4_79_2_195
Clean up of RISCOS_IICOpV No longer returns a RISC OS specific error block to the HAL, instead uses a platform agnostic IICStatus value. Tagged as Kernel-5_35-4_79_2_196
Fix plotting of RISC OS 5 type sprites and masks. Fix hang when attempting to report "alpha mask not supported" error. Fix reading/writing of alpha mask pixels. Detail: s/vdu/vdugrafg - Fixed PutSprite and PlotMask to correctly deal with RISC OS 5 type sprite mode words. Fix infinite loops in PutSpriWideMaskErr casued by R14 getting trashed. s/vdu/vdugrafh - Fixed SpriteMaskAddr malfunctioning when trying to calculate addresses in alpha masks. Minor ReadPixelMask & WritePixelMask optimisations. s/vdu/vduswis - Fixed OS_ScreenMode 13 & 14 to count "G2" as a valid colour specifier. Admin: Tested on BB-xM Should hopefully fix the random hangs reported on the forums when trying to use sprites with alpha masks Tagged as Kernel-5_35-4_79_2_197
More alpha mask read/write fixes Detail: s/vdu/vdugrafh - Fixed SpriteMaskAddr to use the right Log2BPC value when generating addressed for alpha masks. Fix ReadPixelMask to return 255 when sprite has now mask, but mode word has wide mask bit set. Admin: Tested on BB-xM Reading/writing alpha mask pixels now works properly across the whole image Tagged as Kernel-5_35-4_79_2_198
Fixes to NeedsYearHelp clock case Want LSR not ROR otherwise in the need help + HAL + 2 bit case the IIC address in R1 comes out as &800000A1. Added HAL device ids for a couple more RTC devices. Tagged as Kernel-5_35-4_79_2_199
Fix to RTC initial read when year hasn't rolled There's an exit case from CheckYear which skips the actual clock read, so add an explicit call to RTCToRealTime for that case (cf. OS_ResyncTime). Remove use of ARMv2 era MULTIPLY macro, just use MUL. Tested on IOMD with a HAL RTC. Tagged as Kernel-5_35-4_79_2_200
Little kernel patches hdr/ExportVals: the copyright header insertion got a bit confused with some of the file contents TickEvents.s: a bad merge from Ursula branch 4.1.4.2 to trunk 4.2 left behind unmatched push/pull where TickIrqReenter had been removed hdr/Options & NewIRQs.s: collapse remaining TickIrqReenter switches osinit.s: when ZeroPage is in a top bit set address only the last buffer pointer would get zeroed Tip offs from eagle eyed Tim Baldwin. Tagged as Kernel-5_35-4_79_2_201
Migrate RTC driver out of the kernel The kernel will use RTC_Read and RTC_Write to access the hardware clock, while maintaining the software clock as before. Makefile: header export is now in the RTC module's sources KernelWS: remove RTCFitted flag NewReset: sync the time after the module init i2cutils: deleted clock chip code osinit: move OS_ResyncTime into PMF/realtime realtime: mostly packages up ordinals and calls the respective SWI Tested on IOMD softload. Tagged as Kernel-5_35-4_79_2_202
Assorted GraphicsV improvements Detail: This set of changes: * Adds basic support for multiple GraphicsV drivers, by way of some new OS_ScreenMode reason codes for registering/deregistering, selecting and enumerating drivers (11, 64-68) * Tidies up handling of HAL video calls so that the HAL calls will be transformed into a bona fide GraphicsV driver if they're implemented * Changes handling of 16bpp gamma table entries so that they're sent to GraphicsV in a generic form instead of in a VIDC-specific form * Adds a new GraphicsV call and defines new VIDC list items to allow GraphicsV drivers to utilise the new pixel formats File changes: * h/VIDCList, hdr/VIDCList, Makefile - Add new header export containing VIDC list type 3 definitions, to avoid repeated definitions in other components * Resources/UK/Messages - Add new GraphicsV/OS_ScreenMode error strings and some missing processor type strings * hdr/KernelWS - Clean up some pre-GraphicsV definitions, and add new workspace locations for storing the current GraphicsV driver number and the driver list * hdr/Options - Remove obsolete InverseTextTransparency option * hdr/VduExt - Add VDU variable 192 for storing GraphicsV driver number (same as ROL's VideoV driver number). Remove old 'Flag_*' mode flag definitions (use new 'ModeFlag_*' defintions instead). Add new OS_ScreenMode reason codes. * s/ARM600, s/VMSAv6, s/vdu/vdu23, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdupalxx, s/vdu/vdupointer, s/vdu/vduwrch - Strip out pre-GraphicsV code. Update GraphicsV code to use correct driver number. * s/ArthurSWIs - Pass the default GraphicsV claimant the VduDriverWorkSpace instead of ZeroPage * s/Getall - Add Hdr:VIDCList and s/vdu/VduGrafHAL to list of GETs * s/NewIRQs - Remove HAL VSync IRQ initialisation, is now handled by grafvhal. Remove old HAL VsyncIRQ entry point, all VSyncs are now handled by VsyncIRQ_ExtEntry. * s/PMF/osbyte - Stop OS_Byte 19 waiting forever if no video driver is active * s/PMF/osinit - Remove HAL VSync IRQ initialisation, is now handled by grafvhal * s/vdu/vducursoft - Use new workspace variable names and flag names * s/vdu/vdudecl - Remove old HALDAG_* definitions, GVDAG_* definitions are used instead. Add definition of the per-driver workspace structure and flags. * s/vdu/vdudriver - Remove pre-GraphicsV code. Update InitialiseMode to check for and initialise a HAL driver. Use cached driver features word in a few places instead of calling GraphicsV each time. Update PalIndexTable to disable VIDC mangling of 16bpp gamma tables. * s/vdu/vdugrafv, s/vdu/vdugrafhal - HAL<->GraphicsV code split off into its own file (vdugrafhal). Default GraphicsV claimant now only deals with VSync events for the active driver. * s/vdu/vdumodes - Get rid of old VIDC List type 3 definiton; now in hdr/VIDCList * s/vdu/vduswis - Added OS_ScreenMode reason codes 11 and 64-68 for registering, deregistering, selecting and enumerating GraphicsV drivers. Update mode set code to not bother checking if the driver supports the pixel format; instead we assume that the driver's vet mode call will do the check for us. Admin: Tested in Tungsten, IOMD, OMAP3 & BCM2835 ROMs Requires HdrSrc-2_38 and updated video driver modes Tagged as Kernel-5_35-4_79_2_203
Strip out some old build switches Detail: hdr/Options, s/ArthurSWIs, s/ChangeDyn, s/PMF/KbdDrA1, s/PMF/key, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdugrafhal, s/vdu/vdugrafv, s/vdu/vdumodes, s/vdu/vduwrch: - Strip out DoingVdu build switch (did nothing) - Strip out Japanese16BitSound switch (did nothing) - Strip out MakeModeSelectorsForModeNUmbers switch (altered the mode list structures, but there wasn't any code to do anything with the new data) - Strip out remaining uses of UseGraphicsV switch (now hardwired to {TRUE}) - Strip out ShadowROM switch (altered FixedAreasTable to show the shadow mapping, but code to create the mapping is missing) - Strip out PollMouse switch (old Archimedes-era debug/development option) Admin: Tested on BB-xM Builds to same binary as previous version Tagged as Kernel-5_35-4_79_2_204
Fix CAO pointer being reset incorrectly when calling OS_ExitAndDie with zero page relocation enabled Detail: s/MoreSWIs - OS_ExitAndDie now correctly sets the CAO to zero when ZeroPage is non-zero Admin: Tested on BB-xM with high processor vectors Issue originally spotted by Sprow Tagged as Kernel-5_35-4_79_2_205
Miscellaneous fixes Detail: s/MemInfo - Fix OS_Memory 0 physical-to-logical conversion returning bad addresses for most cases due to R5 being modified by physical_to_ppn (bug introduced in revision 4.4.2.20) s/vdu/vdudriver - Fix some VDU driver variables not being initialised correctly when switching GraphicsV driver s/vdu/vdugrafv - Fix handling of VSync events from GraphicsV drivers other than driver zero s/vdu/vduswis - Fix abort when OS_ScreenMode 11 is passed a bad driver number Admin: Tested on Raspberry Pi There still seems to be a bug lurking somewhere when switching to a GraphicsV driver that uses DA2; the system will crash horribly unless DA2 is already a suitable size for the initial mode change Tagged as Kernel-5_35-4_79_2_206
Fix dodgy mode changes on Raspberry Pi. Fix crash when switching to a driver which uses DA 2 if DA 2 isn't already large enough. Detail: s/vdu/vdudriver: - Fix bug in ModeChangeSub which caused the VariableFramestore flag to be ignored, resulting in unreliable mode changes on the Raspberry Pi. - Changed InitialiseMode to reset a few more variables when preparing to use a driver which uses DA 2. Without this the screen DA handler will likely crash when attempting to resize the DA for the initial mode change. Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_207
Fix some exception preveneers going to the wrong place when high processor vectors are enabled Detail: s/Kernel - UndPreVeneer, PAbPreVeneer and AdXPreVeneer all need to take into account the location of ZeroPage. In reality UndPreVeneer is the only one that matters, as the other two aren't really used. Admin: Tested on Raspberry Pi with high processor vectors Undefined instructions now generate errors correctly Tagged as Kernel-5_35-4_79_2_208
Add support for LDRSB to data abort handler ARM600: Decode LDRSB, do the sign extend, and fault all the other loads and stores not understood. VMSAv6: As the loads and stores not understood are now vetted properly, it should be safe to UseProcessTransfer (previously they'd have been disassembled incorrectly). Paste in LDRSB code from ARM600. Fix dubious looking access of CurrentGraphicsVDriver from WsPtr. Tested briefly on StrongARM. Tagged as Kernel-5_35-4_79_2_209
ModeFlag_GreyscalePalette handling improvements. Issue service calls on certain GraphicsV events. Sprite tweaks and fixes. Detail: hdr/VduExt - Add reason codes used by Service_DisplayChanged & Service_DisplayStatus s/vdu/vdugrafg - Remove dependency on SpriteReason_BadReasonCode; just use the size of our lookup table instead. Alter SpriteOp lookup table so that unimplemented ops return an error instead of doing nothing. Fix PutSprite incorrectly using the slow GCOL action plotter if a request was made to plot a sprite using its mask but the sprite has none. s/vdu/vdugrafl - Update screen redirection handling to set ModeFlag_GreyscalePalette if switching output to a sprite with a greyscale palette or a RISC OS Select alpha mask. Restore the flag to its correct value when restoring screen output. s/vdu/vdupalxx - Update ModeFlag_GreyscalePalette in realtime as the palette is changed s/vdu/vduswis - Issue Service_DisplayChanged during OS_ScreenMode 11. Issue Service_DisplayStatus during OS_ScreenMode 65 & 66. Admin: Tested on Iyonix, BB-xM Tagged as Kernel-5_35-4_79_2_210
Fix ProcessTransfer bug with LDM Detail: s/ARM600, s/VMSAv6 - When processing an LDM which wasn't the "user mode registers" form, the initialisation of lr was being skipped, resulting in the registers being loaded from garbage addresses. Shuffle things around slightly so that the branch to label 34 works as intended. Admin: Issue spotted by Willi Theiss Builds, but untested Tagged as Kernel-5_35-4_79_2_211
Fix long-standing, insidious memory management bug Detail: Early in OS startup, certain kernel memory areas (zero page, the privileged mode stacks, system heap, etc) are initially allocated only in the L2PT. The soft CAM is initialised later, using the L2PT as it is at that point. However, the pointer to the table that maps from page table cache policy bit layouts for the current CPU back to the platform-independent (OS_DynamicArea style) flags was corrupted, meaning that the CAM entries for these memory areas were initialised with a default value, which was non-cacheable non-bufferable. Application slots and most dynamic areas were unaffected, because once enough of the kernel was initialised to be able to use AMBControl or OS_ChangeDynamicArea, this function was no longer used. The problem comes when those pages come to be remapped; this could be due to requests for specific physical RAM pages, or (what I was actually investigating) DDT changing the access permissions on them. The problem was that as far as the CPU was concerned, the pages were cacheable/bufferable, but BangCam examined the soft CAM to decide what cache management operations to perform, and so got it wrong. The subsequent poke of the L2PT resulted in undefined CPU behaviour; in particular it seems to cause L2 caches to throw a strop (enough so that disabling the L2 cache was enough to make DDT significantly more reliable). Admin: It looks like this bug has been present on all HAL versions of RISC OS. Tested with DDT on a Beagleboard, previously the most crashy platform. There remains an IRQ (and FIQ) hole in OS_SetMemMapEntries when changing permissions on the page containing the processor vectors, which I haven't attempted to fix. Arguably, it should also issue Service_PagesSafe/Unsafe, in case anyone is DMAing to/from the remapped pages. Tagged as Kernel-5_35-4_79_2_212
Fix OS_SpriteOp 41 (read pixel) for 4K colour sprites. Update ECF patterns to work sensibly in true colour modes. Detail: s/vdu/vdugrafg - Change SetupSprModeData to calculate SprReadNColour from log2bpp instead of the NColour mode variable - fixes the alpha component being lost when using OS_SpriteOp 41 to read from 4K colour sprites with alpha channels s/vdu/vdudriver - Change SetCol30 to generate more sensible ECF colour blocks when in true colour modes. Previously it would treat each byte of the 8 byte ECF pattern as a separate row, and replicate the byte 4 times to produce one colour word per row. However this isn't so great for true colour modes, especially if you have an alpha channel which needs specific values. So to fix the issue, take inspiration from how Paint assumed the ECF patterns worked, and treat 16bpp modes as being a 1x4 pattern and 32bpp modes as being a 1x2 pattern Admin: Tested on BB-xM OS_SpriteOp 41 fix fixes Paint colour picker always returning 0 alpha when picking from 4K ARGB sprites ECF change fixes Paint's masked sprite background ECF pattern to display properly in true colour modes Tagged as Kernel-5_35-4_79_2_213
Move Cache_Lx_ info inside SkippedTable region of workspace ClearPhysRAM runs after ARM_Analyse and would wipe out the RAM copies of the various CP15 registers defining which caches are present, leading to the IMB_Full and IMB_Range operations skipping most of their job. Space freed below DebuggerSpace by moving the RAM copies of the processor vectors up a bit. Tested with a nobbled HAL which doesn't do the RAM clear, inspecting the workspace in a debugger to see it's preserved (only affects VSMAv6 models). Tagged as Kernel-5_35-4_79_2_214
Correction to code to add GraphicsV_PixelFormats call to HAL graphics driver calls. Added further debug capability Detail: Added additional HAL call. minor code correction in hal graphicsv dispatcher Added DebugReg macro to aid debugging Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as Kernel-5_35-4_79_2_215
Improve Service_DisplayStatus, Service_DisplayChanged functionality Detail: hdr/VduExt - Define new Service_DisplayChanged reason code for us to issue before anything actually happens. Define new Service_DisplayStatus reason codes for drivers to issue when they change their configuration/capabilities in some way. s/Utility - Listen out for Service_DisplayStatus s/vdu/vdudriver - When DisplayStatus_Changing/DisplayStatus_Changed is received for the current driver, translate into the appropriate DisplayChanged reason codes so that software which only cares about the current driver doesn't have two sets of service calls to listen out for s/vdu/vduswis - When switching driver in OS_ScreenMode 11, issue the new Service_DisplayChanged PreChanging reason code before we update the current GraphicsV driver VDU variable Admin: Tested in Iyonix ROM softload Tagged as Kernel-5_35-4_79_2_216
Added ix6 variants of HALDevice Detail: Admin: Tagged as Kernel-5_35-4_79_2_217
Simplify HAL_IICDevice API The only function to use the abandoned extensions to OS_ClaimDeviceVector, the 2nd & 3rd members of the structure never got used. Change uses of HAL_IICDevice to pass in the bus, and expect the device number back. Docs updated accordingly. Tagged as Kernel-5_35-4_79_2_218
Fix VGA/SVGA mode 7 VIDC list to be correct resolution/BPP when HiResTTX/TTX256 in use Detail: s/vdu/vdumodes - Redefine VgaX_7 to be VLM_7 if HiResTTX/TTX256 in use Admin: Tested on Raspberry Pi Fixes nasty crash when selecting mode 7 without an MDF loaded due to VIDC list being mismatched with code/VWSTAB Tagged as Kernel-5_35-4_79_2_219
Change handling of GraphicsV_StartupMode. Fix OS_CheckModeValid for variable framestore case. Detail: s/PMF/osinit, s/vdu/vdudriver - Move GraphicsV_StartupMode call from InitialiseMode to TranslateMonitorLeadType. This means (a) it'll only be used if the CMOS mode is set to 'auto' and (b) the returned mode can more easily be read by other modules via OS_ReadSysInfo 1. s/vdu/vduswis - Make OS_CheckModeValid act as if we have practically unlimited screen memory if using a GraphcisV driver with variable external framestore. In this case it's the driver should have already OK'd the memory requirements from within the VetMode call issued by FindOKMode - although the check won't be fully valid if we're checking for a shadow mode as the driver currently isn't told how many screen banks are required. Admin: Tested on Raspberry Pi OS_CheckModeValid fix ensures valid modes which require large amounts of VRAM are reported correctly when we're currently in a low-memory mode Tagged as Kernel-5_35-4_79_2_220
Fix corrupt L2PT page flags being generated on Iyonix Detail: s/ARMops - If extended pages aren't supported, make sure we use a PCBTrans table which doesn't use L2_X, otherwise the AP flags for some of the sub-pages will be corrupted when the PCB flags get merged in. Add some more comments to the PCBTrans tables so it's easier to see what the different columns are. s/ARM600 - Fix BangCam to use extended pages if they're supported; otherwise (assuming ARMops has selected the right PCBTrans table) we'll end up corrupting the AP flags again s/HAL - Fix ConstructCAMfromPageTables using the wrong register for ZeroPage when looking up MMU_PCBTrans. Correct a few comments. Admin: Tested on Iyonix Page table examination now shows that all subpages have the correct (i.e. identical) AP flags. Previously some pages would have incorrect access (e.g. every 4th subpage in some FileCore disc map/dir buffer DAs were writable in user mode) ARMops fix will presumably mean extended pages will now work correctly on IOP 80200, as before it would have been using small pages with corrupt AP flags Tagged as Kernel-5_35-4_79_2_221
Add OS_Memory 24 implementation. Change OS_ValidateAddress to use it. Fix kernel leaving the physical access MB in a messy state. Try and protect against infinite abort loops caused by bad environment handlers. Detail: s/MemInfo - Added an implementation of ROL's OS_Memory 24 call. Unlike the old OS_ValidateAddress call, this call should successfully report the presence of all memory areas known to the kernel. It should also correctly indicate which parts of a sparse DA are mapped in, unlike the old OS_ValidateAddress implementation. s/ChangeDyn - Update dynamic area handling to construct a lookup table for mapping logical addresses to dynamic areas; this is used by OS_Memory 24 to quickly locate which DA(s) hit a given region s/AMBControl/main - Make sure lazy task swapping is marked as disabled when AMB_LazyMapIn is {FALSE} - required so that OS_Memory 24 will give application space the correct flags s/ArthurSWIs - Switch OS_ValidateAddress over to using OS_Memory 24, as per ROL. For compatibility, Service_ValidateAddress is still issued for any areas which the kernel doesn't recognise (currently, OS_Memory 24 doesn't issue any service calls itself) s/Convrsions - ADR -> ADRL to keep things happy s/HAL - Fix L2PT page allocation and RAM clear to release the physical access region once they're done with it s/Kernel - Make the error dispatcher validate the error handler code ptr & error buffer using OS_Memory 24 before attempting to use them. If they look bad, reset to default. Should prevent getting stuck in an infinite abort loop in some situations (e.g. as was the case with ticket 279). The system might not fully recover, but it's better than a hard crash. s/Middle - Rework data/prefetch/etc. abort handlers so that DumpyTheRegisters can validate the exception dump area via OS_Memory 24 before anything gets written to it. Should also help to prevent some infinite abort loops. Strip 26bit/pre-HAL code to make things a bit more readable. hdr/KernelWS - Update comment Admin: Tested on BB-xM, Raspberry Pi Tagged as Kernel-5_35-4_79_2_222
Disable ProcessTransfer code indefinitely Detail: s/ARM600, s/VMSAv6 - Disable ProcessTransfer code for all kernel configurations. For VMSAv6 it was definitely broken (needs to be taught about VMSAv6 page tables and ARMv6+ unaligned loads). For ARM600 it seems to work OK, but is of no real use as (a) we're always running in 32bit mode and so don't need to worry about processor vector writes and (b) OS_AbortTrap isn't implemented so there's no way for anyone to register an abort handling routine. Code is being kept around instead of deleting it straight away just in case there are some hidden knock-ons to disabling it, or we decide to implement our own OS_AbortTrap some day. Admin: Tested on Iyonix, BB-xM Tagged as Kernel-5_35-4_79_2_223
Fix wildly inaccurate sizes in PhysRamTable when split_block needed When Subtractv1v2fromRAMtable is called to remove a region that results in one of the RAM blocks being split in the middle the resulting size was incorrect. The shuffle up loop was reusing v6 as an iterator not realising that it's needed to calculate the size of the 2nd half later, the error introduced was the difference between the physical address where PhysRamTable is located and the block being split - these could be a long way apart for example when there are two SDRAM banks. Even if the PhysRamTable is nearby (eg. 1 SDRAM bank) the result would be some weird sized entries which ultimately mean some dynamic area address space is "leaked". Fixed by swapping to v7, and for symmetry also adjusted the shuffle down loop to match. Tagged as Kernel-5_35-4_79_2_224
Be more sensible with how much RAM we put into application space on boot Detail: s/NewReset - During ROM init, keep application space mostly empty instead of attempting to move all RAM into it. This prevents the page order from being reversed, ensuring that in systems with two or more memory speeds the ROM modules get to use the fast RAM instead of the slow RAM (see free pool initialisation logic in InitDynamicAreas) After ROM module init, rebalance memory between the free pool and application space so that they each get 50%. This will provide plenty of memory for the boot sequence and any single-tasking stuff (e.g. booting into BASIC), without starving the free pool of memory and breaking any background processes like USB. Admin: Tested on BB-xM Fixes issue where USB devices would fail to initialise properly on some systems due to the boot sequence temporarily locking application space while the free pool is empty Tagged as Kernel-5_35-4_79_2_225
Fix GraphicsV_StartupMode call. Fix HiProcVecs build. Detail: s/MemInfo - Fixed typo causing build error with HiProcVecs/zero page relocated kernel s/PMF/osinit - Fix the call to GraphicsV_StartupMode to work correctly with non-zero driver numbers Admin: Tested on BB-xM with high processor vectors Tagged as Kernel-5_35-4_79_2_226
Add definitions for USB controller types Detail: hdr/HALEntries - Added definitions for the different USB controller types reported by HAL_USBControllerInfo Admin: Tested on Raspberry Pi Tagged as Kernel-5_35-4_79_2_227
Makefile recreated from fragments Need a custom ROM stage as the Kernel is linked as a binary, and a custom exports phase as the AAsmModule makefile tops out at 3 exported headers, but otherwise the rest can be shared. Tested in an IOMD ROM build. Tagged as Kernel-5_35-4_79_2_228
Add Raspberry Pi board revision for model B+. Detail: Also added model A for completeness. Admin: Required by new version of BCM2835 HAL. Tagged as Kernel-5_35-4_79_2_229
Reverse interlace deprecation decision Detail: hdr/VIDCList - ControlList_Interlaced is no longer deprecated, instead the sync/pol flags are. See discussion on forums for context: https://www.riscosopen.org/forum/forums/3/topics/309?page=9#posts-34152 Admin: Tested on BB-xM Tagged as Kernel-5_35-4_79_2_230
Improve ClearPhysRAM performance Detail: s/HAL - Change ClearPhysRAM to always map in memory as cacheable + bufferable instead of only on StrongARM, as it's an optimisation that can help other platforms as well. Admin: Tested on BB-xM, StrongARM RiscPC Tagged as Kernel-5_35-4_79_2_231
Added HAL device for iMx6 ethernet JB Tagged as Kernel-5_35-4_79_2_232
AHCI hal device support added Admin: JB Tagged as Kernel-5_35-4_79_2_233
Added hdr.options line to set up max RAMFS size. Detail: s.NewReset line 1304 amended to use this variable. It was hard codede to 128MB as a compromise between address space reservation and size. Admin: Tested OK to expand to 511MB in task manager. At 512MB the taskmanager window fails. JB Tagged as Kernel-5_35-4_79_2_234
Add more HAL USB definitions to hdr/HALEntries. Add debug option for calling HangWatch_Dump on serious errors. Detail: hdr/HALEntries - Added definition of the struct returned by HAL_USBControllerInfo hdr/Options, s/Middle - Added the option to call HangWatch_Dump on serious errors Admin: Tested on BB-xM Tagged as Kernel-5_35-4_79_2_235
Fix IIC bus information being wiped by RAM clear Detail: hdr/KernelWS - Enlarge the SkippedTables area to encompass IICBus_Base s/PMF/IIC - Manually set IICBus_Status of each bus to 0 within IICInit Admin: Bug was introduced in Kernel-5_35-4_79_2_168 when IIC initialisation was moved to earlier in the ROM init sequence, but has gone unnoticed due to it only really affecting the high-level API (and none of the relevant HALs were relying on the kernel for the RAM clear) Tested on BB-xM with kernel RAM clear Tagged as Kernel-5_35-4_79_2_236
Fix new format *ScreenSave'd sprites containing lefthand wastage Detail: s/vdu/vdugrafk - When saving a new format sprite that would otherwise contain lefthand wastage, copy each screen row to a temporary buffer before saving it out in order to allow the wastage to be removed Admin: Tested on Pandaboard Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/2802 Tagged as Kernel-5_35-4_79_2_237
Fix PreCreateHeader to allow palettes for <=256 colour RISC OS 5 sprites. LoadCoordPair tweaks. Detail: s/vdu/vdudecl - Add a couple more optimisations to LoadCoordPair - use SXTH where possible, and use LDRSH if data is halfword aligned (not currently the case, but may be in future) s/vdu/vdugrafj - Fix PreCreateHeader to allow <=256 colour RISC OS 5 sprites to have palettes Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_238
Fix for spurious IIC access when probing When HAL_NVMemoryType reports NVMemoryFlag_MaybeIIC the kernel tries to probe a number of common/known addresses on startup, however the result of the probe is stored around line 1346 without a value value for zero page in R2. This is sufficiently early on that the default data abort handler (from when probing the ARM's abort model) is still in place so the stores are silently skipped. Due to the RAM clear the NVRamBase (and size) are 0, which later on in ValChecksum result in a zero length IIC probe to address &01. Now, R2 is initialised. Tagged as Kernel-5_35-4_79_2_239
Re enable compile with kernel built from current tree. Detail: Recent kernal changes appear to have enabled lazy task swapping, which brought up a data alignment abort whilst compiling the source tree using a rom compiled from this tree. Simple change added to AMB_MakeHonestLA and PN routines to avoid this. Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Tagged as Kernel-5_35-4_79_2_240
Update HAL device ID allocations Detail: hdr/HALDevice - Added some extra HAL device IDs Admin: Tested by building BCM2835 ROM Tagged as Kernel-5_35-4_79_2_241
Added a disc install phase as an analogue of the export phase Tagged as Kernel-5_35-4_79_2_242
Add the DWC (type 3) USB controller structure definitions Add an extra entry for a revised power control/overcurrent monitoring API, more closely following the model that HAL_TimerIRQStatus and HAL_TimerIRQClear uses. Tagged as Kernel-5_35-4_79_2_243
Another fix to split_block Following hot on the heels of revision 1.1.2.39, when there's more than one block in existance the shuffle up loop trashes v3 & v4, which we need in the calculation just below. Could just use other registers in the shuffle loop, but we only have ip free at that point, so be lazy and just reload & reextract the flags. Tested on a softload Kinetic, now the RAM speed flags look sensible and the RAM clear doesn't fall off the end. Tagged as Kernel-5_35-4_79_2_244
Make OS_GSTrans be more sensible about what it treats as system variables Detail: s/Arthur2 - OS_GSTrans now uses the same rules as OS_SetVarValue when deciding whether text within angle brackets is a valid system variable name or not. In particular spaces in the middle of a variable name are no longer considered valid, so expressions such as "*If 0<1 AND 1>0 then echo true" now have the expected result Also replaced the magic constant used for the name buffer length with a proper symbolic value, and tweaked its handling a bit in order to increase the maximum permissible variable name length from 253 chars to 255 (although OS_SetVarVal allows longer) Admin: Tested on Iyonix Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/2912 Tagged as Kernel-5_35-4_79_2_245
Added HAL entrpoint to access hardware watchdog timer Detail: Admin: Tagged as Kernel-5_35-4_79_2_246
Add a means to write NetStnCMOS in a HAL world With ProtectStationID turned on there are no routes to writing the Econet station (or bottom octect of the IP address), a function previously fulfilled by the SetStation utility which pokes the hardware directly and doesn't fit into a HAL model. Add a new subreason to OS_NVMemory to perform this role. This SWI appeared for RISC OS 5.00, and errors unsupported subreasons, so there's a means of run tim selecting its use by checking the platform class and trying the SWI. All RISC OS 5 based platforms can always be upgraded to this version, since they're all still being maintained. hdr/Options: move the switch with the other options from osinit.s i2cutils.c: new subreason Ditch the 'ObsoleteNC1CMOS' switch, if it was obsolete for NC1, it's certainly obsolete now. Ditch unmaintained messages files for Morris4/Omega/Ursula projects. Tested on a Risc PC. Tagged as Kernel-5_35-4_79_2_247
Fixes to HAL memory info calls and docs MemInfo.s: Several places in this code called the HAL or other ATPCS defined functions like memset() and hoped that the overall result was V clear. If any of them accidentally set V (for example a CMP that straddles 0x80000000) you ended up trying to look up an international error at the address of the reason code to OS_Memory. Now, explicitly clear V in the non error cases where an ATPCS function was called. Change the HAL_PhysInfo call to expect a physical ROM size back as an inclusive range, to match the RAM range subreason code. Add 1 to correct for this. A value of 0 & 0 is taken to mean "no physical ROM" as before. Middle.s: Document that 255 means "no IOMD" or "no VIDC", that's what the HALs have been using since year dot. Tagged as Kernel-5_35-4_79_2_248
Untangle some buses Docs/HAL/NewAPI: More clearly describe the intent of the different bus types. hdr/HALDevice Reclassify the OMAP interconnect as either a system bus or peripheral bus, noting their names from the datasheet. Reclassify the GPMC as an expansion bus. Add AMBA 3's AXI bus, which (along with the existing AHB/APB) is what iMx6 uses. Delete redundant iMx6 interconnect type. Tagged as Kernel-5_35-4_79_2_249
Delegate L2 (and below) cache init at power on/reset to the HAL Historically the kernel looked after all aspects of cache control since they were common across all ARMs. However, not all cache controllers are created equal, and sometimes more complex initialisation steps are needed than fit the generic coprocessor ops - for example the PL310 attached to a Cortex-A9 has memory mapped control registers. Rather than clutter the kernel with one shot init code for every cache controller invented, we delegate that step to the HAL in HAL_Init. This is only a few hundred instructions later than where it was already being set. The kernel remains responsible for subsequent maintenance, this is just init which is being handed off. A quick survey of the Cortex-A TRMs shows: A5 - optional, for example ARM's PL310, ref TRM section 8.1.7. A7 - optional, C bit of SCTLR, ref TRM section 1.1. A8 - L2EN bit of ACTLR, note this bit has been recycled for other uses on other cores, ref TRM section 8.3. A9 - not integrated, ARM's PL310 uses bit 0 of control register 1, ref PL310 TRM section 3.1.1. A12 - see A17 A15 - integrated, C bit of SCTLR, ref TRM section 7.2.3. A17 - integrated, bit 18 of L2CTLR & C bit of SCTLR, ref TRM section 7.2. and while we've got the TRMs open, back fill the CPU id register table. Tagged as Kernel-5_35-4_79_2_250
Fix detection of ARMv7 minimum cache line lengths Detail: s/ARMops - Replace the code to calculate the minimum cache line lengths with something much simpler which reads the values directly from the cache type register. The old code was buggy in two ways: (a) the cache size identification register stores the line length as log2(num words)-2, whereas the code throughout the kernel was expecting it to be log2(num bytes)-2 (b) the loop is structured so that it will try and read the details of a non-existent cache level. although it doesn't read anything from CP15, it does result in the minimum cache line length values getting clobbered The net result of the above two bugs being that the OS would treat the CPU as if the minimum line length was just 4 bytes (although other than slowing down cache maintenance ops, this shouldn't have had any bad side-effects) The cache type register directly contains the minimum line lengths as log2(num bytes)-2, so by switching over to use that everything is now fine. Admin: Tested on BB-xM, Pandaboard Fixes issue spotted by Willi Theiss Tagged as Kernel-5_35-4_79_2_251
Add ARMops for PL310 L2 cache controller Detail: Unlike on the Cortex-A8 or Cortex-A15, the L2 cache that's used with the Cortex-A9 isn't hooked up to the standard ARMv7 CP15 cache maintenance ops. Instead, memory-mapped registers must be used to program and maintain the cache. Since the PL310 can't be detected automatically, this change adds support for a 'cache controller' HAL device which the HAL can use to advertise the presence of any external caches. If a cache device is registered during HAL_InitDevices the kernel will then check it against a list of known cache types and replace the appropriate ARMop routines with the alternatives for that controller. File changes: - hdr/PL310 - New header containing PL310 register listing - Makefile - Add export for PL310 header. Reorder exports to be alphabetical - hdr/HALDevice - Add cache controller device type, PL310 device - hdr/KernelWS - Allocate some workspace for storing a pointer to the current cache HAL device - s/ARMops - Add code for searching for known cache types, and implementation of PL310-specific ARMops - s/GetAll - Get Hdr:PL310 - s/NewReset - Look for a cache controller after calling HAL_InitDevices Admin: Tested on Pandaboard Fixes various assorted instability issues Tagged as Kernel-5_35-4_79_2_252
Escape some dollars Detail: s/NewReset, s/Super1 - Escape some dollars contained in strings to avoid warnings from objasm Admin: Resulting binary unchanged Tagged as Kernel-5_35-4_79_2_253
Enable/disable HAL cache controller when enabling/disabling ARM caches Detail: s/VMSAv6 - Modify OS_MMUControl to ensure any HAL-based cache is disabled when either the ARM I or D cache is disabled. This emulates the behaviour of an integrated L2 cache controller. Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_254
Perform extra TLB maintenance on ARMv6+. Other cache/TLB maintenance tweaks. Detail: s/ARMops - Implement Cache_RangeThreshold for PL310 (helps AMBControl to decide what type of TLB maintenance is best). Fix MMU_ChangingEntry_PL310 doing more work than is necessary; was attempting to flush all ways for a given address tag, when really it should have only been flushing all the lines within a page and letting the cache worry about the tags/indices they correspond to. s/ChangeDyn, s/VMSAv6, s/AMBControl/memmap - Do extra TLB maintenance following writes to the page tables, as mandated by the ARMv6+ memory order model. Fixes frequent crashes on Cortex-A9 when running with lazy task swapping disabled (and presumably fixes other crashes too) s/MemInfo - Fix OS_Memory cache/uncache so that it does cache/TLB maintenance on a per-page basis instead of a global basis. Vastly improves performance when you have a large cache, but may need tweaking again in future to do a global op if large numbers of pages are being modified. Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_255
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. Tagged as Kernel-5_35-4_79_2_256
Add workaround for Cortex-A7 errata 814220 Detail: s/ARMops, s/HAL - Errata 814220 states that the Cortex-A7 set/way cache maintenance operations violate the usual operation ordering rules, such that an L2 maintenance operation which is started after an L1 operation may actually complete before it, causing data corruption if the L1 data was to be evicted to the L2 entry. Implement the suggested workaround of performing a DSB when switching cache levels, rather than just at the end of the combined L1+L2 group of operations. Admin: Tested on Raspberry Pi 2 Tagged as Kernel-5_35-4_79_2_257
Add TouchBook to hdr:GPIODevice Detail: hdr/GPIODevice - Added the TouchBook as an OMAP3 machine type. We don't actually create a GPIO HAL device for it, but having it defined here is useful for SDIO support in the HAL. Admin: Tested on TouchBook Tagged as Kernel-5_35-4_79_2_258
Ensure HAL cache device is initialised The Cache_HALDevice is in the RAM clear skip table, so when there's no controller found and the kernel is doing the RAM clear it's unset, leading to probable aborts when typing *CACHE Om|Off. Tagged as Kernel-5_35-4_79_2_259
Add some basic parameter validation to OS_IICOp Detail: s/PMF/IIC - OS_IICOp now does some basic validation of its parameters, to help avoid crashes, memory corruption, or bad IIC transfers being performed when invalid parameters are supplied Admin: Tested on Pandaboard Fixes ticket #404 https://www.riscosopen.org/tracker/tickets/404 Tagged as Kernel-5_35-4_79_2_260
Fix OS_Byte 19 getting stuck if it's called just before the screen blanker activates. Add new OS_ReadSysInfo reason code for determining IIC bus count. Detail: s/PMF/osbyte - For OS_Byte 19, move screen blanker check (and current GraphicsV driver check) inside the WFI loop so that the loop will terminate if the screen should blank (or current GraphicsV driver should die) before the next VSync occurs. Also move the Portable_Idle call to before the interrupt trigger - the old location meant that if the screen blanked we'd continue on to the Portable_Idle call and end up pointlessly stalling the system s/Middle - Add OS_ReadSysInfo 14, as a legitimate way of finding the number of IIC buses present on the system Admin: Tested on Pandaboard Tagged as Kernel-5_35-4_79_2_261
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
Logs for castle/RiscOS/Sources/Lib/AsmUtils from AsmUtils-0_16 to AsmUtils-0_17
Makefile recreated from fragments Tagged as AsmUtils-0_17
Logs for castle/RiscOS/Sources/Lib/callx from callx-0_08 to callx-0_09
Makefile recreated from fragments Unused VersionASM removed. Tested in an OMAP3 ROM build. Tagged as callx-0_09
Logs for castle/RiscOS/Sources/Lib/Configure from Configure-0_10 to Configure-0_11
Switch round precedence of search for a default CMOS setting This resolves a small discrepancy between the "Default CMOS" menu entry in Configure and pressing "Default" on some of the dialogues with the plugins within Configure. Now, both use IF ResetCMOS is in Choices use that first ELSE try in the read only Hook directory for this OS (via Choices$Path) ELSE ask the kernel what it would do for a delete-power-on This also allows system integrators to provide a machine specific ResetCMOS in a writeable directory (Choices$Write) to override the ROM default. Built, but not tested. Tagged as Configure-0_11
Logs for castle/RiscOS/Sources/Lib/DebugLib from DebugLib-0_66 to DebugLib-0_71
Fix null pointer dereference Detail: c/debug - Fixed a null pointer dereference in debug_setup_filename() Admin: Tested on BB-xM with high processor vectors Tagged as DebugLib-0_67
Relocate remotedb Requires remotedb-0_12. Tagged as DebugLib-0_68
Added an install phase to support CTools builds. Tagged as DebugLib-0_69
Repoint PDEBUG Requires PDebug-0_09 or later. Tagged as DebugLib-0_70
Makefile recreated from fragments One subtle difference here is there's no intermediate link step any more, since the ${DEBUGLIBS} already drags in all the required libraries. As a result, when linking with DebugLib the linker should be able to throw away unused sections, making your debug executable a bit smaller. Tested with a debug build of USBDriver in PRINTF_OUTPUT mode. Tagged as DebugLib-0_71
Logs for castle/RiscOS/Sources/Lib/ModMalloc from ModMalloc-0_05 to ModMalloc-0_07
Added an install phase to support CTools builds. Tagged as ModMalloc-0_06
Makefile recreated from fragments Tagged as ModMalloc-0_07
Logs for castle/RiscOS/Sources/Lib/PDebug from PDebug-0_08 to PDebug-0_09
Makefile recreated from fragments Tagged as PDebug-0_09
Logs for castle/RiscOS/Sources/Lib/PlainArgv from PlainArgv-0_04 to PlainArgv-0_05
Makefile recreated from fragments Note, the original makefile passed -DDesk__MODULE_CLIENT into the module variant, however inspection of Desk shows this just defines Desk__zm, neither of which are used in the library sources. To fit within the shared makefile scheme (which doesn't currently allow switches specific to library variants) this has been dropped. Binary with and without the switch came out the same too. Tagged as PlainArgv-0_05
Logs for castle/RiscOS/Sources/Lib/remotedb from remotedb-0_11 to remotedb-0_12
Makefile recreated from fragments Tagged as remotedb-0_12
Logs for castle/RiscOS/Sources/Lib/RISC_OSLib from RISC_OSLib-5_77 to RISC_OSLib-5_85
Some library fixes Fix for problem passing long command lines via system(), while there are good arguments to leave the threshold at 255, non DDEUtils aware programs get brutally truncated command strings, and since the old threshold of 255 applied when the kernel handled 256 command lines, upping the limit to 1k is no worse than before. Fix for Edit failing to draw lines of text longer than 192 characters (ticket #350). Several factors were conspiring here: on a mode change the window width in characters wasn't being clamped, whereas user entered limits in the menu were, then the internal buffer ("PAINTBUFSIZE") was too short so lines got truncated, and when larger than 256 got wrapped modulo 256 due to the use of an array of chars. Now set at compile time with BIG_WINDOW_SIZE_LIMIT with a new theoretical maximum of 8192. Currently limited to 480 since it uses stack variables. In the C library: armsys.c: adapt the threshold at which to use DDEUtils based on the kernel version number scanf.c: squash a warning time.c: mark the table of month lengths as constant so we can claw back 13 words of static workspace without having to change the stubs In RISC OS lib: bbc.c: remove local definitions of some SWI numbers template.c: squash a warning txt.c: delete Modula-2 support txt1.c: compare pointer with NULL not an integer txtar.c: introduce BIG_WINDOW_SIZE_LIMIT, rationalise a few sprintf's, mark private functions as static txtundo.c/txtedit.c: squash old style function warnings txtoptmenu.c: clamp the window width read from Edit$Options properly, delete long disabled code txtscrap.c: dead function deleted Tagged as RISC_OSLib-5_78
Fix 32bitification error Detail: kernel/s/k_body - At CopyUpDone in _kernel_system(), a big block of conditional code was converted to unconditional as part of the 32bit conversion process. However one line for setting up the error handler remained conditional, potentially preventing the correct error buffer pointer being set when about to start the child task. Admin: Tested on BB-xM Tagged as RISC_OSLib-5_79
Permit wildcards in RISC_OSLib application's messages files msgs.c: includes a MessageTrans parser that duplicates MessageTrans_Lookup (needed because the lookup function returns pointers to static C strings). However, did not allow '?' wildcards in the message token names. Tagged as RISC_OSLib-5_80
Unbreak stdio.h for C90 mode Detail: Large file support made use of long longs in various definitions. These were switched out in PCC mode, but no allowances were made for the fact that C90 doesn't define long long either. Remember that to force cc to use non-builtin standard headers, you need to point at these using the -j switch (e.g. -jC:). The only version of cc which featured the C90-incompatible stdio.h was 5.70. Admin: Checked that the header now works when included in -pcc, -c90 and -c99 modes. Tagged as RISC_OSLib-5_81
Check for NULL pointers before finding the syshandle menu.c: if NULL return -1, this has the added advantage that a menu maker (see event_attachmenumaker) can return NULL to mean "no menu thanks" and not data abort in event.c dbox.c: if NULL return 0, this is somewhat consistent with template_syshandle() menu.h: typo in comment corrected Tagged as RISC_OSLib-5_82
Add C99 standard headers wchar.h and wctype.h Detail: These were previously languishing in the C compiler sources, but they belong in the C library. Note however that the library does not implement the functions described in these headers at the present time, so any attempt to use them will result in link-time errors. Admin: Untested (known not working) Tagged as RISC_OSLib-5_83
Don't export any of txt's internal headers Edit-1_70 and SrcEdit-1_28 no longer require these private headers. Not tagged
Some RISC_OSLib rlib enhancements menu.c/menu.h: Add a new menu_setcolours() function to allow the fore/background colour bits to be set on a menu entry. colourmenu.c: Use the new menu_setcolours() function instead of making assumptions about menu's internal structure layout. dbox.c/dbox.h: New functions dbox_hidefield and dbox_unhidefield added to complement the fade/unfade ones. As dbox_findicon/findiconbefore are only ever used to find writables, rename them as such. Also, make them find writable (type 15) AND writable draggable (type 14) icons. Allow navigation by tab/shift tab through icons like the Style Guide chapter 16 says we should. In fact it's a little odd that dbox is emulating 'Ktar' validation itself manually when the Wimp has done this since version 2.92, but maintaining it is less effort than going and checking all the templates. Fix bug when looking for leading capital letter matches to complete a dbox, the previous code was looking at the cached copy of the icon flags in d->window rather than the ones the Wimp is actually showing on screen (as might have been modified by dbox_fadefield() for example), so it was possible to complete a dbox for an icon which wasn't visible or selectable. Fix bug when looking for leading capital letter matches when the icon doesn't have any text - the template file format is defined as being 0x0D terminated. This would then lead to 'R' and 'S' being accepted as matches having run off the end of the text buffer and into the validation string (which usually contains an 'R' or 'S' validation first). Changed to accept any control terminator. event.c: When force closing the current menu, don't forget to set the two state variables back to 0. fileicon.c/resspr.c/txt1.c/txtundo.c/wimp.c: Use existing pointer type definitions. flex.c: Treat bools as bools and pointers as pointers. Say something useful in an error box if flex fails its internal consistency check, rather than just data aborting. font.c: Remove ROM conditionals from around font_readdef() function, always include the function. fontselect.c: Use font_readdef() rather than local copies of the exact same function. txtedit.c/txtfile.c/txtfind.c/txtedit.h: Remove redundant 'deletepending' state variable, and confusion over 'selectrecent' being a bool. Call os_byte directly rather than passing to os_cli("*FX"). Other minor tidy ups. wimpt.c: Mark messages list as a constant. xferrecv.c: Also preserve the size member while recycling the xferrecv_ack message block, rather than corrupting it as 256. xfersend.c/xfersend.h: Take out the leaf name formulator as a common function for the two places to use it. This also allows the function to return the length of the leaf name so the correct message block size can be used. Inspection with MsgMon/!Reporter was showing that all xfersend initiated saves were passing the leaf name padded to 256 with garbage. Reindent a few functions. Make the draggable sprite replacement follow the same validation string rules as the Wimp, previously only ";s" was accepted, so upper case 'S' and validation strings that start with the sprite validation didn't work. xfersend_pipe() function prototype changed to match xfersend() more closely - not being able to respond to the context of a wimp_eventstr made this function practically unusable. akbd.h: Windows logo and menu keys defined. flex.h/help.h/wimpt.h Some typos in comments. wimp.h: Missing wimp message action codes and structure defs added for completeness. Not tagged
Minor rlib cleanups dbox.c: address of cancelled by dereference event.c: spelling txtar.c: don't grab the caret when clicking toggle size txtedit.c: use BOOL for a boolean win.c: when looking at the behind window handle we want -1 not 'DUD' (which happens to be -1) wimp.h: add comment about window handle -3 Retagged as RISC_OSLib-5_83. Not tagged
Extend rlib xferrecv API Add xferrecv_last_ref to get hold of the Wimp message id of the request for a scrap file data save, when the RAM transfer gets no reply. This is useful to allow the data save to be distinguished from a file being dragged to an application, without having to resort to string compares against <wimp$scrap>. SWIOptions: Also add RTC to SWI exports, and remove redundant ones. armsys.c: Treat cmd_string as a pointer. xferrecv.c/.h/rl_entries: New function xferrecv_last_ref. Tagged as RISC_OSLib-5_84
Switch from ArcEdit style model to clipboard cut & paste model The txt library part of RISC_OSLib was essentially contrary to everything Acorn was telling its developers, to use the global clipboard. Additionally, support is added for swap case within a selection. txt.h: Add a new charoption type 'txt_READONLY' to inform txt that the buffer is notionally read only, this is used to supress 'Paste' in the selection menu when appropriate. Correct some typos in the comments. txt1.h: Kill off modula 2 dummy structure member. txtar.h: Remove unused function export. txtfile.h: Rename basicimport to be consistent with the text version of the same function. We use 'import' to denote RAM transfers and 'insert' to denote file/scrap transfers throughout. txtmisc.h: Redundant internal functions removed. txtundo.h: Add a new undo operation type 't' for swap case, to avoid polluting the undo buffer with an entire copy of the text where only the case changed. Kill off modula 2 double pointer requirement. txtedit.h: Unused structure member 'selectctl' removed. txt.c: Kill off modula 2 double pointer requirement. txtar.c: Refactor message despatch with a switch statement so the save/load/open operations are explicitly checked for, in case the application enables other messages. txtedit.c: Adopt MOVERWRITE, been enabled since 1988 so is probably good to keep. Dynamically generate the Select menu by first sending a clipboard request, and fading Paste if no reply comes back. Implement changed mouse selection logic. Implement different hotkeys and caret navigation. Implement copy and paste/replace operations. Implement swap case operation. txtfile.c: Type corrections and function rename admin. Implement copy and paste/replace operation for detokenised BASIC. txtmisc.c: Supporting functions for clipboard added, supporting functions for ArcEdit removed. txtscrap.c: Make sure the caret is visible for programmatical zero sized selections. txtundo.c: Allow suspension of undo during known complex operations, such as import via RAM transmit. This was a longstanding bug where the import buffer was grabbed in ~4k chunks (even if only 1 byte was being transferred) which in turn resulted in a +4000 undo insertion and a -3999 removal, which given the default undo buffer is only 5k would result in it failing the reversibility test, so no undo was possible. Now, during a RAM transmit undo is suspended until the total transfer size is known, and only that data is placed in the undo buffer (subject to the same 5k reversibility limit). Add new undo type 't' for swap case operation. rlibdata.s: 4 new ints and 1 new BOOL, so RlibSpace increases by 5. Tagged as RISC_OSLib-5_85
Logs for mixed/RiscOS/Sources/Lib/TCPIPLibs from TCPIPLibs-5_58 to TCPIPLibs-5_60
Make use of StdTools Use ${TOUCH} instead of *Create. Tested exports of header and library, no issues seen. Tagged as TCPIPLibs-5_59
Some extra DCI4 definitions Define slot types for SDIO (for ethernet via SDIODriver) and the HAL system and peripheral buses (for ethernet via MACs on board the SOC). Bump DCI revision to 4.07. Tagged as TCPIPLibs-5_60
Logs for castle/RiscOS/Sources/Lib/Unicode from Unicode-0_60 to Unicode-0_61
Makefile recreated from fragments Swap #if DEBUG for #ifdef DEBUG since the debug defines get appended to the non debug defines in the shared makefiles, so there's no way to set it to zero conveniently. Requires BuildSys-6_63 for $LIBDEPENDS support. Tagged as Unicode-0_61
Logs for castle/RiscOS/Sources/Networking/AUN/Access/Freeway from Freeway-0_37 to Freeway-0_38
Internationalised non error strings Freeway looked up its error messages via MessageTrans but for some reason used baked in english everywhere else. * New function fw_lookup() looks up a token * Removed Err_FWCAASyn since it had the wrong error number, and (using the Wimp as precedence) can just return configure_BAD_OPTION instead * Lined up remote nets in *FwShow with remote objects * Help and Syntax taken from messages file (requires RISC OS 3.60+) * Other strings now looked up too Tested with 1 printer, 1 disc, 1 host, 2 remote nets, and brief check of help. Requires AUNMsgs-0_23. Tagged as Freeway-0_38
Logs for castle/RiscOS/Sources/Networking/AUN/Access/ShareFS from ShareFS-3_54 to ShareFS-3_55
Logs for castle/RiscOS/Sources/Networking/AUN/AUNMsgs from AUNMsgs-0_21 to AUNMsgs-0_25
Save 12k of ROM space Since the Access sprites have been in the Wimp pool since Ursula the resources in AUNMsgs for Ursula and STB5 can both omit this duplicate copy (in addition the obey file ShareFS/!Boot has an RMEnsure of RISC OS 3.60 anyway. Tagged as AUNMsgs-0_22
Extra messages added to Freeway resources Tagged as AUNMsgs-0_23
Use GETVERSION directly Tagged as AUNMsgs-0_24
Extra Internet messages Makefile updated to allow a disc build (standalone/install phases). Added a via file describing the disc based AUNMsgs contents, removed crusty pre STB3 via files. 4 new messages for Internet-5_60. Tagged as AUNMsgs-0_25
Logs for mixed/RiscOS/Sources/Networking/AUN/Internet from Internet-5_57 to Internet-5_60
Correction to swiveneers for {CONFIG}=26 The LDMRet macro had an extra comma before the circumflex, but since these are also defined as macros in the APCS headers, change to using those instead. Tested on a Risc PC with RISC OS 4.02 in {CONFIG}=26. Tagged as Internet-5_58
Don't send an Acorn private option with a DHCP request Per RFC3942 the public range of DHCP option numbers has been extended to reassign previously private option 164. While renumbering into the new site specific range (224-254) was an option, it's also defined that site specific options shouldn't be baked into products, hence support for Inet$PrivateData has been removed. Tagged as Internet-5_59
Fixes to InetGateway InetInfo InetDebug CLI handling With CMHG 5.43 and later the 'help:' keyword actually does something useful, in that it is possible to distinguish between the command being run and help on that command. The Internet module made various assumptions about CMHG command numbers (not including the autogenerated header) which are no longer true as the help keyword renumbers the command numbers that the command handler receives. cmhg/InetHdr: Ammend the syntax string to match other OS commands. Remove the comment on yucky CMHG messing as that's no longer required. riscos/module.c: Use the CMHG generated header, correcting function prototypes where needed - this exposed a sin where the Internet module wrote into the user's command buffer when it should not (eg. if the command originated in a read only memory region). Simplify the despatch to a switch/case statement. Simplify all the command decoding by using OS_ReadArgs. Constify lookup_tag(). Delete OLDMBUFSTATS from pre MbufManager era. Internationalised the strings in *InetInfo. Fix bug where "NoIf" was printed when no interfaces exist - should have been looked up in the messages file. Tested briefly in an OMAP4 ROM build. Requires a few more messages in the messages file. Tagged as Internet-5_60
Logs for castle/RiscOS/Sources/Networking/AUN/MManager from MManager-0_28 to MManager-0_30
Internationalised
Import of an updated MManager module binary from the closed sources, built with objasm
4.01 using the All32 environment.
Tagged as MManager-0_29.
Signed comparision fix
When a machine has >= 2GB RAM and the MManager CMOS is 0 (meaning auto size the
Mbufs), the use of a signed compare would result in it believing it was a < 2MB
machine and only assigning 28k of Mbufs.
Built with objasm 4.02 using the All32 environment.
Tagged as MManager-0_30.
Logs for castle/RiscOS/Sources/Networking/DHCP from DHCP-0_23 to DHCP-0_26
Makefile recreated from fragments Renamed dhcpextern.h to DHCP.h so the shared makefiles can export it without needing a different source and target filename. Tagged as DHCP-0_24
Internationalised Tagged as DHCP-0_25
Suggest a hostname to the DHCP server; tweak timing As well as providing the (optional) vendor class id string, we now also suggest an (optional) hostname if one is set in Inet$HostName. This may get overridden as the hostname is one of the parameters requested from the DHCP server, but if not the server might as well have something to call us. Change to the discover/initreboot timing. The recent change to the total timeout was wasting time by sending packets at t=0,4,8,16,32... but as the total timeout was set to 20s it only sent 3 packets then did nothing for 8s. Now, the packets are sent at t=0,2.5,5,10 with 2.5s slack at the end for a reply, Replaced a couple of DCI protocol constants with defines. Tested against MS Windows Server 2012 Standard, and a 3COM router, both collect DHCP addresses OK and inspection of the allocated address table shows the name of the RISC OS client. Tagged as DHCP-0_26
Logs for mixed/RiscOS/Sources/Networking/Ethernet/EtherK from EtherK-0_24 to EtherK-0_25
Fix to parsing of EKFlowControl Using strcmp() on a control terminated argument never achieved a match, now uses OS_SubstituteArgs as a cheap way to get a null terminated string for matching. Tagged as EtherK-0_25
Logs for castle/RiscOS/Sources/Networking/Omni/Protocols/LanManFS from LanManFS-2_38 to LanManFS-2_48
Makefile recreated from fragments Fixed up a couple of trivial warnings with the stricter checking. Removed OmniS_FastMultiply64 and rewrote the function in C, this allows the compiler to spot and use UMULL on architectures supporting that instruction. Tested in a RAM build against a WinXP SP3 server with a drive > 4GB. Tagged as LanManFS-2_39
Internationalised Unused LMFiler put in the attic. As LanMan has historically put its resources into ThirdPart/OmniClient this component has no ROM resources phase - it still registers the resources at run time. Tagged as LanManFS-2_40
Removed verbose mode With LanManFS in ROM it's not actually possible to enable verbose mode, since it relies on command arguments being passed to it on initialisation. Since RMREINIT doesn't allow that you can't ever pass '-v'. Even the RAM loaded case isn't that useful, since the verbose text is output via printf() which doesn't appear in the desktop (with OmniClient). Swap the few uses of verbose mode to route via DebugLib instead, controlled via the 'DEBUG' predefine. Also Makefile ammended so debug version has a rule to make the resources area. Built, but not tested. Tagged as LanManFS-2_41
Fix for converting "OK" into "Internal error" Whose bright idea was it to use 0 for both? Fixes problem reported http://www.riscosopen.org/forum/forums/4/topics/2122 Tagged as LanManFS-2_42
Insert default sprites into Wimp pool prior to registering with OmniClient Tagged as LanManFS-2_43
Make name cache flush unconditional CoreFn.c: The size returned by OS_File 5 might not match the size shown in the Filer viewer (or via *EX) because the last cached version was being returned. This would manifest itself as an error from !Edit if the file on the server had grown since last queried, when loading the file the amount of memory reserved was for the smaller (stale cache copy size). The name cache is now always flushed on exit from the FileSwitch functions, this doesn't alter performance because the size was already being queried across the network, it was just that the result was overridden by the cached copy. LanMan.c: Be more robust and only capture the default driver name when it starts up. This could be a problem if LanManFS starts after the ethernet driver, and the value of Inet$EtherType is unset. When the driver dies LanManFS would have taken that name as the default - leading to "Bad parameter" when trying to connect to a share. Tested on IOMD with WinXP SP3. Tagged as LanManFS-2_44
Ammendments to short name translation table The table was ambiguously translating () to () and also [] to (). Now, we error names containing ,[] in the same manner as DOSFS. The substitutions for ^% have also been changed to match DOSFS so copying from one to the other doesn't give two representations if viewed on a PC. Marked both tables as const to save 512B of RMA. This change is slightly academic since most of the time the long filename resolution is in use. Tested against WinXP SP3 with a build with long filename support turned off. Tagged as LanManFS-2_45
Sync up the error messages Due to an inability to count to 10 accurately, all the error tokens were wrong, leading to some inappropriate error messages. Fixes problem "Message token E13 not found" when the SMB server gives a DOS error back. Tagged as LanManFS-2_46
Get version number from messages file Also, rationalise the two Omni_RegisterClient calls to both use _swix since they're virtually the same function repeated twice. Tagged as LanManFS-2_47
Add a quick exit for the timeout=0 case Careful analysis of packet captures by Colin Granville reveals that LanManFS waits for at least 1cs when no timeout was requested, so add a quick exit for that case. Timeouts of >= 1cs still delay for at least the requested time, and up to 0.999cs longer as before. This reduces the turn around time which is most beneficial for interfaces faster than 10baseT. Tagged as LanManFS-2_48
Logs for castle/RiscOS/Sources/Networking/Resolver from Resolver-0_69 to Resolver-0_71
Internationalised
Import of an updated Resolver module binary from the closed sources, built with cc
5.69 using the All32 environment.
Tagged as Resolver-0_71.
Logs for castle/RiscOS/Sources/Programmer/BASIC from BASIC-1_54 to BASIC-1_59
VFP/NEON assembler fixes Detail: Doc/VFPDoc: - Minor documentation update VFPLib/VFPLib: - Fixed VCVT (float and fixed, ASIMD) incorrectly accepting a condition code - Fixed VCVT (float and fixed, VFP) having incorrect syntax for singleword version - Fixed VCVT (float and integer, ASIMD) incorrectly accepting a condition code - Fixed VABA, VABAL, VABD, VABDL incorrectly listing I8, I16 and I32 as acceptable data types - should have been U8, U16, U32. - Fixed VBIF, VBIT, VBSL incorrectly accepting condition codes - Fixed VQABS not being supported Admin: Assembly tested and disassembly examined to test for correctness Tagged as BASIC-1_55
Fix NEON VMLA[L]/VMLS[L] scalar version using incorrect limits for Dm Detail: VFPLib/VFPLib - VMLA[L]/VMLS[L] scalar version definitions corrected to limit Dm to 0-7 for 16 bit datatypes and 0-15 for 32 bit datatypes Admin: Tested on BB-xM All NEON scalar multiply instructions now appear to limit Dm correctly Tagged as BASIC-1_56
Have BASIC manage its own messages For the standalone case BASIC[64] will now register its own resources into Resources/BASIC/BASIC[64]Msgs. For the ROM case BASIC[64] will share them in Resources/BASIC/Messages as before. This ensures that regardless of the order of loading, and the potential that a ROM and standalone version might be mixed, both ends up seeing the messages its expecting to see. Tested in a ROM build and softloaded on RISC OS 4.02. Tagged as BASIC-1_57
Tweak greeting message Detail: The standard message printed when BASIC is entered as the current language ("ARM BBC BASIC V[I] version x.xx (C) Acorn 1989") wraps mid-year in 40-column modes. This change avoids this problem by omiting the version number from the greeting. Admin: Tested on a Raspberry Pi booting into MODE 7 Tagged as BASIC-1_58
Two parsing bug fixes Lexical.s: Rework previous fixes (revision 1.5 and revision 1.4) for BPUT#TRACE,<number> confusing the MATCH routine. While revision 1.5 was better it failed to tokenise IF <expr> GOTO 1234 when the THEN is omitted. A review of all the keywords shows the only ones that take tokenisable line numbers are TRACE, RESTORE, ON, GOTO, GOSUB and of these only TRACE can be used in a function like manner. So, only apply the fix from revision 1.5 if it's a TRACE token. Fix from Martin Avison, fixes ticket #387. Added a test case in Tests/Match/TokTrace to assist. Assembler.s: Only consider SP or LR or PC to be referring to a register name if used in isolation (not as a substring of another word). While LR and PC aren't particularly common start of words in english, SP is, causing source code with such names to give a "Missing ," error. We adopt the same logic as for invalid 'R' named variables (eg. r17foo, r9bar) and attempt to find a variable with that name instead. Fixes ticket #386. Tagged as BASIC-1_59
Correction to register vetting Assembler.s revision 1.18 had a slight flaw in assembling LDR Rn,[R1] (or LDMIA Rn,{R1}) would report a bad register because the closing bracket matched the test of being greater than '5' and so skipped the thorough check. So LDR Rn,[R1 ] was OK. Now, do a more thorough check to determine if the character following could be part of a variable name. Not tagged
Tweaks to permit BASIC to cross-compile Detail: * Changed file paths to forms that also work when cross-compiling * Changed case of filenames so they match on case-sensitive filing systems * Makefile needs to use leading tabs * Escaped the '$' in 'BASIC$Crunch' (squashes a warning in new version of objasm - unrelated to cross-compilation) Admin: Cross-compiles OK with Norcroft tools, though asasm can't stomach the expressions BASIC uses. Checked it still builds with RISC OS Norcroft. Not tagged
Logs for castle/RiscOS/Sources/Programmer/BootCmds from BootCmds-1_47 to BootCmds-1_48
Missing message token fix When built with CMDHELP=None the AppSizeSyntax/AppSlotSyntax/AddToRMASyntax/IfThereSynt x tokens are not present in the messages file. In fact, for the first 3 we don't need to manually check for trailing parameters since the CMHG definition has max-args of 1, so the OS does it for us. For IfThereSyntax we instead manually cause an IfThere syntax error in order to get the error message (with CMDHELP=None this will come from the english text, and for internationalised versions this will be looked up for us by the kernel). Set min-args to 1 for IfThere, this saves having to construct the *If command which we know will fail (for a start there must be no 'then'!). Tested RAM loaded, no longer reports missing message token. Tagged as BootCmds-1_48
Logs for castle/RiscOS/Sources/Programmer/DDEUtils from DDEUtils-1_73 to DDEUtils-1_74
Fix for DDE_ThrowbackSend failing on 26 bit systems when a prefix is set On a 26 bit system a call to DDE_ThrowbackSend internally uses common_handler_external_entry to expand the thrown filename with the task local prefix, sharing code with the various filing system vectors which are intercepted. However, common_handler_external_entry looks up the stack at sp+4 to retrieve the entry flags that the vectors stack on entry, only DDE_ThrowbackSend didn't. The result was instead to read stacked R0 which is most often 1 to pass an error, then the TEQNEP would switch from SVC to FIQ mode, and an abort due to the banked registers pointed in the wrong place. In the 26 bit case a fake return is now stacked (we want common_handler_external_entry to return in both cases whether or not a prefix is set) in SVC26 mode. Tested on RISC OS 4.02 with the !ObjAsm front end setting a task local prefix. Tagged as DDEUtils-1_74
Logs for castle/RiscOS/Sources/Programmer/Debugger from Debugger-1_83 to Debugger-1_87
Add in disassembly of ARMv6 and ARMv7 instruction sets The debugger had some embryonic ARMv6 knowhow, switched out due to being incomplete. Enabling and finishing off ARMv6, then adding ARMv6K, ARMv6T2, ARMv6 security extensions, and ARMv7. That just leaves - ARMv7MP (multiprocessor extensions: PLDW) - ARMv7VE (virtualisation extensions: ERET, MRS copro, MSR copro) - Advanced SIMD (probably worth thinking about) - Thumb2 (questionable why Thumb is supported at all as the tools & OS don't use it) The syntax follows the pre UAL spirit for the new instructions (cf. ADDCCS versus ADDSCC). Removed binary V6test binary, replaced with more comprehensive v6/v7 source. Tested softloaded inspecting the output in StrongEd. Tagged as Debugger-1_84
Add a new, machine-generated VFP/NEON disassembler. Fix some ARMv6/v7 disassembly bugs. Detail: This change adds up-to-date VFP & NEON disassembly to the module, by way of a partially machine-generated disassembler written in C. It's also possible to build a standalone disassembler utility (dubbed 'dis2') which is 100% C and has support for all ARM instructions (including some obscure stuff the assembler disassembler currently lacks, e.g. XScale DSP instructions). One day this may completely replace the assembler disassembler, but at the moment it's a bit bulky and probably has a few bugs left to squash. The disassembler is also fairly flexible, supporting various output formatting options. Main changes: - Makefile - Rewritten to switch over to using the CModule makefile fragment instead of AAsmModule, to allow the C code to be included in the component. Also added 'dis2' as an alternative component to build as. - Resources/UK/Messages, Resources/Germany/Messages - Updated with new disassembler messages - s/Debugger - Add new UseCVFPNEON switch to allow control over whether the module builds with the C VFP/NEON disassembler or the original assembler VFP disassembler - s/CGlue - Glue code used with the C disassembler to bridge the gap between the assembler world and the C world - actions/* - A set of decgen action files describing what to do for each instruction the new disassembler supports. These are basically just blocks of C code - although they need to match up with the encoding names in Library/Misc/decgen/encodings - cache/* - Folder for decgen to cache decision trees in. Building the decision tree for the disassembler is currently a lengthy process, but caching the trees reduces the build time to a fraction of the full time. - c/head - Stub C file that decgen prepends to the code it generates - c/main - main frontend for the standalone version of the disassembler - c/support - Reimplementation of the standard C library functions required for the disassembler. This allows us to avoid a runtime dependency on the shared C library, and also allows us to deal with control-terminated strings from messagetrans where relevant. For convenience this file also has the main entry point that's called from assembler. - c/util - Utility code for outputting various forms of instruction, decoding immediate constants, etc. - h/dis2 - Header file for the C code - Test/c/testbed - Simple C testbed app to allow the output of dis2 to be compared against the Debugger module and decaof - !MkDis2,fd7 - Script to allow easy building of the standalone 'dis2' disassembler Bugfixes: - s/ARMv6 - Change 'ROR#' to 'ROR #' for UXTAB, etc. disassembly. Fix bitfield extract & clear instructions to detect unpredictable/invalid bitfield definitions Misc other changes: - s/* - Source files updated so s/Debugger contains a list of GETs instead of each source file LNK'ing to the next Admin: Tested in ROM form on BB-xM, and as softload on Iyonix German messages are in need of translation Requires Library-1_65 and BuildSys-6_34 Tagged as Debugger-1_85
Add *ShowVFPRegs command Detail: This adds support for the *ShowVFPRegs command, which is basically VFP equivalent of *ShowFPRegs. However unlike *ShowFPRegs it allows for any arbitrary VFP context to be viewed, not just the last context that caused an exception: *ShowVFPRegs [E] for showing the exception context *ShowVFPRegs A <address> for showing a context at a specific address *ShowVFPRegs C for showing the current context File changes: - HelpSrc, Resources/UK/CmdHelp - Added *ShowVFPRegs help text - Resources/Germany/Messages, Resources/UK/Messages - New message tokens for *ShowVFPRegs output - s/Debugger - *ShowVFPRegs implementation - actions/ARMv7_VFP - VPUSH or VPOP of >16 singleword registers were incorrectly being flagged as unpredictable; it's only the doubleword version which should have that restriction. Admin: Tested on Raspberry Pi German messages are in need of translation Tagged as Debugger-1_86
Build fix Update for BuildSys-6_60. No need to force things in ModuleLibs to blank now. Tagged as Debugger-1_87
Logs for castle/RiscOS/Sources/Programmer/HdrSrc from HdrSrc-2_28 to HdrSrc-2_50
Resync with allocations database Tagged as HdrSrc-2_29
Resync with allocations database Tagged as HdrSrc-2_30
Add details of new sprite mode word format. Add ColourConv macro to help with colour conversions. Detail: hdr/Macros - Add ColourConv macro to convert &BBGGRRxx palette entries to any sensible true-colour pixel format hdr/Sprite - Add definition of the new RISC OS 5 style sprite mode word format. Revise "new" 3.5 style format to include the wide mask flag introduced by ROL. Define new sprite types for ROL-compatible 64K sprites and new RISC OS 5 sprites. Admin: Tested in OMAP3 ROM build on BB-xM Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as HdrSrc-2_31
Workaround StrongARM bug in PLP macro Detail: Conditional MSR bug applied to the version of PLP that's used when both pre-ARMv3 and 32-bit compatibility is required (e.g. disc builds). Admin: Spotted by Sprow Tagged as HdrSrc-2_32
Resync with allocations database Tagged as HdrSrc-2_33
Resync with allocations database Tagged as HdrSrc-2_34
Add OS_SpriteOp 38 definition Detail: hdr/Sprite - Add OS_SpriteOp 38 (CreateRemoveAlpha), for converting between 1bpp masks, alpha masks, and alpha channels Admin: Tested on BB-xM Tagged as HdrSrc-2_35
Resync with allocations database Detail: * Retire hdr:FreeWay in favour of hdr:FreewayReg * SWI chunk and error base for RTC module * New shared single error number for drivers to report hardware not found * Single service calls for boot sequence to inform (primarily ROM) modules that system variables have become valid Tagged as HdrSrc-2_36
Resync with allocations database Detail: * Add error block for BASIC module * Retire RTCSupport switch in Hdr:Machine.Machine Tagged as HdrSrc-2_37
Resync with allocations database Detail: Kernel graphics allocations for Jeffrey Lee Tagged as HdrSrc-2_38
Resync with allocations database Tagged as HdrSrc-2_39
Resync with allocations database (VFPSupport error block) Tagged as HdrSrc-2_40
Resync with allocations database Detail: * Add extra flag definition to Hdr:GraphicsV * Decloak two system service calls previously used only by ROL fork Tagged as HdrSrc-2_41
Add OS_SpriteOp 65 (TileSpriteScaled) definition Detail: hdr/Sprite - Added OS_SpriteOp 65 definition, bump SpriteReason_BadReasonCode up to 66 Admin: Tested on Iyonix, BB-xM Tagged as HdrSrc-2_42
Add DADebug support to Hdr:Debug Detail: hdr/Debug - Added DADebug support. Doesn't cache the DADebug WriteC pointer in memory anywhere, so can safely be used from a ROM module or if DADebug is loaded/unloaded. Admin: Tested on BB-xM Tagged as HdrSrc-2_43
Resync with allocations database Tagged as HdrSrc-2_44
Gave HdrSrc an example MkInstall file Tagged as HdrSrc-2_45
branches: 4.247.2; Resync with allocations database, and a warning fix Detail: * Extra filetype for Windows .CUR files * Warning about Hdr:Wimp being included before Hdr:Services was mistakenly being generated every time both files were included, in any order. This is because it tested Service_WimpToolSpritesChanged, but that's declared using the # operator, so it is valid for forward as well as backward references. Changed it to test on a variable, which is only valid for backward references (see corresponding change to Wimp 5.46). Admin: Tested the warning bugfix with the BASIC module, which uses both headers. Tagged as HdrSrc-2_46
Cross-compile version of HdrSrc Detail: Mostly a question of changing directory separators and removing reliance upon path variables and system variable expansion. One day, when all components use the shared makefiles (or at least use the necessary -pd and -i switches to objasm), we will be able to switch over to using this version for all builds. In the meantime, I have created a new branch for the HdrSrc component, called XCompile, to store these changes. The downside is the fact that we'll now have to maintain unrelated changes on both branches until they can be merged. Admin: Tested by cross-assembling the BASIC module. Tagged as HdrSrc-2_46-4_247_2_1
Modified the HdrSrc makefile's install phase for DDE builds. Tagged as HdrSrc-2_47
Complete re-implementation of install phase. We now do the same things as for the export phase, but rather than putting the results into the build's export directory, we put them somewhere relative to the INSTDIR directory. Tagged as HdrSrc-2_48
Always export the 'All' machine config file Detail: Makefile - As with 'All32', 'All' is now always exported. Useful for PlingSystem. Admin: Tested building PlingSystem Tagged as HdrSrc-2_49
Add Raspberry Pi 2 support Detail: The Raspberry Pi ROM now joins the IOMD ROM in supporting multiple architectures, in this case ARMv6 and ARMv7. This has been achieved by creating a new machine type specific for Raspberry Pi. The old ARM11ZF machine type remains for builds that are ARM11-only. The Raspberry Pi 2 uses the Cortex-A7 processor, which includes version 4 of the VFP instruction set and version 2 of the Advanced SIMD (NEON) instruction set. You can now switch on this at assembly time using the new switches NoARMVv4 and SupportARMVv4. Tagged as HdrSrc-2_50
Logs for castle/RiscOS/Sources/Programmer/Obey from Obey-0_39 to Obey-0_40
Use OS_SynchroniseCodeAreas after copying stub exit handler to workspace Detail: s/Obey - Fixed 'enter' to use OS_SynchroniseCodeAreas on the stub exit handler that gets copied to the file-specific workspace. Admin: Tested on Pandaboard Appears to be the cause of the frequent crashes on boot reported on the forums: https://www.riscosopen.org/forum/forums/11/topics/2911 Tagged as Obey-0_40
Logs for mixed/RiscOS/Sources/SystemRes/Internet from Internet-5_51 to Internet-5_57
Correction to mimetype for ZIP Zip has a specific filetype allocated, previously it was mapped to DDC, so SparkFS would (if viewing a ZIP file on a PC share for example) retype it to A91 after opening and realising it was a ZIP. Then viewing from the PC side would show it's ",a91" suffix and hence not be recognised as a ZIP any more. Tagged as Internet-5_52
Increase RMENSURE of Internet module Versions 5.31 to 5.39 inclusive had a nasty memory leak on every socket creation, so enforce module 5.40 or later. For reference, RISC OS 5 has shipped with 5.45 or later anyway. Tagged as Internet-5_53
Image mime type review Added ".jif" as optional JPEG extension. Added fits since ChangeFSI can open them. Added prs.btif as a registered TIFF variant, though very unlikely to occur in the wild. Renamed image/svg to its W3C and IANA registration. Removed image/photo-cd due to no search engine hits (for a punctuation preserving search) and not IANA recognised. Corrected typo in xpng to x-png. Added vnd.dxf & vnd.microsoft.icon & vnd-wap-wmbp & vnd.adobe.photoshop as these have RISC OS file types and IANA registrations. Added image/bmp reluctantly with notes about which are official or not. Removed x-MS-bmp as x-ms-bmp covers it (MimeMap is case insensitive). Removed duplicates of x-photo-cd and x-xpixmap. Unrelated, added text/csv in passing. Tagged as Internet-5_54
Add md5 utility A port of the FreeBSD tool of the same name, md5 calculates a long check sequence to see if the file has been transported across the internet without error. Specifically, this is a snapshot of /lib/libmd/md5c.c revision 154479 /lib/libmd/mdXhl.c revision 154479 /sbin/md5/md5.c revision 238964 with a few tweaks for RISC OS. Tested by comparing the MD5 sum of a few downloads from the downloads page. Tagged as Internet-5_55
Rake over the 'text' and 'model' sections of MimeMap Text: Added css, tab-separated-values, vcard, xml, vnd.wap.wml. Removed text/richtext (this is not the wordprocessor document you are looking for) used text/rtf per IANA allocation. Tagged as Internet-5_56
Review of MimeMap sections Video type: Deleted duplicate video/x-msvideo entry. Renamed acorn-replay into private name space. Added MJPEG. Multipart & message types: Reviewed, no changes. Audio type: Added AC3, L16, MPA. Removed audio/mp3. Application type: Duplicate of x-dvi, x-latex, x-shockwave-flash, x-director, x-tar entries removed. Caseless compare means .Z and .z are duplicates too. Quadruplicate entry for 'TeX' removed. Added XML & XML-DTD Added Lotus123 and XLS from !Eureka Added the office document formats, their XML equivalents, and pen document equivalents. Also sync md5.c with FreeBSD SVN revision 280716, this is no net code change since it's the result of feedback to FreeBSD from here. Tagged as Internet-5_57
Logs for gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/DDTLib from DDTLib-0_04 to DDTLib-0_06
Added an install phase to support CTools builds. Tagged as DDTLib-0_05
Makefile recreated from fragments Exported headers moved to 'h' directory. Tagged as DDTLib-0_06
Logs for gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/Trace from Trace-0_09 to Trace-0_12
Added an install phase to support CTools builds. Tagged as Trace-0_10
Repoint ModMalloc library Tagged as Trace-0_11
Makefile recreated from fragments Flattened out the sources into one 'c' and 'h' directory, while a cunning VPATH allowed the code to be compiled in situ, the link step failed because of the way the object file names are generated. Code now uses Unix style directory referenced, rather than ^. Tagged as Trace-0_12
Logs for gpl/RiscOS/Sources/ThirdParty/JSmith/Lib/Wild from Wild-0_04 to Wild-0_06
Added an install phase to support CTools builds. Tagged as Wild-0_05
Makefile recreated from fragments Required renaming Wild.c to Wild1.c as the shared makefiles get confused if the source file is the same name as one of the targets. Exported headers moved to 'h' directory. Tagged as Wild-0_06
Logs for castle/RiscOS/Sources/Toolbox/Common from Common-0_20 to Common-0_23
Add defines for TextArea, Scrollbar, ScrollList to gadgets header Tagged as Common-0_21
For RAM targets reflect change from 4.8-4.9 in TboxMake Resource areas now use ${TARGET} to match the other shared makefiles and the change made for the resources phase in revision 4.9. Should fix problem with TextGadgets RAM version, where it was naming the area after the component name. Tagged as Common-0_22
Add a few missing Wimp messages to the header Tagged as Common-0_23
Logs for castle/RiscOS/Sources/Toolbox/Gadgets from Gadgets-0_35 to Gadgets-0_37
Change to link against tboxlibint For some reason this toolbox module was unique in linking against the public toolboxlib rather than the internal one, this meant having to carefully tippy toe around not mixing header files (as they contain similar but differently named definitions). A massive search and replace job. Tested briefly using ResEd/ResTest and a textarea and scrolllist in a ROM build. Requires Common-0_21. Tagged as Gadgets-0_36
Internationalised Supporting code borrowed from 'Iconbar' toolbox module. Tested in a ROM build and RAM build, triggering one error message and checking the dynamic area in task manager. Tagged as Gadgets-0_37
Logs for castle/RiscOS/Sources/Toolbox/Libs from Libs-0_23 to Libs-0_24
Renderlib header correction Function names corrected in the comment blocks. Tagged as Libs-0_24
Logs for castle/RiscOS/Sources/Toolbox/ToolAction from ToolAction-0_32 to ToolAction-0_36
Single use assembler function converted to C RAM module built, but not tested (Service_ResourceFSStarting isn't used in the ROM case). Tagged as ToolAction-0_33
Fix dubious struct initialisation Detail: c/toolact - Remove use of gadget_EXTENSION_LIST() macro in toolaction_register(). We want just three gadget_extension structs, not a [3][3] array. h/gadget - Remove now-unused gadget_EXTENSION_LIST and gadget_SIZEOF_EXTENSION_LIST macros Admin: Tested on Raspberry Pi Tagged as ToolAction-0_34
Makefile recreated to use TboxMake Some component reorganisation to make it fit the pattern of the other Toolbox modules. string32.c - use the (identical) copy in Toolbox/Common/string32. resource.c - swap to corresponding functions in Toolbox/Common/objmodule. msgs.c - swap to corresponding functions in Toolbox/Common/messages. Additional changes main.c: Always assume CMHG 5.16 or later is in use. Don't bother calling TinySupport_Share and TinySupport_Die, they just inc/decrement a counter. toolaction.c: Use common debug functionality, refactor single (not very exciting) debug call. utils.c: Excess header includes removed. In fact, this module only uses header from OSLib, it doesn't link with it (instead using a handful of _swix macros in "tbem.h"). These could in future be changed to just use the tboxlibint functions with a (lot of) careful checking. Tagged as ToolAction-0_35
Correct parameters to xwimp_set_icon_state This (previously unused) macro was passing the values in registers when the Wimp expects them in a block. Should fix https://www.riscosopen.org/forum/forums/4/topics/2741 reported by Chris Johnson. Tagged as ToolAction-0_36
Logs for castle/RiscOS/Sources/Toolbox/Toolbox from Toolbox-1_53 to Toolbox-1_55
Resolve a few assembler warnings with ObjAsm 4 Tagged as Toolbox-1_54
Fix for asymmetry in Toolbox_GetSysInfo 2 The enhancement in 1.50 to allow tasks to initialise with either a path variable or a directory meant that internally everything is considered as a path. However, Toolbox_GetSysInfo 2 is specified as returning the "directory name passed to Toolbox_Initialise", except that now a directory is stored in its modified (path-like) form internally, so doesn't read back as expected. Add boolean flag to remember that the dir was changed to a path so it can be knocked off again if appropriate. Remove some excess #includes. Tested with the following for path=FALSE and path=TRUE DIM poll 256,block 16,dirbuf 128 IF path THEN *set MyTest$Path $.!Boot.RO500Hook.Res.Configure.!HelpSetup. SYS"Toolbox_Initialise",0,380,0,0,"MyTest:",block,poll TO ,id% ELSE SYS"Toolbox_Initialise",0,380,0,0,"$.!Boot.RO500Hook.Res.Configure.!HelpSetup",block,p ll TO ,id% ENDIF PRINT "Task ";~id% SYS"Toolbox_GetSysInfo",2 TO,,r2 PRINT "Want buffer ";r2;" long" SYS"Toolbox_GetSysInfo",2,dirbuf,128 TO,,r2 SYS"XOS_GenerateError",dirbuf TO dir$ PRINT dir$;" is ";r2;" long (inc terminator), check ";LEN(dir$)+1 Tagged as Toolbox-1_55
Logs for mixed/RiscOS/Sources/Video/HWSupport/NVidia from NVidia-0_39 to NVidia-0_50
Update to use new GraphicsV registration process. Add 64K colour mode support. Advertise correct red/blue swap state in 16bpp modes depending on card type. Remove VIDC20 16bpp gamma demangle code. Detail: h/DriverInterface, s/Module - Updated workspace definition s/Driver, s/GetAll - Remove local VIDC list type 3 definition, use Hdr:VIDCList instead. Update mode set code to add support for 64K colour modes. s/GraphicsV - Check for the right GraphicsV driver number. Add VetMode and PixelFormats implementations. VetMode checks for correct pixel formats and ExtraBytes control list item values, while PixelFormats returns a different list depending on whether red/blue swapping is handled by the card or by hardware mod (assuming the hardware mod has been made). Remove 16bpp gamma table demangling, the OS now supplies the data in a sensible format. s/Interrupts - Use correct GraphicsV driver number when sending VSync events to the OS s/Module - Update to use new GraphicsV registration process. s/NVidiaHW - Update NVDAC_GENCTRL_Mask to reflect the fact we write to the 565 mode flag. s/Tables - Add new register tables for 16bpp modes, based around the settings in the C sources Admin: Tested in Tungsten ROM softload with FX 5500 card Requires HdrSrc-2_38 and Kernel-5_35-4_79_2_203 Tagged as NVidia-0_40
Add compatibility code for Aemulor's low colour mode emulation Detail: s/GetAll, s/GraphicsV - Add a compatibility hack to detect if Aemulor is intercepting our GraphicsV calls, and if so, include 1-4bpp in the list of pixel formats we claim we support. This is enough to get the low colour mode emulation of existing Aemulor versions working again with the recent GraphicsV changes. The code can easily be disabled in the future once it's no longer needed. Admin: Tested in Iyonix ROM softload with and without Aemulor Pro 2.34 loaded Tagged as NVidia-0_41
Advertise GVRender_CopyRectangle as being fast Detail: s/GraphicsV - Update GraphicsV_DisplayFeatures implementation to flag that CopyRectangle is fast, so that OS_SpriteOp 65 will prefer to use it over rendering all the sprite tiles manually Admin: Tested on Iyonix Requires Kernel-5_35-4_79_2_210 Tagged as NVidia-0_42
Allow configuration of red/blue swapping Detail: This change adds support for using "*Configure NVidia" to control red/blue swapping of 8bpp, 16bpp and 32bpp screen modes, on a per-card basis. By default 'auto' mode is used, which will use the same red/blue swapping logic as the previous version of the module Configuration settings are stored in our private CMOS area as returned by the PCI module File changes: - Makefile, Resources/UK/CmdHelp, Resources/UK/Messages - Added messages files. Only the CmdHelp file is used at the moment, but a main messages file is included to keep the build system happy. - s/Module - Add code to read and write settings from CMOS and handling for the NVidia configure item. Standalone messages handling fixed up to work the way the CModule makefile fragment expects. - s/Driver - Use configuration settings to decide whether to red/blue swap on a per-mode basis - s/GraphicsV - Updated to use a pixel format list held in workspace instead of the fixed ones that were defined here - s/MsgCode - Use our messages file, not the PCI modules! - h/DriverInterface - Updated C workspace struct to match assembler workspace definition Admin: Tested in Iyonix ROM softload Requires Kernel-5_35-4_79_2_216 to build, and Colours-1_91 and Tungsten-0_49 to run correctly Tagged as NVidia-0_43
Allow for extra control over red/blue swapping of 16bpp modes Detail: s/Driver, s/Module - Add support for a new configuration option, '-alt16bpp'. This causes the module to reverse its decision about whether the gamma tables + cursor should be red/blue swapped when in 16bpp modes, improving compatibility with software which performs red/blue swapping manually (e.g. Geminus). Resources/UK/CmdHelp - Add the new option to the configure syntax text Admin: Tested in Iyonix ROM softload Fixes issue #383: https://www.riscosopen.org/tracker/tickets/383 Note that automatic configuration mode will never result in the -alt16bpp flag being set; it must be configured manually. Tagged as NVidia-0_44
Revise Interlace handling. Add support for EDID reads which require the segment pointer to be set. Detail: s/Driver - Update DoI2COp to automatically write the EDID segment pointer when accessing EDID addresses >= 256. Remove IIC stop between writing the EDID offset & reading the data - was unnecessary and would cause the segment pointer to reset. s/GraphicsV - Remove GraphicsV_SetInterlace implementation, didn't do anything useful and is now deprecated. Make GraphicsV_SetMode reject any interlaced modes. Tweak GraphicsV_IICOp to treat head 0 as the current head and head 1 as the opposite head - makes behaviour slightly more sensible considering that there are only a couple of interfaces which support multiple heads and no way of reading the current head. Admin: Tested on Iyonix Tagged as NVidia-0_45
Add GraphicsV_ReadInfo implementation Detail: s/GraphicsV - Added GraphicsV_ReadInfo implementation Admin: Tested on Iyonix Tagged as NVidia-0_46
Fix unhelpful errors from *Configure NVidia. Fix harmless stack corruption. Detail: s/Module - Replace any error received from OS_ReadArgs with the generic 'Configure option not recognised' error; OS_ReadArgs' errors are rarely useful in the case where the user has typed an option string incorrectly. Also shuffle things around a bit to allow a constant to be used for the amount of stack workspace required for the OS_ReadArgs output buffer. Previously the amount allocated was 4 bytes less than required, resulting in a (harmless) stomp of the stacked R1 (R1-R7 technically don't even need to be stacked) Admin: Tested in Iyonix ROM softload Should fix spurious 'buffer overflow' errors reported as part of ticket #383: https://www.riscosopen.org/tracker/tickets/383 Tagged as NVidia-0_47
Build fix Update for BuildSys-6_60. No need to force things in ModuleLibs to blank now. Tagged as NVidia-0_48
Prepare for new Aemulor version Detail: h/DriverInterface, s/GraphicsV, s/Module - Adjust the AemulorSupport code so that it only activates the compatibility hacks if it detects a version of Aemulor <= 2.34; the plan is for the next released version to contain proper support for the new GraphicsV calls Admin: Tested on Iyonix Tagged as NVidia-0_49
Fix detection of RBSwapBit Detail: s/Driver - When adding support for the red/blue swapping configuration options in NVidia 0.44, a crucial line to read back the GENCTRL register value from the card went AWOL, causing the mode change code to erroneously think that all cards supported RBSwapBit. For newer FX-series cards this was fine, but for older MX-series cards this had the net effect of causing the palette/gamma/cursor red/blue swapping to be wrong in 8bpp & 16bpp modes when the driver configuration is set to auto, and to cause 32bpp modes to always be wrong (either cursor or desktop red/blue swapped) Admin: Tested on Iyonix (with FX-series card) Should fix ticket 383: https://www.riscosopen.org/tracker/tickets/383 Tagged as NVidia-0_50
Logs for castle/RiscOS/Sources/Video/Render/Colours from Colours-1_85 to Colours-1_91
Update to cope with new pixel formats Detail: s/Commons - Update best/worst colour code to add support for all the new RGB pixel format variations s/Dither - Rework code to remove reliance on now removed get_physical16bpp routine s/Enhanced - Drop support for VIDC enhancer. "VIDC20" code enhanced to add support for all the new RGB pixel formats, mainly reliant on new ColourConv macro. Drop get_physical16bpp routine as it wasn't really needed and would have been a pain to update. s/FontColours - Remove reference to obsolete PseudoPaletteEntry variable s/Header - Update workspace to clarify how certain variables are overlaid over the colour cache entries. Rename temp_guardtable to temp_errortable as the name makes more sense to me. Cache current modeflags & log2 NColour in InitCache. s/MainSWIs - Flag_* -> ModeFlag_* renaming. Pass through source mode to make32Ktable s/Palettes - Strip out some old Module_Version switches to make code more readable. Cache current modeflags and log2 NColour values when dealing with sprite output. s/Tables32K - Table generation code rewritten to add support for new 16bpp pixel formats, be faster, and (hopefully) more readable. Core generation code has been split off into seperate file, s/TablesAlgo, as it's needed multiple times but is too big for a macro. s/TablesAlgo - New file containing core code for the "32K" table generation. Disregarding pixel format differences, it can be assembled in two forms, optimised either for large or small data caches. New code is 85% faster on BB-xM (large cache version), 43% faster on Iyonix and 80% faster on StrongARM (both small cache version). Admin: Tested on BB-xM Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Code is in need of updating to allow caller to identify which type of 32K table has been returned (i.e. old-style 32K table or some new kind of 4K/32K/64K one) Tagged as Colours-1_86
Fix for erroneous mode change on return from ColourTrans_ConvertCMYKToRGB This less often used colour model had a 26 bit style return, manifesting in !Paint aborting apparently on exit from CallAVector trying to pop from an already empty IRQ stack. Fixes ticket #339. Tagged as Colours-1_87
Performance improvements Detail: A selection of performance improvements, mainly focusing around fixing the terrible ColourTrans_SelectTable performance when using the default 256 colour palette in a full 256 colour mode (i.e. not VIDC1 style) s/Header: - Add flag for whether MUL of large or negative numbers is slow s/Commons: - Update palette analysis code so that C256 modes with the default palette can use the same optimised routines as C64 modes with default palette. - Also detect G256 modes with the default palette and add a new set of best/worst colour routines for them - Remove unused ColErr macro and (now inaccurate) ARM2/ARM3 timing calculations - Optimised CompErr macro (used with slow best/worst colour functions). Three different variants depending on CPU, with the Cortex-A8 version being about twice as fast as the original. - Rewrote Find256 macro (used with default 256 colour palette), producing four different versions depending on CPU. Even the ARM2 compatible version should be about twice as fast as the original. - Strip out a few pointless best/worst wrapper functions s/NewModels: - Update ColourTrans_ConvertHSVToRGB to make use of SMULL where supported Admin: Tested on Iyonix, BB-xM, StrongARM RiscPC Palette analysis fix means 256 colour modes using default RO 5 icon sprites (i.e. custom 256 colour palettes) are no longer as slow as treacle. 256 grey modes are also nice and snappy too. Tagged as Colours-1_88
Add new "32K+" translation table format. Fix a couple of bugs. Detail: Since ColourTrans 1.86, the "32K." tables returned by ColourTrans_SelectTable/ColourTrans_GenerateTable can actually be in several different formats, depending on the pixel format of the source mode. However there was no way for a user of that table to determine what format the table was. This change rectifies that, by adding a "32K+" table format which is used whenever a 32K-style table isn't compatible with the RISC OS 3.5 "32K." format. This new format has "32K+" in the two guard words instead of "32K.". To increase compatibility with existing code the middle word is still used to point to the start of the lookup table. But in the bytes preceeding the table a header can be found which describes the structure of the table. File changes: hdr/ColourTran - Describe format of the 32K+ table header s/Header, s/Tables32K - Update code to generate and store the new format tables. Strip out nomessagetransfortables option (assume TRUE). Fix reading of tables from ResourceFS to correctly determine whether files are squashed or not (previously always treated as squashed and copied them to RAM). Add simple caching for addresses of ROM tables so we don't have to pester the filesystem all the time. Fix immortality code to set the immortal flag correctly when generating 32K tables (would previously overwrite a random word in a temp array) Admin: Tested on BB-xM Tagged as Colours-1_89
Use a greyscale palette when screen output is redirected to an alpha mask Detail: s/Header - Update ResourceFS scanning to identify the deafult 8bpp greyscale palette and remember its location s/Palettes - When screen output is switching to an alpha mask, instead of trying to use the sprite's palette use the 8bpp greyscale palette instead. Admin: Tested on Iyonix, BB-xM Tagged as Colours-1_90
Don't trust physical colours to have the bottom byte clear Detail: s/Enhanced - Update 32bpp best/worst colour routines to not assume the bottom byte of the physical colour is clear. Sometimes sprite palettes (and any other values that might get passed in by the user) have junk in there. Also make sure to clear any junk on exit. Admin: Tested in Iyonix ROM softload "T3" backdrop tile is no longer green tinted when in 32bpp red-blue swapped modes (pre-ARMv6 version of best_colour_8888_TRGB was corrupting the green channel due to junk being in the bottom byte of the sprite palette entries) Tagged as Colours-1_91
Logs for castle/RiscOS/Sources/Video/Render/DrawFile from DrawFile-1_57 to DrawFile-1_58
Add support for background blended text and text areas Files saved by !Draw 1.24 or later can opt to have transparent background colour to me use the blending font manager. This is the corresponding change to the renderer. Ordinary text will not be plotted if the *foreground* colour is transparent - this seems to have been a discrepancy between !Draw and DrawFile, DrawFile used to render it in the background colour instead, imagining that this was like a shadow. The spirit of the draw file spec is that the background colour is an optional hint, however. The state flags that end up on Service_DrawObjectRender no longer contain the DrawFile modules internal flags, only those documented. Tagged as DrawFile-1_58
Logs for castle/RiscOS/Sources/Video/Render/Fonts/ITable from ITable-0_16 to ITable-0_18
Internationalised Extra code for the RAM loading version which is included in !Boot for the softloaded FontManager pre RISC OS 3.70. Tagged as ITable-0_17
Add InverseTable_SpriteTable implementation Detail: s/ITable - Added an implementation of ROL's InverseTable_SpriteTable SWI, to allow InverseTable to be used on arbitrary sprites. hdr/ITable - Fix to use SWI base and name from Hdr:SWIs instead of local definitions Admin: Tested on BB-xM Tagged as ITable-0_18
Logs for castle/RiscOS/Sources/Video/Render/Fonts/Manager from Manager-3_74 to Manager-3_76
Update to cope with new pixel formats Detail: s/Fonts01, s/Fonts02 - Cache the current mode flags & NColour values s/Blending - Font blending code improved to add support for new pixel formats. Supremacy blending code split off into seperate file as it's too big for a macro. s/BlendingS - New file containing the guts of the supremacy blending code. Old code only supported supremacy blending in 32bpp &TBGR modes; new code supports supremacy blending in 16bpp 4444 &TBGR, as well as alpha blending in 32bpp &TBGR and 16bpp 4444 &TBGR, and red/blue swapped modes (as well as the main blending code supporting all new RGB modes). Admin: Tested on BB-xM Part of an implementation of the Extended Framebuffer Format Spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as Manager-3_75
Fix issues when font cache is located in high end of RAM Detail: s/Fonts01, s/Fonts04, s/Funcache - Fix comparisons against PIX_UNCACHED to be unsigned instead of signed. Fix another couple of signed range checks which should have been unsigned. s/Fonts01 - Fix 32bit conversion issue in debug code around the SWI dispatcher; was failing to save the PSR correctly and resulting in every SWI in debug builds to throw a spurious error. Admin: Tested on BB-xM Tagged as Manager-3_76
Logs for castle/RiscOS/Sources/Video/Render/Fonts/ROMFonts from ROMFonts-0_76 to ROMFonts-0_77
Build fix To avoid confusion on the round trip of DOS->Unix->RISC OS don't keep the /Base0 and /Default encodings files with that name. For example on Unix this ends up as ".Base0" and ".Default" which are hidden files. Adjust MyDesk macro to perform this transform. Escape the '$' symbols hidden in various strings. Binary inspected manually, looks the same. Tagged as ROMFonts-0_77
Logs for castle/RiscOS/Sources/Video/Render/Hourglass from Hourglass-2_17 to Hourglass-2_19
Internationalised the command help and syntax Deleted RISC OS 2 support. Use defines from OS_Byte and OS_Word headers. Tested in a ROM build, help and syntax looked OK. Tagged as Hourglass-2_18
Make 0 easier to distinguish from 8 Unlike the written word where '0' and 'O' might be confused, a percentage can't contain a 'O'. However as the character set is only 8 pixels wide it is easy to misread '0' and '8'. Altered the character definition to not have a slash. Tagged as Hourglass-2_19
Logs for mixed/RiscOS/Sources/Video/Render/SprExtend from SprExtend-1_51 to SprExtend-1_65
Add support for new sprite types & screen modes Detail: Makefile - Updated to fix a couple of dependency issues and to make c/asmcore the main C file, not c/putscaled Sources/PutScaled - Add a utility routine that's used by the C code to get information about pixel formats Sources/SprAdjSize - Add support for wide masks & RISC OS 5 style sprite mode words Sources/SprExtend - Tidy up workspace by removing lots of unused bits and moving other bits within sight of the C code. Add flag to control whether C or assembler version of SprTrans is used. Query kernel for ECFYOffset/ECHShift locations instead of using hardcoded values in putscaled code. Add fix for garbage debug strings in softloaded debug versions of the module. Sources/SprOp - Add support for wide masks & RISC OS 5 style sprite mode words. Update makepalette16bpp to cope with all the new 16bpp modes. Flag_* -> ModeFlag_* renaming. Move some translation table handling code into a new routine, 'preparettr'. Update checktrans/converttrans to deal with new pixel formats. Sources/SprTrans - If the C version of SprTrans is enabled, disable all of these assembler bits except for the outer loop which steps over each row of the screen Sources/jdcolor - Updated to deal with new pixel formats. 16bpp conversion code split off into new file, Sources/jdcolor16. Sources/jdcolor16 - New file containing the guts of the YUV -> 16bpp conversion code. Gets included multiple times with different options to generate the different conversion routines (code is too big for a macro). c/asmcore - New file containing lots of common code ripped out of c/PutScaled - e.g. workspace definition, main functions for register assignment & instruction generation, and code for pixel format conversion. Pixel format conversion code rewritten to cope with new pixel formats, and code buffer key word generation rewritten to fix a couple of bugs (e.g. some issues with dithering options were observed) c/PutScaled - Ripped out lots of code that's now in c/asmcore. Now just deals with things that are PutScaled-specific, e.g. main plotter loop containing pixel read/write code. Code extended to cope with new pixel formats c/rojpeg, h/jinclude, h/jpegdata - Code extended to cope with new 16bpp conversion routines c/sprtrans - New C implementation of the core per-row transformed sprite plotting code generator. Allows reuse of the extensive pixel conversion code in c/asmcore, and allows for better code generation than the assembler original. h/putscaled - Worksapce definition updated to match assembler version Admin: Tested on BB-xM, plotting lots of different sprites in lots of different modes Plotting of wide mask sprites not supported yet C version of YUV -> 16bpp code currently only deals with traditional &BGR 555 pixel format - code is aware of this and will do conversion to desired format if applicable (although quality may be reduced) Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as SprExtend-1_52
Make SpriteReason_CheckSpriteArea fault alpha masks Detail: Sources/SprOp - CheckSpriteArea now faults any sprite area containing alpha mask sprites. This is probably the best approach for us to take until they're fully supported. Admin: Tested in Iyonix ROM softload Fixes stripey netsurf icon, should hopefully fix reported crashes too. Tagged as SprExtend-1_53
Fix crash when directly producing 16bpp output from JPEGs Detail: c/rojpeg - The init_workspace() function called from jpeg_scan_file() was trashing the YUV -> 16bpp decode function pointer that had been set earlier, causing a nice crash if 16bpp output was actually being used. Now fixed to preserve the pointer when resetting workspace. Admin: Tested on BB-xM Fixes issue reported on forums with Phoenix and JPEG viewers crashing in 16bpp modes: https://www.riscosopen.org/forum/forums/4/topics/2094 Tagged as SprExtend-1_54
Add support for blended sprite & JPEG rendering - alpha masks, alpha channels, and translucency Detail: This big set of changes adds support for the following user-facing APIs, as per ROL's specs: - OS_SpriteOp 52 (PutSpriteScaled) colour mapping, translucency blending, and alpha mask/alpha channel blending - OS_SpriteOp 56 (PutSpriteTransformed) colour mapping, translucency blending, and alpha mask/alpha channel blending - JPEG_Plot[File]Scaled colourmapping & translucency blending - JPEG_Plot[File]Transformed colourmapping & translucency blending Sources/CFSI-JPEG, Sources/PutScaled: - Added exit_oserror exit routine for use by C code. - For SpriteExtend this allows the C code to cause OS_SpriteOp to exit with a given OS error block. - For CFSI-JPEG the error block is returned and ERROR_FATAL is returned to ChangeFSI. Sources/CSupport: - Add definitions for some error codes (matches existing definitions from h/commondefs) Sources/PutScaled: - Stripped out code to look for identity translation tables; now handled by preparettr routine in Sources/SprOp Sources/SWIs, Hdr/SprExtend: - JPEG SWIs updated to add support for alpha-blended and colour mapped JPEG rendering, following ROL's APIs Sources/SprExtend: - Stripped out lots of old build flags which haven't been touched in years. - Strip out assembler SprTrans code generator. - Add new definitions needed for blending & colour mapping. Sources/SprOp: - Updated PutScaled frontend to deal with blending and colour mapping. - Disabled code which was bodging coordinates when dealing with double-pixel modes - it seems to cause a few issues, and the code generator mostly had proper double-pixel support anyway. - Translation table verification and fiddling code rewritten and consolidated into the preparettr routine. C code is now explicitly told what table type is in use and whether it can safely be ignored in favour of using the sprite palette. - Removed code from CheckSpriteArea which was deliberately throwing an error upon seeing alpha-masked sprites; I think the bug that was hiding has been fixed now Sources/SprTrans - Removed the assembler version of the code generator. - Updated to add support for blending and colour mapping c/PutScaled: - Old test code removed. - Updated to add support for blending & colour mapping - Assorted bugs fixed. - A few extra architecture-specific optimisations added. - Some workspace setup code moved to c/asmcore to allow sharing with SprTrans. c/asmcore: - Register allocation code rewritten. Instead of allocating on a first-come, first-served basis, the code now builds a list of which logical registers are needed (and which 'banks' they fall into) and then attempts to allocate them in a more intelligent manner. It still has some failings (e.g. reusing R12 as a general purpose register is currently impossible) but it's a lot more flexible and reliable than the old code. - Core pixel transformation code updated to add support for blending & colour mapping - Added some extra architecture-specific optimisations c/rojpeg: - JPEG option handling updated to avoid trashing any colour mapping descriptor that may have been passed in c/sprtrans: - Updated to add support for blending & colour mapping c/tracing: - Debug assert messages now show filename as well as line number h/commondefs: - Removed old #define's that related to old assembler switches. h/putscaled: - Workspace definition updated to match assembler version. - SprTrans stack workspace structure moved here from c/sprtrans Admin: Tested on BB-xM plotting all major sprite & JPEG types into all modes with all major options Tagged as SprExtend-1_55
Fix rendering of alpha masked sprites when left edge is obscured Detail: Sources/SprOp - Fixed the input address/offset calculation in Go_PutSpriteScaled to store the mask width (in bits) seperately from the image width (in pixels), to avoid image width being incorrectly multiplied by 8 when an alpha masked sprite is encountered Admin: Tested on BB-xM Fixes issue reported on forums with alpha-masked netsurf icons rendering incorrectly: https://www.riscosopen.org/forum/forums/3/topics/309?page=4#posts-25995 Tagged as SprExtend-1_56
Add OS_SpriteOp 38 (CreateRemoveAlpha) implementation. Fix FindMaskWidth. Detail: Sources/SprOp: - Implemented OS_SpriteOp 38. For RISC OS 3.5 sprite types it's effectively the same as ROL's version, allowing conversion to/from alpha masks. - When given a sprite with a RISC OS 5 alpha channel, it will use that as the source of the alpha/mask data, allowing RISC OS 5 alpha channels to be converted to RISC OS 3.5 1bpp masks or Select alpha masks (including converting to a RISC OS 3.5 mode word where possible) - An extra flag (bit 30) has also been added; settings bits 30 & 31 will attempt to convert any existing 1bpp/8bpp mask to a RISC OS 5 alpha channel (or create a default alpha channel if the sprite has no mask). The conversion will fail if the colour depth is such that no alpha channel is possible. - Also fixed regression in FindMaskWidth; when converting from the Kernel version it looks like I missed a couple of lines, and all RISC OS 3.5/RISC OS 5 type mode words would have handled incorrectly Resources/UK/Messages: - Add InvalidSpriteMode error message, for use by OS_SpriteOp 38 Admin: Tested on BB-xM converting various sprites & masks to/from the different formats Tagged as SprExtend-1_57
OS_SpriteOp 38 fixes & improvements Detail: Sources/SprOp: - OS_SpriteOp 38 implementation improved so that it will (almost) always attempt to simplify the sprite mode word (even if not performing any transformation on the data) - Also fixed/improved it to evaluate bit 8 of R3 with respect to the output data, not the input. So reducing from 8bpp to 1bpp with bit 8 set will now cause the mask to be discarded if all the source pixels were above the cutoff, instead of the old behaviour which would have only discarded the mask if all source pixels were 255. - Fixed bug in ExamineAlpha which meant that the 8bpp mask flag was always being cleared - resulting in problems for most conversions (or if the mask was to be left intact) Admin: Tested on BB-xM Tagged as SprExtend-1_58
Fix plots of Y-scaled masks Detail: c/PutScaled - Update r_pixel so that it's available in the Y-loop bank if a Y-scaled mask is being drawn. In this case r_pixel is used as a temp register to help update the ECF pointer. Admin: Tested on BB-xM Fixes issue reported on forums with !Wget application sprite not rendering when dragging-and-dropping it via the filer: https://www.riscosopen.org/forum/forums/4/topics/2141 Tagged as SprExtend-1_59
Fix some sprite rendering issues. Add a new test app. Detail: Bug fixes: - Sources/SprOp: Fixed a bug with PlotMask of old-format sprites not working correctly if the sprite is off the left edge of the screen. Fixed Log2bpp/Log2bpc confusion when plotting to double-pixel modes, caused by double pixel bodge being disabled. - Sources/SprTrans: Fixed transformed plotting of sprites with lefthand wastage drawing the sprite offset if a transformation matrix is used - c/PutScaled: Fixed another double pixel bodge related bug, when plotting double pixel sprites at certain offsets and with the two-at-a-time plotting code Test code: - Test/c/bigtest: A fairly comprehensive test app that generates lots of random sprites in every supported mode, and plots them using all APIs and options into all supported destination modes. Output is redirected to sprites (so the capabilities of the host video hardware are irrelevant), and checked against a model of what the expected output should look like. Also features some JPEG tests. A fast computer is recommended when running the tests! - Test/mkbigtest,fd7: Helper script to build bigtest - Test/bigtest2,ffb: Helper BASIC program to allow easy re-testing of failure cases - Test/JPEGs/*: Test JPEGs and reference sprites which are used by the JPEG test. JPEGs chosen to exercise all the output formats the JPEG code supports. Admin: Tested on BB-xM Tagged as SprExtend-1_60
Update to work with new "32K+" colour translation tables Detail: Sources/SWIs, Sources/SprExtend, Sources/SprOp, c/PutScaled, c/sprtrans, h/putscaled - Cache the sprite NColour value in the save_* workspace Sources/SprOp - Update preparettr to perform extra validation on 32K-style translation tables (old "32K." or new "32K+"). Although we could potentially accept any format table, to cut down on the number of plotter combinations we currently require that the table matches the format that ColourTrans will create when given the source sprite. c/PutScaled, c/sprtrans - Update comments relating to determining input format of TTRType_32K tables Admin: Tested on BB-xM Requires Colours-1_89 Tagged as SprExtend-1_61
Add OS_SpriteOp 65 implementation. Tweak OS_SpriteOp 52 logic for passing the request on to the kernel. Detail: Sources/SprExtend - GET Hdr:GraphicsV, add debug switch for sprite tiling Sources/SprOp - Add OS_SpriteOp 65 (TileSpriteScaled) implementation. Will use OS_Plot to perform hardware-accelerated copies of tiles if no special plot actions are in effect (masking, blending) and the driver indicates copies are fast. For other situations OS_SpriteOp 52 is issued in a simple loop. Also tweak OS_SpriteOp 52 implementation to pass unmasked, true colour sprites to the kernel for rendering - contrary to the old source comment, the kernel is significantly faster at this than SpriteExtend. Admin: Tested on Iyonix, BB-xM Requires HdrSrc-2_42 Tagged as SprExtend-1_62
Fix a few long-standing mask ECF rendering bugs Detail: c/PutScaled - Fix the tail end of loop_y() to update the ECF pointer when simple_y_scale() is true. Without this, unscaled sprites (which didn't fall through to the kernel routine) would have repeated the same ECF row over the whole image instead of displaying the pattern correctly Sources/SprOp, c/PutScaled - Rewrite calculation of initial ECF pointer, both to simplify the code and to fix the calculation of the offset to work with ECF patterns that are 8 rows tall (was previously masking off the top bit of the row number, restricting the pattern to within the first 4 rows). Also the resulting address was off by one row, so even if you had a pattern 4 rows tall then it would still be misaligned when compared to the kernel's vector graphics. Admin: Tested on BB-xM OS_SpriteOp 49, 50, 55 and kernel vector graphics now all seem to be in agreement for how ECF patterns should be rendered, in a variety of modes Tagged as SprExtend-1_63
Fix for stack imbalance In revision 4.17 the extra argument in R5 changed the stack frame, but the 'file not found' error exit was missed. Submission from Rick Murray. Fixes ticket #398. Tagged as SprExtend-1_64
Obscure case null pointer dereference fix If ColourTrans is too old to have wide translation table support for JPEG plotting, module Init would detect this, but fail to clear the V flag and report oflaoflaofla. Tagged as SprExtend-1_65
Logs for castle/RiscOS/Sources/Video/UserI/Display from Display-0_40 to Display-0_41
Add support for new screen modes: 4K/64K colour modes and RGB/alpha variants Detail: Resources/UK/Messages, Resources/Germany/Messages - Add entries M19 and M20 for 4K & 64K colour modes s/Front - Adjust workspace for the two new menu entries. Add definition for the new mode provider block format (referred to as mode descriptor blocks in the sources) s/GetAll - Get Hdr:GraphicsV as the new mode provider block uses the GVPixelFormat structure. Strip out NewShading option; now hard-coded to be true. Add new Allow24bpp option for control over whether we allow 24bpp modes to be used. s/Menu, s/Message, s/Mode - Lots of changes to add support for the new menu entries and handling of the new mode provider block format/pixel formats. Strip out old mode specifier -> string conversion code and instead just rely on OS_ScreenMode 14. Admin: Tested in Tungsten, IOMD, OMAP3 & BCM2835 ROMs Requires HdrSrc-2_38 and Kernel-5_35-4_79_2_203 New German messages are in need of translation Tagged as Display-0_41
Logs for castle/RiscOS/Sources/Video/UserI/Picker from Picker-0_53 to Picker-0_56
Add support for new screen modes Detail: c/rgb - Dither the RGB colourspace image in 4096 colour modes; to me this looks better than leaving it undithered c/tables, h/tables - Cache the NColour value so that RGB code can detect 4K colour modes Admin: Tested on BB-xM Part of an implementation of the Extended Framebuffer Format Spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20S ecification Tagged as Picker-0_54
Less flickery colour picker when the dragged value hasn't changed Only call value_changed_fn when the value has changed during null poll events, in line with the check for change logic in Increment(). Note that steppable_set_value() still sends one event per call as mentioned in the cautionary note at line 535, so when called programmatically the behaviour is unchanged. Tested on a Raspberry Pi, no more shimmering colour swatches. Tagged as Picker-0_55
Fix reporting of events to colourpicker_DIALOGUE_TYPE_CLICK clients Detail: Support011/c/steppable - The fix for issue #339/flickery redraw, combined with the way that Colour_Changed() in dialogue.c filters out colour change events being passed to the colour picker client, meant that if a slider was dragged then a client which is only interested in click events (e.g. Paint) wouldn't receive a message once the drag was complete. Fix this by adding an extra flag to Set_Position(), to allow Set_Position()'s lazy update logic to be suppressed when End_Drag() sets the final position at the end of the drag. This ensures a message will get as far as Colour_Changed(), which will then forward it on to the client due to the drag no longer being in progress. Admin: Tested on BB-xM Fixes selected colour in Paint not updating correctly when dragging sliders Tagged as Picker-0_56
Logs for castle/RiscOS/Sources/Video/UserI/ScrModes from ScrModes-0_35 to ScrModes-0_38
Update to add support for new pixel formats and basic support for multiple GraphicsV drivers Detail: c/ScrModes - All GraphicsV calls now use the current driver number instead of always calling driver 0. Get the list of supported pixel formats via GraphicsV 17 if implemented, otherwise fall back to GraphicsV 8. Generate old or new style mode provider blocks as appropriate. h/modex - Update definitions for new mode provider block format, new control list items Admin: Tested in Tungsten, IOMD, OMAP3, BCM2835 ROMs Requires HdrSrc-2_38 and Kernel-5_35-4_79_2_203 Tagged as ScrModes-0_36
Ensure syncpol word of VIDC list initialised correctly Detail: h/modex - Define the syncpol flags as taking up a full word of space, to avoid bits 2-31 being left undefined when generating a VIDC list, and potentially resulting in wrong interlace setting being used Admin: Tested on Raspberry Pi Tagged as ScrModes-0_37
Pay attention to Service_DisplayChanged Detail: c/ScrModes, cmhg/ScrModesv - Fire off Service_ModeFileChanged whenever we receive Service_DisplayChanged, so that our clients are informed of the fact the mode list may have changed Admin: Tested on Iyonix, BB-xM Tagged as ScrModes-0_38
Logs for castle/RiscOS/Utilities/Autobuild/ABRelease from ABRelease-0_52 to ABRelease-0_59
Add a zip file output to the disc builds Not tested, some scope for cut and paste mistakes Tagged as ABRelease-0_53
Add missing line to SysMerge script for !System update Tagged as ABRelease-0_54
Add networking components to !System.310.Modules in script Tagged as ABRelease-0_55
Clarify readme for disc image Some users were having trouble spotting that to use the boot sequence prior to RISC OS 5 requires merging the !System download Tagged as ABRelease-0_56
Ammend PlingSystem obey script The !SysMerge obey script hadn't taken into account that the sprites files for !System need (one off) moving into a subdirectory to match the !Run and !Boot that it installs. This prevents an error when trying to iconsprites a non existant directory. Tested on RISC OS 4.02. Tagged as ABRelease-0_57
Repoint other-zipfiles URI and improve readme Extra note about needing a universal boot, as well as a variant of the procedure for RISC OS 3 (where there isn't a boot merge tool). Tagged as ABRelease-0_58
Add SSound to the SysMerge installer script Tagged as ABRelease-0_59