Помощь - Поиск - Пользователи - Календарь
Полная версия: Смена шрифтов
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
NICOCO
Подскажите,
как заменить шрифт 8х16 из ПЗУ на свой, хранящийся в файле, для последующей работы в текстовом режиме?
Romtek
Unit Rus;

interface

implementation

Procedure SetUpFont(p : pointer);far;Assembler;
Asm
Mov Ax,1110h
Mov Bx,1000h
Mov Cx,100h
Xor Dx,Dx
Push Bp
Les Bp,P
Int 10h
Pop Bp
End;

var
BakExitProc : pointer;

Procedure ResetFonts;far;
begin
Asm
Mov Ax,1104h
Xor Bx,Bx
Int 10h
End;
ExitProc:=BakExitProc;
end;


{$L rus_8x16.obj}
procedure font;external;

begin
BakExitProc:=ExitProc;
ExitProc:=@ResetFonts;
setupfont(@font);
end.
NICOCO
Цитата(NICOCO @ 29.06.05 15:16)
Подскажите,
как заменить шрифт 8х16 из ПЗУ на свой, хранящийся в файле, для последующей работы в текстовом режиме?

Спасибо. Получилось почти сразу.
Правда, поскольку в программе неоднократно происходит переход в графический режим и обратно, то пришлось оператор SetupFont перенести в интерфейсную часть и вызывать его после каждого RestoreCRT.
Осталось только неясным, нужно ли при этом делать ResetFonts по выходе из текстового режима.
Но снова, спасибо.
Romtek
ResetFonts, как видно из кода инициализации модуля, вызывается по окончанию программы (т.е. автоматически).
Romtek
Там же можно увидеть инициализацию шрифта. Поэтому для смены режима ты должен сам позаботиться о повторной загрузке шрифта.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.