====== MSX — RTC ====== RTC (Real-time clock) — часы реального времени. Напряжение питания 3 В, для питания используются 2×AA(LR6). Применяется с [[msx:msx_2|]]. Микросхема имеет в себе четыре блока (каждый блок состоит из 13 4-битных регистров, которые имеют адреса с 0 по 12): - [[#block0|Блок 0]] - [[#block1|Блок 1]] - [[#block2|Блок 2]] - [[#block3|Блок 3]] Кроме этого, имеются еще три 4-битных регистра для выбора блока или функций управления. Они имеют номера с 13 по 15. Из регистров с 0 по 12 и регистра режима ([[#MODE]]) 13 можно читать информацию, можно также и записывать данные в эти регистры. Регистры теста ([[#TEST]]) 14 и сброса ([[#RESET]]) могут использоваться только для записи. ====== Описание ====== Дата и время хранятся в [[#block0|блоке 0]], значения для будильника — в [[#block1|блоке 1]]. Секунды для будильника не устанавливаются. Когда времена часов и будильника совпадают, ничего не происходит. В часах год представляется двумя цифрами (регистры 11 и 12). Эти две последние цифры года увеличиваются на 80. Таким образом год 0 означает календарный год 1980. Регистр 10 [[#block1|блока 1]] используется для выбора между 12- и 24-часовой режимами часов. Режим 12 часов устанавливается, когда бит 0 сброшен в 0, а шкала 24 часа — когда он установлен в 1. Если установлен режим 24-часового времени, то бит 1 регистра 5 [[#block0|блока 0 ]] определяет время дня — до полудня или после. Когда оба младших бита регистра 11 [[#block1|блока 1]] равны нулю, это означает високосный год, в котором февраль имеет 29 дней. При выполнении оператора ''[[:msx:basic_dialogue_programming_language:007#setdate|SET DATE]]'' эти биты определяются делением года нацело на 4. {{anchor:block0}} ====== Блок 0 (часы) ====== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | | | | |Секунды (1–я цифра)| | 1 | — | | | |Секунды (2–я цифра)| | 2 | | | | |Минуты (1–я цифра)| | 3 | — | | | |Минуты (2–я цифра)| | 4 | | | | |Часы (1–я цифра)| | 5 | — | — | | |Часы (2–я цифра)| | 6 | — | | | |День недели: * 0 воскресенье * 1 понедельник * 2 вторник * 3 среда * 4 четверг * 5 пятница * 6 суббота | | 7 | | | | |День (1–я цифра)| | 8 | — | — | | |День (2–я цифра)| | 9 | | | | |Месяц (1–я цифра)| | A | — | — | | |Месяц (2–я цифра)| | B | | | | |Год (1–я цифра)| | C | | | | |Год (2–я цифра)| Для работы с регистрами из [[msx:basic:|]] используются операторы: * [[msx:basic_dialogue_programming_language:007#setdate|SET DATE]] * [[msx:basic_dialogue_programming_language:007#settime|SET TIME]] {{anchor:block1}} ====== Блок 1 (будильник) ====== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | — | — | — | — |Не используется| | 1 | — | — | — | — |:::| | 2 | | | | |Минуты (1–я цифра)| | 3 | — | | | |Минуты (2–я цифра)| | 4 | | | | |Часы (1–я цифра)| | 5 | — | — | | |Часы (2–я цифра)| | 6 | — | | | |День недели: * 0 воскресенье * 1 понедельник * 2 вторник * 3 среда * 4 четверг * 5 пятница * 6 суббота | | 7 | | | | |День (1–я цифра)| | 8 | — | — | | |День (2–я цифра)| | 9 | — | — | — | — |Не используется| | A | — | — | — | |Режим 12/24 часа| | B | — | — | | |Високосный год | | C | — | — | — | — |Не используется| {{anchor:block2}} ====== Блок 2 ====== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | | | | |ID| | 1 | | | | |коррекция X (от -8 до +7)| | 2 | | | | |коррекция Y (от -8 до +7)| | 3 | — | — | И | Э | * И тип интерф. * Э тип экрана | | 4 | | | | |Ширина экрана (младшие биты)| | 5 | | | | |Ширина экрана (старшие биты)| | 6 | | | | |Цвет изображения| | 7 | | | | |Цвет фона| | 8 | | | | |Цвет бордюра| | 9 | М | П | К | Ф | * М скорость [[msx:data_recorder|магнитофона]] * П тип [[msx:printer:printer|принтера]] * К звук клавиш * Ф вкл./выкл. отображения текста функциональных клавиш | | A | Т | Т | Г | Г |Звук клавиш: * Т тип * Г громкость | | B | — | — | | |Цвет заголовка| | C | | | | |Код страны: * 00 Японский * 01 Русский (на Sanyo и Sony) * 02 Английский (международный) * 03 Английский (Великобритания) * 04 Французский * 05 Немецкий * 07 Испанский * 09 Корейский * 0А Русский (только на Yamaha) | Для работы с регистрами из [[msx:basic:|]] используются операторы: * [[msx:basic_dialogue_programming_language:007#setadjust|SET ADJUST]] * [[msx:basic_dialogue_programming_language:007#setbeep|SET BEEP]] * [[msx:basic_dialogue_programming_language:007#setscreen|SET SCREEN]] {{anchor:block3}} ====== Блок 3 (настройка) ====== Блок 3 имеет три функции, зависящие от значения ID (регистр 0), поэтому одновременная установка приветствия заголовка, пароля и подсказки невозможна {{anchor:block3_0}} ===== ID=0 (заголовок) ===== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | 0 | 0 | 0 | 0 |Вариант: заголовок| | 1 | | | | |1–й символ заголовка (младшие биты)| | 2 | | | | |1–й символ заголовка (старшие биты)| | 3 | | | | |2–й символ заголовка (младшие биты)| | 4 | | | | |2–й символ заголовка (старшие биты)| | 5 | | | | |3–й символ заголовка (младшие биты)| | 6 | | | | |3–й символ заголовка (старшие биты)| | 7 | | | | |4–й символ заголовка (младшие биты)| | 8 | | | | |4–й символ заголовка (старшие биты)| | 9 | | | | |5–й символ заголовка (младшие биты)| | A | | | | |5–й символ заголовка (старшие биты)| | B | | | | |6–й символ заголовка (младшие биты)| | C | | | | |6–й символ заголовка (старшие биты)| Для работы с регистрами из [[msx:basic:|]] используется оператор [[msx:basic_dialogue_programming_language:007#settitle|SET TITLE]] {{anchor:block3_1}} ===== ID=1 (пароль) ===== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | 0 | 0 | 1 | 0 |Вариант: пароль| | 1 | | | | |Использование ID=1| | 2 | | | | |Использование ID=2| | 3 | | | | |Использование ID=3| | 4 | | | | |Сжатые до 4 бит данные пароля × 4| | 5 | | | | |:::| | 6 | | | | |:::| | 7 | | | | |:::| | 8 | | | | |Флаг наличия ключевого картриджа| | 9 | | | | |Значение ключевого картриджа | | A | | | | |:::| | B | | | | |:::| | C | | | | |:::| Для работы с регистрами из [[msx:basic:|]] используется оператор [[msx:basic_dialogue_programming_language:007#setpassword|SET PASSWORD]] {{anchor:block3_2}} ===== ID=2 (подсказка в MSX-BASIC) ===== ^ Регистр ^ Биты ^^^^ Значение ^ ^:::^ 3 ^ 2 ^ 1 ^ 0 ^:::^ | 0 | 0 | 1 | 0 | 0 |Вариант: подсказка| | 1 | | | | |1–й символ подсказки (младшие биты)| | 2 | | | | |1–й символ подсказки (старшие биты)| | 3 | | | | |2–й символ подсказки (младшие биты)| | 4 | | | | |2–й символ подсказки (старшие биты)| | 5 | | | | |3–й символ подсказки (младшие биты)| | 6 | | | | |3–й символ подсказки (старшие биты)| | 7 | | | | |4–й символ подсказки (младшие биты)| | 8 | | | | |4–й символ подсказки (старшие биты)| | 9 | | | | |5–й символ подсказки (младшие биты)| | A | | | | |5–й символ подсказки (старшие биты)| | B | | | | |6–й символ подсказки (младшие биты)| | C | | | | |6–й символ подсказки (старшие биты)| Для работы с регистрами из [[msx:basic:|]] используется оператор [[msx:basic_dialogue_programming_language:007#setprompt|SET PROMPT]] {{anchor:mode}} ====== Регистр 13 (MODE) ====== Функции регистра режима (MODE) Выбор блока: Два младших бита регистра MODE (M1,M0) используются для указания блока перед чтением/записью в регистры 0..12. Регистры 13..15 доступны при любых значениях MODE. Включение/выключение будильника: Переключение бита 2 регистра MODE (AE) включает/выключает будильник. Однако нужно иметь в виду, что MSX-2 будильник не поддерживает. Завершение подсчета времени: Запись нуля в бит 3 выключает счет секунд, и функция часов останавливается. Запись единицы возобновляет счет. |< 25% 25% 25% 25%>| ^ Биты ^^^^ ^ 3 ^ 2 ^ 1 ^ 0 ^ | TE | AE | M1 | M0 | {{anchor:test}} ====== Регистр 14 (TEST) ====== Функции регистра теста (TEST) Регистр теста 14 используется для быстрого увеличения верхнего счетчика и для подтверждения того, что дата и время считаются правильно. Установка в единицу каждого бита этого регистра означает прямую установку пульса 2^14 (=16384 Hz) в счетчики дня (D), часа (H), минуты (M), секунды (S). |< 25% 25% 25% 25%>| ^ Биты ^^^^ ^ 3 ^ 2 ^ 1 ^ 0 ^ | D | H | M | S | {{anchor:reset}} ====== Регистр 15 (RESET) ====== Функции регистра сброса (RESET) Сброс будильника: Установка в единицу бита 0 (AR) вызывает сброс в ноль всех регистров будильника. Точная установка секунд: Установка в единицу бита 1 (CR) означает сброс дробей секунд. Включение/выключение пульса часов: Установка в единицу бита 2 (C16) означает выход пульса 16 Hz, а запись нуля в бит 3 (C1) - 1 Hz. Система MSX-2 эти возможности не поддерживает. |< 25% 25% 25% 25%>| ^ Биты ^^^^ ^ 3 ^ 2 ^ 1 ^ 0 ^ | C1 | C16 | CR | AR | ====== Процедуры BIOS ====== FIXME Следующие процедуры BIOS предназначены для доступа к регистрам. Поскольку эта процедуры находится в SUB ROM, они вызывается с использованием межслотового вызова. |REDCLK (01F5/SUB)|Считывает регистр по адресу, указанному в регистре C, и сохраняет его в регистре A| |WRTCLK (01F9/SUB)|Записывает содержимое регистра A в регистр по адресу, указанному в регистре C. Адрес указывается в формате, аналогично REDCLK| Метод спецификации регистра: | ^ Биты ^^^^^^^^ |Адрес [C]^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ |Значение [A]| 0 | 0 | M1 | M0 | A3 | A2 | A1 | A0 | | ||| номер блока || номер регистра |||| ====== Примеры ====== [[msx:datapack:datapack#examples|MSX Datapack]], программа ''PROMPT.MAC'' ====== Ссылки ====== [[msxorg>wiki/RTC|RTC]] [[msxorg>wiki/Ricoh_RP-5C01|Ricoh RP-5C01]] [[http://fms.komkon.org/MSX/Docs/Clock.txt|Clock Chip in MSX2]] [[http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=6%BE%CF+CLOCK%A4%C8%A5%D0%A5%C3%A5%C6%A5%EA%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7%A1%A6%A5%E1%A5%E2%A5%EA|MSX Datapack wiki — CLOCK]] [[github>oboroc/msx-books/blob/master/msx2-fb-1993-ru.md#9-часы-и-энергонезависимая-память|Архитектура и устройства микрокомпьютеров стандарта MSX-2 — 9. Часы и энергонезависимая память]] [[github>oboroc/msx-books/blob/master/msx2-fb-1993-ru.md#323-доступ-к-микросхеме-таймера-и-энергонезависимой-памяти|Архитектура и устройства микрокомпьютеров стандарта MSX-2 — 3.23. Доступ к микросхеме таймера и энергонезависимой памяти]] {{tag>MSX Hardware}}