// RESET.C

#include "uart_reg.h"

// сбрасываем регистр управления модемом, регистр состояния линии,
// регистр данных, регистр сотояния модема

int reset(unsigned com_adr) {

unsigned MCR, LSR, MSR, DATREG;

	MCR = com_adr + MCR_N;
	LSR = com_adr + LSR_N;
	MSR = com_adr + MSR_N;
	DATREG = com_adr;

	_asm {

		cli

		; сбрасываем регистр управления модемом

		mov   al,0
		mov   dx,MCR
		out   dx,al
		nop
		nop
		nop

		; сбрасываем регистр состояния линии

		mov   dx,LSR
		in    al,dx
		nop
		nop
		nop

		; сбрасываем регистр данных

		mov   dx,DATREG
		in    al,dx
		nop
		nop
		nop

		; сбрасываем регистр состояния модема

		mov   dx,MSR
		in    al,dx
		nop
		nop
	}
}

