Unreal mode

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Unreal mode — режим роботи процесора x86, який активно використовували в деяких програмах для MS-DOS на початку 1990-их років, в тому числі деяких іграх, які частково актуальні і зараз. Також відомий як англ. 32-bit flat memory mode, або «плаский режим».

З'явився як недокументована можливість процесора (можливо, що це лише баг).

Опис[ред. | ред. код]

Ядро MS-DOS працює в 16-бітному режимі процесора, реальному або V86. Щоб забрати обмеження у розмірі адресного простору в 1Мб, необхідний захищений режим, і, скоріш за все, 32-бітний захищений режим (бо в 16-бітному доступно тільки 16Мбайт).

Так, для розробки програм під MS-DOS, що використовують всю пам'ять, приходилося або програмувати в захищеному режимі й використовувати DOS-extender та DPMI (до речі, так написаний Doom), або ж використовувати недокументовану можливість процесора.

Ця можливість дозволяє ненадовго увійти в 32-бітний захищений режим, завантажити туди дескриптори сегментів з межами, що перевищують 64Кб і, згодом, вийти назад в 16-бітний реальний режим. При виході зберігається 32-бітне значення границі.

Після того можна звертатися до усієї пам'яті комп'ютера прямо, відносно сегменту з «невірною границею».

Розробка в захищеному режимі потребувала використання всього пакету інструментів та налагоджувача, розрахованих на це, та зазвичай, зв'язаного з конкретним DOS-extender'ом. Ці пакети були дорогими і не так популярні, як звичайні середовища розробки під DOS.

Unreal mode дозволяв використовувати всю пам'ять у програмах, розроблених в звичайних середовищах розробки, наприклад, Borland C++.

Обмеження[ред. | ред. код]

Неможливість роботи в багатозадачних середовищах на основі DOS та V86-вікні операційної системи Windows, в тому числі в NTVDM Windows NT.

Більш того, unreal mode не сумісний з EMM386 — останній працює, створюючи єдину віртуальну машину V86 та завантажуючи туди весь DOS.

Повноцінні віртуальні машини, такі, як Virtual PC і VMWare Workstation, зазвичай працюють без проблем. Тим не менш, Hyper-V не підтримує unreal mode.

Приклади ігор[ред. | ред. код]

  • Ultima VII The Black Gate
  • Ultima VII Serpent Isle.

Див. також[ред. | ред. код]