1. 18 Jun, 2016 5 commits
    • Jeffrey Lee's avatar
      ARMv5E, ARMv6 optimisations · 8287e52c
      Jeffrey Lee authored
        s/FillCode - Buffer fill & mix fragments optimised to use SMULWB/T, PKH, QADD16 and QDADD where possible, resulting in new variants optimised for ARMv5E and ARMv6
        s/Handler - Remove old, unoptimised callback buffer mixing code. Add new optimisated code for ARMv6 (SHADD16)
        Tested on Raspberry Pi, Iyonix
      Version 1.20. Tagged as 'SharedSnd-1_20'
    • Jeffrey Lee's avatar
      Use PSR manipulation macros. Macroise driver calling. Simplify error checks. · 65377222
      Jeffrey Lee authored
        s/Drivers - Macroise driver calling to reduce amount of duplicate code. Also avoid NOP if storing PC stores PC+8 and not PC+12.
        s/Handler - Use PSR manipulation macros for switching modes and controlling IRQs. Remove redundant IRQ disabling around atomic store of one word in doHandlerCallBack.
        s/Module - Use PSR manipulation macros for switching modes
        s/SWIS - Simplify range checking on handler and driver numbers; treat as unsigned numbers instead of signed.
        s/Vars - Remove local definitions of IRQ flags & SVC mode
        Tested on Raspberry Pi
      Version 1.19. Tagged as 'SharedSnd-1_19'
    • Jeffrey Lee's avatar
      Use Entry/EXIT, Push/Pull macros · 89139d90
      Jeffrey Lee authored
        s/* - Code updated to use Entry/EXIT and Push/Pull macros where possible instead of manual STM/LDM. Also add ROUTs for safety (although most routines use named local labels rather than numbered ones). A few obvious cases also fixed to reduce number of regs pushed onto stack.
        A few other changes and fixes of note:
        s/Log - Trim empty, unused installLogDriver routine when doLog is {FALSE}
        s/Module - Add a veneer to swiHandler to deal with 26bit and 26/32bit neutral cases; avoids the need for individual SWI handlers to preserve NZC
        - Remove 26/32bit neutral SWI exit code, now handled by veneers. CLRV on most SWI exits to replace the implicit CLRV from CMP pc,pc.
        - swiHandlerVolume and swiDriverMixer were popping the wrong regs from the stack for most error cases; now fixed via the switch to Entry/EXIT
        Tested on Raspberry Pi
      Version 1.18. Tagged as 'SharedSnd-1_18'
    • Jeffrey Lee's avatar
      Use constants from build system · a441d185
      Jeffrey Lee authored
        s/Gets - GET Hdr:Services
        s/Vars - Remove some locally defined constants which we can get from Hdr: instead
        s/Module - SWI base and Service_Sound subreason tokens renamed to match those used in Hdr:
        Binary unchanged
      Version 1.17. Not tagged
    • Jeffrey Lee's avatar
      Expand tabs · 2ab86b5f
      Jeffrey Lee authored
        s/* - Expand all tabs, to avoid space/tab use inconsistencies within some files and to match general ROOL code formatting
        Binary unchanged
      Version 1.17. Not tagged
  2. 28 May, 2016 1 commit
  3. 07 Apr, 2015 1 commit
    • Robert Sprowson's avatar
      Get passed doLog switch externally · 434ad9c5
      Robert Sprowson authored
      The comment block at the top of Hdr:Machine says we're not supposed to use the M_ booleans outside that header. So, pass in the doLog setting from the components file.
      Retagged as SharedSnd-1_16.
  4. 06 Jan, 2015 1 commit
    • Jeffrey Lee's avatar
      Enable log driver for the machines which may need it · 718ec291
      Jeffrey Lee authored
        s/Gets - Enable the log driver (which mixes 16 bit audio down to 8 bit log) for the machines which may need it
        Tested in 'All' build on emulated RO 3.11 & 3.70 SA RiscPC
      Version 1.16. Tagged as 'SharedSnd-1_16'
  5. 07 Sep, 2013 2 commits
    • Robert Sprowson's avatar
      Internationalised · c3ad8844
      Robert Sprowson authored
      Errors are now looked up via MessageTrans.
      The driver names (registered via InstallDriver or to SoundDriver_Install) are now also looked up.
      Note, the SharedSound_DriverInfo SWI used to return r2 as the pointer to a pointer to the name, the documentation seems vague as to what the intent was, but it seems more likely that a pointer to the name was what was intended. The name string is buffered (because it needs looking up for internationalisation anyway).
      Tested briefly, inspecting the workspace for name lookups and sending a fake Service_SoundDriver service call. Two errors deliberatly triggered to check error text.
      Version 1.15. Tagged as 'SharedSnd-1_15'
    • Robert Sprowson's avatar
      Signed pointer comparison fix · 828dc3e5
      Robert Sprowson authored
      In SWI InstallDriver reason codes > 2 are interpreted to mean a pointer to an install driver block, but this used a signed comparison so registering blocks in the top half of memory would fail.
       Comparison changed to process 0/1/2 and > 2 correctly
      SoundDrv.s & Handler.s:
       Eliminated ADR range function by just using ADRL
       Zero length command table replaced by a 0 in the command entry of the module header
       Signed loop exit changed for unsigned one (not relevant since the workspace is < 2G)
       SWI name moved inside doDMI switch
      Version 1.14. Tagged as 'SharedSnd-1_14'
  6. 04 Sep, 2013 1 commit
  7. 14 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for zombie callback loop after killing SharedSound · f68e06a7
      Robert Sprowson authored
      When the sound system is reinitialised, but SoundChannels not yet started, SharedSound books a callback 40cs in the future to retry.
      When used with an 8 bit sound system this occurs repeatedly (in the hope that a 16 bit linear handler will become available) but on RMKILL the callback was not cancelled - so although the module is dead a pair of zombie callbacks keep booking & trying, booking & trying.
      * Finalise handler now cancels the 40cs ticker event
      * Played safe and changed the CMP of the handler addresses (clearing V) to CLRV
      * Added some asserts to the service table
      * Removed some unnecessary NOP's after MOV lr, pc operations.
      Tested in IOMD ROM.
      Version 1.12. Tagged as 'SharedSnd-1_12'
  8. 13 May, 2012 1 commit
    • Ben Avison's avatar
      No longer uses non-X SWIs in module code · 73da1528
      Ben Avison authored
        A few of these were careless typos, others were already X SWIs but the
        symbol names didn't reflect the fact, and in other cases there was no code
        path to deal with error cases. All now fixed. Also fixed all the assembly
        time warnings (at least for 32-bit ROM builds).
        No longer prevents the Raspberry Pi ROM init from completing.
      Version 1.11. Tagged as 'SharedSnd-1_11'
  9. 04 Feb, 2012 1 commit
  10. 14 Jan, 2012 1 commit
  11. 12 Dec, 2011 1 commit
    • Steve Revill's avatar
      Fixed Makefile. · 73241aea
      Steve Revill authored
      Attempted a non-existent export in the resources phase.
      Version 1.08. Tagged as 'SharedSnd-1_08'
  12. 06 Dec, 2011 1 commit
    • Jeffrey Lee's avatar
      Fix to work properly when built into ROM images · 6a4dfcaf
      Jeffrey Lee authored
        Makefile - Rewritten to use assembler makefile fragments instead of C ones. The component is listed as assembler in ModuleDB, so using the C fragments was causing an object file to be linked into the ROM instead of a module.
        MkRam,fd7 - Made to work with new makefile
        s/FillCode, s/Handler, s/Memory, s/Module, s/Vars - Removed dependency on relocation code. It looks like it was only the pointers in FILLCODE_table_start that were being relocated. The fillcode table is now stored in the workspace instead of within the module.
        Tested in OMAP3 & Tungsten ROMs.
        Some of the disabled switches may still rely on the removed relocation code.
      Version 1.07. Tagged as 'SharedSnd-1_07'
  13. 15 Aug, 2011 1 commit
    • Ben Avison's avatar
      Selective merge of ESP's version 1.06 (14 May 2002) of SharedSound. · febd431a
      Ben Avison authored
        Changelog not provided by ESP. I have made an additional change to use
        the value of SoundSystemNIL from Hdr:Sound to test if SoundChannels is not
        installed - this constant changed in RISC OS 5 for 32-bitting reasons.
        Builds, and briefly tested. Coincidentally, this is also our version 1.06.
      Version 1.06. Tagged as 'SharedSnd-1_06'
  14. 16 Jun, 2004 1 commit
    • Steve Revill's avatar
      New FillCode from Robin Watts · 5b75ed87
      Steve Revill authored
        This version of SharedSound does not get us up to the stuff in the
        current 1.07 version which is in Select, but it does address some
        issues with the 1.04 version which were spotted quite some time ago.
        It seems to work on my Iyonix.
      Version 1.05. Tagged as 'SharedSnd-1_05'
  15. 31 Mar, 2003 1 commit
  16. 01 Oct, 2001 1 commit
  17. 05 Jul, 2001 1 commit
    • Ben Avison's avatar
      Bugfix from Robin Watts. · 871c71be
      Ben Avison authored
        1-instruction error broke sound mixing.
        Fix for associated fault in AMPlayer on its way.
      Version 1.02. Tagged as 'SharedSnd-1_02'
  18. 28 Jun, 2001 2 commits
    • Ben Avison's avatar
      Module scrutinised for problems, and many found and fixed. · 08726def
      Ben Avison authored
        * Module flags word and header entry reinstated.
        * Many exits from SWIs had lost their 32-bit compatibility.
        * Unconditional TEQP made conditional, and an MSR replaced with an MRS.
        * A few unnecessary mode checks and alternate returns simplified because
          transient callbacks and 8-bit fill code have never needed to preserve
          processor flags.
        * Driver mixer calling bug fixed again.
        * Spelling and grammatical errors in comments and error messages re-fixed.
        * Other insignificant stuff.
        Still untested, but worth trying in a 32-bit build now.
      Version 1.01. Tagged as 'SharedSnd-1_01'
    • Ben Avison's avatar
      Import of version 1.00 of SharedSound from WSS - this is a merge of · 8b6ec705
      Ben Avison authored
        RISC OS Ltd, ESP and Pace sources. I've added the Makefile, Mk* and
        VersionNum files.
      Detail (courtesy of WSS):
        * Incorporates fixes made to 0.58c to fix the callbacks on sound
          rate changes.
        * Incorporates RISC OS Ltd changes to response to
          TaskManager_Acknowledgements service.
        * Includes 8 bit Log and PowerWave drivers.
        * Now built with Objasm, not BASIC assembler.
        * SharedSound_HandlerInfo SWI fixed to conform to spec. Also
          extended to accept r0 = 0 on entry, in which case r0 = number of
          first registered handler (or 0 for none) on exit; R1-R5 corrupted.
          Therefore the following code enumerates handlers:
          REM Get first handler number.
          SYS "SharedSound_HandlerInfo",0 TO next% ; flags%
          REM While no errors, and not finished
          WHILE (next% <> 0) AND ((flags% AND 1) = 0)
           SYS"SharedSound_HandlerInfo",next% TO next%,a%,b%,c%,d%,e%
        * Sends Service_Sound (&54) with reason code 6 (SharedSound Starting)
          on (callback after) initialisation.
        * Sends Service_Sound (&54) with reason code 7 (SharedSound Dying)
          on finalisation.
        * Some small optimisations
        * Version bumped to 1.00 (to allow RISC OS Ltd space to make changes
          to their versions).
        * Table of helpful fill code routines now passed to handlers in R8.
        * SharedSound reinitialises correctly on lower layers reinitialising.
        * More care taken to remove outstanding callbacks on finalise.
        * Dual 26/32 bit version.
        * Not tested by us.
        * 8-bit sound system code is known not to be ROM safe. However, it is
          currently switched out (see the doLog option in s.Gets).
        * This version *will not work* on a 32-bit system. There are at least two
          issues with it that I've spotted with a quick glance through the code -
          the lack of the module flags word, and an unconditional TEQP instruction.
          This version has been checked in nevertheless as a record of what WSS
          delivered to us.
      Version 1.00. Tagged as 'SharedSnd-1_00'
  19. 16 Jan, 2001 2 commits
    • Ben Avison's avatar
    • Ben Avison's avatar
      See Detail. · a23e5c33
      Ben Avison authored
        * 32-bit compatible
        * srccommitted (and gets version number from VersionNum, even though it's
          written in BASIC)
        * added install rule and MkInstall file to install module in correct place
          within an ARMovie installation
        Not tested.
      Version 0.49. Tagged as 'SharedSnd-0_49'
  20. 15 Jan, 2001 1 commit
    • Ben Avison's avatar
      Changed things so that the detokenised BASIC source (in the c directory) has... · 99b86486
      Ben Avison authored
      Changed things so that the detokenised BASIC source (in the c directory) has no line numbers present (LISTO 8). The detokenised source's raison d'etre is to allow easier CVS diffs, but line numbers would defeat this purpose whenever the change involves inserting more than a handful of line numbers.
      No other changes - this version is committed and tagged purely as a reference
      point for future updates. Tag used is 'bavison_SharedSnd-0_48'.
  21. 02 Nov, 1998 1 commit
  22. 24 Sep, 1998 2 commits
  23. 06 Nov, 1997 5 commits
  24. 25 Jun, 1997 2 commits
  25. 02 May, 1997 2 commits
  26. 28 Apr, 1997 1 commit