tofro wrote:And, properly written applications assumed, there shouldn't be any noticable difference from an end-user's perspective between a pre-emptive or cooperative design.
So I thought the same thing regarding "properly written applications" until I started to dig a little deeper into cooperative multitasking again. The idea of properly written ends up being at the perspective of the coder plus how to divide that code up so that it behaves the way one would expect (i.e. as in preemptive) is not trivial. The Moire program, for instance, why on earth wouldn't that just keep going in the background when you open up a text editor. The programmers decided that it would behave this way, versus that way, and it would be hard to call them out saying "you are doing it improperly." So when you give control to the developer and there are thousands of developers with each having a different perspective, the end results seems a bit chaotic.
When I ported my shell environment with scripting language, in retrospect I never realized how difficult it was to actually get an interpreter to behave properly in cooperative multitasking. You'd think (I did as I was recollecting) that it's just about calling GetNextEvent at the top of the loop, but playing around with it under System 7.5, there are plenty of occasions when it takes more time from the OS than expected and things in the background just stall out, or you have to wait for a loop to finish. Sometimes events get out of sequence having been queued up while running in the background and a loop will finish before the keyboard events are then caught. Or how slow a simple sprite animation (Globe) becomes when running in the foreground (or when Moire is running in the foreground). It's just crazy and the Mac was supposed to be the most prolific cooperating multitasking kernel out there that lasted almost 20 years.
I recommend you give it a try with the Mini vMac emulator as it is one that you can slow down to real-time. I was using Basilisk and on my current machine and that thing runs so fast you can't glean anything from it when multiple programs run to see how the OS behaves (though overall it is a better emulator). Side-by-side to the QL, which behaves the way you'd expect, it's just crazy. It definitely didn't meet my idea of how I expected cooperative to work and I thought I properly wrote my shell on the Mac (and as mentioned, it was well received -- reviewed by technical editors from MacUser and MacWorld so I would have thought they would point out if they felt it misbehaved). It's been almost 20 years since I actively used a Mac with System 7.5 and after having gotten used to modern Windows/OS X/Linux it was surprising how much we put up with back then :-/...and of course playing with a QL, when I say that it behaves as expected I guess I mean that it behaves like all the modern OS's currently do which is pretty remarkable for a 48K kernel form 83/84 so kudos to Tony Tebby!