	TITLE	SOUND.ASM


	PAGE   ,132




	.MODEL	SMALL


	.CODE


;
;	void drawPgm(int x, int y, char *pgm, char mode)
;

	PUBLIC	_drawPgm

_drawPgm	PROC

	push	bp
	mov	bp, sp

	push	si
	push	di
	push	es


	mov	ax, 0A000h
	mov	es, ax

	mov	ax, word ptr [BP+06h]	; y
	mov	bx, 80
	mul	bx
	add	ax, word ptr [BP+04h]	; x
	mov	di, ax

	mov	si, word ptr [BP+08h]	; pgm
	add	si, 4


	cld

	mov	dx, 03CEh

	mov	ax, 0FF08h		; All bits are writen
	out	dx, ax


	mov	ax, 0005h		; Write Mode 0
	out	dx, ax

	mov	ax, 0003h		; Mode Register SETed
	out	dx, ax


	mov	dx, 03C4h
	mov	bx, 78


	push	di
	mov	cx, 16	
	mov	ax, 0102h		; Enable PLAN 0
	out	dx, ax
l1:
	movsw
	add	di, bx
	loop	l1
	pop	di


	push	di
	mov	cx, 16
	shl	ah, 1			; Enable PLAN 1
	out	dx, ax
l2:
	movsw
	add	di, bx
	loop	l2
	pop	di


	push	di
	mov	cx, 16
	shl	ah, 1			; Enable PLAN 2
	out	dx, ax
l3:
	movsw
	add	di, bx
	loop	l3
	pop	di


	mov	cx, 16
	shl	ah, 1			; Enable PLAN 3
	out	dx, ax
l4:
	movsw
	add	di, bx
	loop	l4

	
	mov	ax, 0F02h
	out	dx, ax

	mov	dx, 03CEh
	
	mov	ax, 0000h
	out	dx, ax
	mov	ax, 0001h
	out	dx, ax
	mov	ax, 0FF08h
	out	dx, ax


	pop	es
	pop	di
	pop	si

	mov	sp, bp
	pop	bp

	ret


_drawPgm	ENDP


	END
