PDA

Просмотр полной версии : Недокументированные команды



MadCat!
11.02.2005, 14:11
in f,(c) = inf
out (c),0 = ???
im 0/1 = ???есть ли какие-нибудь сокращенные названия для команд out и im (см. выше)? они кем-нибудь когда-нибудь использовались?

Conan
11.02.2005, 15:22
Возможно, пригодится:
Тут есть устоявшиеся (на западе) названия «недокументированных» команд Z80
(см. файл)

Vitamin
11.02.2005, 21:41
in f,(c) = inf
out (c),0 = ???
im 0/1 = ???есть ли какие-нибудь сокращенные названия для команд out и im (см. выше)? они кем-нибудь когда-нибудь использовались?
насколько я понимаю, это соответственно команды
#ed, #70 (inf)
#ed, #71 (out (c),0- не уверен насчет этого, не встречал)
#ed, #4e [#6e] (im 0*)- или какие другие?

MadCat!
12.02.2005, 12:23
Возможно, пригодится:
Тут есть устоявшиеся (на западе) названия «недокументированных» команд Z80
(см. файл)thanx. правда, у них im 0/1 вообще нет, in f,(c) = просто in (c), out (c),0 так и записывается. в наших асмах не совсем то ;)

MadCat!
12.02.2005, 12:25
насколько я понимаю, это соответственно команды
#ed, #70 (inf)
#ed, #71 (out (c),0- не уверен насчет этого, не встречал)
#ed, #4e [#6e] (im 0*)- или какие другие?да, они. иногда ещё out (c),* записывается.
мне интересно, последние две команды вообще используются?

p.s.: на zxdocs -> soft -> TASM4_12.zip B Turbo Assembler v4.12 похоже не хватает файла в .scl

lvd
12.02.2005, 14:59
thanx. правда, у них im 0/1 вообще нет, in f,(c) = просто in (c), out (c),0 так и записывается. в наших асмах не совсем то ;)

В наших как раз 'совсем то' - потому что inf - документированная команда и в мануалах именно так и пишется, а что там выдумали буржуи - пусть остаётся на их совести =)

btw, где все недок. команды Z80 описаны наиболее полно?

Vitamin
15.02.2005, 17:59
да, они. иногда ещё out (c),* записывается.
мне интересно, последние две команды вообще используются?

а чем отличаются команды im 0* и ей подобные от обычных im 0 и т.д.?

psb
15.02.2005, 18:19
а чем отличаются команды im 0* и ей подобные от обычных im 0 и т.д.?

а ничем :)

Alpha
15.02.2005, 18:22
а ничем :)
мну так и думал :D

Vitamin
17.02.2005, 19:57
а ничем :)
а какого фигаро разные мнемоники? лажа какаято....

psb
17.02.2005, 20:09
а какого фигаро разные мнемоники? лажа какаято....

да кто ж их знает? этих команд, по идее, не должно было быть... сами получились... т.е. IM 0* - это случайно получившийся IM 0 (ну забыли там сделать полую дешифрацию, типа). а "*" - для отличия. да и команды эти юзали раньше тока в ксорках каких, чтоб с толку сбить... особенно во времена MONS4...

Vitamin
17.02.2005, 23:14
да с этими командами вообще неразбериха какаято. к недокументированным относят как всякие экзотические, использование которых под вопросом (inf, out (c),0, set 5,a,(ix+1) etc) так и довольно нужные (slr, sli) и вообще необходимые (lx,hx,ly,hy)

lvd
17.02.2005, 23:39
да с этими командами вообще неразбериха какаято. к недокументированным относят как всякие экзотические, использование которых под вопросом (inf, out (c),0, set 5,a,(ix+1) etc) так и довольно нужные (slr, sli) и вообще необходимые (lx,hx,ly,hy)

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

Про половинки согласен - без них как без рук =) Но тем не менее в доках на Z80 их нема :-\

И ещё, что такое slr? Вроде как sli заполняет единственную пустующую колонку в CB-командах...

Vitamin
19.02.2005, 19:35
И ещё, что такое slr? Вроде как sli заполняет единственную пустующую колонку в CB-командах...
абшибся. имел в виду часть тетрады SLA/SLI/SRA/SRL (в забугорных мнемониках SLA/SLL/SRA/SRL), у которой не документирована только часть с SLI (сужу по книжке "рекомендации по программированию на басике" (там есть описания мнемоник), хотя она и довольно давно писалась)

Orionsoft
08.03.2006, 02:58
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.)

axor
09.03.2006, 21:05
Ну уж пардон, inf никогда не была недокументированной, по крайней мере в фирменных/переводных с фирменных доках!
Команда недокументированная, если на нее нет устоявшейся мнемоники. Так когда-то сказал Иван Рощин. Не скажу, что это цитата, т.к. боюсь что-нибудь напутать :) Но вроде мысль трезвая.

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

Max Wood
11.03.2006, 22:05
На данный момент все недокументированные команды хорошо документированы.
Так помогите найти эту документацию, плиз!!!!

axor
11.03.2006, 22:58
не документированная - значит только то, что она не документиована в официальном документе.
Потому так и зовем.


На данный момент все недокументированные команды хорошо документированы.
А как такое может быть? Какое-то противоречие.

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

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

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

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

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

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

Vladimir Kladov
13.03.2006, 19:51
Соответственно, легко составить тестик, записать по какому-нить адресу коды

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

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

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

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

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

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

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

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

Где ж я сейчас после стольких лет откопаю комп Олдмана... Придется подождать, пока кто-то у себя на процессоре на такое напорится и скажет его модель.

Vladimir Kladov
14.03.2006, 17:39
CHRV mрясти опять надо, у него их 5... 8-]

Max Wood
18.03.2006, 08:52
Шон Янг. The Undocumented Z80 Documented. Еак и называется. z80-documented.pdf. На worldofspectr.org было, если поиском не найдется.
Огромное спасибо. Вы мне очень помогли!!!

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

boo_boo
18.03.2006, 10:22
очевидный ляп с длительностью команды DJNZ наталкивает на мысль о возможности еще каких-либо опечаток. Вообще, я очень не люблю формат pdf, из-за того, что отредактировать его в случае наличия опечаток а что там с DJNZ? 2 байта, 8/13 тактов, все вроде на месте (версия документа -- 0.91). насчет редактирования, можно latex-исходник скачать вместо пдф, но по-хорошему -- отписать мэнтейнеру ;)

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

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

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

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

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

spensor
14.09.2006, 17:32
Третий вопрос.
Иерархия постороение кодов команд происходит в следующем порядке:
- без префикса, один байт КОП;
- команды с префиксом СВ, 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 + КОП?

Vitamin
14.09.2006, 23:15
- как отрабатываются эти комбинации на самом деле? Или DD(FD) выполняется как NOP, а реально выполняется команда ED + КОП?
Судя по исходникам эмулятора, так и есть. Из предшествующей цепочки префиксов DD/FD выбирается последний. Если последующий байт равен CB, то выполняются операции CB,XX, но с индексными регистрами вместо HL. А вот если последующий байт равен ED, то все так как ты сказал- просто цепочка префиксов игнорируется

spensor
15.09.2006, 15:39
2 Vitamin: спасибо за пояснения!

Судя по исходникам эмулятора, так и есть.
Это новый подход в исследовании недокументированных;)

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

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

Vitamin
15.09.2006, 22:20
Это новый подход в исследовании недокументированных;)

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



Тогда дополнительный вопрос - а как обрабатываются команды с префиксами DD (FD) и DD (FD) CB если код команды работает не с регистрами H и L - выполняется NOP или получаем ту же команду что и без префикса DD (FD), но выполняется оно дольше? По сути это мой первый вопрос, но другими словами.
Гляжу туда же и не нахожу ни одной такой команды- все 32 разные команды этой группы работают с IX/IY, но помимо своей основной операции (сдвиг/работа с битами) модифицируют один из 8 внутренних регистров. Итого 32*8=256 команд

spensor
27.01.2011, 16:33
Не прошло и пятилетки, но обращаюсь к старой теме. Попытался создать сводную таблицу команд Z80, надергал из нескольких источников в инете. Ходелось бы спросить о многоуважаемого All, все ли в ней корректно, и если он соизволит, то пусть укажет на ошибки.
В качестве небольшого комента: недокументированные команды записаны строчными буквами (за исключением регистров-операндов), команды вида res 0, (IX+d), B это то-же самое что и res B, 0, (IX+d) - встречалось оба варианта написания, какой вариант можно считать "узаконенным" не знаю.

Sinus
27.01.2011, 18:13
Полный список комманд (включая все возможные недокументированные) в аттаче.

если в комманде написано:
[N] - числовой операнд, 1 байт
[NN] - числовой операнд, 2 байта
[O] - смещение адреса, байт со знаком
[SO] - смещение в индексных операция, байт со знаком

недокументированные комманды типа LD A,LX или RES 0,(IX+d) никак не выделены, ибо они такие же комманды, как и остальные :)
комманды-дубли начинаются со *
**NOP - это линейка префиксов, типа DD DD DD FD FD FD DD FD DD FD FF и т.д.

если не знаешь C, то формат такой:
{ "тут комманда", NULL }, // номер комманды

spensor
28.01.2011, 17:42
Полный список комманд (включая все возможные недокументированные) в аттаче.
Спасибо за информацию, весьма исчерпывающе!
Исправил таблицу выше. Команды вида "res B,0,(IX+d)" в документе записаны (немного подогнав под привычную форму) как "ld B,res 0,(IX+d)". Возник вопрос, а ассемблеры которые способны компилировать в эти коды команд, в каком виде принимают мнемокод? Или нет ассемблеров работающих с этими недокументированными командами, и команда записывается через DEFB?
Параллельно хотелось бы спросить, возможно кто-то в теме, существует ли документ с описанием недокументированных команд на Z180? Официально вроде бы таковых нет, но Z380 и eZ80 программно совместимые с Z180 вполне легально оперируют половинками индексных регистров IXU/IXL и IXH/IXL соответственно. Насколько можно допустить в Z180 они работают тоже.
И последний вопрос. Не даст ли кто сслыку на описание архитектуры ASCII R800? Перечень команд находится быстро, а вот по программной модели (адресуемое пространство, работа MMU, etc) не удалось найти.

Sinus
28.01.2011, 18:27
Возник вопрос, а ассемблеры которые способны компилировать в эти коды команд, в каком виде принимают мнемокод?
много недокументированных комманд понимает ALASM (на спеке) и sjasmplus (кросс ассемблер). насчёт конкретно RES B,0,(IX+d) не знаю.

Vadim
02.02.2011, 08:29
Насколько можно допустить в Z180 они работают тоже.
Начиная с Z-180 "узаконены" обращения к половинками IX & IY.

spensor
02.02.2011, 10:09
Начиная с Z-180 "узаконены" обращения к половинками IX & IY.
А где можно прочесть подтверждение работоспособности половинок? Гугл на "undocumented opcode Z180" не отзывается, а в оффдоке их нет.

Еще один вопрос, может кто в курсе, в LR35992, который "GB Z80", как отрабатываются коды DD, ED, FD, D3, DB и прочие? Выполняются как NOP или какое-то иное действие?

Vadim
02.02.2011, 13:49
который "GB Z80"
Помнится мне, что в доках к эмулю описано было. Точно не помню, но по ED там ничего нет, а по DD некие команды были.