Board.KolibriOS.org

Official KolibriOS board
It is currently Tue May 21, 2019 4:08 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
 Post subject: S3
PostPosted: Sat Aug 20, 2005 1:54 am 
Я решил запустить MeOS и посмотреть, что же это такое. К сожалению, на моем ноутбуке установлена видеокарточка S3, которая MeOS поддерживается криво :( Но я решил исправить это упущение :)

; set_bank modified by kmeaw
set_bank:
cli
cmp al,[0xfff2]
je retsb
mov [0xfff2],al
push ax
push dx
push cx
mov cl, al
mov dx, 0x3D4
mov al, 0x38
out dx, al
inc dx
mov al, 0x48
out dx, al
dec dx
mov al, 0x31
out dx, al
inc dx
in al, dx
dec dx
mov ah, al
mov al, 0x31
out dx, ax
mov al, ah
or al, 9
inc dx
out dx, al
dec dx
mov al, 0x35
out dx, al
inc dx
in al, dx
dec dx
and al, 0xF0
mov ch, cl
and ch, 0x0F
or ch, al
mov al, 0x35
out dx, al
inc dx
mov al, ch
out dx, ax
dec dx
mov al, 0x51
out dx, al
inc dx
in al, dx
dec dx
and al, 0xF3
shr cl, 2
and cl, 0x0C
or cl, al
mov al, 0x51
out dx, al
inc dx
mov al, cl
out dx, al
dec dx
mov al, 0x38
out dx, al
inc dx
xor al, al
out dx, al
dec dx
pop cx
pop dx
pop ax
retsb:
sti
ret

А теперь вопрос: как собрать ядро Kolibri4 fasm`ом? Он ругается на отсутствие (undefined) servetable в KERNEL.ASM:92.
kmeaw$ fasm -V
flat assembler version 1.64
Собираю из под Linux.


Top
   
 Post subject:
PostPosted: Sat Aug 20, 2005 7:20 am 
Нужно либо использовать версию фасма (cтрого) до 1.61 либо заменить файл kglobals.inc на следующий:
Code:
;------------------------------------------------------------------
; use "iglobal" for inserting initialized global data definitions.
;------------------------------------------------------------------
macro iglobal {
  IGlobals equ IGlobals,
  macro __IGlobalBlock { }

;-------------------------------------------------------------
; use 'uglobal' for inserting uninitialized global definitions.
; even when you define some data values, these variables
; will be stored as uninitialized data.
;-------------------------------------------------------------
macro uglobal {
  UGlobals equ UGlobals,
  macro __UGlobalBlock { }

endg fix }      ; Use endg for ending iglobal and uglobal blocks.

macro IncludeIGlobals{
  macro IGlobals dummy,[n] \{ __IGlobalBlock
     purge __IGlobalBlock  \}
  match I, IGlobals \{ I \} }


macro IncludeUGlobals{
  macro UGlobals dummy,[n] \{
    \common
      \local begin, size
      begin = $
      virtual at $
    \forward
      __UGlobalBlock
      purge __UGlobalBlock
    \common
      size = $ - begin
    end virtual
    rb size
  \}
  match U, UGlobals \{ U \} }

macro IncludeAllGlobals {
  IncludeIGlobals
  IncludeUGlobals
}
 
iglobal
endg

uglobal
endg

Причина этого в том, что версии fasm'a после 1.61 не являются обратно совместимыми с 1.60.


Top
   
 Post subject:
PostPosted: Sat Aug 20, 2005 10:54 am 
Спасибо за информацию про fasm. Собрал - теперь вообще ничего не показывает, хотя аналогичное изменение (vesa12) на официальном ядре (menuetos.org) исправило все мои проблемы :(


Top
   
 Post subject:
PostPosted: Sat Aug 20, 2005 11:21 am 
Попробовал fasm160 - все равно не работает... Вижу лог загрузки, панель задач и черный квадрат (предположительно иконка). Но когда я беру официальное ядро, то Kolibri запускается, но очень криво (видимо несоответствие чего-то).


Top
   
 Post subject:
PostPosted: Sat Aug 20, 2005 3:18 pm 
Плохо дело. Могу лишь предложить следующее - оставить в автозагрузке только @panel. После загрузки (знаю, что все будет выглядеть ужасно) запусти mfar или run (через меню) и запускай по очереди программы из автозагрузки в поисках проблемы.

PS Если видна панель задач (снизу) - значит твой код работает. Если банки не переключаются, то все изображение сконцентрировано на небольшой верхней полоске. (Для справки: если мигают часы, значит система не зависла; если двигается мышь, значит не зависла основная задача ОС.)

Какова частота процессора, сколько оперативной памяти и как разбит винт? (возможно ОС повисла при определении разделов винта - этого кода нет в официальном ядре; если дело в этом, то нужно будет убрать из автозагрузки setup)

PSPS Откуда инфа по переключению банков?


Top
   
 Post subject:
PostPosted: Sun Aug 21, 2005 2:48 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Code:
set_bank: ; S3
        cli
        cmp     al,[0xfff2]
        je      .exit
        mov     [0xfff2],al
        push    eax edx

        mov     ah,al
; unlock S3 registers
        mov     dx,3D4h
        mov     al,38h
        out     dx,al
        inc     edx
        mov     al,48h
        out     dx,al
        dec     edx
        mov     al,39h

        out     dx,al
        inc     edx
        mov     al,0A5h
        out     dx,al
; do the bank-switch
        mov     dx,3D4h
        mov     al,35h
        out     dx,al
        inc     edx
        in      al,dx
        and     al,0F0h
        or      al,ah
        out     dx,al

        pop     edx eax
  .exit:
        sti
        ret


Code:
        | kmeaw | mike.dld
--------------------------
RANDBOX | 3220  | 3955
RANDPUT | 7040  | 11185
LIBTEST | 4850  | 5080

_________________
in code we trust


Top
   
 Post subject:
PostPosted: Wed Aug 24, 2005 1:04 am 
halyavin wrote:
Какова частота процессора, сколько оперативной памяти и как разбит винт? (возможно ОС повисла при определении разделов винта - этого кода нет в официальном ядре; если дело в этом, то нужно будет убрать из автозагрузки setup)

PSPS Откуда инфа по переключению банков?


233MMX, 32Mb RAM, винта нет вообще

Инфа о переключении банков из XFree.


Top
   
 Post subject:
PostPosted: Thu Sep 01, 2005 3:15 pm 
kmeaw
В общем, на сегодня текущая версия файла Vesa12.inc является не рабочей. В следующий выпуск я включу файл, который был в Колибри2. Он хоть как-то работает, правда криво. Я сам не занимался видеодрайвером, потому здесь я не причем. Так как выяснил это я лишь недавно, когда у меня появилась инфа по Trident9440. Переключатель банков я сделал для него, но результат как у тебя. В старой версии файла он работает, но как уже писал криво.


Top
   
 Post subject:
PostPosted: Fri Sep 23, 2005 12:33 pm 
Нашел баг в текущей версии vesa12.inc. Думаю, что в Kolibri 4.5 он будет исправлен.


Top
   
 Post subject:
PostPosted: Mon Oct 24, 2005 6:39 pm 
Offline

Joined: Sun Jun 19, 2005 7:08 pm
Posts: 41
У меня S3 Trio c 1 мегабайтом памяти. Какой именно чип не помню. Колибри 5.0.0.0 в 5-м режиме запускается, но вместо нижней части экрана снова появляется верхняя полоска. При движении курсора мыши по экрану бегают горизонтальные полосы. Скриншот здесь:
http://e-al.narod.ru/vesa12.jpg


Top
   
 Post subject:
PostPosted: Mon Oct 24, 2005 9:54 pm 
ealex
У меня оно работало на S3 ViRGE PCI (325), на S3 Trio было так же как у тебя. Карточки по-разному программируются.
Кстати в K0510 есть процедура для Trident 9440, естественно Trident'ы тоже по-разному программируются.
Напиши полное название карточки, возможно смогу переделать функцию переключения банков. У меня некоторые доки есть.


Top
   
 Post subject:
PostPosted: Mon Oct 24, 2005 10:38 pm 
Offline

Joined: Sun Jun 19, 2005 7:08 pm
Posts: 41
S3 Trio64 (764)

Кстати, какой бы видеорежим я не выбирал, у меня во врема загрузки пишется Глубина цвета: 32. Как это понимать?


Top
   
 Post subject:
PostPosted: Tue Oct 25, 2005 5:52 pm 
ealex
Так и понимай! У меня тоже было только 32 бита.
Только на Vesa 2 у меня было 24 бита.


Top
   
 Post subject:
PostPosted: Wed Oct 26, 2005 11:59 am 
Offline

Joined: Sun Jun 19, 2005 7:08 pm
Posts: 41
Я имел ввиду, что 32 появляется даже если выбран режим 9 или 0, где должно быть 256 и 16 цветов соответственно.


Top
   
 Post subject:
PostPosted: Wed Oct 26, 2005 12:44 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
А это уже особенности реализации режимов 0 и 9. Для них, в принципе, 32 - это правильно, потому что при, например, вызове функции 1 (put pixel) аппроксимированного цвета пиксел рисуется на экран (смещение 0xA0000), а также (!!!) реальный цвет пиксела записывается в 32-битный буфер, под который отводится память. сделано это для того, чтобы например, получать из буфера реальный цвет пиксела при вызове функции получения цвета пиксела на экране (попробуй например, загрузиться в режиме 0 или 9 и программой VSCREEN сделать снимок экрана - получишь полноцветный битмап).


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited