в борще работает, а в qemu нет. да собственно как и в других виртуалках.
Код:
initTTY:
pusha
mov esi, [videoModeInfo]
mov eax, dword [esi+28h]
mov [LFB], eax
mov edi, eax
mov al, [esi+19h]
cmp al, 24
jne @f
mov [bytesPerPixel], 3
mov [bytesPerLine], 3*800
jmp .detected
@@:
mov [bytesPerPixel], 4
mov [bytesPerLine], 4*800
.detected:
pushw 'W'
call putChar
popa
ret
putChar:
push ebp
mov ebp, esp
pusha
mov esi, font
movzx eax, word [ebp+8]
shl eax, 4
add esi, eax
mov ecx, 16
mov edx, [LFB]
mov eax, 0xFFFFFF
.lines:
mov bl, byte [esi]
push ecx
mov ecx, 8
mov edi, edx
.columns:
shl bl, 1
jnc @f
mov [edi], eax
@@:
add edi, [bytesPerPixel]
loop .columns
add edx, [bytesPerLine]
pop ecx
inc esi
loop .lines
popa
leave
ret 2
LFB dd ?
bytesPerPixel dd ?
bytesPerLine dd ?
tab db 4
backgroundColor db 0
simbolsColor db 1111b
cursorX dw 0
cursorY dw 0
font:
include 'font.inc'
проблема в следующем: имеются три типа режимов: 256 цветов, 64К и 16М. при включении режима в 256 цветов работают только 2 виртуалки: это борщ и кему. но у них есть какие-то глюке в выводе цветов. в борще выводится белый цвет, а в кему какой-то бело-синий. затем я решил заюзать TrueColor и 16М цветов. в борще сей код пашет а в Qemu нет, хотя видеорежим устанавливается.