DeskLib Changes
===============

Prehistory

* In 2003(ish), a hacky 26/32 bit neutral conversion was made on my
  RiscPC. It "generally worked on both 26 bit and 32 bit machines, but
  failed with strict alignment faults enabled because the C compiler's
  propensity for using unaligned loads.
  
* In 2014(ish), the code was recompiled using a newer compiler (with
  MANY MANY THANKS to Ron Briscoe for the invaluable assistance), apps
  built and worked on a Beagle xM (thanks Joe) and a Pi (thanks CJE).
  


2015/07/10 (Rick Murray)

* Removed the many copies of "Macros", "SwiNos", and "RegDefs" used in the
  assembler veneers and set everything to point to one master copy.
  
* Updated "SwiNos" (and the C "SWIs") to know all the SWIs on a typical
  RISC OS 5 system.
  
* Assembler code now uses "ENTER" and "EXIT" macros around functions, so
  code can more easily be built for 26 bit or 32 bit targets.

* Fixed File.s.GetType to flow better, and added code to correctly return
  the filetype as zero if the file has Load/Exec addresses and no filetype.

> Looks like Filing_SingleFullDirEntry() and Filing_SingleFullDirEntry2()
  may be back to front - the "2" suffixed versions do not extract the
  filename but the non-"2" versions do (then call the "2" version).
  [THIS HAS NOT BEEN FIXED PENDING VERIFICATION]

> Ditto Filing_SingleDirEntry[2]().

> Single2 and SingleFull2 set R3 to 256. Error?

* Filter library routines now call X version SWIs. This may be a little bit
  paranoid as the Filter SWIs claim to preserve ALL registers; though a
  look at the source code (...castle.RiscOS.Sources.Desktop.Filter.s.SWIS)
  indicates that R0 will be an error block if the initial RMA workspace
  claim failed, and that if the Filter could not be set up then it WILL
  return with V set. So the SWIs may or may not point to an error block,
  but V will be set on an error so calling the X version is the best bet.
  
# Converted as far as "Font".



2015/07/11 (Rick Murray)

* Changed MsgTrans code to use standard definitions instead of doing its
  own thing.

# Converted from "Font" as far as "PDriver".



2015/07/12 (Rick Murray)

# Converted from "PDriver" to "WimpSWIs", which means conversion is complete.



2015/07/13 (Rick Murray)

* Fixed bug in ColourTrans_ReturnColourNumber() that was incorrectly returning
  -1 if there was NOT an error.
  


2015/07/24 (Rick Murray)

* Moved build to APCS32 directory (instead of Static). Removed unnecessary 'h'
  directories, and all of the DLL stuff.
  DLL *code* will be removed as it is encountered - it is benign.



2015/07/26 (Rick Murray)

* Added BackTrace_Simple() to output to file or screen; the backtrace is 26/32
  bit compatible and correctly caters for peculiarities of the StrongARM.
  
* Modified existing BackTrace functions to be 26 bit or 32 bit compatible.
  
* Added ColourTrans_SetFontColours() and ColourTrans_SetTextColour().

* Sprite_MemorySize() now correctly calculates the sprite size for "deep"
  sprites, and also uses a lookup table for the palette sizes so it can return
  meaningful results even if the mode itself is not available to RISC OS (for
  example, MODE 12 on a Pi will go to MODE 15 as the hardware does not support
  16 colour modes (ditto for other modes ... 0->15, 2->28, and so on).

* Many new Sprite_XXX calls with a 'P' suffix (akin to GCC DeskLib naming) to
  provide Sprite Ops that can accept a *P*ointer to a sprite, and not just a
  name.
  
* Noticed that Sprite_Get() loaded its registers incorrectly. Because of the
  use of APCS names, it perhaps wasn't noticed that R5 was missed and the
  data for R5-R7 was loaded into R6-R8 instead. Fixed.

* DeskLib has been taught about mode specifier blocks; screen and sprite
  functions accept them (plus the BPP/DPI way of specifying sprites); as
  should Wimp_SetMode (but you shouldn't be using that!).

* Resource_LoadSprites() will now ask the Wimp what sort of sprites file it
  would like to use. If this call fails (ancient WIMP), it will revert to
  looking for itself - first checking for Sprites22 if a 1:1 screen mode is
  in use, reverting to Sprites.

* File_Size() now allows image files to be 'sized'. It also now returns -1
  on an error, so it is possible to distinguish between a zero sized file
  and an error; as a zero length file is a lot more likely than a 4GiB file.

* Completely rewrote Wimp_Poll[Idle]. The Wimp can save the FP registers
  for us, so we don't need an awful lot of code to do it ourselves. Now the
  poll routine is sleek and simple.

* Got sick of updating "h_doc" and "h" for every change. So now "h_doc" IS
  "h", and that's all there is.
