p bx
pop ax
db 0EAh; оптікод far jump
OldHandler09 dd? ; jump xxxx: yyyy
Quit:
in al, 61h; скидаємо контролер клавіатури
mov ah, al; і дозволяємо обробку слід. симв.
or al, 80h; клавіатура блокована?
out 61h, al; повідомляємо контролеру
xchg ah, al; знімаємо блокування
out 61h, al
mov al, 20h; дозвіл обробки апаратних переривань
out 20h, al; 8259А
pop es
pop ds
pop di
pop cx
pop bx
pop ax
iret
Hook09 endp
Hook10 proc far
cmp ah, 00h; функція зміна відеоpежіма
jne @ @ Quit; ні? передаємо управління старому обробникові
cmp al, 2; відеорежим 2 або 3? p> je @ @ myHook; так - обробляємо
cmp al, 3; 3 режим у обробці не потребує
jne @ @ Quit
@ @ myHook:
call iBIOS; викликаємо старий обробник
push ax
push cx
push ds
push si
mov ax, cs; встановлюємо DS
mov ds, ax; для адресації даних
mov al, 0; установки для
mov cl, 0FFh; виклику процедури
mov ch, 16; завантаження фонта
mov si, offset NewFont;
call LoadFont; завантажувати свій фонт
pop si
pop ds
pop cx
pop ax
iret
@ @ Quit:
call iBIOS
iret
Hook10 endp
iBIOS proc
pushf
db 09Ah ; Far call
OldHandler10 dd?
ret
iBIOS endp
; в”‚ Load Font в”‚
; в”‚ в”‚
; в”‚ завантажувати в знакогенеpатоp нові в”‚
; в”‚ обpазах символів. Використовуючи поpт, в”‚
; в”‚ вдається уникнути "деpганія" екрану в”‚
; в”‚ Вхід: в”‚
; в”‚ AL - номеp пеpвого символу в”‚
; в”‚ CL - кількість символів в”‚
; в”‚ CH - pазмеp символу в”‚
; в”‚ DS: SI - ваш буфеp обpазов в”‚
; в”‚ Вихід: немає в”‚
; в”‚ Разpушаемие регістри: немає в”‚
LoadFont proc
pushf
push ax
push cx
push dx
push si
push di
push es
mov di, 0A000h; зсув на початок видеобуфера
mov es, di; буде адресуватися через сегмент дод. даних
xor ah, ah; чистка
imul di, ax, 20h; ????????????? p> push ds
push si
mov si, cs;
mov ds, si; для адресації даних встановлюємо DS
lea si, WRITE_ON; на масив параметрів
push cx
call SetMode
pop cx
pop si
pop ds
mov dl, ch
xor ch, ch
xor dh, dh
@ @ All_symbols:
push cx
mov ax, di
mov cx, dx
shr cx, 1; cx/= 2
rep movsw
mov di, ax
add di, 20h
pop cx
loop @ @ All_symbols
lea si, WRITE_OFF
call SetMode
pop es
pop di
pop si ...