TaskShell Version 1.21, Copyright January 1996, Alun Jones, auj@aber.ac.uk.

This software is Freeware. You may distribute it freely with the provisos
that this file accompanies the distribution and that no changes are made to
the contents of the files. You may not charge more than a nominal copying
cost for their distribution and if you place them on a PD library disk I'd
quite like a copy of the disk... These programs may NOT be distributed as
part of a magazine disk without my permission (which I'll almost certainly
give - it's just that I'd like to make sure that such a distribution is the
most recent version).

!Task installs a module called TaskShell and aliases ShellCli to TaskShell.
TaskShell is a small module task which acts as a TaskWindow server, handling
I/O. It's special in that it completely subverts the desktop and takes over
the screen completely. You therefore get reasonable speed from it, and most
things will run OK without screen access problems.

If you specify a parameter to TaskShell, then it will pass this as a command
to TaskWindow. So, for example, to enter mode 0 on starting TaskShell, use
the command TaskShell "echo <22><0>". (See the !Run file for an example).

Oh yes, if you have !Virtual, you can Set Alias$Taskwindow %virtual %*0 and
get a shellcli-like environment with 25Mb spare (assuming you have the disk
space :-)

To start taskshell, just press f12. To exit, press f12 again. Pressing
TAB-f12 will give you a normal shellcli instead.

A few problems should be noted:

* You're limited to one copy of TaskShell at the moment. I hope to add
  multiple "virtual consoles" like Linux has at some point. Of course, you
  can run something in the background using a normal taskwindow, and still
  run a TaskShell, giving you a measure of backgrounding.

* When you exit, using f12, the taskwindow QUITS. No warning, nothing. So,
  if you're using an editor when you hit f12, you'll lose your work. Again,
  this will be handled in a future version. I intend to make f12 stop the
  current process and return you to the desktop. From there you will be able
  to quit or resume the process.

* To gain exclusive access to the screen, TaskShell opens a big window at
  the front and then disables VDU output. Any WIMP task which decides to
  plot sprites directly to the screen (rather than a window) will subvert
  this. For example, *Screenload doesn't work properly, because the Sprite
  Operation is run by TaskWindow itself, while the mode change has to be
  passed to TaskShell. This means that the plot happens before the mode
  change (!). There is nothing at all that I can do about this class of
  problem.

* Keyboard handling is a bit flakey. Version of TaskShell since 1.20 now
  emulate OS_Byte calls 221-228. This means that many more things work
  properly, notably Olly Betts' version of LineEditor and the BASIC editor.
  Undoubtedly other things will fail. The problem is that TaskShell receives
  all key codes as WIMP events. So, to make the keyboard work properly I
  would have to write a full emulation of the keyboard drivers.

* When TaskShell gets a Lose Caret WIMP event, it reclaims it, otherwise
  you'd be left without a keyboard. For some reason, TaskShell doesn't
  always receive lose caret events! e.g. Filer_Run TextFile starts !Edit and
  generates the event, but TaskWindow Gos starts !Edit and doesn't generate
  the event.  Either this is a bizarre RISC OS bug, or I'm doing something
  very strangely wrong.

Cheers,
Alun, auj@aber.ac.uk
