America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, July 24, 1990  10:00 p.m. eastern time
Topic:  Getting the Most out of GS/OS
Forum Leader:  Dave Sugar (AFL Dyfet)


AFL Dyfet  Welcome to the Apple II Development
AFL Dyfet  Forum.  Tonight's event is how to get the most
AFL Dyfet  out of GS/OS...
AFL Dyfet  The floor is now open to questions for tonights topic.
AFL Dyfet  Okay, Scott, you have the floor now...Go ahead...
AFL Scott  Ok... How do we get the most out of GS/OS? :)
AFL Scott  (Had to ask that! :))
AFL Dyfet  Well, go ahead Gibb...
A2Evanglst Write a HFS FST for it!!!!!
A2Evanglst <grin>
AFA Gary J :)
Avery R C  Twould be nice...
T Dreamer  amen to that!!!
A2Evanglst Sorry... I had to do that... I am in a strange mood tonight]
Doctor Why tonight???
AFL Dyfet  I know Gibb...
Doctor Why :)
A2Evanglst <--- Still recovering from Kansas <grin>
AFL Dyfet  Would you care to comment on what you can comment on Kansas,
          Gibb??
AFA Gary J Yes.  Please do.
A2Evanglst Sure... Apple Flew out 31... countem 31 people to meet with
          us!!!!!
A2Evanglst The IIgs College was a great Idea but I believe that to be really
          effective
A2Evanglst there should have been 2 to 3 days of nothing but intense IIgs
          Classes
A2Evanglst One of the Highlights of the conference was NiftyList
          3.0!!!!!!!!!!!!
A2Evanglst That thing is fantastic!!!!!!!!!!!!!!!
Dave Lyons :)
A2Evanglst (Buttering up David)
AFA Gary J (good timing, Gibb :)
Avery R C  What's Niftylist?
Dave Lyons (I also just uploaded it to AUT...anybody here who can release
          it?)
AFA Gary J (Not AUT, Dave, but ADV :)
GS Geek    (it will be released in a few minutes :)
A2Evanglst The most Impressive thing about Niftylist 3.0 is the ability to do
          Toolcalls
A2Evanglst from the command line....
JeffreyH11 NiftyList is only the most useful CDA for a serious programmer
          I've ever seen!
AFL Dyfet  Okay, Dave, would you care to share a few words about Nifty??
Dave Lyons Sure:  Nifty List started out like the Monitor's "L" command, to
          disassemble machine
Dave Lyons code into something halfway legible.  NL annotates the listing
          with the names and parameters for
Dave Lyons toolbox calls being made, in the right margin.  These days it
          knows about softswitches, OS calls
Dave Lyons calls to Nifty List itself, and calls to bank 0, 1, E0, and E1
          vectors.   (That's all just in the
Dave Lyons "L" command...there's a whole screenful of commands).
Dave Lyons You can do quick-reference
Dave Lyons stuff using the " command (type  "mouse   and get all the toolbox
          calls and vectors with the
Dave Lyons word 'mouse' in them, for example--with parameters).
Dave Lyons Then you can *make* the calls interactively, from the command
          line!  Type _sysbeep, and the system
Dave Lyons beeps at you.  _NewHandle(_Multiply(#10,10),_mmstartup,0,0) and
Dave Lyons you get a 160-byte handle ("Result = $00E01234").
Dave Lyons Lots more commands for dumping system data structures (see what's
          in the heartbeat queue,
Dave Lyons what windows are open & what's in their interesting fields, etc).
          I'll stop & let you read the
Dave Lyons docs if you're interested!  Oh, there's a fast FIND command, and
          you can add yoru own command modules.
Dave Lyons (done)
MikeZip    You said a mouthful
Dave Lyons (All for $15 shareware! :)
AFA Gary J We also covered some of the new features of Nifty List 3.0 last
          week.  You
AFA Gary J can download the log and check them out, if you'd like.
AFL Dyfet  Okay, before we continue, Marty has a short announcement to make.
          Go ahead,
AFL Dyfet  Marty, you have the floor now.
AFL Marty  Thanks...
AFA Gary J Q = (Marty), RTAFT, DL Davies
AFL Marty  On Thursday, July 26 at 9 pm Eastern time...
AFL Marty  the Apple II Productivity Forum will host a conference....
AFL Marty  focusing on INWORDS, Optical Character Recognition software...
AFL Marty  for the Apple II....
AFL Marty  My guests will be Alan Bird and Rob Renstrom....
AFL Marty  of WestCode Software, the developers of INWORDS.
AFL Marty  This will be a protocol chat.
AFL Marty  (done)
AFL Marty  Thanks Dave.
AFL Dyfet  Okay, thank you Marty!  The next question is from RTAFT...Go
          ahead...
RTAFT      Any comments from Apple while at KC regarding the addition of GS
          courses in
RTAFT      Developer University? It's all Mac right now.
AFL Dyfet  GA GS Geek...
GS Geek    who'd pay so much money to fly out there, spend a few days
          learning about it?
GS Geek    the advanced sessions at KansasFest were EMPTY!  ga
AFL Dyfet  Go ahead Dave...
Dave Lyons Are you talking only about the advanced sessions at "GS College"
          (Thursday, when there were only the
Dave Lyons 30 GS College attenders around)?  People didn't want to miss the
          "main track" for those, I guess.
GS Geek    yes, thoisday. ga
AFL Dyfet  GA Gibb...
A2Evanglst The Advanced Sessions were just Q and A sessions.... there wasn't
          a set
A2Evanglst With no set schedule there really wasn't anything there to hold
          the people
A2Evanglst at the advanced sessions...
GS Geek    i'd rather see kansasfest GS college & AppleFest seminars continue
          than have
GS Geek    Apple waste time setting up $1000 courses for 8 people.  ga
AFL Dyfet  BillP, GA...
BillP      I would think any company doing any serious GS development would
          spend the money to send people...
BillP      they did for the first one I went to...
BillP      to tell you the truth, I don't think Kansas was publicized very
          well to
BillP      developers thru normal channels...
BillP      I would not have known about it if it wasn't for AO...
RTAFT      I would think it give a more positive signal to AIIGS
          developers.
RTAFT      If Apple offered them.
BillP      I did not get anything from Apple as a developer, telling me about
          kansas..
AFL Dyfet  Neither did I, Bill...
BillP      good, I thought maybe they didn't like me anymore.  :)
AFL Dyfet  Okay, Go ahead Gibb...
A2Evanglst Kansasfest could have been promoted a number of ways... but I will
          bring up the
A2Evanglst suggestion to some people that I talk to at Apple about getting it
          know through
A2Evanglst DTS and other places that Apple has....
AFL Dyfet  Okay, Ga A2GS...
A2GS       Now that I think about it, KFest had VERY little advertising and I
          think in
A2GS       general it would help the whole Apple community if even NON-Apple
          company's new
A2GS       that a Developer conf. strictly for II people which was backed by
          Apple whole-
A2GS       heartedly would indicate to these companies that II may be making
          a BIG
A2GS       comeback via NEW support from Apple among other things.   GA
AFL Dyfet  Good point...Go ahead MikeZip...
MikeZip    I agree  with A2GS about the advertising part.. I hardly heard
          about Kfest at
MikeZip    all.. I also think that a developer conference would need alot of
          advertising
MikeZip    and pre planning to insure it's not just a waste of time and
          effort.. there
MikeZip    need to be people interested
MikeZip    GA
AFL Dyfet  Actually, since Apple already does mailings to all developers,
          this would have
AFL Dyfet  been the place to mention it, and would be sufficiant to get the
          word out.
AFL Dyfet  Go ahead, Dave...
Dave Lyons That's odd that nobody got info in the mailings...I was told one
          of the monthly developer mailings had
Dave Lyons a page in there on Kansas.  Don't remember if I got one in mine or
          not, though.
Dave Lyons Anyway, I actually *liked* the size of KF this year--
Dave Lyons I don't want a 7000-person show, with whole auditoriums full of
          people to talk at.  Having
Dave Lyons 35 people in a room with meaningful Q&A sessions was great!  ga
AFL Dyfet  I think we will wrap this up with Marty's comment...Ga Marty...
AFL Marty  KFest was listed on page 28 of Apple Direct (July issue)
AFL Dyfet  Okay, thanks....I think it should have been a page 1 or 2 item,
          then...well, I
AFL Dyfet  see that the ever patient DL has been waiting for his
          question...GA DL...
DL Davies  Anyone have any ideas on making ProDOS 8 calls from a CDA, so that
          my CDA...
DL Davies  is OS independant?
DL Davies  BTW...this macro brought to you using "El Macro", written by Doug
          Davies...
DL Davies  coming soon to AOL! :)
AFA Gary J :)
GS Geek    :)
MikeZip    nice :)
AFL Dyfet  Go ahead GS Geek...
GS Geek    i thought lyons would jump at the chance.  isn't there a technote?
           anyways,
GS Geek    you haveta check OS_flag, if = P8, look at $00BF00.  If <>
          whatever is supposed
GS Geek    to be there, then assume its a new os.  If it is P8, you haveta
          install some
GS Geek    P8 code routines in bank $00, jsl to it, which will handle the
          calls.  of
GS Geek    course rtl back. the problem is WHERE to install the code...due to
          interrupts,
GS Geek    etc.  ga
DL Davies  But your buffers for reads and write have to be in bank 0 right?
          what a pain
AFL Dyfet  Yes, DL...At best, you will have to use a block move to get the
          data where
AFL Dyfet  you want, just like old ProDOS 16 did...
JeffreyH11 Your paramater blocks must also be in bank 0, and it has to be
          called in full
JeffreyH11 emulation mode.  Not only that, but bank 0 is ALL owned by
          whatever P8 program
JeffreyH11 is running, and the Memory manager won't give you anything from
          there.
DL Davies  everyone think $00/0200 is safe?
Dave Lyons (No!)
AFL Dyfet  I would copy the area of memory to a safe place, install my
          routine in, call
AFL Dyfet  it, and then copy the original contents back...Never assume
          ANYTHING is safe :)
GS Geek    (maybe the text page in bank $00...watch for screen holes)
JeffreyH11 $00/0200 may be if you save its contents and disable interrupts.
JeffreyH11 Text page in $00 is a bad idea; too many screen holes in the
          way.
DL Davies  I traced the $BF00 vector when you have appletalk
          installed....does some neat
DL Davies  stuff.
AFL Dyfet  Yes it does :)
JeffreyH11 Also; P8 might be in use when you make your call; that would be
          real annoying
DL Davies  I've noticed not many CDA's do anything in P8.  I think I've
          decide what to do
DL Davies  thanx! :)
AFL Dyfet  You can test the P8 busy flag and either sleep till the next
          heartbeat, or
AFL Dyfet  use Apple's suggested, albiet complex, way of aquiring control on
          P8's return
AFL Dyfet  from what it was doing last...
JeffreyH11 Apple's way of getting control of P8 isn't of too much use; you
          can't have
JeffreyH11 anything in Bank 0 when P8 returns.  Sorry, GA Dave
AFL Dyfet  GA Dave...sorry about missing you there...
Dave Lyons (Sorry, I was downloading last week's log at the beginning of this
          discussion!)
Dave Lyons You guys have got most of the bases covered, but I
Dave Lyons have a few things to add.
Dave Lyons $0200 is *not* very safe, at least not the beginning of it--clock
          drivers use that for work
Dave Lyons space, and most ProDOS 8 calls call the clock driver.
Dave Lyons You *can't* disable interrupts during your P8 calls, at least not
          if you want to be AppleShare
Dave Lyons server compatible.  If you make a P8 call to an AppleShare volume,
          you will HANG solid.
DL Davies  Right now I just check $E100BC and if it's 0 then I just beep
          letting the...
DL Davies  user know they can't do that function
Dave Lyons If you make a P8 call while P8 is busy, you'll trash the disk,
          probably, so be sure to check
Dave Lyons that.
Dave Lyons Once you're ready to actually borrow 1K of bank-0 space and open a
          file, you need to make sure those
Dave Lyons bits are clear in the $BF-page bitmap.  You can preserve the
          bitmap and clear the bits you want
Dave Lyons (not guaranteed safe, but it works for some people now-a-days, at
          least).
JeffreyH11 If you can't disable interrupts, then nothing in bank 0 is safe,
          is it?
Dave Lyons Right.  That's why I say "There's no clean way
DL Davies  You could use the stack! ;)  chop off some for your use
AFL Dyfet  Ultimately, no, since you can not be certain someobody's irq
          handler isn't out
AFL Dyfet  in the middle of the file buffer you just chose, either :)
Dave Lyons to make P8 calls from a CDA" every chance I get.  The best you can
          do it make a good guess about
Dave Lyons what memory is unimportant to the application's interrupt
          handlers.
Dave Lyons (that's all I have...more questions?)  SOMEWHERE there
Dave Lyons is a text file with somebody's good info on all of these
          issues...maybe it was on CompuServe?  ga
DL Davies  Sounds like too much of a pain to deal with...thanx for the input
          though! DONE
AFL Dyfet  The stack might be a good place to get the space for the front end
          interface to
AFL Dyfet  P8...but that still leaves the question of where to put the file
          buffer safely.
JeffreyH11 Could Apple maybe do something with P8 in the future to make it
          easier - like
JeffreyH11 maybe provide an entry that lets things be in other than bank 0
          without
JeffreyH11 breaking existing P8 software?
DL Davies  Ok...I'm done! :)
DL Davies  Look for "El Macro" real soon...cut and paste screens :)
Dave Lyons Jeff, how could that work?
Dave Lyons P8 would need to have an extra K of memory lying around it didn't
          need for anything, right?  If
