А вот, оказывается, в простейших системах, где не используется
580ВК28(38) или иная схема,
выполняющая фунции системного контроллера, с этим простым схемным решением
RST 7возможна очень трудно отслеживаемая засада...
И дело вот в чем: когда
i8080 обслуживает прерывание последвательность действий такая:
шина адреса - в высокоимпедансном состоянии, подается строб чтения
DBIN, и с шины данных
считывается либо код
RST0...RST7, либо
CALL ADDR.
При этом системный контроллер
580ВК28(38) или его аналог превращает строб чтения
DBINпроцесора в сигнал
INTA - по сути это строб чтения из "контроллера прерываний".
В этом случае трюк с резисторами =
RST 7 работает хорошо, т.к. сигнал
DBIN перенаправлен в
INTA, а сигналы чтения памяти
MEMRD или чтения УВВ
IORD априори не активны.
И даже если никакого "контроллера прерываний" нет, то получается, что код
0FFH на шину
выдают
только резисторы! И
никакой другой источник не активизирован!
А теперь смотрим,
как это сработает в простой системе: шина адреса - в высокоимпедансном состоянии,
но на шине адреса обычно какой-либо простой дешифратор пространства памяти подвешен!
Адресная шина от него отключилась и в хорошем случае, если на шинах никаких мешеющих
сигналов нет, и сам дешифратор типа ТТЛ, он понимает эту ситуацию, как если у него на
входе логические единицы и активизирует свой старший вывод - тем самым выберет устройство,
находящееся по старшему адресу!
И тут наш процессор выдает сигнал
DBIN, который в простых системах просто поступает
на вса БИС памяти и БИС УВВ, включенные, как ячейки памяти...
Ясное дело, что никакого
RST 7 от резисторов по 10К может и не произойти.
Забавно, что столкнулся с этим, отлаживая аналог Галаксии на КР580ВМ80А! Даже смешно стало -
там где "резисторы" пришлось изображать двумя шинными формирователями - никаких сбоев нет,
поскольку усложненная схема корректно их переключает.
Как только перешел в
Proteus, который "понимает" притяжку резисторами, начали наблюдаться сбои...
Меня очень смущало, что в моем реальном "Специалисте МХ" трюк с резисторами работал без проблем!
Получается, что там в момент прерывания дешифратор срабатывал на порт
0FFFFH, а по логике
дешифрации "Специалиста МХ" на этом адресе нет ничего! Значит ничто и не мешало на шине
данных резисторам сформирвать код
0FFH, не смотря на активный
DBIN!