[comp.sys.amiga.advocacy] How do we change the scheduler?

peter@sugar.hackercorp.com (Peter da Silva) (01/13/91)

In article <MWM.91Jan10120936@raven.relay.pa.dec.com>, mwm@raven.relay.pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
> Actually, "true multitasking", as it is commonly _used_, means
> preemptive multitasking.

That's because all systems that were designed to multitask from day 1 use
pre-emptive scheduling, *except for* a few Forth real-time systems with
extremely tight memory budgets. Pre-emptive multitasking is what people
for years meant by "multitasking". Polled multitasking was always considered
a sort of poor cousin, and systems like Polyforth that depended on it were
looked down upon. When people started referring to polled multitasking in
terms that indicated they didn't know the difference between the two the terms
"real" and "fake" multitasking showed up.

> If you've got a reference to a textbook that
> defines the term (in any way), I'd appreciate hearing about it.

I've got 10 years of experience in the process control industry that defines
the term that way. The usual reaction to hearing that Apple is claiming they've
got a real O/S finally on the strength of their polled scheduler, among my
co-workers, is "you've got to be kidding".

> Bullshit. Explain to a user who doesn't have the foggiest idea what a
> scheduler is why his machine - which, as far as he can tell, behaves
> exactly like an Amiga under normal operation - has "fake"
> multitasking.

No problem. Just demonstrate that his machine doesn't behave exactly like an
Amiga. Cut it down to 512K and watch it crash. Start up more thana couple
of applications in a 2 Meg machine. Ask why the mouse is moving funny. Have him
try to do anything useful while formatting a disk. Ask him why he can't run
multifinder on a Mac Classic.

> Actually, I think it's silly to define "true multitasking" at all.

I agree. It's silly to even talk about a polled scheduler as "multitasking".

> Either something is multitasking, or it isn't. I've already explained
> how to tell which is which. If you insist on defining "true
> multitasking", do it in non-technical terms. How about "no
> non-privileged task can starve any other task"?

Funny, people in the process control industry consider UNIX daft because a low
priority task can still execute while there are higher priority tasks
executing. How about defining "real multitasking" as "real-time multitasking"?
At least that has a pretty good definition.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/13/91)

In article <7504@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:

>No problem. Just demonstrate that his machine doesn't behave exactly like an
>Amiga. Cut it down to 512K and watch it crash. Start up more thana couple

The average Mac user knows less about the Amiga than the average Amiga user
knows about the Mac.  Be that as it may, you can run a Mac 512k, and even do
task switching on it.

>of applications in a 2 Meg machine. Ask why the mouse is moving funny. Have him

I can start up a _bunch_ of apps on a 2 meg Mac (I just have to be selective 
about what I launch).

>try to do anything useful while formatting a disk. Ask him why he can't run

Yeah, that is a substantial criticism.  I mean really, how OFTEN do you need to
format a disk?  It is nifty to be able to do so and run another task, but it
just as easy to format a bunch at once and then go back to work.

>multifinder on a Mac Classic.

Get a new source for your Mac info.  MultiFinder runs just fine on the Classic.

When someone spreads misinformation about the competition, you begin to wonder
how thoroughly they know their own machine.  The Amiga already is an 
impressive bang/$ hunk of iron WITHOUT tilting the scales with caca spread about
"the other guys".

thad@cup.portal.com (Thad P Floryan) (01/13/91)

awessels@ccwf.cc.utexas.edu (Allen Wessels) in <42459@ut-emx.uucp>

writes (regarding the Mac):

	I can start up a _bunch_ of apps on a 2 meg Mac (I just have to be
	selective about what I launch).

Not a very user-friendly system if your apps are load-order dependent.

	>try to do anything useful while formatting a disk. Ask him why he
	>can't run

	Yeah, that is a substantial criticism.  I mean really, how OFTEN do
	you need to format a disk?  It is nifty to be able to do so and run
	another task, but it just as easy to format a bunch at once and then
	go back to work.

Oh?  I'll tell you what really shows the Mac to be the rotten Apple that it is.
My secretary uses a Mac II (for doing all kind of documentation type stuff) and
was printing out a bunch of stuff on the Apple Laser printer that was to be our
handout material at last month's DECUS in Las Vegas, when I happened to be in
her office and asked "Hey, Jude, flip over to the terminal window and I want to
show you something on the VAX." She said, "I can't, I'm printing and cannot do
anything else for at least 45 minutes."

Apple has the audacity and arrogance to claim the Mac makes people productive?

BULLSHIT!

If it wasn't for the fact we needed those printings NOW and the fact we've been
suckered into paying so much for the Mac and its software, I was tempted to
grab that CRApple Mac and toss it out the window and over the fence and teach
her how to use AmigaTeX on one of the spare office Amigas (which, by the way,
prints just nicely onto the same Apple Laser printer).

And as for Allen's comment "but it just as easy to format a bunch at once and
then go back to work."  Again, bullshit.  I was just doing some file transfers
and noted, "Oh oh, HD is just about full" so I just flipped to a CLI window on
the Amiga, formatted a few floppies WHILE THE FILE TRANSFER WAS STILL GOING ON,
and then had disks upon which to write the transfer buffs with NO LOSS OF TIME
on my part (re: formatting a buncha disks beforehand).

Try THAT on your stinking Apple.

I have so little respect for the garbage ensuing and spewing forth from Apple
that we even "converted" the Finder 7.0 CD ROM disk last month to a playtoy
"frisbee" for one of the office worker's kids.  Yeah, Apple sends me all kindsa
shit each month on 3.5" floppies and CD ROMs; I always reformat the 3.5"
floppies for use on my Amigas or 3B1s (lucky for Apple their disk labels don't
have permanent adhesive or I'd really be raising a stink, and the different
colored disks each month look kinda pretty in my A1010 drives :-), the CD ROMs
go to the kids (sometimes there's music on them, too), and the "Apple Developer
Tech Notes" are sitting in boxes, unopened.  Seems only 1 or 2 pages out of
each month's 100-200 page mailing even has anything about A/UX, and, since A/UX
2.0, it's not even worth trying to FIND those 2 pages in the mess buried
amongst all the IIgs, MacOS and Lisa crap, let along reading or using it.  I'm
really not kidding, and now with the BYTE article blasting A/UX publicly, my
credibilty and esteem has risen to new heights in my company (regarding all my
anti-Apple criticisms).  Hmmm, I may even renew my BYTE subscription now (which
I dropped several years ago due to their anti-Amiga editorial stance).

Thad

P.S. And before you start to reply, remember this IS comp.sys.amiga.ADVOCACY
where one is expected to flame/be-flamed, and to tout the obvious superiority
of the Amiga over everything else.  As someone else recently stated, there
oughta be a Federal law requiring everyone to buy/own an Amiga!  :-)

Thad Floryan [ thad@cup.portal.com ]

skank@iastate.edu (Skank George L) (01/13/91)

>Thad
>
>P.S. And before you start to reply, remember this IS comp.sys.amiga.ADVOCACY
>where one is expected to flame/be-flamed, and to tout the obvious superiority
>of the Amiga over everything else.  As someone else recently stated, there
>oughta be a Federal law requiring everyone to buy/own an Amiga!  :-)
>
>Thad Floryan [ thad@cup.portal.com ]

	Things are starting to heat up kiddies!!  :)  Watch the sparks fly!!
I love THIS new group!  We should have done this a long time ago!  Things will
be really great when the B-Man gets back from break!  I can't wait!  (I can't
believe I just said that!)  :)
					--George



--

George L. Skank			|
skank@iastate.edu		|Fast cars, fast women, fast computers...
Senior, Electrical Engineering	|(not necessarily in that order)

root@zswamp.fidonet.org (Geoffrey Welsh) (01/13/91)

Peter da Silva (peter@sugar.hackercorp.com ) wrote:

 >Funny, people in the process control industry consider UNIX 
 >daft because a low
 >priority task can still execute while there are higher 
 >priority tasks
 >executing. How about defining "real multitasking" as 
 >"real-time multitasking"?
 >At least that has a pretty good definition.

   Hunh?

   According to my last info, UNIX will only execute a low priority process if 
all active higher prio procs are in wait, and the low-prio proc should be 
interrupted if the wait condition for a higher prio proc is satisfied.
 

--  
UUCP:     watmath!xenitec!zswamp!root | 602-66 Mooregate Crescent
Internet: root@zswamp.fidonet.org     | Kitchener, Ontario
FidoNet:  SYSOP, 1:221/171            | N2M 5E6 CANADA
Data:     (519) 742-8939              | (519) 741-9553
MC Hammer, n. Device used to ensure firm seating of MicroChannel boards
Try our new Molson 'C' compiler... it specializes in 'case' statements!

burley@geech.ai.mit.edu (Craig Burley) (01/15/91)

Regarding Mac's Multifinder, here is how to tell whether it has true
multitasking (which does mean preemptive scheduling in any context I've
ever heard the term defined):

Start up a comms program and get a reasonably long file transfer going, like
via kermit or X-modem.

Now switch to the Finder or some other app (perhaps even the comm app itself,
though mine, Microphone II, is smart enough to keep things going despite the
pulled-down menu -- if it is its own).

Now pull down a menu and hold it down for about five minutes.

Now go back to the comms program window and see how much stuff has been
transferred and whether the transfer has crashed.

The answer should be "No, the transfer kept plugging along", but on the Mac
it currently is, "Yes, when holding a menu in the pulled-down state, no
other tasks on the system continued running except perhaps the vertical
retrace task".

If the comms program is smart enough to put the file transfer into the
vertical retrace task, try using a long compilation instead of a comm
program task instead, and see if it keeps compiling even while the menu
is held down.

Note that in any case, it is absolutely certain that on the current Mac,
either you don't have true multitasking and it is fairly easy to expose it,
or the programmers of the apps you are using have had to jump through hoops
to disguise it (as did the Microphone II engineers -- for which I'm very
grateful).  (To be fair, as I've posted before, just doing true
multitasking requires a bit of jumping through hoops for the OS and its
applications -- but nothing like simulating it, efficiently, without
actually having it.)

Anyone care to post whether this kind of scenario works on the Amiga?  I.e.
when holding a menu down, or doing other purely user-interface things that
aren't inherently resource intensive (like just holding a mouse button
down without moving the mouse), does true multitasking keep working?
My guess would be yes, it does.
--

James Craig Burley, Software Craftsperson    burley@ai.mit.edu

jimb@pogo.ai.mit.edu (Jim Blandy) (01/15/91)

This discussion makes True Multitasking sound like the True Grail, or
True Love.  There's an implicit value judgement there, and nobody
wants their machine to lack True Multitasking, even if they can't
agree on what that actually means.  Let's abandon the term, and talk
about what actually happens.

A Mac running the Multifinder has non-preemptive multitasking; each
task voluntarily gives up control.  The Amiga does preemptive
multitasking; a task may be stopped at any time.

It is nice to be able to run other tasks while a task waits for its
I/O to complete.  The Mac won't do this (will it?); big-machine OS's
like VMS and Unix will do this.  The Amiga does this.

My college OS textbook talks about "strict" and "non-strict" priority
systems for scheduling.  A strict priority system never runs a
lower-priority task when a higher-priority task is runnable.  Under a
non-strict scheme, lower-priority tasks get less time, but don't
starve.  Both have their uses, but don't confuse them.

The Amiga exec does provide system calls to disable and re-enable
multitasking; I imagine this is because Commodore would rather provide
a system call than have people non-portably hack it when they need it,
but one doesn't need these calls in normal Amiga programming.

I think the Amiga support for multi-tasking is a bit cleaner, perhaps
because it was in the design early.  Separate application heap zones
are unnecessary, and processing can go on concurrently with I/O, for
example.  Backward compatibility is very important to Apple, and this
constrains them.
--

-Jim Blandy
jimb@ai.mit.edu

mwm@raven.relay.pa.dec.com (Mike (My Watch Has Windows) Meyer) (01/15/91)

In article <JIMB.91Jan14143121@pogo.ai.mit.edu> jimb@pogo.ai.mit.edu (Jim Blandy) writes:
   This discussion makes True Multitasking sound like the True Grail, or
   True Love.  There's an implicit value judgement there, and nobody
   wants their machine to lack True Multitasking, even if they can't
   agree on what that actually means.  Let's abandon the term, and talk
   about what actually happens.

Yes, yes, yes! That's been my point all along. It's judgemental, and
there is a perfectly good term to use for it's normal use here. Also,
nobody has come up with a textbook definition, which means that
misinterpretations due to people using different definitions is
possible.

	<mike
--

new@ee.udel.edu (Darren New) (01/15/91)

In article <JIMB.91Jan14143121@pogo.ai.mit.edu> jimb@pogo.ai.mit.edu (Jim Blandy) writes:
>A Mac running the Multifinder has non-preemptive multitasking; each
>task voluntarily gives up control.  The Amiga does preemptive
>multitasking; a task may be stopped at any time.

It's worse than this.  Try starting up multifinder, hypercard, and
(say) tetris. I just did this last night because I wanted to play
tetris but the owner of the machine had the hypercard stack open.
Anyway, the music was all messed up and the blocks fell at different
speeds, making it difficult to play.  I then realised that hypercard
must be sucking up CPU time even though it was not active, it was not
running anything, and the mouse was not near the window.  I confirmed
this by closing hypercard and suddenly everything was fine. On the
Amiga's exec, if a task is waiting for input, it does not take any CPU
time until the input is ready. With cooperative multitasking (at least
as implemented on the Mac), each application is asked "are you ready
yet?" and each must answer, and this takes noticable CPU time away from
the tasks that *are* ready.  It also becomes easy to see where tasks
can block other tasks, as the music plays fine if you hold open a menu,
and totally stops when a floppy is inserted (until the floppy icon
comes up).  Anyway, by designing in the multitasking on the Amiga, it
is possible for a task to totally give up the CPU and get it back later
when it needs it.  On the Mac, each task must constantly use CPU time
to see if it needs more.          -- Darren
-- 
--- Darren New --- Grad Student --- CIS --- Univ. of Delaware ---
----- Network Protocols, Graphics, Programming Languages, 
      Formal Description Techniques (esp. Estelle), Coffee, Amigas -----
              =+=+=+ Let GROPE be an N-tuple where ... +=+=+=

es1@cunixb.cc.columbia.edu (Ethan Solomita) (01/15/91)

In article <JIMB.91Jan14143121@pogo.ai.mit.edu> jimb@pogo.ai.mit.edu (Jim Blandy) writes:
>
>A Mac running the Multifinder has non-preemptive multitasking; each
>task voluntarily gives up control.  The Amiga does preemptive
>multitasking; a task may be stopped at any time.
>
	Problem is, most tasks DON'T give up control. Mac
programs have to be written to purposely give up control and many
are still written badly enough to not work, MicroSoft being one
of the worst culprits. The Amiga's MAIN advantage is that it is
built into the system. You just don't do anything unusual with
your program and it'll multitask very nicely. Yes, Apple is
constrained by backwards compatibility, but I hate being
constrained by backwards operating systems! 8)

>The Amiga exec does provide system calls to disable and re-enable
>multitasking; I imagine this is because Commodore would rather provide
>a system call than have people non-portably hack it when they need it,
>but one doesn't need these calls in normal Amiga programming.

	Actually it can be necessary for normal programming, and
Commodore does give examples of programming where it is
necessary. If you need to play with any of the system lists, such
as task lists, message ports, and you don't use Commodore
supplied functions, you'll need forbid/disable. Also, if you are
changing some pointers in your internal structures, such as your
screen and windows structures, you have to make sure that it
never leaves a usable state, otherwise you need to stop
multitasking.
	-- Ethan

	"Don't forget the importance of the family. It begins
with the family. We're not going to redefine the family.
Everybody knows the definition of the family. ... A child. ... A
mother. ... A father. There are other arrangements of the family,
but that is a family and family values."

	-- Dan Quayle, of course. Our beloved Vice President.
	It's just too easy!

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/15/91)

In article <37975@cup.portal.com> thad@cup.portal.com (Thad P Floryan) writes:
>awessels@ccwf.cc.utexas.edu (Allen Wessels) in <42459@ut-emx.uucp>
>
>writes (regarding the Mac):
>
>	I can start up a _bunch_ of apps on a 2 meg Mac (I just have to be
>	selective about what I launch).
>
>Not a very user-friendly system if your apps are load-order dependent.

They aren't load-order dependent.  Unfortunately, Mac developers (at least the
ones doing major apps) are pretty sloppy about code size and applications can't
request more memory (this is a simplification) from the OS, so they take up
fixed amounts of space in MultiFinder partitions.

For example, on a 2 meg Mac, the OS takes up about 250k, the Finder takes up
160k, Word wants 512, and Excel wants a meg.  (These are all the current 
versions.  I can do a lot better with older versions and still have lots of
functionality.)

>Oh?  I'll tell you what really shows the Mac to be the rotten Apple that it is.
>My secretary uses a Mac II (for doing all kind of documentation type stuff) and
>was printing out a bunch of stuff on the Apple Laser printer that was to be our
>handout material at last month's DECUS in Las Vegas, when I happened to be in
>her office and asked "Hey, Jude, flip over to the terminal window and I want to
>show you something on the VAX." She said, "I can't, I'm printing and cannot do
>anything else for at least 45 minutes."

I'm sorry your secretary doesn't have access to reasonable Mac support.  I have
a bunch of people on my network doing that sort of thing and they might have
to wait 30 seconds or so for something to spool to disk so that it can be 
printed in the background.

>Apple has the audacity and arrogance to claim the Mac makes people productive?
>
>BULLSHIT!

Thanks, but it makes people who otherwise wouldn't be very productive with an
IBM very much so with a Mac.  I've been using Macs and helping Mac users since
1984.  It is a pretty useful machine.  Unfortunately, the same interface that
helps those users also makes it difficult to maxmize the machine's potential.

>suckered into paying so much for the Mac and its software, I was tempted to
>grab that CRApple Mac and toss it out the window and over the fence and teach
>her how to use AmigaTeX on one of the spare office Amigas (which, by the way,
>prints just nicely onto the same Apple Laser printer).

Like I said, just because you don't know how to use the machine doesn't mean it
can't do the job.  Who suckered you into buying the Mac?  Any computer user that
buys a machine without giving it a workout on the kinds of tasks that they 
expect of that machine deserves what they get.

>And as for Allen's comment "but it just as easy to format a bunch at once and
>then go back to work."  Again, bullshit.  I was just doing some file transfers
>and noted, "Oh oh, HD is just about full" so I just flipped to a CLI window on
>the Amiga, formatted a few floppies WHILE THE FILE TRANSFER WAS STILL GOING ON,
>and then had disks upon which to write the transfer buffs with NO LOSS OF TIME
>on my part (re: formatting a buncha disks beforehand).

Well gee, funny how things work, but human beings can multitask too!  I 
generally can pop a disk in and format it while doing some other non computer-
related task.  If your working habits are such that you need to format a disk
on the fly, the Amiga is your machine.  

[comments on the inadequacy of Apple developer info deleted]

>Thad
>
>P.S. And before you start to reply, remember this IS comp.sys.amiga.ADVOCACY
>where one is expected to flame/be-flamed, and to tout the obvious superiority
>of the Amiga over everything else.  As someone else recently stated, there
>oughta be a Federal law requiring everyone to buy/own an Amiga!  :-)

Well, I think there is a difference between a flame and just a bunch whining.
If the Amiga is the superior machine, it will win without a bunch of uninformed
dopes bad-mouthing a machine they don't know very much about.

I'm very interested in what the Amiga CAN do and not very much interested in
what some people THINK the Mac can't.

a186@mindlink.UUCP (Harvey Taylor) (01/15/91)

In <MWM.91Jan14145940@raven.relay.pa.dec.com>, mwm@raven.relay.pa.dec.com
                                    (Mike (My Watch Has Windows)) writes:
|In article <JIMB.91Jan14143121@pogo.ai.mit.edu> jimb@pogo.ai.mit.edu
|                                                    (Jim Blandy) writes:
|   This discussion makes True Multitasking sound like the True Grail, or
|   True Love.  There's an implicit value judgement there, and nobody
|   wants their machine to lack True Multitasking, even if they can't
|   agree on what that actually means.  Let's abandon the term, and talk
|   about what actually happens.
|
| Yes, yes, yes! That's been my point all along. It's judgemental, and
| there is a perfectly good term to use for it's normal use here. Also,
| nobody has come up with a textbook definition, which means that
| misinterpretations due to people using different definitions is
| possible.

    Quite so. And even more unsettling for rabid amigoids, I have seen
 proselytizing OS/2 types claim that the Amiga doesn't have "real
 multitasking" because it doesn't have memory protection. If one errant
 program can take down the system, it ain't multitasking, so they say.
    -harvey

    "The earth is a graveyard of angry young men." -some old greek

      Harvey Taylor      Meta Media Productions
       uunet!van-bc!rsoft!mindlink!Harvey_Taylor
               a186@mindlink.UUCP

dege@cs.umn.edu (Dege Jeffrey Charles) (01/15/91)

In <JIMB.91Jan14143121@pogo.ai.mit.edu> jimb@pogo.ai.mit.edu (Jim Blandy) writes:


>This discussion makes True Multitasking sound like the True Grail, or
>True Love.  There's an implicit value judgement there, and nobody
>wants their machine to lack True Multitasking, even if they can't
>agree on what that actually means.  Let's abandon the term, and talk
>about what actually happens.

>My college OS textbook talks about "strict" and "non-strict" priority
>systems for scheduling.  A strict priority system never runs a
>lower-priority task when a higher-priority task is runnable.  Under a
>non-strict scheme, lower-priority tasks get less time, but don't
>starve.  Both have their uses, but don't confuse them.
 
    It's because of this that the Amiga folks get so upset at the idea of
