America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, October 2, 1990  10:00 p.m. Eastern Time
Topic:  Assembly Language Programming
Forum Leader:  Dave Sugar  (AFL Dyfet)

AFL Dyfet  Tonight's topic is assembly language programming.
AFL Dyfet  Yes, Surak, that would be a good place to start...go ahead with
          your question.
Surak TFF  OK... 1) When does the Control Panel NDA expect you to return it
          something
Surak TFF  other than a 0?
Surak TFF  It doesn't really say much in the technote about returning
          values.
Surak TFF  (make that filetype note)
Matt DTS   I believe it says either "reserved" or "unused" all the places
          you're supposed to return zero.
Matt DTS   No one here has the functions memorized so we can't answer that
          off the tops of our heads, but you can
Matt DTS   look at the sample CDEV in the latest sample code batch if
          something's really confusing you.
Dave Lyons Yup, that's safe.  Return 0 unless it says you should return
          something different.
Surak TFF  OK...And Part 2) Can a CDEV install an interrupt handler as part
          of its boot
Surak TFF  procedure?
Surak TFF  (Say, a SysBeep procedure, or something of that type)
Matt DTS   You'd have to allocate new memory under a user ID that's not the
          CDev's, but yes, it can be done.
Matt DTS   The Control Panel reserves the right to shut down your CDev and
          purge all memory with its ID when it
Matt DTS   feels like it, so you'd have to give it memory with some other
          user ID (get a new one from GetNewID)
Matt DTS   so it would stick around.  (GA)
Surak TFF  OK, thanks... I guess I'll have the CDEV out soon then :)
          GA...
AFL Dyfet  GA A2...
A2GS       This is really a Q....wouldn't shutting down a CDEV where the CDEV
          has
A2GS       installed an Interrupt Handler be kind of dangerous?  You'd have
          this loose
A2GS       handler picking interrupts with no CDEV making use of it.
AFL Dyfet  GA Winkie :)...
WinkieJim  The CDEV would have to put the code that handles the inturupt in a
          separate
WinkieJim  memory handle.
WinkieJim  ga
A2GS       I know that...but still the interrupt would be handled with no
          application
A2GS       making use of the info provided by the handler..if nothing else,
          it's a waste
A2GS       of CPU time.
Matt DTS   That's why you have to have separate code that *won't* go away
          claiming the interrupts.
Matt DTS   You have to use the system's communicative facilities (like
          MessageByName) to set flags that the
Matt DTS   CDev can read when it's ready.
Matt DTS   And sometimes you want separate code doing things when the CDev is
          not around.  For example,
Matt DTS   a "SoundMaster" CDev should patch out the appropriate vectors and
          play sounds when disks are
Matt DTS   inserted (or whatever) even if the CDev isn't open.  The CDev
          communicates with the other code to let
Matt DTS   it know what sounds to play at the appropriate times.  (GA)
AFL Dyfet  GA Surak...
A2GS       Ok. But since no actual application is making use of the
          Interrupt...there's
A2GS       no Direct to now that it exists and shut it down when it's not
          useful anymore.
Surak TFF  OK, well, my CDEV doesn't do ANYTHING with the interrupts - the
          interrupt hand-
Surak TFF  ler does everything with them... It's just a SysBeep-type
          routine... And others
Surak TFF  So, there shouldn't be any problem of that kind, A2... :)
Surak TFF  Matt, you picked me out exactly.. :)   [GA]
AFL Dyfet  GA Winkie...
WinkieJim  Matt, isn't there a shutdown command sent to a Cdev when the
          Control panel
WinkieJim  closes or switches Cdevs?
WinkieJim  that would seem to allow for shutting off the various intrupts.
WinkieJim  ga
Matt DTS   Yes, that's true...
Matt DTS   ...but if you're trying to write something that stays around in
          the background all the time...
Matt DTS   ...you want it to stay around *AFTER* the shutdown command is
          received.  If you're writing a CDev that
Matt DTS   lets you pick a sound file to play instead of the normal beep, you
          probably still want to hear it
Matt DTS   after you close the CDEv or the Control Panel!  (GA)
A2GS       Including for ex. the  Ensoniq interrupts?
AFL Dyfet  GA Jeffry
JeffreyH11 A2, If the interrupt routine was something you would need to shut
          down before
JeffreyH11 reboot, you would have to write it such that the CDEV could tell
          the interrupt
JeffreyH11 routine to shut itself down, possibly through MessageCenter as
          Matt suggests.
JeffreyH11 GS
JeffreyH11 (OOPS: GA) :)
AFA Gary J :)  GS is fine :)
JeffreyH11 :)
A2GS       Exactly...but that requires specific code....the original Q was
          whether it
A2GS       was "Dangerous to write an Interrupt Handler which ALWAYS hung
          around,
A2GS       assuming that a Handler need not always be active (barring the
          sysbeep example)
JeffreyH11 The answer to which is "No, not if it needs to to do its job."
JeffreyH11 P.S. And it's done properly.  GA
A2GS       "Dangerous" also includes wasted CPU time.
A2GS       Not necessarily a possible Fatal error.
AFL Dyfet  Go ahead Jeffrey...
JeffreyH11 Something that only needs to be active while the CDEV is visible
          should be
JeffreyH11 installed when the CDEV is selected, not at boot time.
JeffreyH11 GA (or GS :)
AFA Gary J :)
A2GS       Forget it...we're talking about theoretical problems/wasted
          time.
WinkieJim  Please kill me if I'm wrong, but couldn't the Intrupt handler take
          itself out
WinkieJim  of the intrupt queue when it's finished?
JeffreyH11 (Yes. )
A2GS       Yes...But that wasn't brought up..because it also requires special
          code.
AFL Dyfet  I think we will now get to Nuzz's question, and maybe move this
          discussion
AFL Dyfet  into the message area :)...Go ahead Nuzz...
JeffreyH11 Good idea.
Surak TFF  Yes, good idea.
Nuzz       I see that the latest source code is also in tool form. Can I
          include that in
Nuzz       an app. Does it need a license, or whhatever
Nuzz       GA
AFL Dyfet  GA Matt :)
Matt DTS   "the latest source code" is not in "tool form" - One of the
          twenty-four things we just released is
Matt DTS   a set of tools we include in both linkable library and user tool
          set form (mostly because some
Matt DTS   languages don't let you link in external code).  You're free to
          use this in an application without
Matt DTS   licensing, WITH THE EXCEPTION OF pixelMap2Rgn, which is part of
          the Pixel Map Tools.  That covers
Matt DTS   the patented region structure so we have to license it, just like
          BitMap2Rgn on the Macintosh.
Matt DTS   GA.
Nuzz       You mean I can use all the PixelMap tool but use the pixelMap2Rgn
          call. GA
Nuzz       but not use call. Sorry
Matt DTS   You can use everything for free, but there's a modest license fee
          (I think it's like $25) if you
Matt DTS   use pixelMap2Rgn in an application you distribute.  If the call is
          useful to you then it's probably
Matt DTS   worth the fee.  FakeModalDialog and the rest of the PM tools have
          no license for their use.  (GA)
Nuzz       Sounds good. Thanks Done
AFL Dyfet  GA Tamira...you have the floor now...
Tamira     My only ? centers on whether anyone has seen CHERNISS
Tamira     doing something and need some feedback
AFL Dyfet  Go ahead Winkie :)...
WinkieJim  No. GA
AFL Dyfet  Jim, 10 yard penalty :)
Tamira     thanx anyway  :(
WinkieJim  Sorry...couldn't resist
Tamira     jim   :P to you so there
WinkieJim  It just seemed a wierd question to come up here :)
AFL Marty  (Seen it?  I don't even know what it is.)
AFA Gary J :)
Tamira     forget it then!
AFL Dyfet  Okay, I believe Surak is next...Go ahead Surak...
Surak TFF  OK...
Surak TFF  In the SysBeep-type routine I mentioned before...
Surak TFF  Is it possible to play a digitized sound (from within the vector
          call to BELL1)
Surak TFF  while the Sound Tools are already being used? I know Desk
          Accessories can't do
Surak TFF  it because interrupts could try to use the DOC while they're using
          it... But
Surak TFF  if I saved DOC RAM around it, I am already an interrupt, and thus
          can't be
Surak TFF  "interrupted"... Correct me, please, if I am way off base... :)
Surak TFF  GA
AFL Dyfet  Go ahead Jim...
WinkieJim  Nope...if the sounds tools are in use...you shalt not use them
          thyself. GA
Matt DTS   What he said.  If the Sound Tools are started, only the
          Application can use DOC RAM.  (GA)
