Просто наберите 'PK86EMUL' (или 'PK86DBG'), сделав каталог с эмулятором ТЕКУЩИМ или введите полный путь в исполняемому файлу эмулятора. В последнем случае текущий каталог не обязательно должен быть рабочим каталогом эмулятора.
Если Вы работаете в Win9x/NT, то запускать эмулятор надо в ПОЛНОЭКРАННОМ режиме. Для этого удобно сделать pif-файл (например, pk86emul.pif и pk86dbg.pif).
Вы можете в командной строке после имени файла эмулятора указать имя файла snapshot'а, который будет загружен сразу после инициализации эмулятора.
Если Вы ассоциируете эмулятор с файлами snapshot'ов (например, по расширению .RSS), то Вы сможете просто запускать snapshot'ы, и при этом эмулятор будет вызываться автоматически. Если Вы используете Win9x/NT, то ассоциировать расширение .RSS можно через 'explorer/проводник->open with/открыть с помощью', указав путь в исполняемому файлу эмулятора. Те pif-файлы (pk86emul.pif и pk86dbg. pif), которые Вы сделали раньше и которые находится в рабочем каталоге эмулятора, запустят эмулятор в полноэкранном режиме.
В nc/vc/dn ассоциации можно задавать через файл конфигурации с расширением .EXT на маску *.RSS.
ESCAPE
------
Вызов меню настроек эмулятора (глава "Меню настроек эмулятора").
F5
--
Включить/выключить звук.
F6
--
Включить/выключить отображение курсора (это иногда полезно в некоторых
играх, например, в "Спасателе").
F7
--
Перезапуск эмулятора в режиме 16 кб с очисткой памяти.
F8
--
Перезапуск эмулятора в режиме 32 кб с очисткой памяти.
F9
--
Включить/выключить бордюр, показывающий границу "официальной" (используемой
"Монитором" для вывода) части экранной области. Это иногда тоже полезно,
например, в том же "Спасателе", чтобы понять
почему же он не летит ЕЩЕ вверх ?!
Данный бордюр ВСЕГДА имеет размер 64x25 и имеет смысл ТОЛЬКО в стандартном режиме
экрана 64x25 (глава "Режимы Экрана").
F11
---
Аналог кнопки RESET на РК, то есть рестарт эмулятора в текущем режиме БЕЗ очистки
памяти.
F12
---
Вызов встроенного отладчика.
NumLock
-------
Помощь по раскладке клавиатуры в режиме 'РК'.
Grey '+'
--------
Вывод таблицы символов РК.
Начиная с версии эмулятора 0.2, клавиатура РК может эмулироваться в двух режимах
'РК' и 'QWERTY'. Переключение между режимами происходит нажатием клавиши
ScrollLock. Индикатор ScrollLock на клавиатуре показывает режим текущий режим
клавиатуры НЕ горит в режиме 'QWERTY', а зажигается
в режиме 'РК'. Режим клавиатуры 'QWERTY' является режимом по умолчанию.
Эмулятор не требует наличия загруженного до него какого-либо резидентного русификатора или драйвера русских шрифтов, так как эмулятор сам устанавливает нужные ему шрифты, а переключение между алфавитами происходит клавишей L/CTRL.
Индикатор CapsLock на клавиатуре в обоих режимах работы клавиатуры индицирует текущую раскладку РУС или ЛАТ.
В режиме 'РК' устанавливается прямое соответствие клавиш на клавиатуре QWERTY клавишам РК без всякой перекодировки. В этом режиме клавиши расположены так, как они располагались на РК. Этот режим не удобен для набора текста в эмуляторе, но бывает полезен в некоторых игровых программах, так как в них клавиши управления стрельбой/передвижениями/etc могут выбираться с расчетом на их расположения на клавиатуре РК. Помощь по раскладке клавиатуры в режиме 'РК' можно всегда вызвать в эмуляторе клавишей NumLock. В режиме 'РК' большинство латинских букв находится над соответствующими русскими, но не все. Вкратце, система такая если хотите набрать русскую букву, то переключаетесь через РУС/ЛАТ (клавиша L/CTRL) в русский режим или удерживаете клавишу УС (L/ALT) и нажимаете клавишу с соответствующей ей русской буквой по стандартной раскладке 'QWERTY', а если ходите набрать латинскую букву, то нажмите клавишу, с русской буквой, которой соответствует нужная Вам латинская буква. Этот "принцип" верен для всех латинских букв, кроме Y, W, V, Q, и X клавиши для них надо просто запомнить или смотреть по NumLock'у. Короче те, кто знаком был с клавиатурой РК все поймут .
Ниже приводится содержание файла KEYBOARD.HLP, которое также можно посмотреть в эмуляторе по клавише NumLock. Здесь сверху пара букв изображают клавиши РК, и под каждой парой (через пустую строку) приводится нужная клавиша на стандартной клавиатуре 'QWERTY'. Слово 'PAD' означает, что используется клавиша с расширенной части клавиатуры.
В этом режиме Вы пользуетесь стандартным расположением клавиш на клавиатуре QWERTY. Но в этом режиме Вы можете вводить НЕ ВСЕ символы РК. В этом режиме Вы можете вводить:
Если Вам необходимо ввести какой-либо другой код, то воспользуйтесь режимом 'РК' эмуляции клавиатуры.
Переключение между русским и латинским алфавитом в этом режиме клавиатуры
происходит клавишей L/CTRL.
Клавиша SHIFT не влияет на текущую раскладку клавиатуры (РУС или ЛАТ). Слово
'PAD' означает, что используется клавиша с расширенной части клавиатуры.
ЗАМЕЧАНИЕ
Для игровых программ, где требуется динамичное реагирование эмулятора на нажатие
клавиш, лучше пользоваться режимом клавиатуры 'РК'. Возможность одновременного
нажатия на две или более клавиш (например, в Спасателе лететь и стрелять)
в ОБОИХ режимах работы клавиатуры определяется устройством клавиатуры РК. Вот
группы клавиш, чье одновременное нажатие может быть отработано в РК и, ледовательно,
в эмуляторе (в раскладке РК, естественно):
При эмуляции ввода/вывода используется каталог TAPE16 для режима 16кб и TAPE32
для режима 32кб.
Эмуляция ввода/вывода происходит на основе перехвата процедур "Монитора"
ввода и вывода байта на магнитофон, и далее слова 'ввод/вывод' применяются в
смысле вызова программами этих подпрограмм.
Блок эмуляции ввода/вывода работает с файлами-image'ами, которые представляют
собой ТОЧНУЮ байтовую копию того, что находится на ленте, ВКЛЮЧАЯ ВСЕ синхробайты.
Начиная с версии 0.5 в эмуляторе поддерживается формат файлов эмулятора EMU80 Виктора Пыхонина. Этот формат также представляет собой байтовую копию того, что находится на ленте, но БЕЗ самого первого синхробайта. При испрользовании файлов от эмулятора EMU80 есть незначительные ограничения. Более подробно об этом в 'Замечании' в главе "Эмуляция ввода".
При вводе имен файлов для операции чтения (подглава "Эмуляция ввода") Вы сами должны выбирать файлы в зависимости от того, в какой ситуации Вы проводите ввод. Например, если Вы на команду "Монитора" 'I' подставите image-файл от редактора Микрон, то, естественно, получите ошибку ввода. Я предлагаю просто присваивать файлам-image'ам соответствующие расширения и определять тип файла по ним. Вот то, что использую я:
Начиная с версии эмулятора 0.5 добавились еще рабочие расширения:
ЗАМЕЧАНИЕ
Как при записи и чтении файлов, так и при записи и чтении snapshot'ов, Вы используете экран выбора файла. Количество отображаемых файлов неограничено. Клавиши навигации при выборе имени файла:
HOME | в начало каталога |
END | в конец каталога |
CTRL-HOME, CTRL-PGUP | в начало текущего экрана |
CTRL-END, CTRL-PGDN | в конец текущего экрана |
LEFT | на один файл влево |
RIGHT | на один файл вправо |
PGUP | на один экран вверх |
PGDN | на один экран вниз |
Алфавитно-цифровые клавиши приведут в быстрому поиску и навигации по именам файлов в каталоге.
Строки "........"
в начале и/или в конце экрана означают,
что на экране изображены имена не всех файлов каталога, и Вы можете "прокрутить"
экран вверх/вниз клавишами навигации.
При вызове программой пользователя подпрограммы "Монитора" ввода байта с магнитофона происходит запрос на имя файла, откуда проводить ввод. Далее все последующее вызовы подпрограммы чтения байта будут получать данные последовательно из УКАЗАННОГО файла то тех пор, ПОКА ОН НЕ КОНЧИТСЯ.
По его окончании снова будет запрос на имя файла. Если поступил запрос на ввод с поиском синхробайта, то, если уже активен некоторый файл для ввода, будет найден в нем первый синхробайт (0E6h), начиная от текущей позиции, и если он НЕ будет найдет в текущем файле, то это будет рассмотрено как ошибка ввода. В случае успешного ввода байта с поиском с синхробайтом все дальнейшее чтение из текущего файла ввода (пока он не кончится) будет проводиться с позиции, следующей за введенным с поиском синхробайта байтом.
Данная система позволяет "сливать" несколько исходных файлов (логических блоков) в один простым копированием, и уже при вводе из полученного результирующего файла запроса на ввод имени не будет до тех под, пока все логические блоки из этого файла не будут считаны.
При вводе из файлов эмулятора EMU80 процедура ввода имеет некоторые особенности. Файл эмулятора EMU80 может содержать только один логический блок данных РК. Это значит, что после чтения ПЕРВОГО логического блока из файла эмулятора EMU80 в этом файле остались неиспользованные (несчитанные) байты, то при очередном запросе на чтение байта с поиском синхробайта эмулятор начнет считывать именно эти байты. Если эти байты являются неиспользуемым "мусором", то скорее всего будет ошибка ввода, и уже при следующем запросе на ввод с поиском синхробайта произойдет запрос имени исходного файла.
При вызове программой пользователя подпрограммы "Монитора" вывода байта на магнитофон, происходит запрос на имя файла КУДА проводить вывод, - и все последующие вызовы этой подпрограммы будут записывать данные в указанный файл. Пауза более чем в 5 секунд между вызовами подпрограммы записи байта расценивается как конец файла, и при уже новом вызове подпрограммы записи байта будет новый запрос на имя файла для записи. Этот интервал времени измеряется между ОКОНЧАНИЕМ записи предыдущего байта и началом записи нового, так что медленные устройства ввода/вывода типа дискеты не влияют на процедуру записи и НЕ "сбивают" ее.
Данная схема эмуляции ввода/вывода успешно работает со всеми программами под РК, что у меня есть Монитор, Бейсик и Редактор Микрон, Бейсик-Сервис.
Если у Вас с какой-то программой ввод/вывод в эмуляторе не работает, то пришлите мне эту программу (ссылка на Вас будет, конечно, сохранена), и я попытаюсь что-нибудь сделать .
Единственное ограничение не делайте вывод двух РАЗНЫХ файлов с интервалом менее 5 секунд (то есть, например, не пользуйтесь командой "Монитора" 'O' чаще чем через 5 секунд , а то оба эти файла сольются в один. Конечно, Вы сможете их потом прочитать в эмуляторе, но ТОЛЬКО последовательно.
Хоть все и так знают, но я все-таки приведу формат файлов "Монитора" (стартовый и конечный адреса и контрольная сумма хранятся в формате little-endian, то есть сначала старший байт, в затем младший):
E6 | синхробайт |
XX XX | начальный адрес файла |
XX XX | конечный адрес файла |
..... | данные файла |
00 00 | junk (может и отсутствовать) |
E6 | синхробайт |
XX XX | контрольная сумма |
В принципе, два нуля перед контрольной суммой роли не играют, так как при вводе они пропускаются при вводе первого байта контрольной суммы в режиме "с поиском синхробайта".
Форматы файлов Бейсиков, Редактора или Музыкальной системы я приводить не буду нет желания в них копаться желающие сами разберутся.
С ленты все читалось выдранным с Синклера компаратором (ну не люблю я пассивные схемы и программой, сделанной на основе, естественно, подпрограммы "Монитора". Есть еще супер-программа RRKWIN32.EXE из комплекта эмулятора EMU80. С помощью нее Вы может считать даже совсем "убитые" кассеты. Причем делается это просто через Вам SoundBlaster без всяких дополнительных устройств. Спасибо Виктору Пыхонину.
Скорость работы эмулятора пока НИКАК не подгоняется под оригинал уж сколько
получите Вы на своем компьютере, столько получите. Для примера скажу, что на
моем p200/mmx все работает примерно ~2.5 раза быстрее "родного" РК.
Вы можете замедлять работу эмулятора, регулируя в отладчике задержку (глава
"Задержка"). Также Вы можете менять эту задержку через меню настроек,
вызываемого по ESCAPE'у.
По умолчанию задержка равна 1. Задержка 1 является минимальной, при которой
сохраняется "растактовка" команд i8080
(по tick'ам). При 0 Вы получите максимальную скорость, но время выполнения команд
будет не
сбалансировано, относительно документации на i8080. Увеличивая задержку, Вы
можете замедлять эмулятор.
На моем p200/mmx, как я уже говорил, при задержке 1 эмулятор работает в ~2.5
раза быстрее "родного" РК.
Меню настроек вызывается по ESPCAPE'у в эмуляторе. Здесь Вы увидите текущее состояние эмулятора и сможете менять его настройки. В этом меню Вы можете:
При попытке выполнить недопустимую операцию процессора i8080 эмулятор поступает
по разному.
Если в меню настроек флаг 'КОНТРОЛЬ bad opcodes' в состоянии ВКЛ, то при выполнении
недопустимой команды получает управление отладчик и далее Вы сами решаете, что
делать (можно, например, нажать F1 и перезапустить Монитор). Если отладчик недоступен
(Вы запустили эмулятор без встроенного отладчика), то поведение эмулятора будет
аналогично выполнению команды HLT. Перезапустить эмулятор в этом случае можно,
например, клавишей RESET (F11).
А если в меню настроек флаг 'КОНТРОЛЬ bad opcodes' в состоянии [X], то эмулятор
просто игнорирует этот 'bad opcode' и начинает выполнение следующей за ним инструкции.
Режим экрана эмулятора выбирается в зависимости от настроек ПДП и ВГ-75. Размер строки ВСЕГДА 78 символов. Количество строк на экране может быть 30, 43 или 50, в зависимости от того, на сколько строк прикладная программы настроила ПДП и ВГ-75. Несмотря на то, что ВГ-75 поддерживает максимально 64 строки на экране в эмуляторе максимальное количество строк на экране равняется 50.
Встроенный отладчик вызывается клавишей F12. В релизе
эмулятора есть два исполняемых файла СО встроенным отладчиком (PK86DBG)
и БЕЗ него (PK86EMUL). Версия без отладчика включена для владельцев медленных
машин (у меня на p200 и с отладчиком эмулятор работает раза в ~2.5 быстрее родного
РК).
Пока, встроенный отладчик весьма сильно замедляет работу эмулятора в целом,
поэтому приходиться включать в релиз две версии эмулятора. Так что если хотите
поломать игрушки, то надо найти машину пошустрее .
Более подробное описание отладчика здесь.
От первоначальной идеи писать все ассемблере я отказался, решив, что в данном
случае лучше положиться на быструю машину (ведь p5 сейчас де факто) и на оптимизатор
компилятора , и тем самый получить возможность ввести в эмулятор побольше
функциональных наворотов, не тратя на это уйму времени, а не на собственный
кодинг на ассемблере. Итак язык С.
Версия эмулятора 0.1 собрана под Borland C++ 3.1, а 0.2 и выше BC++ 5.0.
Начиная с версии 0.5 в эмулятор введена поддержка так называемых snapshot'ов, то есть возможность сохранять и в дальнейшем загружать образы памяти, состояния процессора и состояния внешних устройств, что позволяет "отложить" выполнений какой-либо программы и восстановить ее сохраненное рабочее состояние позже.
Формат snapshot'ов RSS, которой сейчас поддерживается в эмуляторе, был предложен Виктором Пыхониным автором эмулятора EMU80) как универсальный формат для обмена данными между различными эмуляторами.
Для конвертации обычного бинарного файла в файл snapshot'а RSS можно воспользоваться утилитой BIN2RSS.EXE из комплекта эмулятора EMU80. Описание формата приводится здесь.
Итак, что же Вы можете делать со snapshot'ми в этом эмуляторе ?! ...
При записи snapshot'а кроме образа памяти, состояния процессора и внешних устройств, Вы можете сохранить текущую конфигурацию эмулятора и текущий образ Монитора. По умолчанию snapshot'ы компрессируются, и если Вы хотите исследовать сохраненный образ памяти, состояние процессора и внешних устройств, то отключив компрессию в меню "Настройки" Вы получите "чистое изображение" информации.
При чтении файла snapshot'а, Вы можете получите полную информацию о содержимом этого snapshot'а, извлекаемую из его заголовков. Отключить вывод этой информации можно в меню "Настройки". Если snapshot был сделан на клоне РК, но НЕ на РК, то он, конечно, будет считан, но работа сохраненной программы, естественно, не гарантируется.
Если Вы обнаружили какие-либо ошибки или неточности, то пишите мне на .