Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Assembler 16Bit Sound (https://www.delphipraxis.net/12840-assembler-16bit-sound.html)

neolithos 4. Dez 2003 21:25


Assembler 16Bit Sound
 
Code:
Sound:
   ;
   ; Stellt Speaker auf eine Frequenz ein
   ; Eingabe:
   ;  - BX = Frequenz in Hz
   ;
   push ax
   push bx
   push dx
   
   mov ax, 34DDh
   mov dx, 0012h
   cmp dx, bx
   jnc Sound_End      ; klammer nicht hörbare töne aus und div durch 0
   div bx            ; 1193180 div Hz
   
   out 42h, al         ; Setze Tone
   mov al, ah
   out 42h, al
   
   in al, 61h
   test al, 3         ; ist Speaker schon an ?
   jnz Sound_End
   
   or al, 3
   out 61h, al         ; Speaker an
   
   mov al, 0B6h      ; Set up square wave
   out 43h, al
     
Sound_End:
   pop dx
   pop bx
   pop ax
   ret
Diese kleine Function wirft den Sound-Speaker an. Ich konnte einige Werte ermitteln, was sie bedeuten. Leider fehlt mir eine Gesamt-Übersicht über die Speaker-Funktion. Habe zwar schon gegoogelt konnte aber noch nix brachbares finden.

Hat jemand einen Link oder eine Erklärung, was mit welcher Port-Adresse machbar ist?

negaH 6. Dez 2003 10:24

Re: Assembler 16Bit Sound
 
42h = Timerfrequenz, Timer 2
61h = Tastatur PIO, einzelne Bits aktivieren Timer und Umleitung der Frequenzsignale zum Speaker. Bits 1 und 2 sind die Aktivierung von Timer 2 und dessen Umleitung zum Speaker. D.h. wird auf einem Speaker ein Ton erzeugt so wird der nur durch das schneller Ein/Ausschalten einer 5V Spannung erzeugt. Dabei bestimmt Timer 2 dessen Frequenz.

Der Zugriff auf diese Ports ist allerdings je nach OS beschränkt. Unter Win2k/XP sollte man ohne Treiber nicht auf diese Ports zugreifen, können, sollen, dürfen :)

Schau mal im API nach Beep(), das dürfte das machen was du suchst.

Gruß Hagen

neolithos 7. Dez 2003 18:54

Re: Assembler 16Bit Sound
 
Vielen herzlichen dank! Das reicht für die Ausarbeitung!


Zitat:

Zitat von negaH
Der Zugriff auf diese Ports ist allerdings je nach OS beschränkt. Unter Win2k/XP sollte man ohne Treiber nicht auf diese Ports zugreifen, können, sollen, dürfen

Und wie gesagt, das Programm läuft nicht unter Windows, DOS, Linux, ...
Nur unter dem BIOS!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz