Ovation v1.50 - Rick'sMods (based upon v1.49)
=============

This is a 32 bit application built on a RaspberryPi. Going forward in this
incarnation, no attempt is going to be made to retain compatiblity with
RISC OS 2. I would be extremely surprised if this impacts ANYBODY at all...


2015/10/24 v1.50

* Converted so a DDE style application that builds the with-spellcheck version.

* Changed inefficient RISC_OSLib-derived polling code to 14 lines of assembler...

* Created a Sprites22 file for better looking sprites and icons (in as much as
  my (in)famously lame drawing abilities permit).
  
* Ovation will now load Sprites22 if it exists. Due to how Ovation was designed,
  this was actually a surprisingly simple modification.


2015/11/04 v1.50 *released*

* Undid the previous changes to the Menus. It seems to have been a quirk of my
  machine at that moment in time, the original menu set works fine now (!?); so
  no point fiddling with something that isn't broken...

* Tweaked AutoRun.!OArtWorks to correctly load ArtWorks modules (my version was
  incorrectly setting OvationPro$ArtWorks - that might have been something that
  I missed up back circa Y2K or so...whenever it was I changed to OvationPro!)

* Changed all occurances of Ovation$Path to Ovation$Dir.

* Changed OvationDictionary$Path (neither a path nor in Ovation namespace) to be
  Ovation$Dictionary.

* Templates file now just called "Templates". Older "Templates2" discarded.

* As RISC OS 2 is deprecated and the spellcheck build is "default", it was possible
  to trim a lot of junk from !Run (and hardwire suitable defaults in the code).

  Accordingly, the following system variables have no purpose any more:
    Ovation$Dither            - RISC OS has supported dithering for aeons.
    Ovation$FontMan3          - RISC OS has supported rotated fonts for aeons.
    Ovation$Spell             - Spellcheck version is now 'assumed'.
    Ovation$Sprite3           - RISC OS has supported rotated sprites for aeons.
    Ovation$Templates         - RISC OS 2 or 3 style Template selection

* Drastic modifications to the !Run file.
  (plus a lot of comments to make things easier)
  
* On the Pi, Ovation requires 500K (application space) plus it creates a Dynamic
  Area that is initially 80K. Therefore, the least Ovation requires is 580K. In
  the !Run file, this is rounded up to 608K (to be a multiple of a 32K page).
  This requirement is the first thing in the !Run file. Just before running the
  program, the WimpSlot is set to 512K - enough to run the main program (again,
  rounded to next highest 32K increment).
  Things may be different on a machine that doesn't support Dymanic Areas; with
  a little luck Ovation will get itself running and then manage its own slot...
  [in case you can't read between the lines, this means "it wasn't tested" ;-) ]

* Compiled on a RaspberryPi (non-ZPP custom build of RISC OS 5.21).
  Tested on RaspberryPi with Frobnicate magazine, issue #1 (it's on Arcade BBS).
  Tested with text frame import.
  Tested with Sprite image import, plus rotated 38 degrees (randomly chosen angle).
  Tested with JPEG image import (JPEG rotation not supported).
  Tested with DrawFile image import, plus rotated 38 degrees.
  Tested with ArtWorks image import (Startup splash screen within !AWViewer).
  Tested with ArtWorks image import (Pi -> $.Documents.Images.ArtWorks.Apple5).
  ...and the ArtWorks images both able to be rotated 38 degrees. ;-)
  Tested with line drawing - default narrow black line. Arbitrary start/end.
  Tested with line drawing - 2mm red dot-dash line with arrows at each end.
  Frobnicate looks correct, so text flowing not tested. Assumed to work...
  Spellcheck tested on Frobnicate. Works but many faults due to the use of
  technical words not in the dictionary...though I can see I spelled
  "seperate" incorrectly. Pffft! <blows raspberry>

* OH MY GOD. SO MUCH PAIN!
  Yup. After the above tests, I decided to fire up my ZPP version of RISC OS
  to see how Ovation fared.
  It didn't.
  Is the short answer.
  The logfile for loading Frobnicate #1 ran to some 40K and about 30 entries.
  Since that was worrying but not frightening... time to warm up the compiler
  and abuse the assert() statement...

* ZeroPain quashed - was trying to read an error number from a returned error
  block (in fo.addtocache)....that is NULL if there was no error. This cropped
  up when trying to open a new document.
  
* ZeroPain quashed - a rather horrible pile of checks in act.setactives() was
  checking if "!act->box" (among other things) and then ORing a check with
  "(act->box)->type". If act->box is NULL, where's ->type supposed to be?
  Now split into multiple checks. This cropped up when trying to open a new
  document.
  
* ZeroPain quashed - Acorn's DrawFile code (Drawfiles.note_fontcat) was
  setting a "size of font header" value without bothering to check if the font
  header even existed. This cropped up when loading Frobnicate #1 which has
  like a bazillion DrawFiles in it.

* ZeroPain quashed - vi.inspaqy was looking at the value of test->y which would
  fail if test was NULL. This cropped up when loading Frobnicate #1 - no idea
  what this function does, but it was broken and now it ain't. ;-)
  
* ZeroPain quashed - vec.setsrc was not coping with vlsrcp returning NULL. This
  cropped up when dragging a large image box around.

* ZeroPain quashed - drag.gotextdrag was not checking if box was NULL. This
  cropped up when clicking in the borders to drag a guideline.

* ZeroPain code is contained within conditionals "ZEROPAIN" with original code as
  the #else clause, in case you want to revert for testing changes (etc).

* Tested on a RaspberryPi with ZPP build of RISC OS 5.23. Originally the same
  tests as given above; then going through and testing pretty much every menu
  option (plus dragging some stuff around).
  The notable omission here is PRINTING. It's gone midnight and I haven't even
  made dinner yet, so you'll have to excuse me NOT testing that part tonight.
  However, it seems that everything else works with ZeroPain module INACTIVE
  (so a problem would crash the application).



2015/11/05 v1.50 *released*

* Version number not bumped as only two minor fixes.

* Would crash with a Type5 on ARMv7. Anton Reiser did the hard work of
  tracking down the source of the problem and suggesting a potential fix.
  I didn't use his fix as it turned out that the xfastdiv400 code within
  s.osasm was returning using MOVS PC, R14. One that didn't get caught in
  the 32 bit conversion and had no particularly unpleasant effects until
  ARMv7.

* Corrected idiotic facepalm fail in tweaking !OArtWorks. I set the app's
  variable to be OArtWorks$Dir to match the app name, but forgot to change
  the one where the variable was actually used. This is why Ovation may
  have started complaining about ".IfExists" not being found. Thank you to
  Matthew Harris for pointing this out.
  