Windows, Multi-finder, et al., calling themselves multi-tasking.  Unix has
a non-strict scheduling scheme, Amiga has a strict scheduling scheme, 
Windows and Multifinder are neither (the OS doesn't control scheduling,
each application does that for itself.)

    In any case, it's the usefulness to the user that matters.  Both Windows
and Multifinder provide increased usefulness to their users.  Beyond that,
not much matters.
 

--------------------------------

pswanson@umvlsi.ecs.umass.edu (Paul Swanson) (01/15/91)

In article <42516@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>
>They aren't load-order dependent.  Unfortunately, Mac developers (at least the
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>ones doing major apps) are pretty sloppy about code size and applications can't
>request more memory (this is a simplification) from the OS, so they take up
>fixed amounts of space in MultiFinder partitions.

As a matter of fact they are load order dependent.  Some applications
adjust when there isn't as much memory available as they want and some
do not.  Therefore I have to launch the apps which cannot adjust first
so I can be sure to get all the apps running that I want.  (In this
particular case it is Excel, Mathwriter and Word.  Word and Excel will
use less space if there is not enough available but Mathwriter just
won't launch if it is last.  That seems kind of load order dependent to
me).
>
>For example, on a 2 meg Mac, the OS takes up about 250k, the Finder takes up
>160k, Word wants 512, and Excel wants a meg.  (These are all the current 
       ^^^^^^^^^^^^^^
What version of Word is this?  The Word on the MAC right behind me is
668K and asks for 1Meg when it starts up.

>
>I'm sorry your secretary doesn't have access to reasonable Mac support.  I have
>a bunch of people on my network doing that sort of thing and they might have
>to wait 30 seconds or so for something to spool to disk so that it can be 
>printed in the background.

I hope you have a better background printer than the one supplied by
Apple.  When something is printing in the background I have found that
even scrolling thru text is painful.

>
>[comments on the inadequacy of Apple developer info deleted]

This was the best part of Thad's post!

I'm sure that Allen can tell me that if I do this, that, or the other
thing on the MAC that Multifinder works great.  But that only proves
that there is a difference between MAC tasking and multi-tasking because
on the Amiga multi-tasking always works well.

Paul.

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/16/91)

In article <1449@umvlsi.ecs.umass.edu> pswanson@umvlsi.ecs.umass.edu (Paul Swanson) writes:

>As a matter of fact they are load order dependent.  Some applications

No, they are not.  They are quit order dependent because of fragmentation, but
excepting an older version of Excel, they aren't load order dependent.

>adjust when there isn't as much memory available as they want and some

This is a different issue.  Some applications will run under memory conditions
of less memory available than the programmer decided was "recommended".

>do not.  Therefore I have to launch the apps which cannot adjust first
>so I can be sure to get all the apps running that I want.  (In this
>particular case it is Excel, Mathwriter and Word.  Word and Excel will
>use less space if there is not enough available but Mathwriter just
>won't launch if it is last.  That seems kind of load order dependent to
>me).

It seems load order dependent because Excel and Word probably need less memory
than Microsloth decided they should have.  MathWriter may _really_ need that
memory.  (As an aside, it probably isn't a good idea to run programs at under
their recommended memory size unless you know you're going to be working with
small files.)

>>
>>For example, on a 2 meg Mac, the OS takes up about 250k, the Finder takes up
>>160k, Word wants 512, and Excel wants a meg.  (These are all the current 
>       ^^^^^^^^^^^^^^
>What version of Word is this?  The Word on the MAC right behind me is
>668K and asks for 1Meg when it starts up.

This is Word 4.0 I am talking about.  Do a Get Info on the Word application icon
and look at the Suggested Memory Size number.  It should be 512.  Somebody 
upped the value for Application Memory Size on your copy, I think.

>I hope you have a better background printer than the one supplied by
>Apple.  When something is printing in the background I have found that
>even scrolling thru text is painful.

I'm opening myself up for a cheap shot here, but you can be sure that most
utilities provided by Apple aren't as good as third party alternatives (almost
by definition).  Print Monitor is a CPU hog, as is the Finder.  You can get
replacements for both.

>I'm sure that Allen can tell me that if I do this, that, or the other
>thing on the MAC that Multifinder works great.  But that only proves
>that there is a difference between MAC tasking and multi-tasking because
>on the Amiga multi-tasking always works well.

Tell me, are there default time slices for programs on the Amiga?  Are you 
telling me that all Amiga users run their machines stock?  Nobody uses
PD/shareware/commercial enhancements?  No custom setups?  If so, I'm impressed,
but saddened.  I'd hoped to play with things (I like tweaking.)

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/16/91)

In article <1445@umvlsi.ecs.umass.edu> pswanson@umvlsi.ecs.umass.edu (Paul
Swans
on) writes:

>How about this:  Try playing tetris while a document is printing in the
>background.  I tried this exactly once and found it to be quite
>irritating.  Oh, and as for importance, if this were possible I bet it
>would be one of the biggest uses of multi-tasking on the MAC!

Try a different spooler or try spooling to RAM if your spooler will let you
switch spool volumes.

Here's a chance for you advocates out there to wax melodic.  On the Mac there
is
a type of process called an INIT that multitasks with or without MultiFinder.
I have about 25 of these (I'm running a "lean" (for me) setup) active,
providing
services like screen saving, network mail and file service, a 
calendar/reminder program, and zillion minor utilities like pop-up menus,
a menuclock, macros, and keyboard shortcuts.

How is this stuff done on an Amiga?

yorkw@stable.ecn.purdue.edu (Willis F York) (01/16/91)

peter@sugar.hackercorp.com (Peter da Silva) writes:

>Multitasking continues, however that screen is locked (any task doing output
>to that screen is deferred) until you release that task. Programs that don't
>output to that screen (either they have their own screen or they're smart and
>spawned a task for display update) aren't affected.

I've noticed somthing "Silly/odd/ect.."
I was crunching some iff's with CRUNCH (By the Powerpacker guy)
and the prograqm ticks off a %filedone %gained, in th cli.

Works fine... BUT  Say i ACCIDENTLY type a char in the cli window.
(Without noticing it) the program will "pause" till i hit return
or delete the chars... 

This Seems to be somthing that SHOULDEN't happen....
I seem to remember that programs like Lharc ignore stuff typed in
and keep scrolling along....

Why does crunch act diffrently...

(could it of been i was using a AREXX script to crunch a BUNCH of Pics)

Just wondering..... Seems to "STOP" multiasking to me....

--
yorkw@ecn.purdue.edu  Willis F York    
----------------------------------------------
Macintosh... Proof that a Person can use a Computer all day and still
not know ANYTHING about computers. 

MBS110@psuvm.psu.edu (01/16/91)

In article <42568@ut-emx.uucp>, awessels@ccwf.cc.utexas.edu (Allen Wessels)
says:
>
>In article <1445@umvlsi.ecs.umass.edu> pswanson@umvlsi.ecs.umass.edu (Paul
>Swans
>on) writes:
>
>>How about this:  Try playing tetris while a document is printing in the
>>background.  I tried this exactly once and found it to be quite
>>irritating.  Oh, and as for importance, if this were possible I bet it
>>would be one of the biggest uses of multi-tasking on the MAC!
>
>Try a different spooler or try spooling to RAM if your spooler will let you
>switch spool volumes.
>
>Here's a chance for you advocates out there to wax melodic.  On the Mac there
>is
>a type of process called an INIT that multitasks with or without MultiFinder.
>I have about 25 of these (I'm running a "lean" (for me) setup) active,
>providing
>services like screen saving, network mail and file service, a
>calendar/reminder program, and zillion minor utilities like pop-up menus,
>a menuclock, macros, and keyboard shortcuts.
>
>How is this stuff done on an Amiga?

Simple enough. On a multitasking computer, there's no need to distinguish
between applications, "INITs," "desk accessories," the CLI, the "desktop,"
and so forth. All of these are just ordinary programs running concurrently.

If you want a program (any program) to be run every time you boot
the machine, you put its name in the Startup-Sequence -- an ordinary text file
on disk that lists programs that should be automatically run on startup.
I suppose this is the equivalent of an INIT, but you really can't compare
the two. (You could, for example, put DeluxePaint or WordPerfect in the
Startup-Sequence...)

The advantage is that no special programming tricks are required.
Macintosh desk accessories must be programmed to keep handing control
back to the main application "as often as possible," and INITs require
a lot of special writing, installation, and maintenance. On the Amiga,
whether you're writing a huge application or a menu-bar clock, you don't
need to use different techniques.

/Mark "Remixed for Common Household Appliances" Sachs - MBS110@psuvm.psu.edu\
|DISCLAIMER: These are all YOUR opinions, strangely enough.  ||   // AMIGA ||
|   "Can I speak to you privately, Doctor?" "All right..."   || \X/  Power ||
\== "Have you got a DEATH WISH?!!" -- Romana & The Doctor, Warrior's Gate ==/

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (01/16/91)

Somebody wimps about Mac attacks here, while providing the evidence to
substantiate most of the criticsms just leveled,

Thad Floryan [ thad@cup.portal.com ] writes:

> P.S. And before you start to reply, remember this IS
> comp.sys.amiga.ADVOCACY where one is expected to flame/be-flamed, and
> to tout the obvious superiority of the Amiga over everything else. As
> someone else recently stated, there oughta be a Federal law requiring
> everyone to buy/own an Amiga! :-)

Only one?  There should be at least one in each room of the house, and
several in the kitchen and family room.  [Firepower in the commode, yeah!]

skank@iastate.edu (Skank George L) writes:

> Things are starting to heat up kiddies!! :) Watch the sparks fly!! I
> love THIS new group! We should have done this a long time ago! Things
> will be really great when the B-Man gets back from break! I can't
> wait! (I can't believe I just said that!) :)

Why thank you. An amazing number of people, humorless gits to the last
man, woman, and child, complained about what a bad idea it would be to
provide a separate forum for these conversations. Heh!

> Fast cars, fast women, fast computers ...  (not necessarily in that order)

Yeah, but I got a woman with bucket seats, a computer with round heels,
and a car with a tendency to RAM.  Sigh.

                                                           /// It's Amiga
                                                          /// for me:  why
Kent, the man from xanth.                             \\\///   settle for
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>   \XX/  anything less?
--
Convener, COMPLETED comp.sys.amiga grand reorganization.

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (01/16/91)

> [Does Amiga multitasking work when menus are held open, windows moved, etc?]

Yep, I just did a cat /etc/termcap on my terminal emulator, flopped
screens, grabbed and held open a menu, flipped screens, and the listing
kept coming through. I slid the terminal screen down, grabbed the screen
behind, and moved some windows and the screen around; you can see the
(blitter?) processor contention in a change of listing speed, but the
listing kept arriving.

I also hit a requestor on my terminal emulator screen by accident
(grabbed the wrong screen's menu), saw the text display pause while I
satisfied the requestor, then catch up in a gulp when the requestor went
away; the text still was arriving through the modem, but the separate
display task was paused to avoid overwriting the requestor (not, in this
case a true requestor, but just a prompt in the same window); despite
Mike Meyer, being able to spawn independent threads within a single
program _is_ an important part of "true" multitasking.

I'm really loving the Mac responses here "yes, you have to load things in
the right order or they don't work; no, that doesn't make the Mac OS load
order dependent"; talk about trying to bail water with a sieve!

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (01/16/91)

es1@cunixb.cc.columbia.edu (Ethan Solomita) writes:

> Problem is, most tasks DON'T give up control. Mac programs have to be
> written to purposely give up control and many are still written badly
> enough to not work, MicroSoft being one of the worst culprits.

(Larry Rosenstein) at googy.apple.com writes:

> Not true. For most applications, there is nothing special you have to
> do in order to yield the CPU. It is a normal part of processing user
> input.

Bzzzzt!  Wrong answer, but thank you for playing our game.

Pausing for i/o is a separate consideration; the "cooperation" required
for cooperative multitasking is built into the OS i/o routines. Waiting
for i/o _is_ cooperating. It is the case of a routine that goes CPU
bound and doesn't bother to give back to the OS the chance to allow
another task to execute that differentiates cooperative from preemptive
multitasking.

For example, a Mandelbrot generator or Ray Tracer that draws to the
screen (potentially for hours) and doesn't have a "hey, OS, you need
some time?" at the top of some loop, locks up the machine completely in a
cooperative multitasking environment. In a preemptive environment, you
have to be malicious, not just careless, to sieze complete control of
the machine -- you have to deliberately turn off interrupts and never
restore them.

So long as you leave interrupts enabled, under preemptive multitasking
you don't have to ask the OS if it needs time, it will come and wrest
time away from you.

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (01/16/91)

burley@geech.ai.mit.edu (Craig Burley) writes:

> Anyone care to post whether this kind of scenario works on the Amiga?  I.e.
> when holding a menu down, or doing other purely user-interface things that
> aren't inherently resource intensive (like just holding a mouse button
> down without moving the mouse), does true multitasking keep working?
> My guess would be yes, it does.

peter@sugar.hackercorp.com (Peter da Silva) writes:

> Multitasking continues, however that screen is locked (any task doing
> output to that screen is deferred) until you release that task.

Yes, But be really careful to differentiate "task" from "program"; it is
the actual modification of screen pixels that is locked (and probably
only if you actually do it through the nice Intuition interfaces;
scribbling directly on the bitmaps yourself doesn't look lockable,
though you may then be scribbling on the menu rather than the (blitted
away?) area "under" it); the rest of the program's tasks go right on
executing. I tried the trick of listing /etc/termcap on my terminal
emulator, then grabbing a menu on the same screen; the listing stopped
being drawn, just as you say, but the characters kept being received
through the modem, and the display work stacked up; when I let the menu
go, the arrived text was blasted to the screen at the fastfonts inherent
maybe 40Kbytes per second rate, rather than the modem's 120 bytes per
second rate.

> Programs that don't output to that screen (either they have their own
> screen or they're smart and spawned a task for display update) aren't
> affected.

And parts of programs that aren't involved with screen changes keep
right on going. From the behavior I saw, I'd guess my emulator was
sending text display requests to Intuition as messages, and Intuition
was stacking the messages until the menu was released, then doing them
all as fast as possible. I'd guess that means I could stack up messages
until I ran out of memory. With /etc/termcap and the overhead of a
message, even 9 Megabytes may be too little room to hold open that menu
"forever".

> The only way to stop context switching is to call Forbid() or
> Disable() and sit in a busy-wait, or otherwise do something REAL
> stupid. Programs that do that don't tend to get good reviews in Amiga
> magazines.

And get toasted a bit in the c.s.a.* arena, too.  ;-)

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/16/91)

In article <91015.180746MBS110@psuvm.psu.edu> MBS110@psuvm.psu.edu writes:

>Simple enough. On a multitasking computer, there's no need to distinguish
>between applications, "INITs," "desk accessories," the CLI, the "desktop,"
>and so forth. All of these are just ordinary programs running concurrently.

Ok, that sounds neat.  You might be amused to find out that Apple is phasing 
out desk accessories and heading towards the "everything is just a program"
philosophy.

>If you want a program (any program) to be run every time you boot
>the machine, you put its name in the Startup-Sequence -- an ordinary text file
>on disk that lists programs that should be automatically run on startup.
>I suppose this is the equivalent of an INIT, but you really can't compare
>the two. (You could, for example, put DeluxePaint or WordPerfect in the
>Startup-Sequence...)
>
>The advantage is that no special programming tricks are required.
>Macintosh desk accessories must be programmed to keep handing control
>back to the main application "as often as possible," and INITs require
>a lot of special writing, installation, and maintenance. On the Amiga,
>whether you're writing a huge application or a menu-bar clock, you don't
>need to use different techniques.

OK, I think I probably prefer the Amiga way because it is more flexible, but
INITs have a couple of advantages.  For one thing, only certain kinds of 
programs are done as INITS and that helps distinguish among programs.  For
another, INIT code is often embedded in a CDEV which allows INITs to be 
configured through the control panel via a fairly uniform interface.

INITs also need no more tending that your Startup-Sequence.  All you need to do
to set them up is copy them to your System Folder and reboot.  Occasionally you
may get a conflict and need either to resequence them or figure out which ones
won't work together.  I've run as many as 50-60 together without a lot of 
trouble on a Mac Plus and still be able to run a WP and Telecomm program with
passable performance.

Awright, back to the Amiga.  Suppose you have a bunch of programs set in your
Startup-Sequence.  What determines priorities and how do you make sure programs
get the time they need to do their thing? 

mykes@zorch.SF-Bay.ORG (Mike Schwartz) (01/16/91)

In article <11719@goofy.Apple.COM> (Larry Rosenstein) writes:
>In article <1991Jan14.221532.4431@cunixf.cc.columbia.edu>, es1@cunixb.cc.columbia.edu (Ethan Solomita) writes:
>> 
>> 	Problem is, most tasks DON'T give up control. Mac
>> programs have to be written to purposely give up control and many
>> are still written badly enough to not work, MicroSoft being one
>> of the worst culprits. 
>
>Not true.  For most applications, there is nothing special you have to
>do in order to yield the CPU.  It is a normal part of processing user
>input.

goofy? how appropriate!  :):):):):):):)

mykes@zorch.SF-Bay.ORG (Mike Schwartz) (01/16/91)

In article <11721@goofy.Apple.COM> lsr (Larry Rosenstein) writes:
>In article <BURLEY.91Jan14110925@geech.ai.mit.edu>, burley@geech.ai.mit.edu (Craig Burley) writes:
>> 
>> Now switch to the Finder or some other app (perhaps even the comm app itself,
>> though mine, Microphone II, is smart enough to keep things going despite the
>> pulled-down menu -- if it is its own).
>> 
>> Now pull down a menu and hold it down for about five minutes.
>
>You will always be able to come up with a scenario in which the MultiFinder
>model breaks down.  But people don't pull down a menu and hold it for 5
>minutes, so MultiFinder works well most of the time.  For most people, that's
>what counts.  

Thos f us tht nvr wnt to the evln woodhead schl of spd rding might need
5 seconds to read a menu!  It might take even longer to figure out what the
menu items mean.

dfrancis@tronsbox.xei.com (Dennis Heffernan) (01/16/91)

In article <1991Jan16.015035.10356@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>Pausing for i/o is a separate consideration; the "cooperation" required
>for cooperative multitasking is built into the OS i/o routines. Waiting
>for i/o _is_ cooperating. It is the case of a routine that goes CPU
>bound and doesn't bother to give back to the OS the chance to allow
>another task to execute that differentiates cooperative from preemptive
>multitasking.
>
	StuffIt 1.5.1 has a little dialog box that opens when you run it, 
which slices and hands out the usual "here's who wrote this, it's shareware,
pay or die" bologna.  You click on it, and it goes away.  Fair enough.  That
is, it would be if the author hadn't decided to bypass the Macintosh Way of
Checking Input Events According to Cardinal Toolbox.  Instead of calling the
proper system routine, he peeked the mouse registers directly.  He thus
bypassed the normal MultiFinder piggybacks.

	My aforementioned Mac developer friend once started StuffIt 1.5.1 while
downloading some stuff over a network and walked away.  When he came back a 
while later, he discovered that StuffIt had not only stopped HIS machine, but
it had hung the network.

	This was over a DIALOG BOX, people.

	Pre-emptive Multitasking Is Your Friend.



dfrancis@tronsbox.xei.com   ...uunet!tronsbox!dfrancis     GEnie: D.HEFFERNAN1
------------------------------------------------------------------------------
"Using C will definitely cut your life expectancy by 10 years or more."
	-- Carl Sassenrath, GURU'S GUIDE TO THE COMMODORE AMIGA

pswanson@umvlsi.ecs.umass.edu (Paul Swanson) (01/17/91)

In article <42560@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <1449@umvlsi.ecs.umass.edu> pswanson@umvlsi.ecs.umass.edu (Paul Swanson) writes:
>
> [bunch of 'is too' 'is not' type arguments deleted]
>
>Tell me, are there default time slices for programs on the Amiga?  Are you 
>telling me that all Amiga users run their machines stock?  Nobody uses
>PD/shareware/commercial enhancements?  No custom setups?  If so, I'm impressed,
>but saddened.  I'd hoped to play with things (I like tweaking.)

Ah Ha!  You've fallen into my trap.  This thread started out as an
argument about who would notice the difference between preemptive and
non-preemptive multitasking.  I think the point was that a so called
average user couldn't tell the difference.  The examples I gave
attempted to demonstrate that the unsophisticated user could tell the
difference.  The response to this was that if you substitute this
program for that, flip this switch, or set some parameter to a different
value then Multifinder works just fine.  But, if you are sophisticated
enough to figure this stuff out you are also sophisticated enough to
appreciate the difference between preemptive and nonpreemptive
multitasking.  So basically I think EVERYBODY can tell the difference
between preemptive and nonpreemptive multitasking.

Paul.

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/17/91)

In article <1991Jan16.061816.15522@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:

>Thos f us tht nvr wnt to the evln woodhead schl of spd rding might need
>5 seconds to read a menu!  It might take even longer to figure out what the
>menu items mean.

Well, if you don't know what the menu items mean, either RTFM, or invoke the
menu item and examine the dialog it brings up or the effect it produces.  (Are
you trying to do serious work without even knowing how to use the program?)

You're telling me that THEORETICALLY the design is a problem.  I reply that 
IN PRACTICE, I don't encounter the problem.  I've been downloading  more than
usual and playing games in the foreground just to test some of these objections.
I have yet to lose a file and we're talking hourlong downloads.

andy@cbmvax.commodore.com (Andy Finkel) (01/17/91)

In article <42624@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>You're telling me that THEORETICALLY the design is a problem.  I reply that 
>IN PRACTICE, I don't encounter the problem.  I've been downloading  more than
>usual and playing games in the foreground just to test some of these objections.
>I have yet to lose a file and we're talking hourlong downloads.

