Update OMAP3 components file to use new ADFSFiler-less SCSIFilerDetail:
SCSIFiler is now no longer dependent on ADFSFiler's resources, so there's no point
including ADFSFiler in the ROM image.
Admin:
Tested on rev C2 beagleboard
Tagged as BuildSys-4_99

Changes to facilitate platform independence.Detail:
CApp:
* New variable CLEAN_DEPEND is now the preferred way to specify additional
clean actions because GNU make doesn't have an equivalent to amu's :: rules
* Can now indicate preference to use C++ linker options using LINK_TYPE
* Gains install phase support:
+ INSTALLAPPFILES lists the files to be copied, effectively specified
relative to LocalRes$Path
+ Adopted INSTTYPE concept from DDE makefiles for cases where executable
and support files need to be installed to different locations
+ Unusual cases can override this implementation using CUSTOMINSTALLAPP
and/or CUSTOMINSTALLTOOL
CLibrary:
* New variable CLEAN_DEPEND is now the preferred way to specify additional
clean actions because GNU make doesn't have an equivalent to amu's :: rules
* -o is no longer a mandatory argument to libfile - now in ARFLAGS rather
than used explicitly
DbgRules / StdRules:
* Macroised some Norcroft-specific features
HostTools:
* Clean phase support was incomplete
StdTools:
* A few additional tool definitions
* Added macro definitions for common C options
* C's enable-warnings and suppress-function-name-embedding options now on by
default because they're usually (maybe even universally?) used - it won't
hurt if they're specified again by existing makefiles
* C++ now has equivalent INCLUDES and DEFINES variables, and the standard C++
headers are on the default include path
* SEP is defined as the directory separator character and can be used from
top-level makefiles in a platform-independent way
Functionally equivalent versions of the following makefile fragments
have been developed so far for executing on a Posix build host:
AppLibs, CApp, CLibrary, DbgRules, HostTools, StdRules, StdTools
These suport native compilers (when APCS=Host) and cross-compilers,
and GCC (when TOOLCHAIN=GNU) and Norcroft toolchains - typically these
environment variables would be selected by running an Env file.
Admin:
Tested by building as many as possible of the DDE components on RISC OS
and on Linux, using native and cross compilers, and using Norcroft and
GNU toolchains.
Tagged as BuildSys-5_01

Makefile bugfixes, and support for latest CTools buildDetail:
* Fixed dependencies for debug builds in GNUmakefiles/CApp
* Added -f switch to rm in GNUmakefiles/StdTools to make it fail silently
if the file doesn't exist, like the RISC OS version
* Fix for amu complaining if INSTTYPE is undefined in Makefiles/CApp
* Reflected makefile changes in resgen, squeeze and xpand in CTools
component file
* Added a8time to ModuleDB and CTools component file
Admin:
Tested in a C Tools build
Tagged as BuildSys-5_03

Added a couple of new components: JCompMod and SprBounce.Tagged as BuildSys-5_06

Added SparkFS to the ModuleDB. Added JCompMod, SprBounce and SparkFS to Disc build.Tagged as BuildSys-5_07

Fixed the CTools build "Make" entry in the components file.
Also pruned a lot of dead components from the ModuleDB file. I have been
unable to locate sources for any of them in either the closed source or
published source repositories.
Tagged as BuildSys-5_08

Added LibUtils to ModuleDB and BuildHost. Also added Do to BuildHost
Required for building various transient utilities that are found in the
Library directory from source rather than them being binary imports.
Tagged as BuildSys-5_09

Sweeping changes to allow for builds using new directory structure.
The new way to do builds will be to leave source code for almost everything
in place in the relevant subdirectories (e.g. "castle", "bsd", etc) rather
than merge them all into one "Sources" directory. More detail to be put in
the ROOL wiki shortly.
Tagged as BuildSys-5_10

Fix to the CTools Components file to use the closed-source Squash.Tagged as BuildSys-5_11

Improvements to shared makefilesDetail:
* Some subtle bugs can be caused by including shared makefiles in the
wrong order. To try to prevent further problems, and simplify main
makefiles at the same time, CApp, CLibrary and CModule now include the
makefiles they depend upon themselves, in the correct order: generally
speaking, all macro (re)definitions should be before rule definitions.
* Added sentry macro definitions to each makefile. These can be used to
avoid repeated inclusion of makefiles - particularly important now that
CApp, CLibrary and CModule do additional includes. This removes the
majority of cases where amu produced warnings about multiple inclusion;
a few components remain where this is still the case, but these
warnings are harmless. If they bother you, simply remove the
now-superfluous include statements from the relevant main makefile.
* Created a CUtil shared makefile, for building transient utilities. The
'C' in the name is more for consistency with CApp/CLibrary/CModule than
anything to do with the 'C' language, since all of these makefiles work
equally well for assembler and 'C' - the 'C' is for historic reasons.
* Tweaked the debug rules in CApp to avoid harmless but annoying linker
warnings about stubs being included twice.
* Added several new default switches to ASFLAGS. These enable us to start
making assembler source files work under a cross-assembler, because
statements like
GET Hdr:Macros
GET Hdr:Machine.<Machine>
are not portable, and tweaking the cross-assembler to understand these
types of constructs would not be pretty. Instead, with the extra
command line switches now introduced, you can use
GET Macros
GET Machine/$Machine
Admin:
Tested in a ROM build
Tagged as BuildSys-5_12

Bugfix to CModule makefile from previous commitDetail:
A line in this makefile evaluates CFLAGS so that the default static data
relocation and stack checking options can be inserted before any overrides
from the top-level makefile. But this was being done before StdTools was
included, so C_STKCHK had not yet been defined, so if the top-level makefile
tried to use it, it had no effect.
Admin:
Tested using new FrontEnd makefile.
Tagged as BuildSys-5_13

Makefile bugfixDetail:
ModuleLibs used the wrong (non-zM) version of RISC_OSLib. This meant that
any module using the shared makefiles and RISC_OSLib ended up using the
static initialisers instead of static data, meaning that it could not be
reinitialised or multiply instantiated. This was rather critical for the
FrontEnd module, which relies on being reinstantiated for each new tool.
Admin:
Fixes the reported bug in FrontEnd 1.31 - verified it now works with more
than one tool loaded.
Tagged as BuildSys-5_14

Enable some extra modules in IOMD32 components fileDetail:
Components/ROOL/IOMD32 - Enabled some extra modules now that they work: ADFS,
ParallelDeviceDriver, SerialDeviceDriver, SoundDMA
Admin:
Tested in ROM softload on RiscPC.
ADFS floppy support is currently disabled due to not working yet, and Maestro seems
to be able to cause SoundDMA/SoundScheduler to crash.
Tagged as BuildSys-5_18

Update ROM components files to use romlinker instead of BigSplit2Detail:
Components/ROOL/IOMD32, Components/ROOL/OMAP3, Components/ROOL/S3C2440,
Components/ROOL/S3C6410,Components/ROOL/Tungsten - Now all use romlinker as their
joiner instead of BigSplit2. Required change so that the new kernel can find the ROM
build date in the ROM footer.
Components/ROOL/OMAP3 - Use noimagesize option to prevent the ROM image size being
poked into the ROM/HAL at offset &60
Admin:
OMAP & Tungsten ROMs built and tested.
Before my romlinker changes, romlinker was producing identical images to BigSplit2,
so there shouldn't be any critical bugs lurking in the code.
Tagged as BuildSys-5_19

Fixes to shared makefilesDetail:
The change which permitted top-level makefiles to include only CApp,
CModule etc accidentally broke makefiles which included HostTools (StdTools
got included instead and overwrote the HostTools settings). Amazingly, we
seem to have got away with this so far - but fixed now. Also, brought the
GNUmakefiles versions in line with updates to the amu Makefiles in this
and other respects.
Admin:
Tested in a RISC OS ROM build, and for building cross-compiling versions
of the tools.
Tagged as BuildSys-5_21

MineHunt reinstated in disc image after long absence.Tagged as BuildSys-5_22

Add NetTime and VIDC sound setup plugin to disc buildDetail:
Components/ROOL/Disc - Added NetTime and the VIDC sound setup plugin.
Admin:
Disc image builds OK
Version 2.02 or above of the non-VIDC SndSetup plugin required otherwise the VIDC
version will never be launched.
NetTime could do with a configuration window in InetSetup
Tagged as BuildSys-5_32

Add CLEAN_DEPEND support to AAsmModule makefile fragment. Disable VFP/NEON assembler
for Tungsten ROM versions of BASIC.
Detail:
Makefiles/AAsmModule - Added ${CLEAN_DEPEND} as a dependency to the 'clean' rule, to
allow components to extend the default rule. This is the same functionality that the
CApp fragment offers.
Components/ROOL/Tungsten - Disable VFP/NEON support in the BASIC assembler, due to
lack of ROM space.
Admin:
Required changes for BASIC 1.49
Tagged as BuildSys-5_33

Added the CUtil shared makefile - was accidentally omitted from an earlier commitTagged as BuildSys-5_34

Various changes
* Added components file to generate a !System
* Binaries/Browse/BuildEnv/Disc/IOMD32/OMAP4/Printers/Tungsten add heading blocks and
line stuff up
* OMAP3 remove unused switch from FPEmulator
* SysMap add mapping from Sovereign to 'V'
* CTools extra qualifiers on some modules to get help right for modules in the 310
directory
* AAsmModule when CMDHELP=None is in force you can infer that no international help is
desired, therefore pass this as a switch to the module to allow it to remove the
tokens from its help table (based on how the 'standalone' switch is done)
Tagged as BuildSys-5_35

Changes to facilitate platform independence.Detail:
Added shell-script equivalents of !Common and two Env files.
Admin:
Tested by building the DDE tools on Linux.
Tagged as Env-1_09

Tweaks for new way of doing builds. Mainly removing dead cruft.Tagged as Env-1_10

Tweak the Filer_Boot-ing of some apps.
If these apps were already booted in a different build then the filer boot
in a new build does nothing (e.g. you'll still be using the apps in the
original build in your new build). This is a particular problem if the old
build has been deleted in the mean time...
Tagged as Env-1_11

Add new HALSize variable to env filesDetail:
HALSize is a new environment variable supported by the OMAP3 HAL & Cortex kernel. As
you'd expect, it's used to indicate the size of the HAL.
The variable is actually used to select from one of several HALSize files in HdrSrc,
much like the ImageSize variable.
The OMAP3 env file is set to use a 96K HAL, the other builds are set to 64K.
Apart from changing the HALSize setting, currently you also have to remember to
change the Kernel offset in the corresponding components file.
Admin:
Needed for my next batch of checkins to work.
Tagged as Env-1_12

Added Env files for S3C2440 and S3C6410 buildsDetail:
These use Machine=32 and Machine=ARM11ZF respectively
Admin:
Based on a code submission from Tom Walker
Tagged as Env-1_13

Changes to facilitate platform independence.Detail:
* Build/aoftoc: Import of RISC OS binary of this previously internal tool
used to embed ARM code fragments in generic executables. Allows
harmonisation of the native and cross-compiling build processes for
tools like cmhg and squeeze.
* Build/InstRes: This is a new script to allow components' install and
resources phases to be written in a platform-independent manner. Target
Perl installations are the RISC OS port of Perl 5.001 (distributed by
ROOL), and any Perl which internally uses Posix-style filespecs - this
includes Cygwin, Linux and Mac OS X versions of Perl, as well as later
RISC OS ports based on UnixLib.
* Misc/TidyDesc: Modified to accept the ouput of the GCC preprocessor in
addition to the Norcroft one. Also added support for backslash escaping
so the preprocessor can be used for string substitution in a wider
variety of of files.
Admin:
Tested by building components on RISC OS and Linux, using Norcroft and GCC.
Tagged as Library-1_37

AwkVers using wrong token from VersionNum.
Should be using Module_ApplicationDate since it's used for messages files for
applications.
Tagged as Library-1_38

Updated some tool binariesDetail:
The previous aoftoc binary appeared to be broken - gave me undefined
instruction errors on an Iyonix. Also took the opportunity to update
binaries which are also going out on the next C tools release, since
the previous versions were 2 years old and will have pre-dated ARMv7
compatibility.
Admin:
Tested in a C Tools build.
Tagged as Library-1_39

Binary import of a number of components.
Tweaked InstallTools script to install the C++ libraries.
Admin: srcbuild WILL NOT WORK IN CURRENT BUILDS!!! To be addressed shortly...
Tagged as Library-1_40

Correction to previous check-in: THIS version has the srcbuild binary which
will break all of the current builds. You'll need a new Env, BuildSys and some
other stuff to build with this Library. Should all be in place today.
Tagged as Library-1_41

Updated to latest sources (and rebuilt with the same updates).Tagged as Library-1_42

I've given up on the 'open' modsqz and unmodsqz - they don't work.
There is something subtly broken in CLXLite meaning that modsqz and unmodsqz
don't work. The versions in this commit are from building against the closed
CLX library instead.
Tagged as Library-1_43

Update romlinker to version 0.04Detail:
Build/romlinker,ff8 - Updated to a build of version 0.04, to add support for some
new features
Admin:
New romlinker binary tested with building & running OMAP & Tungsten ROMs
Tagged as Library-1_45

Updates to ToolOptions fileDetail:
* Alias for objasm sets correct -cpu and -fpu flags for v6/v7 architecture
builds if you're using a version of objasm (>= 4.00) that supports them
* Corrected Machine Any32 to All32 to match HdrSrc
Admin:
Tested with objasm 3 and 4
Tagged as Library-1_46

Workaround for ROL OS versionsDetail:
It seems that RISC OS 4.39, 4.42 and 6.x have a bug/misfeature that they
can't execute directories.
Admin:
Fix provided by Willi Theiß
Tagged as Library-1_47

Fix to earlier commitDetail:
To avoid lots of link warnings, we need to explicitly set the APCS calling
standard to a FPA variant when specifying a CPU with a VFP - at the moment,
the C compiler is only able to output FPA code, which then conflicts with
the ObjAsm object files.
Admin:
Tested in an OMAP3 ROM build
Tagged as Library-1_48

Fix ToolOptions to detect old versions of objasm properlyDetail:
ToolOptions/APCS-32,feb - Apart from checking the 'objasm -h' return code, the
script now also does a grep of the output to look for 'Target cpu not recognised'
errors, since those don't seem to cause a non-zero return code to be set
Admin:
Fixes wrong options being used with objasm 3.32.
I haven't actually tested a full build yet, but I'm guessing it'll work now.
Tagged as Library-1_49

Allow Hdr2H to cope with more forms of # directiveDetail:
Build/Hdr2H,102 - Now copes with # directives which have no identifier on the left
hand side.
Admin:
Tested with building an OMAP3 ROM
Tagged as Library-1_50

Remove private tokenisation scheme.
Dating back to the early 90's !Alarm has tried tokenising its help messages to save
space using a tick mark '`'. However, post RISC OS 3.70 all help tokens get tokenised
at ROM time, but this results in tokenised tokenised tokens which therefore don't get
expanded.
Also now uses centralised Awk script for substituting '_Version'.
Fixes ticket #231.
Tagged as Alarm-2_80

