PDA

Просмотр полной версии : Особенности выполнения команды HLT на Специалисте



denis74
27.12.2022, 12:32
Добрый день !
Есть возможность на железе проверить результат выполнения команды HLT (76) для 580ВМ80 , в орионе после выполнения 76 чудесным образом превращается в 8А !) На сециалисте и клонах так же?

ivagor
27.12.2022, 13:08
О каком "превращении" речь? Из памяти читается 76h, а до процессора доходит 8Ah? Это в каком орионе, журнальном? Проверяли анализатором?

denis74
27.12.2022, 21:27
О каком "превращении" речь? Из памяти читается 76h, а до процессора доходит 8Ah? Это в каком орионе, журнальном? Проверяли анализатором?

Разобрались ,сорри. Код 76 при исполнении самомодифицируется в 8А. Это глюк ориона , но возможно в специалисте такая же проблема , поэтому здесь спросил.

ivagor
27.12.2022, 22:06
Это не глюк ориона и ничего там не самомодифицируется. 8A это слово состояния 8080, соответствующее циклу HALT.

denis74
27.12.2022, 22:24
Это не глюк ориона и ничего там не самомодифицируется. 8A это слово состояния 8080, соответствующее циклу HALT.

Меняется сама ячейка в озу с 76 на 8А при выполнении. Про слово состояния 8080 верно , оно в озу и пишется вместо 76. В спеце так же?

ivagor
28.12.2022, 06:56
Меняется сама ячейка в озу с 76 на 8А при выполнении
Если в M2 HALT на ШД сохраняется 8A после SYNC (в даташите пунктир) и на ША адрес команды HALT (в даташите пунктир), то в журнальных специалисте и орионе может записать в память 8A. Как все знают, у них если после SYNC нет DBIN, то запись, и в M2 HALT как раз такая ситуация. Для классики это вряд ли можно назвать проблемой, т.к. при наличии HALT программа бы зависала и привести в чувство можно было только RESETом или выключением/включением питания.
Если написанное в первом предложении справедливо, то это весьма интересный факт. Стоит с этим разобраться, но нужно пробовать журнальные (или максимально близкие к ним) орионы и специалисты, у сябра в формировании /WE для озу участвует /WR с процессора и ничего удивительного ожидать не стоит.

denis74
28.12.2022, 14:17
Если в M2 HALT на ШД сохраняется 8A после SYNC (в даташите пунктир) и на ША адрес команды HALT (в даташите пунктир), то в журнальных специалисте и орионе может записать в память 8A. Как все знают, у них если после SYNC нет DBIN, то запись, и в M2 HALT как раз такая ситуация. Для классики это вряд ли можно назвать проблемой, т.к. при наличии HALT программа бы зависала и привести в чувство можно было только RESETом или выключением/включением питания.

Либо с помощью INT , что собственно и необходимо , но это уже точно не в этом разделе.
Да , эта особенность может быть у оригинальной версии специалиста .Ктоб проверил...

ivagor
28.12.2022, 15:01
Либо с помощью INT
Ну какой INT у оригинального специалиста или ориона.

CityAceE
27.09.2023, 17:34
Кто-нибудь из владельцев реального Специалиста на КР580ВМ80А всё-таки может проверить эту информацию?

CityAceE
30.09.2023, 12:16
Ну что ж, "спасение утопающих - дело рук сами утопающих". Первым делом после подключения к Специалисту телевизора проверил данную особенность. Для этого вбил такой код:
https://pic.maxiol.com/thumbs2/1696065005.780858384.photo20230930120751.jpg (https://pic.maxiol.com/?v=1696065005.780858384.photo20230930120751.jpg&dp=2)



0000: HLT
0001: JMP C000


То есть по моей логике, если вдруг компьютер проскочет HLT, то он перейдёт на загрузчик и компьютер сбросится. Однако при запуске этого кода, компьютер завис. После ручного сброса проверяю содержимое памяти:

