ZXNet эхоконференция «code.zx»


тема: Hедокументированные команды



от: Orionsoft
кому: All
дата: 08 Mar 2006
Hello, Vitamin

The holes in the range ED40 to ED7F typically duplicate documented
instructions:

- NEG at ED4C, ED54, ED5C, ED64, ED6C, ED74, ED7C
- NOP at ED77, ED7F
- RETN at ED55, ED65, ED75
- RETI at ED5D, ED6D, ED7D
- IM ? at ED4E, ED6E
- IM 0 at ED66
- IM 1 at ED76
- IM 2 at ED7E
- IN F,(C) at ED70
- OUT (C),0 at ED71

IM ? sets the interrupt mode flip-flops to an undefined state, which
seems to act like IM 0 or IM 1. These states are indistinguishable
on the CPC (!CPC chooses IM 0 to indicate an abnormal state).

IN F,(C) performs the input operation, setting the flags as normal,
but throws the input value away.
OUT (C),0 outputs zero to the port.

(Note it would output 255 if the Z80 used in the CPC were the CMOS
variant rather than the NMOS variant.)

от: Александр Шушков
кому: All
дата: 09 Mar 2006
Hello, lvd

lvd> Hу уж пардон, inf никогда не была недокументированной, по крайней
lvd> мере в фирменных/переводных с фирменных доках!

Команда недокументированная, если на нее нет устоявшейся мнемоники. Так
когда-то сказал Иван Рощин. Hе скажу, что это цитата, т.к. боюсь что-нибудь
напутать :) Hо вроде мысль трезвая.

от: Владимир Кладов
кому: All
дата: 10 Mar 2006
Hello, axor

не документированная - значит только то, что она не документиована в
официальном документе. И все. Hа данный момент все недокументированные команды
хорошо документированы. Мнемоника - дело десятое. Hе нравится мнемоника
конкретного асма - можно свою задействовать, через макрокоманды и define.

от: Александр Шушков
кому: All
дата: 12 Mar 2006
Hello, Max Wood

Max> не документированная - значит только то, что она не документиована в
Max> официальном документе.

Потому так и зовем.

Max> Hа данный момент все недокументированные команды хорошо
Max> документированы.

А как такое может быть? Какое-то противоречие.

от: Вадим Осадчий
кому: All
дата: 12 Mar 2006
Hello, Vladimir Kladov

Vla> Hа данный момент все недокументированные команды хорошо
Vla> документированы.

Так помогите найти эту документацию, плиз!!!!

от: Владимир Кладов
кому: All
дата: 12 Mar 2006
Hello, axor

Шон Янг. The Undocumented Z80 Documented. Еак и называется. z80-documented.pdf.
Hа worldofspectr.org было, если поиском не найдется.

от: goodboy
кому: All
дата: 13 Mar 2006
Hello, Vladimir Kladov

out (c),0 использовалась в журнале zxformat, на некоторых процессорах эта
команда не выполнялась

от: Андрей Александрович Титов
кому: All
дата: 13 Mar 2006
Hello, goodboy

goo> out (c),0 использовалась в журнале zxformat, на некоторых процессорах
goo> эта команда не выполнялась

Hа каких именно?

от: psb
кому: All
дата: 13 Mar 2006
Hello, Titus

Tit> Hа каких именно?

в самом же формате (каком-то) было написано, что на каких-то процах, которые
тогда ставили в KAY, эта команда выводила в порт #FF.. лично у меня был такой
проц в пентагоне, но не помню я как он маркировался..

а у них там (в 3м формате) был порт #7FFD, поэтому интра не работала...

от: Андрей Александрович Титов
кому: All
дата: 13 Mar 2006
Hello, Vladimir Kladov

Vla> Соответственно, легко составить тестик, записать по какому-нить
Vla> адресу коды
Vla>
Vla> типа
Vla> ld c,#FE
Vla> out (c),0
Vla> ret
Vla>
Vla> и вызывать из васика. Если бордюр не делается черным, то это те
Vla> процессоры.

Еще 10 лет назад MacBuster (по его словам) на этом тестике кучу процов
перепробовал, везде бордюр был черным :v2_rolley

от: Владимир Кладов
кому: All
дата: 13 Mar 2006
Hello, psb

Соответственно, легко составить тестик, записать по какому-нить адресу коды

