<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <!-- This Source Code Form is subject to the terms of the Mozilla Public
       - License, v. 2.0. If a copy of the MPL was not distributed with this
       - file, You can obtain one at https://mozilla.org/MPL/2.0/. -->
    <!-- Copyright © 1992-1998 Colton Software Limited,
       - Copyright © 1998-2015 R W Colton -->

    <title>Colton Software Fireworkz - Release Notes - RISC OS</title>
</head>
<body>
    <h1>Colton Software Fireworkz &mdash; Release Notes &mdash; RISC OS</h1>

    <ul>
        <li><a href="#GettingStarted">Getting Started</a></li>
        <li><a href="#OnlineResources">Online Resources</a></li>
        <li><a href="#Support">Support</a></li>
        <li><a href="#Copyright">Copyright</a> and <a href="file:///Fireworkz:Help/HTML/licen.html">Licence</a></li>
        <li><a href="#ReleaseHistory">Release History</a></li>
        <li><a href="#KnownProblems">Known Problems</a></li>
        <li><a href="#FireworkzPro">Fireworkz Pro</a></li>
    </ul>


    <h2 id="GettingStarted">Getting Started</h2>

    <p>
        The Fireworkz <em>Getting Started Guide</em> may be accessed
        from the <em>Fireworkz-Manuals</em> package that you can install using PackMan,
        or <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/getting_started/">online</a>
        We recommend that you also install the Fireworkz-Examples package for the accompanying files.
        The <em>Fireworkz-Manuals</em> package also provides a copy of the <em>User Guide</em>.
    </p>


    <h2 id="OnlineResources">Online Resources</h2>

    <p>Many resources for Fireworkz are available <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/">online:</a></p>

    <ul>
        <li><a href="https://croftnuisk.co.uk/coltsoft/fireworkz/getting_started/">Getting Started Guide</a>;</li>
        <li><a href="https://croftnuisk.co.uk/coltsoft/fireworkz/user_guide/">User Guide</a>;</li>
        <li>
            <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/addenda_and_errata/">Addenda and Errata</a>
            &mdash; updates since the documentation was printed, and errata therein;
        </li>
        <li><a href="https://croftnuisk.co.uk/coltsoft/fireworkz/hints_and_tips/">Hints and Tips</a>;</li>
        <li>
            <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/downloads/">Downloads</a>
            &mdash; updated Fireworkz packages for RISC OS and example files, including those used in the <em>Getting Started Guide</em>;
            also Fireworkz for Microsoft&reg; Windows&reg;
            and Fireworkz source code ZIP archive sets.
            You are also welcome to modify the source code of Fireworkz as you want to meet your needs.
            The Mozilla Public License also gives you the right to distribute your modified versions.
        </li>
    </ul>


    <h2 id="Support">Support</h2>

    <p>
        As Fireworkz is now completely free-to-use, support for Fireworkz is a self-help affair.<br>
        There is a Google Group <strong>colton-software-fireworkz</strong> where you may seek help from other users:<br>
        web site: <a href="https://groups.google.com/group/colton-software-fireworkz">https://groups.google.com/group/colton-software-fireworkz</a><br>
        e-mail: <a href="mailto:colton-software-fireworkz@googlegroups.com">colton-software-fireworkz@googlegroups.com</a><br>
        Please include files which demonstrate any problems (using a Spark or ZIP archive).
    </p>


    <h2 id="Copyright">Copyright</h2>

    <p>Copyright © 1992-2022 Colton Software</p>

    <p>
        <a href="file:///Fireworkz:Help/HTML/licen.html#CopyrightExtra">Additional copyright information</a>
    </p>

    <p>Thanks to Richard Colton, Fireworkz is now open source and completely free to use!</p>

    <p>See <a href="file:///Fireworkz:Help/HTML/licen.html">Licence</a>.</p>


    <h2 id="ReleaseHistory">Release History</h2>

    <p>
        The full release history may be found <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/release_history/">online</a>;
        just the last few revisions of Fireworkz are documented here.
    </p>

    <p>Please refer to the <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/addenda_and_errata/">Addenda and Errata</a> for details of changes to functionality.</p>


    <h3>2.32.02 (12 Dec 2022)</h3>

    <p>Engineering format for number formats and the TEXT() spreadsheet function updated to match
    Resolution 3 of the 27th CGPM (2022) - '<em>On the extension of the range of SI prefixes</em>'.
    This adds the following to the list of SI prefixes to be used for multiples and sub-multiples of units:
    </p>
    <ul>
        <li>Q : 10^30</li>
        <li>R : 10^27</li>
        <li>r : 10^-27</li>
        <li>q : 10^-30</li>
    </ul>
    <p>Prior to this release, Fireworkz used prefixes that had been proposed by Jeff K. Aronson in the 1990s for these multiples and sub-multiples,
    with the prefixes W, X, x, w corresponding to the new prefixes Q, R, r, q.</p>

    <p>RISC OS: Interactive Help messages more consistent with RISC OS User and Style Guides.</p>


    <h3>2.32.01 (06 Nov 2022)</h3>

    <p>RISC OS: Screen rendering issue (introduced in 2.32) at some zoom factors fixed.</p>


    <h3>2.32 (05 Nov 2022)</h3>

    <p>More consistent use of https:// vs. http:// in URLs.</p>

    <p>Much missing spreadsheet function documentation now provided.</p>

    <p>
        Pressing Ctrl whilst clicking the Up icon in dialogue boxes may be
        used to set the value in the adjacent field to its maximum allowed value.
        Similarly, Ctrl-Down may be used to set the minimum allowed value.
        Ctrl-Up/Down arrow keys work in the same way.
    </p>

    <p>Improve detection of not-specifically-typed tab- and comma-separated-value files.</p>

    <p>RISC OS: Can import tab-separated-value files of type TSV (0xF0D), analagous to importing CSV files.</p>

    <p>RISC OS: Scrap transfer filename fixed (was FireworkzFireworkz, and in the wrong directory).</p>

    <p>RISC OS: Several toolbar sprites fixed to be visible on RISC OS 3.1.</p>

    <p>RISC OS: Updated ImageSlot transient utility has RISC OS 4/6 header and Aemulor 32OK trailing bytes.</p>

    <p>RISC OS: ROOL DDE 30d build environment used.</p>


    <h3>2.31 (10 Sep 2021)</h3>

    <p>The VALUE() spreadsheet function will also attempt to recognise date values, and numbers with currency and thousands separator characters.</p>

    <p>Please refer to the <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/addenda_and_errata/">Addenda and Errata</a> for details.</p>

    <p>Complex number spreadsheet function argument validation improved.</p>


    <h3>2.30.02 (30 Aug 2021)</h3>

    <p>Much faster M_DETERM() and M_INVERSE() with large matrices.</p>

    <p>No longer trims leading blank columns and rows when importing Microsoft Excel worksheets.</p>


    <h3>2.30.01 (15 Nov 2020)</h3>

    <p>RISC OS: RTF file type is claimed if nothing else has already claimed it.</p>


    <h3>2.30 (10 Nov 2020)</h3>

    <p>
        Fireworkz: Save as Embedded (OLE) - Notes.
    </p>
    <ul>
        <li>
            Fireworkz Pro can now save a document as a file (of file type FzDraw, 0xA78) containing both
            a Draw representation of the document and the underlying Fireworkz format document encapsulated in a Draw object.
            This is very useful for OLE-supporting applications which can import Draw files.
        </li>
        <li>
            Fireworkz can not save documents in this format, so it will not load these files when they are double-clicked in a directory display.
        </li>
        <li>
            They may be dragged to the Fireworkz icon on the icon bar so that the
            underlying Fireworkz format document may be viewed, but a warning is given when they are being saved.
        </li>
        <li>
            'Embedded (OLE)' files dragged into Fireworkz document windows are inserted as Draw files.
        </li>
    </ul>

    <p>The Save as template command has been moved into the new Save as sub-menu.</p>

    <p>The Export menu option has been transformed into an Export sub-menu, explicity listing the available formats.</p>

    <p>The Export as Drawfile command has been moved into the new Export sub-menu.</p>

    <p>The style that is created and applied to tables that are inserted into Letter-based documents now contains Heading x# so that cell references make sense.</p>

    <p>CSV import as table and Microsoft Excel import attempt to add a BaseTable style area if said style exists (Insert Table already does this).</p>

    <p>
        If style elements that are normally added to a table area on insertion (paragraphs margins, grid style)
        are present in an added BaseTable style, they are no longer added.
        Separate column width regions are still added to table columns.
    </p>

    <p>
        There is now a Go to command (F5).
        A dialogue box will appear in which you can specify where you want to go to.<br>
        You can type a cell reference here or specify a named cell (or range).<br>
        If you type a number, it will be interpreted as a row number.
        The current cell will stay in the same column as before, but move to the specified row.
        If you type plus (or minus) before the number, it will be interpreted as a row offet.
        The current cell will move down (or up) by that number of rows.<br>
        If you type one or more letters, it will be interpreted as a column specifier.
        The current cell will stay on the same row as before, but move to the specified column.
        If you type C followed by plus (or minus) then a number, it will be interpreted as a column offet.
        The current cell will move right (or left) by that number of columns.
    </p>

    <p>
        Autoformat is no longer applied to numeric data typed in without any additional format characters,
        so the resulting cell will be displayed using an existing base or cell style.
    </p>

    <p>The Auto Sum button has been changed to popup a short menu of useful aggregate functions.</p>

    <p>The Auto Sum button now fills in the bottom right cell (being the sum of the sums of each row) if both the bottom row and rightmost column of the selection are empty.</p>

    <p>The MATCH() spreadsheet function now behaves as documented, returning a cell reference when successfully searching a range (this had always been broken in Fireworkz and Resultz).</p>

    <p>The DOLLAR() spreadsheet function now formats negative numbers in parentheses.</p>

    <p>The first button to the ALERT() and INPUT() spreadsheet functions is mandatory; if it is empty, the button is labelled "OK".</p>

    <p>The second button to the ALERT() and INPUT() spreadsheet functions is optional; if it is present, but empty, the button is labelled "Cancel".</p>

    <p>The JOIN() and REPT() spreadsheet functions now check for 32-bit overflow when calculating how much space to allocate for the result text string.</p>

    <p>Empty arrays returned from spreadsheet functions now reliably render as blank.</p>

    <p>The Edit &ndash; Chart dialogue box for bar and line charts now displays a sensible caption when a non-axis or non-series chart item is selected.</p>

    <p>Failed loading of malformed documents no longer leaves null events running continually.</p>

    <p>Faint grid now renders correctly again (broken in 2.10.01).</p>

    <p>The C library's complex number functions are used where possible in the complex number spreadsheet functions rather than our own implementation of these.</p>

    <p>RTF import: trailing space after an escaped hex character is no longer consumed.</p>

    <p>RTF import: default \uc value is one.</p>

    <p>RTF import: now handles surrogate pairs for non-BMP UNICODE characters.</p>

    <p>RTF export: non-BMP UNICODE characters are now saved as a surrogate pair.</p>

    <p>Fixes for Microsoft Excel import where the Excel "General" cell style is applied.</p>

    <p>Added Microsoft Word / LibreOffice-compatible keyboard shortcuts Ctrl-L/E/R/J for Justify Left/Centre/Right/Full.</p>

    <p>If a document only has a single page, only that single page number is displayed in the Print (Extra) dialogue box.</p>

    <p>When saving a document that uses a CurrentCell style, an associated redundant implied region is no longer saved.</p>

    <p>The Save as template dialogue box presents the Style list using a drop-down menu for compactness.</p>

    <p>Scaling removed from the View control dialogue box to a separate View scale dialogue box.</p>

    <p>More numeric formats are presented in the Style &ndash; Numbers drop-down menu.</p>

    <p>
        Uses 32-bit to 64-bit intermediate calculation for spreadsheet
        integer addition/subtraction/multiplication where necessary
        so that potential overflow checks with larger integers
        don't force calculations to be done in floating point.
    </p>

    <p>Reject plus and minus in dialogue box writable fields which have an integer minimum value greater than or equal to zero.</p>

    <p>The function selector dialogue box now shows all optional parameters for each spreadsheet function, not just the first one.</p>

    <p>Use standard OK and Cancel button placement for Backdrop dialogue box.</p>

    <p>Attempting to load a document which is already loaded no longer stops with an error.</p>

    <p>RISC OS: Font table object in charts might not have been generated if the only text was the last object in the chart.</p>

    <p>RISC OS: Thin lines are rendered as such in Draw files, rather than as a fairly thin line.</p>

    <p>RISC OS: Lines that should only be one pixel thick are rendered as Thin lines in Draw files, rather than being fattened by Draw_Stroke.</p>

    <p>
        RISC OS: Length of text passed to Font Manager is now limited (to 32K characters) to avoid
        millipoint space wrapping back to the origin of the same cell and so overwriting
        current content when very long spreadsheet text strings are generated.
    </p>

    <p>RISC OS: Chart style dialogue boxes no longer drift towards the bottom right of the screen with Adjust-click.</p>

    <p>RISC OS: Fixed the rendering of the pseudo-selection in the formula editing line.</p>

    <p>RISC OS: Fixed the rendering of up and down arrow icons in Dictionary dialogue box.</p>

    <p>RISC OS: Added Ctrl-A keyboard shortcut for Select All in dialogue box writable fields.</p>

    <p>
        RISC OS: Font identifiers in Draw file output (including Hybrid Draw)
        no longer explicitly contain a leading '\F' string (which is implied)
        before the RISC OS font name as this can confuse some older applications
        which could otherwise import these Draw files successfully.
    </p>

    <p>
        RISC OS: If a non-rooted file has been *Filer_Run and about to be claimed by Fireworkz via the DataOpen message, its filename is canonicalised.
        This would have previously just given an error as it tried, and failed, to look for the file on the path.
        Non-rooted filenames are also canonicalised when received via DataLoad and PrintTypeOdd messages.
    </p>

    <p>
        RISC OS: Behaviour when files are double-clicked in the Filer (or *Filer_Run)
        when the Shift key is pressed changed to allow these files to pass through to
        a Text editor even if they have an file extension recognised by Fireworkz.
    </p>

    <p>
        RISC OS: MimeMap module is now used to map file extensions to RISC OS file types.
        This takes precedence over the existing, limited, mappings in the Config file.
    </p>

    <p>RISC OS: Adjust-click on the 'Spectacles' icon opens the View scale dialogue box.</p>

    <p>RISC OS: Adjust-click on the Cut icon performs the Delete selection command (i.e. does not copy the selection to the clipboard).</p>

    <p>RISC OS: Clicking on Columns (or Rows) &ndash; Add after adds a single column (or row) without going via the dialogue box.</p>

    <p>
        RISC OS: Added Columns (or Rows) &ndash; Insert before dialogue box.
        As before, clicking on the menu option adds a single column (or row) without going via the dialogue box.
    </p>

    <p>RISC OS: Query dialogue boxes for Quit / Close with modified document(s) have the default Save button at the bottom right.</p>

    <p>RISC OS: Colour... buttons in the chart line and text style dialogue boxes now use the RISC OS Colour Picker dialogue box.</p>

    <p>RISC OS: Changed writable field height to more be consistent with RISC OS Style Guide Issue 3.</p>

    <p>RISC OS: Dialogue box button labels are now somewhat more Style Guide compliant.</p>

    <p>RISC OS: Read-only edit fields in dialogue boxes are now rendered on a light grey background and with a trough border.</p>

    <p>RISC OS: Improved formatting and content of messages returned from Fireworkz to interactive Help.</p>

    <p>RISC OS: You can now use Adjust on the Sum toolbar button to access the short functions list.</p>

    <p>RISC OS: Unhandled function key presses in edit controls and combo box controls are passed on.</p>

    <p>RISC OS: Loader now invokes the Splash program to display the splash screen in a separate task, reducing the delay in starting Fireworkz.</p>

    <p>RISC OS: Loader now terminates gracefully if the Squash module is not present.</p>

    <p>RISC OS: sm!firewrkz sprites made square so that small directory displays are not mis-aligned.</p>

    <p>RISC OS: High resolution (180dpi) Sprites11 are supported and supplied.</p>

    <p>RISC OS: ROOL DDE 29c build environment used.</p>


    <h3>2.24.06 (28 Apr 2020)</h3>

    <p>Fixed an unitialised memory issue that caused problems when loading documents containing custom functions.</p>


    <h3>2.24.05 (23 Apr 2020)</h3>

    <p>Fixed a spreadsheet issue that caused problems when updating/closing documents containing custom functions and/or names.</p>


    <h3>2.24.03 (01 Apr 2020)</h3>

    <p>Fixed an unitialised memory issue that caused problems with zero length strings as results of spreadsheet functions.</p>


    <h3>2.24.02 (27 Mar 2020)</h3>

    <p>Fixed a floating point rounding issue that caused problems with subtraction of dates.</p>


    <h3>2.24.01 (26 Mar 2020)</h3>

    <p>Fixed the WEEKDAY() spreadsheet function (broken in 2.24 when mode parameter added).</p>


    <h3>2.24 (22 Mar 2020)</h3>

    <h4>Date spreadsheet functions added:</h4>

    <p>
        DAYS(),<br>
        ISOWEEKNUM().
    </p>


    <h4>Mathematical spreadsheet functions added:</h4>

    <p>
        BASE(),<br>
        DECIMAL(),<br>
        GCD(),<br>
        LCM().
    </p>


    <h4>Engineering spreadsheet functions added:</h4>

    <p>
        BIN2DEC(),<br>
        BIN2HEX(),<br>
        BIN2OCT(),<br>
        BITAND(),<br>
        BITLSHIFT(),<br>
        BITOR(),<br>
        BITRSHIFT(),<br>
        BITXOR(),<br>
        DEC2BIN(),<br>
        DEC2HEX(),<br>
        DEC2OCT(),<br>
        HEX2BIN(),<br>
        HEX2DEC(),<br>
        HEX2OCT(),<br>
        OCT2BIN(),<br>
        OCT2DEC(),<br>
        OCT2HEX().
    </p>


    <p>The C_COMPLEX() spreadsheet function may take a single parameter as the real part of the resulting complex number with imaginary part zero.</p>

    <p>The DAYNAME() and WEEKDAY() spreadsheet functions may now take a mode parameter to control the calculation.</p>

    <p>The DDB() spreadsheet function may now use a non-integer period for calculation.</p>

    <p>The TRIM() and VALUE() spreadsheet functions can accept text strings longer than 200 characters as input.</p>

    <p>RISC OS: !RunImage is squeezed for faster loading from slow devices.</p>

    <p>RISC OS: Improved packaging giving homepage and indicating compatibility.</p>


    <h3>2.23 (not released)</h3>

    <p>
        'What happened to this release?' I hear you ask.
        This was used for developing new features and bug fixes,
        many of the former of which made it into 2.24,
        with some of the latter being backported to (bug fix build) 2.22.01.
        A number of people used copies of development builds
        that described themselves as 2.23 variants
        in order to test some of these new features and for checking bug fixes,
        so this version number was best left unused for actual releases.
    </p>


    <h3>2.22.01 (24 Dec 2019)</h3>

    <p>
        Formatting a very large number with a small radix
        (either with Style or the TEXT() spreadsheet function)
        no longer overflows temporary buffer causing subsequent error.
    </p>

    <p>Fixed the DAYS_360() spreadsheet function (had inadvertently been forcing European method).</p>

    <p>Fixed the SUM_X2PY2() spreadsheet function.</p>

    <p>Fixed memory leak when closing spreadsheet documents.</p>

    <p>Fixed inserting of names that are defined as cell references into text cells.</p>

    <p>Allow inserting of names that are defined as ranges into text cells. Only the top left cell value is used</p>

    <p>
        Attempts to autoformat numeric data typed on the formula editing line (as occurs with Edit in Cell).
        e.g. &pound;1,234 will be recognised as a number and formatted with currency symbol and thousands separator.
        Any text starting with an equals sign will not be autoformatted but parsed as a formula as before.
    </p>

    <p>Any error when loading a template for a foreign file is now referred to using the template filename, not the foreign filename.</p>

    <p>RowTable construct only saved in document when different to default (zero).</p>

    <p>
        PipeDream charts saved in either the new (0xA77) or the old (0xDDE) file type
        are recognised as Draw files and may be inserted into documents.
    </p>

    <p>Uses C library's inverse hyperbolic functions rather than own implementation.</p>

    <p>Checks for integer overflow when adding to/subtracting from date/time components.</p>

    <p>
        Checks for attempt to divide by a denormalised (i.e. very very small) number;
        this would previously have given FP error rather than Divide by zero error.
    </p>

    <p>Checks for rejection of non-numeric values in SPEARMAN() spreadsheet function improved.</p>

    <p>
        The Boolean spreadsheet functions and operators (such as AND() and &amp;)
        would previously have given a 'Parameter out of range' error when passed large numbers
        that were not representable in the largest (32-bit) integer type used internally,
        rather than just checking whether the number was zero (false) or non-zero (true).
        This also applies to Boolean values used in custom function control statements (IF/ELSEIF/WHILE/UNTIL)
    </p>

    <p>
        Numbers may now be formatted using a date format in the Numbers style section.
        If a date format is detected in that section, numbers are treated as
        Microsoft Excel-compatible serial numbers and converted to dates for formatting.
        This can help with importing files from Microsoft Excel.
    </p>

    <p>
        Formatting now imported better from Microsoft Excel BIFF3 files.
        This allows dates and/or times to be correctly detected.
    </p>

    <p>Increased accuracy of numbers loaded from Microsoft Excel and Lotus 1-2-3 files.</p>

    <p>RISC OS: Fix for double-clicking foreign file types when Fireworkz is not loaded.</p>

    <p>RISC OS: Internal error handler improved to show Continue and Quit button pair with more logical outcomes.</p>

    <p>RISC OS: ROOL DDE 29a build environment used.</p>


    <h3>2.22 (13 Feb 2019)</h3>

    <p>RISC OS: Fonts are not used in edit controls and combo box controls if no Desktop font is in use.</p>

    <p>RISC OS: No longer tries to conditionally provide ptr_menu for old systems.</p>

    <p>RISC OS: More tiny adjustment to calculated width of labels in dialogue boxes to avoid clipping.</p>

    <p>RISC OS: Toolbar buttons render better when the display mode is changed to different EIG factors.</p>


    <h3>2.21.04 (06 Jan 2019)</h3>

    <p>% displayed after View Control Scale value.</p>

    <p>RISC OS: Use a single routine for consistent manipulation of RGB for disabled items.</p>

    <p>RISC OS: List box entries rendered using Wimp_PlotIcon for improved contrast when disabled.</p>

    <p>RISC OS: Tiny adjustment to calculated width of labels in dialogue boxes to avoid clipping.</p>

    <p>RISC OS: No longer tries to conditionally provide ptr_write for old systems.</p>


    <h3>2.21.03 (18 Sep 2018)</h3>

    <p>Fix for mail merge field insert.</p>


    <h3>2.21.02 (02 Mar 2018)</h3>

    <p>Speed-ups for large sparse matrices in M_DETERM() and M_INVERSE().</p>


    <h3>2.21.01 (06 May 2017)</h3>

    <p>Windows-only fixes.</p>


    <h3>2.21 (04 May 2017)</h3>

    <p>Fix for importing Microsoft Excel worksheets using MULRK records with Excel "General" cell style.</p>

    <p>
        Allow template files that are loaded by double-clicking,
        dragging to the application icon (RISC OS) or from the Open dialogue box (Windows)
        to load supporting documents (e.g. custom functions or referenced data).
        This is achieved by renaming the newly created document after loading,
        rather than creating a new untitled document and loading the template into that,
        as remains the case when creating documents from the application icon (RISC OS) or from the New dialogue box (Windows).
    </p>

    <p>Page dialogue box button reorder with default at top.</p>

    <p>Style intro dialogue box button reorder with Cancel at bottom.</p>

    <p>Spreadsheet name intro dialogue box button reorder with Cancel at bottom.</p>

    <p>RISC OS: Fix UI for Choices dialogue box to allow caret in delimiter field.</p>


    <h3>2.20 (25 Oct 2016)</h3>

    <h4>Compatibility spreadsheet function added:</h4>

    <p>
        ODF.MOD()
    </p>

    <p>The COUNTBLANK function has been recategorised as a statistical function (like COUNTA).</p>

    <p>
        When saving a selection as Text that is just a fragment (i.e. not containing any whole cells),
        no terminating newline is appended.
        This is particularly useful when transferring text to other consumers via the clipboard.
    </p>

    <p>
        RISC OS: Support added for global clipboard.
        Fireworkz documents can accept clipboard data in Fireworkz native format and any other that it can import.
        Fireworkz documents can supply clipboard data in Fireworkz native format and any other that it can export.
        The 'writable icons' in dialogue boxes accept and supply clipboard data as Text.
    </p>

    <p>
        RISC OS: application resources moved from !Fireworkz.Resource. to !Fireworkz.AppData.
        Language-specific resources (Choices, Dictionaries, Document Templates) are located in a sub-directory of AppData.
        The only one currently provided is UK.
        Language-neutral resources (Markers, Pictures) may be found in the Neutral sub-directory of AppData.
        Fireworkz$Path is set by !Boot and !Run and is used to locate these resources.
    </p>

    <p>
        RISC OS: many resources (Loader, Help) are now located in !Fireworkz.Resources.
        (They had previously been separated out of the Resource directory into a RISC_OS sub-directory).
        Language-specific resources are located in a sub-directory of Resources.
        The only one currently provided is UK.
        A new variable, FireworkzRes$Path, is set by !Boot and !Run and is used to locate these resources.
    </p>

    <p>
        RISC OS: hi-res and lo-res sprites have been unbound from the executable and
        are now located in Sprites22 and Sprites24 respectively in !Fireworkz.Resources.
        Supports use of Wimp$IconTheme prefix to locate themed variants thereof (none are supplied).
    </p>

    <p>RISC OS: Window Manager flags bit is set to save and restore FP state over SWI PollIdle calls rather than doing it manually.</p>

    <p>RISC OS: Release notes are now located at top level in !Fireworkz.</p>


    <h3>2.10.02 (07 Jul 2016)</h3>

    <p>Version information (and therefore top-bit-set encoding used therein) is saved in each Choices file.</p>

    <p>BaseSingleCol construct is only saved in files where needed (i.e. when non-zero).</p>

    <p>All newlines are suppressed in files between elements in Style definitions and Effect applications.</p>

    <p>Reinstated the older Ctrl-Shift-D keyboard shortcut as synonym for Insert Date (now Ctrl-D).</p>

    <p>RISC OS: Better handles upgrading from an earlier version with a Choices directory but without a ChoicesDoc.</p>

    <p>RISC OS: Uses DejaVuSans.Mono 12pt (if it is available AND a Unicode Font Manager is in use) as the font for formula line text, edit controls and combo box controls.</p>


    <h3>2.10.01 (04 Jul 2016)</h3>

    <p>
        When the <em>Faint grid</em> option is used for on-screen display, the (thin) grid colour is now derived from the style system.
        For spreadsheets, this is usually best set in <code>BaseSheet</code>.
    </p>

    <p>RISC OS: Fix for partially initialised structure that could cause fault during application exit.</p>

    <p>RISC OS: Use extended syntax Wimp_ForceRedraw to update title bar more efficiently.</p>


    <h3>2.10 (24 Jun 2016)</h3>

    <h4>Date spreadsheet functions added:</h4>

    <p>
        EDATE(),<br>
        EOMONTH().
    </p>

    <p>
        Spreadsheet functions that take date parameters have been extended to accept numeric input.
        If a number is supplied where a date is required, it is treated as an OpenDocument / Microsoft Excel-compatible serial number and converted to a date value.
        This allows data sets containing such numeric values to be more easily processed in Fireworkz.
    </p>

    <p>Read-only files are locked against editing; to edit a read-only file it must first be saved with a different file name.</p>

    <p>The 3-D chart terms roll and pitch have been replaced by the terms turn and droop that better describe their actions (chart turns about y-axis, floor of chart droops forwards from the x-axis).</p>

    <p>Polygonal Draw paths in charts are now closed correctly.</p>

    <p>
        Non-rectangular quadrilateral Draw paths in charts use rounded joints.
        This avoids mitred joints of non-Thin lines poking well beyond 3-D bars.
    </p>

    <p>Greatly improved click selection of objects in charts; more refined tests are applied if the simple object bounding box is hit.</p>

    <p>JPEG files inserted into charts now render correctly.</p>

    <p>Resizing charts and pictures shows the zoom factor being applied.</p>

    <p>Supports loading of Poster and Vector (RISC OS) image files.</p>

    <p>ImageFileEmbedded construct added to handle loading/saving non-native / original format image files in addition to a more portable Draw file representation.</p>

    <p>Fixes for note unpinning / repinning.</p>

    <p>Fixes for note saving - compatibility for older readers.</p>

    <p>Note saving - where the original image file data is available (and is of type other than Draw file) this will be listed as the default option.</p>

    <p>Fix where inserting multiple copies of the same referenced picture could lead to them not being displayed until the document was reloaded.</p>

    <p>Styles that are only used in Upper regions (i.e. ones that are not printed, e.g. Current cell) are not used to populate the style in the Effects dialogue box.</p>

    <p>Improved sizing and alignment of UI elements in several dialogue boxes.</p>

    <p>Several OK buttons in dialogue boxes replaced with Insert buttons (e.g. for Insert field).</p>

    <p>Any errors when saving a user's Choices file will now delete that file: this avoids malformed Choices files preventing startup.</p>

    <p>Removed support for ancient 'Integrale' format spell check dictionaries.</p>

    <p>Template Text and Number styles updated to have an appropriate New Object attribute.</p>

    <p>Templates now use separate Header and Footer styles rather than a combined BaseHeadFoot style.</p>

    <p>RISC OS: Fixed bug which always mapped Shift+Select clicks as Adjust clicks and restored several Ctrl+Select clicks as mapping to Adjust clicks as documented.</p>

    <p>RISC OS: Fixed bug which prevented menus from having dashed-line separators.</p>

    <p>RISC OS: Uses DejaVuSans.Mono 12pt (if it is available) as the font for formula line text.</p>

    <p>RISC OS: Improved high-res sprites for toolbar buttons and Thin line style.</p>

    <p>RISC OS: Uses coloured Formula Enter (tick) and Formula Cancel (cross) toolbar buttons.</p>

    <p>RISC OS: Tweaked appearance of Make Constant and Function Selector buttons.</p>

    <p>RISC OS: Disabled toolbar buttons rendered on normal background rather than white (less intrusive effect).</p>

    <p>RISC OS: Changed the appearance of writable field borders to more be consistent with RISC OS Style Guide Issue 3.</p>

    <p>RISC OS: Uses ChangeFSI, if available, to convert a much wider range of image file formats. On machines where the OS is not shadowed in RAM, you can improve ChangeFSI's performance by first typing '*RMFaster BASIC'.</p>

    <p>RISC OS: Scrap files (for both file loading and image conversion) are created in the &lt;Wimp$ScrapDir&gt;.Fireworkz directory.</p>


    <h3>2.00.05 (10 Jun 2016)</h3>

    <p>Apply specified styles to empty cells when importing Microsoft Excel worksheets.</p>

    <p>Use cell alignment and background colour information when importing Microsoft Excel worksheets.</p>


    <h3>2.00.04 (06 Jun 2016)</h3>

    <p>Fix for importing compound documents with non-standard headers.</p>

    <p>Fix for importing Microsoft Excel worksheets with self-referential XF records.</p>


    <h3>2.00.03 (22 Nov 2015)</h3>

    <p>Fix for spreadsheet functions LOOKUP() and MATCH() with horizontal arrays. These were broken during changes for 1.34/11.</p>

    <p>Fix for full release history URL with new CMS.</p>

    <p>RISC OS: Changed the order of Help and Choices entries in the icon bar menu to be consistent with RISC OS Style Guide Issue 3.</p>


    <h3>2.00.02 (11 Nov 2015)</h3>

    <p>Fix for inline sequence size change perturbing style applications.</p>

    <p><strong>This is a critical backwards compatibility fix for all users.</strong></p>

    <p>Any documents created or modified in 2.00.00 or 2.00.01 that contain text with style/effect applications to the right of inline sequences (e.g. Insert date, Tab, Unicode) may need to have bits of style edited off with the region editor or reapplied.</p>

    <p>RISC OS: No longer offers Microsoft Excel as an export format (non-Pro).</p>


    <h3>2.00.01 (05 Nov 2015)</h3>

    <p>Fixed another error in null event handling for row formatting.</p>

    <p>RISC OS: Fix for styles in text when exported as Draw file.</p>


    <h3>2.00 (20 Oct 2015)</h3>

    <h3>New spreadsheet functions</h3>

    <p>A large number of spreadsheet functions have been implemented in Fireworkz to assist Microsoft Excel file loading, most of which are useful additions in any case.</p>

    <p>
        For details about any of the newly added spreadsheet functions, please see the <a href="https://croftnuisk.co.uk/coltsoft/fireworkz/addenda_and_errata/">Addenda and Errata</a>.
    </p>

    <p>
        Wherever possible, these new spreadsheet function names are
        compatible with the Open Document Format for Office Applications (OpenDocument) 1.2 standard (ODF)
        and Microsoft Excel 2013 to allow for easy future disambiguation.
        Loading formulae from (and saving them to) Excel BIFF files translates
        from (and to) the appropriate BIFF function number automatically.
        Note that some of the newest functions do not have BIFF function number equivalents.
    </p>

    <p>A number of these new functions require underscores in Fireworkz to disambiguate them from cell references (e.g. DAYS_360(), SUM_X2MY2()).</p>

    <p>M_UNIT() has an underscore for consistency with other Fireworkz matrix functions.</p>

    <h4>Compatibility spreadsheet functions added:</h4>

    <p>
        ODF.BETADIST(),<br>
        ODF.COMPLEX(),<br>
        ODF.FV(),<br>
        ODF.IMABS(),<br>
        ODF.IMAGINARY(),<br>
        ODF.IMARGUMENT(),<br>
        ODF.IMCONJUGATE(),<br>
        ODF.IMCOS(),<br>
        ODF.IMDIV(),<br>
        ODF.IMEXP(),<br>
        ODF.IMLN(),<br>
        ODF.IMLOG10(),<br>
        ODF.IMLOG2(),<br>
        ODF.IMPOWER(),<br>
        ODF.IMPRODUCT(),<br>
        ODF.IMREAL(),<br>
        ODF.IMSIN(),<br>
        ODF.IMSQRT(),<br>
        ODF.IMSUB(),<br>
        ODF.IMSUM(),<br>
        ODF.INDEX(),<br>
        ODF.INT(),<br>
        ODF.IRR(),<br>
        ODF.LOG10(),<br>
        ODF.PMT(),<br>
        ODF.TDIST(),<br>
        ODF.TYPE().
    </p>

    <h4>Boolean (logical) spreadsheet functions added:</h4>

    <p>
        AND(),<br>
        FALSE<br>
        OR(),<br>
        NOT(),<br>
        TRUE,<br>
        XOR().
    </p>

    <h4>Database spreadsheet function added:</h4>

    <p>DPRODUCT().</p>

    <h4>Date spreadsheet function added:</h4>

    <p>DAYS_360().</p>

    <h4>Engineering spreadsheet functions added:</h4>

    <p>
        BESSELI(),<br>
        BESSELJ(),<br>
        BESSELK(),<br>
        BESSELY(),<br>
        C_COMPLEX() (as ODF COMPLEX),<br>
        C_CONJUGATE() (as ODF IMCONJUGATE),<br>
        C_IMAGINARY() (as ODF IMAGINARY),<br>
        C_REAL() (as ODF IMREAL),<br>
        C_ROUND(),<br>
        C_SQRT() (as ODF IMSQRT),<br>
        DELTA(),<br>
        ERF(),<br>
        ERFC(),<br>
        GESTEP().
    </p>

    <h4>Financial spreadsheet functions added:</h4>

    <p>
        DB(),<br>
        FVSCHEDULE().
    </p>

    <h4>Loookup spreadsheet function added:</h4>

    <p>ADDRESS().</p>

    <h4>Mathematical spreadsheet functions added:</h4>

    <p>
        CEILING(),<br>
        EVEN(),<br>
        FACTDOUBLE(),<br>
        FLOOR(),<br>
        MROUND(),<br>
        MULTINOMIAL(),<br>
        ODD(),<br>
        PRODUCT(),<br>
        POWER(),<br>
        QUOTIENT(),<br>
        RANDBETWEEN(),<br>
        ROUNDDOWN(),<br>
        ROUNDUP(),<br>
        SERIESSUM(),<br>
        SUMPRODUCT(),<br>
        SUMSQ(),<br>
        SUM_X2MY2(),<br>
        SUM_X2PY2(),<br>
        SUM_XMY2(),<br>
        TRUNC().
    </p>

    <h4>Matrix spreadsheet function added:</h4>

    <p>M_UNIT().</p>

    <h4>Miscellaneous spreadsheet functions:</h4>

    <p>
        ISBLANK(),<br>
        ISERR(),<br>
        ISERROR(),<br>
        ISEVEN(),<br>
        ISLOGICAL(),<br>
        ISNA(),<br>
        ISNONTEXT(),<br>
        ISNUMBER(),<br>
        ISODD(),<br>
        ISREF(),<br>
        ISTEXT().
    </p>

    <h4>Statistical spreadsheet functions added:</h4>

    <p>
        AVEDEV(),<br>
        AVERAGEA(),<br>
        BETA.DIST(),<br>
        BINOM.DIST(),<br>
        BINOM.DIST.RANGE(),<br>
        BINOM.INV(),<br>
        CHISQ.DIST(),<br>
        CHISQ.DIST.RT(),<br>
        CHISQ.INV(),<br>
        CHISQ.INV.RT(),<br>
        CHISQ.TEST(),
        COMBINA(),<br>
        CONFIDENCE.NORM(),<br>
        CONFIDENCE.T(),<br>
        COUNTBLANK(),<br>
        COVARIANCE.P(),<br>
        COVARIANCE.S(),<br>
        CORREL(),<br>
        DEVSQ(),<br>
        EXPON.DIST(),<br>
        F.DIST(),<br>
        F.DIST.RT(),<br>
        F.INV(),<br>
        F.INV.RT(),<br>
        F.TEST(),<br>
        FISHER(),<br>
        FISHERINV(),<br>
        FORECAST(),<br>
        FREQUENCY(),<br>
        GAMMA(),<br>
        GAMMA.DIST(),<br>
        GAMMA.INV(),<br>
        HYPGEOM.DIST(),<br>
        INTERCEPT(),<br>
        KURT(),<br>
        LARGE(),<br>
        LOGNORM.DIST(),<br>
        LOGNORM.INV(),<br>
        MAXA(),<br>
        MINA(),<br>
        MODE.SNGL(),<br>
        NEGBINOM.DIST(),<br>
        NORM.DIST(),<br>
        NORM.INV(),<br>
        NORM.S.DIST(),<br>
        NORM.S.INV(),<br>
        PEARSON(),<br>
        PERCENTILE.EXC(),<br>
        PERCENTILE.INC(),<br>
        PERCENTRANK.EXC(),<br>
        PERCENTRANK.INC(),<br>
        PHI(),<br>
        POISSON.DIST(),<br>
        PROB(),<br>
        QUARTILE.EXC(),<br>
        QUARTILE.INC(),<br>
        RANK.EQ(),<br>
        RSQ(),<br>
        SKEW(),<br>
        SKEW.P(),<br>
        SLOPE(),<br>
        SMALL(),<br>
        STANDARDIZE(),<br>
        STDEVA(),<br>
        STDEVPA(),<br>
        STEYX(),<br>
        T.DIST(),<br>
        T.DIST.2T(),<br>
        T.DIST.RT(),<br>
        T.INV(),<br>
        T.INV.2T(),<br>
        T.TEST(),
        TRIMMEAN(),<br>
        VARA(),<br>
        VARPA(),<br>
        WEIBULL.DIST(),<br>
        Z.TEST().
    </p>

    <h4>String spreadsheet functions added:</h4>

    <p>
        CLEAN(),<br>
        DOLLAR(),<br>
        FIXED(),<br>
        N(),<br>
        SUBSTITUTE(),<br>
        T().
    </p>

    <h4>Implementation notes</h4>

    <p>
        FORECAST(), INTERCEPT(), PEARSON(), RSQ(), SLOPE(), STEYX()
        are implemented using a two-pass approach, first independently computing the mean values,
        then computing intermediate values (such as the sum of the squares, products) using the
        difference between each value and the corresponding mean value.
        This approach helps avoid many round-off errors and is also employed by Microsoft Excel 2003 and later.
    </p>

    <p>AVEDEV(), COVARIANCE.P(), COVARIANCE.S(), CORREL(), KURT(), SKEW(), SKEW.P() are also calculated using this two-pass approach.</p>

    <p>DEVSQ() is calculated using a one-pass 'calculator' approach using sum-of-squares and square-of-sums as with VAR() etc.</p>


    <h3>Spreadsheet enhancements</h3>

    <p>AVG(), MAX() and MIN() spreadsheet functions may now be applied to ranges of date / time values.</p>

    <p>BIN() spreadsheet function has always taken an arbitrary dimensioned array or range of data as its first parameter. Previously only the first column of this data would have been binned; now all the supplied data is binned.</p>

    <p>CHAR() spreadsheet function no longer allows Fireworkz' internal inline escape character (ASCII 21) to be inserted into a string (would subsequently crash the text formatter).</p>

    <p>COMBIN() & PERMUT() spreadsheet functions have improved accuracy for large parameters.</p>

    <p>
        Complex number functions now accept ODF/Microsoft Excel-style
        complex number strings (e.g. "2+1i", "1", "-j") as well as 2x1 arrays of numbers.
        The acceptable imaginary numbers suffix is either lower-case i or j,
        and where a function takes a pair of complex numbers and an imaginary number suffix is specified on both numbers,
        both numbers need not use the same suffix (Microsoft Excel would require both to be the same) and 'i' will dominate.
    </p>

    <p>Complex number functions reclassified as Engineering functions to assist new users transitioning from other software.</p>

    <p>
        DDB() spreadsheet function accepts an extra parameter, <em>factor</em> (optional).
    </p>

    <p>FORMULA_TEXT() spreadsheet function will now decode referenced formula as it would appear on the formula line (would have differed with alternate SSContext).</p>

    <p>GRAND() spreadsheet function will now recalculate automatically on reload.</p>

    <p>HLOOKUP() / VLOOKUP() spreadsheet functions will now reject negative offset parameters as intended.</p>

    <p>
        INDEX() spreadsheet function will now accept zero for the column and/or row number.<br>
        If the column number is zero, the whole of the specified row(s) is returned.<br>
        If the row number is zero, the whole of the specified column(s) is returned.
    </p>

    <p>
        INDEX() spreadsheet function will now accept zero for the optional column and/or row size.<br>
        If the column size is zero, the rest of the specified row(s) beginning at the given column number is returned.<br>
        If the row size is zero, the whole of the specified column(s) beginning at the given row number is returned.
    </p>

    <p>
        If the <em>length</em> parameter is omitted for LEFT() or RIGHT() spreadsheet functions, a <em>length</em> of one is assumed.
        A <em>length</em> of zero is now allowed (consistency with MID()).
    </p>

    <p>
        INT() spreadsheet function extended to return an OpenDocument / Microsoft Excel-compatible serial number
        when passed <em>date</em> parameter. Prevously this would have yielded an error.
        Given that Microsoft Excel incorrectly believes 1900 to be a leap year,
        the conversion is performed such that all dates starting from 01-Mar-1900 yield the same number as Microsoft Excel.
        Fireworkz can also yield serial numbers for dates before 1900, unlike Microsoft Excel.
    </p>

    <p>INT() spreadsheet function returns zero when passed time-only values.</p>

    <p>IRR() converges much faster (had poor initial condition).</p>

    <p>
        MEDIAN() spreadsheet function now accepts a list of parameters (used to be restricted to a single array parameter)
        and is now interruptible whilst processing very large data sets.
    </p>

    <p>REPT() spreadsheet function now yields an empty string when a repeat count of zero is specified.</p>

    <p>SORT() spreadsheet function now sorts on the correct (one-based) column number.</p>

    <p>STD(), STDP(), VAR(), VARP() (and their database equivalents) spreadsheet functions are now more stable with large numeric inputs.</p>

    <p>TIMEVALUE() spreadsheet function extended to accept a date as well as a time, rather than giving an error.</p>

    <p>Date/time values may now have fractional values added and subtracted from them.</p>

    <p>Improved handling of date/time values with just either date or time component.</p>

    <p>
        Evaluator coercion of real numbers to (non-custom) spreadsheet functions which
        require integer parameters now applies the same rounding as ODF.INT() to improve accuracy.
        This is similar rounding (around the 14th significant place) as applied to INT() in 1.30/05
        such that formulae which are affected by the imprecise floating point representation of
        fractional numbers e.g. INT((0.06-0.02)/2E-6) yield the correct integer value.
        Note that all such extra rounding in the evaluator, inlcuding that applied by INT(),
        may be completely suppressed by deselecting the option in the Choices dialogue box.
    </p>

    <p>Spreadsheet names (and custom function parameters) may now begin with an underscore for improved Microsoft Excel file compatibility.</p>

    <p>Formulae in Fireworkz files are scanned and pre-processed as necessary to prune user Library prefixes that are known to be present in existing documents so that custom function references are made more portable across platforms and Fireworkz versions.</p>

    <p>Range recognition in formulae now looks for any optional separator colon in the correct place if two external references are given e.g. [Sheet1]A1:[Sheet1]B5.</p>

    <h4>Formatting</h4>

    <p>Date/time and number formatting now better respects the precision as given by the field character count.</p>

    <p>Date format extended to accept five 'm' or 'M' characters to yield first character of month name.</p>

    <p>Number formats may now include simple colours (in square brackets) from the set White, Red, Green, Blue, Cyan, Magenta, Yellow, Black.</p>

    <p>Number format extended to accept '?' characters (these act as underscore in Fireworkz formats).</p>


    <h3>User interface enhancements</h3>

    <h4>Keyboard shortcuts</h4>

    <p>Ctrl+A keyboard shortcut added to select whole document / header / footer.</p>

    <p>Insert file modification time (Ctrl+T) and Insert time (Ctrl+Shift+T) commands added.</p>

    <p>Insert Row / Delete Row operations changed from F7 & F8 to Ctrl+F7 & Ctrl+F8 to avoid unfortunate clash with the expected Undo function on RISC OS. These may be changed back trivially by editing the Config file to remove the '^' prefixes.</p>

    <p>
        RISC OS: <strong>IMPORTANT!</strong> Ctrl+K is now mapped to the Delete menu entry (used to be spell check).
    </p>

    <h4>Menus</h4>

    <p>Edit &ndash; Change case sub-menu has UPPER-CASE, lower-case, Initial Caps and Swap Case entries. These replace the Case dialogue box.</p>

    <p>Inserts sub-menu moved from the Extra menu to the (more logical) Edit menu and renamed as Insert field.</p>

    <p>Sort command moved from the Extra menu to the (more logical) Edit menu.</p>

    <p>Sheet- and Text-oriented commands now have their own sub-menus in the Extra menu.</p>

    <h4>Dialogue boxes</h4>

    <p>Measurement (style) in Choices dialogue box is now a combo box (was previously a list box).</p>

    <p>Improved (and dynamic) layout of Save / Discard / Cancel dialogue box on close (and quit) with modified document(s).</p>

    <p>Cosmetic improvements (vertical spacing) to the Quit and Close modified dialogue boxes.</p>

    <p>Added Cancel button to New Style dialogue box.</p>

    <p>
        Buttons reordered in Style dialogue box.
        Default button is now Change (was Apply) as this is less destructive on accidental double-click.
    </p>

    <p>Select template dialogue box now discriminates between usage as 'New document' and 'Select template' for inserted files.</p>

    <p>RISC OS: Use DejaVuSans.Mono for edit and combo box controls if it is available.</p>

    <p>RISC OS: Colour buttons in style / chart dialogue boxes now use the RISC OS Colour Picker dialogue box.</p>

    <p>RISC OS: Radio buttons and check box sizing and positioning adjusted to avoid truncation of text at right-hand side of icons.</p>

    <p>RISC OS: Slightly less top margin in grouped items in dialogue boxes.</p>

    <p>RISC OS: Window Manager text,sprite,indirect icon used to render group box caption better when there is a textured background.</p>

    <p>RISC OS: Changed Window Manager icon styles to allow rounded corners on group box outlines and info fields where this is applicable.</p>

    <p>RISC OS: Changed writable field (used in edit, bump and combo dialogue box controls) visual style to be less fancy.</p>

    <p>RISC OS: Changed writable field height to 60 OS units - the RISC OS Style Guide's suggested 68 OS units is way too tall.</p>

    <p>RISC OS: Writable field validation for Save dialogue boxes allows all C1 control characters (0x80..0x9F).</p>

    <p>RISC OS: Error handling uses newer Window Manager styles on RISC OS 3.5 and later.</p>

    <h4>Other</h4>

    <p>
        Alternate formula style choice available, which shows initial equal sign, cell references in ranges shown with colon separator, upper-case function names and cell references.
        This also affects the output of the FORMULA_TEXT() spreadsheet function, but does NOT change the way formulae are stored in Fireworkz files.
    </p>

    <p>Alternate formula style choice is applied when displaying the Functions menu, editing in the formula line and for cells in custom function documents.</p>

    <p>Cell content is no longer clipped by borders when these are not drawn, allowing the use of narrower cell margins.</p>

    <p>Current cell style in Sheet-based templates is now a thin dark grey grid outline (was thick black border) with a paler grey background.</p>

    <p>
        The new user choices file (ChoicesDoc) can supply style updates such as Update.Current cell.
        These styles are applied to all loaded documents, updating any corresponding style definitions,
        when the <emph>Update styles from choices</emph> option is set in the Choices dialogue box.
    </p>

    <p>Current cell style in old files may be individually refined using the CurCell200 template supplied in the Styles directory of the Fireworkz Examples.</p>

    <p>
        The user interface style is more configurable: a new user choices file
        (ChoicesDoc) is loaded immediately after the Config file (remaining hidden)
        and contains styles which control many aspects of the appearance of the UI.
    </p>
    <ul>
        <li>UI.Base: The base style that supplies defaults which may be overriden by ones from a more appropriate context</li>
        <li>UI.Border: Used in the column and row borders</li>
        <li>UI.FormulaLine: Used in the formula line</li>
        <li>UI.Ruler: Used in the horizontal and vertical rulers</li>
    </ul>

    <p>
        User choices RulerScale and VRuler scale are now stored in ChoicesDoc rather than Choices00.
        Any user-modified ruler scales previously stored in their Choices00 will be merged with those specified in ChoicesDoc and will be removed from the user's Choices00 on the next Choices Save.
    </p>

    <p>Edges of objects in note layer now snap correctly to ruler. Use Ctrl-drag to position edges to pixel accuracy.</p>

    <p>Position and size of objects in note layer are given when dragging / resizing.</p>

    <p>More responsive toolbar updates.</p>

    <p>
        &lt;Field<em>N</em>&gt; is displayed in documents with mailshot fields when no source document is selected.
    </p>

    <p>RISC OS: You can now use Adjust on Fill down / Fill right toolbar buttons to Fill up / Fill left.</p>

    <p>RISC OS: Pinboard icon in !SpritesR5 updated for RISC OS 5 style.</p>

    <p>RISC OS: Pinboard icon in !Sprites22 updated for RISC OS 4 style.</p>

    <p>RISC OS: File icons updated for RISC OS 4 style (bottom tab).</p>

    <p>
        RISC OS: Splash screen creates a window in which to render object.
        Pressing a key will terminate the splash screen early, as does clicking in the window.
    </p>

    <p>RISC OS: Improved appearance of ruler markers in high-res modes.</p>


    <h3>Other enhancements</h3>

    <p>Fireworkz (non-Pro) issues a warning when loading documents containing database tables.</p>

    <p>
        New Fireworkz internal inline sequence (here termed U:XXXX) added to support Unicode&reg; characters that
        are imported from foreign file formats that are outside the Latin-<emph>N</emph> range in text cells.
        This inline sequence consists of a wrapped fragment of UTF-8.
        These inline sequences are currently ignored by spreadsheet functions.
    </p>

    <p>{U:XXXX} construct added to support loading and saving of the corresponding internal UTF-8 inline sequence.</p>

    <p>
        Choices supplied now use the much faster <emph>Load text as paragraphs</emph> option for plain text.
    </p>

    <p>
        Styles that are only used in Upper regions (i.e. ones that are not printed, e.g. Current cell) are not saved to the clipboard on Copy / Cut.
        This avoids polluting Letter-based documents with a Current cell style when copying via the clipboard.
        Additionally, they are not used to populate the style in the Effects or New Style (based on) dialogue boxes.
    </p>

    <p>Column and row headings now print using fonts.</p>

    <p>Charts are created with thin Chart border lines and mid-grey Plot Area border lines.</p>

    <p>Handles files having DrawFileEmbedded or DrawFileReference with no type field set as containing Draw files (type field RISC OS).</p>

    <p>Some JPEG/JFIF files (e.g. with thumbnail pictures) were not being automatically detected as such.</p>


    <h3>Other changes</h3>

    <p>
        Config file can use more easily recognisable three digit hexadecimal RISC OS file types.
    </p>

    <p>Config file commands BorderTypeface, RulerTypeface and StatusLine-t have been withdrawn as they have been superseded.</p>

    <p>LoadOther and SaveOther commands renamed as LoadForeign and SaveForeign for source consistency.</p>

    <p>
        Fireworkz' internal inline sequence identifier character changed to ASCII 21 (was ASCII 7).
        NB. This character value is not exposed in file data.
        This helps on RISC OS where the Font Manager SWI Font_ScanString reads a byte beyond the string length specified as
        ASCII 21 is the Font Manager Comment sequence lead-in byte and so is ignored rather than giving an Unhandled CtrlChar error.
    </p>

    <p>
        Normalised second-level message handlers to take message parameters even if they do not need all of them, which is often the case.
        Compilers generate much more efficient (and smaller) code and for the top-level handlers and so message passing within Fireworkz is far less cache-disruptive.
    </p>

    <p>Uses fast inline function to map internal document handles to the corresponding document structure.</p>

    <h4>RISC OS</h4>

    <p>U:XXXX inline sequences are rendered using fonts with the \EUTF8 encoding where this is possible, or as textual representations of the form [U+XXXX] where it is not.</p>

    <p>Additional value Alphabet-&lt;XXXX&gt; added to Version information in Fireworkz file if current alphabet is one of Latin1 / Latin2 / Latin3 / Latin4 / Latin9 to help file portability.</p>

    <p>
        PicConvert module updated with 32-bit compatible module flags and bug fix.
        This enables the automatic conversion of Windows bitmap files to Sprites.
    </p>

    <p>
        Filing systems on RISC OS 4 and up are assumed to have long filename support.
        This affects the name given to documents created by importing foreign files.
    </p>

    <p>Foreign file import no longer explicitly truncates document name to ten characters.</p>

    <p>
        Choices:Fireworkz. replaced by &lt;Choices$Write&gt;.Fireworkz. in the Fireworkz$Path variable.
        This should allow better resolution of custom function files.
    </p>

    <p>
        When loading supporting documents, such as custom function sheets,
        Fireworkz will first scan the path without any extension then, if needed, try again adding the extension suffix /fwk.
        This helps with cross-platform portability and centralised storage of supporting documents.
    </p>

    <p>Removed Legal predefined paper size button.</p>

    <p>Rationalised and improved handling of files with RISC OS file types DOS and Data, and also ones without any RISC OS file type.</p>

    <p>Fireworkz will accept any foreign filetype when broadcast (e.g. double-clicked in the Filer) if it is currently set up with an Alias$@RunType_XXX that is set with !Fireworkz.!Run or (for DOS and Text files) has an /extension that maps to a handled file type.</p>

    <p>Fireworkz (non-Pro) no longer claims Recordz filetypes in its !Boot or when broadcast. They may still be dragged to the icon where the warning will be issued.</p>


    <h3>Other fixes</h3>

    <p>AVG() and SUM() spreadsheet functions (also DAVG() and DSUM()) fixed: operating on extremely large ranges of individually small integers could eventually give an undetected integer overflow.</p>

    <p>Fixed an evaluator stack extension problem which could have given problems with large custom functions.</p>

    <p>Lines in the legend of scatter charts obtain the same line style as that connecting the points in each series.</p>

    <p>Fix for selection of chart objects with single lines of text.</p>

    <p>Fixed error in null event handling for row formatting.</p>

    <p>Fixed word count for text in headers and footers.</p>

    <p>Fixed some navigation errors in HTML Help.</p>

    <p>Very large numbers formatted as X# (column name) could have crashed Fireworkz.</p>

    <p>Mailshot documents may now be closed in any order.</p>

    <p>Status line cleared at end of style region editing. It used to leave stale information, especially after deleting a region.</p>

    <p>RISC OS: Code changes to avoid invalid instructions being emitted by the compiler in certain modules.</p>

    <p>RISC OS: ZPP fixes for dialogue box handling.</p>

    <p>RISC OS: Added some headroom for printing to fix some pretty weird printing error reports we've had over the years.</p>

    <p>RISC OS: Status line redraw fix for non-square pixel modes.</p>

    <p>RISC OS: Fixed exception when rendering toolbar in 16 colour modes on RISC OS 5.20.</p>


    <h3>Foreign file import</h3>

    <p>Foreign file import creates documents with /fwk extension suffix.</p>

    <p>
        Foreign file import attempts to identify untyped GIF, PNG and TIFF image files so that they are not loaded as plain text.
        These are currently unable to be loaded as image files.
    </p>


    <h4>Delimited text file import (including CSV)</h4>

    <p>
        Allows single digits in dates when checking against the ISO 8601 date format
        where two digits are strictly required in the month and day components
        for compatibility with some CSV files from odd sources (banking data).
    </p>

    <p>Context for number recognition set to be the same as used by the UI.</p>

    <p>Treats Unicode LINE SEPARATOR character as a line separator.</p>

    <p>Handles Unicode characters in text fields, creating U:XXXX inline sequences.</p>


    <h4>Lotus 1-2-3 file import</h4>

    <p>.WK3 files are now recognised. Currently only labels, constant values and formula results are loaded.</p>

    <p>Creates number and date / time format strings derived from the Lotus cell format code.</p>

    <p>Creates dates in the correct century (this had been broken since 2000!).</p>

    <p>Handles date values after 1999.</p>

    <p>Handles time components in date values.</p>

    <p>Uses spreadsheet functions added for Microsoft Excel support (CLEAN(), FALSE, N(), T(), TRUE).</p>

    <p>
        No longer attempts to map Lotus 1-2-3 database spreadsheet functions directly to Fireworkz functions,
        which have different database match conditions.
    </p>

    <p>
        Maps the Lotus 1-2-3 statistical spreadsheet functions STD() and VAR()
        to the correct corresponding population statistical functions in Fireworkz (STDP() and VARP()).
    </p>


    <h4>Microsoft&reg; Excel&reg; file import</h4>

    <p>Handles BIFF5 and BIFF8 RPN function numbers (avoids totally garbled decode).</p>

    <p>Handles BIFF2-5 whole file encryption with password (avoids garbled decode).</p>

    <p>Attempts to decode Analysis ToolPak external functions.</p>

    <p>Correctly decodes function parameter lists that themselves contain functions.</p>

    <p>
        Maps byte-oriented string spreadsheet functions
        FINDB(), LEFTB(), LENGTHB(), MIDB(), REPLACEB(), RIGHTB()
        onto their character-oriented equivalents.
    </p>

    <p>
        No longer attempts to map Microsoft Excel database spreadsheet functions directly to Fireworkz functions,
        which have different database match conditions.
    </p>

    <p>Handles documents with a single empty worksheet better.</p>

    <p>Identifies BIFF4 workbook files and attempts to load all non-empty worksheets from them into multiple Fireworkz spreadsheets (named as per Microsoft Excel worksheets).</p>

    <p>Creates correct formulae derived from shared formulas where absolute column and/or row specified.</p>

    <p>Correctly offsets data and formulae relative to the given insertion point.</p>

    <p>Correctly handles external references to the same worksheet.</p>

    <p>Creates dates correctly if file has DATEMODE 1904.</p>

    <p>Creates names correctly for older formats.</p>

    <p>Handles Unicode characters in labels, creating U:XXXX inline sequences.</p>

    <p>Preserves imported file's path name, allowing converted file to be easily saved side-by-side with the original.</p>

    <p>Inserting a Microsoft Excel file into a Letter-based document will import it in a table (as per CSV import).</p>

    <p>Reduces the grid size when loading (not inserting) a Microsoft Excel file to cater for Excel's smaller expected internal cell margins.</p>

    <p>Creates style effect layering for the worksheet, columns, rows and cells derived from the appropriate Excel XF records.</p>

    <p>Creates number and date / time format strings derived from the Excel format string / code.</p>

    <p>Correct default colour set for BIFF8 files used.</p>


    <h4>PipeDream file import</h4>

    <p>Code is both faster and more paranoid.</p>

    <p>Uses column widths from PipeDream spreadsheet files.</p>


    <h4>Plain text file import</h4>

    <p>
        Import is now controlled by <emph>Load text using delimiter</emph> option in Choices dialogue box.<br>
        If selected, plain text will load as records with fields separated by the given delimiter character.<br>
        If no delimiter character is specified, TAB is used to allow easy loading of TAB separated value (TSV) files.
    </p>

    <p>Optimised when loading into Letter-based documents.</p>

    <p>
        Splits very long lines that would not fit in a single cell (especially when accumulated using <emph>Load text as paragraphs</emph>) at a space boundary if needed.
    </p>

    <p>Extended to handle ASCII, Latin-1, UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF32-BE encodings.</p>

    <p>Auto-detects file encoding using any file BOM and file content.</p>

    <p>Handles Unicode characters by creating U:XXXX inline sequences.</p>

    <p>
        Treats Unicode LINE SEPARATOR character as a line separator, meaning that it is affected by the <emph>Load text as paragraphs</emph> option.
    </p>

    <p>Always treats Unicode PARAGRAPH SEPARATOR character as ending a paragraph.</p>


    <h4>Rich Text Format file import</h4>

    <p>Handles {\* immediately preceding a CR and/or LF sequence that is then followed by an ignorable destination word.</p>

    <p>
        Handles (and currently ignores) new RTF control words with upper-case letters.
        Previously only lower-case letters were considered.
    </p>

    <p>Ignores margins, headers and footers if data is being inserted (from file or clipboard) rather than loaded.</p>

    <p>Correctly interprets paper size and margin RTF control words when not inserting.</p>

    <p>
        Handles \u<emph>N</emph> Unicode characters, creating U:XXXX inline sequences,
        also handling \uc<emph>N</emph> to discard <emph>N</emph> characters after \u<emph>N</emph>.
    </p>

    <p>
        Uses the code page found in the file to translate top bit set characters to their
        native equivalents where possible, substituting U:XXXX inline sequences where there is no native equivalent.
        This helps when loading RTF files created on other platforms
        (e.g. many of the extended characters present in Windows-1252 are also present in Acorn Extended Latin-1, but at different character positions).
    </p>


    <h3>Foreign file export</h3>

    <h4>Rich Text Format file export</h4>

    <p>Wraps top bit set hex characters with \hich and \loch.</p>



    <h2 id="KnownProblems">Known Problems in This Release</h2>

    <p>
        If you have a text cell with an inserted name which refers directly to another cell (e.g. you have defined "fred" to be h30)
        then if the value in the cell which is referred to changes,
        the text cell is not automatically reformatted or redisplayed.
        The way to do this at the moment is to use set_name to define the name in the number cell itself (e.g. set_name("fred", calculation)).
    </p>

    <h4>RISC OS</h4>

    <p>Text handling will not behave correctly if *Alphabet UTF8 is set.</p>


    <h2>32-bit !System</h2>

    <p>Please note that the latest distribution of !System for use with pre-RISC OS 5 computers may be found on the RISC OS Open website at:</p>

    <p>
        https://www.riscosopen.org/content/downloads/common
    </p>

    <p>
        under the heading <strong>System resources</strong>
    </p>

    <p>
        NB Do <strong>NOT</strong> use the merge dialogue in <code>!Boot &ndash; Configuration &ndash; System Merge</code>
        because part of the update must refresh files in a directory that the merge dialogue cannot reach.
        Instead, a simple obey file is included called !SysMerge.
        Just double click on !SysMerge.
    </p>


    <h2 id="FireworkzPro">Fireworkz Pro</h2>
    <p>Fireworkz Pro, available from R-Comp, is a commercial product for RISC OS which contains additional functionality compared to the usual (free) Fireworkz capabilites.</p>

    <p>
        For more information, and to purchase Fireworkz Pro, please visit <a href="https://www.rcomp.co.uk">R-Comp</a>.
    </p>

    <h3>Database functionality</h3>

    <p>Fireworkz (non-Pro) only contains a limited number of spreadsheet functions to support its use as a database.</p>

    <p>Fireworkz Pro contains a copy of the DataPower database engine from R-Comp.</p>

    <p>
        You can use Fireworkz Pro as a standalone database program to store and manage
        all kinds of data, from school and business information to personal details about projects and collections.
        This data can be displayed in a choice of formats and then sorted, filtered and searched
        to locate particular pieces of information.
    </p>

    <p>
        The database component of Fireworkz Pro can exchange data with other program components to create
        spreadsheets, reports, graphs and mail merges based on data from your databases.
    </p>

    <h3>Microsoft Excel Export</h3>

    <p>Fireworkz Pro contains a module to allow spreadsheet data to be saved in Microsoft Excel binary format.</p>

    <p>This module is not yet available in Fireworkz for RISC OS.</p>


    <h2>Trademarks</h2>

    <p>'LibreOffice' and 'The Document Foundation' are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries.</p>

    <p>Microsoft, Windows and Excel are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.</p>

    <p>The Unicode Word Mark is a trademark of Unicode, Inc.</p>


    <p>End of Colton Software Fireworkz &mdash; Release Notes &mdash; RISC OS</p>
</body>
</html>
