nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Apr 2024 23:55



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

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
ОК.
masterspammer wrote:
Мысль была - если заменить весь процессор эквивалентным ему конечным автоматом, это как минимум мне, а скорее всего - никому не добавит понимания.

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

интепритировать, не впадая в крайности. Как тут любят частенько некоторые особы. Вот и сравнил Z80 со стейт машиной. ТК видимо понял куда копать.

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


16 Jan 2021 01:58
Profile
Supreme God
User avatar

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

Процессор, если анализировать его структуру, явно содержит ячейки памяти, у классического конечного автомата памяти
(кроме единственного значения - состояния) нет, ...

Еще один пророк... :(
Quote:
Автомат Мили – это конечный автомат, где выходные сигналы являются функциями текущего состояния и входного сигнала, ...

Ребята... если вы всё забыли, либо никогда по этой профессии не учились, вынужден вам напомнить,
что устройство, у которого "выходные сигналы являются функциями текущего состояния и входного сигнала" -
это RS-триггер:
Attachment:
rs.jpg
rs.jpg [ 17.52 KiB | Viewed 7963 times ]

А он и есть - элементарная ячейка памяти.

P.S. Вот про это и будет мой анекдот... просто сейчас некогда писать "многабукв" - кино смотрю.

_________________
iLavr


16 Jan 2021 02:36
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
А видали как в Z80 регистры сделаны? :o


16 Jan 2021 03:11
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Предположу.

AlexanderZh wrote:
Немного смущает похожеть регистра HL на пару X-Y


Ну, это ТРАНЗИСТОРНАЯ реализация около 5к штук там. Не греться, не требует киловатный блок питания для питания.

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


16 Jan 2021 03:43
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Lavr wrote:
...
это RS-триггер:
А он и есть - элементарная ячейка памяти.

С этим как бы никто не спорит, а вот то, что несколько регистров не стоит рассматривать как один автомат - ниже.
AlexanderZh wrote:
masterspammer wrote:
...явно содержит ячейки памяти

Спорно. Ибо при включении/сбросе состояния ячеек обычно определены строго.

Тут я не про хаос, а про мощность множества состояний.
Пусть есть 30 регистров, включая недоступные программно, это 240 ячеек памяти.
Каждая ячейка имеет два состояния, представляет собой автомат и её легко понять;
регистр это 8 ячеек и он содержит в себе 8 автоматов, хотя его и можно описать как автомат с 256 состояниями,
но понятнее не будет; 240 ячеек памяти это 2^240 состояний - за пределами понимания; ну и получается,
что практичнее не рассматривать весь процессор как автомат, а рассматривать как автоматы его отдельные части;

вот например механизм извлечения команд представляется как автомат и понятности не теряет.
Alekcandr wrote:
Я просто некоторое время думал, как это интепритировать, не впадая в крайности.

Вспомнились дебаты про несводимость машины Тьюринга к автоматам, вот и завёлся, прошу прощения.
Alekcandr wrote:
...ТК видимо понял куда копать.

Если TK == Топик Креатор, то в общем-то куда копать примерно и было понятно, а вот несколько деталей мне в книжках не попадались,
если говорить в терминах автоматов, граф состояний был известен не весь.


16 Jan 2021 19:25
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Интересное обнаружил в работе битовых команд (с префиксом CB); для SLA (HL) - при чтении каждого байта - и CB и 26 сигнал !M1 активен, но для SLA (IX+d) сигнал !M1 активен только при чтении DD и CB - и смещение и 26 читаются при неактивном !M1.

Получается, что как будто SLA (HL) - двухбайтовая (CB и 26) команда, а SLA (IX+d) - тоже двухбайтовая (DD и CB) с двумя операндами (d и 26).

Интересно, это нормально или глюк эмулятора - http://www.visual6502.org/JSSim/expert-z80.html ? Думаю о глюке, потому что SLA (IX+d) - (FD CB 11 26) на нём же глючит (в непрерывном режиме вообще виснет, в пошаговом нет) не читая 00 и 26, (единицы на !M1, !RD и !WE, на шине данных FF), но потому успешно читает память по IY+D:

cycle ab db _m1 _rd _wr _mreq _iorq State pc Fetch
0 0000 ff 1 1 1 1 1 m1 0000
0 0000 ff 1 1 1 1 1 m1 0000
1 0000 ff 1 1 1 1 1 m1 0000
1 0000 ff 1 1 1 1 1 m1 0000
2 0000 ff 1 1 1 1 1 m1 t1 0000
2 0000 ff 0 1 1 1 1 m1 t1 0000
3 0000 dd 0 0 1 0 1 m1 t2 0001 DD PREFIX
3 0000 dd 0 0 1 0 1 m1 t2 0001 DD PREFIX
4 0000 dd 0 0 1 0 1 m1 t3 0001 DD PREFIX
4 0000 ff 1 1 1 1 1 m1 t3 0001
5 0000 ff 1 1 1 0 1 m1 t4 0001
5 0000 ff 1 1 1 0 1 m1 t4 0001
6 0000 ff 1 1 1 1 1 m1 t1 0001
6 0001 ff 0 1 1 1 1 m1 t1 0001
7 0001 21 0 0 1 0 1 m1 t2 0002 LD IX,NNNN
7 0001 21 0 0 1 0 1 m1 t2 0002 LD IX,NNNN
8 0001 21 0 0 1 0 1 m1 t3 0002 LD IX,NNNN
8 0001 ff 1 1 1 1 1 m1 t3 0002
9 0001 ff 1 1 1 0 1 m1 t4 0002
9 0001 ff 1 1 1 0 1 m1 t4 0002
10 0001 ff 1 1 1 1 1 m2 t1 0002
10 0002 ff 1 1 1 1 1 m2 t1 0002
11 0002 66 1 0 1 0 1 m2 t2 0003
11 0002 66 1 0 1 0 1 m2 t2 0003
12 0002 66 1 0 1 0 1 m2 t3 0003
12 0002 66 1 0 1 0 1 m2 t3 0003
13 0002 ff 1 1 1 1 1 m3 t1 0003
13 0003 ff 1 1 1 1 1 m3 t1 0003
14 0003 66 1 0 1 0 1 m3 t2 0004
14 0003 66 1 0 1 0 1 m3 t2 0004
15 0003 66 1 0 1 0 1 m3 t3 0004
15 0003 66 1 0 1 0 1 m3 t3 0004
16 0003 ff 1 1 1 1 1 m1 t1 0004
16 0004 ff 0 1 1 1 1 m1 t1 0004
17 0004 fd 0 0 1 0 1 m1 t2 0005 FD PREFIX
17 0004 fd 0 0 1 0 1 m1 t2 0005 FD PREFIX
18 0004 fd 0 0 1 0 1 m1 t3 0005 FD PREFIX
18 0002 ff 1 1 1 1 1 m1 t3 0005
19 0002 ff 1 1 1 0 1 m1 t4 0005
19 0002 ff 1 1 1 0 1 m1 t4 0005
20 0002 ff 1 1 1 1 1 m1 t1 0005
20 0005 ff 0 1 1 1 1 m1 t1 0005
21 0005 21 0 0 1 0 1 m1 t2 0006 LD IY,NNNN
21 0005 21 0 0 1 0 1 m1 t2 0006 LD IY,NNNN
22 0005 21 0 0 1 0 1 m1 t3 0006 LD IY,NNNN
22 0003 ff 1 1 1 1 1 m1 t3 0006
23 0003 ff 1 1 1 0 1 m1 t4 0006
23 0003 ff 1 1 1 0 1 m1 t4 0006
24 0003 ff 1 1 1 1 1 m2 t1 0006
24 0006 ff 1 1 1 1 1 m2 t1 0006
25 0006 88 1 0 1 0 1 m2 t2 0007
25 0006 88 1 0 1 0 1 m2 t2 0007
26 0006 88 1 0 1 0 1 m2 t3 0007
26 0006 88 1 0 1 0 1 m2 t3 0007
27 0006 ff 1 1 1 1 1 m3 t1 0007
27 0007 ff 1 1 1 1 1 m3 t1 0007
28 0007 88 1 0 1 0 1 m3 t2 0008
28 0007 88 1 0 1 0 1 m3 t2 0008
29 0007 88 1 0 1 0 1 m3 t3 0008
29 0007 88 1 0 1 0 1 m3 t3 0008
30 0007 ff 1 1 1 1 1 m1 t1 0008
30 0008 ff 0 1 1 1 1 m1 t1 0008
31 0008 fd 0 0 1 0 1 m1 t2 0009 FD PREFIX
31 0008 fd 0 0 1 0 1 m1 t2 0009 FD PREFIX
32 0008 fd 0 0 1 0 1 m1 t3 0009 FD PREFIX
32 0004 ff 1 1 1 1 1 m1 t3 0009
33 0004 ff 1 1 1 0 1 m1 t4 0009
33 0004 ff 1 1 1 0 1 m1 t4 0009
34 0004 ff 1 1 1 1 1 m1 t1 0009
34 0009 ff 0 1 1 1 1 m1 t1 0009
35 0009 cb 0 0 1 0 1 m1 t2 000a CB PREFIX
35 0009 cb 0 0 1 0 1 m1 t2 000a CB PREFIX
36 0009 cb 0 0 1 0 1 m1 t3 000a CB PREFIX
36 0005 ff 1 1 1 1 1 m1 t3 000a
37 0005 ff 1 1 1 0 1 m1 t4 000a
37 0005 ff 1 1 1 0 1 m1 t4 000a
38 0005 ff 1 1 1 1 1 m2 t1 000a
38 000a ff 1 1 1 1 1 m2 t1 000a
41 000a ff 1 1 1 1 1 m3 t1 000b
41 000b ff 1 1 1 1 1 m3 t1 000b
44 000b ff 1 1 1 1 1 m3 t4 000c
44 000b ff 1 1 1 1 1 m3 t4 000c
45 000b ff 1 1 1 1 1 m3 t5 000c
45 000b ff 1 1 1 1 1 m3 t5 000c
46 000b ff 1 1 1 1 1 m4 t1 000c
46 8899 ff 1 1 1 1 1 m4 t1 000c
47 8899 00 1 0 1 0 1 m4 t2 000c
47 8899 00 1 0 1 0 1 m4 t2 000c
48 8899 00 1 0 1 0 1 m4 t3 000c
48 8899 00 1 0 1 0 1 m4 t3 000c
49 8899 ff 1 1 1 1 1 m4 t4 000c
49 8899 ff 1 1 1 1 1 m4 t4 000c
50 8899 ff 1 1 1 1 1 m5 t1 000c


17 Jan 2021 20:11
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22544
Location: Silicon Valley
Reply with quote
ну видимо Z80 так и работает на самом деле - это же симулятор реального кристалла

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


17 Jan 2021 21:34
Profile WWW
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Shaos wrote:
ну видимо Z80 так и работает на самом деле - это же симулятор реального кристалла

Однако же на SLA (IY+d) эта симуляция адски глючит - см. такты 39 - 43 - это может быть как глюком логгирования, так и глюком симулятора (отсутствует "проводок", например). А от IY до IX один шаг, так что я в сомнениях, придётся на настоящей железке проверять.

Само по себе то, что префикс меняет !M1 выглядит странным; с другой стороны - d это явно операнд, а снова !M1 после операнда тоже странно...


17 Jan 2021 21:51
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Могу предложить попробовать Z80Explorer для сравнения. Уже продвигал его где-то на форуме.


18 Jan 2021 04:26
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
masterspammer wrote:
Однако же на SLA (IY+d) эта симуляция адски глючит - см. такты 39 - 43 - это может быть как глюком логгирования, так и глюком симулятора (отсутствует "проводок", например).

Действительно с командой SLA (IY+d) в симуляторе, что-то пошло не так. Надо задавать вопрос автору симулятора.

masterspammer wrote:
Само по себе то, что префикс меняет !M1 выглядит странным; с другой стороны - d это явно операнд, а снова !M1 после операнда тоже странно...

А вот с командой SLA (IX+d), считай аналог все нормуль. И со стейт машиной не вижу странностей. Начинается 1 машинный цикл, считывается префикс 0xDD. Сброс. Начинается 1 машинный цикл, считывается префикс 0xСВ, далее считывается смещение d, далее команда 0x26. Далее идут циклы выполнения команды. Конец. Снова 1 машинный цикл.

Да как-то не вписывается эта команда в привычный шаблон, но вот так это команда реализована. Что уж тут.

Приложил скриншот, мелковато, главное выделил.

Image

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


18 Jan 2021 15:54
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
dvarkin wrote:
Могу предложить попробовать Z80Explorer для сравнения. Уже продвигал его где-то на форуме.

Уткнулся в ужас вида "Compile with QtCreator..." - ставить целую среду разработки ради сборки программы в 100 килобайт в архиве - несколько перебор по-моему, хотя остальные программы, написанные на QT, собираются без этого. Под wine не идёт, так что воздержусь.


18 Jan 2021 18:27
Profile
Fanat
User avatar

Joined: 13 Dec 2020 21:11
Posts: 86
Reply with quote
Alekcandr wrote:
Действительно с командой SLA (IY+d) в симуляторе, что-то пошло не так. Надо задавать вопрос автору симулятора.

Угу, спросил; настроен пессимистично, Z80 не главный процессор проекта, так что...

Alekcandr wrote:
...Приложил скриншот, мелковато, главное выделил.

Видел, вот этим вопрос и вызван - без префикса-то 26 читается с активным !M1.


18 Jan 2021 18:31
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
masterspammer wrote:
Видел, вот этим вопрос и вызван - без префикса-то 26 читается с активным !M1.
Без префикса 0xСВ? Видимо 0xСВ уже не чистый префикс, а еще часть команды. Потом смещение для этой группы команд неотъемлемая часть, вычисляется первым смещение и всегда, далее ...

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

Или смущает команда LD IXh,n (DD26 n)? Кстати она не документированная (это так слову). Так тут строго все по мануалу. Процессор натыкается на префикс DD. Сбрасывает "автомат" в конце первого машинного цикла. И по новому первый машинный цикл. Декодирует следующий байт с установкой, что до этого был префикс DD. Находит команду 26 в нашем случаи (первый машинный цикл), далее отрабатывает ее.

p.s. Замысловато эти CISC процессоры работают :)

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


Last edited by Alekcandr on 19 Jan 2021 02:16, edited 2 times in total.



19 Jan 2021 00:26
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
masterspammer wrote:
Уткнулся в ужас вида "Compile with QtCreator..." - ставить целую среду разработки ради сборки программы в 100 килобайт в архиве - несколько перебор по-моему, хотя остальные программы, написанные на QT, собираются без этого. Под wine не идёт, так что воздержусь.
Можно и без него:
$ cd Z80Explorer
$ qmake
$ make all


19 Jan 2021 01:30
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Странно Z80Explorer на 7-ке работает. Запускается. Просить, открыт слой. Не успеваю выбрать слой. Некоторое время работает и падает, без причины. При повторном запуске, пишется, отказано в доступе. В процессах не нахожу.

Ну и ладно. Для этого случая у меня Modelsim и корка Т80 :)

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


19 Jan 2021 02:46
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 46 posts ]  Go to page Previous  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.