OK, here's a practical use:

On the Amiga I often stop text from scrolling in the active window
by holding onto the right mouse button; this locks the layers
for the window, and scrolling stops, and I read the text.  When
I'm ready, I let up on the button; multitasking continues,
even though I'm hanging onto the menu button.  Just printing to
the current screen stops.

(I generally do this on BIX, start going through a conference with
 a READ CURR TO LAS and pause with the mouse; sure, I could use
 the keyboard if I wanted)

It's not a great example, but its sure a practical one :-)

		andy
-- 
andy finkel		{uunet|rutgers|amiga}!cbmvax!andy
Commodore-Amiga, Inc.

"God was able to create the world in only seven days because there
 was no installed base to consider."

Any expressed opinions are mine; but feel free to share.
I disclaim all responsibilities, all shapes, all sizes, all colors.

Larry.Rosenstein@Apple.COM (01/17/91)

In article <1991Jan16.015035.10356@zorch.SF-Bay.ORG>, xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
> 
> (Larry Rosenstein) at googy.apple.com writes:
> 
> > Not true. For most applications, there is nothing special you have to
> > do in order to yield the CPU. It is a normal part of processing user
> > input.
> 
> Bzzzzt!  Wrong answer, but thank you for playing our game.

Have you ever written a Mac application?  Most application do not have
to do anything special to multitask under MultiFinder.

> Pausing for i/o is a separate consideration; the "cooperation" required
> for cooperative multitasking is built into the OS i/o routines. 

Which means it isn't something the programmer has to worry about.

> for i/o _is_ cooperating. It is the case of a routine that goes CPU
> bound and doesn't bother to give back to the OS the chance to allow
> another task to execute that differentiates cooperative from preemptive
> multitasking.

No argument here.  But most applications are user-input bound, not CPU bound.

> For example, a Mandelbrot generator or Ray Tracer that draws to the
> screen (potentially for hours) and doesn't have a "hey, OS, you need
> some time?" at the top of some loop, locks up the machine completely in a

This is a case where you have to explicitly yield the CPU.  It's an extra
burden on the programmers, but it's not especially difficult to do this.
I've done this for DBW Render and for the PBMPLUS utilities.  Both
packages run in the background under MultiFinder.

eachus@aries.mitre.org (Robert I. Eachus) (01/17/91)

In article <42560@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:

   > Tell me, are there default time slices for programs on the Amiga?

   Yes, but not usually an issue.  It is unusual to have two tasks at
the same priority doing "number crunching," and care about the time
slice.

   > Are you telling me that all Amiga users run their machines stock?

   Gawd No!!! This is the ULTIMATE hacker machine, designed as such.

   > Nobody uses PD/shareware/commercial enhancements?  No custom
   > setups?  If so, I'm impressed, but saddened.  I'd hoped to play
   > with things (I like tweaking.)

   One nice feature of the Amiga culture (which includes a lot of
people at Commodore) is that the best replacement software be it PD,
shareware or commercial ends up in the next AmigaDOS.  (And in cases
where you don't think so, stay with the version you have.)  In the
early days of the Amiga 1000 doing a good job of tuning for your usage
pattern could improve throughput by about ten times.  A lot of this
stuff has found its way into the distribution version of
startup.sequence, but there are a lot more tricks you can try.
(Especially if you have a 6820 board or any 68030.  SetCPU from Dave
Haynie can give you a 2-4x throughput improvement by itself! It has
options to copy the ROMs into 32-bit FAST memory and turn on the data
caches.)


					Robert I. Eachus

   Amiga 3000 - The hardware makes it great, the software makes it
                awesome, and the price will make it ubiquitous.
--

					Robert I. Eachus

     When the dictators are ready to make war upon us, they will not
wait for an act of war on our part." - Franklin D. Roosevelt

andy@cbmvax.commodore.com (Andy Finkel) (01/18/91)

In article <42644@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <17685@cbmvax.commodore.com> andy@cbmvax.commodore.com (Andy Finkel) writes:
>I can see you've leveraged an aspect of the behavior of your OS into a useful 
>tool, but I don't see how that behavior is somehow better, or more efficent.
>Maybe I don't understand the example?


You wanted a practical example;  that what I gave, something that
I actually do that would be broken if our multitasking wasn't preemptive.

Yes, I could do something else; I could take my hand off
the mouse and use the keyboard, or I could scroll up in my review
buffer, but that's not what I want to do...I want to stop the
scroll using the mouse to read and/or ponder a line or two;
then I want to let scrolling continue.  I don't want to fool
around with back scroll.  I don't want to use the keyboard.

As I said, its not a great example, as I could change the way
I work.  But it does show there are differences between preemptive
and non-preemptive that can make a difference, and its hard to
make a statement like "No one would want to ..." and make it stick.
Someone will always want to "..."

		andy
-- 
andy finkel		{uunet|rutgers|amiga}!cbmvax!andy
Commodore-Amiga, Inc.

"God was able to create the world in only seven days because there
 was no installed base to consider."

Any expressed opinions are mine; but feel free to share.
I disclaim all responsibilities, all shapes, all sizes, all colors.

kdarling@hobbes.ncsu.edu (Kevin Darling) (01/18/91)

 burley@geech.ai.mit.edu (Craig Burley) writes about multitasking:
> Anyone care to post whether this kind of scenario works on the Amiga?  I.e.
> when holding a menu down, or doing other purely user-interface things that

 jbickers@templar.actrix.gen.nz (John Bickers) (and others) reply:
> If you do something that requires locking the display a task is using
> (menus, resizing, moving the window, etc), the task may be stopped
> until you release the mouse button (there are different ways of
> writing to a display - some care about locked displays, some don't).

Perhaps this could/should be changed.  It is always abhorent to me to
have a supposedly preemptive system have any processes stopped or held
due to fairly common (and possibly lengthy) user interactions.

Resize/move rubberband lines can be flicked on/off screen during an
interrupt, allowing any graphics output to otherwise continue on that
screen. I've done a windowing system like this; it works like a charm.

Menus are harder, but if programs use device-independent gfx calls
(that is, they don't directly diddle screen memory), then this
problem goes away also.  - kevin <kdarling@catt.ncsu.edu>

mykes@zorch.SF-Bay.ORG (Mike Schwartz) (01/18/91)

In article <42609@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <91015.180746MBS110@psuvm.psu.edu> MBS110@psuvm.psu.edu writes:
>
>>Simple enough. On a multitasking computer, there's no need to distinguish
>>between applications, "INITs," "desk accessories," the CLI, the "desktop,"
>>and so forth. All of these are just ordinary programs running concurrently.
>
>Ok, that sounds neat.  You might be amused to find out that Apple is phasing 
>out desk accessories and heading towards the "everything is just a program"
>

philosophy.
>
Sounds like apple is retrofitting another feature built in to every Amiga!
This is not the first time.  If this retrofit is as good as multifinder,
the amiga will still work better.

>>If you want a program (any program) to be run every time you boot
>>the machine, you put its name in the Startup-Sequence -- an ordinary text file
>>on disk that lists programs that should be automatically run on startup.
>>I suppose this is the equivalent of an INIT, but you really can't compare
>>the two. (You could, for example, put DeluxePaint or WordPerfect in the
>>Startup-Sequence...)
>>
>>The advantage is that no special programming tricks are required.
>>Macintosh desk accessories must be programmed to keep handing control
>>back to the main application "as often as possible," and INITs require
>>a lot of special writing, installation, and maintenance. On the Amiga,
>>whether you're writing a huge application or a menu-bar clock, you don't
>>need to use different techniques.
>
>OK, I think I probably prefer the Amiga way because it is more flexible, but
>INITs have a couple of advantages.  For one thing, only certain kinds of 
>programs are done as INITS and that helps distinguish among programs.  For
>another, INIT code is often embedded in a CDEV which allows INITs to be 
>configured through the control panel via a fairly uniform interface.
>
>INITs also need no more tending that your Startup-Sequence.  All you need to do
>to set them up is copy them to your System Folder and reboot.  Occasionally you
>may get a conflict and need either to resequence them or figure out which ones
>won't work together.  I've run as many as 50-60 together without a lot of 
>trouble on a Mac Plus and still be able to run a WP and Telecomm program with
>passable performance.
>
>Awright, back to the Amiga.  Suppose you have a bunch of programs set in your
>Startup-Sequence.  What determines priorities and how do you make sure programs
>get the time they need to do their thing? 
There are two ways a program on the Amiga can determine its priority.  One is
to allow the user to set it and the other is for the software to set it as it
thinks it needs to be.  When you run a program, it inherits the priority of
the CLI that spawned it (in this case, the CLI that is executing the
startup-sequence) and you can easily change the CLI's priority before running
as many programs as you want then change it again and run some more programs.

Also, the Amiga features pre-emptive multitasking.  This means that programs
running at the same priority get an equal share of the CPU time with the other
programs running at the same priority.  This even happens when you use a pull
down menu in one application (the others still run!).  Programs running at
high priorities only get the CPU when they need it.  Typical programs at any
priority spend more time not using the CPU than using it, especially when they
are waiting for input.  So you can have a very high priority program waiting
for input that uses NO cpu time while lower priority programs get all they need.
This is typical of a program editor that can change itself to high priority
for screen refreshes then change itself back to low priority while it does
other things (you want your refreshes to be fast so the machine has a snappy
response).  A term program can run at high priority and it will use NO cpu
time until a byte comes in to the serial port, then it will get ALL the CPU
time it needs to process the byte, then it will again use NO CPU time until
the next byte comes.

By the way, every program on my hard disk is as good as a desk accessory.
I can have a million desk accessories ready to use and still use ALL of
my Amiga's memory for any other purpose.  My Amiga never has just "passable"
performance due to the number of programs I have available.

I would not call typical Amiga applications INITs, because they relate more
closely to the way the Mac lets you automatically open application(s) when
you boot.  However, I do have programs that I run from my startup-sequence
that accelerate the mouse, provide screen blanking, allow me to read and
write MS-DOS 720K disks with AmigaDos commands (or from applications'
file requestors), allow access to ethernet networks, allow access to UUCP,
and a whole lot more.  These programs do resemble INITs.

I typically run all these inits, plus have a resident assembler, editor,
and linker, run DPaint with 10 screens of animation, and still have
2.89 Megs of RAM free.  I have not had to quit an application to make more
free memory for another application in years.

All this is on a 5 Meg machine.

Cheers!

bard@jessica.stanford.edu (David Hopper) (01/18/91)

In article <42516@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>
>Thanks, but it makes people who otherwise wouldn't be very productive with an
>IBM very much so with a Mac.  I've been using Macs and helping Mac users since
>1984.  It is a pretty useful machine.  Unfortunately, the same interface that
>helps those users also makes it difficult to maxmize the machine's potential.

I've been a Mac consultant for two years, so I can't claim to have the same 
level of expertise as you; but to be honest, and not to be caustic, this is
a cheesecake job.  Perhaps this is saying a lot, if simplicity is what you
need in a computer.  But I'll be damned if I consider the Macintosh a *serious*
productive computer, in the sense that it doesn't provide a useful *integrated*
work environment.  It is ideal for people who don't normally use computers,
or for those who are entranced by Apple's marketing barrage and cannot make
valued comparisons of *all* computer architectures and software design schemes.
>
>Like I said, just because you don't know how to use the machine doesn't mean
>it can't do the job.  Who suckered you into buying the Mac?  Any computer 
>user that buys a machine without giving it a workout on the kinds of tasks 
>that they expect of that machine deserves what they get.

I agree.
Like, perhaps, a $1000 Macintosh Classic?  C'mon; good business, perhaps, but
I see it more as highway robbery.  That damn thing can't do anything but look
good on a desk (and that's subject to opinion).

>Well, I think there is a difference between a flame and just a bunch whining.
>If the Amiga is the superior machine, it will win without a bunch of 
>uninformed dopes bad-mouthing a machine they don't know very much about.
>
>I'm very interested in what the Amiga CAN do and not very much interested in
>what some people THINK the Mac can't.

Just an extremely informed dope here, making a value judgement on what I KNOW
the Mac can't do, that the Amiga can.  Not that I don't enjoy my job; I mean,
didn't Sun Tzu once say "Know your enemy." ;-) ;-) ;-)

Dave Hopper      |      ///  Yesterday, CS.           | Academic Info Resources
                 | __  ///    Today, Anthropology.    | Mac & UNIX Sys-Support
bard@jessica.    | \\\///                             | "Somebody get me a job
   Stanford.EDU  |  \XX/ Tomorrow: napping in gutters.| with a computer I LIKE"

bruce@zuhause.MN.ORG (Bruce Albrecht) (01/18/91)

>
>Here's a chance for you advocates out there to wax melodic.  On the Mac there
>is
>a type of process called an INIT that multitasks with or without MultiFinder.
>I have about 25 of these (I'm running a "lean" (for me) setup) active,
>providing
>services like screen saving, network mail and file service, a 
>calendar/reminder program, and zillion minor utilities like pop-up menus,
>a menuclock, macros, and keyboard shortcuts.
>
>How is this stuff done on an Amiga?

We start them the way we start any background task from the CLI, using the run
command.  There's also a Workbench drawer in AmigaDos 2.0 that can be used for
those who are CLI-impaired.
--


bruce@zuhause.mn.org	   

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/19/91)

In article <1991Jan18.050529.13101@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:

>By the way, every program on my hard disk is as good as a desk accessory.
>I can have a million desk accessories ready to use and still use ALL of
>my Amiga's memory for any other purpose.  My Amiga never has just "passable"
>performance due to the number of programs I have available.

Well, I was talking about an 8Mhz 68000 machine there.  One thing people may not
realize is that Desk Accessories on the Mac do not take up processing time 
unless they've been run.  Think of them as a menu of small (generally) programs
you can run at any time without worrying about memory fragmentation issues etc.
(I know, the Amiga can do this with any program...)  I have 60 DAs available and
it could be 200 and still not affect the performance of the machine materially.

>I typically run all these inits, plus have a resident assembler, editor,
>and linker, run DPaint with 10 screens of animation, and still have
>2.89 Megs of RAM free.  I have not had to quit an application to make more
>free memory for another application in years.

I wish I could do in my 5 megs what you can do in yours.  The Mac has never been
the leanest machine in terms of price, memory, or CPU efficiency.  Its strength
has always been in putting a fairly powerful interface in the hands of people
who otherwise probably wouldn't be using computers, or would be using them as
"1-2-3 boxes" or "Word boxes".  Some people shouldn't be allowed within 10 feet
 of a CLI.

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/19/91)

In article <1991Jan18.085624.7710@portia.Stanford.EDU> bard@jessica.stanford.edu (David Hopper) writes:
>I've been a Mac consultant for two years, so I can't claim to have the same
>level of expertise as you; but to be honest, and not to be caustic, this is
>a cheesecake job.  Perhaps this is saying a lot, if simplicity is what you
>need in a computer.  But I'll be damned if I consider the Macintosh a
>*serious*
>productive computer, in the sense that it doesn't provide a useful
>*integrated*
>work environment.  It is ideal for people who don't normally use computers,

Could you define this, please?  One of the strong points of the Mac is supposed
to be its level of inter-application integration.  If you think the Mac is all
that simple, try playing around with ResEdit for a while.

Supporting Macs isn't as tough as say, supporting IBMs or Amigas.  However,
supporting the typical Mac user CAN be more difficult because that Mac user
expects to be able to run more programs than the typical IBM user.  I wonder 
what the profile of the typical Amiga user IS. 

>or for those who are entranced by Apple's marketing barrage and cannot make
>valued comparisons of *all* computer architectures and software design
>schemes.

You can't just compare architectures and software design and choose the best
machine.  You also have to consider what software is available for the machine,
your current installed base, and even the kinds of computers potential hirees
are likely to be familiar with.


>I agree.
>Like, perhaps, a $1000 Macintosh Classic?  C'mon; good business, perhaps, but
>I see it more as highway robbery.  That damn thing can't do anything but look
>good on a desk (and that's subject to opinion).

What can't you do on a Classic?  Please be specific.  (I already know about
its lack of color, thanks.)  Oh, and that price should be closer to $1300 for
the 2 meg RAM, 40 meg HD configuration.

>Just an extremely informed dope here, making a value judgement on what I KNOW
>the Mac can't do, that the Amiga can.  Not that I don't enjoy my job; I mean,
>didn't Sun Tzu once say "Know your enemy." ;-) ;-) ;-)

The question isn't whether the machine can do what you are used to doing on 
your machine (do you have the equivalent of ResEdit on the Amiga?), but how
suitable the machine is for a broad range  of tasks, OR whether it is best
suited for a particular set of tasks.

new@ee.udel.edu (Darren New) (01/19/91)

In article <7536@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:
>That's how the console device supports typeahead without getting output mixed
>up with input: when you type in the screen it blocks output until you enter
>a whole line. Other programs are not effected. I thought it was kind of
>clever, actually.

I prefer the method used in CP-V, namely that the input you type ahead
does not echo until it is read.  Looking at a hardcopy or a screen, you
cant tell whether any given character was typed ahead or not. -- Darren

-- 
--- Darren New --- Grad Student --- CIS --- Univ. of Delaware ---
----- Network Protocols, Graphics, Programming Languages, 
      Formal Description Techniques (esp. Estelle), Coffee, Amigas -----
              =+=+=+ Let GROPE be an N-tuple where ... +=+=+=

nsw@cbnewsm.att.com (Neil Weinstock) (01/19/91)

In article <7523@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:
>In article <BURLEY.91Jan14110925@geech.ai.mit.edu> burley@geech.ai.mit.edu (Craig Burley) writes:
>> Anyone care to post whether this kind of scenario works on the Amiga?  I.e.
>> when holding a menu down, or doing other purely user-interface things that
>> aren't inherently resource intensive (like just holding a mouse button
>> down without moving the mouse), does true multitasking keep working?
>> My guess would be yes, it does.
>
>Multitasking continues, however that screen is locked (any task doing output
>to that screen is deferred) until you release that task. Programs that don't
>output to that screen (either they have their own screen or they're smart and
>spawned a task for display update) aren't affected.

Then again, for specialized applications, you can use dual-playfield mode,
and the menus can work at the same time as the rest of the screen.  My
Asteroids program (which I really oughtta get in shape for distribution one of
these days) uses the top playfield for Intuition, and does the animation on
the bottom.  When you pull up a menu, the animation continues without missing
a beat, right underneath the menus.  The background of the menus is also
transparent, so you see the rocks floating around behind the menus.  It's a
great multitasking example, apart from being flat-out cool.

                                   - Neil

--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--
Neil Weinstock @ AT&T Bell Labs        //     What was sliced bread
att!edsel!nsw or nsw@edsel.att.com   \X/    the greatest thing since?

peter@sugar.hackercorp.com (Peter da Silva) (01/19/91)

In article <42731@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
> Well, I was talking about an 8Mhz 68000 machine there.

So are we.

> One thing people may not
> realize is that Desk Accessories on the Mac do not take up processing time 
> unless they've been run.

And Amiga programs don't take up any processing time unles they're actively
doing something. A copy of "Emacs" sitting in a background window takes up
zero CPU time. Even when it's got a window open it doesn't take up CPU
time until you start using it.

> I have 60 DAs available and it could be 200 and still not affect the
> performance of the machine materially.

Well, except for the RAM they take up.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

skank@iastate.edu (Skank George L) (01/19/91)

In article <42516@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>
>Unfortunately, Mac developers (at least the ones doing major apps) are 
>pretty sloppy about code size and applications can't
>request more memory (this is a simplification) from the OS, so they take up
>fixed amounts of space in MultiFinder partitions.

     Whew!!  For a moment, I thought Amiga developers were the only ones that
wrote sloppy code.
--

George L. Skank			|
skank@iastate.edu		|Fast cars, fast women, fast computers...
Senior, Electrical Engineering	|(not necessarily in that order)

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/19/91)

In article <7540@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:

>Well, except for the RAM they take up.

DAs take up very little RAM until they are invoked.  I _think_ they are are 
loaded into the System heap, which gets expanded dynamically.  I don't know
the technical limitations on DAs are, but I have DAs for all the basics: text
editing, spreadsheet, term, and simple database.  There's even a DA to run
HyperCard stacks.

It may be a kludgey OS, but it seems to work.

mykes@zorch.SF-Bay.ORG (Mike Schwartz) (01/19/91)

In article <42731@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <1991Jan18.050529.13101@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:
>
>>By the way, every program on my hard disk is as good as a desk accessory.
>>I can have a million desk accessories ready to use and still use ALL of
>>my Amiga's memory for any other purpose.  My Amiga never has just "passable"
>>performance due to the number of programs I have available.
>
>Well, I was talking about an 8Mhz 68000 machine there.  One thing people may not
>realize is that Desk Accessories on the Mac do not take up processing time 
>unless they've been run.  Think of them as a menu of small (generally) programs
>you can run at any time without worrying about memory fragmentation issues etc.
>(I know, the Amiga can do this with any program...)  I have 60 DAs available and
>it could be 200 and still not affect the performance of the machine materially.
>
Do Desk Accessories take up RAM or not?  You can fit 200 desk accessories in 
memory at the same time?  (Just a question ...).  Also, programs that reside
entirely on disk require NO cpu time either.  I could also point out that
the standard Amiga is 7.14 MHz and is slower than your 8MHz machine.  However,
the copper and blitter give it an effective rate of about 10MHz while the
Mac has wait states that reduce it's 8MHz to effectively about 5, but even
as it may be, the 7.14 MHz machine has more than passable performance all
the time.

>>I typically run all these inits, plus have a resident assembler, editor,
>>and linker, run DPaint with 10 screens of animation, and still have
>>2.89 Megs of RAM free.  I have not had to quit an application to make more
>>free memory for another application in years.
>
>I wish I could do in my 5 megs what you can do in yours.  The Mac has never been
>the leanest machine in terms of price, memory, or CPU efficiency.  Its strength
>has always been in putting a fairly powerful interface in the hands of people
>who otherwise probably wouldn't be using computers, or would be using them as
>"1-2-3 boxes" or "Word boxes".  Some people shouldn't be allowed within 10 feet
> of a CLI.

Unfortunately, there will be 80Million CLI based PC machines by 1992, and
ALL those people seem to be able to deal with the CLI.  The Amiga is a 
natural machine for all those people familiar with MS-DOS because the CLI
environment is similar enough on the Amiga and because you can run more than
one at a time.  I would like to think, however, that the Amiga provides a 
little more than the PC does in the way of user interface (WIMP), and a lot
more in terms of standard configuration (copper, blitter, 4096 colors, mouse,
multitasking, (and a list that goes on and on and on and on... ).

The only thing that is keeping the Amiga from being the best 1-2-3 or Word
box is Lotus and Microsoft.  You can also blame CBM...

We both agree that the Mac would be nicer if you could do more in less
memory.  We also both agree that the Mac has a superior user interface,
even if it requires significant effort to program and is near impossible
to port from.

es1@cunixb.cc.columbia.edu (Ethan Solomita) (01/19/91)

In article <1991Jan18.231330.16290@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>es1@cunixb.cc.columbia.edu (Ethan Solomita) writes:
>
>>>In article <11719@goofy.Apple.COM> (Larry Rosenstein) writes:
>>>>Not true.  For most applications, there is nothing special you have to
>>>>do in order to yield the CPU.  It is a normal part of processing user
>>>>input.
>>>
>
>
>>	Larry, we already know that MultiFinder can do Task
>>Switching. If it is waiting for input, WHAT'S THE POINT?? It
>>isn't doing anything. ergo, that doesn't help multitasking. While
>>the spreadsheet is calculating or the ray-tracer is tracing, that
>>is when "true-multitasking" is tested.
>
>  Who says that a spreadsheet recalculating or ray-tracer shouldn't be
>checking for user input?
>
	This is MULTIFINDER we're talking about! multi-threading?
I doubt it. It would be relatively easy on Amiga, but no one that
I know of does it on either platform.

>-- 
>------------------------------------------------------------------------------
>Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
>Fame, fame, fame...  What's it good for?  Ab-so-lute-ly nothing


	-- Ethan

	"What a waste it is to lose one's mind,
or not to have a mind... How true that is."

	-- Dan Quayle, of course. Our beloved Vice President.
	It's just too easy!

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/20/91)

In article <1991Jan19.035418.15192@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:

>Do Desk Accessories take up RAM or not?  You can fit 200 desk accessories in 
>memory at the same time?  (Just a question ...).  Also, programs that reside

As I understand them, desk accessaries reside primarily on disk with a pointer
to the code on disk.    The desk accessory is invoked via a menu.

>entirely on disk require NO cpu time either.  I could also point out that
>the standard Amiga is 7.14 MHz and is slower than your 8MHz machine.  However,
>the copper and blitter give it an effective rate of about 10MHz while the
>Mac has wait states that reduce it's 8MHz to effectively about 5, but even
>as it may be, the 7.14 MHz machine has more than passable performance all
>the time.

First, the "passable" performance I was talking about was on a 2.5 meg Mac Plus
running 50-60 INITs with 2-3 applications under MultiFinder.  Among those INITs
were a network mail server, a peer to peer file server, online spelling checker,
and a bunch of other stuff.

Every machine I've ever used had some sort of performance limits, and I like to
see how far I can push it before I have to "dumb it down".  I find it hard to
believe that you can't load the Amiga up in the same way.  (Rhetorical, I KNOW
it could be done.)