https://pic.maxiol.com/thumbs2/1696065332.780858384.photo20230930120751.jpg (https://pic.maxiol.com/?v=1696065332.780858384.photo20230930120751.jpg&dp=2)

То есть никакого изменения в памяти не происходит. Для чистоты эксперимента проверил несколько раз.

ivagor
30.09.2023, 13:01
Спасибо, значит какое-то из условий (https://zx-pk.ru/threads/35306-osobennosti-vypolneniya-komandy-hlt-na-spetsialiste.html?p=1169545&viewfull=1#post1169545) (или все) не выполняются.

lexarr
30.09.2023, 17:08
То есть никакого изменения в памяти не происходит.
Происходит.

чудесным образом превращается в 8А
Именно такую картину и наблюдал на своём клоне специалиста (ЛИК, но схемотехника у них абсолютно одинаковая). Проверить не могу(, давно было.

Для чистоты эксперимента проверил несколько раз.
Может попытаться триггером EI/DI пощёлкать.

CityAceE
30.09.2023, 17:18
ЛИК, но схемотехника у них абсолютно одинаковая
Очень странно! Сегодня я проверял это поведение именно на Лике (https://zx-pk.ru/threads/35304-voprosy-po-arkhitekture-quot-spetsialista-quot.html?p=1186265&viewfull=1#post1186265).

HardWareMan
30.09.2023, 20:22
Если в M2 HALT на ШД сохраняется 8A после SYNC (в даташите пунктир) и на ША адрес команды HALT (в даташите пунктир), то в журнальных специалисте и орионе может записать в память 8A. Как все знают, у них если после SYNC нет DBIN, то запись, и в M2 HALT как раз такая ситуация. Для классики это вряд ли можно назвать проблемой, т.к. при наличии HALT программа бы зависала и привести в чувство можно было только RESETом или выключением/включением питания.
Если написанное в первом предложении справедливо, то это весьма интересный факт. Стоит с этим разобраться, но нужно пробовать журнальные (или максимально близкие к ним) орионы и специалисты, у сябра в формировании /WE для озу участвует /WR с процессора и ничего удивительного ожидать не стоит.
Действительно, DBIN блокируется в цикле М1 флагом HLTA, т.е. подтверждение останова является обычным M1 циклом с деактивированными стробами данных: и DBIN и nWR.
https://i.ibb.co.com/C7Q4YXZ/image.png
Упрощённая схема в Специалисте действительно использует только DBIN как признак направления данных, а SYNC как запрос на шину в следующем такте (для этого сигнал задерживается в триггере на 1 такт). Учитывая, что PC автоинкрементируется после вычитки опкода, то меняться должен следующий байт:
https://i.ibb.co.com/6015JD0/i8080-2.png
Сигнал WR в этих компьютерах используется только для портов.

ivagor
30.09.2023, 21:12
Основные вопросы, которые остаются
1. На ШД в M2 HALT после SYNC остается 8A?
2. На ША остается адрес HALT? denis74 писал про изменение ячейки с 76, не следующей.
3. Влияют ли EI и DI?
Вопросы касаются не только к ВМ80, но и компа.

CityAceE
30.09.2023, 22:29
Учитывая, что PC автоинкрементируется после вычитки опкода, то меняться должен следующий байт:
Может мне ещё какие-то эксперименты провести нужно? У меня ничего не меняется, ни этот байт, ни следующий.


Может попытаться триггером EI/DI пощёлкать.
Сделал предварительно DI, EI. Попробовал и наоборот. Повторил эту последовательность несколько раз. Но HLT у меня ни на что не меняется.

HardWareMan
01.10.2023, 06:56
2. На ША остается адрес HALT? denis74 писал про изменение ячейки с 76, не следующей.
ВМ80 всегда делает PC+1 после чтения опкода в третьем такте. В случае с HLT это особенно важно, ибо если он этого не сделает до подтверждения, то при вызове INT в стек улетит адрес HLT а не следующий. И чуда не произойдёт.

- - - Добавлено - - -

PS Почему до подтверждения? Потому что подтверждение INTA это сигнал оборудованию, которое может тут же сделать вызов. Это можно использовать для пошаговой отладки, например.

ivagor
01.10.2023, 07:11
В стек адрес улетит в следующих машинных циклах, а в какой момент у двух человек в память записался код 8A пока никто анализатором не смотрел. Возможно успешность такой записи зависит от экземпляра проца.

CityAceE
01.10.2023, 08:35
Возможно успешность такой записи зависит от экземпляра проца.
Похоже на правду. Так как у двух человек на одной и той же заводской модели два разных поведения. Я бы мог проверить и с другим процессорами, так как мой в панельке, но у меня других не нашлось.
Если что, мой процессор вот на этом фото есть:
https://pic.maxiol.com/thumbs2/1696049070.780858384.20230930073831.jpg (https://pic.maxiol.com/?v=1696049070.780858384.20230930073831.jpg&dp=2)

HardWareMan
01.10.2023, 10:51
В стек адрес улетит в следующих машинных циклах, а в какой момент у двух человек в память записался код 8A пока никто анализатором не смотрел. Возможно успешность такой записи зависит от экземпляра проца.
Ну в момент чтения опкода оно записаться однозначно не может. А следующее прямое обращение к шине будет уже при записи в стек адреса возврата, который уже будет +1 и произойдёт при запросе не запрещённого прерывания. А промеж них только 1 цикл с активацией SYNC и это цикл INTA. Ну ОК, раз есть броские различия между ИК55 и ВВ55, то скорее всего есть подобные отличия и у ИК80 и ВМ80[А]. Ну и я придерживаюсь теории запроса к шине с деактивированным DBIN, это выглядит наиболее логично.

- - - Добавлено - - -

PS Нет у меня сейчас нормального Экспресса, но скоро будет. Как руки дойдут - проверю ещё раз. И если эффект изменения будет то я постараюсь записать логиком.

ivagor
01.10.2023, 11:34
До стека дело точно не доходит, прерываний то в специалисте нет. Еще раз напишу - запись, если она происходит, то происходит в цикле M2 команды HALT и именно в нем. Figure 2-11 HALT Timing на странице 2-14 мануала 1975 года.

HardWareMan
01.10.2023, 17:59
Еще раз напишу - запись, если она происходит, то происходит в цикле M2 команды HALT и именно в нем. Figure 2-11 HALT Timing на странице 2-14 мануала 1975 года.
Вот именно. А PC++ делается во втором такте М1, при считывании опкода. Т.е. к М2 он уже будет следующим за HLT.

ivagor
01.10.2023, 18:34
На картинке Figure 2-11 в строке A0-15 написано PC. Для сравнения Figure 2-8 - там PC-1, потом PC, потом SP-1, потом SP-2. denis74 написал, что у него изменилась та же ячейка, у lexarra, насколько понимаю тоже. С другой стороны у CityAceE ничего не поменялось. Может кто-то из написавших ошибся, может пошутил, может ошибка в мануале - у меня сейчас нет 100% уверенности в каком-то одном из вариантов.

- - - Добавлено - - -

На всякий случай напишу свое предположение. С вероятностью близкой к 100% PC++ в такте 2 M1, как написано в таблице на странице 2-18. Но PC это PC, а то что на ША - это отдельно. Т.е. предполагаю, что в HLT PC инкрементируется, но наружу инкрементированный вариант не выдается, там остается старое значение. Это объясняет то, что написал denis74.

HardWareMan
01.10.2023, 21:06
ivagor, действительно есть отдельная защёлка перед буферами адресов:
https://i.ibb.co.com/WHmP5HK/image.png
А + делается схемой быстрого инкремента из WZ с сохранением в PC.

DDp
05.10.2023, 22:48
в орионе после выполнения 76 чудесным образом превращается в 8А !) На сециалисте и клонах так же?
Для этого вбил такой код:
0000: HLT
0001: JMP C000

Какие ужасы рассказываете. :v2_jawdr:
Добрался до Специалиста (Микрон2-ссылка (https://zx-pk.ru/threads/27790-quot-mikron-2-quot-(g-degtyarsk).html)), проверил - нет, не меняется.
79585
Проверял и с DI, и с EI, и три HLT подряд.

Точной схемы на Микрон2 нет, фото по ссылке (https://yadi.sk/d/8-ooESC93K6LDD).
Изготовитель процессора, тот же, что и у CityAceE ("Днепр" ?). Впаян.
В ПЗУ сейчас прошит стандартный монитор (не Микроновский).

ivagor
06.10.2023, 08:09
Если все же denis74 и lexarr не пошутили, то пара слов о гипотетическом влиянии проца. Умозрительно предположу, что раз на шинах до момента записи должны висеть нужные сигналы, значит это должны быть "старые" процы, у которых задержки (и по даташитам и по экспериментам Micka) больше. А при одинаковых абсолютных значениях задержек более благоприятным для несанкционированной записи представляется орион с его 2.5 МГц.

lexarr
06.10.2023, 10:53
"старые" процы
Возможно, вопрос в выработке сигнала MREQ (F на схеме) "старым" процом, чего он делать не должен. И всё. Мой впаян.

ivagor
06.10.2023, 11:08
Различия во временных характеристиках сигналов разных 8080 задокументированы и можно наблюдать на практике. А невыработку какого-то из основных сигналов, в частности SYNC (F на схеме) всерьез комментировать не могу, это из области ненаучной фантастики. Свой вариант изложил здесь (https://zx-pk.ru/threads/35306-osobennosti-vypolneniya-komandy-hlt-na-spetsialiste.html?p=1169545&viewfull=1#post1169545), если есть альтернативные и более правдоподобные - было бы интересно посмотреть.

lexarr
06.10.2023, 12:07
А невыработку какого-то из основных сигналов, в частности SYNC (F на схеме) всерьез комментировать не могу, это из области ненаучной фантастики.
Ибо ничего другого там не может быть по схеме физически.

denis74
21.12.2023, 06:32
Если все же denis74 и lexarr не пошутили, то пара слов о гипотетическом влиянии проца. Умозрительно предположу, что раз на шинах до момента записи должны висеть нужные сигналы, значит это должны быть "старые" процы, у которых задержки (и по даташитам и по экспериментам Micka) больше. А при одинаковых абсолютных значениях задержек более благоприятным для несанкционированной записи представляется орион с его 2.5 МГц.
Только проверил с адреса 0000 - 76 00 00 С3 превратилось в 8А 00 00 С3
,76 76 76 00 00 С3 в 8А 76 76 00 00 С3 на проце 8080 ,в прочем на вм80 то же самое.

HardWareMan
21.12.2023, 07:07
Только проверил с адреса 0000 - 76 00 00 С3 превратилось в 8А 00 00 С3
,76 76 76 00 00 С3 в 8А 76 76 00 00 С3 на проце 8080 ,в прочем на вм80 то же самое.
Т.е., бьётся только ячейка с адресом 0000?

- - - Добавлено - - -

Нужно всё же записать с помощью LA операцию выполнения HLT в Орионе, жаль у меня уже нет Ориона.

denis74
21.12.2023, 09:36
Новичок цитирует, но затирает ключевые слова - поправил.


Т.е., бьётся только ячейка с адресом 0000?

Нет ,эта программка в любом месте памяти меняет 76 на 8А. Меняет ли она ещё где и что хз.

В общем 8А это слово машинного цикла после команды HLT ,уже где то обсуждали , оно же в озу в орионе и пишется .