Dave Lyons you can come up with a plan that'll work, I can see the the right
          people consider it.
JeffreyH11 Maybe a second entry point to P8 that would allow the parm block
          and buffers to
JeffreyH11 have 3-byte addresses instead of 2-byte.
AFL Dyfet  Actually, a P8 written in 65816 code would be nice :)
Dave Lyons Uhhh...that's probably impractical.  P8 has very *little* room to
          grow.  Writing a "shell" around
Dave Lyons P8 like that just begs the question of how to make P8 calls from
          OUTSIDE bank 0, where that shell
Dave Lyons would be--how would it actually be implemented to avoid screwing
          up SYS-application memory?
JeffreyH11 good question.  If i think of anything revolutionary, I'll let you
          know.
AFL Dyfet  Go ahead, GS Geek...
GS Geek    i think using the DP is a great idea.  256 bytes would be plenty.
          sure, you
GS Geek    are gonna do only 10 byte reads (SLOW!) but it'd work, eh.  ga
Dave Lyons (See a late P8 Technical Note--DON'T put your parameter block on
          zero page!!  It fries with
Dave Lyons AppleTalk.)
AFL Dyfet  But you still need a 1K file buffer for the P8 file, Geek...
AFL Dyfet  Okay, Avery has the next question...Go ahead, Avery...
Avery R C  Has ANYONE ever gotten Leapfrog to work at all?
AFL Dyfet  Go ahead DL...
DL Davies  NO! And it never will! :)
Avery R C  <heh!>
DL Davies  not reliably at least ;)
Avery R C  Oh well, one can always dream...
AFL Dyfet  I ran it once...it fried the system!  I couldn't even reboot...the
          bar came
AFL Dyfet  up, slid a little, and then died :)
AFA Gary J The sliding bar died?  That IS serious :)
DL Davies  The tools just aren't designed for that.  DONE:
AFL Dyfet  It turned out that it didn't like something I had open with a
          resource fork,
AFL Dyfet  and clobbered a system file!
AFL Dyfet  I since noticed that it confuses the resource manager, since it
          becomes the
AFL Dyfet  owner of the last open application...
A2GS       Anyone seriously interested in working on a GS Multifinder???
DL Davies  I was working on a GS MultiFinder for WordPerfect...but it
          required
DL Davies  applications to make a few simple shell calls.  Worked very WELL!
          :)
AFL Dyfet  Go ahead Scott...
AFL Scott  If anyone does make a Multifinder, please, please include a form
          of memory
AFL Scott  protection.
AFL Dyfet  Go ahead Jeff...
JeffreyH11 As I see it, a good GS MultiFinder would have to have a provision
          for text-
JeffreyH11 based programs to run in a window.  (P8 too would be nice,
          but...).
AFL Dyfet  Go ahead A2...
A2GS       Although I personally think it's possible to do without breaking
          TOO many of
A2GS       Apple's rules (if any) I was wondering what Dave had to say on
          this??  I know
A2GS       the toolbox wasn't originally designed for this kind of
          environment...
A2GS       I have spoken to several Amiga (Ugh!) developers about how their
          multitasking
A2GS       system works and with some minor editions to future programs, they
          could all
A2GS       exist in harmony with the system under a multitasking OS.  GA
AFL Dyfet  GA Scott....
AFL Scott  Seems to me that most, if not all of the developer tools would
          have to be
AFL Scott  rewritten for them to be used under a "Multifinder", too.  I mean,
          GSBug
AFL Scott  would probably go bannas... unless of course memory protection
          were implemented
AFL Scott  Done.
AFL Dyfet  Go ahead, Dave...
Dave Lyons A year and a half ago, or so, we had a pretty long discussion, and
          I was arguing *for* GS/OS to run
Dave Lyons P8 apps by simulating P8.  In the end, I was convinced this could
          not be done to an acceptable
Dave Lyons degree of compatibility.
Dave Lyons On MultiFinder, I have little to say except:  I personally want to
          have one, and I don't thinkit
Dave Lyons can be done adequately in 6K, and there are a *lot* of issues that
          need to be dealt with.  The system
Dave Lyons software itself is the -best- place to deal with them.  ga
AFL Dyfet  I was just about to make that same argument, Dave (over P8)!!!
          :)
A2GS       I was referring to a GS Multifinder running GS Apps Not P8!
AFL Dyfet  I understand AppleTalk also breaks some P8 rules...well, enough,
          Go ahead Bill.
BillP      Maybe if everyone donated $10 or so, we could convince someone to
          develop Multifinder GS...
AFL Dyfet  Okay...A2...Go ahead...
A2GS       As I said before, I was referring to a strictly GS multifinder, I
          wasn't even
A2GS       considering a P8 multifinder, I believe getting a GS multifinder
          to work is
A2GS       feasible and I truly believe investing time in a P8 type
          multifinder is a waste
A2GS       with all the memory probs. which would probably have to be dealt
          with from the
A2GS       start of the project.
A2GS       GA
JeffreyH11 I agree.  P8 programs expect to rigid an environment.  About the
          closest we'll
JeffreyH11 ever have to a P8 MultiFinder is SoftSwitch.  Still, I would like
          to see a GS
JeffreyH11 MultiFinder able to run text-based 16-bit programs in individual
          windows, at
JeffreyH11 least the ones that behave and use firmware or Console driver for
          I/O
AFL Dyfet  Go ahead, A2...
A2GS       Well, is there any SERIOUS interest in a GS Multifinder as opposed
          to a P8 one?
A2GS       I think, using the existing OS, it is VERY possible to do.
JeffreyH11 Absolutely.  Esp. since the Memory Manager makes it all a little
          more feasible
JeffreyH11 than with P8.  You would have to use some kind of "virtual"
          start/stop
JeffreyH11 mechanism for the tool sets, like we discussed last month.
AFL Dyfet  Go ahead Bill...
BillP      You mentioned the Amiga...  80% of everything developed doesn't
          even
BillP      take advantage of the multitasking.
BillP      Develeoper seem to always want to take over the machine.
A2GS       Use VBL's
BillP      I would guess we've have it a little better on the IIGS but...
BillP      there still would be loads of programs that just wouldn't be
          friendly.
A2GS       That's not the point...GS people are not like Amiga people
          (Fortunately  :)
BillP      Does Rastan launch from Desktop?
AFL Dyfet  Go ahead Scott...
AFL Scott  The 80 percent are games, right? :)
BillP      exactly
BillP      good point
A2GS       What about all the educational programs and productivity and
          business programs
A2GS       which do launch from the Finder??
A2GS       Those are the ones which you WANT to use under a
          multi(tasking)(finder)
A2GS       environment.
JeffreyH11 And communications, utilities, programming tools, etc.  not
          games!
A2GS       Exactly!!
BillP      ::hiding back in corner::
BillP      :)
JeffreyH11 :)
A2GS       So Bill, when can you have it finished by??
A2GS       :)
BillP      hehehe
AFA Gary J (go to your corner and program, Bill :)
BillP      it's on my list right after AOGS
A2GS       What decade would you estimate it'll be finished by???
BillP      somewhere around rom 9
AFL Dyfet  In time for the Rom 9 machine, I guess
AFL Dyfet  GMTA
BillP      :)
BillP      LOL!!!
AFL Dyfet  Oops, Bill, I think we now have started a rumor :)
AFL Dyfet  I expect to hear all about the rom 9 machine on ATB before
          midnight :)
A2GS       So anyone want to put together a team of people to plan out a GS
          multitasker/
A2GS       finder???
A2GS       Dyf?????????????
JeffreyH11 Sounds like fun.
AFL Dyfet  I think that's Apple's job, A2...
AFA Gary J Me too.
JeffreyH11 Is Apple going to do it, though?
A2GS       Then we may never see it (no offense Dave :)  They got their hands
          filled with
A2GS       other things.
AFA Gary J It's gotta come with tool updates and that sort of thing, I'm
          sure.
Dave Lyons Hey, you can never tell with Apple!
Dave Lyons Maybe we'll surprise you some day.
Dave Lyons (Maybe it will even be a pleasant surprise, for a change? :-)
BillP      yea...   the new beginning!   ;)
A2GS       A multifinder/tasker is a stand alone App. which launches other
          Apps. there's
A2GS       NO reason to completely rely on Apple to write it.
JeffreyH11 If we can get a couple of people to figure out how to do it, maybe
          Apple
JeffreyH11 will put higher on their list.  It could be done as a standalone
          app., but
JeffreyH11 I think it would be better if it had Apple's support.  GA, Dave.
A2GS       I'm willing to help design it if 3-4 other people will also lend a
          hand.
Dave Lyons The "Finder" part of a multifinder would be easy--just make the
          Finder do a "Quit" to a new
Dave Lyons application, with a new bit to be defined in the Quit flags as
          "launch it but return control to
Dave Lyons me"!  All the hard stuff would happen behind the scenes, in the
          form of toolbox support for
