Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт апр 27, 2017 9:56 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 22 сообщения ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: S3
СообщениеДобавлено: Сб авг 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.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 20, 2005 7:20 am 
Нужно либо использовать версию фасма (cтрого) до 1.61 либо заменить файл kglobals.inc на следующий:
Код:
;------------------------------------------------------------------
; 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.


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


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


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

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

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

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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 21, 2005 2:48 pm 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 690
Код:
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


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

_________________
in code we trust


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 24, 2005 1:04 am 
halyavin писал(а):
Какова частота процессора, сколько оперативной памяти и как разбит винт? (возможно ОС повисла при определении разделов винта - этого кода нет в официальном ядре; если дело в этом, то нужно будет убрать из автозагрузки setup)

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


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

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


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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 23, 2005 12:33 pm 
Нашел баг в текущей версии vesa12.inc. Думаю, что в Kolibri 4.5 он будет исправлен.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 24, 2005 6:39 pm 
Не в сети

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


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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 24, 2005 10:38 pm 
Не в сети

Зарегистрирован: Вс июн 19, 2005 7:08 pm
Сообщения: 41
S3 Trio64 (764)

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 25, 2005 5:52 pm 
ealex
Так и понимай! У меня тоже было только 32 бита.
Только на Vesa 2 у меня было 24 бита.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 26, 2005 11:59 am 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 26, 2005 12:44 pm 
Не в сети
Site Founder
Аватара пользователя

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 22 сообщения ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB