Тексты программ __ 307

Putlmage(X-ddx,Y-ddy,P^,NotPut) ;

end end;

(Нажата кнопка: восстанавливаем экран} Putlmage (X-ddx,Y-ddy,P'',MormalPut);

FreeMem(P,sz);

GotoXY(60,25) ;

Write (' ') ;

GetMouseState(k,xx,yy); {k - нажатая кнопка) while MousePressed do; {Ждем отпускания} N := NY*16+NX;

Tab! := k=LeftButton;

ShowMouse;

MouseScreen (Освобождаем мышь} end; {Tab!} {——————}

Procedure ClearWE;

{Очищает рабочее поле} begin

ClearWinEd;

Putlmage (XR.YI^WR^NormalPut:) ;

NVecE := 0;

WidthX := 0 end;

{——————}

Procedure GetChar;

(Берет символ из таблицы} var

k: Integer;

N: Byte;

W,op: Word;

xx,yy: Shortint;

begin

if not Tab!(N) then

Exit; {Выход по правой кнопке} ClearWE; (Очищаем рабочее поле} PW := Chars[N]; (Адрес описателей} X := 0; (Начальные координаты пера} У := 0;

SetColor(Yellow) ;

SetWriteMode(XORPut) ;

(Цикл по командам} for k := 1 to LengD[N] div 2 do begin

H := PW[k]; (Очередное слово} op := W and $8080; {Код операции} W := W xor op;

xx := W and 127; (Координата Х} yy :=• W shr 8; {Координата Y} if yy>63 then yy := yy-128;

if op=$8080 then

begin (Команда чертить} inc(NVecE); (Колич.векторов} with VecE[NVecE] do

begin (Формируем новый вектор} XI := XE+X*DXE;

Yl :- YB-Y*DYE;

X2 := XE+xx*DXE;