Dave Lyons multiple applications.  This is where everything gets tricky, but
          not impossible.  One of the best
Dave Lyons things you can do is encourage everybody you see to make
          *intelligent* use of the toolbox!  When
Dave Lyons there's a toolbox call for something, USE IT, unless you have a
          compelling reason not to.  Toolbox
Dave Lyons calls have the flexibility to Do the Right Thing in possible
          future environments, but if you go right
Dave Lyons to the hardware, you make it harder for stuff like multifinders to
          work acceptably.  ga
AFL Dyfet  Two critical areas is tool call arbitration, and tool
          initialization/dp space.
Dave Lyons (Dyfet, what's "tool call arbitration"?)
AFL Dyfet  Tool call arbitration:  You don't want another task calling a tool
          while it's
AFL Dyfet  in the middle of use (like say the memory manager) :)
A2GS       It isn't necessary to shape the tools to work with the
          environment, the tools
A2GS       work perfectly as they are, what is necessary, is to get companies
          to put in a
A2GS       little extra code to check whether they are running under this
          type of
A2GS       multifinder environment and if so, don't do certain things like
          reopen the
A2GS       certain managers and when you want to pass info like setting up a
          new grafport,
A2GS       send it via a multifinder call not directly to the tool
          dispatcher, etc...  GA
Dave Lyons A2GS, I'm missing your point.  Can you give an example of
          something that *is* appropriate to do
Dave Lyons in a single-app environment that's not appropriate in a MF env?
AFL Dyfet  The problem there, A2, is that you are relying on the rewriting of
          appls to
AFL Dyfet  be compliant...
Dave Lyons Dyfet, it's not a problem--the Memory manager, for example,
          already disables interrupts whenever it
Dave Lyons is not safe to get a mem mgr call from an interrupt routine, for
          example.  If app switching happens
Dave Lyons during GetNextEvent or SystemTask time, it's almost a complete
          non-issue.
A2GS       Ah, well, there's the prob.  it's nearly impossible to get
          programs not
A2GS       designed to work under a multifinder OS to work properly which is
          why AMIGA
A2GS       programs that are designed to work under it's OS will not work if
          they are
A2GS       run through the OS.
AFL Dyfet  One only needs to look at what happened to mac application
          programming to see
AFL Dyfet  what introducing multifinder specific app. requirements :)
Dave Lyons I don't think I agree...for ex, when I wrote DIcEd I was *not*
          thinking of a MultiFinder, but I
Dave Lyons didn't do anything "weird"...I don't write directly to the screen,
          etc.  I don't see what the problem
Dave Lyons would be for reasonable applications.  Draw with QuickDraw, use
          windows, etc.
JeffreyH11 Switching would almost have to occur at GetNextEvent or SystemTask
          time, and
JeffreyH11 that would mean that to get switching just by clicking on windows
          to work,
JeffreyH11 almost every application would have to use TaskMaster, or be
          tricked into
Dave Lyons No!!!
JeffreyH11 No, what?  Is there another way??
Dave Lyons It only means the SYSTEM has to patch GetNextEvent so that it
          doesn't *return* to the app until much,
Dave Lyons much later.  This *works* on the Mac!
AFL Dyfet  That would work similar to Mac multifinder, which originally was
          driven off
AFL Dyfet  event manager.
JeffreyH11 OK.  I can see how that works w/TaskMaster; I just didn't see at
          first how to
JeffreyH11 handle it elsewhere.  Nevermind.
Dave Lyons (BTW, when your app calls GetNextEvnet right now, for a mouse
          click in an NDA window, it passes
Dave Lyons the event to the DA, which can handle it however it wants, and
          *then* the GNE call finally returns
Dave Lyons with a null event to your app!  The principle is the same--it
          could give control to another app.)
A2GS       Dave, the Toolbox wasn't designed to have multiple programs
          calling it, so if
A2GS       one program make a setbrush call and then another app. also
          running also makes
A2GS       a different setbrush call, the first app. will lose it's brush.
          The problem
AFL Dyfet  A2...event multitasking wouldn't have that problem....the program
          would release
AFL Dyfet  control during getnextevent...
JeffreyH11 Not if each application issues the call only for its own
          GrafPorts.
Dave Lyons Eh?  Are you talking SetPenPat, A2GS?  That exists
Dave Lyons in *each port*, and two apps would *not* be sharing the same
          port.
A2GS       iyep.
Dave Lyons Your point is valid, though:
AFL Dyfet  But this would require a redesign of event management, and tool
          initialization.
Dave Lyons There *are* some toolsets where there is some considerable context
          switching to be done.  SANE,