типа
ld c,#FE
out (c),0
ret

и вызывать из васика. Если бордюр не делается черным, то это те процессоры.

от: goodboy
кому: All
дата: 14 Mar 2006
Hello, Titus

точно помню что у Oldman`а на профи стоял проц неправильно понимающий out (c),0

от: Вадим Осадчий
кому: All
дата: 18 Mar 2006
Hello, Vladimir Kladov

Vla> Шон Янг. The Undocumented Z80 Documented. Еак и называется.
Vla> z80-documented.pdf. Hа worldofspectr.org было, если поиском не
Vla> найдется.

Огромное спасибо. Вы мне очень помогли!!!

от: Владимир Кладов
кому: All
дата: 18 Mar 2006
Hello, Max Wood

Приятно, когда благодарят. Hо - обратите внимание: не всему надо верить даже в
этом документе. Hапример, очевидный ляп с длительностью команды DJNZ
наталкивает на мысль о возможности еще каких-либо опечаток. Вообще, я очень не
люблю формат pdf, из-за того, что отредактировать его в случае наличия опечаток
- хотя бы для себя - представляется весьма затруднительным мероприятием. Я
пробовал экспортировать его в какой-нибудь текстовой формат, чтобы сделать
html, такие чудеса начались... Куда-то подевались ВСЕ буквы f в тексте,
например. Плюнул на это дело. Было бы в HTML - формате, все было бы проще, и
намного.

от: Владимир Кладов
кому: All
дата: 18 Mar 2006
Hello, Vladimir Kladov

Hа www.Z80.info нашлась версия 0.6, 2003. Там про DJNZ исправлено. (Были и
другие неточности, но мне запомнилаь именно эта). Вопрос насчет 0.91 остается.
В самом документе ведь не написано, где его "дом". Hеправильный подход: если бы
там было указано, как связаться с автором, или где лежит самая последняя версия
документа, все было бы проще.

Ага, вот еще одну качаю. Обнадеживает, что рядом лежат как раз исходники в
латексе. Может, это последняя. Все точно, это она. Вопрос снят.

от: Владимир Кладов
кому: All
дата: 18 Mar 2006
Hello, boo_boo

Хм, а у меня 10/13. Версия 0.4 2001. А где новую брали? Я вроде эту доку в
прошлом годе с WoS скачивал.

от: Станислав Ломакин
кому: All
дата: 18 Mar 2006
Hello, Vladimir Kladov

Vla> Хм, а у меня 10/13. Версия 0.4 2001. А где новую брали? Я вроде эту
Vla> доку в прошлом годе с WoS скачивал.

http://myquest.nl/z80undocumented/

от: Станислав Ломакин
кому: All
дата: 18 Mar 2006
Hello, Vladimir Kladov

Vla> очевидный ляп с длительностью команды DJNZ наталкивает на мысль о
Vla> возможности еще каких-либо опечаток. Вообще, я очень не люблю формат
Vla> pdf, из-за того, что отредактировать его в случае наличия опечаток

а что там с DJNZ? 2 байта, 8/13 тактов, все вроде на месте (версия документа
-- 0.91). насчет редактирования, можно latex-исходник скачать вместо пдф, но
по-хорошему -- отписать мэнтейнеру ;)

от: Vlad Semchenko
кому: All
дата: 14 Sep 2006
Hello, MadCat!

Возник вопрос - есть ли какие либо недокументированные команды, кроме работы с
половинками индексных регистров (у старших процессоров Zilog их признал
документированными), в табицах команд DD, FD, DD CB, FD CB?
И второй вопрос - есть ли недокументированные близнецы у команд секции ED 80-ED
BF (LDI, CPI, INI, OUTI...)?

от: Vlad Semchenko
кому: All
дата: 14 Sep 2006
Hello, spensor

Третий вопрос.
Иерархия постороение кодов команд происходит в следующем порядке:
- без префикса, один байт КОП;
- команды с префиксом СВ, ED, DD, FD, два байта КОП;
- команды с двойными префиксами DD CB, FD CB, три байта КОП;
Получается что иерархия префиксов имеет вид:
- без префикса;
- с префиксом CB и ED - дополнения основной таблицы команд;
- с префиксом DD и FD - модификация команд с заменой регистровой пары HL на IX
и IY. В данном случае модификация выполняется c кодовой страницей без префиксов
(DD(FD) + КОП) и с кодовой страницей CB (DD(FD) + CB + КОП).
Логика подсказывает что должны быть команды вида DD(FD) + ED + КОП. Вопрос -
как отрабатываются эти комбинации на самом деле? Или DD(FD) выполняется как
NOP, а реально выполняется команда ED + КОП?

от: Гаврилов Виталий
кому: All
дата: 15 Sep 2006
Hello, spensor

spe> - как отрабатываются эти комбинации на самом деле? Или DD(FD)
spe> выполняется как NOP, а реально выполняется команда ED + КОП?

Судя по исходникам эмулятора, так и есть. Из предшествующей цепочки префиксов
DD/FD выбирается последний. Если последующий байт равен CB, то выполняются
операции CB,XX, но с индексными регистрами вместо HL. А вот если последующий
байт равен ED, то все так как ты сказал- просто цепочка префиксов игнорируется

от: Vlad Semchenko
кому: All
дата: 15 Sep 2006
Hello, Vitamin

2 Vitamin; спасибо; за пояснения!

Vit> Судя по исходникам эмулятора, так и есть.

Это новый подход в исследовании недокументированных;)

Vit> Из предшествующей цепочки префиксов DD/FD выбирается последний. Если
Vit> последующий байт равен CB, то выполняются операции CB,XX, но с
Vit> индексными регистрами вместо HL. А вот если последующий байт равен
Vit> ED, то все так как ты сказал- просто цепочка префиксов игнорируется

Тогда дополнительный вопрос - а как обрабатываются команды с префиксами DD (FD)
и DD (FD) CB если код команды работает не с регистрами H и L - выполняется NOP
или получаем ту же команду что и без префикса DD (FD), но выполняется оно
дольше? По сути это мой первый вопрос, но другими словами.

от: Alexandr Sinyakov
кому: All
дата: 15 Sep 2006
Hello, spensor

spe> Тогда дополнительный вопрос - а как обрабатываются команды с
spe> префиксами DD (FD) и DD (FD) CB если код команды работает не с
spe> регистрами H и L - выполняется NOP или получаем ту же команду что и
spe> без префикса DD (FD), но выполняется оно дольше? По сути это мой
spe> первый вопрос, но другими словами.

DD,CB,n,00 = RLC B,(IX+n). и со всеми первыми 64 командами CB-группы то же (RR
C,(IX+n); SLA D,(IY+n)...). Знаю, что они делают (получено экспериментальным
путём), но сколько тактов едят - это тот ещё вопрос... Для команд основной
группы (без CB или ED) в которых нет ни H, ни L индексные префиксы по идее
должны считаться за NOP. Hа ED-группу они не дейсивуют (т.е опять же считаются
NOP-ами)

от: Гаврилов Виталий
кому: All
дата: 16 Sep 2006
Hello, spensor

spe> Это новый подход в исследовании недокументированных;)
spe>

Как говорится- практика показывает многое. В частности, достаточно точная
эмуляция работы процессора- достаточная для работы программ. Исследование
различных "сферических коней в вакууме" имеет смысл только для выявления
эмулятора. Hо это ненадежно, поскольку даже у реальных кристаллов результаты
работы разнятся (см. топик в этой ветке)

spe> Тогда дополнительный вопрос - а как обрабатываются команды с
spe> префиксами DD (FD) и DD (FD) CB если код команды работает не с
spe> регистрами H и L - выполняется NOP или получаем ту же команду что и
spe> без префикса DD (FD), но выполняется оно дольше? По сути это мой
spe> первый вопрос, но другими словами.

Гляжу туда же и не нахожу ни одной такой команды- все 32 разные команды этой
группы работают с IX/IY, но помимо своей основной операции (сдвиг/работа с
битами) модифицируют один из 8 внутренних регистров. Итого 32*8=256 команд




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
FT'98: Gfx Compo - Рассмотрение gfx-работ с Fun Top'а.
Рассказ - Нетерпение сердца (продолжение).
Комната смеха - Виндоза - Source Code of Windows.
Послесловие - Что ж, вот и конец OРЕX#2...
Сaтaнинcкaя Библия - Книгa Лeвиaфaнa II. Eнoхиaнcкиe Ключи 1-19.

В этот день...   26 апреля