git: 2416be588ea1 - main - vt: Fix frequency calcuation for bell

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Fri, 01 Nov 2024 16:18:36 UTC
The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=2416be588ea113cc06b924ed85861ed3bc391fe0

commit 2416be588ea113cc06b924ed85861ed3bc391fe0
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2021-11-03 21:55:55 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2024-11-01 16:17:36 +0000

    vt: Fix frequency calcuation for bell
    
    386BSD provided a MD function sysbeep. This took two arguments (pitch
    and period). Pitch was jammed into the PIT's divisor directly (which
    means the argument was expected to sound a tone at '1193182 / pitch'
    Hz). FreeBSD inherited this interface.
    
    In commit e46598588587 (svn 177642, Mar 26 2008), phk changed this
    function to take a tone to sound in hz. He converted all in-tree
    instances of 1193182 / hz to just hz (and kept the few misguided folks
    that passed hz directly unchanged -- this was part of what motivated the
    change). He converted the places where we pre-computed the 8254 divisor
    from being pitch to 1193182 / pitch (since that converts the divisor to
    the frequency and the interfaces that were exposed to userland exposed
    it in these units in places, continuing the tradition inherited from SCO
    System V/386 Unix in spots).
    
    In 2009, Ed Shouten was contracted by the FreeBSD Foundation to write /
    finish newcons. This work was done in perforce and was imported into
    subversion in user/ed/newcons in revision 199072
    (https://svnweb.freebsd.org/base?view=revision&revision=199072) which
    was later imported into FreeBSD by ray@ (Aleksandr Rybalko).
    
    From that earliest import into svn import to this date, we ring the bell
    with:
          sysbeep(1193182 / VT_BELLPITCH, VT_BELLDURATION);
    where VT_BELLPITCH was defined to be 800. This results in a bell
    frequency of 1491Hz, more or less today. This is similar to the
    frequency that syscons and pcvt used (1493Hz and 1500Hz respectively).
    This in turn was inherited from 386BSD, it seems, which used the hard
    coded value 0x31b which is 795 -> 1500Hz.
    
    This '800' was intended to be the bell tone (eg 800Hz) and this
    interface was one that wasn't converted. The most common terminal prior
    to the rise of PCs was the VT100, which had an approximately 800Hz
    bell. Ed Shouten has confirmed that the original intent was 800Hz and
    changing this was overlooked after the change to -current was made.
    This restors that original intent and makes the bell less obnoxious in
    the process.
    
    Reviewed by:            des, adrian
    Differential Revision:  https://reviews.freebsd.org/D32594
    Sponsored by:           Netflix
    
    (cherry picked from commit ba48d52ca6c867559156dd916631f9ac47abe80f)
    
    This change was accidentally reverted in 80f21bb039ce.
---
 sys/dev/vt/vt_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c
index a579183658fa..8f5e45306d61 100644
--- a/sys/dev/vt/vt_core.c
+++ b/sys/dev/vt/vt_core.c
@@ -119,7 +119,7 @@ static const struct terminal_class vt_termclass = {
 
 /* Bell pitch/duration. */
 #define	VT_BELLDURATION	(SBT_1S / 20)
-#define	VT_BELLPITCH	(1193182 / 800) /* Approx 1491Hz */
+#define	VT_BELLPITCH	800
 
 #define	VT_UNIT(vw)	((vw)->vw_device->vd_unit * VT_MAXWINDOWS + \
 			(vw)->vw_number)