Наконец собрался включить в работу простаивающий и напрасно жрущий питание далласовский таймер реального времени DS12B887A.
И тут выяснились некоторые интересные особенности контроллеров I8237 и DS12B887A. Оказалось, что и тот и другой использует для дешифрации адресов своих регистров целых 8 адресных бит. Т.е. у I8237 для настройки регистров и обращения к каналам ПДП используются 4 адресные шины А0-А3, но А4-А7 должны быть в состоянии 0. Тоже самое и у DS12B887A который занимает адресное пространство в 128 байт (А0-А6). Поэтому, чтобы обратится к регистрам таймера, необходимо выставить на шину адреса в младших 7 разрядах все 0.
В результате эти 2 контроллера можно переносить в адресном пространстве процессора с шагом в 256 байт для I8237 и с шагом в 128 байт для DS12B887A.
Потому пришлось перепрограммировать дешифратор адреса Микрокома.
Вот что теперь есть:
0F700h - 0F71Fh - I8237 (DMA)
0F720h - 0F73Fh - резерв
0F740h - 0F75Fh - резерв
0F760h - 0F77Fh - JETkey -5 (KLA)
0F780h - 0F79Fh - DS12B887 (DMA)
0F7A0h - 0F7A3h - M82C55A (PIOPRINT)
0F7B0h - 0F7B3h - КР1818ВГ93 резерв
0F7B4h - 0F7B7h - M82C55A (PIODISK)
0F7B8h - 0F7BBh - SN74LS374 (RGDISK)
0F7BCh - 0F7BFh - КР1533ТМ9 резерв
0F7С0h - 0F7DFh - I8275 (ЭЛТ)
0F7E0h - 0F7FFh - M82C55A (PIOKLA)
0000h - 0DFFFh;0E800h-0F6FFh - RAM
0E000h - 0E7FFh;0F800h - 0FFFFh - ROM.
Осталось написать подпрограммку вывода индикации часов на монитор.




Ответить с цитированием