Перейти к содержанию
    

Счётчик регенерации в Z80 7 или 8 битный?

Читаю описание, вроде как 7 битный счётчик, хотя регистр 8 битный. Есть вопросы.

 

1. Может в каких-то версиях Z80 этот cчётчик 8 битный? (Z80A, Z80B, ...)

2. Можно ли в регистр R прописывать значения >= 128 ?

3. Какой смысл анализировать старший бит этого регистра, если он не меняется (или нулевой) ? Я это вижу в проге.

 

Для стандартного Z80 есть такое описание.

The refresh register, R, increments each time the CPU fetches an opcode (or opcode prefix) and has therefore no simple relationship with program execution.

 

["While R is an 8 bit register, it wraps around at 128 instead of 256. If the programmer stores a value in the register, its high bit will be preserved regardless of what the CPU does to the remaining 7 bits. Incorrect implementation of this behaviour is a common source of problems when running games on emulated Z80-machines"]

На 2-ой вопрос ответ ясен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читаю описание, вроде как 7 битный счётчик, хотя регистр 8 битный. Есть вопросы.

 

1. Может в каких-то версиях Z80 этот cчётчик 8 битный? (Z80A, Z80B, ...)

2. Можно ли в регистр R прописывать значения >= 128 ?

3. Какой смысл анализировать старший бит этого регистра, если он не меняется (или нулевой) ? Я это вижу в проге.

 

Для стандартного Z80 есть такое описание.

 

На 2-ой вопрос ответ ясен.

 

У Вас не Rabbit? Если да - там регистр R другую функцию выполняет.

На Hitachi HD64180 документ не нашёл... Или у Вас точно от Zilog кристалл?

 

Для zilog:

 

Возможно, используют как ещё один флаг. Смотреть там, где записали. Правильно замечено, что проверка на работу под эмуляторами (или трассировщиками).

Да, вы в курсе про копирование флага iff2 в parity при выполнении этой команды??

 

ps: С удивлянием для себя обнаружил, что команда ld a,r устанавливает флаги sign и zero по содержимому регистра r.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ps: С удивлянием для себя обнаружил, что команда ld a,r устанавливает флаги sign и zero по содержимому регистра r.

Вы в железе проверили? Жаль у меня железа нет.

 

Да, вы в курсе про копирование флага iff2 в parity при выполнении этой команды??

Нет, конечно я не в курсе. Я с Z80 не очень знаком. Только с 8080. Хотя расширение команд это мелкое отличие, но дьявол кроется в деталях.

 

Спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы в железе проверили? Жаль у меня железа нет.

По это явно в Zilog-овском документе с их сайта говорится. Если надо - можно будет проверить (но только на Z180).

А что, не известно точно, что за железо у Вас?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что, не известно точно, что за железо у Вас?

Не. Точно даже проц не знаю. Z80 совместимый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В даташите на Hitachi HD64180 тоже написано про 7 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Семь бит там инкрементируется. Старший бит можно использовать как флаг. Состояние разрешение/запрещение прерываний копируется в паритет как при чтении R, так и при чтении I.

 

Конечно, это все для оригинального Z80.

 

А еще там есть куча недокументированных команд. Очень полезных :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, конечно я не в курсе. Я с Z80 не очень знаком. Только с 8080. Хотя расширение команд это мелкое отличие, но дьявол кроется в деталях.

Э нет, 8080 даже рядом не валялся.

Особенно мне нравился альтернативный набор регистров, переключаемый одной простой командой. Можно сделать РТОС практически без издержек на переключение контекста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже нарвался на недокументированные команды. IDA 5.2 даже в шоке.

 

Команда CB,35 им была переведена как "SRR L". В инете нашёл другое название - "SLI L". Кто-нить знает, чего она делает? Предположительно какой-то сдвиг.

Вероятно это лог. сдвиг влево с уст. мл. бита в 1. У этой команды куча имён. Ещё SL1, SLL -> найдено в http://www.emuverse.ru/wiki/Zilog_Z80/%D0%...%B0%D0%BD%D0%B4

 

И ещё. IDA 5.2 вообще не понял команды DD/FD,CB,xx,yy. Тоже забавные команды. По крайней мере символьное обозначение команды. Значение берут из памяти, а результат суют в регистр. Или в память, если yy & 07 == 6.

 

IDA вроде предыдущего года выпуска, а такое не знает. Позор.

 

Состояние разрешение/запрещение прерываний копируется в паритет как при чтении R, так и при чтении I.

По этому поводу случайно прочитал это

http://ivr.webzone.ru/articles/ldar_new/index.htm

Копируется, да не всегда оно вернО.

Походу недокументированные не только команды, но и особенности.

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DD/FD, насколько помню, префиксы для работы с индексными регистрами IX и IY соответственно. И здесь один из недокументированных приколов, который не положено знать дизассемблерам - можно работать с их половинками (аналогично H и L).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DD/FD, насколько помню, префиксы для работы с индексными регистрами IX и IY соответственно. И здесь один из недокументированных приколов, который не положено знать дизассемблерам - можно работать с их половинками (аналогично H и L).

Как раз это они знают. IDA 5.2 по крайней мере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DD/FD, насколько помню, префиксы для работы с индексными регистрами IX и IY соответственно. И здесь один из недокументированных приколов, который не положено знать дизассемблерам - можно работать с их половинками (аналогично H и L).

Насколько я понял, сейчас эти все команды задокументированы. Просто нужно последние версии руководства почитать. Или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно потревожить RST7 в личку.

Он в далеком 1992м году турбоассемблер на ZX-Spectrum написал и работал с Z80 минимум на ямахе MSX и спектруме.

Или пошерстить zx.pk.ru , ибо нюансы зетников от оригиналов, до русских Т34 давно разобраны по молекулам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно потревожить RST7 в личку.

Он в далеком 1992м году турбоассемблер на ZX-Spectrum написал и работал с Z80 минимум на ямахе MSX и спектруме.

Или пошерстить zx.pk.ru , ибо нюансы зетников от оригиналов, до русских Т34 давно разобраны по молекулам.

 

Ох, спасибо за ссылку... вспомнил прошлое (и не очень) - дизассемблирование ПЗУ от Ямахи - MSX-DOS потом использовал в своих домашних компютерах, написание компилятора С для 8080 и Z80 (MicroGenSf, если кто встречал).

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно потревожить RST7 в личку.

Я уже разобрался вроде как. Удивило что IDA 5.2 такого не знал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...