Z80 и EI/DI

Микропроцессоры и микроконтроллеры от фирмы Zilog, а также компьютеры на них построенные

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Z80 и EI/DI

Post by Lavr »

Микропроцессор i8080 (aka K580BM80A) выполняя аппаратные прерывания и команды EI/DI
сообщает о своем состоянии по выводу INTE .

У микропроцессора Z80 аналогичного вывода нет.
Но по каким-либо косвенным признакам есть возможность узнать аппаратно это его состояние?
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

У меня есть схема Z80-card для "Ориона-128". Сигнал SND - это они не INTE случаем "сконструировали"?
Zcard2.jpg
У "Ориона-128" звук-то изначально вроде как тоже формировался через вывод INTE по командам EI/DI...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

Да, похоже на то, что это именно оно:
Для эмуляции отсутствующего у микропроцессора Z80 сигнала INTE в "Z80 Card " используется формирователь на элементах DD4.2 DD4.3 DD7.4 DD6.1 DD 6.2 (этот узел появился только из-за требования полной совместимости с "Орионом 128" в части генерации звуковых колебаний). Работа формирователя заключается в "вылавливании" кодов команд EI и DI в циклах M1 микропроцессора (чтение кода операции) и установке INTE в соответствующее состояние Команды EI (11111011В) и DI (11110011B) различаются только на один бит D3, его значение "защелкивается" триггером DD6.2. Остальные детали устройства дешифрируют код команды и осуществляют привязку к спаду сигнала М1.
http://retro.h1.ru/Orion/Z80_Card/Z80Card.php

Единственное, чем это мне не подходит, К580ВМ80А делает еще и DI чисто аппаратно, когда входит
в обслуживание прерывания...
А приведенная схема этого не отслеживает... :-?
iLavr
User avatar
Shaos
Admin
Posts: 24023
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Z80 и EI/DI

Post by Shaos »

Работа формирователя заключается в "вылавливании" кодов команд EI и DI в циклах M1 микропроцессора (чтение кода операции) и установке INTE в соответствующее состояние
ой костыли какие...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

Shaos wrote:
Работа формирователя заключается в "вылавливании" кодов команд EI и DI в циклах M1 микропроцессора (чтение кода операции) и установке INTE в соответствующее состояние
ой костыли какие...
А что делать? Знаешь решение лучше?
Тем более, что эти костыли не решают основной задачи - отследить, что Z80 вошел в прерывание. :osad:
iLavr
User avatar
Shaos
Admin
Posts: 24023
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Z80 и EI/DI

Post by Shaos »

Лучшим решением было бы забыть про формирование звука через INTE...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

Shaos wrote:Лучшим решением было бы забыть про формирование звука через INTE...
А никто и не собирался этим заниматься.
Мне просто необходимо как-то аппаратно узнать - вошел Z80 в обслуживание прерывания или нет.

А всё, что выше, это я просто пошукал, что на этот повод находит Гугл...

А в "Галаксии", чтобы отловить вход в обслуживание прерывания используют вот такой "костылик":
GalaInt.gif
You do not have the required permissions to view the files attached to this post.
iLavr
IgorR76
Senior
Posts: 102
Joined: 27 Jul 2015 15:20

Re: Z80 и EI/DI

Post by IgorR76 »

Lavr wrote:Мне просто необходимо как-то аппаратно узнать - вошел Z80 в обслуживание прерывания или нет.
IORQ. Input/Output Request (output, active Low, tristate). IORQ indicates that the lower half of the address bus holds a valid I/O address for an I/O read or write operation. IORQ is also generated concurrently with M1 during an interrupt acknowledge cycle to indicate that an interrupt response vector can be placed on the data bus.
M1. Machine Cycle One (output, active Low). M1, together with MREQ, indicates that the current machine cycle is the op code fetch cycle of an instruction execution. M1, when operating together with IORQ, indicates an interrupt acknowledge cycle.
Оно?
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

IgorR76 wrote:
M1, when operating together with IORQ, indicates an interrupt acknowledge cycle.
Оно?
Так "Оно" и нарисовано: 6 - M1, 7 - IORQ, или на английском "Оно" стало понятнее? :o
Lavr wrote:А в "Галаксии", чтобы отловить вход в обслуживание прерывания используют вот такой "костылик":
Image
iLavr
IgorR76
Senior
Posts: 102
Joined: 27 Jul 2015 15:20

Re: Z80 и EI/DI

Post by IgorR76 »

:o Разумеется, понятнее!
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

IgorR76 wrote::o Разумеется, понятнее!
Хум хау... финишед МГИМО ? :mrgreen:

Язык схем вобще-то интернационален... :wink:
iLavr
IgorR76
Senior
Posts: 102
Joined: 27 Jul 2015 15:20

Re: Z80 и EI/DI

Post by IgorR76 »

:) На схеме не видно, когда наступает событие M1+IORQ.
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

IgorR76 wrote::) На схеме не видно, когда наступает событие M1+IORQ.
Хум хау... точно... финишед МГИМО... :osad:

На схеме великолепно видно всякому, умеющему схемы читать:
событие наступает = /(//M1 & //IORQ) где "/" - отрицание
Чего уж более то?
iLavr
IgorR76
Senior
Posts: 102
Joined: 27 Jul 2015 15:20

Re: Z80 и EI/DI

Post by IgorR76 »

:no: Это способ получения нужного сигнала. А что именно сигнализируют эти линии, написано в мануале.
Если это то, что нужно Вам - то :kruto: !
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Z80 и EI/DI

Post by Lavr »

IgorR76 wrote:Если это то, что нужно Вам - то :kruto: !
То что нужно мне - отчасти изображено на этом рисунке:
Image
А то, что написано на английском - мне никчему, я это вполне знаю по-русски.

Отчасти - потому как это сработает только в случае /(//M1 & //IORQ), а сигнал
INTE держится до следующей команды EI.
Поэтому я и назвал это "костыликом". И по схеме видно, что "костылик" подперли еще
и триггером, чтобы событие /(//M1 & //IORQ) удержать.

Так что язык схем информативнее мануалов, даже если последние писаны на английском. :wink:


P.S. В общем, если кто-либо не знает другого более простого решения, то сигнал INTE можно
соотрудить из двух "костыликов": от Z80-Card - детект EI/DI, и по схеме выше - детект
обслуживания прерывания. Довольно некрасиво получается...
iLavr