Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Jun 05, 2020 1:04 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 1139 posts ]  Go to page Previous 135 36 37 38 3976 Next
Author Message
 Post subject:
PostPosted: Mon Jul 30, 2012 12:44 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1163
Как можно узнать скан код клавиши? Описание KOS API читал, но не оч разобрался. И есть у кого рабочий таймер, процедура, макрос - неважно. Чтоб даешь ему время в секундах, и он проводит отчет?

_________________
я лишь учусь


Top
   
PostPosted: Mon Jul 30, 2012 11:34 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
программа /sys/develop/scancode показывает код нажатой клавиши.
/sys/demos/timer отсчитывает секунды, работает через функцию 26.9 - получение времени с момента запуска системы

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Tue Jul 31, 2012 6:18 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Если попытаться запустить с помощью SysFn70.7 файл размером 0 байт, то возвращается ошибка "File not found". Это так задумано что ли?


Top
   
PostPosted: Fri Aug 03, 2012 3:34 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Успешность открытия файла проверяется по вернувшемуся размеру. Всем пофиг, вот никто не пилил полноценную логику обработки.

Upd:
http://websvn.kolibrios.org/filedetails ... c#line-139
Правда, теперь надо найти где функция load_file и посмотреть даёт ли она вообще информацию о том какая именно ошибка произошла.

Долго ищу, потому что похоже что websvn больше не индексируется гуглом.

Also, забавно: кто-то положил на verysource.com сорцы колибри древнющей версии 0.6.5.0, причём дата - май 2012
Точнее, это печально, а не забавно.

Upd2: таки скачал с svn'а чтобы грепать.
Про размер я не [совсем] прав:
Code:
; retval
;  eax= file image in kernel memory
;  ebx= size of file

А load_file вызывает get_fileinfo, которая вызывает функцию 70.5, про которую недавно спрашивали в чатке.


Top
   
PostPosted: Fri Aug 03, 2012 10:35 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Функцию я писал.
Не совсем ясно что делать при нулевом размере файла ? Возвращать ошибку, или пустой указатель ?


Top
   
PostPosted: Sat Aug 04, 2012 9:08 am 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Использовать 3 регистра
Code:
; retval
;  eax= 0 - success, otherwise file system error code
;  ebx= file image in kernel memory
;  ecx= size of file
?


Top
   
PostPosted: Sun Aug 05, 2012 8:59 am 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
В принципе, можно ошибку и указатель совместить, но для этого надо чтобы было всё задокументировано и стандартизовано.
Тогда можно будет делать cmp eax, -MAX_FS_ERROR && jae .error
Но да, проблема не в нулевом размере, а в том что ошибок файловой системы есть много разных, в то время как у load_file только два варианта: успех и неуспех.


Top
   
PostPosted: Mon Aug 06, 2012 3:21 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сейчас совсем нет времени этим заниматься. Если есть желающие, исправьте.


Top
   
PostPosted: Wed Aug 08, 2012 1:28 am 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Желающие ломать имеющийся API? Надо тогда начинать с того, кто им пользуется на данный момент.


Top
   
PostPosted: Wed Aug 08, 2012 9:21 am 
Offline
User avatar

Joined: Mon Jul 25, 2011 6:22 pm
Posts: 93
Для всех новичков:
Учебник по программированию на Ассемблере
http://it-ebooks.ru/publ/programming/as ... 17-1-0-372
WIKI по KolibriOS
http://ru.wikipedia.org/wiki/KolibriOS
Ночные сборки KolibriOS
http://builds.kolibrios.org
Предыдущие версии KolibriOS
http://kolibrios.org/ru/releases.html

Хочеться надеяться кому-то поможет :)

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Top
   
PostPosted: Wed Aug 08, 2012 4:12 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
Code:
    mov  eax,8   ; Функция 8 - определить/удалить кнопку
    mov  ebx,19 shl 16+28 ; [координата по оси x]*65536 + [размер по оси x]
    mov  ecx,49 shl 16+18 ; [координата по оси y]*65536 + [размер по оси y]
    mov  edx,6            ; 0xXYnnnnnn
    mov  esi,[sc.work_button] ; esi = 0x00RRGGBB - цвет кнопки
    mov  edi,7            ; приём чего то?

Что делает последняя строчка?
Code:
    mov  ecx,eax ; Запоминаем высоту скина
    xor  eax,eax ; Очищаем eax (mov eax,0)
    mov  ebx,200 shl 16+256 ; [координата по оси x]*65536 + [размер по оси x]
    add  ecx,200 shl 16+158 ; Высота скина + [координата по оси y]*65536 + [размер по оси y]
    mov  edx,[sc.work]  ; Видимо стиль окна по дефолту ???
    or   edx,0x34000000 ; Или окно со скином фиксированных размеров (надо разобраться)
    mov  edi,title      ; Заголовок окна
    mcall        ; Прерывание

Я так понимаю тут идёт вызов 0 функции, однако в wiki:
edi = 0x00RRGGBB - цвет рамки

Объясните пожалуйста, в чём моя невнимательность.
PS: второй день только знакомлюсь с системой, простите за глупые вопросы.


Top
   
PostPosted: Wed Aug 08, 2012 4:27 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 101
Цитата:
" edx = 0xXYRRGGBB, где:

Y = стиль окна:
Y=0 - тип I - окно фиксированных размеров
Y=1 - только определить область окна, ничего не рисовать
Y=2 - тип II - окно изменяемых размеров
Y=3 - окно со скином
Y=4 - окно со скином фиксированных размеров
остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими Y игнорируется
RR, GG, BB = соответственно красная, зеленая, синяя составляющие цвета рабочей области окна (игнорируется для стиля Y=2)

X = DCBA (биты)
A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки заголовка задаётся в edi, для прочих стилей используется подфункция 1 функции 71
"

Командой
or edx,0x34000000 ; ...
Устанавливается A == 1 , B == 1 при стиле Y = 4


Top
   
PostPosted: Wed Aug 08, 2012 4:34 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
Спасибо, с этим разобрался, кроме A == 1 , B == 1
Х = 3 получается, как dec(3) - binary (0011) ? Правильно?

и что с первым вопросом?
(пошёл перечитывать внимательнее)


Top
   
PostPosted: Wed Aug 08, 2012 4:41 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 101
Насчёт A == 1 , ... - ИМЕННО ТАК !

А насчёт первого вопроса - недостаточно информации (системные вызовы Kolibri OS сохраняют все регистры за исключением тех, в которых возвращается значение, либо явно указано, что регистр не сохраняется) ...


Top
   
PostPosted: Wed Aug 08, 2012 5:44 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
Всё спасибо разобрался, там просто записывалось число количества кнопок в ряду (приложение калькулятор)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1139 posts ]  Go to page Previous 135 36 37 38 3976 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited