Quoting DigiLink Email Gateway:

>> [millisecond timer] Emm, it's not hugely important as I was merely
>> thinking it'd be nice if
> The timer I've got doesn't actually work on a RiscPC - attaches itself
> directly to hardware vectors so the installer need re-writing.  I'll look
> at the IOMD this weekend.

Cheers.

>> preempted task has two problems: (a) its code must run for a minimum of
>> 1cs,
> Can't you mark tasks as `blocked'?  Then they wouldn't need to be switched
> in.

Haven't marked it into the brief fully yet. BTW, do you have v0.03 of the
brief yet? I can't remember if I sent it to you yet or not.

>> Two points to this which makes it impractical: (a) Using OS_SetMemMap is
>> extremely quick, as it's only MEMC's internal pointers that are being
> altered,
> If OS_SetMemMapEntries is so quick,  why do Acorn reccomend that
> applications for ROS3.50+ use dynamic areas,  and why does my desktop slow
> down when I have an app with a 4M wimpslot?

Because changing the memory map under the Wimp and not having it crash is
extremely difficult (try it!), and I haven't a clue about the 4Mb wimpslot
slowing it down. Sound like maybe OS_Heap is having difficulty manipulating
such a large heap.

>> [subtasks] What do you reckon?
> Need to decide on a policy.  Execute at most once would seem logical - if
> there are any errors then assume that the subtask didn't do anything so
> perhaps start another subtask to try again.  This would mean that subtasks
> would have to work on temp files and not the actual files - if half a file
> is updated and an error occurs (Address exception at 0x12345, for example)
> then you won't have to wonder where to start processing from.

Em, you can't have received that new brief then. Subtasks are carefully
watched by Tornado, and if they crash, fail to start etc. then their parent is
told of this, and the reason why as far as it can tell. It's then up to the
parent what to do about it. And if a subtask exits half way through an
operation, the procedure is thus:
   (a) if the subtask was a continual update subtask, processed data already
returned is kept and usually a new subtask started in attempt to finish off
processing (this depends on the error for the exit of the previous subtask
obviously).
   (b) if the subtask only returns its processed data upon termination, all
data contained on the subtask's heap is cleared and the parent informed.
Usually the parent will examine the error, and decide if a reschedule is
suitable.

>> On RO2, not doing anything about redraw is fine: the window is cleared.
>> Probably RO3+.
> I tried this again to check it - unless you call Wimp_RedrawWindow and
> Wimp_GetRectangle you definately get another Event_Redraw and other apps
> don't get an event.

Oh well. It's been noted.

>> See my problem with inefficiency? If you want to amalgamate all returned
>> rectangles while still allowing for the window to be resized, scroll
>> offsets
> I'll be looking at this over the next few days - I have an app which needs
> to pull chunks of data from CD,  convert from BMP format and use them to
> draw the screen.  There's a total of about 8Mb of sprites,  so I can't
> cache the lot.  This is a good candidate for background redraws,  so I'll
> let you have some of the code when it's done.

Tornado would use a subtask here, that loads in the data multitaskingly,
converts it to sprite format, and passes it to the parent, which uses the
Tornado central renderers to plot it in the window. Brief already has all
these protocols defined. Sound any better? :-)

>> Fraid subtasks are release II, next Christmas. I've written in to the
>> brief most of the protocols: I'll email it out to you when I can.
>> Meanwhile, do
> you > want anything changed in the data structures etc? > 
>> :-) _IF_ you had studied the heap data structure more carefully, you'd see

Oh dear - subtasks have just been moved to the current release. Needed for the
central file translators, so it had to be done. And better: they'll probably
be needing a seperate preemptive multitasker - want to do it?

> When I wrote most of my last letter I only had the first release - not
> Brief 0.01 so I didn't have the structure to read (only an introduction to
> the Tornado standard and a file called GBPB)...

Okay, sorry about that. I thought I had emailed it to you though.

>> garbage is done. Anyway, the garbage can be optionally disabled, and even
> then
>> it would be pretty quick, being written in C and all.
> Shurley assembler...

If you want to ... :-). Nah, C will be fast enough, and if it isn't then we
can do a bit of hand-optimising. C's good at this type of thing.

