S3

Drivers for various video cards
  • Нужно либо использовать версию фасма (cтрого) до 1.61 либо заменить файл kglobals.inc на следующий:

    Code: Select all

    ;------------------------------------------------------------------
    ; 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.
  • Спасибо за информацию про fasm. Собрал - теперь вообще ничего не показывает, хотя аналогичное изменение (vesa12) на официальном ядре (menuetos.org) исправило все мои проблемы :(
  • Попробовал fasm160 - все равно не работает... Вижу лог загрузки, панель задач и черный квадрат (предположительно иконка). Но когда я беру официальное ядро, то Kolibri запускается, но очень криво (видимо несоответствие чего-то).
  • Плохо дело. Могу лишь предложить следующее - оставить в автозагрузке только @panel. После загрузки (знаю, что все будет выглядеть ужасно) запусти mfar или run (через меню) и запускай по очереди программы из автозагрузки в поисках проблемы.

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

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

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

    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: Select all

            | kmeaw | mike.dld
    --------------------------
    RANDBOX | 3220  | 3955
    RANDPUT | 7040  | 11185
    LIBTEST | 4850  | 5080
    in code we trust
  • halyavin wrote:Какова частота процессора, сколько оперативной памяти и как разбит винт? (возможно ОС повисла при определении разделов винта - этого кода нет в официальном ядре; если дело в этом, то нужно будет убрать из автозагрузки setup)

    PSPS Откуда инфа по переключению банков?
    233MMX, 32Mb RAM, винта нет вообще

    Инфа о переключении банков из XFree.
  • kmeaw
    В общем, на сегодня текущая версия файла Vesa12.inc является не рабочей. В следующий выпуск я включу файл, который был в Колибри2. Он хоть как-то работает, правда криво. Я сам не занимался видеодрайвером, потому здесь я не причем. Так как выяснил это я лишь недавно, когда у меня появилась инфа по Trident9440. Переключатель банков я сделал для него, но результат как у тебя. В старой версии файла он работает, но как уже писал криво.
  • Нашел баг в текущей версии vesa12.inc. Думаю, что в Kolibri 4.5 он будет исправлен.
  • У меня S3 Trio c 1 мегабайтом памяти. Какой именно чип не помню. Колибри 5.0.0.0 в 5-м режиме запускается, но вместо нижней части экрана снова появляется верхняя полоска. При движении курсора мыши по экрану бегают горизонтальные полосы. Скриншот здесь:
    http://e-al.narod.ru/vesa12.jpg
  • ealex
    У меня оно работало на S3 ViRGE PCI (325), на S3 Trio было так же как у тебя. Карточки по-разному программируются.
    Кстати в K0510 есть процедура для Trident 9440, естественно Trident'ы тоже по-разному программируются.
    Напиши полное название карточки, возможно смогу переделать функцию переключения банков. У меня некоторые доки есть.
  • S3 Trio64 (764)

    Кстати, какой бы видеорежим я не выбирал, у меня во врема загрузки пишется Глубина цвета: 32. Как это понимать?
  • ealex
    Так и понимай! У меня тоже было только 32 бита.
    Только на Vesa 2 у меня было 24 бита.
  • Я имел ввиду, что 32 появляется даже если выбран режим 9 или 0, где должно быть 256 и 16 цветов соответственно.
  • А это уже особенности реализации режимов 0 и 9. Для них, в принципе, 32 - это правильно, потому что при, например, вызове функции 1 (put pixel) аппроксимированного цвета пиксел рисуется на экран (смещение 0xA0000), а также (!!!) реальный цвет пиксела записывается в 32-битный буфер, под который отводится память. сделано это для того, чтобы например, получать из буфера реальный цвет пиксела при вызове функции получения цвета пиксела на экране (попробуй например, загрузиться в режиме 0 или 9 и программой VSCREEN сделать снимок экрана - получишь полноцветный битмап).
  • Who is online

    Users browsing this forum: No registered users and 1 guest