[comp.sys.amiga] Where's CAOS

kim@amdahl.amdahl.com (Kim DeVaughn) (12/23/87)

In article <15998@watmath.waterloo.edu>, ccplumb@watmath.waterloo.edu (Colin Plumb) writes:
> 
> In article <139@imagine.PAWL.RPI.EDU> lunge!jesup@beowulf.UUCP writes:
> >In fact, the custom OS (called CAOS) was spec'ed by the person who wrote
> >Exec, Karl Sassenrath.  I have been told by Andy Finkel that CAOS actually
> >somewhat existed on a Sage for a while, before it was scrapped.
> 
> Weel, the question everyone's asking is:
> Where do I get it?

At a recent FAUG meeting, it was mentioned by "someone who should know",
that there was still a lawsuit pending between CBM and the individual
who left C-A holding the bag WRT the original Amiga OS (CAOS).  [I don't
believe this was Karl, and don't mean to imply that at all.]

Since the issues are in the hands of lawyers, you *might* be able to get
ahold of it near the year 9595 ... but I doubt it!

Too bad!  If it was as well done as Exec, Intuition, etc, it would've been
a real killer ...

/kim


-- 
UUCP:  kim@amdahl.amdahl.com
  or:  {sun,decwrl,hplabs,pyramid,ihnp4,uunet,oliveb,cbosgd,ames}!amdahl!kim
DDD:   408-746-8462
USPS:  Amdahl Corp.  M/S 249,  1250 E. Arques Av,  Sunnyvale, CA 94086
CIS:   76535,25

ccplumb@watmath.waterloo.edu (Colin Plumb) (01/04/88)

I've heard various people say that Intuition isn't "really" a device.
Can someone describe how it's not?  I seems that AmigaDOG opens it to
provide a CLI window, at which point it opens the WB screen and the
input.device and grabs sprite 0 and the copper.  Is any of this
forbidden to a device?  How could (as I have heard) another six months
of software development time have fixed this?  Can it be retrofitted?

More on the subject of deficient system software:
In article <19975@amdahl> kim@amdahl.amdahl.com (Kim DeVaughn) writes:
> In article <15998@watmath>, ccplumb@watmath.waterloo.edu (I) write:
>
>> Well, the question everyone's asking is:
>> Where do I get it [caos]?
>
>At a recent FAUG meeting, it was mentioned by "someone who should know",
>that there was still a lawsuit pending between CBM and the individual
>who left C-A holding the bag WRT the original Amiga OS (CAOS).  [I don't
>believe this was Karl, and don't mean to imply that at all.]
>
>Since the issues are in the hands of lawyers, you *might* be able to get
>ahold of it near the year 9595 ... but I doubt it!
>
>Too bad!  If it was as well done as Exec, Intuition, etc, it would've been
>a real killer ...

My thoughts exactly.  I've been exploring the innards of AmigaDOG and
grown to loathe the BPTR.  I've been dreaming about a replacement for
it.  Since the most complex thing AmigaDOG seems to do is overlays
(please correct me if I'm terribly misguided - other than that, it
seems to do less than Minix), which isn't *that* hard, I've also been
toying with the idea of starting to consider perhaps beginning to
contemplate the possibility of implementing this hypothetical DOS.

Of course, I somehow suspect that Karl's spec is better than mine, and
would dearly love to steal ideas.  I don't really see how the lawyers
could care who sees the spec.  All parties concerned with the lawsuit
know it intimately.

Can anyone at C-A add some information, even to explain why you can't
say anything?  Failing that, does anyone know of an address for anyone
not at C-A (Karl, maybe?) who could describe what it does, even in
general terms?  Resource tracking sounds like a job for Exec, not Caos,
but I'd be fascinated to hear how to do it well at that level.  Reading
spec sheets is my idea of fun, and this would probably be much more
intersting than most I've ploughed through.
--
	-Colin (ccplumb@watmath)

jimm@amiga.UUCP (Jim Mackraz) (01/05/88)

In article <16076@watmath.waterloo.edu> ccplumb@watmath.waterloo.edu (Colin Plumb) writes:
)I've heard various people say that Intuition isn't "really" a device.
)Can someone describe how it's not?  I seems that AmigaDOG opens it to
)provide a CLI window, at which point it opens the WB screen and the
)input.device and grabs sprite 0 and the copper.  Is any of this
)forbidden to a device?  How could (as I have heard) another six months
)of software development time have fixed this?  Can it be retrofitted?
)
)
)I've been exploring the innards of AmigaDOG and
)grown to loathe the BPTR.  I've been dreaming about a replacement for
)it.  Since the most complex thing AmigaDOG seems to do is overlays
)(please correct me if I'm terribly misguided - other than that, it
)seems to do less than Minix), which isn't *that* hard, I've also been
)toying with the idea of starting to consider perhaps beginning to
)contemplate the possibility of implementing this hypothetical DOS.
)
)
)Can anyone at C-A add some information, even to explain why you can't
)say anything?  
)	-Colin (ccplumb@watmath)

Well, I've got a little insight on this stuff.

Intuition is not a device, it is a library.  You interface to it
by function calls, not by sending a request block.  So there is
no standard way to choose whether you want to wait until it's done
or check later if it's done.

It also  means that it was a hard job (a VERY hard job) in 1.2 to
go back and  make the parts of it which weren't re-entrant safe
(since two tasks can be calling the functions at once).

You describe some of things that happen in rapid order, when Intuition
library is initialized and when the first workbench window is opened.
Very little of this has to do with being a library or device.  It's more
of a synchronization and serialization issue, as I described.

I don't know if another six months would have mattered.  I think it took
more than that to realize that a device might provide a better model.
It is very likely not retrofittable, at least not without breaking a lot
of programs.  Now that the grunt work has been done and it is reasonably 
safe, there isn't a lot to be gained making it a device, especially  if you
ask the old "how many Amigas would it sell?"  Don't expect it.

As for rewriting DOS, it's a concept, but here are two things to think about:
1) Lots of programs handle BPTRs, so even if you replace all of the BCPL
code, we'll be stuck with the screwy data structures.

2) Dos does a fair bit more than handle overlays.  Among other things, 
it is multi-threaded (more or less), handles volumes well, and is
no small piece of change, from a technical standpoint.  The worst
parts (file handler) are being enhanced.

In all of these discussions, I sense that people don't appreciate the
"compatibility nightmare" that systems programmers must live with if
they are to provide backward compatibility.  The real trick is to
provide support for a future that one cannot even imagine yet, which is
a fair step harder than supporting every creative thing you can think of.
The modules of the Amiga OS vary in the acheivement of this goal.

The ARP people are beginning to appreciate this kind of problem, as
the discussions on BIX illustrate.

Of course, if you think compatibility is not an issue, and that Minix or
anything like it is preferable, port away.  I can't see that such a thing
makes sense for Commodore to spend time on.  Clearly (now), the key
ingredient to a successful computer is application software.  The world
doesn't need a lot of new DOS's, as I'm sure we'll be seeing again with
OS/2 (half-OS).

And for you CAOS lovers, Andy Finkel is reportedly writing an article
on CAOS, including its short length limit on path names and all.  The
road not taken is often not worth lamenting.

So, we all live with what we've got, and the compatible enhancements
that there are time for.  The ARP project has some promise to relieve
some of the nonsense, and Steve Beats' work on the file system will
make a big difference.

Try again in six months.  Maybe I'll come in nights (hah) and make Intuition
a device for practice.

	Cheers
	jimm
-- 
	Jim Mackraz, I and I Computing	  
	amiga!jimm	BIX:jmackraz
Opinions are my own.  Comments regarding the Amiga operating system, and
all others, are NOT to be taken as Commodore official policy.

peter@sugar.UUCP (Peter da Silva) (01/06/88)

> [CAOS] [Minix does more than AmigaDOS] ...

I have a perfectly weird idea.

How about just grabbing the filesystem part of Minix, writing an interface
package, and replacing AmigaDOS with that?

I don't want to do this, but if it was done right I'd certainly use it. Sing
hosannahs to the name of whoever did it. Maybe even pay money for it!

Am I getting hysterical or what?
-- 
-- Peter da Silva  `-_-'  ...!hoptoad!academ!uhnix1!sugar!peter
-- Disclaimer: These U aren't mere opinions... these are *values*.

dpvc@ur-tut.UUCP (Davide P. Cervone) (01/12/88)

In article <16076@watmath.waterloo.edu> ccplumb@watmath.waterloo.edu (Colin Plumb) writes:
>I've heard various people say that Intuition isn't "really" a device.
>Can someone describe how it's not?

Intuition is not a device at all.  It is a library, as Jimm pointed out.  (A 
device and a Library have a lot in common, but they are not the same).

A device has code that runs as a separate process; you use messages to send
it information about what you want the device to do (e.g., you send the
serial.device a Standard IO Packet when you want to read a character from
the serial port).  

A library, on the other hand, contains routines that are called by the programs
that use the library.  These routines are run from the context of the CALLING
program (as opposed to a device, where they are called from the device process)
which means they must be reentrant.  A library also can have a set of global
variables that are common to ALL the programs that are calling it.  For 
example, the Intuition library has it's own global variables:  they are in fact
the ones pointed to by IntuitionBase, and described in 
intuition/intuitionbase.h.  When you open a library (or device), you get a
pointer to its global data variables. 

The routines in a library are called by the library vector table, which is a
jump table that sits in memory just below the library's global data.  That's
why the LVO variables are all negative, they point to memory IN FRONT OF the
library pointer.  In order to call an Intuition routine, you need the library
base pointer, that's why AmigaDOS must open Intuition:  to get access to
OpenWindow(), etc.

One thing that is unusual about Intuition is that it also runs part of its
code as an input handler.  That is, it runs in the context of the Input.Device.
That's why things like ClickUpFront work, they are called by the input.device
before it calls intuition.  If you look in the Intuition manual, you will
see a routine called Intuition() that takes an input event chain and returns
a (modified) input chain.  That's the routine that the input.device calls,
just like it calls myHandler in ClickUpFront.  Intuition() just does a LOT 
more than myHandler.  If you've ever looked at the contents of an 
IntuiMessage, you'll see that the reply port is NULL.  That is, there is
NO INTUITION TASK TO SIGNAL.  It's really "running" as part of the input
device.  Anyway, that's a whole different story.

I don't have my manuals or notes with me, so I may have mis-remembered some
of that, and some of it is only speculation anyway, but I think it is
largely correct.  I'd be interested in knowing if anyone has a different
view of how Intuition works.

Davide P. Cervone
dpvc@tut.cc.rochester.edu
dpvc@ur-tut.UUCP
DPVC@UORDBV.BITNET

P.S., if anyone want to verify this, you can probably do it the following way:
set up a dummy input handler, and send a message to the input device to
add your handler into the chain.  See ClickUpFront or HeliosMouse for a 
sample of how to do this.  You will need an Interrupt structure, as I recall.
This is linked into the input device's list of handler that it calls.  If I'm 
not mistaken, this is a standard exec LIST structure, so your interrupt
structure will contain a NODE structure.  You can use this to "peek" at what
other routines will be called by the input device.  You should be able to
match these against the pointer to the Intuition() routine in intuition.
You may have to get the actual address from the library jump tables, otherwise
you may just get the pointer to the glue routine in the amiga.lib library.
If anyone does this, let me know what you come up with.