Fix fatal error when probing for TimeSetup plugin when no BootResources, wasn't using
*X*OS_File.
Simplified PROCinit_timediff and PROCtime_diff.
Was reading from Choices$Write, made the compare of current filename with default
filename case insensitive.
Loading of Alarm:Code wasn't flushing the I cache.
No longer reassembles the Alarm$Free variable when not needed.
OptSav removed from messages file, simply placed in the code as its location is fixed
in the boot sequence.
Choices dialogue now says "DST starts/ends on" not "BST starts/ends on".
Turned off the close icons on those windows that don't merit them, removed the code
that did that.
A number of things got broken in the template changes from 2.79
* The UK translation of the 'alarm' dialogue had the wrong icon numbers, so the
repeating alarm buttons didn't do the right thing
* The set clock title erroneously said "Set alarm"
* The cunning alignment of icons in the 'alarm' dialogue was lost so with 3D borders
turned off some of the repeating alarm icons were still partly visible
* Some of the up/down arrow pairs were spaced out differently within one window
which were corrected in the Germany copy and propagated back to UK.
Tagged as Alarm-2_81

Change to use shared JPEG library code.
Fix some easy warnings.
Swap to use centralised AWK script to get the version number into the messages.
Removed one use of _swi.
Refer to FileType_ using the filetypes header file.
Fixed linkmap target to link with the libraries.
Rationalise headers a bit.
Tagged as Draw-1_16

Summary:
Fixed bug ticket #137 - resizing objects using the drag box is dodgy
Detail:
Stopped the bottom right hand corner of a selection jumping to the
pointer when a change shape drag is initiated.
Admin:
Tested on Iyonix RO517
Author:
Colin Granville
Tagged as Draw-1_17

Fix sprite plotting with SpriteExtend 1.43 and later.
In numerous places where a sprite area isn't strictly necessary !Draw was passing in a
bogus area address of 0xFF, this is now rejected by SpriteExtend.
Changed to use define UNUSED_SA and set this to an address which is at least in the
application slot and word aligned.
Tested briefly - sprites now appear again.
Tagged as Draw-1_19

Fix abort when sorting the sprites by name and one or more sprite viewers
are open, also massively simplified it since the copying around of
main_sprite blocks was pointless - much simpler to just rejoin the linked
list leaving the data in place.
*Tidy up
Delete awk.*, change to use central 'AwkVers' script.
Delete h.types.
Delete h.Paint, it's a duplicate of h.main.
Delete writepixel, swap to using the one in RISCOS_Lib
Retire 'h.fixes', switches collapsed, bugfixes proven after 18 years use.
Cast away some warnings.
Sprinkled in some consts, moved pointer qualifiers to get syntax colouring
right.
Remove local SWI defines, read from <swis.h> now.
!MkInstall now installs into <Install$Dir>.Apps
*Little UI changes
Make the colour number in the colour picker be in the right place vertically
and correct horizontal position of 'T' and 'E' for ECFs.
In the create new sprite dialogue box the 32k and 16M options are shaded
when a palette is requested, this avoids the problem of selecting a deep
colour mode (which trapped the radio icon in a shaded paletted selection).
The 'Selection' menu is now shaded when there are zero sprites in the
file
*Sprite filer
Fix tiled main window fill to work in EX0 modes and not overwrite in EX2
modes (was using the sprite's mode word not the current mode to deduce eigen
factors), leading to odd chequer board areas not being redrawn.
Refactored main_clear_background() to use stronger typing of RISC_OSLib
rather than _swix where possible.
A failure to get the Wimp pixel translation table now falls back to solid
fill
Double clicking on a sprite in the sprite file window no longer leaves it
selected, to mimic the filer.
Set DISPLAY_MARGIN to 0 to counter for the recent increase from 32 to 40
of main_FILER_TextHeight
Added 'Sort by size' after 'Sort by name'
Tagged as Paint-2_02

Prune the plethora of targets a bit.
Spurious ';' after an if at line 2386 of c.Main deleted, something to do with scroll
wheel support. Untested.
Refer to FileType_ using the filetypes header file.
Internationalised "Selection" when saving a sprite selection.
main_save_selection wasn't checking if fwrite() worked so never reported 'disc full'.
Turn on egg timer during main_save_selection().
Fix (de)selection bug when in full sprite info view, the 'spritesperrow' was being
rounded down to zero, and unlike everywhere else it wasn't being adjusted back to a
minimum of 1.
Tagged as Paint-2_03

Simplify _swix to os_swix.
Function main_icon_bboxes() reordered to only call the SWIs it needs to fulfil the
requested information.
Tagged as Paint-2_04

Switch to using common JPEG code in RISC_OSLib.
Allows better sharing when !Draw is also in ROM.
Fix long (long) standing bug of not being able to drag JPEGs into !Paint using the RAM
transfer protocol - some dubious pointer arithmetic meant the wrong address of JPEG
data was used and so gave an error.
The 3 paths that result in a JPEG->Sprite conversion now share code too.
Remove local definition of FileType_JPEG, use that in the exports.
Tagged as Paint-2_05

Fix crashes when dragging from the sprite filer to the filer to save sprite(s).
The use of DragASprite tended to cause an abort somewhere in the kernel's sprite
handling code for some reason, changed this to instead create a temporary WIMP icon on
the sprite filer in question which can than be referred to in a normal call to
xfersend(). The rest of the save is then handled by the normal xfersend() handlers and
the temporary icon destroyed since the WIMP takes a copy anyway.
Has the extra benefits
* Dragging from the sprite filer now obeys the 'solid drag' flags.
* Dragging from the sprite filer no longer crashes if dropping back on the
originating filer window itself.
When dragging a selection from the filer the selection is cleared at the end of the
drag, to match the behaviour of the desktop filer. When saving a selection from the
'Selection' menu, they are not deselected.
Changed to use the 'package' icon when dragging multiple sprites, or file_ff9 for
singles.
Tagged as Paint-2_06

Colour picker help made more helpful.
Previously, the help requests would end up in the background event handler which
didn't look at the window handle and would just return "This is paint" even if the
handle was that of the colour picker dialogue.
Also now passes documented 0x80000000 and 0x7FFFFFFF on opening rather than zero.
Tagged as Paint-2_07

Fix CATCH_SIGNALS code to report the right error if WIMP$ScrapDir is undefinedDetail:
c/Main - Previously the signal handling code was using a pointer to the original
error block when reporting the error to the user. This could cause the wrong error
to be reported in some situations (e.g. if WIMP$ScrapDir is undefined). Instead, the
code now stores a copy of the error block on the stack.
Admin:
Tested on rev A2 BB-xM
Tagged as Paint-2_08

Failure to plot JPEG would not switch output back.
Always switches back now before reporting the error.
Tagged as Paint-2_09

Squash the sprites used by the Desktop moduleDetail:
Makefile - Use Squash to compress the startup banner spritefile. Saves about 40k of
ROM space.
s/Desktop - Add code for loading the squashed sprites.
Admin:
Tested in ROM softload on Iyonix
Tagged as Desktop-2_71

Make the banner show the year from *FX0.
To save the effort of the annual change to this module's resources, new option
"DateFromKernel" will get the year from OS_Byte 0 and patch the template at time of
display. If any part of it fails the banner just shows (C) Owner by default with no
year.
Changed 'true' to objasm {TRUE}.
Optimised away a whole word of workspace (WindowHandle) by more cunning stack push and
pop before displaying the banner.
Added check that the file passed to Squash is actually a Squash file, otherwise module
exploded if soft loaded onto old resources.
Fix problem of oflaofla error if the Squash module was exhausted (ie. status code was
non 0), previously this was treated as an error block and passed via R9 to
OS_GenerateError - now both duff squash files and failure to decompress give a 'Bad
sprite area' error.
Updated comment about Wimp 2.00.
An ADR to Desktop_Title didn't reach for the old banner case.
ExitDisplay2 optimised away.
Tested softloaded on top of 5.17 ROM.
Tagged as Desktop-2_72

Fix missing 'Refresh' option in filer menuDetail:
A bad merge of some kind meant that the size of m_main was decreased by one entry
between revisions 4.5 and 4.6 of s/WkspEtc, causing the menu code to chop the last
item off of the menu (the 'Refresh' item, as listed in s/MenuCreate).
This change fixes the size of m_main so that the number of items matches the number
in s/MenuCreate.
Admin:
Tested on rev C2 beagleboard.
Fixes bug #233.
Tagged as Filer-2_23

Correct sprite name clamping while looking for sm!app
A previous fix in Filer-2_10 had changed the concatenation to be clamped at 10 letters
so it doesn't overflow the buffer for long app names. However, having failed to find
'sm!app' it then just tried adding 2 to the string pointer therefore looking for a 10
letter sprite '!app'.
This is different behaviour to before Filer-2_10, which would have overrun thebuffer
but at least looked for a full 12 letter name.
Optimised strncat a bit.
Put unused source file in the attic.
Trimmed some bug fix switches dating back to 1989.
Tagged as Filer-2_24

Fill in missing interactive help.
New arrivals 'Refresh' and 'Reverse sort' caused errors when used with !Help due to
missing tokens. Volunteers from Germany sought.
Tagged as Filer-2_25

Fix for 'set type' writeable icon being out of step with the disc.
Adjust clicking would recreate the menu immediately after the operation but before the
next wimp poll when the directory gets recached, so the first entry in the cache is
manually fixed up so the recreated menu is right (the files all get refreshed later
anyway).
Collapsed switch 'Fix003', after 21 years of testing it's safe to assume it's good.
Reinstated ExtractCMOSOptions conditional on not OptionsAreInRAM so that combination
still assembles.
Optimise MUL/ADD into MLA where possible, and set 'S' flag on ALU operations when
followed by TEQ#0.
Tested with & without filer action running, fixes ticket 254.
Tagged as Filer-2_26

Fix bug in sort-by-size mode for files > 2G.
A signed comparison meant the larger files appeared last and in reverse order. Fixed
by using an effective 40 bit compare by ripping off the date sorting code.
Also made all the reverse sort versions use common sorting by using ALTENTRY macros
for the forware sort versions.
Tagged as Filer-2_27

Respect the sort direction in the event of a tie break.
Behaviour now matches 2.26 again.
Also, sort by name no longer preserves r0-r3 because the PRM says we can trash them.
Tagged as Filer-2_28

Adjust dragging to drive icons no longer attempts to reference a deleted dir viewer.
In the case of adjust dragging from one dir viewer to another it is safe to call
CloseInitiatingDir because the operation is handled entirely internally. In the case
of adjust dragging to a drive icon the dir viewer must be kept until after the next
wimp poll so that the selection can be retrieved and the copy operation started.
DelViews.s: made the stack frame a bit more reasonably sized
GoFiler.s: removed some unused messages from the message list
MsgsIn.s: removed the corresponding dead switch
Tagged as Filer-2_29

Fixed progress bar bug in Filer Action.
Progress bar was wrong during a CopyMove operation that required more
memory than the available wimp slot.
Tagged as FilerAct-0_50

Fix display of bytes-to-go when there are > 2G left.
Was doing a widening cast of a signed number to 64 bits, so showed 16 trillion bytes
remaining.
Fix templates to not say "stuff" by default in the name, as this was left on screen if
an error occured before processing began.
Things that read from clock() now use clock_t.
Uncurled some "} else {" to match all the other files.
Deleted the USE_LONG_LONG switch, it's been needed ever since harddiscs got bigger
than 4G anyway.
Anything assigned 'Yes' or 'No' changed to type BOOL.
Variable 'source_of_finished_file' was signalling that a directory had been copied by
setting the length to a -ve number. This has been refactored to use a BOOL instead, so
files can have top bit set sizes.
Fix bug in stack grab in count_objects_in_dir(), was grabbing an array of 2048
pointers (=8k) not 2048 bytes.
Functions bytes_left_to_read() and bytes_left_to_write() reprototyped to return
uint32_t not signed numbers.
Still falls over copying files > 2G, but at least it gets the display right!
Tagged as FilerAct-0_51

More BOOLs and things changed to C99 types.
Basically the same as version 0.51 otherwise.
Tagged as FilerAct-0_52

Swap magic constants for defines from headers.
OS_FSControl, OS_File, OS_GBPB, OS_Args, OS_Find now use HighFSI.h.
Indentation made more consistent.
Variety of DEBUG macros changed to allow them to be enabled and disabled on a per-file
basis.
Put USE_RED_ERROR box switch into options.h (undefined though).
Functionally equivalent to 0.52, but lots of diffs.
Tagged as FilerAct-0_53

Fix to work with files > 2G.
A good rake over the code to change filesizes to be uint32_t not ints.
Change makefile to use StdTools.
Shuffle icon clipping in the templates to allow for maximal numbers by moving the text
a bit to the right, still fits even in system font.
A couple more ints swapped for BOOLs.
The memmanage code is largely unchanged and makes extensive use of signed numbers,
partly because the wimpslot setting API does. This will all fall over in a big mess if
the wimpslot ever gets >2G, but then the API would need changing for that to happen
anyway.
Function count_objects_in_dir swapped to use os_gbpb.
Structure search_nest_level gains a 'counted' flag rather than signalling counting is
needed by setting the filesize to -1.
Should now be good for up to 4 billion files each of 4 billion bytes.
Tagged as FilerAct-0_54

Fix pinboard save code returning corrupt error pointersDetail:
s/Save - After the 'dot check' or DoSave resulted in an error being generated,
IntSave_KeyPressed was pulling R0 from the stack instead of returning the error
block pointer. This typically results in ofla errors on an Iyonix or alignment
faults on a beagleboard.
Admin:
Tested on BB-xM rev A3. Errors due to no dot in the filename, or DoSave failing, are
now reported correctly.
Tagged as Pinboard-0_89

Summary:
Add Message_ToggleBackdrop to allow the backdrop to be moved to front or back.
Detail:
The Message_ToggleBackdrop has been introduced by ROL in one of their Select
releases. In order to bring the RISC OS 5 API closer the ROL branch this
changeset aims to add this message to RO5.
Applications can broadcast Message_ToggleBackdrop to request that the backdrop
application moves the backdrop. The message can be used to move the backdrop
to the front, the back, toggle it or to get notified of the backdrop's
current position.
After the backdrop has been moved, this message is sent back to the
application to notify it of the backdrop's new position.
Message_ToggleBackdrop &400D1:
+0 = 24 (Message size)
+4 = Backdrop controlling application
+8 = My reference number
+12 = Your reference number
+16 = &400D1 (Message_ToggleBackdrop)
+20 = Flags (if not present, assumed 0)
b0-1 = type of toggle
0 = toggle
1 = front
2 = back
3 = notify of status
other = reserved
Admin:
Tested on RO 5.16
Author:
Fred Graute
Tagged as Pinboard-0_90

Fixed so that it builds. There was a PC-relative LDR out-of-range error.Tagged as Pinboard-0_91

Restore *AddTinyDir <nothing> functionality.
See ticket #283.
Moved 'Status' document into Docs.
Merged 'Changes' into 'BlackLog' and delete.
Expanded 2x POPs of lr/pc cos ARM deprecated it.
Combined 2x MUL/ADD into MLA so the module is the same size.
Tagged as Pinboard-0_92

Shade "Configure..." when boot was unsuccessful.
When BootResources$Path is unset the option to run the configure plugin is no longer
available.
Shared a "Filer_Run " string in 3x places.
Replaced most occurrences of calling XOS_ReadModeVariable of the current mode's XEig
and YEig factors to use the cached copy sitting unloved in the workspace. Should
thrash less during redraw.
Tagged as Pinboard-0_93

Fix caching of backdrop spritesDetail:
s/Backdrop - The tidying up in revision 4.8 caused a vital "MOV r0,#-1" to be lost,
causing the wrong mode to be used when fetching the screen BPP. As a result, caching
the sprite would fail if the sprite was in a lower BPP than the current screen mode,
as the calculated sprite area size would have been too small. This fixes that.
Admin:
Tested on rev A2 BB-xM.
Sprite backdrops now seem to work again.
Tagged as Pinboard-0_94

