1. 21 Jan, 2023 1 commit
    • Jeffrey Lee's avatar
      Initial SMP support · c34ba50c
      Jeffrey Lee authored
      Use SMP_Special SWI to suspend & resume the callback-based thread
      scheduler during sensitive bits
  2. 17 Oct, 2022 1 commit
    • Richard Coleman's avatar
      [468] Fix INKEY requiring an extra key press if Escape key pressed · 6ab98bd9
      Richard Coleman authored
        Escape being pressed whilst in an OS_Byte 129 call (MyByteV) was not being
        handled on return to MyRdChV before the TaskWindow suspended itself via a
        Added check for Escape on entry to MyRdChV.
        Remove redundant RestPSR just before OS_ReadEscapeState.
        Extended reach of title string ADR when CMDHELP=None.
      Version 0.85. Tagged as 'TaskWindow-0_85'
  3. 13 Nov, 2021 1 commit
  4. 31 Jul, 2021 1 commit
    • Julie Stamp's avatar
      Don't crash on "%TaskWindow -display -ctrl" · ad0a3814
      Julie Stamp authored
      s.TaskMan: Alter initial value of PassOnVectors in inittask
      This fixes a bug, that if an editor is not currently running then
      starting a task window with "%TaskWindow -display -ctrl" from
      the new task option in the task manager causes a branch through
      Whilst I have not worked out the exact detail of the crash,
      the cause appears to be that PassOnVectors is set to false before
      GetParentTask is called. In GetParentTask, Wimp_StartTask is
      called, which emits control characters. This causes
      GetParentTask to be re-entered (this time via MyWrchV rather
      than the start-up -display code). It gets hazy what happens
      after to branch through zero, but changing it to set
      PassOnVectors=true before the initial GetParentTask fixes the
      If an editor is already running then the crash doesn't occur
      because it responds to the Message_TW_NewTask, so Wimp_StartTask
      is never called. If the -ctrl switch is absent then the control
      characters from Wimp_StartTask are ignored by MyWrchV. If
      -display is absent then it never calls GetParentTask during
      the start-up code.
      Tested standalone on RPCEmu and RPi3B+
      Version 0.83. Tagged as 'TaskWindow-0_83'
  5. 01 Mar, 2021 1 commit
    • Timothy E Baldwin's avatar
      Fix SWI calls not returning when TaskWindow_Morite received · cab34639
      Timothy E Baldwin authored
      Was calling OS_Exit immediately upon TaskWindow_Morite being
      received, even if in a SWI call.
      Instead flag for later attention like Message_Quit.
      This results in error being returned from sleeping SWI calls, and
      OS_Exit being called in a callback after supervisor mode code has
      had a chance to clean up.
      Version 0.82. Tagged as 'TaskWindow-0_82'
  6. 08 Jun, 2019 1 commit
  7. 01 Jun, 2019 2 commits
    • ROOL's avatar
      Build fix · e4e748ae
      ROOL authored
        ADR->ADRL for standalone builds, such as Disc or CTools environment.
    • ROOL's avatar
      Use OsByte header · 6e0410af
      ROOL authored
        11 local definitions of OsBytes replaced with those from the central headers.
        Built as binary identical.
  8. 16 Sep, 2018 1 commit
    • Jeffrey Lee's avatar
      Document the build options · c2f5455f
      Jeffrey Lee authored
        s/Taskman - Add comments for the different build switches, so it's more obvious what they do. Remove a couple of unreferenced switches.
        Resulting binary unchanged
      Version 0.80. Not tagged
  9. 02 Jun, 2017 1 commit
    • Jeffrey Lee's avatar
      Fix off-by-one error in INKEY timer · 42a78113
      Jeffrey Lee authored
        s/Taskman - When TaskWindow was converted to use TickerV instead of VSync events for implementing the INKEY timer, one line of code was left in the wrong place, causing all INKEY delays to be 1cs longer than they should
        Tested on PandaBoard
        100 * OS_Byte 129,0,0 now completes instantly (was 1s), 100 * OS_Byte 129,1,0 now completes in 1s (was 2s), both now matching single-tasking behaviour
        Should fix issue reported on forums with OS_Byte 129,0,0 -heavy programs running unreasonably slow:
      Version 0.80. Tagged as 'TaskWindow-0_80'
  10. 15 Jun, 2016 1 commit
    • Jeffrey Lee's avatar
      Clear the exclusive monitor when returning to a pre-empted task · 3ef9cca5
      Jeffrey Lee authored
        s/Taskman - As described in the ARM ARM, the local exclusive monitor is allowed to be a bit dumb when it comes to comparing addresses, and so a manual CLREX is required whenever we return to code that has been unwillingly pre-empted
        Tested on Raspberry Pi
      Version 0.79. Tagged as 'TaskWindow-0_79'
  11. 28 May, 2016 1 commit
  12. 30 Sep, 2015 1 commit
    • Jeffrey Lee's avatar
      Fix 32bit conversion issue · 6c68eb4b
      Jeffrey Lee authored
        s/Taskman - Generation of TaskWindow_Dying error within ByteV handler wasn't balancing the stack correctly, causing it to try branching to the PSR. Fix this, and tighten up the code a bit (can use R0 as temp as it'll always be set to something sensible on exit)
        Tested on iMx6
        Fixes reported issue with machine stiffing when killing task windows containing running programs
        Issue was only observed on pre-PMP kernel version, where the code would have branched into the free pool (loaded PSR appeared to be &80000193), corrupted some memory, and then got stuck in a loop
        Presumably this has never been spotted on other systems because there would have rarely been any memory at that location, generating an immediate abort, but the error message gets swallowed because the task is exiting? (or there was memory there, but the user got lucky and the code aborts before fatally corrupting anything)
      Version 0.77. Tagged as 'TaskWindow-0_77'
  13. 16 Jan, 2015 1 commit
    • Jeffrey Lee's avatar
      Escape some dollars · a53166dc
      Jeffrey Lee authored
        s/Taskman - Escape some dollars contained in strings to avoid warnings from objasm
        Resulting binary unchanged
      Version 0.76. Retagged as 'TaskWindow-0_76'
  14. 11 Jan, 2014 1 commit
    • Robert Sprowson's avatar
      Build fix · 4d353166
      Robert Sprowson authored
      Move Hdr:Services up above Hdr:Wimp
      Built, but not tested.
      Version 0.76. Tagged as 'TaskWindow-0_76'
  15. 26 Apr, 2012 1 commit
    • Jeffrey Lee's avatar
      Fix *TaskWindow · 3204c095
      Jeffrey Lee authored
        s/Taskman - Search-and-replace error when getting rid of $ModuleName left one instance of it behind, with the result that in 0.74 the *TaskWindow command would attempt to start the task '$ModuleName' instead of 'TaskWindow'
        Tested on BB-xM
      Version 0.75. Tagged as 'TaskWindow-0_75'
  16. 12 Jan, 2012 1 commit
    • Robert Sprowson's avatar
      Make decision to use internationalised help based on predefines passed in from... · 4e3446ae
      Robert Sprowson authored
      Make decision to use internationalised help based on predefines passed in from outside not a bitfield definition in Hdr:ModHand.
      Shifted crusty changelogs out of the sources.
      Reencoded the command table using the 'Command' macro rather than by hand, required renaming a few function labels to use the ones it generates.
      Add support for the standalone version to register its messages with ResourceFS.
      Update the help to detail the "-nice" switch which has been present for some time.
      Change some Wimp and OS_Args reason codes to use those from the respective header files.
      Tested on RISC OS 3.10, now at least opens a task window.
      Version 0.74. Tagged as 'TaskWindow-0_74'
  17. 04 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Make compatible with zero page relocation · 1eb2003d
      Jeffrey Lee authored
        s/Taskman - Attempt to get DomainId pointer from OS_ReadSysInfo 6 before falling back on legacy address. Fix NiceNess code to not pass null pointers to OS_ReadUnsigned.
        Tested on rev A2 BB-xM
      Version 0.73. Tagged as 'TaskWindow-0_73'
  18. 19 Jan, 2010 1 commit
    • ROOL's avatar
      Incremented version number, no other change. · 2286ef03
      ROOL authored
      Previous changes were untagged, but incrementing the version number gives
      us a tag we can associate with the official RISC OS 5.16 release.
      Version 0.72. Tagged as 'TaskWindow-0_72'
  19. 11 Jun, 2009 1 commit
    • Ben Avison's avatar
      GET file pathnames changed · ac08a1e0
      Ben Avison authored
        Uses suffixed file extensions for compatiblity with both objasm and asasm.
        Supplied by Peter Naulls, tested at ROOL
      Version 0.71. Not tagged
  20. 08 Oct, 2004 1 commit
    • Ben Avison's avatar
      Corrected SVC stack save code. · f371938d
      Ben Avison authored
        The bottom four words of the SVC stack were being preserved across calls
        to Wimp_Poll. This is a curious choice, since the bottom seven words are
        reserved to hold run-time data, and C libraries to date have only used
        two words (the library and client relocation offsets). Changed to save
        all seven reserved words across Wimp_Poll.
        Tested briefly on an Iyonix, with no visible ill effects.
      Version 0.71. Tagged as 'TaskWindow-0_71'
  21. 24 Oct, 2002 2 commits
  22. 18 Feb, 2002 1 commit
    • Steve Revill's avatar
      Faster TaskWindow from Dan Ellis. · 476aafa4
      Steve Revill authored
      > I was just fiddling with Taskwindow, and realising one of the big things
      > slowing it down is that it polls everytime its internal buffer gets filled.
      > If it just lets the Wimp do the queueing it goes quite a lot faster!
      > It only polls the wimp once every 10 buffer fulls of data, so is pretty
      > nippy, but doesn't stall when doing a lot of text output in SVC mode.
      > It also assembles to use TickerV instead of VSync (unless you unset the
      > flag).
        Tested on Ursula RiscPC and STB without any problems.
      Version 0.68. Tagged as 'TaskWindow-0_68'
  23. 28 Sep, 2001 1 commit
    • Dan Ellis's avatar
      Added niceness. · 711c6de8
      Dan Ellis authored
        Reintroduced buffer enlargements.
        A new flag has been added, '-nice <n>' which if specified allows
      modification of the default number of VSyncs before task switching.  This
      works a bit like UNIX nice, hence the name.  A nice value of 1 will make
      multitasking very smooth.  It also allows relative priority to be specified
      between taskwindows.  So the default is 10, and a nice 1 taskwindow will get
      10 times less CPU time than a default window.  A nice 100 taskwindow would
      get 10 times as much CPU time as a default one.
        The buffer enlargements were inadvertantly checked over in a previous
      checkin.  They have now been re-introduced.
        Tested on a RiscPC.
      Version 0.67. Tagged as 'TaskWindow-0_67'
  24. 30 Jul, 2001 1 commit
    • Dan Ellis's avatar
      Added pollidle handling for INKEY (OS_Byte 129) · 7df9769f
      Dan Ellis authored
        Taskwindow sits of BYTEV and waits for n*2 Vsyncs when INKEY(n) is called.
      This isn't quite correct as VSyncs aren't a reliable timing source, however,
      leaving that aside for the moment, what Taskwindow was doing was sitting on
      Null events until it read that enough Vsyncs had passed, thus eating up CPU
        The new behaviour is to call Wimp_PollIdle instead, which should also
      correct the amount of time waited for.  This behaviour can be toggled with
      the build switch PollIdleHandling.
        Lightly tested on a RPC.  Using AppStat, no call were made to the
      taskwindow during and INKEY, whereas they were previously.
      Version 0.66. Tagged as 'TaskWindow-0_66'
  25. 15 May, 2001 1 commit
    • Dan Ellis's avatar
      Made UpCall 6 work with pollwords. · b09c7ea0
      Dan Ellis authored
        UpCall 6 is documented as accepting a pollword which can be scanned for
      being non zero to return control to the process requesting to sleep.  This
      was not being used within the taskwindow module, there being a comment where
      it would have been used suggesting that this would give the taskwindow too
      high a priority.  What this means is that if given a pollword that is already
      nonzero, the task would receive so many polls as to really make the desktop
      juddery.  The solution is that if the pollword is non-zero on entry,
      Wimp_Null is unmasked rather than passing the pollword.
        This means that UpCall 6 can be used either as a yield, to say 'let other
      tasks have some CPU now' (by passing a pollword known to contain nonzero) or
      as sleep to say 'wake me up when the pollword becomes non zero, and don't
      consume any CPU time until then' (by passing a pollword that will only become
      nonzero upon the occurance of a specific event).
        Tested on RPC.
      Version 0.65. Tagged as 'TaskWindow-0_65'
  26. 14 May, 2001 1 commit
    • Dan Ellis's avatar
      Fixed response to UpCall Sleep No More. · 70ba5ce3
      Dan Ellis authored
        The UpCall wasn't being claimed because the common error creating return
      was being used which returns to lr rather than popping the stack.  Now the
      error routine is BLed to and then the stack popped so as to claim the UpCall.
        Tested on RPC.
      Version 0.64. Tagged as 'TaskWindow-0_64'
  27. 02 May, 2001 1 commit
    • Stewart Brodie's avatar
      Buffer size increases. · 3d7ace2f
      Stewart Brodie authored
        If output is occurring quickly, then fewer longer Wimp messages are
          transmitted rather than a stream of small messages.
        RAM Transfer buffer size increased too.
        Tested in softloaded OS.
      Version 0.63. Tagged as 'TaskWindow-0_63'
  28. 16 Mar, 2001 1 commit
  29. 02 Mar, 2001 1 commit
  30. 28 Jul, 2000 1 commit
    • Stewart Brodie's avatar
      YSync event enabling now done on the same basis as vector claiming. · b0df14fe
      Stewart Brodie authored
        TaskWindow used to enable VSync events for each new task that was
          started.  However, it failed to disable the VSync events again
          when the task exited unless the task was the last one running.
          This meant that VSyncs would be going off for no reason at all
          slowing the machine down if you had ever started a taskwindow.
          Events are now only ever enabled when the first task is created,
          and disabled when the last task is killed.
        Tested in desktop build.
      Version 0.60. Tagged as 'TaskWindow-0_60'
  31. 02 Jun, 2000 1 commit
    • Stewart Brodie's avatar
      32-bit compatible. · 6c515dd5
      Stewart Brodie authored
        Fixed the spurious character problem.  It was due to me believing some
          misleading comments in the source code.  When the comment said "pass
          it on" (at the end of a vector handler), it actually meant "claim it".
          WrchV is now claimed correctly, and no output is "leaked" any more.
        Module may well no longer function on RISC OS 2.00
        Tested on Ursula build.
      Version 0.59. Tagged as 'TaskWindow-0_59'
  32. 31 May, 2000 1 commit
    • Stewart Brodie's avatar
      32-bit compatible · 57746bec
      Stewart Brodie authored
        Removed obsolete file.
        Made rest of the module 32-bit safe.
        A bug remains: when a taskwindow is started the first few characters of
          output are not being intercepted correctly (although they are sent to
          the parent task).  Looks as if something isn't initialised correctly?
          Perhaps a failure to intercept WrchV in these cases?
        Tested in Ursula softload.
      Version 0.58. Not tagged
  33. 01 Dec, 1999 2 commits
  34. 01 May, 1997 1 commit
  35. 02 Jan, 1997 1 commit
  36. 21 Nov, 1996 1 commit
  37. 05 Nov, 1996 1 commit