Э М У Л Я Т О Р
ПЭВМ
'АГАТ'


        Итак, эта страница посвящена основной идее, ради которой был создан сайт - созданию эмулятора "Агата".

        Здесь приведены мои соображения по поводу создания эмулятора, а также выставлены некоторые предлагаемые форматы и прочая документация, касающаяся эмулятора. Документация, относящаяся к самой ПЭВМ "Агат" (аппаратная и программная), помещена на странице "Техническая документация".


1. Общие замечания.

        Что такое "Агат"? Это компьютер на базе процессора с системой команд MCS6502. В моем техническом описании сказано, что на "Агате" применялся процессор болгарского производства СМ630Р. Аналогом "Агата" является широко распространенный в свое время на Западе компьютер "Apple ][". Компьютер марки "АГАТ-9" может даже эмулировать "Apple", обеспечивая полную программную и аппаратную совместимость (по крайней мере, так было задекларировано).

        Все, кто программировал на "Агате" на ассемблере (а я думаю, эти строки будет читать немало таких людей), должен помнить, какой там доступ к аппаратным ресурсам. В основном из-за не очень развитого программного обеспечения (по сравнению с MS-DOS) приходится постоянно обращаться к аппаратуре. Чтобы вывести на экран символ, большинство программ просто пишет в экранное ОЗУ. Чтобы установить видеорежим, надо просто обратиться к адресу памяти! На IBM для таких целей вызывают прерывания (хотя в экранное ОЗУ тоже можно обратиться напрямую).

        И на эмулятор, соответственно, это накладывает определенные ограничения. Если для такого компьютера, как Apple, можно эмулировать аппаратуру двумя способами (полностью имитируя работу с портом и через вызовы стандартных подпрограмм ПЗУ - большинство эмуляторов это делают как раз вторым способом), то на "АГАТ-9", например, почти ни одна игра не вызывает ничего из ПЗУ или еще откуда-нибудь - процессор выполняет только ее команды. Кстати, на "АГАТ-7" софт охотнее вызывает подпрограммы монитора, это объясняется, видимо, тем, что "семерка" существовала приличное время в единственном числе, а "девяточники" сразу должны были учитывать наличие нескольких вариантов ПЗУ.

        Так как первый способ эмуляции (через полное эмулирование всех портов) сложнее, то и наш эмулятор получится, соответственно, сложнее, чем большинство всяких там эппловских.

2. Что уже сделано.

        На данный момент готово ядро эмулятора, которое я писал сам, рассудив, что раз за год я не смог докачать из Интернета свободно распространяемое аналогичное ядро, быстрее будет сделать всю работу самому.

        Ядром я называю ту часть эмулятора, которая реализует собственно исполнение команд. Оно обращается к подпрограммам, например, при чтении байта из адресного пространства может произойти все, что угодно, в зависимости от самого адреса, так как вся аппаратура доступна как раз при обращениях процессора по специфическим адресам. Подпрограмма, которая проверяет, какое устройство сработает при обращении к тому или иному адресу или просто будет запись/чтение в ОЗУ, к ядру уже не относится. Кроме того, ядро не дописано :), но постоянно дописывается. Некоторые команды не реализованы, а что касается команд ADC и SBC, то я пока не знаю способа, как для них правильно реализовать десятичный режим - десятичная коррекция по-разному работает на процессоре 6502 и на IBM, а описание механизма коррекции на 6502 я не достал...

        Пока эмулятор работает только в текстовом режиме, видна только одна экранная страница и нет переключения банков ОЗУ и прерываний (так что теперь он одинаково работает как с программами с "семерки", так и с "девятки"). Звук - F4, УПР-СБР - F5. Можете наслаждаться работой в "Мониторе" и некоторыми текстовыми игрушками.

        Автор отказывается нести всякую ответственность за ущерб, причиненный Вашему оборудованию от запуска эмулятора. Если Вы будете почаще набирать в Мониторе команду C700.C7FF, возможно, монитор у вас сгорит значительно раньше срока (простите за каламбур)...

Имя файла
Размер
Описание
emul.rar Около 40К Исполняемый файл эмулятора и прочие необходимые для запуска файлы. В АРХИВЕ 3 РАБОТОСПОСОБНЫЕ (...) ИГРЫ.
mars.zip 12К Игра "Марс" в эмуляторе (запускается самостоятельно, в архиве уже есть эмулятор). ПЗУ "Монитора" взломано так, чтобы управление передавалось сразу игре. Некоторые инструкции найдете в архиве.



Возврат на уровень вверх