Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!rutgers!cbmvax!higgin
From: higgin@cbmvax.cbm.UUCP (Paul Higginbottom GUEST)
Newsgroups: comp.sys.amiga
Subject: Re: MANX bugs with Tasking
Message-ID: <1146@cbmvax.cbmvax.cbm.UUCP>
Date: Thu, 18-Dec-86 19:09:50 EST
Article-I.D.: cbmvax.1146
Posted: Thu Dec 18 19:09:50 1986
Date-Received: Fri, 19-Dec-86 07:08:14 EST
References: <2226@bacall.UUCP> <865@ulowell.UUCP>
Reply-To: higgin@cbmvax.UUCP (Paul Higginbottom GUEST)
Organization: PDH, Inc.
Lines: 45

In article <2226@bacall.UUCP> papa@bacall.UUCP (Marco Papa) writes:
>Has anybody gotten tasking to work with MANX? All examples from C-A, that work
>with Lattice, crash the Amiga with MANX... initask.c and tasking.c from the 
>Amiga Developer's Newsletter...task creation with MANX, please let me know.  
>Note that all tasking examples that I have crash with ALL versions of 
>MANX (3.20a through 3.30e).
>-- Marco Papa
>   Felsina Software

Ok - the problem is almost certainly due to a4 not being initialized
correctly.  I have only tried a little on tasks, and gave up in
frustration, and tried Processes which are trivial (LoadSeg, CreateProc,
send 'em a dummy workbench message to kick them into life... voila).

We must work together to lick this problem!  It's as if NO-ONE at
Commodore-Amiga has ever written something that starts up a task!
This of course is impossible (one would think!) because Exec WAS
written by Amiga.  However, note - the WorkBench doesn't multi-task!
Why should I have to WAAAIIIIITT while it loads a directory?  Surely a
task should get fired up to do that while I can do say an Info on another
icon, or format a disk or whatever, but noooo.

[Stepping off bandstand]... for a task to exist it must have....

memory where the program exists
memory where the data exists and the a4 reg (for Manx) must be pointing
into the middle of it.  True is can inheret the a4 of the parent, but
this forces the parent to stick around while the child runs (pain).
memory for a stack (presumably malloc'ed by the parent).

I guess one of the problems is that the C compilers we use assume the
programs are going to run as Processes with CLI structs and other crud
associated with them.  Therefore I suspect _main() and _exit()/exit()
will need to be re-written.  Comments?  If this can be accomplished,
it would seem to me that a program with this special _main etc could be
LoadSeg'ed, given a stack, and AddTask'ed.  Comments?

I'd give a lot for two things ---- decent BCPL and tasking documentation
and EXAMPLES OF WORKING PROGRAMS!  However that might not be sufficient
either due to the differences in Manx/GreenHills/Lattice.

	Sigh,
		Paul.

Disclaimer: I work for myself and my opinions are my own.