/* EASC 'start/continue whining'; I'm not sure why the above function didn't already load the wave table, or at least call this one... This piece keeps reloading the wave table until done.  */
static void mac_quadra_ring_bell(unsigned long)
/* EASC 'start/continue whining'; I'm not sure why the above function didn't already load the wave table, or at least call this one... This piece keeps reloading the wave table until done.  */
static void mac_quadra_ring_bell(unsigned long)
{
	int	i, count = mac_asc_samplespersec / HZ;
	__u32 flags;
	local_irq_save(flags);
	del_timer( &mac_sound_timer );
	if ( mac_bell_duration-- > 0 )
	{
		for ( i = 0; i < count; i++ )
		{
			mac_bell_phase += mac_bell_phasepersample;
			mac_asc_regs[ 0 ] = mac_asc_wave_tab[ mac_bell_phase & ( sizeof( mac_asc_wave_tab ) - 1 ) ];
		}
		mac_sound_timer.expires = jiffies + 1;
		add_timer( &mac_sound_timer );
	}
	else
		mac_asc_regs[ 0x801 ] = 0;
	local_irq_restore(flags);
}