СОМ-порти підтримуються сервісом BIOS Int 14h, що забезпечує описані нижче функції.
· OOh — ініціалізація (установка швидкості обміну і формату посилок, заданих регістром AL; заборона джерел переривань). На сигнали DTR і RTS впливу не робить (після апаратного скидання вони пасивні).
· 0lh — вивод символу з регістра AL (без апаратних переривань). Активуються сигнали DTR і RTS, і після звільнення регістра THR у нього міститься виведений символ. Якщо за заданий час регістр не звільняється, фіксується помилка тайм-ауту і функція завершується.
· 02h — уведення символу (без апаратних переривань). Активується тільки сигнал DTR (RTS переходить у пасивний стан), і очікується готовність прийнятих даних, прийнятий символ міститься в регістр AL. Якщо за заданий час дані не отримані, функція завершується з помилкою тайм-ауту.
· 03h — опитування стану модему і лінії (читання регістрів MSR і LSR). Цю
гарантовано швидку функцію звичайно викликають перед функціями
введення-виведення щоб уникнути ризику чекання тайм-ауту.
При виклику Int 14h номер функції задається в регістрі АН, номер порту (0-3) - у регістрі DX (0 - СОМ1, 1 - COM2...). При поверненні з функцій 0, 1 і 3 регістр АН містить байт стану лінії (регістр LSR), AL — байт стану модему (MSR). При поверненні з функції 2 нульове значення біта 7 регістра АН указує на наявність прийнятого символу в регістрі AL; ненульове значення біта 7 — на помилку прийому, яку можна уточнити функцією 3.
Байт стану лінії (регістр АН) має наступний формат:
· біт 7 — помилка тайм-ауту (після виклику функції 2 — ознака будь-якої помилки);
· біт 6 — регістр зрушення передавача порожня (пауза передачі);
· біт 5 — проміжний регістр передавача порожній (готовий прийняти символ для передачі);
· біт 4 — виявлений обрив лінії;
· біт 3 — помилка кадру (відсутність стоп-бита);
· біт 2 — помилка паритету прийнятого символу;
· біт 1 — переповнення (утрата символу);
· біт 0 — регістр даних містить прийнятий символ.
Байт стану модему (регістр AL при поверненні з функцій 0, 1, 3) має наступний формат:
· біт 7 — стан лінії DCD;
· біт 6 — стан лінії RI;
· біт 5 — стан лінії DSR;
· біт 4 — стан лінії CTS;
· біт 3 — зміна стану DCD;
· біт 2 — зміна що обгинає RI;
· біт 1 — зміна стану DSR;
· біт 0 — зміна стану CTS.
При ініціалізації порту біти регістра AL мають наступне призначення:
· біти [7:5] — швидкість обміну:
000=110; 100=1200; 001 = 150; 101=2400; D 010=300; 110=4800; 011=600; 111=9600 біт/с;
· біти [4:3] — контроль паритету:
01 — число одиниць непарне;
11 — парне;
0 і 10 — без контролю;
· біт 2 — кількість стоп-бита: 0 — 1 біт, 1 — 2 біти (на швидкості 110 біт/с – 1,5 стоп-біт);
· біти [1:0] — довжина посилки: 00 — 5 біт, 01—6 біт, 10 — 7 біт, 11-8 біт.
У процесі початкового тестування POST BIOS перевіряє наявність послідовних портів (регістрів UART 8250 чи сумісних) по стандартних адресах і поміщає базові адреси виявлених портів в осередки BIOS Data Area 0:0400, 0402, 0404, 0406. Ці осередки зберігають адреси портів з логічними іменами З0М1-З0М4. Нульове значення адреси є ознакою відсутності порту з даним номером. В осередки 0:047С, 047D, 047Е, 047F заносяться константи, що задають тайм-аут для портів.
Виявлені порти ініціюються на швидкість обміну 2400 біт/з, 7 біт даних з контролем на парність (even), 1 стоп-битий. Керуючі сигнали інтерфейсу DTR і RTS переводяться у вихідний стан («виключена» — позитивна напруга).