WinkieJim  (you might notice that SYSBEEP doesn't work when an application is
          using sounds)
Surak TFF  OK, thanks... That actually makes it a bit easier... :) I know
          SysBeep doesn't
Surak TFF  but I thought maybe it could.
Dave Lyons (Meaning SYSBEEP the Utility, not SysBeep the Misc Tools call.)
AFL Dyfet  Okay, do we have any other questions for tonight??
AFL Dyfet  GA Winkie
WinkieJim  I have a NDA with a menu bar in it's window with the menus in
          resources. The
WinkieJim  menu comes up right when the window is opened and I can use them,
          but when I
WinkieJim  resize the window or move the window it crashes in the Info bar
          drawing routine
WinkieJim  any ideas? ga
AFL Dyfet  Go ahead Dave...
Dave Lyons The info bar drawing routine is handled more strangly than the
          content-draw routine.  For a
Dave Lyons regular content draw, there was an Update event that SystemEvent
          gave to your DA, and SystemEvent
Dave Lyons set the current resource application to be your NDA before calling
          you.  Life is good.
Dave Lyons But info-bar drawing routines are getting called more
          directly--you need to call GetCurResourceApp,
WinkieJim  Ah.....:)
Dave Lyons keep the result, do a SetCurResourceApp to your own ID (the one
          you called ResourceStartUp with), and
Dave Lyons set the current resource app back to what it was before you
          exit).
WinkieJim  Should have figured that out since the info update is outside the
          NDA code
WinkieJim  technicaly...
Dave Lyons This way the menu mgr will be able to find your resources, since
          it will be looking in the right
Dave Lyons search path.
Dave Lyons (done)
WinkieJim  Thanks.
WinkieJim  <---happy camper
AFL Dyfet  Go ahead, Parik...
AFA Parik  any e-z way to have the scroll bars in a window not go inactive if
          another
AFA Parik  window is selected?  not controls, just standard window vert/horz
          scrollbars.
AFA Parik  ga
AFL Dyfet  Go ahead Winkie...
WinkieJim  There is a flag that allows a window's controls to be the same
          state as the
WinkieJim  window or not (you want not the same state) but the
WinkieJim  window will still have to be activated to use the scroll bars
WinkieJim  ga
AFL Dyfet  Go ahead Dave...
Dave Lyons Yeah, that flag applies to *content* controls.  I believe you're
          talking about "frame" scroll
WinkieJim  PS it's the wFrameBits parm
Dave Lyons bars, which are always deactivated when the window is deactivated.
           You should be able to call
Dave Lyons TrackControl on an active scroll bar in an inactive window with no
          problem, although I'm not sure
Dave Lyons you can get TaskMaster to do it for you.
Dave Lyons ga
AFA Parik  okedokee.  thanks dave & jim (done)
AFA Parik  (yes, you're right - frame scrollbars :(
A2GS       Why would you want 2 window scroll bars active at once...you can
          only work on
A2GS       one at a time anyways.
JeffreyH11 To be able to scroll a window you're looking at without making it
          active and
JeffreyH11 then having to switch back to the one you're typing in.
AFA Parik  "        "        "
AFL Dyfet  Okay, I think that we have reached the end of our queue :)
A2GS       good point
JeffreyH11 You noticed.
JeffreyH11 :)
AFA Parik  (ditto, what he said, etc, etc)
AFA Gary J Oh!  :)
A2GS       hey, let's not get carried away...one good point per nite from me
          is enough  :)
JeffreyH11 Wow!  I must be psychic.
JeffreyH11 :)
AFA Gary J Q = WinkieJim
WinkieJim  Anyone have any idea when 5.0.3 will be shipping
WinkieJim  ga
A2GS       Yeah when 7.0 Mac OS ships
AFA Gary J 5.0.3 is no secret to the tech notes.
AFL Dyfet  :)
JeffreyH11 What happened to the fabled System 6.0 ?
Dave Lyons (Yeah, but did the technotes say when it was shipping?)
A2GS       I here it's been delayed ANOTHER 6 months!! (7.0 that is)
Tamira     right A2
AFA Gary J No, that WAS left out, for some reason, Dave :)
WinkieJim  <---desparately need the fixed resource manager in 5.0.3
WinkieJim  ah well, I'm used to waiting :)
AFA Parik  (I heard 5.03 ships next week...but i also heard elvis is alive)
AFA Gary J :)
JeffreyH11 :)