графическая консоль

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-18 23:33:21

обновил

paradox.lissyara.su/syscons.c.diff

если что попробуй его протолкнуть за xemu86
вдруг примут))

вообще я так подумал
графическую консоль мало кто когда юзал в бсд
и щас тяжело будет протокнуть любой патч
потому как там могут появиться разные глюки ввиде тех что щас с переключением

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-18 23:36:53

вприпципе можно еще поменять название переменной
SC_VESA800X600
на например
SC_GRBOOTLOG

в .h файле и сдесь
что бы по смыслу подходило

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-18 23:41:26

кстати
попробуй через svn
сделать откаты по тому что делал ed@ для syscons/ и fb/
и уловить где именно глюк с переключением
тогда можно будет отписать ему что бы принял к сведению

>terminus
он тебе что то ответил?

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-18 23:49:24

paradox писал(а):если что попробуй его протолкнуть за xemu86
вдруг примут))
патчики причесывал пока в основном только для себя. Ну и плюс комментарии в коммиттах (локальных) добавил на основе твоих. К тому же остался не решенным вопрос что делать с приложениями/библиотеками, использующими /usr/include/machine/pc/vesa.h. Не знаю стоит ли добавлять хак в src/include/Makefile чтобы он инсталил vesa.h в machine/pc или нет.
paradox писал(а):обновил

paradox.lissyara.su/syscons.c.diff
ок, перетащил комментарий на новый патчик

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-18 23:54:09

Не знаю стоит ли добавлять хак в src/include/Makefile чтобы он инсталил vesa.h в machine/pc или нет.
в src/include
ненадо
vesa.h используеться токо в ядре
и потом
каким то чудесным образом vesa.h помоему и так появляеться в machine/pc/vesa.h

ну так отправляй )) вдруг примут

покрайней мере на xemu86

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-18 23:58:52

paradox писал(а):и потом
каким то чудесным образом vesa.h помоему и так появляеться в machine/pc/vesa.h
я же уже говорил, что все хедеры из sys/${MACHINE}/include/pc копируются в /usr/include/machine/pc/. Так вот <machine/pc/vesa.h> существует только на i386. Точнее существовал, после перетаскивания он более не появляется и на i386.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:00:22

емм
какого перетаскивания?
ты его в fb/ перетянул?

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 0:07:16

paradox писал(а):емм
какого перетаскивания?
ты его в fb/ перетянул?
ну да, или ты не смотрел третий патчик?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:15:14

уже все посмотрел

кстати там у меня были мысли нужно проверять emumem = pmap_mapbios
на нулевой указатель или нет
и вслучае чего делать return

но учитывая что делал для себя)) то мне было пофиг

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:17:44

еще вот это сомнительное место

Код: Выделить всё

@@ -1088,7 +1153,7 @@ vesa_set_mode(video_adapter_t *adp, int mode)
        } else {
                vesa_adp->va_buffer = 0;
                vesa_adp->va_buffer_size = info.vi_buffer_size;
-               vesa_adp->va_window = BIOS_PADDRTOVADDR(info.vi_window);
+               vesa_adp->va_window = (emumem+L_ADD(info.vi_window));
                vesa_adp->va_window_size = info.vi_window_size;
                vesa_adp->va_window_gran = info.vi_window_gran;
        }
скорее всего там
vesa_adp->va_window = info.vi_window;

но опять же не уверен
а что бы проверять нужно думать...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:21:30

Код: Выделить всё

#define VESA_VM86_BUFSIZE      (3 * PAGE_SIZE)
...
...

 static int
 vesa_bios_save_restore(int code, void *p, size_t size)
 {
-       struct vm86frame vmf;
        u_char *buf;
        int err;

-       if (size > VESA_VM86_BUFSIZE)
-               return (1);
+       vesa_emu.x86.R_EAX = 0x4f04;
вот эту проверку верни
токо переименуй на VESA_X86EMU_BUFSIZE

мне было лениво ее обратно расскоментить

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:23:34

#define B_O16(x) (x)
#define B_O32(x) (x)
токо для LITTLE_ENDIAN
для BIG нужно по другому
так что если есть желание сделать так как надо
возьми с xorg
это в Xserver/hw/ где то определения лежат

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:29:42

0006-add-support-to-enter-graphics-mode-early-at-boot.patch
в этом патче в комментариях можешь добавить
что он фиксит текст(font) в граффике на корректность данных

если не убрать COL ROW на нули
и не пофиксить ниже scp->font_*
то текста на консоли не будет
более того
vidcontorl будет падать с ошибкой деления на нуль
потому что данные неккоретно заполнены в ядре

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 0:41:51

paradox писал(а):если не убрать COL ROW на нули
и не пофиксить ниже scp->font_*
то текста на консоли не будет
в какой момент не будет? че-то я не очень понял при каких условиях появляется бяка

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:46:46

Гость писал(а):
paradox писал(а):если не убрать COL ROW на нули
и не пофиксить ниже scp->font_*
то текста на консоли не будет
в какой момент не будет? че-то я не очень понял при каких условиях появляется бяка
бяка уже есть
перавый фикс токо расширяет что бы можно было задавать граф мод с flags
а сам глюк через который у тебя закомментирован давно 0x180 флаг
как раз и фикситься всем остальным


кстати имея емулятор в бсд
можно пофиксить многие моменты
например

Код: Выделить всё

8.0\src\sys\dev\atkbdc\atkbd.c 
/* local functions */

static int
get_typematic(keyboard_t *kbd)
{
#ifdef __i386__
        /*
         * Only some systems allow us to retrieve the keyboard repeat
         * rate previously set via the BIOS...
         */
        struct vm86frame vmf;
        u_int32_t p;

        bzero(&vmf, sizeof(vmf));
        vmf.vmf_ax = 0xc000;
        vm86_intcall(0x15, &vmf);

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 0:55:35

paradox писал(а):кстати имея емулятор в бсд
можно пофиксить многие моменты
например

8.0\src\sys\dev\atkbdc\atkbd.c
это касается только amd64 или есть еще какие-то ахритектуры, где x86emu бы пригодился?

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 0:57:46

paradox писал(а):

Код: Выделить всё

-       if (size > VESA_VM86_BUFSIZE)
-               return (1);
+       vesa_emu.x86.R_EAX = 0x4f04;
и
paradox писал(а):

Код: Выделить всё

#define B_O16(x) (x)
#define B_O32(x) (x)
уже засунул в четвертый патчик

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 0:58:33

да вот незнаю
теоретически может еще на i64 быть
но не уверен

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 1:04:27

vesa_fix_ptr

эту функцию полностью можешь удалить она больше не испольуеться

Код: Выделить всё

+	emumem = pmap_mapbios(0x0, 0xc00000);
сюда добавь комментарий
нужна ли проверка на ноль

Код: Выделить всё

+
+/* hack taken from ISA */
+#define IO_CGA		0x3D0	/* CGA Ports */
+#define IO_MDA		0x3B0	/* Monochome Adapter */
эти два регистра убери
и добавь инклуде выше


X:\work\cvsup\freebsd\8.0\src\sys\amd64\isa\isa.h
X:\work\cvsup\freebsd\8.0\src\sys\i386\isa\isa.h

как machine/isa/

или как isareg
X:\work\cvsup\freebsd\8.0\src\sys\isa\isareg.h

на свое усмотрение

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 1:25:44

кстати кажись глюк сисконса можно повысить режим разрешения
но нельзя потом его понизить
тоесть можно поднять до 1024x768
но уменьшить потом до 800x600
имею такой же глюк как и если с 800x600 понижаю до MODE_24

на 7 такого глюка нет

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 1:28:36

paradox писал(а):эту функцию полностью можешь удалить она больше не испольуеться

Код: Выделить всё

+	emumem = pmap_mapbios(0x0, 0xc00000);
сюда добавь комментарий
нужна ли проверка на ноль
проверка emumem на ноль?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 1:30:26

проверка emumem на ноль?
ага


зы
надо будет сделать дифф на этот teken
и попробовать портировать syscons в дифах с 7 на 8
если все будет работать
то блаблабла

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 1:33:00

да
точно
глюк с MODE_24 на графическом режиме
это глюк с понижением разрешения от исходного

попробуй у себя
переключи на 1024x768x32
а поом обратно на 800x600x32
у меня фризи сразу системы

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-08-19 1:43:47

paradox писал(а):еще вот это сомнительное место

Код: Выделить всё

@@ -1088,7 +1153,7 @@ vesa_set_mode(video_adapter_t *adp, int mode)
        } else {
                vesa_adp->va_buffer = 0;
                vesa_adp->va_buffer_size = info.vi_buffer_size;
-               vesa_adp->va_window = BIOS_PADDRTOVADDR(info.vi_window);
+               vesa_adp->va_window = (emumem+L_ADD(info.vi_window));
                vesa_adp->va_window_size = info.vi_window_size;
                vesa_adp->va_window_gran = info.vi_window_gran;
        }
скорее всего там
vesa_adp->va_window = info.vi_window;

но опять же не уверен
а что бы проверять нужно думать...
только что попробовал

Код: Выделить всё

@@ -1163,7 +1160,7 @@ vesa_set_mode(video_adapter_t *adp, int mode)
        } else {
                vesa_adp->va_buffer = 0;
                vesa_adp->va_buffer_size = info.vi_buffer_size;
-               vesa_adp->va_window = (emumem+L_ADD(info.vi_window));
+               vesa_adp->va_window = info.vi_window;
                vesa_adp->va_window_size = info.vi_window_size;
                vesa_adp->va_window_gran = info.vi_window_gran;
        }
и никаких негативных эффектов не заметил при переключении режимов.
paradox писал(а):попробуй у себя
переключи на 1024x768x32
а поом обратно на 800x600x32
у меня фризи сразу системы
у мя этот баг удалось воспроизвести всего два раза, пару дней назад, когда я только начинал пробовать твой драйвер. Сейчас не получаяется: переключение с 1600x1200x32 на 800x600x32 проходит нормально. ЕМНИП, с 1024x768x32 тоже не было проблем.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-08-19 1:49:09

- vesa_adp->va_window = (emumem+L_ADD(info.vi_window));
+ vesa_adp->va_window = info.vi_window;
оно проявляеться в других режимах которые есть на i386
там plan режими кажись
на amd64 все линерал фрейм буффер
у мя этот баг удалось воспроизвести всего два раза, пару дней назад, когда я только начинал пробовать твой драйвер. Сейчас не получаяется: переключение с 1600x1200x32 на 800x600x32 проходит нормально. ЕМНИП, с 1024x768x32 тоже не было проблем.
если хватит желания
может портирую с 7 syscons без teken
и посмотрю будет глючить или нет