Резидентная программа - Turbo Pascal

Формулировка задачи:

Здравствуйте. Мне необходимо написать на паскале резидентную программу, которая по нажатию определенной клавиши перемешивала(или что-нибудь другое) буквы, находящиеся на экране. Подскажите, пожалуйста, с чего мне следует начать?

Код к задаче: «Резидентная программа - Turbo Pascal»

textual
{$M $2000, 0, 0 }   { 8 кб стек, без кучи }
Uses Crt, Dos;
Var  IntSave : procedure;
     x, y, AtrSim, sAtrSim: longint;
     key: byte;
 
{$F+}
{$R-}
Procedure KeyClick; Interrupt;
begin
     If ((Port[$60] = $22) and (mem[$40:$17] and 1 = 1)) or (key=1) then
     begin             { G + Shift }
          x:=Random(80);            { столбец* }
          y:=Random(25);                                   { строка* }
          AtrSim:=MemW[$B800:(y-1)*160+(x-1)*2];
          sAtrSim:=AtrSim;
          AtrSim:=(AtrSim and $FF00) or $20;       { заменим на пробел}
          MemW[$B800:(y-1)*160+(x-1)*2]:=AtrSim;   { и сотрем }
          inc(y);   { на сроку вниз }
          MemW[$B800:(y-1)*160+(x-1)*2]:=sAtrSim;
          key:=1;
     end;
 
     If ((Port[$60] = $21) and (mem[$40:$17] and 1 = 1)) or (key=0) then
     begin          { F + Shift }        { оставляем в памяти дальше }
          key:=0;
     end;
 
     If ((Port[$60] = $10) and (mem[$40:$17] and 1 = 1)) then
     begin         { Q + Shift }
          SetIntVec($9, @IntSave);
          InLine($C9);
          IntSave;   { старый вектор }
          Halt;      { снимаем резидент }
     end;
 
     InLine($9C); { запоминаем флаги в стеке }
 
     { Вызываем старый вектор }
     IntSave;
end;
{$R+}
{$F-}
 
begin
     Randomize;
     
     { сохраняем старый вектор }
     GetIntVec($9, @IntSave);
 
     { устанавливаем новый }
     SetIntVec($9, addr(KeyClick));
 
     { оставляем программу в памяти }
     Keep(0);
end.

8   голосов, оценка 3.625 из 5


СОХРАНИТЬ ССЫЛКУ