Как общеизвестно SMUC помимо IDE-адаптера (если кому угодно контроллера), содержал на "борту" также часики (CMOS RTC), адаптер ISA-шины, Serial Flash память (NVRAM) и контроллер прерываний i8259A. Вопрос в следующем - кто знает полную раскладку портов устройства?
я пока не совсем разобрался. пока смотрю схему и читаю шит от 24LC16 (надо смотреть профПЗУ, пока не знаю, кто контроллирует i2c: аппаратно в альтере или програмно спеком?)
1. Обращение к IDE происходит только через 8 портов (#xxВЕ). В других адаптерах 16 портов. Достаточно ли 8 портов для полноценной работы с IDE?
да, из 8 регистров, выбираемых при активном CS1 физически откликается только регистр 6. на чтение он дублирует регистр статуса, но его чтение не сбрасывает INTRQ (то есть если аккуратно читать статус и не выкидывать считанные байты, всё ok). запись - софтварный сброс и маска запрета прерывания, вроде тоже можно обойтись, тем более zx не использует прерывания
2. В драйверах IS-DOS обращение к CMOS RTC происходит через один порт #DFBA. Записываем в порт адрес ячейки и считываем из нее данные. Каким образом происходит запись данных в ячейки?
вот что я нашёл:
Код:
(x) Jason
Доступ к микросхеме CMOS-часовъ в контроллере SMUC.
#DFBA - порт адреса/данных
#FFBA bit 7 - разрешение записи данных, маска #77.
_В пространстве ввода/вывода TR-DOS!_
Для чтения из регистра:
- записать номер требуемого регистра в порт #DFBA;
- из него-же прочитать значение.
Для записи в регистр:
- записать номер требуемого регистра в порт #DFBA;
- разрешить запись в регистры микросхемы, для этого
установить бит 7 в порту #FFBA (маска #77), например так:
LD A,#77
SET 7,A
LD BC,#FFBA
OUT (C),A
- записать новое значение регистра в порт #DFBA.
- запретить запись в регистры микросхемы, для этого записать
число #77 в порт #FFBA.
Адреса процедур в ПЗУ trdos:
#3FF0 OUT (C),A
RET
#3FF3 IN A,(C)
RET