есть ли какие-нибудь сокращенные названия для команд out и im (см. выше)? они кем-нибудь когда-нибудь использовались?Код:in f,(c) = inf
out (c),0 = ???
im 0/1 = ???
Вид для печати
есть ли какие-нибудь сокращенные названия для команд out и im (см. выше)? они кем-нибудь когда-нибудь использовались?Код:in f,(c) = inf
out (c),0 = ???
im 0/1 = ???
Возможно, пригодится:
Тут есть устоявшиеся (на западе) названия «недокументированных» команд Z80
(см. файл)
насколько я понимаю, это соответственно командыЦитата:
Сообщение от MadCat!
#ed, #70 (inf)
#ed, #71 (out (c),0- не уверен насчет этого, не встречал)
#ed, #4e [#6e] (im 0*)- или какие другие?
thanx. правда, у них im 0/1 вообще нет, in f,(c) = просто in (c), out (c),0 так и записывается. в наших асмах не совсем то ;)Цитата:
Сообщение от Conan
да, они. иногда ещё out (c),* записывается.Цитата:
Сообщение от Vitamin
мне интересно, последние две команды вообще используются?
p.s.: на zxdocs -> soft -> TASM4_12.zip B Turbo Assembler v4.12 похоже не хватает файла в .scl
В наших как раз 'совсем то' - потому что inf - документированная команда и в мануалах именно так и пишется, а что там выдумали буржуи - пусть остаётся на их совести =)Цитата:
Сообщение от MadCat!
btw, где все недок. команды Z80 описаны наиболее полно?
а чем отличаются команды im 0* и ей подобные от обычных im 0 и т.д.?Цитата:
Сообщение от MadCat!
а ничем :)Цитата:
Сообщение от Vitamin
мну так и думал :DЦитата:
а ничем :)
а какого фигаро разные мнемоники? лажа какаято....Цитата:
Сообщение от psb
да кто ж их знает? этих команд, по идее, не должно было быть... сами получились... т.е. IM 0* - это случайно получившийся IM 0 (ну забыли там сделать полую дешифрацию, типа). а "*" - для отличия. да и команды эти юзали раньше тока в ксорках каких, чтоб с толку сбить... особенно во времена MONS4...Цитата:
Сообщение от Vitamin
да с этими командами вообще неразбериха какаято. к недокументированным относят как всякие экзотические, использование которых под вопросом (inf, out (c),0, set 5,a,(ix+1) etc) так и довольно нужные (slr, sli) и вообще необходимые (lx,hx,ly,hy)
Ну уж пардон, inf никогда не была недокументированной, по крайней мере в фирменных/переводных с фирменных доках! :cool:Цитата:
Сообщение от Vitamin
Про половинки согласен - без них как без рук =) Но тем не менее в доках на Z80 их нема :-\
И ещё, что такое slr? Вроде как sli заполняет единственную пустующую колонку в CB-командах...
абшибся. имел в виду часть тетрады SLA/SLI/SRA/SRL (в забугорных мнемониках SLA/SLL/SRA/SRL), у которой не документирована только часть с SLI (сужу по книжке "рекомендации по программированию на басике" (там есть описания мнемоник), хотя она и довольно давно писалась)Цитата:
Сообщение от lvd
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.)
Команда недокументированная, если на нее нет устоявшейся мнемоники. Так когда-то сказал Иван Рощин. Не скажу, что это цитата, т.к. боюсь что-нибудь напутать :) Но вроде мысль трезвая.Цитата:
Сообщение от lvd
не документированная - значит только то, что она не документиована в официальном документе. И все. На данный момент все недокументированные команды хорошо документированы. Мнемоника - дело десятое. Не нравится мнемоника конкретного асма - можно свою задействовать, через макрокоманды и define.
Так помогите найти эту документацию, плиз!!!!Цитата:
Сообщение от Vladimir Kladov
Потому так и зовем.Цитата:
Сообщение от Max Wood
А как такое может быть? Какое-то противоречие.Цитата:
Сообщение от Max Wood
Шон Янг. The Undocumented Z80 Documented. Еак и называется. z80-documented.pdf. На worldofspectr.org было, если поиском не найдется.
out (c),0 использовалась в журнале zxformat, на некоторых процессорах эта команда не выполнялась
На каких именно?Цитата:
Сообщение от goodboy
в самом же формате (каком-то) было написано, что на каких-то процах, которые тогда ставили в KAY, эта команда выводила в порт #FF.. лично у меня был такой проц в пентагоне, но не помню я как он маркировался..Цитата:
Сообщение от Titus
а у них там (в 3м формате) был порт #7FFD, поэтому интра не работала...
Соответственно, легко составить тестик, записать по какому-нить адресу коды
типа
ld c,#FE
out (c),0
ret
и вызывать из васика. Если бордюр не делается черным, то это те процессоры.
Еще 10 лет назад MacBuster (по его словам) на этом тестике кучу процов перепробовал, везде бордюр был черным :v2_rolleyЦитата:
Сообщение от Vladimir Kladov
точно помню что у Oldman`а на профи стоял проц неправильно понимающий out (c),0
Где ж я сейчас после стольких лет откопаю комп Олдмана... Придется подождать, пока кто-то у себя на процессоре на такое напорится и скажет его модель.Цитата:
Сообщение от goodboy
CHRV mрясти опять надо, у него их 5... 8-]
Огромное спасибо. Вы мне очень помогли!!!Цитата:
Сообщение от Vladimir Kladov
Приятно, когда благодарят. Но - обратите внимание: не всему надо верить даже в этом документе. Например, очевидный ляп с длительностью команды DJNZ наталкивает на мысль о возможности еще каких-либо опечаток. Вообще, я очень не люблю формат pdf, из-за того, что отредактировать его в случае наличия опечаток - хотя бы для себя - представляется весьма затруднительным мероприятием. Я пробовал экспортировать его в какой-нибудь текстовой формат, чтобы сделать html, такие чудеса начались... Куда-то подевались ВСЕ буквы f в тексте, например. Плюнул на это дело. Было бы в HTML - формате, все было бы проще, и намного.
а что там с DJNZ? 2 байта, 8/13 тактов, все вроде на месте (версия документа -- 0.91). насчет редактирования, можно latex-исходник скачать вместо пдф, но по-хорошему -- отписать мэнтейнеру ;)Цитата:
Сообщение от Vladimir Kladov
Хм, а у меня 10/13. Версия 0.4 2001. А где новую брали? Я вроде эту доку в прошлом годе с WoS скачивал.
http://myquest.nl/z80undocumented/Цитата:
Сообщение от Vladimir Kladov
На www.Z80.info нашлась версия 0.6, 2003. Там про DJNZ исправлено. (Были и другие неточности, но мне запомнилаь именно эта). Вопрос насчет 0.91 остается. В самом документе ведь не написано, где его "дом". Неправильный подход: если бы там было указано, как связаться с автором, или где лежит самая последняя версия документа, все было бы проще.
Ага, вот еще одну качаю. Обнадеживает, что рядом лежат как раз исходники в латексе. Может, это последняя. Все точно, это она. Вопрос снят.
Возник вопрос - есть ли какие либо недокументированные команды, кроме работы с половинками индексных регистров (у старших процессоров Zilog их признал документированными), в табицах команд DD, FD, DD CB, FD CB?
И второй вопрос - есть ли недокументированные близнецы у команд секции ED 80-ED BF (LDI, CPI, INI, OUTI...)?
Третий вопрос.
Иерархия постороение кодов команд происходит в следующем порядке:
- без префикса, один байт КОП;
- команды с префиксом СВ, 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 + КОП?
Судя по исходникам эмулятора, так и есть. Из предшествующей цепочки префиксов DD/FD выбирается последний. Если последующий байт равен CB, то выполняются операции CB,XX, но с индексными регистрами вместо HL. А вот если последующий байт равен ED, то все так как ты сказал- просто цепочка префиксов игнорируетсяЦитата:
Сообщение от spensor
2 Vitamin: спасибо за пояснения!
Это новый подход в исследовании недокументированных;)Цитата:
Сообщение от Vitamin
Тогда дополнительный вопрос - а как обрабатываются команды с префиксами DD (FD) и DD (FD) CB если код команды работает не с регистрами H и L - выполняется NOP или получаем ту же команду что и без префикса DD (FD), но выполняется оно дольше? По сути это мой первый вопрос, но другими словами.Цитата:
Сообщение от Vitamin
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-ами)Цитата:
Сообщение от spensor
Как говорится- практика показывает многое. В частности, достаточно точная эмуляция работы процессора- достаточная для работы программ. Исследование различных "сферических коней в вакууме" имеет смысл только для выявления эмулятора. Но это ненадежно, поскольку даже у реальных кристаллов результаты работы разнятся (см. топик в этой ветке)Цитата:
Сообщение от spensor
Гляжу туда же и не нахожу ни одной такой команды- все 32 разные команды этой группы работают с IX/IY, но помимо своей основной операции (сдвиг/работа с битами) модифицируют один из 8 внутренних регистров. Итого 32*8=256 командЦитата:
Сообщение от spensor