anchor.diff:  
   Procedure CheckMMError( ReturnCode : MMRESULT );
   Var
  -	ErrorText : String[ 64 ];
  +	ErrorText : Array of AnsiChar;
   Begin
   	If ReturnCode <> MMSYSERR_NOERROR Then Begin
  -		WaveOutGetErrorText( ReturnCode, @ErrorText, Length( ErrorText ) );
  -		WriteLn( ErrorText );
  +		SetLength( ErrorText, 64 );
  +		WaveOutGetErrorTextA( ReturnCode, PChar( ErrorText ), Length( ErrorText ) );
  +		WriteLn( PChar( ErrorText ) );
   		Halt( EXIT_FAILURE );
   	End;
   End;
  
positive.code: 		
  		{ Submit buffer to audio system. }
  		PWaveHeader := @WaveHeaders[ CurrentBuffer ];
  		CheckMMError( WaveOutUnprepareHeader( WaveOutHandle, PWaveHeader, SizeOf( WAVEHDR ) ) );
  		CheckMMError( WaveOutPrepareHeader( WaveOutHandle, PWaveHeader, SizeOf( WAVEHDR ) ) );
  		CheckMMError( WaveOutWrite( WaveOutHandle, PWaveHeader, SizeOf( WAVEHDR ) ) );
  		
  		{ Next buffer. }
  		CurrentBuffer := CurrentBuffer + 1;
  
negative.code: Var MixBuffer : Array Of SmallInt;
  Var MixIndex, MixLength, LFilter, RFilter : LongInt;
  
  Procedure WaveOutProc( hWaveOut: HWAVEOUT; uMsg: UINT; dwInstance, dwParam1, dwParam2: DWORD_PTR ) StdCall;
  Begin
  	//if uMsg = WOM_OPEN then Writeln( 'Device open.' );
  	If uMsg = WOM_DONE Then
  