ZX-Ревю 1995 №4 1995 г.

Новые программы - эмулятор Spectrum-128.


Наконец-то синклеристы, имеющие доступ к IBM-совместимой технике, могут получить в свое распоряжение новый пакет программ, представляющий собой эмулятор ZX-Spectrum. Чем он отличается от аналогичных уже существующих программ?

Во-первых, это поддержка операционной системы TR-DOS, но главная особенность, которую по достоинству оценят программисты и хаккеры, заключается в наличии встроенного отладчика выполняемой программы. Это позволит им воспользоваться услугами мощной IBM-техники при разработке и отладке собственных программ и анализа работы фирменного программного обеспечения ZX-Spectrum.

Эмулятор Spectrum-128 © Константин Углеков, г. Москва, 1995.

Вашему вниманию предлагается новый эмулятор компьютера Spectrum, предназначенный для использования на IBM PC- AT-совместимых компьютерах. Эмулятор реализует Spectrum-128 с контроллером дисков и операционной системой типа TR-DOS. От других известных мне эмуляторов эта разработка отличается:

■S высокой точностью эмуляции;

S удовлетворительной скоростью эмуляции;

S поддержкой TR-DOS (нет аналогов);

■S наличием встроенного отладчика выполняемой программы (нет аналогов);

При этом минимальные требования к аппаратуре:

S процессор 80286 и выше;

^ 440 Кбайт ОЗУ;

■S монитор EGA и выше;

■S хотя бы один дисковод 1.2M;

Если есть дополнительная память (EMS), она будет использоваться. Если имеется Adlib-совместимая звуковая карта, она может использоваться для эмуляции музыкального сопроцессора. При эмуляции джойстика может использоваться как реальный джойстик, как и клавиатура (стрелки на цифровой клавиатуре). Эмулятор использует совместимые с другими эмуляторами форматы snapshot-файлов и файлов образа магнитофонной ленты (работа с реальным магнитофоном не поддерживается).

Точность эмуляции.

С точки зрения эмуляции команд процессора Z80, небольшие расхождения могут быть только при установке битов 1,3,4,5 в регистре флагов, которые почти никогда не используются (во всяком случае, мне такие программы не встречались). Поддерживаются все недокументированные команды, включая самые экзотические (типа DD CB 00 00 и ED 7C ). Регистр R правильно эмулируется на всех командах, включая блоковые команды и недопустимые комбинации префиксов. При этом точная эмуляция регистра R может включаться автоматически (при выполнении команды LD R,A), и автоматически выключаться при выполнении первого же маскируемого прерывания. При выполнении команд IN A,(...) или IN reg,(C) незначащие биты портов 1F,FE могут быть установлены в любое состояние; это же относится к неподдерживаемым портам. Эмулятор не поддерживает работу с магнитофоном через порт FE, однако есть возможность работать с виртуальной лентой (.TAP-файл на MS-DOS диске) через обращения к стандартным процедурам ввода/вывода (4С2 и 556). Наконец, в отличие от всех других эмуляторов моя программа всегда выполняет правильно инструкции типа LD HL,(FFFF), POP HL при SP=FFFF и т.п.

Режим Spectrum-128 работает одинаково точно независимо от того, используется ли Expanded Memory или нет. Однако переключение страниц без использования EMM занимает намного больше времени, и некоторые программы временами буквально виснут (если установлен драйвер EMM, то быстрее происходит переключение и на режим TR-DOS). Некоторые программы очень часто переключают на короткое время страницы экрана, что может привести к еще большему замедлению работы из-за постоянных перерисовок. На этот случай в эмулятоpе пpедусмотpена возможность в любой момент зафиксировать положение экрана на определенной странице RAM.

Эмуляция контроллера дисководов и операционной системы типа TR-DOS осуществляется на двух уровнях. На нижнем уровне сделана эмуляция всех регистров контроллера (порты 1F,3F,5F,7F,FF). При этом не поддерживается только команда записи целого трека (этого не позволяет делать контроллер в PC), и чтения целого трека (команда выполняется, но её результат не совсем точен). Все остальные команды (поиск нулевой дорожки, позиционирование, чтение и запись секторов, чтение адресного маркера) выполняются точно. Чтение и запись секторов на нижнем уровне происходит достаточно медленно. Верхний уровень эмуляции включает перехват нескольких процедур внутри TR-DOS. На точность эмуляции это практически не влияет, но позволяет программам, использующих TR-DOS только стандартным образом (через BASIC или документированные функции TR-DOS, даже если требуется считать или записать сектор нестандартной длины) работать намного быстрее. Заметим, что к эмулятору можно подключать различные версии TR-DOS.

С сожалением приходится отметить, что не всякий TR-DOS'овский диск можно прочитать под эмулятором, даже если на нем нет защищенных программ. По всей видимости, дело в том, в начале каждого трека на дискетах MS-DOS находится маркер дорожки, и начало первого сектора находится от индексного отверстия на большом расстоянии, а утилиты форматирования под TR-DOS помещают начало первого сектора сразу после индексного отверстия. В этом случае многое зависит от используемого контроллера. Если же диск отформатирован на PC (с помощью FDA,Teledisk или же в самом эмуляторе), то подобные проблемы не возникают.

