В модуле System для обычно используемых адресов реального
режима предусмотрено несколько предопределенных селекторов. Они
именуются по физическому сегменту, которому данные селекторы
присвоены, и используются для совместимости между реальным и за-
щищенным режимом DOS.
Предопределенные селекторы Таблица 17.1
┌──────────────────┬────────────────────────────────────────────┐
│ Селектор │ Описание │
├──────────────────┼────────────────────────────────────────────┤
│ Seg0040 │ Используется для доступа к области данных│
│ │ BIOS $40 в младших адресах. │
├──────────────────┼────────────────────────────────────────────┤
│ SegA000 │ Используется для доступа к графической па-│
│ │ мяти EGA и VGA по адресу сегмента $A000. │
├──────────────────┼────────────────────────────────────────────┤
│ SegB000 │ Используется для доступа к видеопамяти мо-│
│ │ нохромного адаптера по адресу сегмента│
│ │ $A000. │
├──────────────────┼────────────────────────────────────────────┤
│ SegB800 │ Используется для доступа к видеопамяти│
│ │ цветного графического адаптера по адресу│
│ │ сегмента $A000. │
└──────────────────┴────────────────────────────────────────────┘
В реальном режиме переменные SegXXXX всегда содержат значе-
ния $0040, $A000, $B000 и $B800 соответственно. В защищенном ре-
жиме код запуска библиотеки исполняющей системы создает четыре
селектора, ссылающихся на конкретные области памяти реального ре-
жима. При ссылке на эти области памяти вам следует использовать
переменные SegXXXX. Например, если у вас был код следующего вида:
B.Pascal 7 & Objects/LR - 281 -
CtrMode := Mem[$40: $49];
то вместо него следует записать:
CtrMode := Mem[Seg0040: $49];
Используя переменные SegXXXX, вы можете гарантировать, что
ваша программа без изменений будет работать в реальном и защищен-
ном режимах.