>Unfortunately, there will be 80Million CLI based PC machines by 1992, and
>ALL those people seem to be able to deal with the CLI.  The Amiga is a 

WRONG.  Most of those people know how to type "123", "dir a:", and "copy 
a:filename.ext b:", but ALL 80 million do NOT know how to use a CLI.  Add to
that the fact that, on average, they run fewer programs on their CLI-only
machine than the comparable GUI user does.

>natural machine for all those people familiar with MS-DOS because the CLI
>environment is similar enough on the Amiga and because you can run more than

Uh, the CLI on the Amiga may be similar to DOS AFTER you have mastered the 
Amiga CLI, but when a friend of mine started setting up his 500 we had a LOT
of problems trying to use our DOS experience.

>one at a time.  I would like to think, however, that the Amiga provides a 
>little more than the PC does in the way of user interface (WIMP), and a lot
>more in terms of standard configuration (copper, blitter, 4096 colors, mouse,
>multitasking, (and a list that goes on and on and on and on... ).

With 16 Mhz 286s with 256 color VGA and Windows machines running around $1500,
some of those advantages are starting to blur.

>We both agree that the Mac would be nicer if you could do more in less
>memory.  We also both agree that the Mac has a superior user interface,
>even if it requires significant effort to program and is near impossible
>to port from.

I'm no "real" programmer, but I've written BASIC programs for both the IBM and
the Mac.  The Mac programs are a little more difficult to work with because you
have to add the interface, but if I can do it, I suspect any programmer whose
techniques haven't petrified can learn to adapt.  I set up one of the BASIC
utilities I wrote to background and it took no extra code.  This may be a 
result of how the BASIC compiler handles the code, but it can be done, and 
easily.  (Of course, I STILL don't know why it executes faster in the 
background than in the foreground.)

Porting is just a matter of what your development enviroment supports.  If you
had one that shared a common library of calls with the mac end, you could port
just fine.  Ask Microsoft how they do it.

mykes@zorch.SF-Bay.ORG (Mike Schwartz) (01/20/91)

In article <42792@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <1991Jan19.035418.15192@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:
>
>>Do Desk Accessories take up RAM or not?  You can fit 200 desk accessories in 
>>memory at the same time?  (Just a question ...).  Also, programs that reside
>
>As I understand them, desk accessaries reside primarily on disk with a pointer
>to the code on disk.    The desk accessory is invoked via a menu.
>
>>entirely on disk require NO cpu time either.  I could also point out that
>>the standard Amiga is 7.14 MHz and is slower than your 8MHz machine.  However,
>>the copper and blitter give it an effective rate of about 10MHz while the
>>Mac has wait states that reduce it's 8MHz to effectively about 5, but even
>>as it may be, the 7.14 MHz machine has more than passable performance all
>>the time.
>
>First, the "passable" performance I was talking about was on a 2.5 meg Mac Plus
>running 50-60 INITs with 2-3 applications under MultiFinder.  Among those INITs
>were a network mail server, a peer to peer file server, online spelling checker,
>and a bunch of other stuff.
>
I think you might be able to run 2 or 3 applications on a 2.5 Meg Amiga and
still have lots of RAM left and still have zero performance problem.  As you
add programs to the Amiga, you just use up the RAM they need.  Applicatons
that are waiting for input take ZERO cpu time, so there is NO performance
decrease.  Naturally, if you start 2 ray tracing programs at the same time,
they will take just a tad longer than if you ran one and let it finish and
then ran the other, but the system does exactly what you expect.  The only thing
that pushes the Amiga, performance-wise, is trying to do a ton of 3-d type
stuff in real time, just something that NO 68000 could do no matter how
well it was programmed.

>Every machine I've ever used had some sort of performance limits, and I like to
>see how far I can push it before I have to "dumb it down".  I find it hard to
>believe that you can't load the Amiga up in the same way.  (Rhetorical, I KNOW
>it could be done.)
>
>>Unfortunately, there will be 80Million CLI based PC machines by 1992, and
>>ALL those people seem to be able to deal with the CLI.  The Amiga is a 
>
>WRONG.  Most of those people know how to type "123", "dir a:", and "copy 
>a:filename.ext b:", but ALL 80 million do NOT know how to use a CLI.  Add to
>that the fact that, on average, they run fewer programs on their CLI-only
>machine than the comparable GUI user does.
>
I wish all you had to do was type 1-2-3 on the Amiga, but there is no such 
program.  Blame it on Lotus.  Blame it on CBM.  You can do "dir a:" on the
Amiga, and almost any other MS-DOS command (read that MS-DOS command, not
invocation for an Application).  Anybody who wishes that MS-DOS had MORE
RAM usable, or multitasking, or whatever, should graduate to the Amiga
(this is .advocacy...).  And no matter how you slice it, 80 Million is
still 1/3 of the US population and is still 10x the number of Macs and
Amigas combined...  Too bad we are the only enlightened ones (SARCASM intened
here).  But all those unenlightened do productively use those machines,
or they would stop selling.

>>natural machine for all those people familiar with MS-DOS because the CLI
>>environment is similar enough on the Amiga and because you can run more than
>
>Uh, the CLI on the Amiga may be similar to DOS AFTER you have mastered the 
>Amiga CLI, but when a friend of mine started setting up his 500 we had a LOT
>o

f problems trying to use our DOS experience.
>
Has either of you ever set up a DOS machine?
>>one at a time.  I would like to think, however, that the Amiga provides a 
>>little more than the PC does in the way of user interface (WIMP), and a lot
>>more in terms of standard configuration (copper, blitter, 4096 colors, mouse,
>>multitasking, (and a list that goes on and on and on and on... ).
>
>With 16 Mhz 286s with 256 color VGA and Windows machines running around $1500,
>some of those advantages are starting to blur.
>
A more realistic way of phrasing this is that the disadvantages of the PC are
starting to blur.  Remember, the features of the Amiga come STOCK with EVERY
machine sold.  You do not have to spend an extra dime on any one of them.  Those
who bought STOCK PCs a year ago or more have had to spend extra money to get
similar, if not as powerful features.  I gave up on the PC a long time ago
when I realized how medicore it would always be (640K used to be enough RAM).
I sure wish I could put 64MB of RAM on my AT&T 6300 like I can on my Amiga.
Don't get me wrong, what they have done with the PC is impressive, because it
should have died a long time ago, but somehow they have always managed to
breath new life into it (faster CPUs, graphics, mice, WIMP interfaces).  But
if you are a software developer for the PC, you have to write lots of software
just to support the different mice, video adapters, sound boards, operating
system environments, etc.  Then you get to work on what the application does.
One last point, with VGA, you get 256 colors, and with HAM you get 4096.
AT THE SAME TIME.  And a 16MHz 286 is still running programs written for
an 8-bit 8088 99% of the time.  I hardly call it an advantage.  If you want
to compare the best of both worlds, compare a 25MHz 68040 with a 25MHz 486 and
you will find that the 486 is half as powerful.

>>We both agree that the Mac would be nicer if you could do more in less
>>memory.  We also both agree that the Mac has a superior user interface,
>>even if it requires significant effort to program and is near impossible
>>to port from.
>
>I'm no "real" programmer, but I've written BASIC programs for both the IBM and
>the Mac.  The Mac programs are a little more difficult to work with because you
>have to add the interface, but if I can do it, I suspect any programmer whose
>techniques haven't petrified can learn to adapt.  I set up one of the BASIC
>utilities I wrote to background and it took no extra code.  This may be a 
>result of how the BASIC compiler handles the code, but it can be done, and 
>easily.  (Of course, I STILL don't know why it executes faster in the 
>background than in the foreground.)
>
>Porting is just a matter of what your development enviroment supports.  If you
>had one that shared a common library of calls with the mac end, you could port
>just fine.  Ask Microsoft how they do it.

Microsoft is a multibillion dollar company.  They can put a large team of
engineers on each version.  They do it with hard work and lots of programmer
hours.  Given those resources, it is easy to port.  But if you are not as
wealthy, it is much more painful.  Learning to Adapt to the Mac is a 3 year
learning curve for even the best of programmers (to become fully competant
at the entire set of OS calls).  This does petfrify me.  On the other hand,
the Amiga is quite easy to port to from the PC or Unix or the ST (in 'C').
I think you underestimate how difficult it is to support a library of calls
with the Mac end.  I have ported from the Mac to the Amiga and even though
the CPUs are both 68000, you either have to rewrite significant parts of the
MAC OS to run on the Amiga, or you have to rewrite the application from
scratch.  Either choice is a big loss. 

peter@sugar.hackercorp.com (Peter da Silva) (01/20/91)

In article <1991Jan18.231330.16290@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>   Often, when a spreadsheet is calculating a huge file, or running a
> macro, you want to move around and see other parts of the spreadsheet,

>   Or given a ray-tracer.   I have (on occasion) ray-traced 1024 x 1024
> pictures - but I only have a 640 x 480 monitor.  So I often need to
> move around (i.e. scroll-bars, i.e. checking for user input)

On the Amiga you'd do that by splitting the program into a compute engine
and a user interface task. The compute engine runs at full speed without
having any code in the main loop to check for user interaction, and the
user interface task just sits there waiting for input taking up no CPU time
until you need it.

Amiga... working smarter means working faster.

>   Does this slow the program down?

>   Yes

On the Mac it does. On the Amiga it doesn't.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/20/91)

In article <42792@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
> Every machine I've ever used had some sort of performance limits, and I like
> to see how far I can push it before I have to "dumb it down".  I find it hard
> to believe that you can't load the Amiga up in the same way.

Sure you can, but it takes a lot more work because you don't hit the limits
until you run out of RAM or CPU, instead of running out of reserved chunks of
RAM and because you have too many programs all spinning on the event loop.

My 3000 has 1.5 MEG, and I haven't run out yet except for when I tried to run
AmigaVision: which came free with the machine and given its minimum
requirements of 3 MEG (!) was worth every cent.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

davewt@NCoast.ORG (David Wright) (01/21/91)

In article <1991Jan19.035418.15192@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:
>Unfortunately, there will be 80Million CLI based PC machines by 1992, and
>ALL those people seem to be able to deal with the CLI.  The Amiga is a 
	But many of the PC's out there are not used by people who us the
DOS command line, but stay only in a menuing system or program selector like
Uniplex, the DOS 4.0 Shell, etc. And I have seen MANY IBM's that were set up to
load 1-2-3 at boot time,  and if you tried to use the "Quit" option just
executed 1-2-3 again so the user couldn't get to the command line (without
knowing what they were doing). You have to remember MOST of the PC compat
machines sold for the first half of that type of machines life were sold 
for use in business, not home, and I would bet that that is STILL the majority
of sales or of sales related to people buying for use at home what they have
at work so that they can work at home.
>We both agree that the Mac would be nicer if you could do more in less
>memory.  We also both agree that the Mac has a superior user interface,
>even if it requires significant effort to program and is near impossible
>to port from.
	I have to disagree there. I haven't seen anyting that the Mac has in
it's UI that isn't in AmigaDOS 2.0, or couldn't be put in there by a very
simple utility. Doing so would NOT be a "hack" but would simply be adding a
feature to the UI without forcing people to have it all the time. I know I
HATE the Mac window open/close functions, with there annoying growing/shrinking
boxes. When I click a window to open close it, it should close ASAP. Under
2.0 you can have all kinds of nice utilities that use the "Commodities Exchange"
to do things like blank the screen or accellerate the mouse, and not run into
any problems utilities fighting amongst themselves.
	And in fact, there are MANY features of AmigaDOS 2.0 that the Mac
UI lacks.

			Dave

lron@easy.hiam (Dwight Hubbard) (01/21/91)

In article <1991Jan21.055854.14130@rice.edu>, Shawn Joel Dube writes:

> Seriously, I think cooperative is better. Take the following for example:
> Two task are running.  One is waiting on a keypress (via OS subroutine)
> and the other is doing some serious number-crunching.  With the Amiga, valuable
> time is being spent doing nothing (waiting for a keypress).  With co-op
> multitasking, almost all of the cpu time is spent with the number cruncher.

Ahh, the keyboard on the Amiga is interupt driven and NO time will be spent
waiting for a keypress.  The task waiting for the keypress will be WAITing
until the OS receives the keypress and puts it back on the READY que.  Since
the task is waiting it gets no CPU until a key is pressed and correct me if
I'm wrong but I believe the Mac does poll the keyboard so some CPU time is
wasted checking for keypresses even if none have arrived.
CDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD?
3 Dwight Hubbard                     3 USENET  : uunet!easy!lron             3
3 Kaneohe, Hawaii                    3 GT-Power: 029/004              (lron) 3
3                                    3 CFR     : 31:910/101 (Dwight Hubbard) 3
@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDY

rjc@geech.ai.mit.edu (Ray Cromwell) (01/21/91)

In article <1991Jan21.004720.25985@ncsuvx.ncsu.edu> kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
>>> [Mac example: scrolling around while raytracing.]
>
>So the speed diff is only related to the (Mac GetEvent delay x number of
>times) it's called; versus the (Amiga tick routine delay x number of times)
>it's done.  Unless we know those timings, speed claims are meaningless.
>Perhaps there's a better example?  - kevin <kdarling@catt.ncsu.edu>

  A better example of Preemptive vs cooperative multitasking may be
in the continuity of preemptive multitasking. For equal priority
tasks on the Amiga using all of their time-slice, tasks will run at the
same speed. Consider this preemptive cycle chart.

*=Cycle

  Amiga   Time --->
Task A  |********        ********        ********        ********>
Task B  |        ********        ********        ********        >

  Mac   
Task A  |*****               **     ****** *************  **  ***>
Task B  |     ***************  *****      *             **  **   >

  Mac multitasking cycles will be highly irregular in a heavily loaded 
system. I suspect that loading a Mac up with time consuming tasks will make
the system very jerky, while the Amiga will only slow down. (assuming
no high priority tasks block out lower tasks, or something blocks the
display for long periods of time.)

 In my own opinion cooperative multitasking is not multitasking, simply
because its not very transparent. How far do you draw the line in
defining multitasking? Can Commodore 64's considered to be multitasking 
because you can put music, and other programs in the IRQ interupt? Can
I consider a computer to be multitasking, if all software on the system is
written using co-routines to call other software programs?

 Where is the line drawn? I consider the line to be put at preemptive.
Why? Well because I'm considering a task to be an entity which should be
allowed to run without voluntarily giving up its control. Consider a
benchmark. Benchmarks on the Mac vs Amiga may be unfair, because
Mac benchmarks can take all the CPU for its test, while Amiga benchmarks
actually test the system's peformance as a whole. I also don't consider
the Mac to be multitasking since it hasn't been multitasking from the 
beginning.
  Can Mac programs talk to each other? send signals, semaphores? Can they
share files, disc resources? Can the Mac update screen windows that are
behind other windows without bringing them to front?
  The Amiga's OS was designed with multitasking from the start. It contains
all the facilities to support full blown multitasking and sharing of
machine resources.
  Some of the things that make life on the Amiga easier are
Devices, Libraries, and Handlers (all sharable.) On the Amiga, I can
'mount MSH:' and presto, my drive now supports MS-DOS which can be
used with ALL programs. I can also MOUNT NET: and use external
Amiga's devices as if they were my own (yea, yea, AppleTalk can do this too).
I dunno, I guess I'm biased. I've used IBMs,STs, C64/128, Vic20, Trs-80,
Cocos, Macs, and the Amiga is the funnest and best development environment
I've used.

jsd@wahoo.rice.edu (Shawn Joel Dube) (01/21/91)

In article <12880@life.ai.mit.edu>, rjc@geech.ai.mit.edu (Ray Cromwell) writes:
|> 
|> *=Cycle
|> 
|>   Amiga   Time --->
|> Task A  |********        ********        ********        ********>
|> Task B  |        ********        ********        ********        >
|> 
|>   Mac   
|> Task A  |*****               **     ****** *************  **  ***>
|> Task B  |     ***************  *****      *             **  **   >
|> 
 
Nice chart.

|>  In my own opinion cooperative multitasking is not multitasking, simply
|> because its not very transparent. 

The multi-tasking on our school's Sun Sparcs is sometimes noticible so
does that mean they don't have multitasking? :)  

Seriously, I think cooperative is better. Take the following for example:
Two task are running.  One is waiting on a keypress (via OS subroutine)
and the other is doing some serious number-crunching.  With the Amiga, valuable
time is being spent doing nothing (waiting for a keypress).  With co-op
multitasking, almost all of the cpu time is spent with the number cruncher.

Yes, I agree it would make the system somewhat unstable but I don't consider
this a problem except when playing games or doing animation.


|>   Can Mac programs talk to each other? send signals, semaphores? 

