En efecto, la clausula Uses sirve para indicar que algunas funciones y procedimientos dentro del programa son externos y se encuentran en los archivos que siguen a la clausula. Hay que tener en cuenta que Pascal por omisión asume que existe la unidad externa System la cual no es necesario declarar. En Turbo Pascal las unidades estandar son Crt, Dos, Graph y Printer, todas estas están almacenadas en binario en el archivo .TPL y TPU (la Graph esta ultima).
Con respecto a lo que comentas de la unidad Crt se trata de un bug ya muy conocido del cual existen muchos parches aunque ninguno es el oficial (Borland reconoce que el error existe pero no va a sacar un parche oficial). Concretamente el error se produce cuando la unidad Crt se inicializa (esto es automatico y no se puede evitar), uno de los procedimientos declarados en esta unidad es Delay() que sirve para hacer una pausa finita en la ejecución en centecimas de segundo, al inicializarse este procedimiento el algoritmo debe calcular cuánto es una centecima de segundo especulando con la velocidad del procesador, esto funciona sin problemas en CPUs de hasta 166 Mhz (según lo que he probado) pero va mal a mayores velocidades, ocurre un overflow en una de las variables del algoritmo la cual se convierte en 0, como esta variable se usa mas tarde en una división, el error resultante es "Integer divided by 0", conocido en la comunidad Pascal como el bug RTL200.
Un parche que soluciona este problema de la unidad Crt puedes conseguirla en mi página web. www.geocities.com/diegofrom/pascal.html