Какие же программы не могут работать под этим эмулятором ? Надеюсь, что таких будет очень немного.

Единственные исключения, о которых мне сейчас известно программы, использующие команды чтения/записи дорожек. А среди тех программ, которые работают под эмулятором, хочется отметить операционную систему iS-DOS, сложные демонстрационные программы (Satisfaction Megademo и пр.), Disk Control Utility (в той части, где не требуется форматирование дорожек), Sound Tracker, ASC Sound Master, TASM , ARTSTUDIO 128 (список может содержать еще очень много наименований, даже если включить в него только системные программы).

Скорость эмуляции.

Девизом предлагаемого эмулятора является "точность - превыше скорости", поэтому в отношении скорости он уступает другим эмуляторам. Для оценки скорости прилагается тест скорости выполнения отдельных инструкций процессора Z80 (тест применим на любом эмуляторе и реальном Spectrum^). На 386DX40 (benchmark=43) тест показывает тактовую частоту виртуального Z80 на большинстве команд около 5-10 MHz, на команде записи в экран -около 1 MHz; команды ввода/вывода могут выполняться еще медленнее. В целом разница в скорости от реального Spectrum^ на большинстве программ не ощущается. При использовании более быстрых машин с процессором 486 и выше многие игрушки будут работать слишком быстро, поэтому в эмуляторе предусмотрена возможность замедлять выполнение программы.

Отладчик.

Самое существенное отличие предлагаемой программы от других известных мне эмуляторов - наличие в нем встроенного полноэкранного отладчика типа Turbo Debugger. Возможности этого отладчика намного превосходят возможности существующих отладчиков на компьютерах типа Spectrum, а удобный интерфейс позволяет легко освоить работу с отладчиком неподготовленному пользователю.

Конечно, отладчик не является точной копией Turbo Debugger. При его написании не использовалось Turbo Vision, поэтому при управлении окнами, выборе имен файлов, вводе числовых и символьных выражений есть некоторые отличия от стандарта Turbo Vision. Но все основные черты Turbo Debugger в предлагаемой программе реализованы. Пользователь может открывать окна четырех типов: окна дизассемблера, памяти, регистров и флагов. Одновременно можно иметь до 16 открытых окон (заметим, что в Turbo Debugger нельзя открыть больше одного окна дизассемблера). Далее коротко обозначены некоторые возможности и особенности встроенного отладчика:

■S можно менять размер окон и их положение на экране;

■S можно записывать и восстанавливать текущую конфигурацию окон;

S назначение большинства "горячих клавиш" в отладчике совпадает с их назначением в в Turbo Debugger;

S при отладке можно смотреть экран Spectrum^ (как текущий экран, так и содержание любой страницы RAM в виде экрана);

S встроенный в отладчик дизассемблер обрабатывает любые инструкции - документированные, недокументированные (типа DD 46 LD B,XH), совсем недокументированные (типа DD CB 80 00 -используется мнемоника RES 0,(IX+0),B), недокументированные инструкции-синонимы (типа ED 5C - NEG). Все прочие инструкции, на которые процессор никак не реагирует, помечаются как *NOP* (типа ED 80, а также бессмысленные префиксы DD/FD);

S окна дизассемблера и памяти можно установить на любой адрес в любой странице RAM и ROM;

■S можно устанавливать до 64 точек останова в любых адресах (в том числе и в любой странице ROM);

■S можно сохранять и восстанавливать положение всех точек останова;

■S можно модифицировать содержимое всех регистров, флаг разрешения прерываний, режим маскированных прерываний, содержимое порта 7FFD и триггера активности TR-DOS;

S в отладчике можно модифицировать содержимое как RAM, так и ROM (однако выполняемая программа не может ничего записывать в ROM). Изменения в ROM не сохраняются при записи snapshot-файлов, но могут быть сохранены и восстановлены командами чтения и записи блока памяти. Из окна памяти модификация производится вводом шестнадцатеричных констант и символьных строк, из окна дизассемблера - мнемониками команд;

■S есть команда поиска данных;

■S четыре разных команды запуска эмулятора (одиночный шаг, шаг без захода в подпрограммы, запуск с остановом при достижении инструкции, на которой установлен курсор и просто запуск);

■S есть возможность записать в файл MS-DOS и считать из файла блок данных. Блок может начинаться с любого адреса на любой странице RAM или ROM и иметь длину до 64К включительно;

■S есть возможность записать в файл MS-DOS дизассемблированные инструкции (в том виде, в котором они представлены в окне дизассемблера - без какой-либо дополнительной обработки).

Большинство прочих возможностей отладчика относится к чтению и записи snapshot-файлов и управлению

режимами эмуляции (их действие было описано при рассмотрении точности эмуляции).

•к к к




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Мнение - письмо к Nemo.
Swapping - От письма до бандероли или как стать настоящим swaper'ом.
От авторов - пара слов от авторов.
Интервью - уфимским кодером с Vasil из группы ChemneSoft.
Инструментарий - редактор уровней к игре Last Battle.

В этот день...   24 апреля