.model tiny 
.code 
.startup
	
	; org 100h

	mov cx, 896

STARTSOUND: ;CX=FREQUENCY IN HERTZ. DESTROYS AX & DX
	CMP CX, 014H
	JB STARTSOUND_DONE
	;CALL STOPSOUND
	IN AL, 061H
	;AND AL, 0FEH
	;OR AL, 002H
	OR AL, 003H
	DEC AX
	OUT 061H, AL	;TURN AND GATE ON; TURN TIMER OFF
	MOV DX, 00012H	;HIGH WORD OF 1193180
	MOV AX, 034DCH	;LOW WORD OF 1193180
	DIV CX
	MOV DX, AX
	MOV AL, 0B6H
	;PUSHF
	CLI	;!!!
	OUT 043H, AL
	MOV AL, DL
	OUT 042H, AL
	MOV AL, DH
	OUT 042H, AL
	;POPF
	sti
	IN AL, 061H
	OR AL, 003H
	OUT 061H, AL

	mov cx, 7000
b1:
	mov dx, 65535
b2:
	nop
	dec dx
	jnz short b2
	loop b1

STARTSOUND_DONE:
	;RET
	mov ax, 1 ; exit
	int 20h	; sys _exit
	
;STOPSOUND: ;DESTROYS AL
;	IN AL, 061H
;	AND AL, 0FCH
;	OUT 061H, AL
;	;RET
;	
; 	retn

.exit

end
