; nervige Sirene :-D ; 2006 Shylock - Heinz Volker Viehof ; Unter Dos, oder Windows in CMD.EXE oder ; DOSBox v0.65 Downloadlink: http://dosbox.sourceforge.net ; Compiliert mit Eric Isaacsons A86 ;_________________________________________________________ lowfreq equ 1000 ; untere Frequenz hifreq equ 2000 ; hohe Frequenz duration equ 65000 ; Dauer, wird innerhalb der Verzögerungsschleifen verwendet counts equ 10 ; Anzahl der Wiederholungen org 100h Start: mov dx,counts ; die 'Mainloop' L1: push dx ; das DX Register ist als Zaehler gedacht und wird gesichert mov cx,lowfreq ; in CX die frequenz des tiefen Tons laden call soundon ; frequenz setzen und Lautsprecher an! mov cx,duration ; Verzögerungszeit laden call delay ; wart ein weilchen ... ;;) call soundoff ; Lautsprecher aus! mov cx,hifreq ; nun das ganze mit der Frequenz des hohen Tons call soundon mov cx,duration call delay call soundoff pop dx ; hol den Zähler vom Stapel zurück dec dx ; und vermindere diesen um eins jnz L1 ; wie jetzt? DX > 0? dann nochmal! Ende: mov ah, 4ch ; Isch aabe Fertig!!! int 21h ;______________________________________________________ ; ; Prozeduren ;______________________________________________________ soundoff: ; schaltet den Sound aus in al, 61h ; mit IN den Wert des Hardwareports 61h lesen and al, 11111101b ; das AND Verknüpfen mit dieser Bitmaske löscht Bit 1 out 61h, al ; und Schaltet so den Lautsprecher aus. ret soundon: ; schaltet den Sound ein ; frequenz in cx mov AL,0b6 ; Timer Commandbyte out 43h,AL ; schreibe Timer Commandbyte mov AL,CL ; Low-Byte für Frequenz out 42h,AL ; mov AL,CH ; High-Byte Frequenz out 42h,AL ; in al, 61h ; wieder von 61h lesen or al, 3 ; mittels OR Verknüpfung das Setzen von Bit 0 und 1 erzwingen out 61h, al ; und per OUT Anweisung auf den Hardwareport den Speaker einschalten ret delay: ; Verzögerung mittels simpler Schleifen mov bx,800 ; experimentell ermittelt S2: ; eine Schleife in einer Schleife dec bx ; ermöglicht lange Verzögerungszeiten, und jnz S2 ; laesst sich sehr präzise Abgleichen loop delay ret