; Doug's Programming Language  -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;-------------------------------------------
; DOBEEP  --  Beep the speaker
;
; Entry Conditions:
;	None
; Exit conditions:
;	No registers modified
;
SUBPGM	DOBEEP
BEGIN	DOBEEP
	PUSH	AX
	PUSH	BX
	PUSH	CX
	PUSH	DX
;
; PERFORM A HARDWARE MANIPULATED CLICK
; 
	MOV	AL,10110110B		; TIMER 2, LSB, MSB, BINARY
	OUT	43H,AL			; TIMER MODE REGISTER
	MOV	AX,53H*20		; 500 HZ TONE
	OUT	42H,AL			;  LSB
	MOV	AL,AH			;
	OUT	42H,AL			;  MSB
	IN	AL,61H			; GET THE CURRENT STATE
	MOV	AH,AL			; SAVE FOR LATER RESTORATION
	AND	AH,0FCH			; WITH THE TIMER/BEEPER OFF.
	OR	AL,3			; CALC THE TIMER GATE & ENABLE
	OUT	61H,AL			; SOUND OFF!!!!
	PUSH	AX
;
	MOV	AH,0
	INT	1AH
	MOV	BX,DX
	ADD	BX,6
;
CLCK:
	INT	1AH
	CMP	BX,DX
	JNZ	CLCK
;
	POP	AX
	MOV	AL,AH			; RESTORE ALL
	OUT	61H,AL
;
CLX:
	POP	DX
	POP	CX
	POP	BX
	POP	AX
	RETURN
;
ENDPGM	DOBEEP
;