Есть две народные мудрости: «Торопиться надо только в 3-х случаях» (кому надо знают в каких) и «Поспешай медленно…».
Я, конечно, не отрицаю и еще одну народную мудрость: «… в своем глазу бревно не замечает», но речь сейчас не обо мне.
Итак, имеем следующие пункты:
1. За особые заслуги FASM арестовали и посадили на неопределенный срок в DEVELOP. Об этом узнали Tinypad'ы и решили больше с ним не общаться. В результате пострадали все простые исходники, которым больше не суждено стать бинарниками.
2. Ядро, находящееся на SVN не является совместимым с этим дистрибутивом, надо вносить корректировки.
3. Наблюдается пропадание реакции на клавиши стрелок в KFAR, чаще всего это происходит, если много раз запускать AC97SND через него.
4. Самый простой способ завесить систему запустить проигрывание музыки через AC97SND и запустить Quake. Зависание мертвое. При обратной комбинации (сначала Quake, потом AC97SND) все работает без проблем.
5. Чем и как сжимать ядро? Про это нигде не написанов в дистрибутиве. Без сжатия для него нет места в образе, и приходится удалять не нужные приложения, например игру FARA.
6. Файл svn_log.txt - для ревизии r149.
7. Как в списки программистов попал Victor? Я ничего против не имею, но хотелось бы знать за что? Нигде нет упоминания об этом.
8. На
http://meos32.7.forumer.com/ ничего нет.
Еще у меня есть код, который я написал еще до того как начал писать DMA для винта, сглаживающий изображение. Не бог весть что, и из говна конфетку не сделает (кстати, в образе слишком сильно сжатая картинка), но все же помогает. Лучше не использовать для слабых комперов. Код только для Vesa2 и выше. В свое время у меня просто руки не дошли выложить.
Надо заменить в vesa20.inc
sdp3: ; MAIN LOOP
cmp [edi+WinMapAddress],byte 1 ; ptrBuffer^<>byte(1)
jne snbgp
push eax
push ebx
mov eax,dword [WinMapAddress-8]
imul eax, [esp+4] ;4
xor edx,edx
mov ebx,[ScreenWidth]
div ebx
mov cx,dx
lea esi,[eax+eax*2]
mov eax,dword [WinMapAddress-4]
imul eax, [esp+0] ;0
xor edx,edx
mov ebx,[ScreenHeight]
div ebx
shl ecx,16
mov cx,dx
imul eax, [esp+8] ;8
add esi,eax
mov eax,[esi+0x300000]
push eax
ror ecx,16
xor eax,eax
mov ax,cx
shl eax,1 ; умножение на 2
lea eax,[eax+eax*4] ; умножение на 5
xor edx,edx
mov ebx,[ScreenWidth]
div ebx
cmp eax,5
pop eax
jb @f
mov ebx,[esi+0x300000+3]
call overlapping_of_points
@@:
push eax
ror ecx,16
xor eax,eax
mov ax,cx
shl eax,1 ; умножение на 2
lea eax,[eax+eax*4] ; умножение на
xor edx,edx
mov ebx,[ScreenHeight]
div ebx
cmp eax,5
pop eax
jb @f
mov ebx,[display_data-8]
shl ebx,1
add ebx,[display_data-8]
add ebx,0x300000
add ebx,esi
mov ebx,[ebx]
call overlapping_of_points
@@:
and eax,0xffffff
xchg edi, ebp
stosw
shr eax,16
stosb
xchg ebp, edi ; ebp+=3
cmp [ScreenBPP],byte 24 ; 24 or 32 bpp ? - x size
jz @f
inc ebp ; +1
@@:
pop ebx
pop eax
jmp shook1
И еще добавить:
overlapping_of_points:
push ecx edi
mov ecx,eax
mov edx,ebx
xor eax,eax
mov al,cl
xor ebx,ebx
mov bl,dl
add eax,ebx
rcr eax,1
xor edi,edi
mov di,ax
xor eax,eax
mov al,ch
xor ebx,ebx
mov bl,dh
add eax,ebx
rcr eax,1
ror edi,8
add edi,eax
ror ecx,8
ror edx,8
xor eax,eax
mov al,ch
xor ebx,ebx
mov bl,dh
add eax,ebx
rcr eax,1
ror edi,8
add eax,edi
ror eax,16
pop edi ecx
ret