Просмотр полной версии : Описание команд Z80: Установка флагов
Где то есть подробное описание алгоритма установки флагов той или иной инструкцией Z80 ?
Может где то есть какой нить онлайн демонстратор или еще какой нить ресурс где можно проверить правильность реализации ?
p.s. пишу эмулятор, очень нуждаюсь в быстрых алгоритмах проверки флагов...
Например, вижу такое описание:
S (F7) Sign - Флаг знака
Этот Флаг предназначен для обработки чисел со знаком. Флаг устанавливается,
когда результат операции отрицателен. Т.к. бит 7 является знаковым (любое отрицательное
число содержит единицу в 7 бите), то этот флаг копирует состояние 7 бита аккумулятора.
При программировании состояние этого флага условно кодируется как P (Plus, знак
плюс, S=0) и M (Minus, знак минус, S=1).
Речь идет про "аккумулятор"..
а у меня например команда INC r - инкремент регистра...
Логика та же ? 7 бит регистра копирую в S ?
Нужно смотреть справочник команд Z80. И да, онлайн эмулятор Z80 есть, адрес не помню
выше как раз цитата справочника.. посмотрели :-)
Еще одна формулировка
H (F4) Halfoarry - Флаг полупереноса
Команды сложения, вычитания, инкремента, декремента и сравнения 8-битных
операндов устанавливают флаг H когда был перенос из третьего бита результата в
четвертый, или был заём от четвёртого бита к третьему. Этим он указывает команде DAA
требует ли результат десятичной коррекции
до операции 0b0000 1111
после операции 0b0001 0000
флаг устанавливаем,
до операции 0b 0001 1111
после операции 0b 0010 0000
Флаг устанавливаем (?)
То есть если у результата и исходного значения 4ый бит (считаю биты от 0) отличается то устанавливаем флаг H ?
shurik-ua
27.11.2018, 08:51
http://emuverse.ru/wiki/Категория:Zilog_Z80
Есть хорошее описание z80 (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwiUoOL77fPeAhVG_SoKHevkCHsQFjAAegQIABAC&url=http%3A%2F%2Fwww.igorkov.org%2Fpdf%2FZ80-Central-Processor-Unit.pdf&usg=AOvVaw3vWRwjSIXR5JOkDwidZsvs), там есть таблица опкодов, тактов и флагов. У z80 есть еще и не документированное поведение (http://www.emuverse.ru/wiki/Z80/%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D 0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0% BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B 4%D1%8B), но это следующим шагом можно делать, когда все документированное будет реализовано :).
кстати да.
SEED: DB "Jon!"
RANDOM: LD HL,(SEED+2)
LD D,L
ADD HL,HL
ADD HL,HL
LD C,H
LD HL,(SEED)
LD B,H
RL B
LD E,H
RL E
RL D
ADD HL,BC
LD (SEED),HL
LD HL,(SEED+2)
ADC HL,DE
RES 7,H
LD (SEED+2),HL
JP M,RANDOM3
LD HL,SEED
RANDOM2: INC (HL)
INC HL
JR Z,RANDOM2
RANDOM3: LD HL,(SEED)
RET
Неясно, как сработает переход M?
- - - Добавлено - - -
Насчет симуляторов : мне понравилась такая приколюха.
Спасибо !
Как удалить сообщение то ?!
Спасибо не булькает. Удалять не нужно
CodeMaster
27.11.2018, 13:16
Как удалить сообщение то ?!
Редактировать -> [x] Удалить сообщение -> [Удалить сообщение]
Нет у меня такой кнопки.. не в сокращенном редактировании, ни в полном..
мои права такие:
"Вы можете создавать новые темы
Вы можете отвечать в темах
Вы можете прикреплять вложения
Вы можете редактировать свои сообщения"
ram_scan
29.11.2018, 16:37
Нет у меня такой кнопки.. не в сокращенном редактировании, ни в полном..
Видать экспы на форуме маловато, карма маленькая.
Что касается флагов то документированные инструкции и флаги все расписаны в документации правильно и подробно. Недокументированные инструкции если я верно помню расписаны в документации на Z180 где большинство их задокументировали. Работа недокументированных флагов подробно расписана в исследовании регистра memptr. Мануал по z80 undocumented тоже доступен и тут на форуме и в сети. Все есть в официальных справочниках или тут на форуме.
до операции 0b 0001 1111
после операции 0b 0010 0000
Флаг устанавливаем (?)
устанавливаем
То есть если у результата и исходного значения 4ый бит (считаю биты от 0) отличается то устанавливаем флаг H ?
Устанавливается только если было переполнение младшей тетрады.
Поделюсь что ли кодом шикарного эмулятора Z80 на C#, делал для проигрывателя AY файлов, эмулятор ZX делать не планирую, поэтому можете использовать как хотите.
Здесь сделаны все команды Z80 в том числе недокументированные и недокументированные флаги, обрабатывается регистр R и т.д., все циклы правильно считаются.
PS: обработка регистра R в коде закоментирована, если нужно раскоментируйте, некоторые программы его используют
Для эмуляции достаточно raze.dll, где-то мелькал пример эмуляции Galaksija
А существуют ли какие-нибудь тесты эмуляторов типа Exerciser, но в виде автономного ROM?
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot