Высота звука задаётся в виде значения, подаваемого на порт спикера 42H (на IBM PC-железе), перед запихиванием в порт умножаемого на 6. Точнее я вам не скажу.

Код:
void snd (unsigned fr, unsigned ln)
{{
 unsigned timing = get_timer ();
 long LN = ln;

 LN *= fr *= 6; // вот тут частота умножается на 6
 // а длительность, заметьте, умножается на частоту, умноженную на 6
 outportb (0x43, 0xB6);
 outportb (0x42, ((unsigned char *)&fr)[0]);
 outportb (0x42, ((unsigned char *)&fr)[1]);
Частоту я почти расколол, формула для первого звука, которая переводит частоту fr в значение HL для процедуры #3B5 выглядит очень просто: (fr+1)*35

С длительностью всё гораздо сложнее. Не пойму зачем Мутель варьирует длительность звука в зависимости от его частоты (умножает на fr*6). Впрочем, может так устроена генерация звука в БК-0010, с которого был перенесён болдердаш? Вот тут я уступлю своим принципам и сделаю на Спеке длительность звуков другую. Упрощу. Впрочем, на слух это не очень заметно, даже, я бы сказал, вообще незаметно.