Вчерашняя тема получила великолепное продолжение. Александр зарелизил новую версию своего эмулятора "Радио-86РК". Особенно следует отметить такой момент:
Quote:
Я попробовал править существующую реализацию, но в процессе переписал код эмулятора 8080 практически заново, благо голова была свежа после работы над i8080-core. За пару дней я реализовал все команды и прикрутил тесты. По ним я выловил все глюки, и теперь i8080-js проходит все тесты, включая 8080-8085 CPU Exerciser, тем самым являясь реально точной репликой КР580ВМ80А.
Источник: "
Снова эмулятор Радио-86РК на JavaScript"
Quote:
Ядро i8080-js теперь проходит все те же тесты, что и i8080-core. Тестирование можно делать либо прямо в браузере, либо в командной строке, если есть под рукой интерпретаторы JavaScript'а V8 или SpiderMonkey. Эмулятор Intel 8080 сделан независимым от конкретной аппаратуры и может быть легко использован для эмуляции других машин, основанных на Intel 8080 (или КР580ВМ80А).
Источник: "
Эмулятор Радио-86РК на JavaScript / Перезагрузка"
Напоследок дам ссылку непосредственно на репозитарий -
Intel 8080 (KR580VM80A) microprocessor in JavaScript.
UPD.
Фрагмент прекрасного из "
Снова эмулятор Радио-86РК на JavaScript".
Quote:
Например, есть основные логические операции: OR, AND, XOR. Так как это неарифметические операции, то флаг половинчатого переноса AC (из младшей тетрады в старшую) просто обнуляется. Так написано в документации. Но в реальности команда AND особенная. В ней флаг AC устанавливается (внимание!) равным третьему биту операции OR между аргументами команды, а не просто в ноль. Данное поведение, все таки было задокументировано, но в более поздней документации по 8085.
Или, например, в командах инкремента и сложения, тот же флаг AC вычисляется как положено по документации. Но в командах декремента и вычитания этот флаг имеет инвертированное значение!