Для запису або читання даних з пам’яті пристрою MC 146818, як будь-якого
пристрою вводу/виводу, використовуються команди мікропроцесора OUT та IN. Порт 70h ділиться між регістром маски переривання NMI та регістром адреси пам’яті конфігурації. Для того, щоб регістр маски NMI був недоступний, потрібно, щоб біт 7 регістра адреси годинника реального часу (RTC) був скине-
ний.
Для запису даних про конфігурацію системи використовуються такі команди:
· OUT 70h, AL – визначає комірку пам’яті, в яку будуть записуватися дані;
70h – номер порту; AL – регістр повинен містити адресу комірки КМОН-пам’яті;
· OUT 71h, AL – передає дані для вибраної комірки пам’яті; 71h – номер порту; AL – містить дані.
Для читання вмісту комірки пам’яті використовуються такі команди:
· OUT 70h, AL – визначає комірку пам’яті, з якої будуть зчитуватися дані;
· IN AL, 71h – для читання даних, що зберігаються в комірці пам’яті, яка визначена попередньою командою; дані записуються в регістр AL процесора.
У таблиці 1 наведена інформація, що зберігається в комірках годинника реального часу MC 146818.
Таблиця 1 – Призначення регістрів КМОН-пам’яті
| Регістр | Функція |
| 00h | Секунди поточного часу |
| 01h | Секунди будильника |
| 02h | Хвилини поточного часу |
| 03h | Хвилини будильника |
| 04h | Години поточного часу |
| 05h | Години будильника |
| 06h | День тиждня |
| 07h | Число |
| 08h | Місяць |
| 09h | Рік |
| 0Ah | Регістр стану A |
| 0Bh | Регістр стану B |
| 0Ch | Регістр стану C |
| 0Dh | Регістр стану D |
| 0Eh | Діагностичний байт |
| 0Fh | Байт коду скидання |
| 10h | Тип драйвера НГМД |
| 11h | Зарезервовано |
| 12h | Тип драйвера НТМД |
| 13h | Зарезервовано |
| 14h | Інстальовані пристрої |
| 15h, 16h | Розмір основної пам’яті |
| 17h, 18h | Інстальована розширена пам’ять |
| 19h | Тип драйвера C, якщо є додатковий драйвер |
| 1Ah | Тип драйвера D, якщо є додатковий драйвер |
| 1Bh – 2Ch | Зарезервовано |
| 2Dh | Додаткові прапорці |
| 2Eh, 2Fh | Значення контрольної суми |
| 30h, 31h | Пам’ять більша 1 Мб |
| 32h | Століття, частина дати та часу |
| 33h | Системна інформація |
| 34h – 3Eh | Зарезервовано |
| 3Fh | Не використовується |
Таблиця 2 – Структура регістра стану 0Ah (читання і запис крім D7)
| Біт | Значення |
| D3 – D0 | Коефіцієнт ділення частоти генератора годинника. Значення за замовчуванням 0110 (1,024 кГц) |
| D6 – D4 | Основна частота генератора годинника. |
| Значення за замовчуванням 010 (32,768 кГц) | |
| D7 | 0 / 1 – читання пристрою дозволено / оновлення поточного часу |
Таблиця 3 – Структура регістра стану (читання і запис)
| Біт | Значення |
| D0 | 0 – без запам’ятовування годин дня 1 – із запам’ятовуванням годин дня |
| D1 | 12-годинний режим 24-годинний режим |
| D2 | 0 – час і дата у форматі BCD 1 – час і дата у двійковому форматі |
| D3 | 0 – вихід генератора прямокутних імпульсів дозволений 1 – вибір вихідної частоти регістром A заборонено |
| D4 | 0 – переривання після оновлення заборонено 1 – переривання після оновлення дозволено |
| D5 | 0 – переривання від будильника заборонено 1 – переривання від будильника дозволено |
| D6 | 0 – переривання з частотою, визначеною регістром A, заборонено 1 – переривання дозволено |
| D7 | 0 – стандартні операції 1 – встановлення часу оновлення даних дозволено |
Таблиця 4 – Структура регістра стану 0Ch (тільки читання)
| Біт | Значення |
| D3 – D0 | 0000 – не використовується |
| D4 | 1 – прапорець переривання після закінчення оновлення даних |
| D5 | 1 – прапорець переривання від будильника |
| D6 | 1 – прапорець періодичного переривання |
| D7 | 1 – вихідний сигнал переривання активний |
Таблиця 5 – Структура регістра стану 0Dh (тільки читання)
| Біт | Значення |
| D6 – D0 | 0000000 – не використовуються |
| D7 | 0 – годинник реального часу має автономне живлення 1 – годинник реального часу не має живлення |
Таблиця 6 – Структура регістра стану 0Eh
| Біт | Значення |
| D1, D0 | 00 – не використовуються |
| D2 | 1 – час недійсний |
| D3 | 1 – помилка НТМД |
| D4 | 1 – розмір пам’яті визначений під час ініціалізації систем не відповідає розміру, зазначеному в конфігурації пам’яті |
| D5 | 1 – при перевірці конфігурації системи під час ініціалізації виявлено відсутність пристроїв, заданих в конфігурації пам’яті |
| D6 | 1 – невірна контрольна сума – помилка в ROM |
| D7 | 1 – годинник реального часу не має живлення |
Таблиця 7 – Структура байта коду скидання 0Fh
| Значення | Сенс |
| 00h | Нормальне скидання по живленню |
| 04h | Завантаження DOS з диска |
| 05h | Після ініціалізації обох контролерів переривання перехід до вектора скидання 0040:0067 |
| 09h | Повернути Block Move |
| 0Ah | Перехід до вектора скидання 0040:0067 – без ініціалізації кон- тролерів переривання |
Таблиця 8 – Структура байта типу драйвера НГМД 10h
| Біт | Значення |
| D3 – D0 | Тип драйвера другого НГМД: 0000 – драйвера НГМД немає 0001 – 360 кб 0010 – 1,2 Мб 0011 – резерв 0100 – 1,44 Мб 0101 – 1111 – резерв |
| D7 – D4 | Тип драйвера першого НГМД: 0000 – драйвера НГМД немає 0001 – 360 кб 0010 – 1,2 Мб 0011 – 1111 – резерв |
Таблиця 9 – Структура байта типу драйвера НТМД 12h
| Біт | Значення |
| D3 – D0 | Тип драйвера другого НТМД: 0000 – драйвера НТМД немає 0001…1110 – 1…14 1111 – інші (байт 1Ah) |
| D7 – D4 | Тип драйвера першого НТМД: 0000 – драйвера НТМД немає 0001…1110 – 1…14 1111 – інші (байт 19h) |
Таблиця 10 – Структура байтів об’єму основної пам’яті 15h, 16h
| Значення | Об’єм пам’яті | |
| 16h | 15h | |
| 00h | 80h | 128 кб |
| 01h | 00h | 256 кб |
| 02h | 00h | 512 кб |
| 02h | 80h | 640 кб |
| 04h | 00h | 1 Мб |
Таблиця 11 – Структура байта інстальованих пристроїв 14h
| Біт | Значення |
| D0 | 0 – драйвер НГМД не інстальований 1 – драйвер НГМД інстальований |
| D1 | 0 – співпроцесор не інстальований 1 – співпроцесор інстальований |
| D3, D2 | 00 – не використовуються |
| D5, D4 | Тип контролера дисплея та режим роботи: 00 – зарезервовано 01 – кольоровий/графічний, 40 рядків 10 – кольоровий/графічний, 80 рядків 11 – монохром/неграфічний |
| D7, D6 | Число інстальованих драйверів НГМД: 00 – один драйвер 01 – два драйвери 10, 11 – зарезервовано |
Таблиця 12 – Структура байтів об’єму пам’яті розширення 17h, 18h
| Значення | Об’єм пам’яті | |
| 17h | 18h | |
| 02h | 00h | 512 кб |
| 02h | 80h | 640 кб |
| 04h | 00h | 1 Мб |
| … | … | … |
| 3Ch | 00h | 15 Мб |
Таблиця 13 – Структура байтів пам’яті вище 1 Мб 30h, 31h
| Значення | Об’єм пам’яті | |
| 30h | 31h | |
| 02h | 00h | 512 кб |
| 02h | 80h | 640 кб |
| 04h | 00h | 1 Мб |
| … | … | … |
| 3Ch | 00h | 15 Мб |
Таблиця 14 – Структура байта системної інформації 33h
| Біт | Значення |
| D5 – D0 | 000000 – не використовуються |
| D6 | Використовуються програмою SETUP |
| D7 | 1 – інстальовано більше 1 Мб пам’яті |






