Несколько слов о программе
Как нетрудно догадаться из названия, этот продукт представляет собой
программный эмулятор БК, который я обещал написать в течение года :) Если
Вы никогда (или практически никогда) не сталкивались с БК - для начала
ознакомьтесь с FAQ.
Программа написана на 100% ассемблере, критичные по времени участки
оптимизированы под 68020+ с учётом наличия fast-памяти. Для желающих
создать свои эмуляторы других основанных на PDP-11 машин, а также
портировать эмулятор на другие 680х0 платформы (например, Macintosh) и под
другие операционные системы в комплекте прилагается исходный текст
программы.
Настоящая версия обеспечивает полноценную эмуляцию:
- Процессора 1801ВМ1 с возможностью замедления эмуляции и
высвобождения неиспользуемого процессорного времени для «слишком быстрых»
машин;
- Цветного и чёрно-белого экрана, включая
скроллинг и РП-режим;
- Обращений к файлам путём переадресации их
на диск;
- Джойстика (распайка по игре КЛАД)
- Клавиатуры (пока без обработки
одновременно нажатых клавиш)
Принцип работы эмулятора следующий: очередная 16-битная инструкция
процессора выбирается из памяти, затем из 256-килобайтной таблицы
переходов берётся адрес обработчика. Простейшие инструкции обрабатываются
сразу, в более сложных затем идёт разбор методов адресации и вызов
процедур обработки адресаций (на каждую комбинацию регистра и метода
заведен свой обработчик). Регистры PDP-11 хранятся в регистрах 68k -
регистрам R0-R7 соответствуют A0-A3 и D0-D3. Слово состояния лежит в D5,
A4 указывает на область памяти эмулятора. Для доступа к этой памяти
применяется косвенная адресация с индексированием d(A4,Rn.w), при
обращении к словам в памяти производится «обмен местами» байт (у PDP-11 и
у 68k порядок байт в слове при обращении к памяти разный). Некоторые
наиболее часто применяемые инструкции - пересылки из регистра и в регистр,
а также сдвиги обрабатываются без анализа кода операции, то есть на все
варианты операций заведены собственные подпрограммы - это позволило
несколько поднять быстродействие.
Все предложения - как комментарии и идеи по оптимизации кода, так и
комментарии по поводу этого документа (впрочем, как и всё остальное) -
направляйте мне.
Перейти к [ Содержанию ]
[ FAQ ]