nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 23:51



Reply to topic  [ 46 posts ]  Go to page 1, 2, 3, 4  Next
Вопрос про !M1 при чтении операнда 
Author Message
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Какое значение вывода !M1 при извлечении операнда команды, например второго байта в LD B, 0x15, третьего в LD A, [IX+2], третьего и четвёртого - в LD HX, 0x1212 или в CALL 0x1212? Другими словами - это ещё извлечение кода операции или уже цикл чтения? Подозреваю, что цикл чтения, но нигде не нашёл указания на то. Ткните носом в datasheet, пожалуйста!

P.S. При чтении спецификации процессора у меня сложилось впечатление, что !M1 активен при извлечении как минимум кода команды со всеми префиксами (с перерывами на регенерацию памяти). В таком случае получение сигнала INTE в ZX-card для Ориона-128 (схема http://rdk.regionsv.ru/orion128-z80card.htm из Радио 1996, N4) будет ошибаться на командах set 6,E (CB F3), set 7,E (CB FB), срабатывая на их второй байт, хотя в программах для ВМ80 таких сочетаний быть не должно. Если же линия !M1 активна и при выборе операнда, то ZX-card будет ошибаться и на командах вида LD A, 0xF3, CALL 0xF8F3 и так далее, про что я не слышал и потому склоняюсь, что операнд читается без !M1


Last edited by masterspammer on 17 Jan 2021 19:41, edited 1 time in total.



13 Jan 2021 21:41
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Ну вроде как аргументы инструкции считаются данными - M1 будет только у самой инструкции (и видимо префиксов)

_________________
:dj: https://mastodon.social/@Shaos


14 Jan 2021 05:08
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
1. M1 указывает, что это первый машинный цикл при выполнении какой либо инструкции.
2. M1 используется в обработке прерываний.

Если не изменяет память. Для Z80 карты Ориона М1 использовался для детекта инструкции EI/DE и эмуляции сигнала INTE (сигнал для бипера в Радио-86РК подобных компьютерах) ВМ80.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


14 Jan 2021 07:22
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Shaos wrote:
Ну вроде как аргументы инструкции считаются данными - M1 будет только у самой инструкции (и видимо префиксов)

Спасибо! Схема упрощается! А у префиксов, кстати, не может не быть !M1 - когда процессор выставляет !M1 он ещё не знает - что там будет - инструкция или префикс.
Другое дело, что теоретически он может не выставлять его после префикса...

Alekcandr wrote:
1. M1 указывает, что это первый машинный цикл при выполнении какой либо инструкции.

Вот в pdf как-то мутно написано. Можно по-разному трактовать, а все эпюры для однобайтных инструкций.
Alekcandr wrote:
2. M1 используется в обработке прерываний.

Угу, INT (!IOREQ + !M1), в NMI не используется, насколько знаю.
Alekcandr wrote:
Если не изменяет память. Для Z80 карты Ориона М1 использовался для детекта инструкции EI/DE и эмуляции сигнала INTE (сигнал для бипера в Радио-86РК подобных компьютерах) ВМ80.

Так я про то и написал - если при при команде с префиксом будет M1, то бипер будет поскрипывать на set 6,E / set 7,E; звучит странно - неужели "и так сойдёт"?
OOPS! А я написал ZX-Card!


14 Jan 2021 07:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
masterspammer wrote:
А у префиксов, кстати, не может не быть !M1 - когда процессор выставляет !M1 он ещё не знает - что там будет - инструкция или префикс.
Другое дело, что теоретически он может не выставлять его после префикса...

Quote:
M1 Machine Cycle 1 - Машинный цикл 1
Активный уровень - низкий. /M1 указывает, что в текущей
машинном цикле происходит чтение кода операции из памяти. При считывании кода
операции вида CB, ED, DD, FD вырабатывается ещё один цикл M1 для считывания второго
байта кода операции, т.е. сигнал /M1 активизируется дважды.

/M1 также активизируется вместе с сигналом /IORQ в цикле подтверждения
прерывания.
https://zxpress.ru/book_articles.php?id=1447
Image

_________________
iLavr


14 Jan 2021 07:46
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
masterspammer, вот тут можно предметно пожмакать, и получить ответ на вопрос.

masterspammer wrote:
то бипер будет поскрипывать на set 6,E / set 7,E; звучит странно - неужели "и так сойдёт"?

Видимо будет поскрипывать, но для этого еще придется постараться.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


14 Jan 2021 13:17
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Lavr wrote:
Quote:
...ещё один цикл M1 для считывания второго
байта кода операции, т.е. сигнал /M1 активизируется дважды.

/M1 также активизируется вместе с сигналом /IORQ в цикле подтверждения
прерывания.
[b]https://zxpress.ru/book_articles.php?id=1447
Image

Хорошая книжка! Спасибо!
Глянул в datasheet, вдруг я пропустил, но нет, там нет места про ещё цикл - сразу про подтверждения прерывания.

Alekcandr wrote:
masterspammer, вот тут можно предметно пожмакать, и получить ответ на вопрос.

Спасибо, пожамкал! Итого:

* В итоге в течении чтения всей команды чередуются !RFSH и !M1 (вывод RFSH не выводится, но виден на кристалле), возможны перерывы на DMA, тогда точнее сказать, что будут чередоваться !RFSH, !M1 (при неактивном !IORQ) и !BUSAK; при упрощении формулы, естественно, !IORQ смотреть со стороны буфера, иначе можно поймать сигнал !IORQ от контроллера DMA.

* Команды без параметров таким образом друг от друга неотделимы - идёт ли команда с префиксом или две разные команды - не понять - нужно смотреть на шину данных и ловить префиксы, высчитывая длину команды.

* Может быть ещё разное про обработке команды HALT, но симулятор не умеет показывать её длительную работу (можно и на реальном железе потом посмотреть).

* Отдельная тема с !NMI - так как обработка немаскируемого прерывания на вид неотличима от [s]магии[/s] чтения команды, то решением будет задержать поступление !NMI до завершения команды (тут см. примечание про неотделимость команд) и тогда уже будет понятно, что сейчас обрабатывается прерывание.

Alekcandr wrote:
Видимо будет поскрипывать, но для этого еще придется постараться.

На поскрипывание в общем-то плевать, а для более серьёзного применения, боюсь, требуется что-то посерьёзнее.


14 Jan 2021 19:39
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Я бы рассматривал Z80 как некую стейт машину (конечный автомат) без "магии", и тогда все станет проще и понятней.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


15 Jan 2021 01:45
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Alekcandr wrote:
Я бы рассматривал Z80 как некую стейт машину (конечный автомат) без "магии", и тогда все станет проще и понятней.

Вопрос, как именно этот автомат устроен (вроде разобрался) - часть вещей-то можно сделать более чем одним способом.
...и как повторить в упрощённом виде этот автомат, если нужно точно отследить выполняемую команду. Довольно просто, кстати...


15 Jan 2021 04:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
masterspammer wrote:
Alekcandr wrote:
Я бы рассматривал Z80 как некую стейт машину (конечный автомат) без "магии", и тогда все станет проще и понятней.

Вопрос, как именно этот автомат устроен (вроде разобрался)...

Скажем так, любой процессор - это просто "конечный автомат"...
Но в чём цель топикстартера - не совсем понятно, с сигналом /М1 вроде как успешно разобрались.

_________________
iLavr


15 Jan 2021 12:16
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Lavr wrote:
...
Скажем так, любой процессор - это просто "конечный автомат"...

Тут не соглашусь; в теории процессор можно свести к формальному конечному автомату, но на более-менее современных мы
получим множество состояний мощности как бы не больше числа частиц во вселенной и такое сведение будет тупиком
(понимания не добавит).

Другое дело - рассмотреть какую-то часть процессора как конечный автомат - полезно и логично; ну или не рассмотреть, а реализовать.
Lavr wrote:
Но в чём цель топикстартера - не совсем понятно, с сигналом /М1 вроде как успешно разобрались.

Есть одна задумка - совершенно безумная и бесполезная; напишу о ней детальнее, как спаяю прототип.
И мне там нужно детектировать часть команд, а для этого - отделять их друг от друга и от префиксов. Теперь понятно, как
и можно делать автомат (мелкая логика или простая 556РТ** и несколько триггеров).

То, как это сделано для "Ориона" выглядит ненадёжным (хотя для пищалки может и хватит), сначала я удивлялся простоте схемы,
потому у меня и возникли сомнения про активность !M1 после извлечения префикса - может я чего не понимаю и так делать можно?
Теперь понимаю, что при работе только 8080 кода проблем не будет, а в остальном "и так сойдёт".


15 Jan 2021 20:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
masterspammer wrote:
Lavr wrote:
...
Скажем так, любой процессор - это просто "конечный автомат"...

Тут не соглашусь; в теории процессор можно свести к формальному конечному автомату, но на более-менее современных мы
получим множество состояний мощности как бы не больше числа частиц во вселенной и такое сведение будет тупиком
(понимания не добавит).

Давайте всё же определимся точнее, с чем вы не согласны: с тем что любой процессор - это просто "конечный автомат",
или верное по сути утверждение, что любой процессор - это просто "конечный автомат" просто лично вам не добавит понимания?

_________________
iLavr


15 Jan 2021 20:52
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
ну на самом деле если есть динамическая составляющая (как в старых NMOS-процах), то это уже не автомат никакой, а динамическая система с элементами хаоса, которую предсказать и полностью просимулировать невозможно :mrgreen:

настоящие конечные автоматы это CMOS-процы, которые по даташиту могут работать от 0 Гц

_________________
:dj: https://mastodon.social/@Shaos


15 Jan 2021 21:55
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Да ну нафиг... я почему и переспросил, поскольку мне было интересно, что подразумевается конкретным
человеком под фразой "конечный автомат".
По определению обычно это:
Quote:
Конечный автомат — это некоторая абстрактная модель, содержащая конечное число состояний чего-либо. Используется для представления и управления потоком выполнения каких-либо команд.

Процессор обычно так и рассчитывают, как "конечный автомат".
Потому как если число состояний бесконечно, ты его просто не рассчитаешь.

А вот всякие вещи типа:"динамическая система с элементами хаоса, которую предсказать и полностью просимулировать
невозможно
" - это фигня, хорошо, что Интел не слышит... :-?
Особенно "с элементами хаоса" - это просто ерунда.

_________________
iLavr


15 Jan 2021 22:12
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Lavr wrote:
Давайте всё же определимся точнее, с чем вы не согласны: с тем что любой процессор - это просто "конечный автомат",

Процессор, если анализировать его структуру, явно содержит ячейки памяти, у классического конечного автомата памяти
(кроме единственного значения - состояния) нет, так что он в лучшем случае - множество взаимодействующих конечных автоматов.
Тем не менее, несмотря на то, что по сути (по задумке изготовителя, структуре и т.д.) он не является автоматом, можно построить
эквивалентный ему конечный автомат, хотя он и будет чудовищной сложности. Такая эквивалентность позволит распространить теоремы
теории автоматов на процессор.
Примерно так же то, что программа на языке высокого уровня компилируется в машинный код, не делает её саму написанной в машинных кодах.
Lavr wrote:
или верное по сути утверждение, что любой процессор - это просто "конечный автомат" просто лично вам не добавит понимания?

Мысль была - если заменить весь процессор эквивалентным ему конечным автоматом, это как минимум мне, а скорее всего - никому не добавит понимания.
Любой алгоритм может быть переписан на Brainfuck; но в полном соответствии с названии языка, понимания это не добавит.

P.S. А хаос как раз ничего не значит - бывают и недетерминированные конечные автоматы.


16 Jan 2021 01:20
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 46 posts ]  Go to page 1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.