If programmed to do so, yes.  I believe in the next release of the Mac OS,
the ability to have something like Window's Dynamic Data Link will exist
that the Amiga (correct if I'm wrong) doesn't have.

|> Can they share files, disc resources? 

I'll have to pass on that one.

|> Can the Mac update screen windows that are
|> behind other windows without bringing them to front?

Yes.

-- 
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
r     ___     _                                          r
r    /__     | \           N U K E   I R A Q ! ! !       r
r   ___/hawn |__\ube       -----------------------       r
r  jsd@owlnet.rice.edu                                   r
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

pcooper@eecs.wsu.edu (Phil Cooper - CS495) (01/21/91)

In article <1991Jan21.055854.14130@rice.edu> jsd@wahoo.rice.edu (Shawn Joel Dube) writes:
>In article <12880@life.ai.mit.edu>, rjc@geech.ai.mit.edu (Ray Cromwell) writes:
>|> 
>|> *=Cycle
>|> 
>|>   Amiga   Time --->
>|> Task A  |********        ********        ********        ********>
>|> Task B  |        ********        ********        ********        >
>|> 
>|>   Mac   
>|> Task A  |*****               **     ****** *************  **  ***>
>|> Task B  |     ***************  *****      *             **  **   >
>|> 
> 
>Nice chart.
>
>|>  In my own opinion cooperative multitasking is not multitasking, simply
>|> because its not very transparent. 
>
>Seriously, I think cooperative is better. Take the following for example:
>Two task are running.  One is waiting on a keypress (via OS subroutine)
>and the other is doing some serious number-crunching.  With the Amiga, valuable
>time is being spent doing nothing (waiting for a keypress).  

    Of course, this is just wrong...  If one task is waiting on a key press,
no CPU time is consumed by it.  If the program is written correctly (without
a polling loop or some such nonsense), it merely waits.  When the key is 
pressed, the task is signalled and it continues.  So, as you can see, no time
is being wasted.  Also, please check your facts before posting trash like this.
It really angers me (and others) when misinformation is spread under the
pretense of truth.

    Have a nice day...
    Phil Cooper

farren@well.sf.ca.us (Mike Farren) (01/21/91)

awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>As I understand them, desk accessaries reside primarily on disk with a pointer
>to the code on disk.    The desk accessory is invoked via a menu.

You do not understand them.  Desk accessories become part of the system
file, unless you are running a utility like "Suitcase".  They absolutely
take up RAM.

>With 16 Mhz 286s with 256 color VGA and Windows machines running around $1500,
>some of those advantages are starting to blur.

Nope.  They're getting clearer, as you find that you STILL can't get the
capability of a $500 Amiga 500 on anything short of a $1500 '386 machine,
and you can't get some of them even then.

>Porting is just a matter of what your development enviroment supports.

Get a life.  You don't understand porting at ALL.  A common library of
calls does NOTHING for you if you don't have the OS underneath those
calls.  How, for example, would you propose to simulate CreateProc() on
a Mac?  Or, for that matter, GetResource() on an Amiga?  You can't.

Sure, you can move BASIC programs back and forth, mostly.  But BASIC
is very far from being generally useful, and NEVER the language of
choice for professional work.

-- 
Mike Farren 				     farren@well.sf.ca.us

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/22/91)

In article <22780@well.sf.ca.us> farren@well.sf.ca.us (Mike Farren) writes:
>awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>>As I understand them, desk accessaries reside primarily on disk with a pointer
>>to the code on disk.    The desk accessory is invoked via a menu.
>
>You do not understand them.  Desk accessories become part of the system
>file, unless you are running a utility like "Suitcase".  They absolutely
>take up RAM.

I don't think you understand them either.  Just because a resource (in this 
case a DA) is loaded into the System file does NOT mean that it is loaded into
RAM.  That is the whole idea behind using resources.  They are loaded as 
necessary, and the memory is released when the resource is not needed.  (This
is an oversimplification of course.)

One of the annoying things about these discussions is that advantages and
disadvantages of the various systems are exaggerated.  Just because the Mac 
doesn't have Amiga memory management doesn't mean that it has none at all.

>>With 16 Mhz 286s with 256 color VGA and Windows machines running around $1500,
>>some of those advantages are starting to blur.
>
>Nope.  They're getting clearer, as you find that you STILL can't get the
>capability of a $500 Amiga 500 on anything short of a $1500 '386 machine,
>and you can't get some of them even then.

Who ever said that computer manufacturers had to compete on a model for model
basis?  Everybody and their dog has already agreed that the 500 is one of the
best bang/$ computer available.

>>Porting is just a matter of what your development enviroment supports.
>
>Get a life.  You don't understand porting at ALL.  A common library of
>calls does NOTHING for you if you don't have the OS underneath those
>calls.  How, for example, would you propose to simulate CreateProc() on
>a Mac?  Or, for that matter, GetResource() on an Amiga?  You can't.

As I understand porting, there are very few cases in which SOME of the code does
not have to be rewritten.  As usual in these discussions, some people can't
control themselves enough to omit certain kinds of comments.  I never said 
porting was a simple matter of recompiling the source on the new machine.

>Sure, you can move BASIC programs back and forth, mostly.  But BASIC
>is very far from being generally useful, and NEVER the language of
>choice for professional work.

I guess I wasn't clear in pointing out that I knew BASIC wasn't a great 
example.  I suppose if you are careful with your definition of professional,
BASIC is NEVER the language of choice.  Maybe you should advise Microsoft to
stop selling their high-end BASIC development systems.

jsd@boreal.rice.edu (Shawn Joel Dube) (01/22/91)

In article <1991Jan21.101849.13078@eecs.wsu.edu>, pcooper@eecs.wsu.edu (Phil Cooper - CS495) writes:
|> >|> 
|> >|> *=Cycle
|> >|> 
|> >|>   Amiga   Time --->
|> >|> Task A  |********        ********        ********        ********>
|> >|> Task B  |        ********        ********        ********        >
|> >|> 
|> >|>   Mac   
|> >|> Task A  |*****               **     ****** *************  **  ***>
|> >|> Task B  |     ***************  *****      *             **  **   >
|> >|> 
|> > 
|> >Nice chart.
|> >
|> >|>  In my own opinion cooperative multitasking is not multitasking, simply
|> >|> because its not very transparent. 
|> >
|> >Seriously, I think cooperative is better. Take the following for example:
|> >Two task are running.  One is waiting on a keypress (via OS subroutine)
|> >and the other is doing some serious number-crunching.  With the Amiga, valuable
|> >time is being spent doing nothing (waiting for a keypress).  
|> 
|>     Of course, this is just wrong...  If one task is waiting on a key press,
|> no CPU time is consumed by it.  If the program is written correctly (without
|> a polling loop or some such nonsense), it merely waits.  When the key is 
|> pressed, the task is signalled and it continues.  So, as you can see, no time
|> is being wasted.  Also, please check your facts before posting trash like this.
|> It really angers me (and others) when misinformation is spread under the
|> pretense of truth.

Assuming the chart above is correct, time is allocated to each process equally.
Any idiot can see that Task A gets just as much time as Task B, even if Task A
is simply waiting for a keypress.  

I didn't make the chart, so if it's wrong, don't blame me for spreading false
information.  Blame the person who made the chart.


|> 
|>     Have a nice day...
|>     Phil Cooper

-- 
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
r     ___     _                                          r
r    /__     | \           N U K E   I R A Q ! ! !       r
r   ___/hawn |__\ube       -----------------------       r
r  jsd@owlnet.rice.edu                                   r
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

doubt@spotted.rice.edu (Douglas Benjamin Triggs) (01/22/91)

In article <1991Jan21.055854.14130@rice.edu>, jsd@wahoo.rice.edu (Shawn Joel
Dube) writes:

|> |>   Amiga   Time --->
|> |> Task A  |********        ********        ********        ********>
|> |> Task B  |        ********        ********        ********        >
|> |> 
|> |>   Mac   
|> |> Task A  |*****               **     ****** *************  **  ***>
|> |> Task B  |     ***************  *****      *             **  **   >
|> |> 

|> Seriously, I think cooperative is better. Take the following for example:
|> Two task are running.  One is waiting on a keypress (via OS subroutine)
|> and the other is doing some serious number-crunching.  With the Amiga,
|> valuable time is being spent doing nothing (waiting for a keypress).  With
|> co-op multitasking, almost all of the cpu time is spent with the number
|> cruncher.
 
No, a program running under AmigaOS would not waste any time doing nothing
(waiting for that keypress).  It would skip that task and do the others,
unless the programmer is a complete idiot (which, alas, some seem to be).
A more accurate graph would be:

  Amiga   Time --->
Task A  |****        **                            ****        ****>
Task B  |    ****      ****    ****    ****    ****        ****    >
Task C  |        ****      ****    ****    ****        ****        >
                       ^ point A                 ^ point B

(Where task A is waiting for a keypress between points A and B.)

The operating system only runs tasks which are on the "ready" list, not ones
that are waiting for an external event...

|> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
|> r     ___     _                                          r
|> r    /__     | \           N U K E   I R A Q ! ! !       r
|> r   ___/hawn |__\ube       -----------------------       r
|> r  jsd@owlnet.rice.edu                                   r
|> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Doubtfully yours,
--my name here--

--- doubt@owlnet.rice.edu --- GM # 8400000E
       _ _
doubt ////    o MacIntosh, adj., idiotic, braindead, terminally       __  /|
 _ _ ////       stupid.  Usage:  "That manual is 'macintosh'"         \'o.O'
 \\\X///        see also:  useless; overpriced; ripoff                =(___)=
  \XXX/       o Lotus, v., synonym for "sucks."  Usage:  "Lotus          U
                (sucks)."  see also:  federal juristiction invol-
"O.A.M.I.P."    ving CD's, state borders, and immoral purposes       Oop! Ack!

jsd@boreal.rice.edu (Shawn Joel Dube) (01/22/91)

In article <1991Jan21.205623.3867@rice.edu>, doubt@spotted.rice.edu (Douglas Benjamin Triggs) writes:
|> In article <1991Jan21.055854.14130@rice.edu>, jsd@wahoo.rice.edu (Shawn Joel
|> Dube) writes:
|> 
|> |> |>   Amiga   Time --->
|> |> |> Task A  |********        ********        ********        ********>
|> |> |> Task B  |        ********        ********        ********        >
|> |> |> 
|> |> |>   Mac   
|> |> |> Task A  |*****               **     ****** *************  **  ***>
|> |> |> Task B  |     ***************  *****      *             **  **   >
|> |> |> 
|> 

|> No, a program running under AmigaOS would not waste any time doing nothing
|> (waiting for that keypress).  It would skip that task and do the others,
|> unless the programmer is a complete idiot (which, alas, some seem to be).
|> A more accurate graph would be:
|> 
|>   Amiga   Time --->
|> Task A  |****        **                            ****        ****>
|> Task B  |    ****      ****    ****    ****    ****        ****    >
|> Task C  |        ****      ****    ****    ****        ****        >
|>                        ^ point A                 ^ point B
|> 
|> (Where task A is waiting for a keypress between points A and B.)
|> 

Now compare Doug's chart to the one above.  Which does it most look like?  I would
say that it looks mostly like the Mac's becuase each task is not getting eqaul
CPU time.  

|> 
|> Doubtfully yours,
|> --my name here--
|> 
|> --- doubt@owlnet.rice.edu --- GM # 8400000E
|>        _ _
|> doubt ////    o MacIntosh, adj., idiotic, braindead, terminally       __  /|
|>  _ _ ////       stupid.  Usage:  "That manual is 'macintosh'"         \'o.O'
|>  \\\X///        see also:  useless; overpriced; ripoff                =(___)=
|>   \XXX/       o Lotus, v., synonym for "sucks."  Usage:  "Lotus          U
|>                 (sucks)."  see also:  federal juristiction invol-
|> "O.A.M.I.P."    ving CD's, state borders, and immoral purposes       Oop! Ack!

-- 
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
r     ___     _                                          r
r    /__     | \           N U K E   I R A Q ! ! !       r
r   ___/hawn |__\ube       -----------------------       r
r  jsd@owlnet.rice.edu                                   r
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

davewt@NCoast.ORG (David Wright) (01/22/91)

In article <1991Jan21.055854.14130@rice.edu> jsd@wahoo.rice.edu (Shawn Joel Dube) writes:
>
>Seriously, I think cooperative is better. Take the following for example:
>Two task are running.  One is waiting on a keypress (via OS subroutine)
>and the other is doing some serious number-crunching.  With the Amiga, valuable
>time is being spent doing nothing (waiting for a keypress).  With co-op
>multitasking, almost all of the cpu time is spent with the number cruncher.
	You obviously don't know anything about the Amiga. When any task is
waiting for the keyboard, or the mouse, or anything else, it uses NO time.
It is waiting for a signal to occur, and until one does, and the task
scheduler decides the signal needs to goto that task, that process takes
ZERO time. So in fact, the number cruncher on the Mac would get LESS time,
as it has to execute calls to see if other tasks need to run instead of just
doing it's number crunching, and letting the OS switch tasks when the
crunchers time is up (which is at a USER determined time, NOT just because
the program called a function whose only purpose is to task switch,
as long as there is another task to run, whether the user wanted it to run
or not).
>If programmed to do so, yes.  I believe in the next release of the Mac OS,
>the ability to have something like Window's Dynamic Data Link will exist
>that the Amiga (correct if I'm wrong) doesn't have.
	You are wrong. An Amiga program can be notified any time just about
any object is changed (a file, a directory, a window, etc.). For example, you
can drag an icon into the icon editor's window while the program is running
and the icon editor will know to edit that icon.


			Dave

bruce@zuhause.MN.ORG (Bruce Albrecht) (01/22/91)

>In article <42609@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <91015.180746MBS110@psuvm.psu.edu> MBS110@psuvm.psu.edu writes:
>Awright, back to the Amiga.  Suppose you have a bunch of programs set in your
>Startup-Sequence.  What determines priorities and how do you make sure programs
>get the time they need to do their thing? 

You set the priority of the spawning task to the priority you want the background
task to run at, asynchronously start the background task with RUN, and set your
priority for the next task.  There's at least one PD utility that does all that
for you.  You may have some programs never get executed, if there's enough stuff
running at a higher priority, but that's operator error.
--


bruce@zuhause.mn.org	   

farren@well.sf.ca.us (Mike Farren) (01/22/91)

I, my very flawed self, wrote:

>awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>>As I understand them, desk accessaries reside primarily on disk with a pointer
>>to the code on disk.    The desk accessory is invoked via a menu.

>You do not understand them.  Desk accessories become part of the system
>file, unless you are running a utility like "Suitcase".  They absolutely
>take up RAM.

No, *I* don't understand them.  Should have looked it up in Inside Mac,
instead of posting a knee-jerk pseudo-knowledgable response at 4:00 A.M.

Sorry - it's been pointed out to me by several that DAs do not take up
space in the system file - only pointers to them and their disk locations
do.  Still think the "infinite DAs" of the Amiga are better, though :-)

-- 
Mike Farren 				     farren@well.sf.ca.us

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/23/91)

In article <22820@well.sf.ca.us> farren@well.sf.ca.us (Mike Farren) writes:

>Sorry - it's been pointed out to me by several that DAs do not take up
>space in the system file - only pointers to them and their disk locations

They DO take up space in the System if you aren't using Suitcase or 
MasterJuggler.  The deal is that the System isn't entirely loaded into RAM.
Before I used SuitCase, I had System files in the 3-4 meg range on 1 meg Mac
Pluses.  The System still only took up 200-300k.  Fonts and Desk Accesories
were loaded as needed and the resources purged as others were called.

>do.  Still think the "infinite DAs" of the Amiga are better, though :-)

As a matter of fact, so do I.  Maybe we'll see them in a couple of years on the
Mac.  (I'm just glad my Mac's motherboard will take 128 meg, 'cause I think I'll
be needing it.)

daveh@cbmvax.commodore.com (Dave Haynie) (01/23/91)

In article <42828@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:

>>to compare the best of both worlds, compare a 25MHz 68040 with a 25MHz 486 and
>>you will find that the 486 is half as powerful.

>Given the leap-frogging nature of chips, I've never considered the best at any
>particular time a good comparison of machines.  I figure the 030 and the 486 are
>the chips to compare 

Given similarly creative systems around them, an '030 + '882 does roughly 1/2 
the amount of work that a '486 does at the same speed, integer-wise, and maybe
1/3 the work, floating-point wise.  For example, Personal Workstation found the
HP 50MHz 68030 machines to run just a tad faster than similarly equipped 25MHz 
80486 machines.  Under UNIX, at least.  Of course, a good 50MHz system is much
more expensive to build than a good 25MHz system, which is why a more modern
chip architecture, like the '486 or '040, can approach the cost of an older
system of similar performance even before the price on the new parts starts
dropping (you don't really see this in the PClone market, since there aren't 
any 50MHz '386s to compare to the 25MHz '486s).

>(and I still wouldn't take a 486 running Windows over an 030 Amiga or Mac.)

Pointing out, of course, that CPU speed isn't the whole ball of wax.  

-- 
Dave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: hazy     BIX: hazy
	"What works for me might work for you"	-Jimmy Buffett

doubt@elf.rice.edu (Douglas Benjamin Triggs) (01/23/91)

In article <1991Jan21.221744.5966@rice.edu>, jsd@boreal.rice.edu (Shawn Joel
Dube) writes:

|> |> |> |>   Amiga   Time --->
|> |> |> |> Task A  |********        ********        ********        ********>
|> |> |> |> Task B  |        ********        ********        ********        >
|> |> |> |> 
|> |> |> |>   Mac   
|> |> |> |> Task A  |*****               **     ****** *************  **  ***>
|> |> |> |> Task B  |     ***************  *****      *             **  **   >
|> |> |> |> 
|> |> 
|> 
|> |> No, a program running under AmigaOS would not waste any time doing
|> |> nothing (waiting for that keypress).  It would skip that task and do the
|> |> others, unless the programmer is a complete idiot (which, alas, some seem
|> |> to be).  A more accurate graph would be:
|> |> 
|> |>   Amiga   Time --->
|> |> Task A  |****        **                            ****        ****>
|> |> Task B  |    ****      ****    ****    ****    ****        ****    >
|> |> Task C  |        ****      ****    ****    ****        ****        >
|> |>                        ^ point A                 ^ point B
|> |> 
|> |> (Where task A is waiting for a keypress between points A and B.)
|> |> 
|> 
|> Now compare Doug's chart to the one above.  Which does it most look like?
|> I would say that it looks mostly like the Mac's becuase each task is not
|> getting equal CPU time.  
|> 
|> -- 
|> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
|> r     ___     _                                          r
|> r    /__     | \           N U K E   I R A Q ! ! !       r
|> r   ___/hawn |__\ube       -----------------------       r
|> r  jsd@owlnet.rice.edu                                   r
|> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

The graphs are not what I would call "similar."  The Mac's tasking is jerky,
and the Amiga's is somewhat smoother (to say the least).  In any case, on
the Amiga, no program can take exclusive control of the CPU unless it does
something special, while on the Mac, an incorrectly written program can
easily do this, unless it does something special to avoid it.

Doubtfully yours,
--my name here--

--- doubt@owlnet.rice.edu --- GM # 8400000E
       _ _
doubt ////    o MacIntosh, adj., idiotic, braindead, terminally       __  /|
 _ _ ////       stupid.  Usage:  "That manual is 'macintosh'"         \'o.O'
 \\\X///        see also:  useless; overpriced; ripoff                =(___)=
  \XXX/       o Lotus, v., synonym for "sucks."  Usage:  "Lotus          U
                (sucks)."  see also:  federal juristiction invol-
"O.A.M.I.P."    ving CD's, state borders, and immoral purposes       Oop! Ack!

daveh@cbmvax.commodore.com (Dave Haynie) (01/23/91)

In article <1991Jan21.055854.14130@rice.edu> jsd@wahoo.rice.edu (Shawn Joel Dube) writes:

>Seriously, I think cooperative is better. 

I think you got that backwards...

>Take the following for example:
>Two task are running.  One is waiting on a keypress (via OS subroutine)
>and the other is doing some serious number-crunching.  With the Amiga, 
>valuable time is being spent doing nothing (waiting for a keypress).  

On the Amiga, no time is spent waiting for a keypress.  If a task needs to
wait synchronously for some I/O event, it is suspended, consuming no CPU time,
until the I/O operation has completed.

>With co-op multitasking, almost all of the cpu time is spent with the number 
>cruncher.

The co-op system may indeed point the CPU at the crunching task.  So will the
Amiga OS, since the I/O bound tasks are waiting for I/O interrupts and signals
before they get rescheduled.  Now you press a key.  The Amiga will get an 
interrupt, the waiting task will get signaled and, assuming its at the same or
high priority than the CPU bound task, it'll get activated during the next
time slice.  On the co-op system, one of two things happens.  Either the CPU
bound task must have some event monitor subroutine in somewhere, wasting CPU
time each time its called, or the I/O blocking task will have to wait for the
CPU bound task to complete before processing the keypress.  In either case,
the Amiga gets the same combination of CPU and I/O bound tasks done faster,
guaranteed, than the co-op system.

>If programmed to do so, yes.  I believe in the next release of the Mac OS,
>the ability to have something like Window's Dynamic Data Link will exist
>that the Amiga (correct if I'm wrong) doesn't have.

Under 2.0x (which is out on the A3000 now, unlike Apple's System 7.0), the
Amiga has facilities which do the same kind of thing.  One such facility is
file notification.  Basically, this does the data linking via the filesystem,
which happens to be the way many programs already handle this kind of problem.
On Macs, Amigas, and other systems, you very often have a collection of 
programs to manipulate the various pieces of one final product.  For example,
a document processing program may import graphics from a drawing program and
charts from a spreadsheet.  When dealing with multitasking, multiuser, or
networked systems, it became clear some time back that a simple file import
mechanism could easily leave you with stale data.  Because the files only get
updated, at best, when an application is started up.  On the Amiga, an 
application can not only import a file, but ask the filesystem to send it a
message if that file ever changes.  So if you change drawings over a network
and I flip over to my spreadsheet and change the graph in the aforementioned
example, when I flip back to the documentation processor, it'll already have
the new versions there waiting for me if it knows about notification.

-- 
Dave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: hazy     BIX: hazy
	"What works for me might work for you"	-Jimmy Buffett

torrie@cs.stanford.edu (Evan J Torrie) (01/23/91)

jbickers@templar.actrix.gen.nz (John Bickers) writes:
>    No. Programs can set their own priorities, however, and the input
>    handling task runs at a higher priority than anything else (so if
>    you raise an application's priority to, say, 1 (normal is 0), then
>    you will still get input).

  Can you explain the "input handling" task?  Do programs spin off an
input-handler thread (this is how OS/2 programs are written if I
recall)?

>    A number of programs display some intelligence about what priority
>    to use automatically (like editors that edit at priority 1, or
>    executable packers that crunch at priority -1, etc). And some can
>    be configured.

  "Some" can be configured?  Is there an all-purpose "nice" command?

>    The input handling task runs at a priority of 20, and this is what
>    handles using Intuition, so at that level interactive use stays
>    reasonable.

-- 
------------------------------------------------------------------------------
Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
"And remember, whatever you do, DON'T MENTION THE WAR!"

jbickers@templar.actrix.gen.nz (John Bickers) (01/23/91)

Quoted from <1991Jan21.072642.23587@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
>   How does the Amiga handle priorities for interactive tasks?  e.g. if
> I have a word processor in the foreground, in which I'm scrolling
> around, typing characters in etc, can you guarantee that it gets more
> time (by setting it to a higher priority) than background tasks?  Is

    Yes, the user can set priorities.

> that handled automatically by the system (i.e. recognising interactive
> tasks)?

    No. Programs can set their own priorities, however, and the input
    handling task runs at a higher priority than anything else (so if
    you raise an application's priority to, say, 1 (normal is 0), then
    you will still get input).

    A number of programs display some intelligence about what priority
    to use automatically (like editors that edit at priority 1, or
    executable packers that crunch at priority -1, etc). And some can
    be configured.

    The input handling task runs at a priority of 20, and this is what
    handles using Intuition, so at that level interactive use stays
    reasonable.

> Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

jbickers@templar.actrix.gen.nz (John Bickers) (01/23/91)

Quoted from <1991Jan21.073234.23885@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
>   With a preemptive multitasking system, you would still have the same
> problem on a heavily loaded system.  The screen saver would run to the
> end of its timeslice, then the other programs would run to the end of
> their timeslices, and you'd still get that pause in the animation
> while the other programs are running.

    Animation programs, sound programs, and comms programs doing
    downloads are more candidates for automatically moving into higher
    priority ranges.

> Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

jbickers@templar.actrix.gen.nz (John Bickers) (01/23/91)

Quoted from <1991Jan21.132909.18488@ncsuvx.ncsu.edu> by kdarling@hobbes.ncsu.edu (Kevin Darling):
> In <1991Jan21.004720.25985@ncsuvx.ncsu.edu> I contend:
> >> So the speed diff is only related to the (Mac GetEvent delay x number of
> >> times) it's called; versus the (Amiga tick routine delay x number of times)
> >> it's done.  Unless we know those timings, speed claims are meaningless.
> 
> >jbickers@templar.actrix.gen.nz (John Bickers) replies:
> > Having the ray tracer do one of these GetEvent() calls must have
> > more of a relative effect on the ray tracer than having another
> > task in the wait list under Exec.
> 
> "Must have"?  Again, without timing data such statements are meaningless
> conjecture.  If say, the GetEvent() took 10us to figure out there was no
> events/tasks, and the regular Amiga tick interrupt routine took 20us,

    This is somewhat askew... I said "more of a relative effect". By this
    I mean:

    Suppose the Mac tracer rendered a scene in N seconds if it didn't
    call GetEvent() every so often. Adding GetEvent() calls must
    increase the rendering time (unless someone's finally gotten
    those thiotimoline (sp?) chips working :).

    Now suppose the Amiga tracer rendered a scene in N seconds with M
    idle tasks on the machine. Adding another task to do what the
    GetEvent() call was supposed to accomplish (user interface stuff)
    has the same cost as adding any other task - whether it's connected
    with the tracer or not. So the "relative" affect is zero - the
    extra interface has the same cost as any other task sitting idle.

    The Amiga N may be greater than the Mac N, and adding a task may
    increase the Amiga N more than adding GetEvent()s increases the
    Mac N, but this extra cost isn't "the tracer", it's the same as
    adding any other task.

    (On a related note, you can simply boost the tracer's priority as
    required to reduce the M value above).

> I fully agree!  At the same time, we just didn't have enough info to make
> a claim that preemptive = faster in the given example. In fact, I'd bet that

    Yeah. Multitasking at all implies some overhead that a single-tasking
    system isn't going to have. This is the price we pay for convenience.

    Xoper reports figures that look really bad re CPU usage during
    CPU intensive things. Anyone know how accurate Xoper can be assumed
    to be?

> That kind of kneejerk reaction can make all claims suspect.  best - kev
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

jbickers@templar.actrix.gen.nz (John Bickers) (01/23/91)

Quoted from <42858@ut-emx.uucp> by awessels@ccwf.cc.utexas.edu (Allen Wessels):
> BASIC is NEVER the language of choice.  Maybe you should advise Microsoft to
> stop selling their high-end BASIC development systems.

    It was interesting to read a claim by Gates (sp?) once that he could
    implement anything (my memory is vague) in BASIC faster than anyone
    else who used any other language.

    Did anyone ever take him up on that?
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

davewt@NCoast.ORG (David Wright) (01/23/91)

In article <1991Jan22.200035.29996@rice.edu> jsd@arcadien.rice.edu (Shawn Joel Dube) writes:
>
>But the Amiga's tasking is still jerky.
	You obviously haven't seen it, or you saw it used be someone who
had their task priorities screwed up royally. The Amiga seems to do the best
task switching of any system I have used (Unix/Xenix/Minix, OS-9, Mac, NeXT,
Windows, etc.). Since by default all tasks run at the same priority,
tasks tend to not be jerky, but rather everything runs more slowly. Of course
the user is free to adjust the priorities to improve the time on more critical
tasks (which you can't do on the Mac). And even at a higher priority, most
tasks need to do something like wait for data from the [keyboard|mouse|serial]
device, and so give up the CPU during times when the user won't notice the
task switch.
>|> In any case, on
>|> the Amiga, no program can take exclusive control of the CPU unless it does
								^^^^^^^^^^^^^^
>|> something special, while on the Mac, an incorrectly written program can
^^^^^^^^^^^^^^^^^^^^^^
>|> easily do this, 
>
>I feel that that feature *should* exsist (program taking over complete control)
	Read what he said. He didn't say it was impossible (and almost all
commercial "arcade-type" programs do), he said that you had to specifically
ASK to do so, whereas on the Mac you must specifically ALLOW a task switch
(outside of system calls).
>the display might be distorted (slowed or jerky).  I have yet to encounter a Mac program
>that took full control.  In fact, old programs (written when the Mac was first released)
>work properly when used in MultiFinder.
	Hogwash. The older the Mac program is, the more likely it is to use
busy loops for timing (many games for the Mac won't run correctly on
faster machines. I know. Running them under AMax II on my 25Mhz 030 many
are unplayable because the programmer was to [lazy|stupid|ignorant] to
do timing via a hardware clock.) And under MultiFinder (which I use
exclusively when running AMax) many programs (not just games) hog the CPU
and the task in the front tends to get more CPU time than the others, which
may (and in my normal mode IS) be the incorrect thing to do.
	As another example of the brain-deadness of MultiFinder, consider
that you have to stop MultiFinder to make a system file change, then restart
all the applications you have running. This is rediculous. On the Amiga you
can change any system preference, and not only do things continue to operate,
but any program that wants to know about the changes can be automatically
notified, and start taking advantage of them right away.


				Dave

peter@sugar.hackercorp.com (Peter da Silva) (01/23/91)

In article <1991Jan21.004720.25985@ncsuvx.ncsu.edu>, kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
> > On the Amiga you'd do that by splitting the program into a compute engine
> > and a user interface task. The compute engine runs at full speed without
> > having any code in the main loop to check for user interaction, and the
> > user interface task just sits there waiting for input taking up no CPU time
> > until you need it.

> So the speed diff is only related to the (Mac GetEvent delay x number of
> times) it's called; versus the (Amiga tick routine delay x number of times)
> it's done.  Unless we know those timings, speed claims are meaningless.
> Perhaps there's a better example?  - kevin <kdarling@catt.ncsu.edu>

This assumes that all you're doing is running the computation. The context
here is multitasking, and running the ray-trace in the background. So, the
difference in speed comes up in a couple of ways:

	1. The compute-intensive program has a smaller main loop.
	   The main loop may also have no subroutine calls in it,
	   which greatly simplifies the task of optimising it because
	   it never has to worry about aliasing.

	2. Most of the time most of the programs on the Amiga are
	   quiescent, and aren't even on the ready queue. So the
	   only thing taking away from the compute task is the
	   vertical blank interrupt (the tick routine). 

	   The Mac system, on the other hand, runs through all the
	   other tasks in the system that call GetNextEvent, every
	   time. It also frequently makes tours through the code
	   for programs that call WaitNextEvent.

The Amiga allocates available resources much more efficiently than the Mac:
I'm currently using my stock Amiga 1000. 7.16 MHz 68000, 512K. I can multitask
effectively and usefully in this environment, using real programs. In fact
I have 243K free right now. I don't think anyone would claim that you could
even run multifinder in a similarly equipped Mac.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/23/91)

In article <1991Jan21.055854.14130@rice.edu> jsd@wahoo.rice.edu (Shawn Joel Dube) writes:
> Two task are running.  One is waiting on a keypress (via OS subroutine)
> and the other is doing some serious number-crunching.  With the Amiga, valuable
> time is being spent doing nothing (waiting for a keypress).  With co-op
> multitasking, almost all of the cpu time is spent with the number cruncher.

I think you have things backwards. On the Amiga a task waiting for a keypress
takes up zero CPU time. Not "almost no" CPU time, Zero. It's not even on the
ready queue. It's in a wait state. On the Mac a program waiting for a keypress
has to sit there and handle all the events coming into it from WaitNextEvent.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/23/91)

In article <1991Jan21.072642.23587@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
> I have a word processor in the foreground, in which I'm scrolling
> around, typing characters in etc, can you guarantee that it gets more
> time (by setting it to a higher priority) than background tasks?

Yes.

> Is that handled automatically by the system (i.e. recognising interactive
> tasks)?

No.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/23/91)

In article <1991Jan21.073234.23885@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>   With a preemptive multitasking system, you would still have the same
> problem on a heavily loaded system.  The screen saver would run to the
> end of its timeslice, then the other programs would run to the end of
> their timeslices, and you'd still get that pause in the animation
> while the other programs are running.

Not at all, that's what priorities are all about. The Amiga doesn't use
a strict round-robin scheduler.

I hope your screen saver uses delays after each screen instead of chucking
out displays as fast as it can. What does it do on a faster CPU?
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/23/91)

In article <42858@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
> Maybe you should advise Microsoft to
> stop selling their high-end BASIC development systems.

I have.

When I discovered that Microsoft is using Basic as a macro language in Windows
I nearly puked.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

awessels@ccwf.cc.utexas.edu (Allen Wessels) (01/24/91)

In article <1991Jan23.044023.4829@NCoast.ORG> davewt@NCoast.ORG (David Wright) writes:
>ASK to do so, whereas on the Mac you must specifically ALLOW a task switch
>(outside of system calls).

Some people out there may get the impression that Mac programmers somehow 
constantly have to remind themselves of this requirement.  It is second nature
for most of them.  You take as much CPU as you need and you pass it on.

>	Hogwash. The older the Mac program is, the more likely it is to use
>busy loops for timing (many games for the Mac won't run correctly on

Well, the other day I accidentally launched MacWrite 1.0 (1984) on this Mac IIsi
and it ran just fine (I'm using multifinder.)

>faster machines. I know. Running them under AMax II on my 25Mhz 030 many
>are unplayable because the programmer was to [lazy|stupid|ignorant] to
>do timing via a hardware clock.) And under MultiFinder (which I use

It is a bad habit, but one I've seen in programs for many machines.  If, for 
some reason, you WANT to play those games, check out either Sludge or 
SpeedChopper.  They'll waste CPU time until things are slow enough for you.

>	As another example of the brain-deadness of MultiFinder, consider
>that you have to stop MultiFinder to make a system file change, then restart
>all the applications you have running. This is rediculous. On the Amiga you
>can change any system preference, and not only do things continue to operate,
>but any program that wants to know about the changes can be automatically
>notified, and start taking advantage of them right away.

Exactly what changes are you thinking of?  I can add and remove DAs with Font/
DA Mover, and fonts with another utility.  Some applications don't check to see
if the system config has changed (and, as far as I know there isn't a way to 
notify them of this change), but they CAN do it.

Just as an example, while running this term session I ran ResEdit, opened the 
System file, added an FKEY and saved the change.  The FKEY was immediately
available.  At the very least, I didn't "have" to stop MultiFinder or restart
the term session.

What kinds of System preferences are you talking about on the Amiga?  I don't
know what the analagous (if they exist) examples would be on the Mac.  Most 
preferences I normally change are in the Control Panel.

torrie@cs.stanford.edu (Evan J Torrie) (01/24/91)

jbickers@templar.actrix.gen.nz (John Bickers) writes:

>Quoted from <1991Jan22.215801.4557@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
>>   Can you explain the "input handling" task?  Do programs spin off an
>> input-handler thread (this is how OS/2 programs are written if I

>    Consider that there are two levels to input handling. One is handling
>    receipt of the users actions (buffering keystrokes, moving the mouse
>    pointer, resizing windows, swapping screens, etc). The other is the

  Do user actions include "mouse-downs" in things like scroll-bars etc??

>    application actually getting around to doing something with the input.

  This is what I'm interested in.

>    This gets input from the user, and funnels each event through a
>    chain of input handlers. The program JDMouse is one such, which

  How does a program become an input handler?  I presume you can spawn
off a task, and tell it to be an input handler...   

>    The 2nd level can be handled in a variety of ways (some programs
>    do use input-handlers as well as normal mechanisms), and varies
>    from program to program.

  I'm mainly interested in the 2nd level, i.e. how a normal
application would handle getting and processing events in an
interactive fashion.  
  You say some programs do use input-handlers... does this mean they
multi-thread themselves, spinning off an input handler task, and then
communicate between the main program and the input handler task?

  What is the "normal mechanism"?

  The particular scenario I'm interested in is this... suppose we have
a word processing application, with scroll bars, etc running at a
normal priority (say 1 or so) on a heavily loaded system.  
  When a user clicks on the scroll bar, the ideal is to respond as
quickly as possible (i.e. the text/pictures in the word processor
scroll down quickly).
  From the discussion above, it seems that the input.device task will
handle the mouse down immediately (because it's running at such a high
priority).  But normally, the code to regenerate the window's view
(what I call an Update event) is located in the main word processor
task.  If the word processor task remains at priority 1, this code
won't get run until the WP's task gets scheduled by the scheduler
(which on a heavily loaded system may be in the tenths of a second).
  Thus, it seems to be possible to buffer up a whole lot of mousedowns
on the scroll bar, all received by the input.device task, but the
actual code to regenerate the window won't be scheduled...  thus won't
you get a jerky, or at least a non-responsive task?
  I'm just wondering if you would get better response by having the OS
temporarily boosting the priority of an interactive task (e.g. raising
the word processor priority to 10 while the user is clicking on the
scroll bar in the WP's window)

-- 
------------------------------------------------------------------------------
Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
Fame, fame, fame...  What's it good for?  Ab-so-lute-ly nothing

rjc@geech.ai.mit.edu (Ray Cromwell) (01/24/91)

In article <1991Jan23.213736.28220@Neon.Stanford.EDU| torrie@cs.stanford.edu (Evan J Torrie) writes:
|jbickers@templar.actrix.gen.nz (John Bickers) writes:
|
|Quoted from <1991Jan22.215801.4557@Neon.Stanford.EDU| by torrie@cs.stanford.edu (Evan J Torrie):

|    Consider that there are two levels to input handling. One is handling
|    receipt of the users actions (buffering keystrokes, moving the mouse
|    pointer, resizing windows, swapping screens, etc). The other is the
|
|  Do user actions include "mouse-downs" in things like scroll-bars etc??

  Yep. 
|    application actually getting around to doing something with the input.
|
|  This is what I'm interested in.
|
|    This gets input from the user, and funnels each event through a
|    chain of input handlers. The program JDMouse is one such, which
|
|  How does a program become an input handler?  I presume you can spawn
|off a task, and tell it to be an input handler...   

  There are a bunch of ways. One of the easiest is to ask the 
input.device to "please install my routine into your handler chain."
I've never written an input handler (most people don't need to), but
thats how I remember it. 

|    The 2nd level can be handled in a variety of ways (some programs
|    do use input-handlers as well as normal mechanisms), and varies
|    from program to program.
|
|  I'm mainly interested in the 2nd level, i.e. how a normal
|application would handle getting and processing events in an
|interactive fashion.  
|  You say some programs do use input-handlers... does this mean they
|multi-thread themselves, spinning off an input handler task, and then
|communicate between the main program and the input handler task?

  Most Amiga programs use IDCMP. This stands for Intuition Direct 
Communications Message Port :-) IDCMP is a Message Port that receive
input events from intuition that can range from timer ticks,
mouse move events, button clicks, someone picking a menu, hitting a
key, selecting a gadget, sizing a window, etc. Lots of stuff. Even
inserting a disk.
  See below.

|  What is the "normal mechanism"?
|
|  The particular scenario I'm interested in is this... suppose we have
|a word processing application, with scroll bars, etc running at a
|normal priority (say 1 or so) on a heavily loaded system.  
|  When a user clicks on the scroll bar, the ideal is to respond as
|quickly as possible (i.e. the text/pictures in the word processor
|scroll down quickly).
|  From the discussion above, it seems that the input.device task will
|handle the mouse down immediately (because it's running at such a high
|priority).  But normally, the code to regenerate the window's view
|(what I call an Update event) is located in the main word processor
|task.  If the word processor task remains at priority 1, this code
|won't get run until the WP's task gets scheduled by the scheduler
|(which on a heavily loaded system may be in the tenths of a second).
  This is what makes the Amiga so nice. In a typical application. A program
opens a window and Intuition creates an IDCMP port. The program will
then Wait(MyWindow-|UserPort-|mp_SigBit) for an input event to occur.
The application at this point falls asleep. When an input event occurs
intuition sends a message to the Window's IDCMP(UserPort), Exec's
scheduler says 'Hey, this task was asleep waiting for this event, lets
wake him up.' The Application wakes up and Replys to the Message, then
processes it.

|  Thus, it seems to be possible to buffer up a whole lot of mousedowns
|on the scroll bar, all received by the input.device task, but the
|actual code to regenerate the window won't be scheduled...  thus won't
|you get a jerky, or at least a non-responsive task?
   Intuition is smart, the internal window generation code runs on
the input.device task instead of the user task (notice in the list
that was posted, the input.device was eating 30% of CPU time.). Also,
rendering is done IN PARALLEL with the blitter chip, nice isn't it?
The only way lots of input events get buffered up, is if the user task 
doesn't respond to the messages intuition sends to its IDCMP port, or the
system is SEVERLY bogged down. I have never encountered this except
when I foolishly ran a program which set its priority higher than the
input.device.

|  I'm just wondering if you would get better response by having the OS
|temporarily boosting the priority of an interactive task (e.g. raising
|the word processor priority to 10 while the user is clicking on the
|scroll bar in the WP's window)

  Not really, unless your are running a ray-tracer at a higher priority
than your WP, which is stupid.

jbickers@templar.actrix.gen.nz (John Bickers) (01/24/91)

Quoted from <1991Jan22.215801.4557@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
> jbickers@templar.actrix.gen.nz (John Bickers) writes:
> >    No. Programs can set their own priorities, however, and the input
> >    handling task runs at a higher priority than anything else (so if

>   Can you explain the "input handling" task?  Do programs spin off an
> input-handler thread (this is how OS/2 programs are written if I

    Consider that there are two levels to input handling. One is handling
    receipt of the users actions (buffering keystrokes, moving the mouse
    pointer, resizing windows, swapping screens, etc). The other is the
    application actually getting around to doing something with the input.

    The 1st level is handled by a single task. The following is a list
    of tasks currently running on my machine...

    CPU:68020/68881     CPU activity:  25.0% 
    Dispat/Sec: 19.4    I/O Ints/Sec:  11.7
 
        ID     TYPE      STATE    PRI  CPUSE NUM TASKNAME
     -----------------------------------------------------
     0025d190 Process   Running     0   6.7% --- Xoper
     00202748 Process   Waiting     4   0.0%   0 RexxMaster
     0020b4a8 Process   Waiting     4   0.0% --- WSH_Completer
     002185b0 Process   Waiting     1   0.6% --- JDMouse
     00219b78 Process   Waiting     5   0.0% --- PopUpMenu
     0021f450 Process   Waiting     4   0.0% --- Snap
     00222b50 Process   Waiting    10   4.1% --- MISC
     00225b90 Process   Waiting     0   0.0%   1 New_WShell
     0022eac8 Process   Waiting     5   0.0% --- CON
     0023c5b8 Process   Waiting     0   2.0%   2 [ getty ]
     0023db38 Process   Waiting     5   0.0% --- NULL
     0023df40 Process   Waiting     0   0.0%   3 [ dcron ]
     0024019c Task      Waiting     0   0.0% --- narrator.device
     00242d98 Process   Waiting    10   0.0% --- PATH
     00251510 Process   Waiting     0   0.0%   4 [ tnews ]
     0025ef20 Process   Waiting    10   4.4% --- FAST
     0027c810 Process   Waiting     1   0.0%   0 CygnusEd
     00c00bd8 Process   Waiting    10   8.3% --- File System
 +-> 00c0270a Task      Waiting    20  47.7% --- input.device
 |   00c0482e Task      Waiting     5   8.5% --- trackdisk.device
 |   00c05d08 Process   Waiting    10   4.4% --- File System
 |   00c06266 Task      Waiting     5   8.5% --- trackdisk.device
 |   00c13e48 Process   Waiting     0   0.0% --- RAM
 |   00c15360 Process   Waiting    10   4.1% --- DH0
 |   00c169cc Task      Waiting     5   0.0% --- hddisk.device
 |
 +- See input.device, the one with a priority of 20? That's it.

    This gets input from the user, and funnels each event through a
    chain of input handlers. The program JDMouse is one such, which
    does screen blanking (timer events), mouse acceleration (mouse
    events), and what-not. PopUpMenu and Snap are another two.

    The 2nd level can be handled in a variety of ways (some programs
    do use input-handlers as well as normal mechanisms), and varies
    from program to program.

> >    A number of programs display some intelligence about what priority
> >    to use automatically (like editors that edit at priority 1, or
> >    executable packers that crunch at priority -1, etc). And some can
> >    be configured.
> 
>   "Some" can be configured?  Is there an all-purpose "nice" command?

    By configured I mean can be set to use a particular priority through
    a configuration file.

    By "nice" command I assume you mean a command that can change
    task priorities on the fly (that's not what I meant by configured,
    sorry). Anyhow, yes, the program that produced the task list
    above can also be used to change priorities (amongst other things,
    including pausing or killing tasks).

> Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

Erik.Funkenbusch@p7.f55.n282.z1.fidonet.org (Erik Funkenbusch) (01/24/91)

 SJ> From: jsd@boreal.rice.edu (Shawn Joel Dube)
 SJ> Date: 21 Jan 91 17:05:57 GMT
 SJ> Organization: Rice University
 SJ> Message-ID: <1991Jan21.170557.25934@rice.edu>
 SJ> Newsgroups: comp.sys.amiga.advocacy

 SJ> In article <1991Jan21.101849.13078@eecs.wsu.edu>,
 SJ> pcooper@eecs.wsu.edu (Phil Cooper - CS495) writes:
 >|> >|>
 >|> >|> *=Cycle
 >|> >|>
 >|> >|>   Amiga   Time --->
 >|> >|> Task A  |********        ********        ********        ********>
 >|> >|> Task B  |        ********        ********        ********        >
 >|> >|>
 >|> >|>   Mac  
 >|> >|> Task A  |*****               **     ****** *************  **  ***>
 >|> >|> Task B  |     ***************  *****      *             **  **   >
 >|> >|>
 >|> >|>  In my own opinion cooperative multitasking is not multitasking, 
simply
 >|> >|> because its not very transparent.
 >|> >
 >|> >Seriously, I think cooperative is better. Take the following for 
example:
 >|> >Two task are running.  One is waiting on a keypress (via OS subroutine)
 >|> >and the other is doing some serious number-crunching.  With
 SJ> the Amiga, valuable
 >|> >time is being spent doing nothing (waiting for a keypress). 
 >|>
 >|>     Of course, this is just wrong...  If one task is waiting on a key 
press,
 >|> no CPU time is consumed by it.  If the program is written correctly 
(without
 >|> a polling loop or some such nonsense), it merely waits.  When the key is
 >|> pressed, the task is signalled and it continues.  So, as you
 SJ> can see, no time
 >|> is being wasted.  Also, please check your facts before posting
 SJ> trash like this.
 >|> It really angers me (and others) when misinformation is spread under the
 >|> pretense of truth.

 SJ> Assuming the chart above is correct, time
 SJ> is allocated to each process equally.
 SJ> Any idiot can see that Task A gets just
 SJ> as much time as Task B, even if Task A
 SJ> is simply waiting for a keypress. 

 SJ> I didn't make the chart, so if it's
 SJ> wrong, don't blame me for spreading false
 SJ> information.  Blame the person who made the chart.

No, that chart is NOT quite correct, whenever a task needs a resource such 
as a key pressed or disk I/O it gives up it's processor time with a Wait() 
instructionn. in this case it's like co-operative multi-tasking, however the 
big difference is that when task A (or B) has used up it's aloted time it 
switches to the next task, wheather the program is ready or not.

 >|>
 >|>     Have a nice day...
 >|>     Phil Cooper

 SJ> --
 SJ> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 SJ> r     ___     _                                          r
 SJ> r    /__     | \           N U K E   I R A Q ! ! !       r
 SJ> r   ___/hawn |__\ube       -----------------------       r
 SJ> r  jsd@owlnet.rice.edu                                   r
 SJ> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 SJ> n

lsr@Apple.com (Larry Rosenstein) (01/24/91)

In article <17913@cbmvax.commodore.com>, daveh@cbmvax.commodore.com (Dave Haynie) writes:
> 
> updated, at best, when an application is started up.  On the Amiga, an 
> application can not only import a file, but ask the filesystem to send it a
> message if that file ever changes.  So if you change drawings over a network
> and I flip over to my spreadsheet and change the graph in the aforementioned
> example, when I flip back to the documentation processor, it'll already have
> the new versions there waiting for me if it knows about notification.

And that's what happens under System 7 (via the Edition Manager).  

orovner@sdcc13.ucsd.edu (Oleg Rovner) (01/24/91)

In article <11836@goofy.Apple.COM> lsr@Apple.com (Larry Rosenstein) writes:
>
>And that's what happens under System 7 (via the Edition Manager).  

And WHERE is System 7?

-- 
************************************************************************
GOD BLESS AMERICA!  SUPPORT OUR TROOPS AND OUR ALLIES!  FREE KUWAIT!
************************************************************************

peter@sugar.hackercorp.com (Peter da Silva) (01/24/91)

Big charts and huge .signatures omitted, we have:

In article <1991Jan21.221744.5966@rice.edu>, jsd@boreal.rice.edu (Shawn Joel Dube) writes:
> Now compare Doug's chart to the one above.  Which does it most look like?
> I would
> say that it looks mostly like the Mac's becuase each task is not getting eqaul
> CPU time.  

All the tasks that *need* CPU time at any point are getting an even share of
it. More importantly, most tasks sit there most of the time *not* needing any
CPU time.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/24/91)

I said:

> On the Mac a program waiting for a keypress
> has to sit there and handle all the events coming into it from WaitNextEvent.

Now someone from Apple sent me mail disputing this. Yes, the task can ignore
any but keypress inputs, but if it does that its window will not be properly
updated: it's the applications responsibility for managing its own window, and
obscured sections of that window will not be repainted when windows in front of
it disappear. I suspect that other aspects of the application's user interface
will break until it starts listening for display events again, but in any event
it's not practical for a Mac task to just ignore everything but keypresses, so
I doubt much, if any, real software does.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

davewt@NCoast.ORG (David Wright) (01/24/91)

In article <1991Jan22.215801.4557@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>
>  Can you explain the "input handling" task?  Do programs spin off an
>input-handler thread (this is how OS/2 programs are written if I
>recall)?
	There is one global system input handler, which feeds into the
other programs. But a program is free to "spin off" another task to do it's
I/O handling, so that the user can move around a spreadsheet while it is
recalculating, if they wish.
>  "Some" can be configured?  Is there an all-purpose "nice" command?
	All commands can have their priority adjusted, even ones that
set their own priority. the command "ChangeTaskPri" will allow you to set
a specific priority either for the current CLI, or for tasks that are
running outside of the current CLI. Most of the programs that set their own
priority allow you to set a "delta" priority for that application, so you
can say that the subtasks the program may start will run at "-1" for
that task (one below that tasks priority). But the system priorities are
all fixed numbers, with 0 being the default.


			Dave

davewt@NCoast.ORG (David Wright) (01/24/91)

In article <1991Jan23.213736.28220@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>jbickers@templar.actrix.gen.nz (John Bickers) writes:
>
>  Do user actions include "mouse-downs" in things like scroll-bars etc??
	Yes, as well as mouse movements, keys such as the shift key being
pressed and released, disks being inserted and removed, virtually everything.
>  How does a program become an input handler?  I presume you can spawn
>off a task, and tell it to be an input handler...   
	It depends on what you want to do. If you want to ONLY be an
input handler you should be a very small and fast program, and you can
put yourself into the input even chain above or below the mian system
input handler. But this is nor usually reccomended. The better way to do
this is to write an application that follows the guildelines for running
under "Commodities Exchange", which is available under 2.0. This lets you
write an input event handler that can take out or insert events into the
input even queue and still get along with other programs doing the same
thing. And the user gets a nice WorkBench control panel that lets them
freeze, restart, and remove any CEX applications they wish.
>  I'm mainly interested in the 2nd level, i.e. how a normal
>application would handle getting and processing events in an
>interactive fashion.  
>  You say some programs do use input-handlers... does this mean they
>multi-thread themselves, spinning off an input handler task, and then
>communicate between the main program and the input handler task?
	If they wish, but that is not normally needed. Most programs on
any machine are waiting for user input, not running in the background.
For instance a paint program would have no need to spawn another task
for input, since it is always waiting. And under Intuition, the task doesn't
even have to be ready for input for you to click in it's gadgets or select
pull-down menus. The program will get the events from it's private input
queue when it is ready for them.
>task.  If the word processor task remains at priority 1, this code
>won't get run until the WP's task gets scheduled by the scheduler
>(which on a heavily loaded system may be in the tenths of a second).
>  Thus, it seems to be possible to buffer up a whole lot of mousedowns
>on the scroll bar, all received by the input.device task, but the
>actual code to regenerate the window won't be scheduled...  thus won't
>you get a jerky, or at least a non-responsive task?
	Yes, but the user would expect this, if they had a lot of other
programs running at the same priority.
>  I'm just wondering if you would get better response by having the OS
>temporarily boosting the priority of an interactive task (e.g. raising
>the word processor priority to 10 while the user is clicking on the
>scroll bar in the WP's window)
	Yes, this would work. But is very rude, and not many programs do
this. How do you know that the user WANTS the WP to work smoothly?
Personally, I run a multi-user game on my computer 100% of the time, in
the background. I want the remote users I/O to be as fast as possible, so
I run their programs at a higher priority (2 & 3), while I run mine at
0 or less. I would refuse to use a WP that upped it's priority without
asking my permission. I expect the repsonse to be slower (although
normally neither myself and the other users can't tell anyone is using
the system besides themselves), and I'm willing to live with it, those
rare times it occurs. But technically, yes, you could do what you
want. But why not just run at the same priority all the time? If the
user wants faster response they can up the WP priority. Since most of the
time it will be waiting for user input, the other tasks will get plenty
of time to run in the background, even if the user has the WP running at
a high priority.


				Dave

kdarling@hobbes.ncsu.edu (Kevin Darling) (01/25/91)

<11836@goofy.Apple.COM> lsr@Apple.com (Larry Rosenstein) writes:
|<17913@cbmvax.commodore.com>, daveh@cbmvax.commodore.com (Dave Haynie):
| 
|> updated, at best, when an application is started up.  On the Amiga, an 
|> application can not only import a file, but ask the filesystem to send it a
|> message if that file ever changes.
|
|And that's what happens under System 7 (via the Edition Manager).  

And OS9 L-II 3.0 had it.  And I suspect most OS's will before very long,
if they don't already.  OS's seem to be converging at a rapid rate.
It's just a matter of time before they all look quite similar to the
programmer.  Dunno if that's good or bad (I tend to think "good").

Sidenote: I'm not sure why some mention that System 7 isn't out yet.
Amiga 2.0 isn't out yet for 500's, I thought.  And sure won't be for
my A1000 :-(.  This kind of argument is a two-way street; and obviously
nulls out within a fairly short period of time.  cheers - kev

daveh@cbmvax.commodore.com (Dave Haynie) (01/25/91)

In article <42828@ut-emx.uucp> awessels@ccwf.cc.utexas.edu (Allen Wessels) writes:
>In article <1991Jan20.042633.16661@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:

>>I sure wish I could put 64MB of RAM on my AT&T 6300 like I can on my Amiga.

>(Just curious, but does anyone out there have that much RAM installed?)

I set up an A3000 with 16MB of motherboard Fast RAM, 2MB of Chip RAM, 32MB
of Zorro III expansion RAM, and 2MB of Zorro II expansion RAM just for kicks
once.  I didn't really have anything useful to do with all that memory, so I
gave back most of the 4MB DRAMs, and I'm now back to the basic 10MB setup
(8MB Fast, 2MB Chip) that I've found I can't use up in anything I normally do
with my system.


-- 
Dave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: hazy     BIX: hazy
	"What works for me might work for you"	-Jimmy Buffett

peter@sugar.hackercorp.com (Peter da Silva) (01/26/91)

In article <1991Jan22.215801.4557@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>   "Some" can be configured?  Is there an all-purpose "nice" command?

Yes, you can set the priority of any shell or process. Unfortunately some
programs blithely override this. You can't easily reset it after one starts
up, but it *is* possible.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/26/91)

In article <1991Jan23.213736.28220@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>   You say some programs do use input-handlers... does this mean they
> multi-thread themselves, spinning off an input handler task, and then
> communicate between the main program and the input handler task?

Yes. What they usually do is create a message port, and then spawn off a
task to handle computations. This task immediately waits on the message
port until you need to crunch. The user-interface task can then sit there
handling the user's requests.

>   From the discussion above, it seems that the input.device task will
> handle the mouse down immediately (because it's running at such a high
> priority).  But normally, the code to regenerate the window's view
> (what I call an Update event) is located in the main word processor
> task.

A word processor would probably not be split up this way, because they don't
tend to be compute bound. This would be more like a spreadsheet.

Also, the display would be handled by the user-interface task. The compute
task just updates internal tables... the display selects the portions of those
tables the user wants to see and presents them.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/26/91)

In article <1991Jan24.174925.10783@ncsuvx.ncsu.edu>, kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
> Sidenote: I'm not sure why some mention that System 7 isn't out yet.
> Amiga 2.0 isn't out yet for 500's, I thought.  And sure won't be for
> my A1000 :-(.

Agreed, this is a bummer. Especially since there's little technical reason
why not. But at least it didn't obsolete as fast as the skinny mac. I don't
think anyone could compare Apple and Commodore by this criterion and confuse
the two...

(hell, I'm using my 1000 right now. My 3000 has a keyboard problem. Who's
 using their original 128K Mac?)
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (01/26/91)

kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
><11836@goofy.Apple.COM> lsr@Apple.com (Larry Rosenstein) writes:
>|<17913@cbmvax.commodore.com>, daveh@cbmvax.commodore.com (Dave Haynie):
>| 
>|> updated, at best, when an application is started up.  On the Amiga, an 
>|> application can not only import a file, but ask the filesystem to send it a
>|> message if that file ever changes.
>|
>|And that's what happens under System 7 (via the Edition Manager).  
>
>And OS9 L-II 3.0 had it.  And I suspect most OS's will before very long,
>if they don't already.  OS's seem to be converging at a rapid rate.
>It's just a matter of time before they all look quite similar to the
>programmer.  Dunno if that's good or bad (I tend to think "good").
>
>Sidenote: I'm not sure why some mention that System 7 isn't out yet.
>Amiga 2.0 isn't out yet for 500's, I thought.  And sure won't be for
>my A1000 :-(.  This kind of argument is a two-way street; and obviously
>nulls out within a fairly short period of time.  cheers - kev

BUT 2.0 *IS* available to 3000 owners.  7.0 is only available to developers. 
bringing 2.0 into ANY argument is quite valid because of all the 3000 owners
that use it.  when a Mac ships whith ANY version of 7.0 then it too can be
brought into the fray of things.

UUCP: {amdahl!bungia, crash}!orbit!pnet51!chucks
ARPA: crash!orbit!pnet51!chucks@nosc.mil
INET: chucks@pnet51.orb.mn.org

torrie@cs.stanford.edu (Evan J Torrie) (01/27/91)

peter@sugar.hackercorp.com (Peter da Silva) writes:

>In article <1991Jan23.213736.28220@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>> priority).  But normally, the code to regenerate the window's view
>> (what I call an Update event) is located in the main word processor
>> task.

>A word processor would probably not be split up this way, because they don't
>tend to be compute bound. This would be more like a spreadsheet.

>Also, the display would be handled by the user-interface task. The compute
>task just updates internal tables... the display selects the portions of those
>tables the user wants to see and presents them.

  So the two tasks share the same address space/structures etc??  Do
the commercially available programs on the Amiga actually DO this?
(e.g. the WordPerfect, Advantage, or whatever the WPs, SSs and DBs
are...)

-- 
------------------------------------------------------------------------------
Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
"I didn't get where I am today without knowing a good deal when I see one,
 Reggie."  "Yes, C.J."

jbickers@templar.actrix.gen.nz (John Bickers) (01/27/91)

Quoted from <1991Jan23.213736.28220@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
> jbickers@templar.actrix.gen.nz (John Bickers) writes:

>   How does a program become an input handler?  I presume you can spawn
> off a task, and tell it to be an input handler...   

    You don't start a seperate task. You usually have the handling routine
    inside your program, and call an OS routine to add a pointer to your
    code to the list. This is adding your code to an existing task
    (the input.device), which you then communicate with.

    A similar mechanism is used to add interrupt handlers.

    When the input.device processes an event, it gets the raw data,
    constructs a message, and then executes this list of handlers. So
    your code will be executed as part of the input.device task. This
    means the programmer needs to pay attention to what stack and local
    variables their handler expects to be using. Not hard.

    There are at least three ways the handler can communicate with the
    rest of your program: use shared variables (ie: the input.device
    task would be reading/writing your program's data space), use task
    signals, use messages.

>   What is the "normal mechanism"?

    Someone else explained IDCMPs. One of the input handlers in the
    list belongs to ("is", in a way) Intuition. Intuition gets the event,
    converts it into an Intuition event, then if it's meaningful to do
    so, passes it to the active user program IDCMP (ie: the active
    window).

>   From the discussion above, it seems that the input.device task will
> handle the mouse down immediately (because it's running at such a high
> priority).  But normally, the code to regenerate the window's view
> (what I call an Update event) is located in the main word processor
> task.  If the word processor task remains at priority 1, this code

    Yes, this is what happens. The application will be waiting for a
    message indicating that the user has fiddled with a "proportional
    gadget", and while the message will get queued up at the high
    input.device priority, the application will process it at whatever
    rate it is trekking at.

>   Thus, it seems to be possible to buffer up a whole lot of mousedowns
> on the scroll bar, all received by the input.device task, but the
> actual code to regenerate the window won't be scheduled...  thus won't
> you get a jerky, or at least a non-responsive task?

    Yes. The user solution is to raise the priority of the application.
    The application design solution would be to use several tasks, one
    to do the data munging, and a higher priority one to handle the
    interface.

    Note that interactive tasks (like editors) tend to spend most of
    their time in the "wait" list, so it's ok to run them at a high
    priority if you wish to. While they are waiting for events, they
    have negligible effect on other tasks in the system.

>   I'm just wondering if you would get better response by having the OS
> temporarily boosting the priority of an interactive task (e.g. raising

    I don't believe there is a good OS solution. A user may not want
    a download halted while their word-processor scrolls its display
    a bit faster.

    Or whatever. The interactions involved between Intuition and all the
    tasks involved seem too complicated to me for an OS solution to be
    practical. A user can send time-consuming events to a number of
    tasks at the same time, for example. No, I'd leave this for the user
    to decide with something like Xoper, and only make broad assumptions
    at the application design level.

> Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

dac@prolix.ccadfa.oz.au (Andrew Clayton) (01/27/91)

 kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
> >
> >Sidenote: I'm not sure why some mention that System 7 isn't out yet.
> >Amiga 2.0 isn't out yet for 500's, I thought.  And sure won't be for
> >my A1000 :-(.  This kind of argument is a two-way street; and obviously
> >nulls out within a fairly short period of time.  cheers - kev
> 

I've SEEN an A1000 running Workbench 2.0. 

I've just got my ECS denise (for my A2500), and am sorely tempted to go 2.0
Productivity mode on my Nec 3D is SUPERB.  I am eagerly awaiting the official
release of 2.0 to the wide world.

Dac
--
 _l _  _   // Andrew Clayton. Canberra, Australia.         I Post  .
(_](_l(_ \X/  ccadfa.cc.adfa.oz.au!prolix!dac                     . .  I am.                   
-------- I cannot send or receive email. Not to anyone at all. Not even you.

peter@sugar.hackercorp.com (Peter da Silva) (01/28/91)

In article <MWM.91Jan14120949@raven.relay.pa.dec.com> mwm@raven.relay.pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
> Yeah - GNU Emacs works like a charm, and ADPro can handle some
> _really_ large images in 1.5M. And AmigaVision runs alongside both of
> those, just fine. Where did you say that beachfront property was,
> Peter?

I stand by what I said. I can run all the apps I want without worrying about
which order I load them or what is going to conflict with what.

Of course you're gonna get applications that don't even run *once* in 1.5
Meg. There are always people out there writing oversized, overrated, and
underdesigned programs.

And people willing to buy more and more RAM to run them. I'm quite happy with
Digipaint, Sculpt, Manx C, etcetera. And even if AmigaVision ran on my 3000
it's no use to me... there's no separate runtime that'll fit on my 1000, so I
can't use it to write stuff for my son. For me Amigavision was worth every
penny I spent on it. Lucky it was free...

Anyone got any suggestions for a *small* multimedia authoring program?

In any case, this thread does not belong in .misc, but rather in .advocacy.
How about leaving it there this time?
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

torrie@cs.stanford.edu (Evan J Torrie) (01/28/91)

jbickers@templar.actrix.gen.nz (John Bickers) writes:

>Quoted from <1991Jan23.213736.28220@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
>> jbickers@templar.actrix.gen.nz (John Bickers) writes:

>>   How does a program become an input handler?  I presume you can spawn
>> off a task, and tell it to be an input handler...   

>[lots of good explanations deleted]
>    constructs a message, and then executes this list of handlers. So
>    your code will be executed as part of the input.device task. This
>    means the programmer needs to pay attention to what stack and local
>    variables their handler expects to be using. Not hard.

  Just as a matter of interest, it seems to me that this design would
be somewhat difficult to graft virtual memory/memory protection onto
without some serious backward compatibility problems...  
  Has anyone thought about adding VM/protection onto AmigaDos??  Is it
going to be a problem?  


>>   I'm just wondering if you would get better response by having the OS
>> temporarily boosting the priority of an interactive task (e.g. raising

>    I don't believe there is a good OS solution. A user may not want
>    a download halted while their word-processor scrolls its display
>    a bit faster.

>    Or whatever. The interactions involved between Intuition and all the
>    tasks involved seem too complicated to me for an OS solution to be
>    practical. A user can send time-consuming events to a number of
>    tasks at the same time, for example. No, I'd leave this for the user
>    to decide with something like Xoper, and only make broad assumptions
>    at the application design level.

  Perhaps that may be best.  My question was whether there have been
any studies done in this area.  If you read all the classic OS design
textbooks, they're all written around the assumption of large
timesharing multiuser OSes... none that I've seen give much thought to
a single user multitasking OS.
  For example, I believe the Amiga OS was derived from Tripos? by
Metacomco?.  What was the original design decision behind the Amiga OS
ancestors?

-- 
------------------------------------------------------------------------------
Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
"If it weren't for your gumboots, where would you be?   You'd be in the
hospital, or in-firm-ary..."  F. Dagg

kdarling@hobbes.ncsu.edu (Kevin Darling) (01/28/91)

In <3889@orbit.cts.com> chucks@pnet51.orb.mn.org (Erik Funkenbusch) writes:
>> Sidenote: I'm not sure why some mention that System 7 isn't out yet.
>> Amiga 2.0 isn't out yet for 500's, I thought. [me]
>
>BUT 2.0 *IS* available to 3000 owners.  7.0 is only available to developers. 
>bringing 2.0 into ANY argument is quite valid because of all the 3000 owners
>that use it.  when a Mac ships with ANY version of 7.0 then it too can be
>brought into the fray of things.

Gosh, after watching people use 2.0 for comparisons long before *IT*
came out, it's great that you feel this way.  I suppose this means that we
also shouldn't mention future 040/etc cards for the A3000 cpu slot to others?
Or coming video boards?  Or?  (ahem ;-)

>> This kind of argument is a two-way street; and obviously
>> nulls out within a fairly short period of time.  cheers - kev

Plus, I think we might agree that waiting until all arguments are "valid",
would take some of the fun out of things. <grin>

peter@sugar.hackercorp.com (Peter da Silva) (01/28/91)

In article <1991Jan22.033011.21457@zorch.SF-Bay.ORG> mykes@zorch.SF-Bay.ORG (Mike Schwartz) writes:
> I might also point out that AmigaWorld's #1 game of last year was
> a European title, Shadow of the Beast, which I would hardly say was a quick
> and easy program to do.  I find it difficult to play, but not impossible.

I don't know... the only guy I know who hasn't given up on it has been using
the immortality hack.

> I agree 100%.  I don't like to cut anything from the design of the game,
> especially for the sake of the operating system which does NOTHING for the
> game.

Sure does. Lets the game run on a 3000, to begin with. In fact I'd love a few
decent ports of some of the old 8-bit games. You know, where they couldn't
sell the sizzle but instead had to make the game itself attractive.

You'll get a lot more playing time out of a good, simple, playable game like
Tracers than a fancy, visually exciting, but unplayable game like anything
Psygnosis has produced thus far.

> I agree, too, and it seems as if a lot of publishers are going to off-disk
> protection (look up a word in the manual, please).

I have one game that uses "look up a word on the box" protection. I couldn't
believe it! How many people keep the game packaging?

> Honest people typically don't buy the cartridge devices you are talking
> about.

I don't know... I'm thinking of it. I've spent enough on $10 a pop replacement
disks from Accolade to pay for it. Does anyone know if these replacements show
up on the author's royalty statements?
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/28/91)

Please... if you have to post to inappropriate groups at least direct followups
somewhere better?

In article <1991Jan23.094943.9336@marlin.jcu.edu.au> glmwc@marlin.jcu.edu.au (Matt Crowd) writes:
> Rubbish! The OS steals around 100k, depending
> on how many devices are attached, buffers etc.  It is VERY tight getting
> a game to fit in 512k!  You usually have to page stuff off the
> disk...

Then you've probably written too much code.

(god, once upon a time people actually write some fairly impressive programs
 on the Apple-II with only 48K available, and much of that taken up in the
 hi-res screen... how quickly we become spoiled)

Let me just say that I *will* buy games that are less than balls-to-the-wall
so long as they will run nicely. *AND* playability is given priority.

> Yep. And you need lots of that nowdays.

Yep. Gotta keep people from noticing that some clone of "Galaxians" is almost
unplayable for anyone over 15.

Oh well, at least this did force me to keep my 1000 when I got my 3000. Got too
many badly behaved games to think of getting rid of it, and it *has* come in
handy. :-<
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

navas@cory.Berkeley.EDU (David C. Navas) (01/29/91)

In article <1991Jan27.005727.1196@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>  So the two tasks share the same address space/structures etc??  Do

Sometimes.  One of the unique Amiga things....
Of course, ALL programs share the same "address space" if I'm understanding you
correctly :)

>the commercially available programs on the Amiga actually DO this?
>(e.g. the WordPerfect, Advantage, or whatever the WPs, SSs and DBs
>are...)

Well, I don't know about commercial packages, but my Jazzbench program is
a *group* of co-operating processes.  Base package requires four.  And it
usually works.  Usually.  Not bad for a package written without a knowledge of
what a semaphore is...

Under 1.3 it was a lot easier to insert GetMsg()s somewhere in your 
ray-tracing package.  Under 2.0 I would not be surprised if such things became
more prolific (that is multi-threaded packages).


David Navas                                   navas@cory.berkeley.edu
"Excuse my ignorance, but I've been run over by my train of thought."  -me
[Senior EECS major, programmer for GeoWorks, author of JazzBench]  (and Calvin)

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (01/29/91)

kdarling@hobbes.ncsu.edu (Kevin Darling) writes:
>In <3889@orbit.cts.com> chucks@pnet51.orb.mn.org (Erik Funkenbusch) writes:
>>> Sidenote: I'm not sure why some mention that System 7 isn't out yet.
>>> Amiga 2.0 isn't out yet for 500's, I thought. [me]
>>
>>BUT 2.0 *IS* available to 3000 owners.  7.0 is only available to developers. 
>>bringing 2.0 into ANY argument is quite valid because of all the 3000 owners
>>that use it.  when a Mac ships with ANY version of 7.0 then it too can be
>>brought into the fray of things.
>
>Gosh, after watching people use 2.0 for comparisons long before *IT*
>came out, it's great that you feel this way.  I suppose this means that we
>also shouldn't mention future 040/etc cards for the A3000 cpu slot to others?
>Or coming video boards?  Or?  (ahem ;-)
Hmmm.. you mean people were comparing 2.0 with other things before it was
released?  it seems to me that commodore had such a tight clamp on anything
leaking out that when AmigaWorld reported that it wasn't going to be 1.4 but
2.0 everyone claimed they were lying.  when it finally was announced it was a
big shock to most of us, and was shipping with 3000's the next month.

>
>>> This kind of argument is a two-way street; and obviously
>>> nulls out within a fairly short period of time.  cheers - kev
>
>Plus, I think we might agree that waiting until all arguments are "valid",
>would take some of the fun out of things. <grin>


UUCP: {amdahl!bungia, crash}!orbit!pnet51!chucks
ARPA: crash!orbit!pnet51!chucks@nosc.mil
INET: chucks@pnet51.orb.mn.org

eeh@public.BTR.COM (Eduardo E. Horvath eeh@btr.com) (01/29/91)

-- 
=========================================================================
Eduardo Horvath				eeh@btr.com
					..!{decwrl,mips,fernwood}!btr!eeh
	"Trust me, I am cognizant of what I am doing." - Hammeroid

eeh@public.BTR.COM (Eduardo E. Horvath eeh@btr.com) (01/29/91)

In article <1991Jan27.005727.1196@Neon.Stanford.EDU> torrie@cs.stanford.edu (Evan J Torrie) writes:
>peter@sugar.hackercorp.com (Peter da Silva) writes:
>
>>In article <1991Jan23.213736.28220@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>>> priority).  But normally, the code to regenerate the window's view
>>> (what I call an Update event) is located in the main word processor
>>> task.

>>A word processor would probably not be split up this way, because they don't
>>tend to be compute bound. This would be more like a spreadsheet.

>>Also, the display would be handled by the user-interface task. The compute
>>task just updates internal tables... the display selects the portions of those
>>tables the user wants to see and presents them.

>  So the two tasks share the same address space/structures etc??  Do
>the commercially available programs on the Amiga actually DO this?
>(e.g. the WordPerfect, Advantage, or whatever the WPs, SSs and DBs
>are...)


	Yes, as a matter of fact WordPerfect does spawn several tasks.  There
is WordPerfect itself, the printer process, and the spell-checker/thesaurus.
These are completely separate programs, and can be invoked separately.  I often
print out documents while editing text and percieve no slowdown in the interface
at all.  As a matter of fact, WordPerfect spawns a new task for each document
that is being editted (a fact that wasn't easy to find because these tasks are
called "kashmir".  Wonder why.)  I suppose that this means two users could 
both be running WordPerfect on the same machine concurrently, if the input
re-direction problem could be solved.

	On the Amiga, all tasks share the same address space.  Structure
sharing is a more complicated question.  In general, shared memory is not
a good solution to the problem of inter-process communication because it
makes programs unreasonably complicated.  It becomes impossible to keep
track of which task modified a location last, and makes debugging next
to impossible.  What's more important is that the tasks are sharing the
same code.  WP is implemented with a heavy reliance on dynamic libraries
and lightweight threads, so several instances of WP editing different
documents take up very little room.


-- 
=========================================================================
Eduardo Horvath				eeh@btr.com
					..!{decwrl,mips,fernwood}!btr!eeh
	"Trust me, I am cognizant of what I am doing." - Hammeroid

peter@sugar.hackercorp.com (Peter da Silva) (01/30/91)

I said:
> Yes, you can set the priority of any shell or process. Unfortunately some
> programs blithely override this. You can't easily reset it after one starts
> up, but it *is* possible.

This is, of course, false. You can easily reset it after starting the
application. Next time, Peter, check the docs before posting.

I will note, however, that I had forgotten this feature of changetaskpri
because I'd never had to diddle with task priorities after startup.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

peter@sugar.hackercorp.com (Peter da Silva) (01/30/91)

In article <1991Jan27.214435.15976@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>   Has anyone thought about adding VM/protection onto AmigaDos??  Is it
> going to be a problem?  

Yes, and yes.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

kdarling@hobbes.ncsu.edu (Kevin Darling) (01/30/91)

jbickers@templar.actrix.gen.nz (John Bickers) writes

>> For example, I believe the Amiga OS was derived from Tripos? by Metacomco?.
>> What was the original design decision behind the Amiga OS ancestors?
>
> AmigaDOS was apparently based on Tripos. This is the bit that does
> things like normal file management, loading programs, etc.
> There is another level to the OS that does the multitasking and
> inter-process stuff, called Exec. This is not related to Tripos.

I'm sure the CBM guys will let us know.  But in the meantime, I thought
y'all would be interested in part of a 1988 TRIPOS advertisement.
  <kdarling@catt.ncsu.edu>

---------------------------- begin quote -------------------------------

WHAT IS TRIPOS: The system was first developed some years ago in the
University of Cambridge in the U.K.  It was designed as a model of a
classical operating system.  In 1981 it was taken to the University of
Bath where work had been started on a 68000-based system.   TRIPOS
was ported to this hardware. Three years later, METACOMCO acquired the
rights and started a conversion which would be commercialized.

This work was assisted by the CBM-Amiga in March 1985 when they chose
the system as the kernel of their AmigaDOS.

DESIGN PHILOSOPHY: Maximum response speed was a major design objective
for TRIPOS. It is designed to have as few overheads as possible,
resulting in a fast OS for realtime applications.  Three areas where
this philosophy is clearly demonstrated are scheduling, memory management
and message passing.  The scheduler adopts a strict task-priority system.
There is no overhead for the time-slicing process required in a system
using "round-robin" type scheduling.  A task which is allocated processor
time continues to run until a higher priority task is ready to run or
until it suspends itself.

In the area of memory management, kernel primitives are provided for
allocating and freeing memory.  No checking is done to stop a program
using non-allocated space.  By adopting this non-memory-management
approach, all memory accesses can be executed as fast as the memory
allows, avoiding any clock cycles inserted by an MMU.  Clearly, the
applications software writer has to ensure that programs are well-behaved.

A similar philosophy is applied to the message-passing system.  All
communications within TRIPOS is done by sending and receiving packets.
These packets are areas of memory containing the information and are
passed by reference rather than copied.  Is is because of the memory
management philosophy that this method of message passing can be adopted,
avoiding the unnecessary duplication of memory.

KEY FEATURES:
  * True multitasking realtime OS
  * Small ROMMable code
  * Highly interactive and user friendly
  * Open architecture
  * Integrated debugger
  * Hierarchical filing system
  * RAM disk included
  * Device independent I/O
  * Support for windows

------------------------------ end quote -------------------------------

djohnson@beowulf.ucsd.edu (Darin Johnson) (01/31/91)

In article <7664@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:
>In article <1991Jan27.214435.15976@Neon.Stanford.EDU>, torrie@cs.stanford.edu (Evan J Torrie) writes:
>>   Has anyone thought about adding VM/protection onto AmigaDos??  Is it
>> going to be a problem?  
>
>Yes, and yes.

OK, here's an idea.  Since a lot of the problems will result because some
programs may not use MEMF_PUBLIC correctly, why not have a utility that
allows only specified programs to run with VM/protection.  For example:

  > runvm mytestprog
  -= Illegal Address Format @xxxxxx =-
  -= Terminating process =-
  -= We now return you to your regularly scheduled(ha) system =-

  >runvms swap=hd0:swap mytestprog2
  -= Sorry, process attempted to send a message using private memory =-

etc.

I think this would simplify the task of trying to get VM to work
with everything under the sun.  What would be needed is a paging handler and
setpatching of memory routines.  If you want more than one VM task to run
at once, or to work with other mmu utilities, then you have to make sure
that the scheduler correctly switches context in the mmu when necessary.
-- 
Darin Johnson
djohnson@ucsd.edu
  - Political correctness is Turing undecidable.

jbickers@templar.actrix.gen.nz (John Bickers) (01/31/91)

Quoted from <1991Jan27.214435.15976@Neon.Stanford.EDU> by torrie@cs.stanford.edu (Evan J Torrie):
>   Just as a matter of interest, it seems to me that this design would
> be somewhat difficult to graft virtual memory/memory protection onto
> without some serious backward compatibility problems...  
>   Has anyone thought about adding VM/protection onto AmigaDos??  Is it
> going to be a problem?  

    I think VM is quite feasible, since it should be transparent to the
    system at quite a low level. Memory protection is quite different.

    Discussions on this have been held before, and I believe at least
    one person was working on adding VM.

>   Perhaps that may be best.  My question was whether there have been
> any studies done in this area.  If you read all the classic OS design

    No idea. I've heard that people are looking harder at running
    distributed OSs, in which case the power available would make
    questions of interface speed moot.

>   For example, I believe the Amiga OS was derived from Tripos? by
> Metacomco?.  What was the original design decision behind the Amiga OS
> ancestors?

    AmigaDOS was apparently based on Tripos. This is the bit that does
    things like normal file management, loading programs, etc.

    There is another level to the OS that does the multitasking and
    inter-process stuff, called Exec. This is not related to Tripos.

> Evan Torrie.  Stanford University, Class of 199?       torrie@cs.stanford.edu   
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

jbickers@templar.actrix.gen.nz (John Bickers) (02/01/91)

Quoted from <1991Jan30.131318.18064@ncsuvx.ncsu.edu> by kdarling@hobbes.ncsu.edu (Kevin Darling):
> jbickers@templar.actrix.gen.nz (John Bickers) writes

> > There is another level to the OS that does the multitasking and
> > inter-process stuff, called Exec. This is not related to Tripos.

    Oops. Can I take this back? :) I made the assumption that Exec !=
    Tripos because of the BCPL/C differences apparent in the two
    parts of the system.

> ---------------------------- begin quote -------------------------------
> 
> WHAT IS TRIPOS: The system was first developed some years ago in the
--
*** John Bickers, TAP, NZAmigaUG.        jbickers@templar.actrix.gen.nz ***
***         "Patterns multiplying, re-direct our view" - Devo.          ***

bartonr@eecs.cs.pdx.edu (bartonr) (02/02/91)

jbickers@templar.actrix.gen.nz (John Bickers) writes:
> Oops. Can I take this back? :) I made the assumption that Exec != Tripos
> because of the BCPL/C differences apparent in the two parts of the system.

  DOS is mostly BCPL, but Exec is, I believe, entirely or almost entirely
written in assembler, not C.

================================================================================

davewt@NCoast.ORG (David Wright) (02/08/91)

Quoted from <1409@pdxgate.UUCP> by bartonr@eecs.cs.pdx.edu (bartonr):
>   DOS is mostly BCPL, but Exec is, I believe, entirely or almost entirely
> written in assembler, not C.
	Actually, DOS is not BCPL anymore, although the old BCPL-style
entry points are there for compatibility.

			Dave

stevep@wrq.com (Steve Poole) (05/10/91)

In article <1991Jan16.015035.10356@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>(Larry Rosenstein) at googy.apple.com writes:
>
>> Not true. For most applications, there is nothing special you have to
>> do in order to yield the CPU. It is a normal part of processing user
>> input.
>
>Bzzzzt!  Wrong answer, but thank you for playing our game.
>
>Pausing for i/o is a separate consideration; the "cooperation" required
>for cooperative multitasking is built into the OS i/o routines. Waiting
>for i/o _is_ cooperating. It is the case of a routine that goes CPU
>bound and doesn't bother to give back to the OS the chance to allow
>another task to execute that differentiates cooperative from preemptive
>multitasking.
>
I doubt that you need to explain multitasking nomenclature to Larry or any
of us.  Larry's point was that during the course of a typical application, the
event loop is tripped through frequently enough for cooperative multitasking
to proceed smoothly.

An event loop in the midst of a computation intensive routine is no big deal,
and a standard part of a responsive, well-behaved application.

True, many things could be better.  Bagging old models at the expense of
application base can be done, if riskily.  Multifinder does a fine job for
the vast majority of users, despite lacking some of the features I'd
really like to see.  The world's full of tradeoffs.

-- 
--------------------------------------------------------------------------
-- INTEL 80x86: Just say NOP -- Internet: stevep@wrq.com -- AOL: Spoole -- 
--------------------------------------------------------------------------

peter@sugar.hackercorp.com (Peter da Silva) (05/15/91)

In article <1991May10.010449.11340@milton.u.washington.edu> stevep@wrq.com (Steve Poole) writes:
> of us.  Larry's point was that during the course of a typical application, the
> event loop is tripped through frequently enough for cooperative multitasking
> to proceed smoothly.

But it isn't. Observed behaviour: a Mac II (which certainly has the Amiga 1000
beat on horsepower) just doesn't run smoothly compared to the older Amigas.

> An event loop in the midst of a computation intensive routine is no big deal,
> and a standard part of a responsive, well-behaved application.

Yes it is a big deal, and no it's not a standard part of any such thing. It's
just something that Apple programmers have to do to keep the faith.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

stevep@wrq.com (Steve Poole) (05/16/91)

In article <1991May15.113621.22300@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:
>But it isn't. Observed behaviour: a Mac II (which certainly has the Amiga 1000
>beat on horsepower) just doesn't run smoothly compared to the older Amigas.
>
I didn't make any claims about relative smoothness.  I've used a Mac II for
years and find that in most cases it's smooth enough.  There are plenty
of crappy apps that DON'T cooperate, but there are plenty that do.

>> An event loop in the midst of a computation intensive routine is no big deal,
>> and a standard part of a responsive, well-behaved application.
>
>Yes it is a big deal, and no it's not a standard part of any such thing. It's
>just something that Apple programmers have to do to keep the faith.

Obviously the context was within a Mac application.  No need to intentionally
misinterpret.  I've never found it to be particularly troublesome.  Clearly,
a preemptive solution would be preferable, but anyone with a modicum of
intellect can cope.
-- 
--------------------------------------------------------------------------
-- INTEL 80x86: Just say NOP -- Internet: stevep@wrq.com -- AOL: Spoole -- 
--------------------------------------------------------------------------

peter@sugar.hackercorp.com (Peter da Silva) (05/17/91)

In article <1991May15.171830.25748@milton.u.washington.edu> stevep@wrq.com (Steve Poole) writes:
> In article <1991May15.113621.22300@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes:
> >But it isn't. Observed behaviour: a Mac II (which certainly has the Amiga 1000
> >beat on horsepower) just doesn't run smoothly compared to the older Amigas.

> I didn't make any claims about relative smoothness.  I've used a Mac II for
> years and find that in most cases it's smooth enough.  There are plenty
> of crappy apps that DON'T cooperate, but there are plenty that do.

I *am* making claims about relative smoothness. And your "smooth enough" would
drive me crazy. Just as a Microsoft Windows user's "smooth enough" would drive
you crazy. And we're each satisfied.

> >> An event loop in the midst of a computation intensive routine is no big deal,
> >> and a standard part of a responsive, well-behaved application.

> >Yes it is a big deal, and no it's not a standard part of any such thing. It's
> >just something that Apple programmers have to do to keep the faith.

> Obviously the context was within a Mac application.

Not obvious to me.

> No need to intentionally
> misinterpret.  I've never found it to be particularly troublesome.  Clearly,
> a preemptive solution would be preferable, but anyone with a modicum of
> intellect can cope.

If I wanted to just "cope" I'd probably have an MS-DOS machine. It's a lot
cheaper and from where I sit not a lot more painful than a Mac for programming.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.