Page 49 of 77

Re: Помогите новичку

Posted: Sun Mar 24, 2013 9:51 pm
by 0CodErr
Попробовал выводить изображение в память, которая по адресу FE000000h. Проблемы прибавились.

Остаются артефакты после мышиного указателя:
Spoiler:Image
А это при запуске программы:
Spoiler:Image
Проверял в VirtualBox и в Bochs.

Как же тогда тут быть?

Re: Помогите новичку

Posted: Sun Mar 24, 2013 9:58 pm
by Mario_r4
0CodErr wrote:Попробовал выводить изображение в память, которая по адресу FE000000h. Проблемы прибавились.
1) Да, но зачем?
2) Код курсора в ядре каким чудом узнает, что "картинка ожила"?
0CodErr wrote:Как же тогда тут быть?
Пользоваться функциями ядра для вывода, НЕ?

Re: Помогите новичку

Posted: Sat Mar 30, 2013 4:21 pm
by neyro
Люди, кто подскажет как заставить нашу "птичку" видеть на машине ещё что нибудь кроме внутреннего пространства образа. Я имею ввиду винты, сидюки и флешки? Уж больно хоттца её полноценной осью видеть. Помогите.

Re: Помогите новичку

Posted: Sat Mar 30, 2013 4:33 pm
by Leency
Какая конфигурация компьютера? Пункт "b" на голубом экране включён?

Re: Помогите новичку

Posted: Sat Mar 30, 2013 8:06 pm
by Akyltist
скромный вопрос, равносильно ли вот такое объявление:

Code: Select all

str_table   dd 1024 dup (0)
вот такому:

Code: Select all

    mov     eax,68
    mov     ebx,11
    int     0x40
    mov     eax,68
    mov     ebx,12
    mov     ecx,4096
    int     0x40
    mov     [str_table],eax
...
...
str_table   dd 0
если нет, то в чём разница?

Re: Помогите новичку

Posted: Sat Mar 30, 2013 8:22 pm
by SoUrcerer
Не равносильно. В первом случае память выделяется сразу, и выравнивать адреса нужно вручную. Во втором случае начало адреса будет выравнено на 4к - но память будет выделена блоками по 4 Кб. Если в программе много malloc/realloc, то, вангую, будет не очень хорошо.

Re: Помогите новичку

Posted: Sat Mar 30, 2013 8:26 pm
by Akyltist
SoUrcerer wrote:то, вангую, будет не очень хорошо.
вот с этим и столкнулся, хотел сделать динамическое выделение строк, но первым способом объявления, дюжит дольше (таблица указателей под динамически выделенные строки), а вот во второй раз уже держит меньше. Будем разбираться как поступить.

Re: Помогите новичку

Posted: Mon Apr 01, 2013 3:29 am
by Leency
Для чего функция 53.11 "Прочитать данные сетевого стека"? Сейчас всё чтение данных из сокета в Liza идёт через 53.3 "Прочитать байт из сокета".
Spoiler:Я пока ещё очень слаб в сетях, моим проводником в них был Дима и о 53.11 я даже не догадывался, пока esevece не добавил эту функцию в один из включаемых файлов C-- (O_o)

Re: Помогите новичку

Posted: Mon Apr 01, 2013 7:31 am
by Mario_r4
Мде... прямо ф.35 и ф.36 или как PIO и DMA доступ к жесткому диску.
Скорость считывания данных на порядок выше будет, если ф.53.11 вместо ф.53.3 использовать.

Re: Помогите новичку

Posted: Thu Apr 04, 2013 3:52 am
by Leency
Зачем нужна "Функция 68, подфункция 1 - переключиться на следующий поток выполнения." и где её следует применять?

Re: Помогите новичку

Posted: Thu Apr 04, 2013 7:56 am
by Mario_r4
Ее можно применять если нужен опрос чего-либо в цикле. Заменяет ф.5 по сути в этом случае. Ну, или программе нечего делать и она может отдать свое время другим потокам.

Re: Помогите новичку

Posted: Thu Apr 04, 2013 4:16 pm
by Leency
Не совсем понял зачем оно. То есть программа засыпает пока окно неактивно? И выполнение продолжается, когда окно активируется?
Видел эту функцию где-то в коде перед запуском нового потока.

Re: Помогите новичку

Posted: Thu Apr 04, 2013 4:24 pm
by SoUrcerer
Нет же. Просто если твоя программа уже сделала всё, что должна была, и видит, что нет никаких событий, которые нужно обработать - то она просто передает управление другим программам.

Re: Помогите новичку

Posted: Sat Apr 06, 2013 2:28 am
by Leency
Пытаюсь разобраться в функции 4, пишущей прямиком в память. Выходит кривая чёрная полоса.

Code: Select all

	w = strlen(#text)*6;
	mem = malloc(w*9*4);
	for (i=0; i<w*9*4; i++) ESBYTE[mem+i]=0xFF; //делаем фон белым

	$mov eax, 4
	$mov ebx,0 << 16+0
	$mov ecx,0x88000000
	$mov edi, mem
	$mov edx, #text
	$int 0x40

	PutPaletteImage(mem,w,9,100,100,32,0); //рисуем, 32 - глубина цвета

Re: Помогите новичку

Posted: Sat Apr 06, 2013 8:53 am
by Artyom
Leency wrote:Пытаюсь разобраться в функции 4, пишущей прямиком в память. Выходит кривая чёрная полоса.

Code: Select all

	w = strlen(#text)*6;
	mem = malloc(w*9*4);
	for (i=0; i<w*9*4; i++) ESBYTE[mem+i]=0xFF; //делаем фон белым

	$mov eax, 4
	$mov ebx,0 << 16+0
	$mov ecx,0x88000000
	$mov edi, mem
	$mov edx, #text
	$int 0x40

	PutPaletteImage(mem,w,9,100,100,32,0); //рисуем, 32 - глубина цвета
А что за строка text и зачем её размер умножать на 6?