home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / asm_sour / respond.asm < prev    next >
Assembly Source File  |  1984-05-30  |  2KB  |  43 lines

  1. PAGE,132
  2. TITLE RESPONSE.ASM  --  PROGRAM FOR BEEP REPSONSE AFTER <ENTER>
  3. NAME  RESPONSE_CODE
  4. ;
  5. ;
  6. ;  PROGRAM REQUIRES NO PARMS:  GENERATES A 3590 HZ BEEP, FOR 1 CLOCK
  7. ;  ON CYCLE.  THEN PERFORMS A FAR RETURN TO PASCAL OR CALLER.
  8. ;
  9. ;
  10. RESPONSE_CODE SEGMENT PARA PUBLIC 'CODE'
  11.               ASSUME    CS:RESPONSE_CODE
  12.               PUBLIC    BEEP
  13. BEEP          PROC      FAR                 ;ALL LINKED ROUTINES ARE FAR
  14.               PUSH      BP                  ;SAVE THE BASE POINTER
  15.               MOV       BP,SP               ;GET THE CURRENT STACK POINTER
  16.               MOV       BX,05               ;DURATION IN HUNDREDTHS OF SECONDS
  17.               MOV       DI,3590             ;FREQUENCY IN HZ
  18.               MOV       AL,0B6H             ;WRITE TIMER MODE REGISTER
  19.               OUT       43H,AL              ;LOAD THE TIMER PORT (43HEX)
  20.               MOV       DX,14H              ;
  21.               MOV       AX,4F38H            ;13310000/FREQUENCY TIMER DIVISOR
  22.               DIV       DI                  ;SEE IF TIMER READY
  23.               OUT       42H,AL              ;TIME UP, TURN OFF SPEAKER
  24.               MOV       AL,AH               ;GET THE HIGH BYTES AND WRITE THE QUITE TIME
  25.               OUT       42H,AL              ;WRITE THE HIGH BYTE
  26.               IN        AL,61H              ;GET CURRENT PORT B SETTING
  27.               MOV       AH,AL               ;AND MOVE IT TO AH
  28.               OR        AL,03               ;TURN LAST 2 BITS ON - SET SPKR ON
  29.               OUT       61H,AL              ;
  30. WAIT:
  31.               MOV       CX,2801             ;KILL 10 MILLISECS
  32. SPKR_ON:
  33.               LOOP      SPKR_ON             ;SEE IF TIME EXPIRED?
  34.               DEC       BX                  ;IF NOT, KEEP SPEAKER ON
  35.               JNZ       WAIT                ;CONTINUE THE SOUND
  36.               MOV       AL,AH               ;PORT VALUE RECOVER
  37.               OUT       61H,AL              ;RESTORED TO OLD SETTING (OFF)
  38.               POP       BP                  ;GET OLD BASE POSITION
  39.               RET       FAR                 ;FAR RETURN TO PASCAL
  40. BEEP          ENDP
  41. RESPONSE_CODE ENDS
  42.               END       
  43.