{   Computer Systems Research Group
    University of Toronto

    Module:  IBM-PC Speaker Interface   V1.00
    Author:  James R. Cordy & Mark P. Mendell
    Date:    25 April 1985  (Rev 25 April 1985)  }

{ Copyright 1985, The University of Toronto }


var SPKR : module

    exports (SoundSpeaker, SpeakerDone, SetSpeakerFrequency,
	SpeakerOn, SpeakerOff)

    procedure SpkOn = external  
    procedure SpkOff = external
    procedure SpkFreq (f : SignedInt) = external
    procedure SpkSound (t : SignedInt) = external
    function SpkDone returns b : Boolean = external
 
    procedure SoundSpeaker (time : ShortInt) =
	imports (SpkSound)
	begin
	    { time is in 55 ms intervals }
	    SpkSound (time)
	end SoundSpeaker

    function SpeakerDone returns result : Boolean =
	imports (SpkDone) 
	begin            
	    return (SpkDone)
	end SpeakerDone

    procedure SetSpeakerFrequency (frequency : SignedInt) =
	imports (SpkFreq) 
	begin
	    const divisor : SignedInt := 1193180 div Long (frequency)
	    SpkFreq (divisor)
	end SetSpeakerFrequency

    procedure SpeakerOn =
	imports (SpkOn) 
	begin
	    SpkOn
	end SpeakerOn

    procedure SpeakerOff =
	imports (SpkOff) 
	begin
	    SpkOff
	end SpeakerOff

end module
