Page 63 of 77
Re: Помогите новичку
Posted: Mon Dec 16, 2013 7:52 pm
by Wildwest
Re: Помогите новичку
Posted: Thu Dec 26, 2013 12:09 pm
by Nikitron
mixator wrote:
писать собираюсь на плюсах. Хочу сделать маленькое подтверждение или опровержение своей идеи. Идея состоит в концептуальной возможности использования интерпретатора 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
Но нижняя область не закрашивается.

Как сделать, чтобы окно полностью закрашивалось?
В 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:

Но ведь у меня нет столько памяти, почему так?
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
Re: Помогите новичку
Posted: Wed Jul 16, 2014 7:49 pm
by vpukhanov
Спасибо, буду разбираться