Не работает repeat...until

У меня в коде есть цикл repeat..until. Есть логическая переменная и переменная с ответом юзера. Проблема в том, что при введении любого ответа, кроме "да" (т.е. m := false), у меня происходит безобразие в консоли. А мне нужно просто "домучать" пользователя вопросами, чтобы он ввел "да". Как эту проблему можно исправить?

"Безобразие в консоли":

После ввода "нет" или "не знаю", эти сообщения у меня выводятся бесконечно и очень быстро. введите сюда описание изображения

Код:

uses crt;

var
  a: string;
  m: boolean;

procedure NewPage;
var
  i: integer;
begin
  for i := 1 to 60 do 
  writeln();
end;

begin
  writeln();
  repeat
    writeln('Вам предлагается пройти тест на тему: "Окружающий мир".');
    write('Вы готовы пройти этот тест? (да/нет/не знаю) -->> ');
    read(a);
    m := false;
    if a = 'да' then
    begin
      writeln('Прекрасно. Начинаем.');
      m := true;
    end
    else if a = 'нет' then
    begin
      writeln('А кого это волнует? (с) Наталья Михайловна');
      m := false;
    end
    else if a = 'не знаю' then
    begin
      writeln('"Не знаю" приравнивается к "нет", Вы знали об этом?');
      m := false;
    end
    else
      begin
      writeln();
      writeln('Внимательно посмотрите на варианты ответов и выберите тот, который предложен!');
      end;
  until m = true;

end.

Ответы (1 шт):

Автор решения: Igor
readln(a);
...
else
begin // !!!
  writeln();
  writeln('Внимательно посмотрите на варианты ответов и выберите тот, который предложен!');
end; // !!!
→ Ссылка