BEEP.ASM

TITLE "BEEP" - Generuj zvuk na PC SPEAKERU
.8086                               ; Linkuje se pro i8086
PAGE 67, 130                        ; Stránka 67 zn., délka 130 zn./řádek








COMMENT @
 ===========================================================================

  Název souboru  :   BEEP.ASM
  Link OBJ & LIB :   BEEP.ZIP
  Datum úprav    :   01.09.97
  Verze programu :   4.00
  (c) Copyright  :   1993,94,95,96,97 by NST 32 , Medo Zdeněk junior

 ===========================================================================@


Knihovna_NST32  SEGMENT PARA PUBLIC 'CODE' USE16
   ASSUME CS:Knihovna_NST32

   PUBLIC __beep               ; EXTRN __beep                :PROC :NEAR

   EXTRN  __pause_ms_hw        :PROC :NEAR  ; {PC_HW.LIB}
   EXTRN  __cpu_pause          :PROC :NEAR  ; {PC_HW.LIB}






 
;---------------------------------------------------------------------------
;
;  Popis funkce  :   Procedura prostřednictvím druhého časovače generuje
;  --------------    daný tón.
;
;  Volání(např.) :   mov     bx, 10                  ; Délka tónu (v 1/64 sekundy)
;  --------------    mov     cx, 500                 ; Koeficient frekvence
;                                                     ; (1 193 180/frek. Hz)
;                    call    __beep                  ; Generuj tón
;
;  Mění registry :   Flags, AX, BX, CX
;  --------------
;
;---------------------------------------------------------------------------

__beep  PROC  NEAR
    mov     al, 10110110B                   ; Aktivizace druhého časovače
    out     43H, al                         ; Odeslání do příkazového registru
    call    __cpu_pause                     ; Časová prodleva CPU (5x JMP $+2)

    mov     al, cl                          ; Koef.frekvence - nižší slabika
    out     42H, al                         ; Odeslání na druhý časovač
    call    __cpu_pause                     ; Časová prodleva CPU (5x JMP $+2)

    mov     al, ch                          ; Koef.frekvence - vyšší slabika
    out     42H, al                         ; Odeslání na druhý časovač

    in      al, 61H                         ; Načtení stavu portu
    mov     ah, al                          ; Uložení tohoto stavu
    or      al, 00000011B                   ; Zapnutí zvuk. výstupu
    out     61H, al                         ; Odeslání na port

 Ton1:
    mov     cx, 2                           ; Hodnota pro délku (1035 = 1/64 sekundy)
    call    __pause_ms_hw                   ; Čekej CX x (15.085 737 ms)
    dec     bx                              ; Ješte jsme neskončili ?
    jnz     Ton1                            ; Ne, hrajeme dále

    in      al, 61H                         ; Načtení stavu portu
    and     al, 11111100B
    out     61H, al

    retn                                    ; Návrat NEAR
__beep  ENDP





Knihovna_NST32  ENDS
END
		



© Copyright 1992-2008 by Zdeněk MEDO jr.