Fix occasional alignment exceptions on ARMv6+Detail:
s/Switcher - As described in bug #256, sometimes the Switcher will crash if the task
display window is open while launching Edit. The cause was that single_resize was
not checking for the case that dragBar==-1 or dragBar==-2, resulting in an alignment
fault when attempting to load icb_taskage from the icon block.
Also fixed reinitramfsfiler to cope with the possibility of dragBar being a top bit
set pointer.
Admin:
Tested on BB-xM rev A3.
Fixes bug #256.
Tagged as Switcher-1_30

Fix reinitramfsfiler logicDetail:
s/Switcher - My previous checkin broke the reinitramfsfiler logic, causing the
StartFiler service call to not be sent when it should have been.
Admin:
Tested properly this time; RAM disc creation/resizing/destruction works properly now.
Tagged as Switcher-1_31

Modified the main window to open at a sensible position and size.
The main window now opens centred on screen and as large as it can without
being too big (i.e. still leave some of the screen free around it).
Also tweaked the open_centre function to calculate the correct amount (was
one pixel out!).
Tagged as Switcher-1_32

Update to use OSRSI6 headerDetail:
s/Switcher - Updated to use OSRSI6 header for OS_ReadSysInfo 6 item code instead of
a magic number
Admin:
Tested on rev A2 BB-xM
Not tagged

Missing ellipsis on "Configure" menu entry added.
Style guide says so when it leads to a persistent dialogue.
Tagged as Switcher-1_33

Split Pull "r1,lr,pc" into two, now deprecated.
Not tested, should be OK.
Tagged as Switcher-1_34

Remove assembly time switch UseOSD6and7, detect at runtime since the differences are
small.
Trim out years of change history -> BlackLog.
Use -1 as a bogus stack pointer, not 'bignum'.
Put resources at the end.
Tagged as Switcher-1_35

Fix a few nasty Wimp bugsDetail:
s/Wimp05 (setcaretcoords_fancy), s/Wimp07 - Fix some dodgy comments that had
trailing backslashes, causing the next line of code to be gobbled by objasm and
omitted from the compiled code. The code in question has been around for a long
time, so I guess a recent objasm change (or the switch from aasm) has caused the
dodgy comments to turn malicious. The setcaretcoords_fancy bug was the cause of bug
#241 in the ROOL tracker.
s/Wimp05 (int_set_caret_position) - While testing the #241 fix, I found that opening
the filer 'rename' menu, typing text (enough to cause the icon to scroll), and then
clicking away to close the menu would cause an infinite abort loop. The cause seemed
to be int_set_caret_position mistakenly setting the caret window ptr to 0 instead of
nullptr (-1), which would then cause setwindowptrs to die when it tried
dereferencing what it thought was a valid pointer. Although initially confused about
how this bug has gone unnoticed so far, I've now realised the abort was just down to
alignment exceptions being turned on and the code would have "worked" on <=ARMv5.
Admin:
Tested on rev C2 beagleboard.
Fixes bug #241.
Tagged as Wimp-5_08

Make the Wimp automatically switch VFP contextsDetail:
s/Wimp, s/Wimp01, s/Wimp02, s/Wimp03, s/Wimp07 - The Wimp now uses the VFPSupport
module to switch VFP contexts when performing task switches.
Each task begins with the null context active (i.e. no VFP/NEON access). When paging
out a task the ID of the active context is saved in the Wimp's per-task workspace.
This context is then restored when the task is about to be resumed.
Context save/restore is performed while the right task's memory is paged in, so it's
safe to use with contexts located in application space.
Admin:
Tested with Iyonix & Beagle ROM builds.
Tagged as Wimp-5_09

Update checkhandle to check that window pointers are word alignedDetail:
s/Wimp04 - The checkhandle* routines now checks that the window pointer is word
aligned before attempting to load any data from it.
This prevents alignment faults on ARMv6+, and should result in more accurate sanity
checks in general.
Admin:
Tested on rev C2 beagleboard.
Fixes issue reported on forums:
http://www.riscosopen.org/forum/forums/5/topics/517
Tagged as Wimp-5_10

Reintroduced support for IOMD machinesDetail:
There was no "Ver" file for Machine=32, and the code for build switch
settings appropriate for IOMD had not been kept up-to-date with various
changes to the module which were made to support Tungsten. This version
provides working IDE support for IOMD HAL builds, although there are
still some issues with floppy support. Tungsten builds should be
functionally identical.
Admin:
Tested on a Risc PC. Joint development effort by Tom Walker and Ben Avison.
Tagged as ADFS-3_37

IOMD/HAL build fixesDetail:
s/Adfs12 - Don't use DefaultIDEHardware in HAL builds, use the proper addresses
instead
s/Adfs19 - Make floppy code use HAL_ControllerAddress to get 82C710 address in
non-PCI, non-Podule, HAL builds. However floppy code is currently disabled in this
configuration because it hangs the machine when floppy access is attempted.
s/Consts, s/StaticsIDE - Get rid of some bad address constants for HAL builds
Admin:
Tested in Iyonix & IOMD ROM softloads.
Tagged as ADFS-3_38

Update to work with zero page relocationDetail:
s/ADFS, s/Adfs00, s/Adfs50 - Use OS_ReadSysInfo 6 to get ESC_Status location and
store it in module workspace
s/Adfs05 - Updated debug code to use OS_ReadSysInfo 6 to get IRQsema location.
Updated CheckEscape to use local ESC_Status pointer, and updated it to only be
compiled if it's actually needed
s/Adfs10, s/Adfs14, s/Adfs15, s/Adfs17 - Use local ESC_Status pointer
Admin:
Tested (with low processor vectors) in Iyonix ROM softload
Note that FIQ handlers haven't been updated to support high vectors, since they
aren't currently used on any hardware capable of using high vectors
Tagged as ADFS-3_40

Update to use some of the exported FileCore headers.
There are still a large number of local copies that should be visited, but this change
at least allows it to assemble again FileCore-3_45.
Tungsten and IOMD variants assemble, but others untested.
Tagged as ADFS-3_41

Modify ADFSFiler/SCSIFiler sources so that SCSIFiler is no longer dependent on
ADFSFiler's resources and resource path variable
Detail:
s/ADFSFiler - Instead of blindly loading its templates from ADFSFiler:Templates,
SCSIFiler now tries two locations - SCSFiler:Templates and ADFSFiler:Templates
Makefile - By specifying the 'SCSITEMPLATES=yes' option, the shared templates file
will now be placed in SCSIFiler's resources instead of just ADFSFiler's.
Together these changes allow ADFS-less builds (e.g. OMAP) to avoid including the
ADFSFiler module in their ROM, thus saving a bit of extra space and avoiding any
issues caused by ADFSFiler not behaving sensibly when the ADFS module isn't present
Admin:
Tested on rev C2 beagleboard.
Tagged as ADFSFiler-1_00

Fix ADFSFiler/SCSIFiler to refuse to start their WIMP task if ADFS/SCSI module is
missing
Detail:
s/ADFSFiler - For as long as CVS history has recorded, SetUpIconBar has always had
the behaviour of exiting with EXITS if the first ADFS/SCSI SWI call fails. This was
causing the calling code to think that everything was fine, when really the module
should have reported the error to the user/system. This has no been fixed, so
attempting to start ADFSFiler/SCSIFiler without the underlying FS module being
available now results in an error message.
Admin:
Tested on rev C2 beagleboard (ADFSFiler+SCSIFiler in ROM), plus with ADFSFiler
softload on Iyonix.
Tagged as ADFSFiler-1_01

Fix errors on attempting to backup or verify.
Firstly, when ADFS is not in ROM there are no ADFSFiler resources, and the verify and
backup templates were being read from that directory. Copied the logic from
s.ADFSFiler to try SCSIFiler resources first and fallback if absent.
This then exposed some code in the backup loop that had been missed in 32 bitting,
leading to an explosion on the first UpCall.
Trimmed out a few unnecessary instructions so the module hasn't got any bigger.
Deleted 2D templates.
Tagged as ADFSFiler-1_02

Update to use some of the exported FileCore headers.
There are still a large number of local copies that should be visited, but this change
at least allows it to assemble again FileCore-3_45.
Tagged as ADFSFiler-1_03

Change drive search orderDetail:
s/Open - CDFS now searches for drives starting from card 3 instead of card 0.
This should help things work a bit better when dealing with fake SCSI devices
(CDFSSoftATAPI, CDFaker, etc.) - assuming 4 SCSI cards aren't fitted, the fake
devices will now all claim the unused SCSI device IDs on card 3 instead of claiming
card 0 IDs which may later get used by SCSI or USB devices.
Admin:
Tested in Iyonix ROM softload
Tagged as CDFS-2_50

Combat slow USB devices on boot by making OS_FSControl 15 auto-retry when SCSIFS
"drive empty" errors are generated
Detail:
s/FileCore60 - DoOsFunBootup now detects when a SCSIFS "drive empty" error is
returned by IdentifyCurrentDisc. Instead of returning with an error, the boot
operation will instead be retried, to give slow/unlucky USB devices a chance to
finish initialising. Escape can be used to cancel the retry loop, just in case.
Resources/UK/Messages - Added new 'RetryBoot' message which is shown when the retry
loop starts
Admin:
Tested on rev A2 BB-xM. Machine now boots correctly in situations where the required
USB device hasn't initialised by the time OS_FSControl 15 is called.
New message token (RetryBoot) needs translating.
Tagged as FileCore-3_37

Fixed some code which could have unpredictable behaviour on 26 bit ARMs.Tagged as FileCore-3_38

Update to work with zero page relocationDetail:
s/FileCore, s/FileCore00, s/InitDieSvc - Try using OS_ReadSysInfo 6 to get IRQsema &
CannotReset locations before falling back on legacy values. Store results in module
workspace.
s/FileCore05 - Commented out unused CheckEscape routine to avoid having to update it
s/FileCore15 - Debugging code updated to use OS_ReadSysInfo 6 to fetch IRQsema ptr.
Can't always rely on workspace version since workspace might not be set up yet.
s/FileCore25, s/FileCore30, s/FileCore80 - Use IRQsema & CannotReset pointers from
workspace
Admin:
Tested on rev A2 BB-xM
Tagged as FileCore-3_39

Fix for alignment exception on ARMv7Detail:
The Density field in the disc record is a byte at a non-word-aligned address
but it was being loaded here with an LDR instruction. There is actually a
pre-existing bug here, since the code at lines 904-905 would only have been
executed on earlier CPUs if SectorSize, SecsPerTrk and Heads were all zero
too. This would correspond to an implausibly small hard disc, so arguably
this part of the branch should perhaps be removed altogether?
Admin:
Untested at ROOL.
Submission from Willi Theiß [comments above are my own - BA]
Tagged as FileCore-3_40

Fix *DEFECT crashing when an object occupies the defect disc address.
R5 was being reused as the loop exit instead of R9.
Synced code with *CHECKMAP a bit since they have the same heritage.
Untangle the spaghetti around TermCommon and UnTermCommon.
In the module init, skip a store when the flags don't change.
Tested with a RAM disc filled with autogenerated nested directories and a loop blindly
trying to defect everything - works fine now. Ticket #114.
Tagged as FileCore-3_41

Make debug versions assemble again.
Entry macro renamed as SemEntry to avoid conflict with Hdr:Proc.
Other macro bit rot fixed up.
Tidy up switches.
DebugFx switch is the only one that doesn't work.
Non debug binary same as 3.41.
Tagged as FileCore-3_42

Suspicious PC fiddling exorcised.
R8 was being used to remember the C bit, by copying from the PC. Swapped to use RRX
instead.
Tagged as FileCore-3_43

Fix bug in DetermineDiscType.
When failed to identify, and the last operation was format, the DiscSize2 field was
not being copied (instead DiscSize is copied twice).
Fix up some warnings from the assembler.
Tested briefly with a RAM disc, still works.
Tagged as FileCore-3_44

Revise exports in "hdr.FileCore".
Now, for each SWI call there is a definition of any pertinent structures it asks for
and definitions of any bitfields within those flags. This avoids the need for clients
to endlessly redefine these locally (in practice it looks like sections of FileCore
were simply copy and pasted into clients RAMFS/SCSIFS/ADFS). Delete private
definitions.
This binary was carefully checked to be identical since so many locations were changed.
Then, the following additional changes:
* InitDieSvc line 74, the floppy config is extracted using a mask and shift rather
than reaching up the stack
* Identify lin 1254, the superfluous instruction marked as such deleted
* FileCore15 line 762 recoded the check for background op to not need the bit number
defined any more
* FileCore00 moved the label 'anull' to be word aligned guaranteed
The duff pointer marker ('nowt' = &40000000) is no longer used to mark territory
translation tables as invalid as that address is now quite reasonable. -1 is used
instead.
Tagged as FileCore-3_45

Teach FileCore_LayoutStructure and Service_IdentifyDisc how to do 1 zone fixed discs.
From the change logs it was last fixed sometime around FileCore 2.50 era, but has been
long broken.
The boot block was in the right place, but was overwritten by the root directory, and
the wrong size entry was claimed in the map, amongst other errors.
Free'd up R6 in LayoutFreeSpaceMap to avoid having to keep reevaluating the number of
zones - makes it a bit more readable. Corrected inaccurate comments. Checked the code
paths for new map with and without boot block, with and without long filenames.
Test app 'Make1Zone' generates a small disc image which can be inspected in a hex
editor for correctness.
In the identify code, be more strict about looking for a boot block only on fixed
discs since they cannot occur on floppies (saves time, wasn't necessarily wrong).
The concept of a boot block at &C00 only works when 2 copies of the map can be fitted
underneath that address, for future 2k and 4k sector sizes these do not fit and it is
likely that 1 zone fixed discs are forbidden (a drive with 4k sectors would typically
be > 512GB and 1 zone would be ~32MB so spilling into a second zone would waste <
0.01%).
Other minor changes:
* Free command now groups the 'K' with 'bytes' to match OS_ConvertFileSize.
* FileCore20 debug didn't assemble.
* FileCore33 beefed up comments.
* GenSWIs debug didn't assemble.
Tested with a special cut of RAMFS manually loading various 1 zone images into its
dynamic area and checking they mount, have a sensible *MAP and *FREE result, can be
written to, and don't have broken directories.
Tagged as FileCore-3_46

Fold in old fixes.
From 1989, probably safe to keep them. Binary unchanged.
Tagged as FileCore-3_47

Fix abort on unaligned LDR of DiscRecord_ZoneSpare.
Looks like a typo because there's a valid ASSERT above, and an LSR#16 below.
Tagged as FileCore-3_48

Update to work with zero page relocationDetail:
s/FileSwBody, s/FileSwHdr - Try getting DomainId pointer via OS_ReadSysInfo 6 before
falling back on legacy address. Store result in workspace for speedy lookup.
s/FSCommon - Use workspace DomainId pointer
s/CtrlUtils - Update int_ConstructFullPathWithoutFSAndSpecial to not attempt to
append the contents of null string pointers.
s/FSControl - Update AppendStringIfNotNull to ignore null pointers
s/LowLevel - Update CallFSFile_Given to not try copying from null special field
strings
Admin:
Tested on rev A2 BB-xM.
AFAIK the null pointer bugs are all FileSwitch bugs and not bugs in whatever called
FileSwitch, although I may be wrong. Not entirely sure how some of the code managed
to read strings from null pointers without creating garbage filenames as a result!
Tagged as FileSwitch-2_68

Fix OS_Args 1 and OS_GBPB 3/4 for files > 2G.
In OS_Args 1 a compare was followed by a conditional store, but with files > 2G some
circumstances end up with VS so the store wasn't taken.
In OS_GBPB 3/4 the assessment of how much could be done was based on adding the
current fileptr to the request but not respecting the carry out. Reordered the
equation to get this calculation right.
Changed a signed compare of a byte variable to use unsigned so auditing of signed
condition codes is clearer.
Corrected spelling of 'openning'.
Fix copy_srchandle and copy_dsthandle to not assume handles fit in 1 byte.
Tested on a variety of contrived file sizes at the boundaries of 2G and 4G.
Tagged as FileSwitch-2_69

Fix for *COPY finishing too early with files > 2G
Same drill, V was being set or not preserved when it shouldn't or should be. In light
of this all locations that do CMP/SUBS/ADDS involving fileptr/extent/anything ending
in size or length have been reviewed and ammended where needed.
Trim some dead code.
Discard 'Version' file.
Tagged as FileSwitch-2_70

*COUNT and *COPY summaries cope with > 32 bit totals.
Delete dead macro.
Ammend OS_FSControl 28 API to aloow report of 64 bit results.
On failing to get any memory at all for *COPY an attempt is made to grab an
'excessive' amount of RMA to get an error message, but this was only requesting 32MB
which is now quite feasible - now asks for 2GB.
Tagged as FileSwitch-2_73

Add OS_FSControl 58 to enumerate handles, does OS_Args 7 and 254 in one hit.Tagged as FileSwitch-2_74

Made safe to build with newer ARM instruction support in objasm.
Replaced use of LSL (et al) macros with the new myLSL macros to avoid
potential clash with new pseudo-opcodes
Admin: requires HdrSrc 1.79 or later.
Tagged as NetFS-5_95

Made safe to build with newer ARM instruction support in objasm.
Replaced use of LSL (et al) macros with the new myLSL macros to avoid
potential clash with new pseudo-opcodes
Admin: requires HdrSrc 1.79 or later.
Tagged as NetPrint-5_59

Tidy up.
Get FS_Control reasons from header file rather than local definitions,
Delete lots of FileCore internal stuff from local definitions.
Adjust the 'BigDir' switch use, it's still not quite right as it's being used to
select things unrelated to big directories.
Functionally the same as 2.22, tested briefly.
Tagged as RAMFS-2_23

Simplify.
Change to use exports from FileCore-3_45.
Delete local copies, which then collapsed the whole module in on itself - RAMFS should
really be the simplest of clients, but was built up from a lot of spare body parts.
This simplification removes a lot of files.
Delete s.TokHelpSrc - this is autogenerated and was erroneously checked in a few years
ago.
Delete unused Help and Syntax.
Try to get the use of BigDir/BigDisc/BigMap more correct.
Tested against FileCore-3_45 and still works.
Tagged as RAMFS-2_24

Put back as drive 0.
Some unrelated bug tracing had got checked in, was declaring itself as a harddisc and
appearing as drive 4.
Tagged as RAMFS-2_25

Declare as a floppy not a fixed disc.
In the (dusty) PRM 2-204 it states that the disc record can be used to specify the
size of your media and "this is how RamFS is able to be larger than an ordinary floppy
disc", which ties in with it being drive 0 since drives 0-3 are floppies.
This doesn't fix FileCore's poor handling of 1 zone fixed discs, but does make RamFS
work for sizes < 964k again.
The zero init of the first zone now no longer unconditionally clears 16k, since the
check on RAM area size is 8k.
Recompiled test tool 'm1time'.
Tagged as RAMFS-2_26

Limit max transfer length to 64K, fix issues with transfer lengths being incorrectly
modified
Detail:
s/ScsiFs00, s/ScsiFs15 - As a workaround for numerous USB devices that fail when
asked to transfer large amounts of data, SCSIFS now limits the maximum transfer
length to 64K.
This length seems to match the limit used by most operating systems. If necessary
this code can be turned off via the XferLenMax64K switch.
Additionally, a couple of bugs with the CheckXferLen and UseSpecialScatterBlk code
have been fixed:
- When CheckXferLen (and XferLenMax64K) limit the block count in the CDB, the code
now calculates a new value of R4 to send to the SCSI driver instead of using the
original. This ensures there's no ambiguity in the transfer length.
- After the SCSI op is completed, the returned value of R4 is then adjusted to
represent the real amount of untransferred data from FileCore's perspective.
- When the special scatter block is in use, the code now returns to FileCore with R3
pointing to the correct location in the source buffer, and with R4 adjusted to take
into account the extra padding that had been inserted. Previously the old code would
have returned with R3 and R4 left unmodified (i.e. R3 would have been pointing at
SCSIFS's temp scatter list)
Admin:
Tested in ROM on a rev C2 beagleboard over the course of a few hours with the help
of an automated test script.
No more 'no sense' errors when attempting large block transfers to USB devices, and
no sign of data corruption for large or small transfers.
See the forums for more discussion of these issues:
http://www.riscosopen.org/forum/forums/4/topics/470
Tagged as SCSIFS-1_18

Fix XferMaxLen64K code to perform multiple SCSI_Ops instead of relying on the caller
to retry the operation until all the data has been transferred
Detail:
s/ScsiFs15 - Instead of relying on undocumented FileCore behaviour to ensure that
long transfers are performed properly, SCSIFS now splits the transfer into chunks
and loops internally until all the data has been transferred. This ensures the
SCSIFS_DiscOp SWI works as expected.
s/ScsiFs05 - Swap and ADR for ADRL, seems to be needed when enabling debug code.
Admin:
Tested as a module softload on an Iyonix.
Fixes issue with DiscKnight complaining that perfectly good discs contain thousands
of errors.
Tagged as SCSIFS-1_19

Fix issues with large or oddly-sized SCSIFS transfersDetail:
s/ScsiFs15 - The code which fixes up the return values when a temp scatter block has
been used was corrupting R7, causing later code to miscalculate the post-transfer
disc address. Now fixed.
s/ScsiFs15 - The code which handles splitting big transfers into 64K chunks was
re-entering LowLevelOp with corrupt values of R5 & R6, leading to potential
malfunction. Now fixed.
Admin:
Tested on Iyonix & rev A2 BB-xM.
Fingers crossed for no more bugs here.
Tagged as SCSIFS-1_20

Update to work with zero page relocationDetail:
s/DevVersion, s/ScsiFs05 - Update debugging code to use OS_ReadSysInfo 6 to get
IRQsema ptr
Admin:
Tested on rev A2 BB-xM
Tagged as SCSIFS-1_21

Update to use some of the exported FileCore headers.
There are still a large number of local copies that should be visited, but this change
at least allows it to assemble again FileCore-3_45.
Tagged as SCSIFS-1_22

Don't issue INQUIRY with only 5 bytes of response dataDetail:
s/ScsiFs05 - Change ScanDrives2 to request 36 bytes of INQUIRY response data instead
of just 5.
This fixes an issue where some dodgy devices weren't responding to the inquiry
command at all. Also CheckDriveAllowed will cause the module to ignore any drive
that isn't capable of returning 36 bytes of inquiry data, so this change shouldn't
cause previously working drives to suddenly stop working.
Admin:
Tested in softload form on Iyonix.
TS-H552 DVD-RW no longer causes hang/softlock when connected.
Tagged as SCSIFS-1_23

Tweak debug codeDetail:
hdr/80321 - Improved notes about debug options.
s/Boot - Don't reinit UART 3 if it's already in use for debugging
s/Top, hdr/80321 - Use new FlashCheckInDebug option to help work out whether flash
check failure code is called
s/UART - Disable HAL UART API if UART 3 is in use for debugging
Admin:
Tested in ROM softload
Tagged as Tungsten-0_29

Update keyboard scanning to work with new kernel changesDetail:
c/USBHAL, h/USBHAL - Updated HAL_KbdScanInterrupt to follow the behaviour that the
kernel expects. The interrupting device number is passed in in a1, and the function
should return a1 unmodified if the device is unrecognised, or -1 if the interrupt
was handled.
Admin:
Tested in ROM on Iyonix
Tagged as Tungsten-0_30

Store ROM distribution tool used with 5.16.
Ought to archive it somewhere!
Tagged as Tungsten-0_33

Update ROM distribution tool.
Searched for date set to match 5.18 kernel.
Lowercase function changed to not leak 255 bytes on every call.
Old patches removed.
Improved indentation in a few places.
Changed longhand creation of 4 byte file to use BPUT instead.
Some variable name and comment typos ammended.
Tagged as Tungsten-0_34

Changed, repaired/modded programmer builder in utils folder to correctly install all
the
strings needed that are release specific. Checked and repaired errors that had crept
into the programmer code
Detail:
makefile changed. now includes all files required for programmer to create the
restore APP.
FlashICP repaired. In tidying up someone had removed a space reservation, so the
BASIC ran out
of space on a DIM. Also there was a change to use OS_File to load the rom image,
with a typo on
the reason code.
Admin:
Tested in use. Builds a programmer with correct strings auto generated. Programmer
and restore
programmer both do what is required. JB
Tagged as Tungsten-0_36

Add new error. Export C version of errors header. Add a test program.Detail:
hdr/CDErrors - Added a new error for drivers to use when the drive returns a bad
response
Makefile - Updated to export a C version of hdr/CDErrors
Tests/grabaudio,ffb - Simple test program to extract the audio tracks from a CD
Admin:
Tested in OMAP3 ROM
Tagged as CDFSDriver-2_40

Fix PCI dynamic area growth logicDetail:
s/Memory - Fixed a couple of bugs in the dynamic area growth logic that could cause
it to fail in some situations:
* If a boundary value was specified, an invalid boundary value was being passed to
OS_Heap when the operation was retried, causing the op to fail
* The heap grow code was enforcing a minimum alignment of 8 bytes as a way of trying
to ensure there'd be enough space for a used block header. However this won't work
if the alignment is greater than 4 to begin with; it's much better to just add the
extra 4 bytes onto r0 to begin with.
Admin:
Tested in Iyonix ROM softload
Fixes issue reported on forums with floppy access not working:
http://www.riscosopen.org/forum/forums/5/topics/905
Tagged as PCI-0_11

Fixed old-style shift macro use to new "my" shift macro.Tagged as Podule-1_62

Fix handling of non-32bit podule loadersDetail:
s/Module - The workspace definition didn't take into account the presence of the
PoduleReadOnly error block, so when the module attempted to use the fake 32bit
podule loader it was causing a crash. This fixes that.
Admin:
Tested in Iyonix & IOMD ROM softloads. Podules with 26bit loaders are now handled
properly.
Tagged as Podule-1_63

Fix stack imbalance in podule write bytes.
How did that ever work?
Tagged as Podule-1_64

Update SerialDeviceDriver for use with PCIless HAL buildsDetail:
s/Init - For PCIless HAL builds, use HAL_ControllerAddress to get the 82C710 address
s/Serial - Only enable PCIHardware for M_Tungsten
s/Serial710 - Assume IOMD/IOEB IRQ number if not PCIHardware
Admin:
Tested in Iyonix & IOMD ROM softloads
Tagged as Serial-0_42

Update to use OS_Memory 9 instead of HAL_ControllerAddressDetail:
s/Init - Now uses OS_Memory 9 to look for controller #34 instead of
HAL_ControllerAddress to look for controller #6. Makes it more portable/future-proof
and fixes the HAL_ControllerAddress allocation clash.
Admin:
Tested in ROM softload on RiscPC.
Tagged as Serial-0_43

Update to work with zero page relocationDetail:
s/Sound1 - Try using OS_ReadSysInfo to find the location of the OS_Byte variables
before falling back on the old OS_Byte &A6
Admin:
Tested on rev A2 BB-xM
Tagged as Sound1-1_36

Rework USB driver makefile & cmhg files to avoid constant rebuilds of USBDriver.hDetail:
Limitations in the way CMHG was being told which message file to use meant that the
makefile was constructed in a way that would automatically delete usbmodhead.h/.o
after they were built, to protect against OHCIDriver or EHCIDriver causing the file
to be built referencing the wrong messages file.
However since each component uses a unique messages filename, and each component has
its own CMHG file, there was absolutely no need for this - all that was needed was
to update the CMHG files to reference the correct messages file directly.
ROM builds are now a minute or two faster because of this, which is quite welcome
since I can often find myself doing 30+ builds a day.
Admin:
Tested by building Tungsten ROM and diffing new modules against old; no differences
detected.
Not tagged.
Not tagged

Fix USBDriver's handling of PointerV. Increase module version numbers/dates.Detail:
build/c/usbmouse - USBDriver's PointerReason_Request handler now correctly restores
the IRQ state to that of the caller, instead of unconditionally enabling IRQs. It
also correctly intercepts the vector instead of passing it on to other claimants.
build/Version - This fake VersionNum file hasn't been touched in a long time,
leading to some newer versions of the USB modules being released with version
numbers identical to their predecessors. This has now been fixed, so that each
module has had its version increased by 0.01 and date increased to that of the last
(functional) change.
Admin:
Tested on rev C2 beagleboard
Tagged as NetBSD-0_50

Update EHCI driver to NetBSD latest (as of 10/07/2010), improve DeviceFS interfaceDetail:
EHCI driver update:
dev/usb/c/ehci - Updated to latest NetBSD version, except for revisions 1.134 and
1.135 which are too invasive to merge in without updating the rest of the USB
stack. This new version brings lots of bug fixes, and adds (untested on RISC OS)
support for EHCI isochronous transfers.
dev/usb/h/ehcivar - Updated to latest NetBSD version, except for the sc_bus
splitting that was held back from the ehci.c update
dev/usb/h/usb, dev/usb/h/usbdi, dev/usb/usbdivar - partial update to latest as
required/possible
dev/usb/c/usb_quirks, dev/usb/h/ehcireg, dev/usb/h/usb_mem, dev/usb/h/usb_quirks,
dev/usb/h/usbhid, dev/usb/usbdevs, dev/usb/devlist2h.awk, dev/wscons/h/wsconsio,
dev/wscons/h/wsmousevar - Updated to latest NetBSD versions
dev/usb/c/usbroothub_subr, dev/usb/h/usbroothub_subr - New files brought in from
NetBSD sources for use with new EHCI driver
build/objehcidriver - Added usbroorhub_subr to EHCI driver
dev/usb/h/usb_port - Added extra dummy functions as required by new EHCI driver
dev/build/c/port - Added extra parameter to callout_init as required by new EHCI
driver
DeviceFS improvements:
build/c/usbmodule - Added DeviceFSCallDevice_GetHandles2 as a replacement for
Thomas Milius's backwards-incompatible GetHandles changes. Added
DeviceFSCallDevice_GetSetOptions call to control RX padding and TX
force-short-xfer features. These features can also be controlled at endpoint
creation time by new fields in the filename. Also fixed packet padding to not fill
the buffer with garbage or potentially crash when the padded area is more than one
packet in length.
New bus registration API:
Changes made to the data structures that are shared between the modules means that
new checks are needed to ensure USB modules with incompatible APIs are not used
with one another.
build/h/usbdivar - Since this seems to be the file containing the main structures
that are shared, it now has a #define at the top indicating the first version of
the USBDriver module that implemented the data structures within. This version
number is used to check that the driver modules are compatible.
build/cmhg/usbmodhead, build/h/usbdriver, build/c/usbmodule - Add a new SWI,
USBDriver_Version, to return the version number of the USBDriver module. Used for
both intra-stack API version checks and can be useful for external code that wants
to query DeviceFS feature availability.
build/c/usbmodule, build/c/ehcimodule, build/c/ohcimodule - Updated
USBDriver_RegisterBus SWI and the code that calls it to pass the API version
number (as defined in usbdivar.h) to USBDriver when attempting to reigster the
bus. USBDriver then ensures the version matches that of itself, and if not refuses
to allow the bus to register. EHCI & OHCI modules also check that USBDriver is new
enough to implement this behaviour via the USBDriver_Version SWI.
And finally:
build/version - Incremented module version numbers.
build/doc/usb - Updated with details of new features
Admin:
Tested in ROM softload on Iyonix & beagleboard. Beagleboard hub issues seem to be
resolved, and there are no new bugs that I can see.
Tagged as NetBSD-0_52

Update hid.c, ums.c to latest (ish), update usbmouse.c, add TouchBook touchpad fixDetail:
dev/usb/c/hid, dev/usb/h/hid, dev/usb/c/ums - Updated to latest NetBSD versions
(actually the version that was used for the recent core/EHCI update, so not 100%
latest)
build/c/usbmouse, dev/wscons/h/wsmousevar - Updated RISC OS USB mouse driver to be
similar to the new NetBSD version. Also reformatted file to use tab char instead of
inconsistent numbers of spaces for indentation.
build/c/usbmouse, dev/usb/usbdevs - Added fix for broken TouchBook touchpad behaviour.
Admin:
Tested with various mice on a beagleboard, and with the TouchBook touchpad.
We should now have support for the W axis of mice, but that code is untested since I
don't have any suitable mice to hand.
Tagged as NetBSD-0_53

Minor bugfix and documentation improvements.Detail:
I have done some minor changes to the USB documenation in a few points
and corrected a smaller bug inside the USB alias handling (used release
instead interface).
Author:
Thomas Milius
Tagged as NetBSD-0_54

Revert previous commit as it has already been superceded.Tagged as NetBSD-0_55

Fix a few USBDriver bugsDetail:
build/c/usbdi - Fix compiler warning in usbd_clear_endpoint_stall()
build/c/usbmodule - Fix detach_device() to deregister any pending attach callback
for the detaching device. Fixes crash seen when inserting 16GB USB stick into EHCI
port of rev C2 beagleboard (a current surge or something causes the stick to
immediately disconnect then reconnect, but the disconnect occurs before the initial
attach callback)
build/c/usbmodule - Fix device_initialise() to use a timeout of 0 if no timeout was
specified in the DeviceFS special field
build/c/usbmodule - Fix the new read_cb() buffer padding logic to only pad up to
totalcount instead of filling the entire buffer
Admin:
Tested on rev C2 beagleboard.
This seems to fix the problems that were preventing Steffen Huber's USB CD code from
working properly.
Tagged as NetBSD-0_56

Fix modules so resources don't get included twice in ROM buildsDetail:
A couple of the USB modules were including their resources both in the Messages
module and within themselves, leading to wasted ROM space
build/OBJOHCIDriver, build/OBJUSBDriver - Tweaked makefiles so that ohcimsgs.o and
usbmsgs.o only get built/linked for RAM builds
build/c/usbmodule - Fix erroneous attempt to free non-registered resource files in
ROM builds
Version - Increased OHCIDriver & USBDriver version numbers
Admin:
Tested with Iyonix ROM softload. Saves approx 48k of ROM space.
Fixes bug #265
Tagged as NetBSD-0_57

Build fixDetail:
A couple of source files now have a dependency on an auto-generated
header file, dev/usb/usbdevs.h. Normally you get away with this, because
it's created during the export_hdrs phase. But if the first build you do
on a freshly checked-out build tree includes a rom phase, then srcbuild
cleans the component between the export_hdrs and rom phases, so the rom
phase fails. Fixed by adding a couple of static dependencies to Makefile.
Admin:
Tested manually.
Tagged as NetBSD-0_58

Add the ability to build the USB drivers as HAL-compatible static librariesDetail:
build/Makefile, build/OBJEHCIDriver, build/OBJOHCIDriver, build/OBJUSBDriver -
Modified makefiles to build the HAL libs during the export libs phase
build/!MkHAL,fd7 - Handy script for building the HAL libs
build/Hdr/usbhal - Header containing definitions for the assembler code. Also gets
exported so that HALs know how much workspace to reserve.
build/c/usbhal - HAL version of usbmodule.c & port.c. Also contains the keyboard
scan code, adapted from the code in the Tungsten HAL.
build/s/porthal - Assembler versions of some port.c routines that were easier to do
in assembler than C
build/s/halheap - OS_Heap code that's been adapted for use in the HAL. Could easily
be changed into a standalone library instead of being part of the HAL USB libs.
Supports memory-efficient allocation of aligned blocks.
build/c/ehcihal - HAL version of ehcimodule.c. Currently only supports EHCI
controllers exposed via HAL_USBControllerInfo (i.e. no PCI support)
build/c/ehcimodule, build/c/ohcimodule, build/c/port - Moved riscos_irq_clear into
port.c. Removed unused microtime() function.
build/c/usbmouse - Strip out some debug-related code in non-debug builds
build/Version - Updated version numbers
dev/usb/c/ehci, dev/usb/h/ehcivar - Adapted to add support for the HAL build. Apart
from the base changes, the code has also been tweaked to significantly reduce the
amount of memory used at runtime by the HAL version of the driver.
dev/usb/c/hid, dev/usb/c/uhub, dev/usb/c/usb, dev/usb/c/usb_quirks,
dev/usb/c/usb_subr, dev/usb/c/usbdi, dev/usb/c/usbdi_util, dev/usb/c/usbroothub_subr
- Changes to support HAL builds. Mainly disabling bits that won't work in the HAL or
disabling bits for RISC OS in general if they weren't being used in the first place.
dev/usb/c/ohci, dev/usb/h/ohcivar - Basic changes to support HAL builds. However HAL
OHCI support is still incomplete.
dev/usb/h/usb_port - Added support for the HAL build. Also tweaked logprintf
definition to get rid of logprintf calls entirely in non-debug builds.
dev/usb/h/usbdivar - Added support for the HAL build.
dev/usb/h/usbhal - New header used by the HAL build. Gets included by every C file
to ensure the compiler doesn't use sb, and contains structs/macros to allow access
to the shared workspace.
Admin:
HAL & non-HAL builds tested on rev C2 BB, rev A2 BB-xM, rev C1 TouchBook.
Non-HAL builds tested with Iyonix ROM softload.
Needs latest Kernel source for OSEntries.h export.
Tagged as NetBSD-0_59

Update to work with zero page relocation. Remove ability to cancel transfers by
pressing escape
Detail:
build/c/port - Removed ability to cancel transfers by pressing escape. Too dangerous
for things like mass storage devices, and the code won't work anyway for the common
case of being in the wimp
build/s/triggercbs - Try using OS_ReadSysInfo 6 to get IRQsema ptr before falling
back on legacy address
build/Version - Updated version numbers
Admin:
Tested on rev A2 BB-xM
Tagged as NetBSD-0_60

Fix null pointer access in OHCIDriverDetail:
build/c/ohcimodule - Not all PCI_ReadInfo calls were checking for null pointers
afterwards, leading to strncpy being called with a null source
build/Version - Updated OCHIDriver version number
Admin:
Tested in Iyonix ROM softload
Tagged as NetBSD-0_61

Update HAL USB code for new HAL_KbdScanInterrupt behaviour. Fix data aborts during
keyboard scanning.
Detail:
build/c/usbhal, build/h/usbhal - Updated USBHAL_KbdScanInterrupt to behave the same
way HAL_KbdScanInterrupt is now expected to behave.
build/c/ehci, build/c/ohci - Fixed some root hub emulation code which was writing to
a global structure before copying it into the destination buffer. Although this
works fine in ROM modules it was causing data aborts in the USB HAL libraries due to
lack of automatic RW data relocation by the compiler.
build/Version - Updated version numbers
Admin:
Tested on rev C2 BB.
Tagged as NetBSD-0_62

Improve scrollwheel handlingDetail:
build/c/usbmouse - Scrollwheel code now only sends scroll requests in a given
direction if the window has an appropriate scroll bar.
build/Version - Incremented USBDriver version number
Admin:
Tested in OMAP3 ROM
Fixes issue reported on forums where it was possible to scroll filer windows
horizontally if you used a mouse with a 'w' axis
Tagged as NetBSD-0_64

Add workaround for what looks like a bug in the DM37x EHCI controllerDetail:
dev/usb/c/ehci - Force all EHCI data buffers to be 512 byte aligned.
This is a workaround for what I believe is a bug in the DM37x EHCI controller - It
looks like if the last packet of a bulk in transfer is a short packet, and that
packet crosses a page boundary, then the second half of the packet doesn't seem to
be written out to the correct address in memory.
Version - increased EHCI module version number
Admin:
Tested on rev A2 BB-xM
Fixes issue reported on forums with unreliable USB ethernet:
http://www.riscosopen.org/forum/fourms/5/topics/828#posts-9691
Tagged as NetBSD-0_65

Update to work with zero page relocationDetail:
Source/IntKeyBody - Try using OS_ReadSysInfo 6 to get the location of the OS_Byte
variables before falling back on OS_Byte &A6
Admin:
Tested on rev A2 BB-xM
Tagged as IntKey-0_92

Update MsgTrans's 'Item' macro to guard against menus which contain more items than
their workspace definition suggests
Detail:
hdr/MsgMenus - 'Item' macro now asserts if itemno > itemtot. This guards against
situations where the space for a menu item within a module's workspace is smaller
than the size of the menu (as was the case with bug #233)
Admin:
Tested with clean builds of OMAP, Tungsten and IOMD ROMs - no errors encountered.
Not tagged; this change shouldn't result in any change to compiler output (unless
the assert fires!)
Not tagged

Update to work with zero page relocationDetail:
s/MsgTrans - Try OS_ReadSysInfo 6 to get IRQsema pointer before falling back on
legacy address. Store pointer in workspace for speedy access.
Admin:
Tested on rev A2 BB-xM
Tagged as MsgTrans-0_48

Incremented RISC OS version for the HAL branch to next development number (5.17).Tagged as Kernel-5_35-4_79_2_108

Fix bug in InitCMOSCache that could cause CMOS to be errouneously reset if NVRAM is of
type 'MaybeIIC'
Detail:
s/PMF/i2cutils - Kernel was checking if the full IIC flags word was equal to
MaybeIIC instead of just checking if the Provision bits equalled MaybeIIC. Thus if
any of the additional flags were set along with MaybeIIC the kernel would have
skipped the probing code, skipped the IIC code, and fallen through to using the
(likely unimplemented) HAL interface for initialising the NVRAM cache.
Admin:
Tested in IOMD build under RPCemu; kernel now takes the correct path for MaybeIIC +
ProtectAtEnd.
Tagged as Kernel-5_35-4_79_2_109

Fix detection of Philips RTC/NVRAM when MaybeIIC is in useDetail:
s/PMF/i2cutils - Although the code will detect the Philips RTC correctly, it was
failing to set the device size in R4, causing CMOS RAM to be misread. This change
fixes that.
Admin:
Tested in IOMD HAL build on development version of RPCEmu.
Tagged as Kernel-5_35-4_79_2_110

Bring HAL branch of hdr/HALDevice, h/HALDevice in line with Cortex branchDetail:
A fair number of bus/device types and IDs have been added to the Cortex branch since
the branch was created.
Now that the ClearIRQ entry has also been added, it's about time that the HAL branch
was brought up to date.
Admin:
Untested, but should be fine.
Tagged as Kernel-5_35-4_79_2_111

Add C version of Hdr.OSEntries to HAL kernel header exportDetail:
Makefile - now exports a C version of hdr.OSEntries
Admin:
Tested in Iyonix ROM softload.
Needed for latest USB drivers to build.
Tagged as Kernel-5_35-4_79_2_112

Update list of OS_Memory 9 controllersDetail:
s/MemInfo - List of OS_Memory 9 controllers now updated to include details of the
ones that ROL are using, along with which numbers should/shouldn't be safe for us to
expand into in the future.
Admin:
Tested in ROM softload on RiscPC
Tagged as Kernel-5_35-4_79_2_114

Update the method the HAL kernel uses to determine the UtilityModule & ROM datesDetail:
Three main changes:
* On odd-numbered (i.e. development) versions of the module, the UtilityModule will
now take its date from the VersionNum file instead of using a hard-coded date
* All build versions now look for the new "extended ROM footer" (as created by
romlinker 0.04+) at the end of the ROM image and use it to determine the ROM build
date for return by OS_ReadSysInfo 9,2. Failing to find the build date in the footer
will cause OS_ReadSysInfo 9,2 to return 0.
* On odd-numbered versions, OS_Byte 0 will now use the ROM build date (as found in
the extended footer) to generate the error block that's returned to the user. This
seems OK as the PRM describes OS_Byte 0 as returning the "creation date of the
operating system". Plus it's a convenient way of getting the ROM build date into the
Switcher, since the switcher uses OS_Byte 0. If the extended footer can't be found
(or if the string isn't initialised yet, e.g. before Service_PostInit) the code
falls back to a hard-coded string containing the date from the VersionNum file.
File changes:
Makefile - Updated to not create the obsolete Time+Date file (previously used for
the ROM build date)
Version - Use date from VersionNum file for development builds
hdr/Options - New UseNewFX0Error variable/option to make it easy to check which
OS_Byte 0 variant should be enabled
hdr/KernelWS - Added new string buffers & extended ROM footer pointer to workspace
s/Middle - Updated OS_ReadSysInfo 9 code, and added utility functions for searching
the extended ROM footer for certain tags
s/NewReset - Added a couple of calls to initialise the new string buffers just prior
to Service_PostInit. This is required since OS_Byte/OS_ReadSysInfo shouldn't enable
interrupts, but date conversion relies on the Territory module, which may enable
interrupts.
s/PMF/osbyte - Updated OS_Byte 0 code
Admin:
Tested in Tungsten ROM, with and without the extended footer present.
Tagged as Kernel-5_35-4_79_2_115

Add new OS_ReadSysInfo 6 items codes. Change naming of PublicWS values.Detail:
s/Middle - Added some new OS_ReadSysInfo 6 items which are needed by the zero page
relocation kernel. Also duplicated some existing entries to avoid conflicts with
ROL's allocations.
hdr/OSRSI6, Makefile - New header listing OS_ReadSysInfo 6 items
hdr/PublicWS - Duplicated the workspace definitions for &0-&4000, but with a
'Legacy_' prefix to their names. Also added some new entries as needed by the zero
page relocation kernel. Once existing modules have been updated to use
OS_ReadSysInfo & the Legacy_ definitions, the old defs will be removed.
hdr/KernelWS - Removed 'Export_' prefix from all the exported workspace values,
since the kernel can now use the original names directly
hdr/Options - Dummy HiProcVecs option so merging things will be a bit cleaner
Admin:
Tested in ROM softload on Iyonix
Tagged as Kernel-5_35-4_79_2_118

Correct version number in header commentDetail:
hdr/OSRSI6 - Corrected RO version number from 5.19 to 5.17
Admin:
Untested, but testing shouldn't be needed anyway
Tagged as Kernel-5_35-4_79_2_119

Resync Hdr:HALDevice on HAL branch (nominally the master copy) with the Cortex branchTagged as Kernel-5_35-4_79_2_122

Merge Cortex kernel into HAL branchDetail:
This is a full merge of the Cortex kernel back into the HAL branch. Since the Cortex
kernel is/was just a superset of the HAL branch, at this point in time both branches
are identical.
Main features the HAL branch gains from this merge:
- ARMv6/ARMv7 support
- High processor vectors/zero page relocation support
- objasm 4 warning fixes
- Improved HAL related functionality:
- Support for HAL-driven RTCs instead of kernel-driven IIC based ones
- Support for arbitrary size machine IDs
- Support for multiple IIC busses
- Support for any HAL size, instead of hardcoded 64k size
- Probably some other stuff I've forgotten
- Probably a few bug fixes here and there
Admin:
Tested on BB-xM & Iyonix.
Was successfully flashed to ROM on an Iyonix to test the Cortex branch
implementation of the 2010 RTC bug fix.
IOMD build untested - but has been known to work in the past.
Tagged as Kernel-5_35-4_79_2_123

Reindent Arthur2.
Expand tabs.
Swap DCI for instructions now Objasm 4 is out.
Symbols for FSControl_CAT/RUN/OPT changed to non Arthur definitions.
Still boots on IOMD class, no other testing.
Tagged as Kernel-5_35-4_79_2_124

Added 'UnConv' error (see also HdrSrc).
Implement OS_ConvertVariform, internally the other conversions now just call it.
Add tester for Variform to 'Dev'.
Made block copy weirdness for XScale dependent on XScale arch flag.
Tagged as Kernel-5_35-4_79_2_126

Rationalise some old switches.
Export less in hdr:RISCOS.
Delete unused GetDecimalPair routine.
Move CheckYear with other RTC stuff out of PMF/osword.
Hide DebugROMInit and DebugROMErrors in release (even numbered) versions.
Tagged as Kernel-5_35-4_79_2_127

Improve heap manager. Add heap testbed. Add dummy implementation of some OS_ScreenMode
reason codes.
Detail:
s/HeapMan, hdr/KernelWS - Heap manager improvements:
- Errors generated by interrupted heap operations that are forced to complete by a
OS_Heap call from the background are now cached in kernel workspace until the
foreground task is resumed. This prevents them from being potentially overwritten
by MessageTrans running out of background error buffers.
- Added new OS_Heap reason code, #7 - Get area aligned. This allows areas of
memory to be allocated at specific (power-of-2) alignments, and optionally without
crossing a given (power-of-2) boundary. Alignment & boundary calculations are
performed using logical addresses.
- Removed the limitation that all free and allocated blocks must be a multiple of
8 bytes in length. This change was required in order to allow OS_Heap 7 to
function correctly. Now the only requirements are that blocks must be multiples of
4 bytes in length, at 4 byte alignment, with a minimum length of 8 bytes. 4 extra
padding bytes may still be added to the end of allocations in order to avoid
creating 4-byte free blocks.
s/HeapMan, TestSrc/HeapTest/Makefile, TestSrc/HeapTest/c/testbed,
TestSrc/HeapTest/s/asm - Added heap testbed program. Can either use the OS_Heap SWI
or directly include a copy of the Kernel's heap manager sources.
s/vdudecl, s/vduswis - Added dummy implementations of OS_ScreenMode 4, 5 and 6. This
prevents the Wimp generating lots of "Unknown OS_ScreenMode reason code" errors when
redrawing the screen.
s/Arthur3, s/Oscli - Moved dotstring closer to where it's used to avoid "ADRL out of
range" errors in Tungsten build
Admin:
Tested in OMAP3 ROM & Tungsten ROM softload.
Heap testbed successfully performed over 400 million heap ops, so there shouldn't be
any serious bugs in the new code (touch wood)
Tagged as Kernel-5_35-4_79_2_128

Fix OS_Heap 4. Fix stack imbalance in system heap code.Detail:
s/HeapMan - The code to check if it's safe to shrink a block by 4 bytes assumed
'addr' was the address of the block, when in reality it's just an offset. This was
causing the "OK to shrink?" check to always ignore the shrink request on heaps
located below the 2G limit, but fail with "heap corrupt" errors in heaps located
above the 2G limit.
s/ArthurSWIs - Fix stack imbalance causing a crash if OS_Heap returns an unexpected
error in DoSysHeapOpWithExtension/ClaimSysHeapNode
Admin:
Tested in Iyonix ROM softload
Testbed didn't pick up heap shrink bug due to the sanity checks it performs not
being vigorous enough.
Tagged as Kernel-5_35-4_79_2_130

Add a NOP after the mode change in MoreSWIs.s to sync with CallASWI module.
Add two more DebugTX in the reset sequence to announce power on reset and CMOS reset
code paths.
In STB land the range of permitted dates is extended from 2020 (a bit close!) to 2037
when Unix time wraps.
Tagged as Kernel-5_35-4_79_2_133

Add null hash table entry checks to SysCommsModule & UtilityModule hash table lookupDetail:
s/Oscli - In SysCommsHashedLookup and UtilCommsHashedLookup, check for null hash
table entries instead of just blindly calling ModCommsLookUp_AltEntry.
This fixes an issue where a crash will occur iff:
(a) You enter a command which has no entry in one of the two hash tables
(b) The command is a valid command (with a code entry point) if you reinterpret the
corresponding module header as a command table
In reality, for recent versions of RISC OS 5, you'll get a crash only when trying to
execute the command 's'. Some previous OS versions (e.g. 5.12) appear to have been
immune to the crash.
If (a) was true but (b) was false the bug would have also resulted in a small
performance hit caused by attempting to scan the module headers for matching
commands.
Admin:
Tested in Tungsten & OMAP ROM builds
's' no longer crashes, and commands included in the two hash tables still seem to
function as normal.
Fixes issue reported on forums:
http://www.riscosopen.org/forum/forums/4/topics/902
Tagged as Kernel-5_35-4_79_2_135

Process some callbacks during module initialisation.
When in DebugROMInit=TRUE mode each call to XOS_NewLine also checks and
processes pending callbacks (in VduLF). This makes the USB enumeration
come out in a different order because they're all collected at the end.
As an intermediate step, collect callbacks for DebugROMInit=FALSE too.
Note: developers should not rely on this behaviour, this will be phased
out before the next stable release.
Tagged as Kernel-5_35-4_79_2_136

Fix bug in usermode_donothing() exposed by using this from the Internet module.
In the 26 bit case the TEQP pc,#0 switches to user mode and enables interrupts (see
section 8.2.1 of ARM ARM revision E), however the 32 bit case only switched to user
mode.
Since interrupts were not enabled, no callbacks got collected, and you just sit in a
tight loop. Since a precondition of collecting callbacks is that interrupts are
enabled it is safe to reenable them since the caller must have expected this to happen.
Since none of the SWIs in question corrupt R12, we no longer stack it either.
Tagged as AsmUtils-0_13

Add the ability for a callback to be run with interrupts disabledDetail:
c/callx, h/callx, s/veneer - Added new callx_add_callback_irqsoff function.
This is identical to callx_add_callback, except the callback function will be
entered with IRQs disabled.
Using this function makes it safe to cancel callbacks from interrupts, as there's no
longer the chance of a callback firing after it's been deleted.
Admin:
Tested on rev A2 BB-xM.
Tagged as callx-0_08

Fix alignment fault when reporting the "This file doesn't contain a BASIC program" errorDetail:
rlib/c/txtedit - Rather than generating a proper error block to send to
Wimp_ReportError, txtedit__validbasicfile was just subtracting 4 from the pointer to
the error string.
The resulting address isn't guaranteed to be aligned properly, resulting in an
alignment fault on ARMv7 when Wimp_ReportError examines the error number.
The new code just reuses the 'buff' array to build a temporary error block.
Admin:
Fixes alignment fault on beagleboard when attempting to load a detokenized BASIC
file into !Edit.
Tagged as RISC_OSLib-5_57

Enable 2 functions in RISC_OSLib shared entry table.
Needed by !Paint 2.02.
Fix some easy warnings in wimp.c/sprite.c.
Add new function (not in the ROM version) 'wimp_baseofromsprites()'.
bbc_adval fixed to return -1 when no ADC fitted to match Electron behaviour.
Note: the 2 reenabled functions haven't been appended to the table, so anyone who
linked a RAM application against 'romastubs' would need to relink.
Tagged as RISC_OSLib-5_58

Import of JPEG support code to RISC_OSLib.
Functionality to query, plot, and transform a JPEG file modelled on the functions
provided in 'sprite.c/h'.
To be used to share more code between !Paint and !Draw.
Tagged as RISC_OSLib-5_59

Update to work with zero page relocationDetail:
clib/s/cl_stub, kernel/s/k_body, s/initmodule - Use OS_ReadSysInfo 6 to look up
CLibWord/RISCOSLibWord/CLibCounter location each time it's needed instead of using
hardcoded addresses. SWI overhead shouldn't be too bad since the zero page areas are
rarely used.
rlib/c/menu - Fix null pointer access when attempting to clear a submenu pointer via
menu_submenu(...,...,NULL)
s/h_workspc - Remove old local definitions of CLibCounter, RISCOSLibWorkSpace and
CLibWorkSpace. Use Hdr:PublicWS instead.
Admin:
Tested on rev A2 BB-xM
Tagged as RISC_OSLib-5_60

Fix objasm 4 warnings. Enable (S|U)MULL/CLZ in math code.Detail:
s/longlong - The code has always had the ability to use CLZ & long multiply
instructions, but it's never been enabled. The nonfunctional code to detect the CPU
architecture at runtime has been disabled, and instead a fixed configuration is
selected at compile time with the help of Hdr:CPU.Arch. Also added lots of ROUT's
for safety.
s/objmacs - Updated push/pop macros to make use of LDR/STR when only one register is
to be transferred. This fixes a few objasm 4 warnings and should result in a speed
boost where applicable.
Admin:
Tested on rev A2 BB-xM.
Different math code configurations tested briefly.
Tagged as RISC_OSLib-5_61

Change to use StdTools.
Be more quiet when cleaning.
STM/LDM changed to Push/Pull.
Moved an illegal instruction back into ARM's illegal instruction space.
Tagged as RISC_OSLib-5_62

Long long multiply bugfixDetail:
Last revision broke _ll_mullu (the runtime support function for multiplying
a 64-bit integer by an unsigned 32-bit integer) except for ROM builds that
target CPUs with the M extension. So in practice, IOMD ROMs and softloadable
C libraries both exhibited the bug.
Admin:
Verified that the compiler will now run against this C library (previously
it reported many non-sensical errors).
Tagged as RISC_OSLib-5_63

File handling improvementsDetail:
* Added 64-bit file pointer API support, following the LFS spec v1.5
(see Docs directory). Internally, now uses 64-bit file pointers
exclusively. For now, the backend still limits you to 4GB-1 files, but
clients of the C library won't need recompiling again to support larger
files than this once they use the new API.
* Fixed a large number of warnings produced in compilation, assembly and
linking, many of them new and resulting from the improved checks in the
latest toolchain.
* Increased the maximum stream buffer size from 16MB to 1GB.
* Added Hdr:SDFS and Hdr:SDIO to the list of headers used to build swis.h
if they are present.
Admin:
Verified that the new 64-bit file pointer buffering code works using a
ROM build (since the toolchain makes extensive use of reading, writing
and seeking internally).
Tagged as RISC_OSLib-5_64

Fix stack imbalance in module stubsDetail:
A minus sign was missing - this meant that any module built using stubs
from the last 2 weeks would branch through zero at the end of initialisation.
Admin:
Modules now work again!
Retagged as 'RISC_OSLib-5_64'
Not tagged

Review use of StrongARM switch.
Was being used to conditionalise things which aren't really StrongARM related, now
should be read as "support split I+D caches" switch.
Tagged as RISC_OSLib-5_65

Use correct CLZ checkDetail:
s/longlong - Only look for ARMv5 support when deciding if CLZ is available, not ARMv5T
Admin:
Tested in OMAP3 ROM
Tagged as RISC_OSLib-5_66

Delete local user_mode_donothing() and replace with usermode_donothing() from AsmUtils.
Makefilse uses ModuleLibs too.
Lots of STM/LDM replaced with Push and Pull macros.
Local definitions in 'swiveneers' replaced with header files.
Tagged as Internet-5_53

Fix up a few missing header files.
Now NetI compiles as well as Net, but NetG still broken.
Trim makefile to remove dead wood, and use shared 'StdTools' and 'ModuleLibs'.
Compiles, but not tested.
Tagged as Net-6_21

Fix for *INFO dates not matching *EX dates
These two displays take different code paths, and *INFO goes via a check to workaround
a bug in Win98 servers. Unfortunately, the check no longer works because Microsoft
don't return the '.' and '..' entries in SMB Trans2 FIND_FIRST, and the logic
previously always set the "need to frig the dates" flag. Now, the flag is only set if
something comes back and after doing a test swap the results are also correct.
Turned on the 'auto close Trans2 FIND_FIRST' flag in the request block to save having
to do a second transaction to close it.
Swapped the LDMFD/STMFD for Push and Pull in the assembler.
Tested against WinXP SP3, dates are no longer bonkers.
Tagged as LanManFS-2_35

Fix objasm 4 warnings. Enable use of CLZ in math code.Detail:
s/Array, s/Funct, s/Stmt - Use LDR/STR instead of LDM/STM when only one register is
to be transferred
s/fp - Use Hdr:CPU.Arch to determine whether CLZ can be used in the IFLT routine
Admin:
Tested on rev A2 BB-xM
Tagged as BASIC-1_45

Remove post increment.
In s/Array line 956 revision 1.5 the LDMFD was swapped for an LDR but the original
didn't have writeback so the LDR shouldn't post increment.
Tagged as BASIC-1_46

Use correct CLZ checkDetail:
s/fp - Only look for ARMv5 support when deciding if CLZ is available, not ARMv5T
Admin:
Tested in OMAP3 ROM
Tagged as BASIC-1_47

Make TEXTLOAD do RENUMBER 10,1 when renumbering is needed.
Effectively raises the longest text program you can load to ~64k lines.
Tagged as BASIC-1_48

Replace local definitions from central header files.
Line up code to more normal tab stops.
Add warning that it messes with zero page values.
Same size binary, but the "BadSWI" error number was wrong, so the binary differs.
Tagged as DDEUtils-1_67

Stop peeking zero page.
Now uses OS_ReadSysInfo 6 to get the address of the domain id.
Put the throwback subreasons into the exported constants.
Remove more of the hardwired constants.
Remove all occurences of LDMFD r13! {lr and pc together} cos ARM have deprecated it.
Tagged as DDEUtils-1_68

Fix over zealous path prefixing.
Various of OS_File, OS_Find, and OS_FSControl have subreasons which force the use of a
path or path variable, which DDEUtils was not respecting. Fixes ticket #167.
Moved the ReadPrefix SWI code down with the other SWIs.
Moved the Prefix SWI code down with the other SWIs.
Moved 'strip_hats' next to 'strip_hats0'.
Added FSControl_InfoToFileType to the list of FSControl subreasons operated on.
Made the various SWI error exits use the common 'return_setv' so overall the module is
smaller than in 1.66.
Tagged as DDEUtils-1_69

Bugfix to *PrefixDetail:
A missing ALIGN directive caused bit 0 of the offset to the *Prefix code
to be set. On ARMv7, ALU instructions targetting the PC with bit 0 set
causes a Thumb interworking branch to be taken, which isn't what you want.
A number of LDM/STMs of single registers have also been optimised.
Admin:
Fix received from Willi Theiss
Tagged as DDEUtils-1_71

Be ultra cautious and NOP after the TEQP, but more to shut the assembler warning up.Tagged as DDEUtils-1_72

Fix code to be fully aware of 64bit parameter flags, fix accidental alignment
exceptions on ARMv6/v7
Detail:
s/Debugger - All code which calls ReadOneParm, ReadParm, etc. now correctly sets r10
to the correct value depending on whether they want to parse 64bit numbers or not.
This was the cause of *InitStore malfunctioning and (presumably) trashing whatever
R11 pointed to (bug #232)
Also fixed MemoryHeader causing an unintentional alignment exception when testing if
rotated or unaligned loads are in use. The CP15 registers are now interrogated
instead.
Admin:
Tested on rev C2 beagleoard. *Memory with unaligned addresses no longer aborts, and
*InitStore <val> now uses the correct value, and seems to no longer trash memory
Fixes bug #232
Tagged as Debugger-1_80

Rework *memoryi implementation to avoid alignment faults during Thumb disassembly on
ARMv6+
Detail:
s/Debugger - Reworked MemoryI_Code:
* Avoid alignment faults when disassembling Thumb instructions by using LDRH or
LDR-and-shift depending on compile-time architecture
* Split ARM & Thumb disassembly into two seperate paths to (perhaps) increase
readability
* Cleaned up the code so it only reads each memory location once
Admin:
Tested on rev C2 beagleboard.
Current thumb disassembler looks like it could do with a bit of an overhaul when
full support for the 32bit encodings is added.
*memoryi code could also be made a bit nicer if we don't mind thumb disassembly
failing if attempted on a CPU that can't (reliably) LDRH.
Tagged as Debugger-1_81

Moved the filetypes for JPEG, GIF, PNG and BMP into the public domain.
Finally... :)
Tagged as HdrSrc-1_75

Merge Cortex branch of HdrSrc into trunkDetail:
This should merge all of the Cortex HdrSrc changes into the trunk, so we don't have
to worry about OMAP builds breaking each time the trunk HdrSrc changes
Admin:
Untested!
Tagged as HdrSrc-1_76

Fix the Makefile's install phase.
This component could fail during the install phase due to the INSTDIR
symbol not being defined. The Makefile will now set this to the appropriate
value if not already set.
Tagged as HdrSrc-1_78

Important change to Hdr:Macros.
Replaced LSL, LSR, etc, macros with myLSL, myLSR, etc. because the old macro
names will clash with pseudo-opcodes that ARM have introduced which in turn will
be supported by newer assemblers.
Admin: this will cause some components to fail to build, especially with the
existing toolchain. If you see these failures, simply replace any uses of these
shift macros with the renamed 'my' shift macros (which are functionally identical).
Tagged as HdrSrc-1_79

Resynced with master headersDetail:
Only change is "decloaking" of a couple of messages in the Wimp's private
message block, originally for RISCOS Ltd. These are now publicly documented
so I don't think there's any harm in revealing them in the headers.
Admin:
Message_ToggleBackdrop is required by a Pinboard source submission.
Tagged as HdrSrc-1_80

Fix InsertTMLInitialisation macroDetail:
hdr/Debug - Corrected a bad use of mymrs from within the InsertTMLInitialisation macro
Admin:
Macro compiles OK, but is untested
Tagged as HdrSrc-1_85

Remove some macros which are now kernel-onlyDetail:
hdr/Macros - BYTEWS, LDROSB, STROSB & VDWS macros are now located in the kernel
sources, to help keep kernel workspace private and to allow them to adapt properly
to zero page relocation
Admin:
Latest kernel sources required in order for ROM builds to function.
This change will break the Interlace module, but everything else should hopefully be
fine.
Tagged as HdrSrc-1_86

Add a skeleton TextGadgets internal header file.
The error base and, where possible, error numbers are set to be the same as used in
the RISC OS Ltd version of the TextGadgets module.
Tagged as Common-0_15

Function returns no longer use stack structures.
Previously, a number of errors were contructed as automatic variables then returned to
the caller - potentially accessing stale stack area. All error blocks are now held in
ROM and cast from there.
Error numbers are now not &00000000 or &20202020, using the allocated base - requires
'Common-0_15'.
Trimmed some unused debugging code out, saves about 3k.
Renamed C++ clashing variables to stop the compiler moaning.
Implemented feature request to accept the empty string "" as no font handle in
_SetFont calls.
At some point, this module needs internationalising.
Tagged as Gadgets-0_31

TextGadgets module fixes & improvementsDetail:
c/ScrollList, c/TextArea - ScrollList_SetFont and TextArea_SetFont now accept font
handles instead of just font names. The handles are handled in the same way as the
Window module, i.e. the handle will be managed and freed by the TextGadgets modules.
Fixes bug #212.
c/ScrollList, c/Scrollbar, c/TextArea - Fix handling of Toolbox_ObjectDeleted
events. Original code would corrupt the object lists when deleting items, and
reallocate much more memory than was actually needed. Fixes bug #214
c/MemMan - Fix grow_handlers to not leave handle_list as NULL if the realloc fails.
Fixes bug #216.
c/MemMan, c/TextArea, c/TextMan, h/MemMan, h/TextMan - Changed how the 'Handle' type
is handled. Instead of MemMan giving out direct pointers to Handle instances, it now
gives out identifiers (HandleId). These identifiers are then converted to Handle
pointers via get_handle whenever the contents need to be accessed. This allows the
handle_list to be safely realloc'd without breaking all the existing Handle
pointers. Fixes bug #217
c/MemMan - Reduced HDNLE_GRW_BY from 1000 to 128 to save a bit of memory
Admin:
Module compiles and runs, but actual functionality is untested.
Fixes bugs 212, 214, 216, 217.
Tagged as Gadgets-0_32

Resolve double inclusion warning in the makefile.
Internationalise the "Unable to dynamically link" message from the assembler code.
Move error numbers into their allocated range, was previously using its SWI chunk
instead!
Removed the Generic_SWI_handler veneer to TS_SWI_handler, it's not been needed for
over 13 years according to CVS.
Reorder a push to avoid deprecated instruction warning.
Lined up code to column 17.
Commented the service call a bit.
Used only the specific range needed in OS_SynchroniseCodeAreas for speed.
Tagged as TinyStubs-0_15

Fix wimp_EPTR_ENTER handler to not pass bad sprite area pointers to OS_SpriteOpDetail:
c/events - events_pointer_over_window now checks if the sprite area pointer is the
magic value of '1' (indicating to use the Wimp sprite pool) before attempting to use
the pointer with OS_SpriteOp.
Admin:
Tested on rev A2 BBxM.
Fixes issue reported on forums where assigning a custom pointer shape to a window
will cause an alignment fault on ARMv7:
http://www.riscosopen.org/forum/forums/4/topics/680
Tagged as Window-1_72

Fix PowerCycleEngine trashing random memoryDetail:
s/Driver - Fixed register misuse leading to PowerCycleEngine trashing random memory
instead of writing to the video card. In the instance where it crashed (with the
zero page relocation kernel) it was harmlessly writing to DebuggerSpace, but it
wouldn't surprise me if the address is somewhat random.
Admin:
Tested in Iyonix ROM softload
Tagged as NVidia-0_33

Stack imbalance.
Was popping R3 in the error case when it wasn't pushed.
Tagged as Colours-1_78

Make ColourTrans safe to buildDetail:
Previously ColourTrans was softloading the ROM version of itself as part of the
process of generating the 4/8bpp colour tables.
However with objasm 4 supporting the use of the ARMv6 MOVW, etc. instructions for
generating immediate constants, this can cause the host to lock up if running on an
older CPU.
To fix this, the makefile now builds an extra copy of the module targeting the
'All32' machine, which should be safe to softload on any reasonable (RISC OS) host.
Admin:
Tested with OMAP ROM build on Iyonix with objasm 4. No more nasty crash/hang.
Tagged as Colours-1_79

Fix Draw to only use UMULL/SMULL on appropriate hardwareDetail:
Version - Now uses Hdr:CPU.Arch to decide whether to enable long muls or not
s/Draw - Extra GETs for Hdr:CPU.Arch
Admin:
Tested in Iyonix & IOMD ROM softloads
Tagged as Draw-1_20

Update to work with zero page relocationDetail:
s/Draw - Try using OS_ReadSysInfo 6 to get IRQsema before falling back on the legacy
address. Store pointer in workspace for speedy access.
Admin:
Tested on rev A2 BB-xM
Tagged as Draw-1_21

Fix null pointer accessDetail:
s/Fonts01 - hdr*_PixoPtr is optional, but SWIFont_CharBBox was loading from it
without checking, causing random data to be read from zero page in some situations.
Admin:
Tested on rev C2 BB.
Tagged as Manager-3_67

Code generator improvements for ARMv5T and later.
The code generator could output TST instructions with immediate constants not
generated in the ARM approved way, while this isn't currently a problem the generator
is changed to encode constants less than 256 as an immediate with no shift.
Use of LDR rn, Rd,[Rn] would produce
LDR Rd,[Rn],#0
which is unpredictable when Rd=Rn. Swapped use of OFFSET0 to OFFSET(0) so
an indexed load is used instead.
Removed the explicit 'S' from TST use, since the TST macro includes 'S' already.
Delete h/swis (held centrally).
Delete h/kernel (held centrally).
Delete hdr/Modes (not used).
Tagged as SprExtend-1_22

A few small fixes.
Sources/PutScaled:
Sync comment with C code.
Sources/SprExtend:
Debug switch 'debuggs' had been left on, which left in some unnecessary code, but
turning it off pulled in code with a stack imbalance. Now off.
Ensured a terminator at the end of the RMEnsure.
Colour translation tables passed to SetPointerShape that were in top bit set
addresses were being interpreted as though no tt was supplied. Now tested against
zero to match docs.
Sources/SprTrans:
Switches pre 0.60 collapsed.
Sources/diffuse:
The C code was corrupting r12 workspace pointer so the check of the flag
'ctrans_recent' sometimes failed leading to a duff table lookup.
Small optimisation to checking of guard word.
c/PutScaled:
Change paths to be Unix friendly.
rojpeg:
Put assembler_panic in the header file to shut the compiler up.
3x unused files deleted.
Tagged as SprExtend-1_23

Clean up pass.
Trim 200+ lines of changes dating back to 1987, combine with non duplicates in the
'BlackLog'.
Use 'offsetof' macro in genjhdr to avoid warnings about uninitialised variables,
rename from makejhdr so all the utils are clearly demarked.
Add throwback to MkCFSI-j.
Replace reason codes passed to SWIs with textual equivalents from the respective
header files.
Speed up SWI despatch a bit by making the first few debug instructions depend on
'debuggs'.
Qualify all of the debug switches with the global 'debug' one.
Eliminate single use of 'pullx' macro.
Make do_branch() take an unsigned opcode so 50% of the branches don't result in
implied cast warnings.
Added an UNUSED() macro to reduce a few of the legitimate warnings (the remainder are
either in the original JPEG code or ones that it is worth checking the logic of.
Unixify one last filename.
Tagged as SprExtend-1_24

Fix two bugs causing aborts on corner cases.
1 pixel wide JPEGs:
The diffuse dithering code considers all lines as 1-N-1 where N can be zero and the
first and last pixel are dealt with specially because there's no data to scatter
beyond the edge.
With a 1 pixel wide JPEG the dithering code ended up with a -ve number in the X
counter and wandered off the end of memory. Fix just moves a SUB up a few lines and
turns it into a SUBS so that the 1 wide case becomes 0-N-1 with N=0.
1 pixel high sprites:
With output switched to a 1 pixel high sprite an abort would quickly follow because
the read of mode variables had a backdoor check to workaround a bug in RISC OS 2.00
which returned a duff value for YWindLimit in MODE 22. As the definition of MODE 22
got changed to 768x288 in RISC OS 3.xx (and the YWindLimit bug fixed) this code now
just falsely reported a 1 pixel high sprite as being 1024 high and the blitter
splattered all over memory it shouldn't.
Result:
Loss of RISC OS 2.00 compatibility, but can now load JPEGs of Xx1 or 1xY and even 1x1.
Tagged as SprExtend-1_25

Retire old compiler.
2000 lines of unloved code from 1993 deleted, binary still the same afterwards, so
should be same as 1.25.
Tagged as SprExtend-1_26

Panel beat with hammer of sanity.
Deleted c.SpriteOp to untangle it from c.rojpeg to draw boundary around JPEG code.
Moved all the OS_SpriteOp code out of SprExtend into a new file SprOp, so the main
file just contains the usual macros/includes/module heading.
Added new 'debugso' switch for debugging SpriteOps, was previously using 'debuggs'
which is supposed to be for JPEG leading to reams of confusing debug.
TestForMaskAtDepth was rejecting 8bpp sprites with masks due to testing against
log2bpp (4) instead of sprite type (5).
NSM_bpptable re-encoded in bytes rather than words, accesses ammended accordingly.
Took fresh copy of swiv2 from RISCOS_Lib revision 4.7.
SpriteV interception made a bit simpler (& faster).
Fixes to validate sprite (SpriteOp 17):
Was looking at the wrong bits of the mode word to test for old mode words.
Added new test for DPI values being non zero.
Algorithm more closely follows PRM.
Tagged as SprExtend-1_27

Remove postprocessing step of C code.
Since 2001 this module has been using objasm, but still using the C compiler to output
(via -S) assembly code which is then passed through 'sed' and included via GET into
the assembler code.
Changed to compile the C code into object files, and use the linker to patch up the
unresolved references - this has required some reordering of the C code to make sure
static functions now appear in the object file, and some reordering of the header
files to ensure both the module and the CFSI version still compile without conflicts.
Minor fix to 'swiv2', the label was in the wrong place for _swi() though it's not used
in this module so didn't affect the _swix() case.
Makefile cut down a bit. Unixify some path names.
Test code moved to 'Test/c' directory.
Tested in both debug and non debug cases via softloaded module. Oddly, it's 4 bytes
longer than the previous version.
Tagged as SprExtend-1_28

Reinstate mungeGCOL8to32.
Had erroneously been switched out in version 1.27 clean up, when it is needed. Comment
added to denote it's a fall through of the table above it.
Tagged as SprExtend-1_29

Remove pilot JPEG code.
During the original development (referred to in the docs as Sprite Extend 2) JPEG data
was briefly wrapped inside a sprite file before the JPEG_ swis were introduced. Within
SpriteExtend some code still remained to fake a mode 20 sprite header with the JPEG
output sized adjusted as though it was 4bpp, then later undo the faking by checking
for a mode 20 sprite with is_it_jpeg set.
This version removes all of the code looking out for pilot JPEGs, and rationalises the
fake sprite header to just report the true X/Y size.
Fix bug where r4 would be corrupted on exit from JPEG_PlotScaled if an error occurred,
and generally rationalised the exit cases a bit more sensibly.
Made the JPEG_ swi despatch a bit more simple to follow.
Corrected a comment in the NSM_bpptable.
Deleted unused 'ecfspace' from the workspace.
Hid the 'macroword' from the C code as it's now an assembler only value.
Cut the initial comments from c/putscaled and placed in Docs.
Cut the debug tracing code (a notable %age) from c/putscaled and placed in tracing
support file.
Simplified the entry to putscaled_compiler() now we don't have to look out for pilot
format JPEGs within sprites any more.
Sprinkled in some block comments to make navigating the c/putscaled file a bit easier.
Tagged as SprExtend-1_30

Get scaled/transformed JPEG widths right
Function asm_get_image_dims returns width in r2, was using r0, so version 1.30 would
leave shadows in !Draw. Changed to use r2.
Tagged as SprExtend-1_31

Paper and fill some JPEG cracks.
The exit_c function was repeatedly being called with the line number argument and
error code the wrong way round and since only bits 0-2 of the error code are inspected
on exit any fatal exits from the ported JPEG library code would either report the
wrong error or fail silently (depending on the line number) - example a 12 bits per
sample JPEG would be rendered without fault into a screen full of random memory
garbage.
Assembling/compiling with the 'jpeg' switch off didn't work, fixed, and also now zeros
out the SWI decode values in the module header.
Moved include of 'yuvtabs.s' into the colour conversion code.
Deleted panic_exit, it did nothing useful but trace a value then exit, so it now just
calls exit() like everyone else.
Removed excess call to find_image_dims(), this was needed just to get the workspace
requirements when the JPEG had already been sized up by asm_find_image_dims() earlier.
Side effect of removing the pilot JPEG code earlier is that this call can now only get
to the JPEG code from a JPEG_ SWI. Changed to just pass the workspace requirements
into 'c.PutScaled' and save a duplicate scan.
Fatal exits from the assembler huffman decoder now report a sensible error.
Trimmed out all the JPEG assessment code from 'c.PutScaled' and moved it into
'c.rojpeg' so the put scaled is only concerned with putting things scaled.
Sanitised the #includes a bit.
Fixed on last check of wp->save_mode looking at the wrong bits for the mode number.
Resolved all the warning in the genhdr/genyuvtabs/genpalette utilities by casting a
bit harder.[A[B
Added new more descriptive error messages to the messages file (not currently used),
and made the 'not supported by' ones consistent so the tokeniser might crunch the file
a bit more.
In looks_like_jpeg() changed a bitwise to logical or.
Fixed longstanding problem of not being able to render JPEGs at a scale of less than
1/6 in any greyscale mode, because, err, there was no code to do it - only the colour
case was checked for. Implemented for 8bpp grey and 32bpp grey (which gets dithered
for other lower modes) by just converting the luma channel into an equally weighted
RGB value or replicating it for 256 greys.
Tested in all 8 colour depths on a Risc PC using sampling ratios of 1x1; 2x1; 1x2; 2x2
of the IJG test image scaled in !Draw by 0.16.
Tagged as SprExtend-1_32

Change memory management strategy.
There's no need for the C code to know which pool of memory it's using, so simplify it
to just use malloc() and realloc(), the assembler implementation can then select
whether the RMA or a dynamic area is in use based on the 'dynamicarea' switch.
Be more careful about area_number when it is zero, since we use that to denote the
area is not yet set up but area zero is a valid dynamic area number!
Trim out some unused workspace.
Variable ccompiler_errptr had '# 0' bytes assigned, resulting in writes off the end of
the workspace.
Retire DUMPVAL[N]() macro.
Remove M_SOF9 as one of the SOF markers accepted - this is allocated to arithmetic
JPEGs which aren't currently supported.
Save a few words by: changing arbitrary constants (eg. safety margins) to be a power
of two so they can be register immediates; numerous loads and stores of R12 relative
variables changed to not use ADRL; jpeg_fetchroutine similarly simplified.
Tagged as SprExtend-1_33

Fix infinite loop when unrecognised entropy encoding encountered.
In find_image_dims() the while loop is only exited when SOF0 or SOF1 (the two
supported ones) is encountered, the other 14 possible combinations got stuck in a loop
because OS_GBPB doesn't return an error at EOF.
Check added for OS_GBPB returning nothing, plus an exit when a SOS or EOI tag is hit
for the memory only check (it's not possible to know where the end truly is in that
case.
jcconv: warning supressed.
SWIs: comment corrected.
Tested with a bogus SOF, now gives an error message instead.
Tagged as SprExtend-1_34

API enhancement and space saving refactoring.
Setting bit 1 of r0 in JPEG_FileInfo and JPEG_Info will now return the SOF type of the
JPEG in question in bits 3-6 of the info flags in r0 on exit.
Took this opportunity to refactor find_image_dims to take a structure pointer rather
than lots of individual pointers (CFSI-JPEG ammended to match). Untangled the return
codes a bit so it is only necessary to inspect r0 on exit from C to determine the
outcome. Values of 1 & 2 are translated in the assembler code into more specific error
messages than just "Incomplete or corrupt JPEG".
Fix bug where unknown density marker would leave the file open in JPEG_FileInfo.
Don't bother ADRL'ing r1 for error messages that don't have a %0 in them.
Added all the input & output flag definitions to the exported header file so other
callers can use them too.
More functionality, fewer bugs, about 200 bytes smaller too.
Tagged as SprExtend-1_35

Obey bit 0 of JPEG_[File]Info flags.
When clear, r2 and r3 are preserved per PRM documentation.
Also BIC'd out bits 7-10 of r0 on return so they can be reused in future, previous
version would always have returned &C in those bits.
Tagged as SprExtend-1_36

Reorganise rojpeg.
Aside from moving blocks around and adding comments, decisions about numcomponents use
switch/case statements to allow CMYK support in the future.
Split out (some of the) Huffman decoding to allow arithmetic support in the future.
Moved memcpy() and memset() into CSupport.
Tested in all colour depths with 1x1; 1x2; 2x1; 2x2 sampling & ChangeFSI.
Tighten up check on cinfo being NULL (was previously only checked in the colour
decoder, not the monochrome).
Tagged as SprExtend-1_37

branches: 1.35.2;
Retire unused IJG version 4 files.
Fold RISC OS specific colour conversion routines into rojpeg.
Remove jcconv, this also highlighted there were some more unused functions.
Should make move to IJG version 8 even easier.
Tagged as SprExtend-1_38

Bulk search & replace to use 8b headers.
Highlighted that last_dc_val should have been a JCOEF * not an int *.
Still works - amazing!
Tagged as SprExtend-1_38-1_35_2_1

Create assembler equivalents of C colour conversions, approx 10% speed up.
Add new switch ASMCOLOR to select which to use, C or assembler.
Remove FILE_ exit trace concept, just use __FILE__ instead in exit_erl.
Add some comments to exit_erl and friends.
A few bits of cinfo setup moved into start_pass_huff_decoder() or eliminated.
Bumped up the precision of SCALE_BITS in the C colour handling so FIX() uses more bits
of an int.
Deleted the unused remenants of light dithering in the 8bpp colour converter - saves a
few cycles.
colour_convert_8 and colour_convert_16 no longer save entry registers the C compiler
doesn't care about.
Update genyuvtabs to EXPORT the table bases.
Split out the compilation of IJG files as separate objects in the make file, rather
than including them from within rojpeg, which is itself included from putscaled.
Tagged as SprExtend-1_38-1_35_2_6

For completeness, implement the 2x2->8bpp and 2x2->16bpp colour conversions in C too.
While slower than their assembler equivalents it makes the whacky address generation a
bit easier to follow.
Fix MakeFile to not stop when trying to deleted an empty directory.
Tagged as SprExtend-1_38-1_35_2_7

Use USAT in 150 occurrences of colour clamping for ARMv6 and later.
Some IDCT renaming.
Shock addition of some documentation on how it all works.
Mirror fix from 1.39 on the trunk.
Debug
Made DEBUG version compile again, earlier header shuffling was preventing it.
Replaced the ' _ ' method of variadic macro emulation with more familiar double
brackets for tracef().
Eliminated IFDEBUG macro and just used #ifdef DEBUG/#endif or tracef() directly.
Don't bother passing the line number and file name to exit() when in the non DEBUG
case.
Tagged as SprExtend-1_38-1_35_2_8

New jerror.h taken from IJG8b.
Swap to using JERR_ numbers, deleted E_ numbers.
Modify genjhdr to pass some defines to the assembler code, so jdcolor can clarify use
of DCTSIZE and DCTSIZE2.
Added chart of possible subsampling ratios to documentation.
Tagged as SprExtend-1_38-1_35_2_9

Remap return results for CFSI-JPEG to match new cinfo structure.
Tested with a handful of JPEGs and !ChangeFSI.
Tagged as SprExtend-1_38-1_35_2_11

Migrate to jdmarker from IJG 8b.
ERREXIT's in jdhuff now use JERR_ numbers (missed earlier because it's switched out by
default).
Tagged as SprExtend-1_38-1_35_2_12

Reorganise data input.
Fill in INPUT_VARS and INPUT_SYNC so it uses register variables.
Make use of data source manager (cinfo->src).
Calculate bytes_in_buffer when restoring the huffman position.
Swap process_restart() for the one now in jdmarker.
Tagged as SprExtend-1_38-1_35_2_13

Abstract entropy decoding.
Currently still only support Huffman, but now agnostic, there are two functions
'decode_mcu()' which does the full DC+AC decode of a full MCU worth of data, and
'skip_mcu()' which just does DC and consumes but discards the AC coefficients.
Apply fix from 1.40 trunk version for monochrome output in a 8bpp greyscale mode.
Restore name of DCTFIX() macro to FIX(), no longer needed now the constituent parts
are compiled seperately rather than #included.
Fix CFSIjpeg to assemble even though it doesn't have a module base (the recently added
'relocatefn()' was breaking it).
Tagged as SprExtend-1_38-1_35_2_14

Fix bug in JPEG vetting, tag 0xC4 was being taken as an SOF and quitting the tag
scanning loop, which in turn rejected the JPEG as 0xC4 isn't a supported SOF type. In
fact, it's not even an SOF type at all. See new IS_AN_SOF macro.
Fix bug leaving JPEG file handle open when unknown SOF or entropy encoding encountered
(spotted testing the above).
Tagged as SprExtend-1_39

Fix rendering of monochrome JPEGs at a scale of less than 1/6.
The normalisation was wrong, leading to very dark images.
There was no code to deal with the 8bpp grey modes, leading to corruption.
This is the monochrome version of the same bug fixed for colour in 1.32.
Tagged as SprExtend-1_40

Made safe to build with newer ARM instruction support in objasm.
Replaced use of LSL (et al) macros with the new myLSL macros to avoid
potential clash with new pseudo-opcodes
Admin: requires HdrSrc 1.79 or later.
Tagged as SprExtend-1_41

Fixed set active coord from mask in OS_SpriteOp 36 (set pointer shape)Detail:
Page 33 of the RiscOS 3 volume 3 Programmers manual states that the
active point can be set from the sprite's mask. This was never
implemented but it is very useful as it means that the active point
is no longer hardwired into programs but dependant on the sprite
used.
The obvious problem is ptr_write. At present the active point is at
the top left. If you run !ptr_test and run the pointer over the
'standard active point position' writable icons from the bottom you
will see that the pointer changes to an I with its top at the bottom
of the writable icon. If you move the pointer until the top of the I
is just inside the upper writable icon of the 2 and click, the focus
goes into the upper writable - not what you'd expect.
Similarly it's difficult to place the caret between the 2 lls in
will. The bottom two icons shows the difference with the active
point in the correct position in the I beam.
You could change the wimp to put the caret in the correct position
like I have in the bottom 2 writables of !Ptr_test however this
would have the wrong active point position if the mode had
rectangular y pixels and it wouldn't fix all instances where
programmers had set ther own values.
It also means that themes can change the pointer active point as
well as the shape.
The routine added copes with old and new type sprites of any bit depth though
OS_SpriteOp 36 has a 8bit limit.
Admin:
Tested on Iyonix 5.17.
Author:
Colin Granville
Tagged as SprExtend-1_42

Make SpriteExtend perform sanity checks on sprite/area pointersDetail:
Sources/SprExtend - Added new CheckAlignedAndSensible macro to make it easy to check
pointers. Pointers which aren't word aligned or are less than 256 are considered bad.
Sources/SprOp - Update findsprite, getspritename and getspriteaddr to check
sprite/area/name pointers for validity. Sprite names are the only ones that are
allowed to not be word aligned.
Admin:
Tested on rev A2 BB-xM.
Tagged as SprExtend-1_43

Small optimisation to mask twiddling in 24bpp case, the code was emitting 3
instructions because it didn't use LSR#32 which is a documented instruction.
Changed an unaligned load in the 16bpp case to use LDRH when possible.
Lined up some stuff, changed R15 to PC.
Tagged as SprExtend-1_44

Revise strictness of sprite area checking.
Those SpriteOps that modify the sprite input now
* R0=&0-&FF R1=don't care R2=mustn't be too low down
* R0=&100-&1FF R1=must be valid R2=mustn't be too low down
* R0=&200-&2FF R1=must be valid R2=must be valid
Those SpriteOps that just display but don't modify the input sprite
* R0=&0-&FF R1=don't care R2=mustn't be too low down
* R0=&100-&1FF R1=must be valid R2=mustn't be too low down
* R0=&200-&2FF R1=don't care R2=must be valid
In this context, valid means word aligned and not too low down.
In this context, too low down is anything below &100.
Tagged as SprExtend-1_45

Add OMAP3 U-Boot scripts to autobuilderDetail:
The OMAP3Dev product now has its own custom release_autobuild script, which adds my
U-Boot scripts and their source code to the zip file.
Admin:
Tested with MkAuto script; seems to work OK!
Tagged as ABRelease-0_11

Update OMAP3 ROM autobuilder step to include !SDCreate in the ROM archive instead of a
bunch of U-Boot scripts
Detail:
Rather than running the risk of the user (or his OS) doing something wrong when
creating SD card images from scratch, OMAP3 ROM images will now ship with the
!SDCreate utility that presents the user with an easy-to-use WIMP frontend for
creating and writing SD card images.
For people without (working) RISC OS machines, the !SDCreate help file also contains
enough information to allow them to set up a card manually, along with the source to
the U-Boot scripts - so we're not really losing anything by deleting the old scripts
folder.
Admin:
Tested the release_autobuild stage on an OMAP3 ROM build, and everything seemed to
be OK.
Tagged as ABRelease-0_12

Update SDCreate to V1.02Detail:
Resources/OMAP3Dev/!SDCreate/!Help, Desc & SDCreate,ffb - Updated for V1.02 of
SDCreate. Fixes generation of SD cards for BeagleBoard-xM and TouchBook.
Admin:
Tested with generation of all image types, and booting on TouchBook.
Tagged as ABRelease-0_13

Made various changes to this component to bring into line with releases.
Various targets from this component now build stuff which fully matches
the things that get uploaded onto the ROOL web site. This removes quite
a bit of manual faffing from the autobuild-then-release process. Next
step will be to fully automate the autobuilder using the modified RPCemu
from Jeffrey Lee.
Tagged as ABRelease-0_14

Replace !SDCreate with v1.02b. Add InstallHD4 script to help with setting up a !Boot
sequence on OMAP machines.
Detail:
Resources/OMAP3Dev/!SDCreate/!Help, !Run, !Desc - Updated to V1.02b. Only real
change is to check for v1.28 of the FrontEnd module, since v1.16 was reported as not
working.
Resources/OMAP3Dev/InstallHD4,fe6, ReadMe.txt, release_autobuild,feb - Added
InstallHD4 script, based around Trevor Johnson's script on the wiki
Admin:
InstallHD4 script tested on BB-xM; seems to work!
Tagged as ABRelease-0_15

Added Disc and OMAP4Dev ABRelease resources
Added autobuild resources for the OMAP4Dev and Disc builds. Both of
which are untested but at least the OMAP4Dev one should be fine as
it's just a copy of the OMAP3Dev resources (with a couple of edits).
The Disc build stuff is about building a (zip compressed) Filecore
disc image of the resulting stuff. This would be good for 'burning'
straight onto a USB memory stick (e.g. with the Unix 'dd' command)
to boot machines from. WORK IN PROGRESS!
Tagged as ABRelease-0_20