CGA: H := 8;

EGA: H := 14;

VGA: H := 16;

else

H := 8;

end;

fРезервируем нужную динамическую память и открываем файл с именем "BxH.fnt", где H - высота шрифта} GetMem(P,256*H) ;

Str(H,S);

s := '8x4-s+' .fnt';

Assign(F,S) ;

Rewrite(F,1) ;

{Определяем начальные координаты для эхо-повтора} ХО := 0;

YO := 20;

{Направляем текстовый вывод в верхний левый угол} GotoXY(l,l) ;

{Основной цикл создания побитовых образов символов} for k := 0 to 255 do begin

{Выводим очередной символ средствами прерывания $10, функция $А (вывод символа без атрибутов)} with Reg do begin

ah := $A;

al := k;

bh := 0;

ex : = 1 ;

Intr($lO,Reg) end;

{Сканируем созданное изображение слева-направо-сверху-вниз} for Y :» 0 to H-1 do begin

В := 0; {Начальное значение очередного байта} for Х := 0 to 7 do if GetPixel(X,Y)<>GetBkColor then begin

{Формируем байт шрифта} В := В or (128 shr X) ;

{Гасим символ в левом верхнем углу экрана} PutPixel(X,Y,GetBkColor) ;

{И повторяем его ниже} PutPixel(XO+X,YO+Y,White) end;

P'"[k*H+Y] := В {Запоминаем байт} end;

(Сдвигаем место эхо-повтора символов}