Page 62 of 77
Re: Помогите новичку
Posted: Tue Nov 12, 2013 1:46 am
by Leency
Заменил
Code: Select all
mov eax, 68
mov ebx, 12
mov ecx, [fsize]
int 0x40 ; -> allocate memory for file
mov [fptr], eax ; -> eax = pointer to allocated mem
mov eax, 70
mov ebx, file_info
mov dword[ebx],0
int 0x40 ; -> read file
mov [fsize],ebx
на
Code: Select all
mov eax, 68
mov ebx, 27
mov ecx, [file_name]
int 0x40
mov [fsize],ebx
В итоге, не работает. Что я делаю не так? Нужна инициализация кучи и malloc для 68.12 ?
Re: Помогите новичку
Posted: Tue Nov 12, 2013 1:52 am
by GerdtR
А в [file_name] хранится указатель на начало строки с именем? Или это первый байт имени?
Re: Помогите новичку
Posted: Tue Nov 12, 2013 2:23 am
by 0CodErr
Возвращаемое значение:
* eax = указатель на загруженный файл или 0
* edx = размер загруженного файла или 0
Leency wrote:Код:
mov eax, 68
mov ebx, 27
mov ecx, [file_name]
int 0x40
mov [fsize],ebx
Re: Помогите новичку
Posted: Tue Nov 12, 2013 10:37 am
by Leency
Spoiler:

Спасибо.
Re: Помогите новичку
Posted: Tue Nov 12, 2013 2:15 pm
by CleverMouse
Leency wrote:Кто-то может объяснить, что делает эта функция? Чем она отличается от "70.0 - чтение файла с поддержкой длинных имён"? Тем, что во время загрузки файла может его распаковать?
Это костыль от
Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.
Re: Помогите новичку
Posted: Tue Nov 12, 2013 2:27 pm
by Leency
>> в частности, блокирует запуск упакованных программ.
Нужно пофиксить.
На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.
Re: Помогите новичку
Posted: Tue Nov 12, 2013 2:47 pm
by CleverMouse
Leency wrote:>> в частности, блокирует запуск упакованных программ.
Нужно пофиксить.
На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.
Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.
Re: Помогите новичку
Posted: Fri Nov 15, 2013 9:24 pm
by Serge
CleverMouse wrote:Это костыль от Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.
Это даже не серьёзно. Никаких параллельных распаковок в ядре нет, код распаковщика блокируется мьютексом. Продолжительность блокировки равна продолжительности распаковки. load_file_umode калька с load_file. С таким же основанием можно жаловаться на то, что запуск одной упакованной программы или драйвера или загрузка библиотеки блокирут запуск других упакованных программ драйверов и библиотек.
CleverMouse wrote:Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.
Это не костыль под загрузку PE из user-mode. Функциональность - загрузка файлов с распаковкой есть в ядре уже 7 лет. Зачем от неё отказываться ? Если следовать этой логике, надо вернуться с самораспаковывающимся приложениям ?
Re: Помогите новичку
Posted: Fri Nov 15, 2013 10:11 pm
by 0CodErr
Вот здесь
http://websvn.kolibrios.org/filedetails ... c&peg=4181 есть такие строки:
Code: Select all
add ax, 23 ; mouse cursor Y size
; ......................................
add ax, 15 ; mouse cursor X size
Откуда эти значения?
Re: Помогите новичку
Posted: Sat Nov 16, 2013 12:02 am
by lev
Похоже на живущий в ...\svn\kolibri\kernel\trunk\gui\mousepointer.inc курсор размером 16х24 без единичек.
Re: Помогите новичку
Posted: Wed Nov 20, 2013 8:19 pm
by 0CodErr
Serge wrote:Цитата:
Тогда остается предположение, что количество порожденных потоков на родительский поток величина конечная
Таких ограничений нет.
Я попробовал выводить на Board идентификаторы. Получаются разные значения.
Spoiler:

Spoiler:

Такой был код:
Spoiler:
Code: Select all
ORG 0
BITS 32
; --------------------------- ;
MENUET01 db 'MENUET01'
version dd 1
program.start dd START
program.end dd END
program.memory dd END
program.stack dd END
program.params dd 0
program.path dd 0
; --------------------------- ;
START:
mov eax, 51
mov ebx, 1
mov ecx, THREAD
xor edx, edx
int 64
mov edx, eax ; save in edx id
; --------------------------- ;
mov edi, buffer
mov eax, " "
stosd
stosd
stosw
xor al, al
stosb
dec edi
dec edi
mov ecx, 10
mov eax, edx ; edx = id
.int2str:
xor edx, edx
div ecx
add edx, 48
mov [edi], dl
dec edi
test eax, eax
jnz .int2str
; debug.print.line:
mov eax, 63
mov ebx, 1
xor ecx, ecx
mov esi, buffer
.next:
mov cl, [esi]
jcxz .done
int 64
inc esi
jmp .next
.done:
mov cl, 13
int 64
mov cl, 10
int 64
; --------------------------- ;
jmp START
THREAD:
or eax, -1
int 64
; --------------------------- ;
buffer: resb 11
END:
Во всех случаях прекращает работать мышь, а клавиатура иногда остаётся работать.
После вылета в окне CPU продолжается отрисовка, оставшиеся потоки так и не завершаются, cpu-usage у них 0.
Вот здесь вывод Board при запуске
прошлого примера отличается(здесь вылет в kernel, а не application):
Spoiler:

Re: Помогите новичку
Posted: Thu Nov 21, 2013 4:29 pm
by e-andrew
Где в ядре находится цикл, который отправляет окнам событие 1?
Re: Помогите новичку
Posted: Sun Dec 15, 2013 11:40 pm
by mixator
Здравствуйте. Может кто-то расказать об рисовании GUI ?
- Где почитать?
- Как рисовать?
- Стандарты, где почитать?
- Система сигналов и обработчиков(или как гуи связать с кодом)
Буду очень благодарен за помощь.
ПС в гугле не забанили, но ничего толкового не нашел. а систему - не осилил.
Re: Помогите новичку
Posted: Sun Dec 15, 2013 11:44 pm
by Wildwest
Во-первых, посмотрите исходники уже готовых программ
http://websvn.kolibrios.org/listing.php ... Kolibri+OS
Во-вторых, на каком языке собираетесь писать?
Re: Помогите новичку
Posted: Mon Dec 16, 2013 7:32 pm
by mixator
писать собираюсь на плюсах. Хочу сделать маленькое подтверждение или опровержение своей идеи. Идея состоит в концептуальной возможности использования интерпретатора html-подобного языка для построения интерфейсов
ПС. О qt слышал, это немного не то.