Page 63 of 77

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

Posted: Mon Dec 16, 2013 7:52 pm
by Wildwest
Типа html application или прочие из Список языков описания пользовательских интерфейсов... Настройка компиляторов C++ описана в статье http://kolibri-n.org/inf/hll/hll.php . Косилка написана на C++ http://websvn.kolibrios.org/listing.php ... e6b85b8744

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

Posted: Thu Dec 26, 2013 12:09 pm
by Nikitron
mixator wrote:
Wildwest wrote:Во-первых, посмотрите исходники уже готовых программ http://websvn.kolibrios.org/listing.php ... Kolibri+OS
Во-вторых, на каком языке собираетесь писать?
писать собираюсь на плюсах. Хочу сделать маленькое подтверждение или опровержение своей идеи. Идея состоит в концептуальной возможности использования интерпретатора html-подобного языка для построения интерфейсов
ПС. О qt слышал, это немного не то.
Что то вроде htmlayout?

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

Posted: Wed Jan 22, 2014 11:33 am
by Leency
Надо бы тему что-то вроде "Сниппеты". Раз такой нет, напишу сюда, чтоб не потерялось.

Установить прозрачный (невидимый) курсор. Автор Марио

Code: Select all

set_new_cursor_skin:
mcall	68,12,32*32*4
mov	ecx,eax
mcall	37,4,,2
mov	ecx,eax
mcall	37,5
ret

Re:

Posted: Tue Feb 18, 2014 8:55 pm
by CleverMouse
0CodErr wrote:Хочу нарисовать окно 200x25 пикселей с зелёной рамкой, а внутри полностью красное.

Code: Select all

		xor eax, eax
		mov ebx, 200
		mov ecx, 25
		mov edx, 00FF0000h
		mov edi, 0000FF00h
		mov esi, 01FF0000h
		int 64
Но нижняя область не закрашивается.
Image
Как сделать, чтобы окно полностью закрашивалось?
В r4572 должно полностью закрашиваться. Там код ядра по непонятным мне загадочным причинам считал, что если клиентская область окна типа I меньше 5 пикселей, то и рисовать её не надо. Документация как показали раскопки svn при этом отражала состояние на момент до r114, когда заголовок рисовался на 4 пикселя вперехлёст с рабочей областью, так что до r114 тоже должно было полностью закрашиваться, документацию я обновила.

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

Posted: Tue Feb 18, 2014 9:23 pm
by CleverMouse
0CodErr wrote:Хотелось уточнить, что всё-таки делает функция 18.10?
То, что написано в Wiki:
Сворачивает собственное окно.
или же то, что сказал art_zh:
18.10 предполагает, что у активного приложения и окно - активное.
Его и сворачивают.
При нажатии на кнопку минимизации вызывается она же?

Запускаем приложение, использующее OpenDialog(TinyPad, HeEd, ...).
Запускаем из этого приложения OpenDialog.
Пытаемся свернуть окно самой программы нажатием на кнопку минимизации, но после нажатия отпускаем кнопку мыши не сразу, а немного ждём.
В этот момент может свернуться окно OpenDialog, а не окно самой программы.

И с кнопкой закрытия такая же ситуация.
Функция 18.10 сворачивает активное окно. Я поправила документацию.

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

Posted: Sat Mar 29, 2014 2:24 am
by punk_joker
Подскажите в чем проблема. В общем не собирается ругаясь на запрещенную инструкцию, хотя взял от из архива с Job, который вполне успешно с ним собирается.

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

Posted: Sat Mar 29, 2014 2:54 am
by Mario_r4
include 'proc32.inc'

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

Posted: Sat May 31, 2014 3:30 pm
by 0CodErr
Вот такой код:

Code: Select all

ORG 0
BITS 32
; -------------------------- ;
STACK_SIZE equ 256
; -------------------------- ;
PAGE_SIZE  equ 4096
MEMORY_ALLOC_SIZE equ PAGE_SIZE * 32
; -------------------------- ;
        db     'MENUET01'
        dd     1
        dd     START
        dd     END
        dd     END + STACK_SIZE
        dd     END + STACK_SIZE
        dd     0
        dd     0
; -------------------------- ;
START:
; heap.initialize:
        mov    eax, 68
        mov    ebx, 11
        int    64
        mov    ecx, MEMORY_ALLOC_SIZE
        xor    edx, edx
        div    ecx
        mov    edx, eax ; save (HeapSize / MEMORY_ALLOC_SIZE) to edx
