From 08d10efb9fb7fc5d57fb386c0eba3bb8460ea0ac Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 27 May 2007 12:00:55 +0000 Subject: [PATCH] * now also fixes div hz with hz=0 for Linux, and reenables it for FreeBSD. Still needs phys console check though git-svn-id: trunk@7489 - --- rtl/unix/crt.pp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/rtl/unix/crt.pp b/rtl/unix/crt.pp index bb136b15c3..491480faba 100644 --- a/rtl/unix/crt.pp +++ b/rtl/unix/crt.pp @@ -1390,32 +1390,35 @@ Begin ScrollScrnRegionDown(WindMinX, CurrY, WindMaxX, WindMaxY, 1); End; - {$ifdef linux} -const - KIOCSOUND = $4B2F; // start sound generation (0 for off) + {$define havekiocsound} + const KIOCSOUND = $4B2F; // start sound generation (0 for off) +{$else} + {$ifdef FreeBSD} + const KIOCSOUND =$20004b3f; + {$define havekiocsound} + {$endif} {$endif} +// ioctl might fail e.g. in putty. A redirect check is not enough, +// needs check for physical console too. + Procedure Sound(Hz: Word); begin -{$ifdef linux} - if not OutputRedir then +{$ifdef havekiocsound} + if (not OutputRedir) and (hz>0) then fpIoctl(TextRec(Output).Handle, KIOCSOUND, Pointer(1193180 div Hz)); {$endif} end; - - Procedure NoSound; begin -{$ifdef linux} +{$ifdef havekiocsound} if not OutputRedir then fpIoctl(TextRec(Output).Handle, KIOCSOUND, nil); {$endif} end; - - Procedure TextMode (Mode: word); { Only Clears Screen under linux}