Страница 3 из 15

Добавлено: 24.03.2014,22:52
georgel
Ну тогда такое не будет 286, а 186. Смысл = 0.

Добавлено: 24.03.2014,23:06
uav1606
Во всяком случае, при наличии такого прерывания эмулировать защищённый режим было бы легче - как минимум, можно было бы перехватывать команды загрузки регистров таблиц дескрипторов, статусных слов и т.п. Защиту памяти, конечно, так не сделаешь - тут и правда нужен какой-то дополнительный чип.

Добавлено: 24.03.2014,23:17
georgel
Никак не поможет. Адресация защищенного режима не получится ;) Даже в реальном режиме не замулишь детекцию 286го.

Добавлено: 24.03.2014,23:19
uav1606
georgel писал(а):Адресация защищенного режима
Да, конечно. Работу 286-го с памятью в защищённом режиме так просто не сымитируешь.

Добавлено: 24.03.2014,23:27
georgel
Вообще не замулишь 286го с помощью этого прерывания 6 (вернее TRAP-a). Даже если проигнорируешь защиту и допустишь, что все запускаемые программы не будут нарушать ее (т.е. создовать exceptions).

Добавлено: 24.03.2014,23:58
uav1606
georgel писал(а):Вообще не замулишь 286го с помощью этого прерывания 6 (вернее TRAP-a). Даже если проигнорируешь защиту и допустишь, что все запускаемые программы не будут нарушать ее (т.е. создовать exceptions).
В защищённом режиме - да, поэтому, наверное, в упомянутой ЕС1842 и сделали специальный чип для этого.
georgel писал(а):Ну тогда такое не будет 286, а 186. Смысл = 0.
Некий смысл для 86/88 в этом был бы, т.к. есть программы, использующие инструкции 286-го (точнее, 186-го) в обычном (не защищённом) режиме, к примеру, тот же Wolfenstein 3D. Но, к сожалению, на 86/88 это прерывание не генерируется (насчёт всех советских клонов и того же КР1810ВМ86М утверждать не буду).
georgel писал(а):Даже в реальном режиме не замулишь детекцию 286го.
А вот это и правда проблема. Посмотрел алгоритм детектирования 286-го - там флаги используются, т.е. invalid opcode interrupt будет бесполезно. Правда, тот же Wolfenstein 3D, похоже, вообще не проверяет процессор при старте.

Добавлено: 25.03.2014,08:06
shattered
georgel писал(а):Перехват векторов прерывания 1, 5. Использование недокумедированной ICEBP (opcode F1)...Но все очень далеко от программной эмуляцией 286.
Еще прослеживается работа с нестандартными портами 7x -- это, видимо и есть ВГ1.
georgel писал(а):Даже с помощью внешнего митического контроллера (100-выводной БИС).
Некоторые подробности про КА1843ВГ1 см. в http://www.155la3.ru/datafiles/1843_series_tu.pdf

Добавлено: 25.03.2014,08:49
georgel
Похоже на какой-то выдумки для какого-то съезда кпсс. Либо скопировали от какого-то мейнфрейма внешний MMU...И поставили его в XT... Но на самом деле было очень далеко от совместиомости с 286 ;) Даже с такими программными доработками ;).

Добавлено: 25.03.2014,09:13
ys05
georgel писал(а):Целая дискета и на ней всего 2КБ файлов? Похоже .COM является загрузчиком .TXT (на самом деле .EXE). Перехват векторов прерывания 1, 5. Использование недокумедированной ICEBP (opcode F1)...Но все очень далеко от программной эмуляцией 286. Я сильно сомневаюсь, что полная совместимость с 286 существовала в таком виде. Даже с помощью внешнего митического контроллера (100-выводной БИС). И все же очень любопытно.
ICEBP, похоже, тут явно непричём. Просто на тот момент код F1 не использовался Intel, и его стал использовать Квазар, забыв запатентовать :)
Судя по контексту использования этого опкода - ВМ86М (скорее всего, совместно с ВГ1) выполняет дополнительные двухбайтовые опкоды, как минимум:
F1 FA
F1 FB
F1 FD
Причём, опять судя по контексту, в ВМ86М (или паре ВМ86М/ВГ1) существует аппаратная теневая пара регистров SS:SP и код F1 FA включает станартные SS:SP, а код F1 FB включает теневые SS:SP (которые при старте эмулятора устанавливаются на E800:0400). Возможно, при перехвате управления эмулятором по всем случаям, связанным с работой 286, он автоматом переключается на работу с резервной парой SS:SP, но имеет доступ к кодам, вызвавшим прерывание эмулятора, через чтение основной пары. F1 FD, можно предположить, включает режим эмуляции в аппаратуре.
Так что, похоже, что там наворочено чего-то такого дополнительного, не относящегося к общепринятой архитектуре 8086, что вполне может в итоге эмулировать 286.

Добавлено: 25.03.2014,11:53
uav1606
ys05 писал(а):ICEBP, похоже, тут явно непричём.
Согласен, этот опкод появился только в 386-х, тут F1 явно выполняет другие функции. Интересно, этот опкод понимает только ВМ86М или простой ВМ86 тоже? И ВМ86Б?

Добавлено: 25.03.2014,11:58
georgel
ys05 писал(а):Просто на тот момент код F1 не использовался Intel, и его стал использовать Квазар, забыв запатентовать :)
Испольовался и в 286, и 386 (и в то время наверное в 486). А наши крали, крали и копировали. Миллиционерская ерунда. И разведовали зачастую без мозгов.
ys05 писал(а):Так что, похоже, что там наворочено чего-то такого дополнительного, не относящегося к общепринятой архитектуре 8086, что вполне может в итоге эмулировать 286.
Демонстрация социализма. Наверное у нас такое рабочее полностью не было вообще, но похвастаться можно ;)