Кроме процедур и функций в модуле System предусмотрен ряд
предописанных переменных. Их перечень зависит от библиотеки
исполняющей системы, к которой относится модуль System.
Следующие переменные описываются в модуле System библиотеки
TURBO.TPL - библиотеке исполняющей системы для приложений
реального режима DOS.
Переменная |
Тип |
Описание |
ErrorAddr |
Pointer |
адрес ошибки этапа выполнения |
ExitProc |
Pointer |
процедура выхода |
ExitCode |
Integer |
код выхода |
FileMode |
Byte |
режим открытия файла |
FreeList |
Pointer |
список свободных блоков динамически распределяемой
области памяти |
FreeZero |
Pointer |
должен быть равен 0 |
HeapOrg |
Pointer |
начало динамически распределяемой области |
HeapPtr |
Pointer |
указатель динамически распределяемой области |
HeapError |
Pointer |
функция ошибки динамически распределяемой
области памяти |
Input |
Text |
стандартный файл ввода |
InOutRes |
Integer |
буфер результата операции ввода-вывода |
Output |
Text |
стандартный файл вывода |
OvrCodeList |
Word |
список сегментов оверлейного кода |
OvrDebugPtr |
Pointer |
используется при отладке оверлеев |
OvrDosHandle |
Word |
описатель оверлея DOS |
OvrEmsHandle |
Word |
описатель оверлея EMS |
OvrHeapEnd |
Word |
конец оверлейного буфера |
OvrHeapOrg |
Word |
начало оверлейного буфера |
OvrHeapPtr |
Word |
указатель оверлейного буфера |
OvrHeapSize |
Word |
начальный размер оверлейного буфера |
OvrLoadList |
Word |
список загруженных оверлеев |
PrefixSeg |
Word |
префикс программного сегмента |
RandSeed |
Longint |
случайное число (генерируется датчиком случайных
чисел) |
SaveInt00 |
Pointer |
сохраненное прерывание $00 |
SaveInt02 |
Pointer |
сохраненное прерывание $02 |
SaveInt1B |
Pointer |
сохраненное прерывание $1B |
SaveInt23 |
Pointer |
сохраненное прерывание $23 |
SaveInt24 |
Pointer |
сохраненное прерывание $24 |
SaveInt34 |
Pointer |
сохраненное прерывание $34 |
SaveInt35 |
Pointer |
сохраненное прерывание $35 |
SaveInt36 |
Pointer |
сохраненное прерывание $36 |
SaveInt37 |
Pointer |
сохраненное прерывание $37 |
SaveInt38 |
Pointer |
сохраненное прерывание $38 |
SaveInt39 |
Pointer |
сохраненное прерывание $39 |
SaveInt3A |
Pointer |
сохраненное прерывание $3A |
SaveInt3B |
Pointer |
сохраненное прерывание $3B |
SaveInt3C |
Pointer |
сохраненное прерывание $3C |
SaveInt3D |
Pointer |
сохраненное прерывание $3D |
SaveInt3E |
Pointer |
сохраненное прерывание $3E |
SaveInt3F |
Pointer |
сохраненное прерывание $3F |
SaveInt75 |
Pointer |
сохраненное прерывание $75 |
Seg0040 |
Word |
селектор сегмента $0040 |
SegA000 |
Word |
селектор сегмента $A000 |
SegB000 |
Word |
селектор сегмента $B000 |
SegC000 |
Word |
селектор сегмента $C000 |
SelectorInc |
Word |
шаг увеличения селектора |
StackLimit |
Word |
указатель на нижнюю границу стека |
Test8086 |
Byte |
результат проверки процессора 8086 |
Test8087 |
Byte |
результат проверки сопроцессора 8087 |
PrefixSeg представляет собой переменную
длиной в слово, содержащую адрес префикса программного сегмента
(PSP), создаваемогопри выполнении программы операционной
системой DOS. Полное описание PSP приведено в руководстве
по операционной системе DOS. Переменная
StackLimit содержит смещение начала стека относительно
сегмента стека, что соответствует минимальному допустимому
значению регистра SP, после которого уже возникает ситуация
переполнения стека. По умолчанию значение этой переменной
равно 0, но если программа компилируется с директивами
{$N+,$E+}, то эмулятор сопроцессора 8087 при отсутствии
в системе сопроцессора 8087
для резервирования места в младших адресах сегмента стека
будет устанавливать ее в значение 224. Переменная
InOutRes используется встроенными программами
ввода-вывода для сохранения значения, возвращаемого при
следующем обращении к функции IOResult. В
RandSeed сохраняется начальное значение для встроенного генератора
случайных чисел. Если присваивать этой переменной
определенное значение, то функция Random будет генерировать
заданную последовательность случайных чисел. Переменная
FileMode позволяет изменять
режим доступа к открытым типизированным и нетипизированным файлам.
В переменной Test8087 сохраняется
результат работы алгоритмов автоматического распознавания
сопроцессора 8087, которые
начинают работать при запуске программы, скомпилированной с
директивой {$N+}.Input и Оutput
- это стандартные файлы ввода-вывода, необходимые в каждой
реализации Паскаля. По умолчанию они связываются со стандартными
входными и выходными файлами в Dos. Подсистемой
управления динамически распределяемой
областью памяти для реализации программ динамического
распределения памяти Borland Pascal используются переменные HeapList, HeapLimit,
HeapBlock и HeapError. Для реализации процедур выхода используются переменные
ExitProc, ErrorCode и ErrorAdr. Переменная
PrefixSeg представляет
собой переменную длиной в слово, содержащую адрес префикса программного сегмента (PSP),
создаваемого при выполнении программы операционной системой
DOS. Полное описание PSP приведено в руководстве по операционной системе
DOS. Переменная InOutRes используется встроенными программами
ввода-вывода для сохранения значения, возвращаемого при
следующем обращении к функции IOResult. Переменная
FileMode позволяет изменять режим доступа к открытым типизованным
и нетипизированным файлам. Следующие переменные
описываются в модуле System библиотеки TPP.TPL - библиотеке
исполняющей системы для приложений защищенного режима DOS.