>> Also, any code written specifically for the RPC will use the 32bit mode
>> /all/ the time. Has to, as it's in the aims that Tornado code should be
> Quoting the PRM (5-11):
>PRM> The new generation of ARM chips used have two modes: 26 bit (which is
>PRM> backwards compatible with ARM2 and 3), and 32 bit.  RISC OS 3.5 only
>PRM> supports the 26 bit mode. *You must not execute code in 32 bit mode*.
>PRM> If you try to do so,  you may get unpredictable crashes, especially if
>PRM> you tru to run the code in address space over 64M
> So it looks like 32 bit code is out.  Basically,  if you're in a 32 bit
> mode and an interrupt occurs,  the OS will return to you in a 26 bit mode. 
> This is likely to screw any uses of R15 and CPSR.

Bloody typical! Talk about RO3.5 being stop-gap! Okay, we'll deal with it when
we come to it. I 'spose anyway? Dunno ...

>> IMHO it will be when using an internal bus, which is way way way faster
>> than any i/o interface or disc.
> But the code has to be pulled off a disk into main memory.  I don't know if
> translation is done at load time or execute time.  There's a load of Taos
> stuff on http://www.acorn.co.uk/ - do you have w3 access?

Not if the files are on ROM though. AFAIK translation for TAOS is done at load
time, as the program is being loaded in. Then it remains in memory, to be used
if necessary, until it gets flushed.
   Yep, I have www access. And I'll take a look when I can. Thanks.

>> This is *BLASTED* RO3+ for you! RO3 Fileswitch does lots of Func16 all the
>> time, even if they aren't supported (which according to my PRM's it doesn't
> It doesn't do loads of Func16's.  It issues *one* when `Shutdown' is chosen
> from the task manager.  Func16 has nothing to do with wildcards...

Odd. Justin said that was the problem he was encountering.

>> The right is black, and blank, because it's meant to be! In reality,
>> Tornado would auto-shrink and extend if necessary and the appropriate bits
> The heap looks something like this:
> +----------------------------------------------------------------------+
> ||| ||| |||||| ||||    |     |     | |                                 |
> +----------------------------------------------------------------------+
> Okay,  so the small black bits on the left are your small free bits, but
> why are there some lines in the middle.  This is *after* garbage
> collection, btw. If you don't understand this I'll send you a UUcoded
> sprite.

Yes, sorry - you have an older version, with a buggy garbager. The newer one
compacts it all into the left, albeit with a few black bits although in
reality this is the renderer overrating the free space's size.

> As I said,  when I wrote most of that last mail I'd only had chance to read
> through the first archive.  I'd only glanced at the second.  What (and
> where) is LegoCad?  Do I have all the textfiles:

Hmm, almost certainly won't work on RO3.5 - RO3.1 users have had enough
problems. Not much I think we can do here - anyway, it's not really too
important.

> rel0:   GBPB, Info, Readme rel1:   Aims, Brief, Readme
> I seem to have a file (GBPB) which refers to `guideline 5b' but no file
> which has guidelines 1..5a.  I've now had chance to look at the second
> archive properly (all the SWI / *com documentation) I should have a bit of
> a better idea what I'm on about!

:-). Hehe, gbpb was a part of a file I wrote many many months ago. And then
souped up to fit the current agenda :-) - if you know hat I mean!
   Yes, the latest release is a bit bigger (about 100k of text!), and contains
a lot more info. v0.01 is positively undetialed in comparison!

>> Let me know what you think? I'd like some input, and I'll be putting a
> message
>> onto fidonet asking for ideas.
> Don't think you were too popular putting your message in c.s.a.hardware...
> .misc and .programmer seem logical,  but hardware?  Nothing personal,  but
> most denizens seem to be quite hostile towards messages in the wrong groups.

Odd - I got quite a response from c.s.a.hardware. Oh well, the intention was
that the people there would suggest what to put in Tornado to make accessing
hardware better. And they did all right. The usual TCPIP stacks stuff, but a
few gems too.

> I'll get on with this background window redrawing now - let you know how it
> goes.

Cheers. Coding starts next week, so wish me luck! And unfortunately Justin
hasn't replied to my parcel yet. I wish he would - he's holding things up :-(

Cheers,
Niall