Dave Lyons for example, has current settings for a single client on its
          direct page.  Tool initialization
Dave Lyons is something the system could do--just patch all the startup
          functions and shutdown functions to
Dave Lyons "do the right thing" for each toolset.
JeffreyH11 We discussed that topic about a month ago, about virtual
          startup/shutdown.
Dave Lyons The window manager would have to be modified heavily, to give each
          app the illusion of having
Dave Lyons its own window chain, while still keeping a "real" window chain so
          that all the vis regions and the
Dave Lyons desktop region are Right.
JeffreyH11 Couldn't it do what MF does on the Mac, where the active App's
          windows are
JeffreyH11 all in front, so each app. appears to have a "layer" where all its
          windows are
JeffreyH11 grouped together.
Dave Lyons Sure.  That's a very reasonable way.
JeffreyH11 It works well on the Mac, though it takes some getting used to.
Dave Lyons It still means you have to patch GetFirstWindow and GetNextWindow
          to "lie" to the app.
AFL Dyfet  To patch getevent wouldn't be so bad...
AFL Dyfet  (oops, getwindow)
JeffreyH11 Well, if there wasn't a "next" window for that app., maybe, but
          the "first"
JeffreyH11 window would always belong to the active app. if it had any
          windows.
Dave Lyons Are you sure? :)
Dave Lyons What if the app gets control at a time
Dave Lyons when it is *not* the frontmost app?  Isn't that the idea behind a
          multifinder?  (Well, one of the
Dave Lyons ideas?)
Dave Lyons For example, when the app gets an Update event, it may or may
          *not* be the front app.  You want all
Dave Lyons the windows to update for all your apps, and this can be done.
          There are "major" and "minor" context
Dave Lyons switches.  Major = the apps windows come to the front, but minor =
          give the app control to update
Dave Lyons a window, or to do some calcuations for a while, without moving
          the windows, but allowing the
Dave Lyons app to see most of its environment (the Mac MF actually swaps in
          and out sets of toolbox patches
Dave Lyons that each app has made, so they don't interfere with each other).
          When an interrupt routine
Dave Lyons gets called, the right environment has to be set up, too.  Same
          for Run Queue routines on the GS.
JeffreyH11 True; I forgot about Update events and interrupts.  You would
          need
JeffreyH11 each application to have a "Layer" where it can only see windows
          in its own
JeffreyH11 layer.
Dave Lyons JH, Yes, exactly.
JeffreyH11 And HeartBeat tasks, because some programs will still use them.
Dave Lyons Yes--HB tasks are useful in *some* situations where RunQ tasks are
          useless.
Dave Lyons (If you want to get control periodically in a text-based program,
          for example, or if you have
Dave Lyons something to check for at times the system is *not* prepared for
          you to make most toolbox calls).
A2GS       You could also wait for any toolbox events currently being done
          within an app.
A2GS       to be finished before going over to a newly selcted app. (by the
          user).
JeffreyH11 I forgot that Run Queue doesn't work if Desk Manager is not
          active, as from a
JeffreyH11 text application.
JeffreyH11 (just got my Vol. 3 a week ago; I've only read it once :)
Dave Lyons :)
Dave Lyons Yeah, but reading the *final* version once is good...I read about
          6 bazillion drafts that were
Dave Lyons all screwed up.
A2GS       So under a Multifinder environment. make ALL managers active.
Dave Lyons Why make them all active?
A2GS       Well, at least the Desk Manager.
Dave Lyons To stay compatible, I think you'll *have* to let application make
          LoadOneTool calls and
Dave Lyons StartUpTools calls, even if the tool is already "really" there.
          Loading everything into memory
Dave Lyons before it's needed is probably not a good idea--takes up a lot of
          RAM unnecessarily!  As long
Dave Lyons as you know who's using what, you can use no more RAM than
          necessary.  I think "lying" with the
Dave Lyons Status functions would work well there.  Force an App to start a
          particular tool before it can tell
Dave Lyons that it's available.
JeffreyH11 Yes, only activate the ones that at least one application
          requests.  Also,
JeffreyH11 you would have to do some fancy stuff with the Resource Manager as
          well, so
JeffreyH11 that applications would only see their own search path.
Dave Lyons Uh...
JeffreyH11 It's the job of the ToolBox to lie to applications in order to
          keep everything
JeffreyH11 running smoothly, isn't it?
Dave Lyons Jeff, read that Resource Manager chapter One More Time...I think
          the RM is the one toolset that is
Dave Lyons *most* ready for a MF environment, because it *already* keeps
          separate search paths for every
Dave Lyons user id that starts it up.  Works great for NDAs, like the control
          panel.  Go in Finder and then
Dave Lyons open up the CP and a CDev; in Nifty List, type 1001r to see that
          Sys.Resources is the only thing
Dave Lyons in the Finder's search path, but the CDev, the Control Panel, and
          then Sys.Resources are all in
Dave Lyons the CP's search path [500x i].
JeffreyH11 Is that what Get/Set CurResourceApp does?
Dave Lyons You betcha!  Everybody using RM calls ResourceStartUp once, and
          then whenever they
Dave Lyons want *their* search path they make sure they're the current
          resource app, restoring it to whatever
Dave Lyons it was before.  The Desk Manager actually takes care of this *for*
          you if you're an NDA, at least
Dave Lyons in your Action routine and in Run Queue routines you've installed
          (will have to double-check the
Dave Lyons run-q thing).
A2GS       Well, I've had enough hypthetical talk for tonite, tune in next
          week when Apple
A2GS       releases a protable GS capable of displaying 24-bit color on a
          color LCD screen
A2GS       costing only $500.00
AFL Dyfet  and running at a phenominal 4.7 mhz?? :)
JeffreyH11 Incidentally, I seem to recall an event code that was never really
          used which