; memory.allocate
        inc    ebx
.next:
        mov    eax, 68
        int    64
        dec    edx
        jnz    .next
        or     eax, -1
        int    64
END:
Я запустил несколько копий полученной программы:
Spoiler:Image
Но ведь у меня нет столько памяти, почему так?

Code: Select all

0x759A1000 + 
0x7ADA1000 + 
0x7A821000 + 
0x7C1E1000 + 
0x7A661000 + 
0x7A101000 + 
0x792C1000 + 
0x791E1000 = 0x3CDD48000

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

Posted: Sat May 31, 2014 10:58 pm
by Mario_r4
Потому что в Колибри очень хитрый менеджер памяти. Запрос ф.68 лишь "протокол о намерениях", а при первом физическом обращении происходит выделение запрашиваемой страницы. Это такой хитрый финт позволяющий экономить память. Более подробно узнавать у Serge.

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

Posted: Tue Jul 15, 2014 11:17 pm
by vpukhanov
Всем привет!

Познакомился с этой операционной системой, почитал мануалы, решил написать под нее что-нибудь. Суть моего обращения в том, что процесс разработки для меня очень неудобен.

Я делаю так: пишу в fasmw на Windows, копирую на флэшку, в qemu крутится Kolibri, кидаю файлы программы туда, компилирую, пакую, запускаю. При каких-либо ошибках ищу их в винде, потом снова копирую, перекидываю, компилирую, и так далее.

Если пишу код в Kolibri, то непременно забываю копировать его на флэшку после отладки, и при выключении системы все, естественным образом, стирается. Это, разумеется, мои проблемы с памятью, но, даже при условии ее нормального функционирования, это было бы не очень удобно.

Научите меня, пожалуйста, как правильно делать? Или есть только такие варианты?

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

Posted: Wed Jul 16, 2014 2:12 am
by GerdtR
Хм... а если в qemu создать жёсткий диск и на нём хранить свои труды? Потом только на флешку скинуть, если в Винде исходники вдруг понадобятся. Я в VurtualBox'е так и делаю - грузиться виртуалка с дискеты, а на жёстком диске (ну эмулируемом, разумеется) хранятся исходники.

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

Posted: Wed Jul 16, 2014 6:28 am
by vpukhanov
Спасибо. Как-то мне вопрос сразу глупым казаться стал, вроде не первый день с виртуальными машинами работаю, а про жесткий диск не подумал. Ну, бывает...

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

Posted: Wed Jul 16, 2014 4:48 pm
by vpukhanov
Сейчас копаюсь в файловой системе, для программы нужно получить список файлов и папок в данной директории (что-то вроде ls).
Я так понял, что мне нужна функция 70.1, появилось несколько вопросов по ходу:

// Ссылка на Wiki по функции: http://bit.ly/1nwcFmb
Формат информационной структуры:
Это обязательно struc, или можно просто метку поставить и все объявить?
+4: dword: индекс начального блока (считая с 0)
Я правильно понял, что здесь мы указываем, с какого байта нужно начать запись ответа в буфер?
+8: dword: поле флагов:
То есть в простейшем случае можно просто dd 0 поставить?
+16 = +0x10: dword: указатель на буфер, куда будут записаны данные, размер буфера должен быть не меньше 32 + [+12]*560 байт
Понимаю что это совсем просто, но до меня не доходит. Так сойдет?:

Code: Select all

; structure definition start
...
dd 50 ; blocks number
dd output_buffer ; result buffer
...
; structure definition end
output_buffer rb 32 + 50 * 560
// Ссылка на Wiki по функции: http://bit.ly/1nwcFmb

Пытался сам разобраться, посмотрел исходники OpenDialog (кажется самый простой файловый менеджер в системе), но и с ним не разобрался.

Подскажите, правильно ли я понял wiki. Было бы идеально ткнуть меня носом в то место, где все попроще описано (проще чем в OpenDialog), может пример по этой конкретной функции у кого-нибудь есть?

Спасибо.

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

Posted: Wed Jul 16, 2014 7:17 pm
by Asper
Пример попроще - CP

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

Posted: Wed Jul 16, 2014 7:49 pm
by vpukhanov
Спасибо, буду разбираться