https://ru.wikipedia.org/wiki/AY-3-8910 ???
Вид для печати
Угу. 8910 я найти не смог, подвернулась 8912, были опасения что кристалл модифицирован, но вроде бы нет, просто ноги "лишние" проволочками не разварены.
Там еще парочка интересных микросхем, и есть желающие их пореверсить, так что - следите за новостями нашей "икспидиции" :)
К тому что там написано "Исходный VHDL-код свободно доступен в сети Интернет" с ходу не нашел. Может здесь какие-то ссылки разместить, для реализации СРР модели, в БКашках (модули расширения) она тоже применялась.
У нас тут целая тема есть. 8910/12 особо реверсить не рвусь, просто сделаю панорамы, пусть полежат. С существующими моделями 8910 вроде не совсем все гладко, как я понимаю. Дойдут руки до прикручивания 8910 к ПЛИС-реплике БК - увидим, есть ли реальные проблемы с ней и надо ли их будет решать раскопкой 8910. Кристалл там маленький, нормы относительно большие, структура простая, поэтому подъемно.
В исходниках Speccy2010 есть реализация YM2149.
В CPP-коде модели обнаружилась ошибка формирования значения reg.plir, что впрочем никак не влияло на работоспособность, наверное потому что, пока не возникало требований немаскируемых прерываний.
Исправленный вариант вот: Вложение 55208
Кроме всего прочего там проведено множество изменений, вроде как считающихся оптимизациями, но изменение метода вычислений wires свело всё на нет. Работать прога стала даже медленней.
А из-за того, что даже в релизном варианте со всеми оптимизациями под x64 частота модели не превышает 320кГц (без распараллеливания и только задействуя одно ядро ЦП 4ГГц, что крайне удивляет). И это при полностью отключенном всём выводе диагностики и на экран, то дальнейшая работа как-то утрачивает смысл. Эмуляция процессора в реальном времени не получается.
plir только на начальный старт влияет, это режим ожидания деактивации nACLO.
Я микрокод потихоньку разбираю, скоро буду документировать. Может быть имеет смысл делать не эмуляцию всех схем как таковых, а именно микромашины? Пример - для АЛУ задана операция сложения, можно не вычитать все разряды поочередно, а просто выполнить сложение и выставить флаги. Аналогично для других операций. Тогда растактовка сохранится с отчностью до такта, возможно будет неточность на уровне полутактов, но сама суть независимо-работающих блоков и их растактовка сохранятся.
Изначально было понятно, что V-модель имеет смысл главным образом как "калибровочная" для настройки потактово идентичной A-модели.
Можно запустить эмулятор ДВК с адаптером МПИ и убедиться, что единственным внешним отличием поведения A-модели от поведения V-модели является в 20 раз более высокая скорость эмуляции.
- - - Добавлено - - -
Научный смысл в этом точно есть - можно будет сравнить быстродействие потактово идентичных V-, M- и A- моделей одного и того же процессора.
- - - Добавлено - - -
В 6-й версии V-модели есть ошибка, приводящая к отставанию на один такт фазы записи в циклах DATIO.
Вместо:
Код:wire.dout_start = wire.dout_req_rc && wire.qbus_flag_rc && !reg.rply_ack[3];
Должно быть:
Код:wire.dout_start = wire.dout_req_rc && wire.qbus_flag_rc && !reg.rply_ack[2];