Инструменты пользователя

Инструменты сайта


pro_spk:воспроизведение_мелодий_через_встроенный_динамик_компьютера_pc-speaker_в_gnu_linux

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
pro_spk:воспроизведение_мелодий_через_встроенный_динамик_компьютера_pc-speaker_в_gnu_linux [2019/01/09 12:55] – создано dwadminpro_spk:воспроизведение_мелодий_через_встроенный_динамик_компьютера_pc-speaker_в_gnu_linux [2023/10/01 09:45] (текущий) dwadmin
Строка 1: Строка 1:
 ====== Воспроизведение мелодий через встроенный динамик компьютера (PC-Speaker) в GNU/Linux ====== ====== Воспроизведение мелодий через встроенный динамик компьютера (PC-Speaker) в GNU/Linux ======
  
-spk_play.pas+Демонстрационная программа: [[http://soft.self-made-free.ru/spk_play.pas|spk_play.pas]]
  
 <code pascal> <code pascal>
Строка 9: Строка 9:
     Program for playing melodys on PC-Speaker.     Program for playing melodys on PC-Speaker.
     For GNU/Linux 64 bit version. Root priveleges needed.     For GNU/Linux 64 bit version. Root priveleges needed.
 +    Version: 2.
     Written on FreePascal.     Written on FreePascal.
     Copyright (C) 2019  Artyomov Alexander     Copyright (C) 2019  Artyomov Alexander
Строка 28: Строка 29:
 {$MODE OBJFPC} {$MODE OBJFPC}
 {$ASMMODE INTEL} {$ASMMODE INTEL}
 +{$CODEPAGE UTF8}
  
-uses spkunit,SysUtils,X86;+uses SysUtils,X86;
  
-procedure spkon; +procedure spkon; assembler; 
-begin +asm
- asm+
         push    rax         push    rax
         in      al, 61h         in      al, 61h
Строка 39: Строка 40:
         out     61h, al         out     61h, al
         pop     rax         pop     rax
- end; 
 end; end;
-procedure spkoff; +procedure spkoff; assembler; 
-begin +asm
- asm+
         push    rax         push    rax
         in      al, 61h         in      al, 61h
Строка 50: Строка 49:
         out     61h, al         out     61h, al
         pop     rax         pop     rax
- end; 
 end; end;
-procedure spk(b : word );+procedure spk(b : word);
 var hb, lb : byte; var hb, lb : byte;
-beginhb := hi (b); lb := lo (b);+begin 
 +hb := hi(b); lb := lo(b);
  asm  asm
         push    rax         push    rax
Строка 81: Строка 80:
 Sleep(100); Sleep(100);
 spkoff; // Выключить динамик. spkoff; // Выключить динамик.
 +
 +end.
 +</code>
 +
 +Юнит: [[http://soft.self-made-free.ru/spkunit.pas|spkunit.pas]]
 +
 +<code pascal>
 +unit spkunit;
 +
 +{$MODE OBJFPC}
 +{$ASMMODE INTEL}
 +{$CODEPAGE UTF8}
 +
 +{
 +    Unit for playing melodys on PC-Speaker.
 +    For GNU/Linux 64 bit version. Root priveleges needed.
 +    Version: 3.
 +    Written on FreePascal (https://freepascal.org/).
 +    Copyright (C) 2000-2019  Artyomov Alexander
 +    http://self-made-free.ru/ (Ex http://aralni.narod.ru/)
 +    aralni@mail.ru
 +
 +    This program is free software: you can redistribute it and/or modify
 +    it under the terms of the GNU Affero General Public License as
 +    published by the Free Software Foundation, either version 3 of the
 +    License, or (at your option) any later version.
 +
 +    This program is distributed in the hope that it will be useful,
 +    but WITHOUT ANY WARRANTY; without even the implied warranty of
 +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +    GNU Affero General Public License for more details.
 +
 +    You should have received a copy of the GNU Affero General Public License
 +    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 +}
 +
 +interface
 +
 +uses X86;
 +
 +procedure spk(b : word); procedure spkon; procedure spkoff;
 +
 +implementation
 +
 +procedure spkon; assembler;
 +asm
 +        push    rax
 +        in      al, 61h
 +        or      al, 03h
 +        out     61h, al
 +        pop     rax
 +end;
 +procedure spkoff; assembler;
 +asm
 +        push    rax
 +        in      al, 61h
 +        or      al, 03h
 +        xor     al, 03h
 +        out     61h, al
 +        pop     rax
 +end;
 +procedure spk(b : word);
 +var hb, lb : byte;
 +begin
 +hb := hi(b); lb := lo(b);
 + asm
 +        push    rax
 +        mov     al, 0B6h
 +        out     43h, al
 +        mov     al, lb
 +        out     42h, al
 +        mov     al, hb
 +        out     42h, al
 +        pop     rax
 + end;
 +end;
 +
 +initialization
 +
 +fpioperm($42, 2, 1);
 +fpioperm($61, 1, 1);
  
 end. end.
 </code> </code>
pro_spk/воспроизведение_мелодий_через_встроенный_динамик_компьютера_pc-speaker_в_gnu_linux.1547027758.txt.gz · Последнее изменение: 2019/01/09 12:55 — dwadmin

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: GNU Free Documentation License 1.3
GNU Free Documentation License 1.3 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki