По поводу CMOS, вот документация к CMOS.ADD (Plug-In для эмулятора Spectrum 3.05).
Цитирую:
=======CMOS.TXT================================================
CMOS уже готов!
Сделал не знаю по чьей схеме, но в тексте
упоминалось нечто "Глюк" (или некто?
.
TK> Модуль действительно эмулирует CMOS, подключенную по схеме Рената
Мамедова (Mr.Gluk):
~для программиста она видна как 64 ячейки памяти. Адрес нужной
ячейки нужно записать в порт с адресом #DFF7 (адреса для модифи-
цированной схемы Глюка), а считать/записать данные можно из/в
порт(а) #BFF7. Порты эти появляются в адресном пространстве
только после установки 7-го бита порта #EFF7. Иначе часов там нет
список ячеек часов.
00 - секунды
01 - секунды будильника
02 - минуты
03 - минуты будильника
04 - часы
05 - часы будильника
06 - день недели
07 - число
08 - месяц
09 - год
0A - служебный регистр
0B - то же
0C - то же
0D - то же
0E - отсюда и до конца озу пользователя
...
3F ~.
Значит так. Все данные (их 256 байт) сохраняются в файле cmos.dat
(по умолчанию; можно изменить).
TK> В микросхеме КР512ВИ1 всего 64 ячейки памяти - 256 байт слегка
многовато
Если такого файла при загрузке модуля нет, он создаётся (весь в
ноликах). Далее любая запись в цмос отражается в этом файле, а
ячейки 00..0d могут прописываться (дополнительно) напрямую в CMOS
(если установить соответствующий флажок в настройке модуля).
Чтение ячеек 00...0d _всегда_ производится непосредственно из
CMOS, независимо от флажка. Чтение с других адресов производится
из файла. Вроде всё.
Слова Вовы Гекса, комментарии Тима Келли, музыка народная
=======CMOS.TXT================================================