W systemie Turbo Pascal wersja 6.0 dostępnych jest 6 bibliotek standardowych zawierających wiele pożytecznych procedur i funkcji oraz deklaracje predefiniowanych typów, stałych i zmiennych. Dostępne są następujące biblioteki standardowe:
- System - zawiera procedury i funkcje obsługi plików, konwersji danych, do wykonywania operacji na łańcuchach, zarządzania pamięcią zmiennych dynamicznych, arytmetyczne (w tym programowy emulator koprocesora 8087) i inne.
- Dos - umożliwia wykonywanie podstawowych funkcji systemu operacyjnego: operacje na zbiorach i katalogach, uruchamianie programów, operacje związane z datą i czasem
- Crt - obsługa klawiatury i ekranu w trybie tekstowym.
- Graph - bogaty zestaw funkcji i procedur graficznych.
- Overlay - umożliwia tworzenie programów nakładkowych, tzn. podzielonych na mniejsze części ładowane w razie potrzeby do pamięci.
- Printer - ułatwiający dostęp do drukarki.
Ponadto dostępne są jeszcze dwa moduły, Turbo3 i Graph3, umożliwiające uruchamianie programów napisanych w wersji 3.0 Turbo Pascala.
Użytkownik może wykorzystywać wszystkie procedury, funkcje, typy, stałe i zmienne, zdefiniowane w bibliotekach standardowych, w swoich programach i modułach, o ile na początku programu lub modułu zadeklaruje ich nazwy instrukcją uses. Deklaracji nie wymaga korzystanie z biblioteki system. Wszystkie elementy w niej zawarte są dostępne w każdym programie i module.
Nazwy procedur i funkcji zdefiniowanych w bibliotekach standardowych nie są słowami kluczowymi i mogą być dowolnie używane w programach. Jeżeli jednak użyjemy w naszym programie identyfikatora zdefiniowanego w zadeklarowanym do wykorzystania module, tracimy bezpośredni dostęp do elementu oznaczonego tym identyfikatorem w module. Możliwy jest zawsze dostęp poprzez podanie nazwy kwalifikowanej w postaci nazwa_modułu.identyfikator.
Przykład:
Wszystkie zdefiniowane w tej bibliotece stałe, zmienne, funkcje i procedury są automatycznie dostępne w każdym programie bez konieczności użycia deklaracji „uses system”.
PREDEFINIOWANE IDENTYFIKATORY.
W części publicznej biblioteki SYSTEM znajdują się następujące deklaracje stałych i zmiennych:
const
ErrorAddr : Pointer = nil;
ExitCode : Integer = 0;
ExitProc : Pointer = nil;
FileMode : Byte = 2;
FreeMin : Word = 0;
FreePtr : Pointer = nil;
HeapError : Pointer = nil;
HeapOrg : Pointer = nil;
HeapPtr : Pointer = nil;
InOutRes : Integer = 0;
OvrCodeList : Word = 0;
OvrDebugPtr : Pointer = nil;
OvrDosHandle : Word = 0;
OvrEmsHandle : Word = 0;
OvrHeapEnd : Word = 0;
OvrHeapOrg : Word = 0;
OvrHeapPtr : Word = 0;
OvrHeapSize : Word = 0;
OvrLoadList : Word = 0;
PrefixSeg : Word = 0;
RandSeed : LongInt = 0;
StackLimit : Byte = 0;
Test8087 : Byte = 0;
var
Input : Text;
Output : Text;
SaveInt00 : Pointer;
SaveInt02 : Pointer;
SaveInt1B : Pointer;
SaveInt23 : Pointer;
SaveInt24 : Pointer;
SaveInt34 : Pointer;
SaveInt35 : Pointer;
SaveInt36 : Pointer;
SaveInt37 : Pointer;
SaveInt38 : Pointer;
SaveInt39 : Pointer;
SaveInt3A : Pointer;
SaveInt3B : Pointer;
SaveInt3C : Pointer;
SaveInt3D : Pointer;
SaveInt3E : Pointer;
SaveInt3F : Pointer;
SaveInt75 : Pointer;
Zmienne zaczynające się od Ovr wykorzystywane są przez bibliotekę Overlay do zarządzania pamięcią w programach nakładkowych i są dokładnie omówione w opisie biblioteki Overlay.
Zmienne ExitProc, ExitCode i ErrorAddr są wykorzystywane przez procedury wyjścia z programu. Istnieje możliwość dołączenia własnych procedur zakończenia programu. Jest to najprostszy i najbezpieczniejszy sposób kontroli sposobu zakończenia programu niezależnie od tego, w którym miejscu program został przerwany. Procedury obsługi zakończenia programu powinny w szczególności być używane do sprawdzenia, czy zostały zamknięte wszystkie pliki i ewentualnego zamknięcia ich. Zakończenie programu bez zamknięcia plików grozi utratą części danych w tych plikach. Do zainstalowania własnej procedury obsługi zakończenia programu służy zmienna ExitProc, której należy przypisać wskazanie do naszej procedury. Procedura obsługi zakończenia programu powinna być bezparametrowa i skompilowana z włączoną opcją wywołań dalekich ({$R+}. Procedura powinna przywracać zmiennej ExitProc wartość pierwotną lub przypisać jej wartość nill. Początkowo w module system zmiennej ExitProc nadawana jest wartość nill, jednak inne moduły wykorzystywane w programie mogą w swojej części inicjacyjnej wstawiać adresy własnych procedur kończących w sposób prawidłowy działanie modułu przed zakończeniem działania programu. Procedura obsługi zakończenia programu może testować sposób przerwania programu przez testowanie zmiennych ExitCode i ErrorAddr. W przypadku normalnego zakończenia programu w zmiennej ExitCode znajduje się 0, a w zmiennej ErrorAddr - nill. Jeżeli zakończenie programu następuje po wywołaniu procedury Halt, w zmiennej ExitCode znajduje się wartość równa argumentowi wywołania procedury Halt, a w zmiennej ErrorAddr - nill. Jeżeli natomiast zakończenie programu następuje wskutek wystąpienia błędu wykonania, w zmiennej ExitCode znajduje się kod zaistniałego błędu, a w zmiennej ErrorAddr znajduje się adres miejsca wystąpienia błędu.
Zmienne HeapOrg, HeapPtr, HeapEnd, FreeList i HeapError używane są przez podprogram zarządzający pamięcią stosu zmiennych dynamicznych. Bezpośrednie korzystanie z tych zmiennych w programie jest możliwe, ale powinno się to robić bardzo ostrożnie, gdyż łatwo doprowadzić do błędów o zupełnie nieprzewidywalnych dla programu konsekwencjach. Błędy tego typu są trudne do zlokalizowania. Pamięć zmiennych dynamicznych. Zmienna PrefixSeg zawiera segment adresu obszaru PSP, tworzonego dla każdego uruchamianego programu przez DOS. W obszarze PSP DOS zapisuje informacje niezbędne do prawidłowej obsługi uruchamianego programu.