[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: System beep ignored?



In article <19961005133347103422@dempson.actrix.gen.nz> dempson@actrix.gen.nz
(David Empson) writes:
}Nathan Mates <nathan@visi.com> wrote:
}
}> In article <Pine.SOL.3.95.961002210240.18840A-100000@general3.asu.edu>,
}> Adam Myrow  <adam.myrow@asu.edu> wrote:
}> >     How come when you assign a sound for the standard beep under system
}> >6.0.1, it's ignored under ProDOS 8?  I can understand such sounds as "disk
}> >ejected" being ignored but why the system beep?  Anybody know? 
}> 
}>    Because under GS/OS, the system beep is a patchable call to the
}> toolbox, and can thus be rerouted to do anything you want. Under
}> ProDOS 8, the beeps are almost always generated by a call to a
}> ROM routine, which is MUCH harder to patchout.
}
}No problem at all.  The ROM-based beep routine ($FBDD) is vectored
}through BELLVECTOR ($E1/006C), which normally points to the routine
}which generates the standard "thunk" noise.
}
}Some part of System 6.0.x patches this vector to a routine which allows
}the beep to be reconfigured (associated with the Sound Control Panel).
}
}It seems that while GS/OS is active, this routine allows the
}user-selected sound to be generated, but under ProDOS-8 it always uses
}the orignal noise.
}
}I can't think of any good reason for this, except that playing an
}arbitrary sound may require more complicated interaction with the
}Ensoniq, and this could interfere with ProDOS-8 sound software.

It's probably because the Sound Control Panel, which is what normally
handles custom sounds, can't count on being available when ProDOS 8 is
active, or can't count on the facilities it needs (such as the ability
to load rSound resources) being available under ProDOS 8.

There's also the issue of arbitrating access to the Ensoniq--under GS/OS,
the Sound Control Panel can just look at the Sound Toolset status to
determine whether it's safe to play custom beeps, but under ProDOS 8,
there's no easy way to determine whether or not a ProDOS 8 program has
bypassed the Sound Toolset and taken direct control of the Ensoniq.
(Which is quite possible, since a ProDOS 8 program can't count on a
functional Sound Toolset even being available at all).


At any rate, it's easy for a ProDOS 8 program to patch BELLVECTOR and
change the system beep to whatever it wants.  In fact, I'm using such a
patch right now...it's necessary with Kermit on the IIGS, because the
standard IIGS beep locks out interrupts while it's beeping, which makes
Kermit drop characters.  (Shameless plug alert:  my interruptable IIGS beep
patch is available as part of the official Kermit 3.87 distribution.)

            - Neil Parker
-- 
Neil Parker, nparker@{cie-2,cie}.uoregon.edu, http://cie-2.uoregon.edu/~nparker

     "I was going to be a neo-deconstructivist but Mom wouldn't let me."
                                     -- Calvin and Hobbes, 7/13/1995