Созрел для тактовой эмуляции 6502, буду тут складировать свои раскопки Источник всех картинок Visual 6502 : Но так как их визуальный симулятор не позволяет сделать вменяемую логическую схему (нет ни виасов, ни обозначения транзисторов), я решил разбирать 6502 по кусочкам самостоятельно.Дополнительные источники :Схема 6502 от Дональда Хенсона : Реверсинг 6502 от Берегнея Балазса (кажется так) : -- 19 июн 2012, 14:52 --API эмулятораУправление виртуальным процессором осуществляется путем изменения сигнальных переменных контекста.Сигнальные переменные соответствуют реальным выводам микросхемы оригинального процессора.Контекст процессора 6502 :Код:typedef struct context_6502{ // Внутреннее состояние // ...... // Входные сигналы int RDY, IRQ, NMI, RES, SO; // Выходные сигналы int SYNC, RW; // Шины unsigned short ADDR; unsigned char DATA;} context_6502;Управление выполнением процессораКод:void step_6502_phi1 ( context_6502 * cpu ); // assume PHI1 highvoid step_6502_phi2 ( context_6502 * cpu ); // assume PHI2 highЗачем сделано два вызова ? Внутренняя архитектура 6502 разделяет входной такт на два "подтакта" - PHI1 и PHI2, сдвинутые немного по фазе, относительно входного сигнала PHIПри этом эти тактовые импульсы выдаются наружу управляющему устройству. Логика следующая :Высокий уровень PHI1 : адресная шина и шина данных доступна для чтения внешними устройствамиВысокий уровень PHI2 : внешним устройствам разрешено писать в шину данныхТаким образом задается синхронизация чтения-записи между внешней шиной и внутренними шинами процессораПоэтому фактически работа с 6502 происходит полутактами.Графически это можно представить так :Код: ____ PHI0 |____| |____ ____ ___ PHI1 _| |____| _ ____ PHI2 |____| |__Как исполнять виртуальный процессор ?Костяк эмулятора выглядит следующим образом : 1. Установить входные сигналы перед фазой PHI1, считать значения шины адреса и данных 2. Выполнить step_6502_phi1 3. Установить входные сигналы перед фазой PHI2, установить значение шины данных 4. Выполнить step_6502_phi2 5. Синхронизировать время исполнения с реальным временем 6. Выполнить сервисные функции эмулятора (отобразить видео, проиграть аудио, отладка и пр.)
Зарегистрирован: 24 июл 2007, 09:41Сообщения: 218
Очень низкоуровневый эмулятор 6502 / NES
[ Сообщений: 169 ]
Страница 1 из 9
Часовой пояс: UTC + 3 часа
Текущее время: 05 фев 2013, 02:37
British English Русский
Форум Эму-Россия - Просмотр темы - Очень низкоуровневый эмулятор 6502 / NES
Комментариев нет:
Отправить комментарий