В ожидании "железа" рассматриваю систему команд. Далее не совсем упорядоченные мысли.
Явно просматривается основной набор команд и то, что выполняется через префиксы. Префиксы (CB, ED, DD/FD) выполняются как обычные команды за 4 такта, устанавливая соответствующие триггеры, поэтому следующая команда выполнится особым образом.
Триггер префикса DD/FD:
- Заменяет обращения к HL на обращения к IX/IY.
- Если в команде используется косвенная адресация, то в самом начале выполняется цикл чтения байта смещения (3 такта) и вычисление адреса (5 тактов), исключением является только одна команда "ld [IX+offset],data", у которой чтение байта данных происходит одновременно с вычислением адреса, поэтому она на 3 такта короче, чем должна быть. Это же 5-тактовое вычисление адреса используется для относительных переходов.
- Сбрасывается до окончания выполнения команды. (это надо проверить на недокументированных командах)
Триггер префикса CB использует тот же блок, что и основные команды сдвига/вращения. То есть не так: основные команды сдвига/вращения частично используют возможности этого блока.
Префикс ED вообще прилеплен сбоку в последнюю очередь и, кажется, имеет отдельный декодер, при этом основной должен блокироваться.
Эти дополнительные блоки (блок сдвига и блок выполнения ED) подключены через основное АЛУ, у которого выбирается функция Y=B, поэтому эти команды так активно меняют флаги.
Основной блок команд:
- Команды 8-битных пересылок.
- Команды 8-битного АЛУ, изменяющие флаги. Исключение inc и dec, они не изменяют флаг переноса.
- Команды 16-битных пересылок (эта же часть FSM может использоваться для чтения адреса в командах вида "ld [адрес],A").
- Команды перехода, работы со стеком (группы пересекаются из-за команд call, ret, rst, которая тот же call).
- Прочие команды (префиксы, scf, ccf...).
16-битные регистры: BC, DE, HL, AF (всех по два), IX, IY, SP, PC (12 штук, видны на фото кристалла), и временный для хранения адреса (а может даже два, на фото они отдельно). Причём у основных 16-битные только выходы, входов по-моему нет, запись в основные регистры только 8-битная. Но что делать с PC, который всегда инкрементируется?
Многое непонятно, но гадать не хочу, буду ждать платы и микросхемы, может в Квартусе что-то попробую. Пока хорошо понял то, что:
- эмулятор, близкий к структуре процессора
- быстрый эмулятор
- "железо" на логических элементах
- "железо" на транзисторах
это как в анекдоте: "не муж и жена, а четыре разных человека"
