Модуль 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 – сопроцессора.