Proteus увенчалась успехом. Процессор получился где-то на 4+ по пятибалльно системе...

Почему всё же схемотехническая модель, а не DLL-библиотека? Из-за таймингов: я так и
не нашел нигде полную информацию, как 6502 выполняет свои инструкции в привязке к его
хитрозадуманным тактовым импульсам Ф1 и Ф2. А без этой информации написание DLL-ки,
как, впрочем, и разработка схемы 6502 превращается в гадание на кофейной гуще.
Собственно, большинство проектов так и сделаны, насколько я их рассмотрел - создается
свой процесор, как можно более похожий на оригинальный 6502, согласно его распространенным
блок-схемам.
Но иметь модель 6502 в Proteus мне давно хотелось - всё же среда моделирования позволяет
довольно оперативно исследовать различные проекты, поэтому я решил создать модель на
основе какой либо успешной схемы 6502 на основе ТТЛ-логики или микроконтроллера.
Первый вариант я начинал ещё на PIC, но он так и не заработал толком, хотя
у меня уже была успешная попытка разработки процесора на микроконтроллере,
но не пошло.

Вторая попытка была более удачной: проект 6502 на ATMega16 заработал, но использовать
его в качестве Proteus-модели 6502 было бы опрометчиво - он слишком медленный в симуляции,
и автор приделал к 6502 много лишнего, на мой взгляд.
Ну и третья попытка заключалась в том, что я рассмотрел несколько проектов 6502, выполненных
на 74-й логике и выбрал самый простой и шустренький, на мой взгляд. Хотя скажу, что проекты
были похожи друг на друга, как близнецы-братья, так что схемотехнически все решения в них
довольно близки, но проект с АЛУ, выполненном на ПЗУ более компактен еще и по той причине,
что из ПЗУ в нужный момент можно извлечь необходимые данные, которых в стандартом АЛУ типа
74181 попросту нет.

Не зря же мы говорили, что микропроцессор 6502 активно использует путь данных через АЛУ!
И это действительно так.

Что же получилось в итоге? В итоге получилась модель, которая очень близка к 6502 и позволяет
моделировать микропроцессорные системы на его основе, причем, скорость работы очень и очень
хороша! Из негативной стороны: модель, конечно же, полностью не идентична реальному 6502.

И разночтения следующие:
- модель работает медленнее реального 6502 на той же частоте;
- растактовка команд не во всём совпадает, хотя цикл максимально приближен к 6502,
что позволяет использовать совместимые с его шиной БИС, я использовал ACIA 6850.
- Такты Ф1 и Ф2 примерно соответствуют 6502: по фронту Ф1 выставляется адрес, примерно
за 100 nS до спада Ф2 данные установлены, но из-за несовпадения растактовок такты
Ф1 и Ф2 представляют собой непериодическую последовательность.
- Механизм шины, опирающийся на сигналы R/W и Ф2 весьма критичен по времени для микросхем
памяти поэтому я вывел на 2 выхода NC (NC0 и NCI), соответственно, раздельные сигналы
/WRITE (NC0ut) и /READ (NCIn), как в z80 и i8080, они менее критичны по времени, и с ними
проще что-то быстро смоделировать, если не требуется полной идентичности.
На выход NC я вывел сигнал обращения к шинам BUS - он имелся в 6501, но в 6502 его заменил
SYNC. Но для анализа работы шины этот сигнал весьма удобен.
- сигнал SYNC в модели несколько короче чем в оригинале.
- Вход S.O., который практически не используют по нзначению, я использовал для вывода шин из
высокоимпедансного состояния при остановке по сигналу READY. Модель работает как 65C02,
и в этом режиме переводит шины в высокоимпедансное состояние, для работы ПДП, если он
используется, но для пошаговой отладки это неудобно. Поэтому в состоянии НЕготовности
логический 0 на S0 "открывает" шины.
- IRQ и NMI срабатывают на один и тот же адрес (адрес IRQ).
Вот, пожалуй, и все недочеты...
О достоинствах: всяк, кто что-либо соображает в схемотехнике, сможет в любой момент залезть
микропроцессору "под капот", посмотреть, что там и как и при необходимости допилить то, что
нужно по-своему.
И второе - модель весьма быстрая, сравнивать с DLL-моделями z80 и i8080 некорректно, так как
сами микропроцессоры сложнее, но в программах ассемблера скорость примерно близка.
Архив с проектами 6502: В архиве два проекта, первый - тот, что на картинке выше: 6502_0.DSN - ЦПУ выполняет NOP по
шине данных, перебирая адреса на ША. Этот проект можно считать базовым и при желании к нему
можно присоединять то, что нужно - я специально выбрал большой лист.
У модели нет никаких библиотек и никаких лишних файлов, она никуда не прописывается, что
тоже в некотором роде плюс!

Второй проект - 6502_5.DSN практически копия схемы Grant Searle, но я изменил дешифрацию,
чтобы добавить тестовый порт вывода, в него ($BF00) забрасывается статус ACIA 6850, и если
он показывает 02 - то всё верно! В этом же проекте можно проверить всю функциональность: NMI - работает всегда, IRQ - только
после ответа "С" на первый запрос о "холодном/тёплом" старте. Я там вставил CLI в код.
И здесь же прицеплен логический анализатор - можно посмотреть все сигналы на шинах.
И, кстати, программировать на 6502 - легко!

вспомнил всё заново... Желаю удачи в освоении легендарного 6502!

P.S. Баги, наверное, есть...

и я забыл, должен он работать в ОЗУ или в ПЗУ. Но - разберусь позже.