
Сообщение от
anasana
Переделанный и исправленый Полетаевский эмулятор. DOS. (Ошибка в архиве arj восстановлена не полностью. Зацепило только имидж диска с RT, исполняемый модуль - рабочий).
DEC PDP11 (R) Software emulator v2.1
SOS (C) 1989-1992
P.S. Нет, не так: Это за основу Полетавского был взят "DEC PDP-11 (R) Software emulator V2.1 SOS (C) 1989-1992". (из readme.ibm). Т.е. - это праобраз ставший "em.com".
Вот исходники этого эмулятора.
Правда похоже, что я в них успел покопаться (в архиве - работоспособный проект компиляции эмулятора в Borland C++ 5.0) и добавил индикацию "RUS/LAT".
Клавиши <F1>..<F4> выдают коды клавиш <PF1>..<PF4> (поэтому, чтобы закончить работу в редакторе Edik - нужно перейти на латинский регистр и нажать <F1><E>).
Код:
Файлы:
EM.C - Дешифрация команд PDP-11, организация дискового
ввода-вывода и технологический отладчик.
EMSUBR.ASM - Интерпретация выполнения команд PDP-11.
EM.MAC - исходный текст драйвера для RT-11.
EMBOOT.SAV - образ 0-го блока загружаемого диска. Содержит начальный
загрузчик RT-11.
Для ввода-вывода в файлы-устройства, заданные в командной строке, служат
псевдокоманды с кодами 010 и 011. Подробнее см. их интерпретацию функциями
msread и mswrite в em.c.
Я все это безобразие компилил BC3.1, compact model.
Прошу о всех полезных нововведениях сообщать автору - Sergey Okhapkin,
FIDO 2:5020/47.
Удачи!
Код:
PC приходят и уходят,
а PDP-11 вечна...
Вашему вниманию предлагается расширение программного
эмулятора PDP-11 для возможности работы с гибкими дисками в
формате MY-80 (от ДВК).
За основу его был взят "DEC PDP-11 (R) Software
emulator V2.1 SOS (C) 1989-1992". Разработчики его сделали
почти все необходимое для того, чтобы он мог работать с гиб-
кими дисками. В нем не хватало всего двух подпрограмм:
_diskread() и _diskwrite(). (В файле осталась даже таблица
символов). Вместо этих подпрограмм стояли просто заглушки.
Для расширения мною было сделано следующее:
1. В функциях _diskread() и _diskwrite() вместо команды
XOR AX,AX было подставлено INT 61h и INT 62h.
2. В подпрограммах _msread() и _mswrite() изменен адрес
перехода при отсутствии ошибки - теперь если чтение или за-
пись с дискеты прошли без ошибок, то бит C эмулируемого про-
цессора сбрасывается (раньше он оставался без изменений).
3. Файл EM.EXE был переименован в EM_EXE.OVL и из него
была вырезана таблица символов (программой TDSTRIP).
4. И, наконец, была написана небольшая программка, ко-
торая устанавливает вектора INT 61h и INT 62h на свои подп-
рограммы чтения/записи с дискеты и запускает собственно эму-
лятор.
5. Кроме этого, я еще исправил драйвер ЕМ. Начальный
загрузчик в этом драйвере работал только с 0 устройством,
поэтому в качестве системного всегда должно было использо-
ваться устройство EM0:. Теперь начальная загрузка при запус-
ке эмулятора также происходит с 0 привода, но затем можно
загрузиться с любого возможного привода по команде BOOT.
Кроме этого, в драйвер введены два SET-параметра. Это SET-
параметр SIZE, задающий размер устройства в блоках, и SET-
параметр LIST, выводящий текущие установки на экран.
Размер устройства задается отдельно для каждого приво-
да EM0 ... EM7. Для того, чтобы, например, задать размер EM5
в 2000 блоков, следует подать команду: SET EM5 SIZE=2000.
Указываемый в драйвере размер устройства используется при
инициализации (командой INIT) и при сжатии (командой
SQUEEZE). Вывести значения размеров устройств для каждого
привода можно командой SET EM LIST.
Внимание! Программа предполагает, что уже загружен
драйвер PU_1700 или аналогичный, позволяющий работать с 10
секторами на дорожке.
В программе я использую прерывание INT 13h для работы с
гибкими дисками, не отслеживая переход через границу 64К. У
меня это работает (использую PU_1700 V3.1, IBM DOS 5.0).
И еще немного замечаний. Разработчики взятого за основу
эмулятора проделали немалую работу, но ее можно было сделать
немного лучше. Так, по моим оценкам (с которыми необязатель-
но соглашаться) быстродействие эмулятора можно было бы повы-
сить приблизительно на порядок. Я мог бы взяться за эту ра-
боту - был бы заказчик...
Полетаев В.М.
Тел. (095)536-8503, 536-5642 (рабочие).
PS. Организация, в которой я работаю (НПП "Кристалл"),
разрабатывает и продает различное программное и аппаратное
обеспечения для ДВК. Кому надо - звоните...
...
P.S.
Похоже, что SOS == Sergey Okhapkin Soft ..
...
Позже были обнаружены оригинальные исходники эмулятора PDP-11 Сергея Охапкина.
...