В контроллере COM-порта несколько регистров. Запись в них определённых значений меняет режим работы порта. Эти регистры адресуются от базового адреса контроллера.
_outp(COMBase+3,0x80);
- Line Control Register (LCR). Установка старшего бита разрешает доступ к делителю.
_outp(COMBase,0x01);
- установка младшего байта делителя (0x01 => 115200 tick/s).
_outp(COMBase+3,0x03);
- отключение доступа к делителю и установка размера символа 8 бит, 1 стоп-бит, без контроля чётности.
_outp(COMBase+1,0x00);
- Inerrupt Enable Register (IER), запрет всех прерываний.
_outp(COMBase+2,0xC7);
- FIFO Control Register (FCR), разрешить буферы FIFO размером 14 байт и очистить их.
_inp(COMBase);
- прочитать байт из буфера.
www.osdever.net/documents/CP_serial.pdf