JeffreyH11 would make a MultiFinder easier for applications to support - the
          "switch"
JeffreyH11 event.  Aren't applications required to make sure that everything
          is still OK
JeffreyH11 after they receive a switch event?
Dave Lyons Yeah, there are a couple unused events that could be used for
          suspend/resume events.
Dave Lyons Still OK how?  Mostly apps want to use suspend events to publish
          their private scraps into the
Dave Lyons real System clipboard, etc.
JeffreyH11 According to the TB Reference page 7-14 (vol. 1), "Switch events
          were not
JeffreyH11 implemented at the time of publication, however, when they are
          generated, ...
JeffreyH11 your application should check to make sure that the environment is
          still the
JeffreyH11 same as it was before the switch event occurred."  I take this to
          mean, among
JeffreyH11 other things, to dereference all handles again, reset the current
          GrafPort,
JeffreyH11 etc.
Dave Lyons Well, derefing handles needs to be done after almost *any* toolbox
          call.  The system could
Dave Lyons preserve the port with no difficulty.
Dave Lyons (finding that page....)
JeffreyH11 ("Responding to other events..."  True, but it still provides some
          flexibility
JeffreyH11 in how a switch is dealt with by the system.  You were right;
          there are also
JeffreyH11 2 "Undefined" events (#4 and 7) that could be used for suspend,
          etc.  See page
JeffreyH11 7-7.
Dave Lyons Interesting--I'd missed that paragraph.  Sounds cool, though.
Dave Lyons BTW, when you hit Ctrl-T in NL to see the SHR screen, I want to
          give a visual indication that
Dave Lyons it isn't the "real" app screen.  What do you suggest?
JeffreyH11 Also, since What is a word, isn't there room for zillions more
          event codes?
Dave Lyons (I'm playing with the palette in various ways now.)
JeffreyH11 How about an icon in the right end of the menu bar, like Timbuktu
          does on the
JeffreyH11 Mac when you look at the other guy's screen?
Dave Lyons Well, an *event code* is a word, but GetNextEvent and SetEventMask
          etc need an event MASK word,
Dave Lyons limiting the number of types to 16.
JeffreyH11 Sorry; forgot about that.  Come to think of it, TaskMaster needs a
          mask as
JeffreyH11 well.
Dave Lyons There may not even be a menu bar...I tried eor-ing
Dave Lyons [Yes, TaskMaster passes that very same mask to
          GetNextEvent...that's why it needs it.]
Dave Lyons all the colors with $0fff, but that made the screen puke-green
          instead of desktop-blue, so I think
Dave Lyons I'll try reversing all the colors 0..15 --> 15..0 instead.
JeffreyH11 just modify a few pixels in one corner of the screen, and put them
          back when
JeffreyH11 done.
JeffreyH11 Just reversing 0 and 15 would do it for most apps.
Dave Lyons Do you know of any apps where it wouldn't?
Dave Lyons They'd have to have *symmetrical* color tables for it not to make
          a difference (colors 0 and 15
Dave Lyons match, 1 and 14 match, etc).
JeffreyH11 Just ones where 0 and 15 aren't used a lot.  Also ones that used
          more than
JeffreyH11 one palette would add complexity, but not make it impossible.  I'm
          looking
JeffreyH11 forward to the new NiftyList; my $15 will be in the mail soon!
AFA Gary J :)
AFA Gary J The OLD NiftyList was well worth the $15.  I can't wait for the
          new one.