Иллюстрированный самоучитель по Turbo Pascal

Модуль SYSTEM. Константы.

Модуль SYSTEM является основной библиотекой Турбо Паскаля. Он реализует подпрограммы для всех встроенных возможностей, таких как ввод/вывод, обработка строк, эмуляция арифметического сопроцессора, управление оверлеями и динамическое распределение памяти. Модуль SYSTEM используется автоматически любым модулем или программой и никогда не указывается в предложении USES.

Константы

const      
ErrorAddr Pointer = NIL;{Адрес ошибки времени выполнения}
ExitProc Pointer = NIL;{Процедура выхода}
ExitCode Integer = 0;{Выходной код}
FileMode Byte = 2;{Режим открытия файла}
FreeList Pointer = NIL;{Список свободных блоков кучи}
HeapEnd Pointer = NIL;{Конец кучи}
HeapError Pointer = NIL;{Функция обработки ошибок кучи}
HeapOrg Pointer = NIL;{Начало кучи}
HeapPtr Pointer = NIL;{Указатель кучи}
InOutRes Integer = 0;{Буфер результата ввода/вывода}
OvrCodeList Word = 0;{Список оверлейных сегментов кода}
OvrDebugPtr Pointer = NIL;{Адрес отладчика оверлеев}
OvrDosHandle Word = 0;{Обработчик DOS оверлеев}
OvrEmsHandle Word = 0;{Обработчик EMS оверлеев}
OvrHeapEnd Word = 0;{Конец буфера оверлеев}
OvrHeapOrg Word = 0;{Начало буфера оверлеев}
OvrHeapPrt Word = 0;{Указатель буфера оверлеев}
OvrHeapSize Word = 0;{Начальный размер буфера оверлеев}
OvrLoadList Word = 0;{Список загруженных оверлеев}
RandSeed LongInt = 0;{Опорное значение генератора случайных чисел}
PrefixSeg Word = 0;{Префикс программного сегмента}
Seg0040 Word = $0040{Сегмент $0040}
SegA000 Word = $A000{Сегмент $А000}
SegB000 Word = $B000{Сегмент $В000}
SegB800 Word = $B800{Сегмент $В800}
SelectorInc Word = $1000{Шаг наращивания селекторов}
StackLimit Word = 0;{Указатель на нижнюю границу стека}
Test8086 Byte = 0;{Признак наличия процессора 80x86}
Test8087 Byte = 0;{Признак наличия сопроцессора}

OvrCodeList, OvrHeapSize, OvrDebugPtr, OvrHeapOrg, OvrHeapPtr, OvrHeapEnd, OvrHeapList, OvrDosHandle и OvrEmsHandle используются модулем Overlay для реализации администратора оверлеев. Буфер оверлеев размещается между сегментом стека и кучей и OvrHeapOrg и OvrHeapEnd содержат адреса начала и конца сегмента. Размер буфера оверлеев по умолчанию соответствует размеру максимального оверлея в программе; если в программе нет оверлеев, то размер оверлейного буфера равен нулю.

HeapOrg, HeapPtr, HeapEnd, FreeList, HeapError используются администратором кучи для реализации распределения динамической памяти.

Переменные ExitProc, ExitCode и ErrorAddr реализуют процедуры выхода.

PrefixSeg содержит сегментную часть адреса префикса программного сегмента (PSP).

StackLimit содержит смещение от нижней границы сегмента стека, соответствующее наименьшему допустимому значению регистра SP. Обычно StackLimit равен нулю; если программа откомпилирована с опциями {$N+.E+}, компилятор будет устанавливать его равным 224 для резервирования рабочего пространства на нижней границе сегмента стека, используемого для эмуляции сопроцессора.

InOutRes используется встроенными программами ввода/вывода для запоминания значения, возвращаемого при последующем вызове стандартной функции IOResult.

RandSeed содержит опорное число генератора случайных чисел. При присваивании конкретного значения этой переменной функция Random будет генерировать строго определенную последовательность псевдослучайных чисел. Процедура Randomize заносит в переменную RandSeed текущее системное время и тем самым обеспечивает новую псевдослучайную последовательность при очередном прогоне программы.

FileMode позволяет изменить режим доступа, с которым открываются типизированные и нетипизированные файлы стандартной процедурой RESET. Текстовые файлы этой процедурой открываются только для чтения.

Seg0040 хранит сегмент участка памяти, который MS-DOS использует для размещения своих переменных.

SegA000 содержит сегмент начала видеопамяти для графического режима работы, a SegB000 и SegB800 – сегменты видеопамяти для текстового режима.

Selectorlnc используется как шаг наращивания т.н. селекторов – указателей, обеспечивающих линейную модель памяти.

Test8086 хранит результат теста автообнаружения процессора Intel 80x86, a Test8087 – сопроцессора.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.