Out

Outputs a value to a hardware port.

Syntax
	KeyPgDeclareDeclare KeyPgFunctionFunction Out ( KeyPgByvalByVal port KeyPgAsAs KeyPgUshortUShort , KeyPgByvalByVal data KeyPgAsAs KeyPgUbyteUByte ) KeyPgAsAs 
	KeyPgLongLong

Usage
	Out port,value

Parameters
	port
		Hardware port to write to.
	data
		Data value to write.

Description
	This function sends value to port and returns immediately.

Example
	'speakersound.bas 
	Sub Sound(ByVal freq As UInteger, dur As UInteger)
	  Dim t As Double,f1 As Unsigned Short
	   f1 = 1193181 \ freq
	   Out &h61,Inp(&h61) Or 3
	   Out &h43,&hb6
	   Out &h42,LoByte(f1)
	   Out &h42,HiByte(f1)
	   t=Timer 
	   While ((Timer - t) * 1000) < dur
	     Sleep 0,1
	   Wend
	   Out &h61,Inp(&h61) And &hfc
	End Sub

	Sound(523, 60)  'C5
	Sound(587, 60)  'D5
	Sound(659, 60)  'E5
	Sound(698, 60)  'F5
	Sound(784, 60)  'G5
	Sound(880, 60)  'A5
	Sound(988, 60)  'B5
	Sound(1046, 60) 'C6 

	

Platform Differences
	* In the Windows and Linux versions three port numbers (&H3C7, &H3C8, 
	  &H3C9) are hooked by the graphics library when a graphics mode is in 
	  use to emulate QB's VGA palette handling. This use  is deprecated; use 
	  KeyPgPalettePalette to retrieve and set palette colors.

	* Using true port access in the Windows version requires the program to 
	  install a device driver for the present session. For that reason, 
	  Windows executables using hardware port access should be run with 
	  administrator permits each time the computer is restarted. Further 
	  runs don't require admin rights as they just use the already installed 
	  driver. The driver is only 3K in size and is embedded in the 
	  executable.

See also
	* KeyPgInpInp
	* KeyPgWaitWait
	* KeyPgPalettePalette

   
