//primero segun el valor de esta variable tienes que ejecutar 100 veces
max=100;
//segundo tu while lee de la siguiente manera:
//mientras "ulpos" <=100 y vector no sea cero, ejecuta el loop
//asi que si escribieras el numero 0 deberia terminar....pero...
//segun este codigo
if vector[ulpos] = 0 then
dec(ulpos)
end;
//si escribes cero, ulpos se reducirá en 1 es decir que si en el primer recorido del loop escribiste un 1 pero en el segundo escribiste cero pensando que iba a salir, el codigo de arriba se devuelve al indice 1 donde el valor es 1 y por eso la condicion del while se cumple y no termina el programa
vector[1] =1
vector[2]=0
//tercero y mas importante, este codigo te deberia dar error ya que tienes un while en blanco porque has terminado con ;
//despues del do
//el while se deberia ver de esta manera
while (ulpos <= max) and (vector[ulpos] <> 0) do
begin
//aqui tu codigo
end;