Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Nov 12, 2019 1:32 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 99 posts ]  Go to page Previous 1 2 3 4 57 Next
Author Message
PostPosted: Mon Sep 07, 2009 6:09 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Исправил глюк с вылетом программы, теперь вроди работает нормально.
Документацию обновлю позже.


Attachments:
vectors_090607b.7z [11.01 KiB]
Downloaded 114 times
Top
   
PostPosted: Wed Sep 09, 2009 3:27 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Заметил, что все программы использующие функцию рисующую кривую Безье из библиотеки не работают. А в эмуляторе KlbrInWin все функции работают. Что означает ошибка:
Page fault - Недостаток страницы


Top
   
PostPosted: Wed Sep 09, 2009 5:04 pm 
Возможно указатель вышел за пределы выделенного участка памяти.


Top
   
PostPosted: Wed Sep 09, 2009 10:08 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
У меня всё кроме самолёта не работает.

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Top
   
PostPosted: Wed Sep 09, 2009 10:36 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Атауальпа wrote:
У меня всё кроме самолёта не работает

Так и есть, дело в том что там пока не используются функции рисования Безье.
Недавно вычислил "глючное" место. Оказалось, что первая точка по координате Y имеет очень большое значение. Потому как сказал Mario, программа вылазила на чужую память. В эмуляторе этого глюка не заметно, т. к. WinAPI функции при неправильных координатах не вылетают (что с одной стороны хорошо, а с другой плохо: нельзя отлаживать программы если не видно глюков, тормозится рисование).
В общем проверял несколько раз алгоритм, и устранил глюк добавлением в функцию всего 1-й строки кода:
Code:
finit
:o


Attachments:
File comment: с этим файлом работает
vectors.obj [2.73 KiB]
Downloaded 111 times
Top
   
PostPosted: Fri Sep 11, 2009 11:03 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
Теперь работает, но со странным глюком.
Когда запущены часы или самолёт, во всех других приложениях не работают клавиатура и мышь! Я не могу ничего сделать ни с каким другим окном, пока не закрою демку. По клавише Win запускается меню, но ни один из его пунктов ничего не запускает ни мышью, ни клавиатурой.

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Top
   
PostPosted: Tue Sep 15, 2009 1:57 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
немного обновил библиотеку:
1) работает масштабирование контуров (раньше масштаб всегда был = 1.0, даже если на входе подавалось другое число)
2) добавил функцию вывода векторного шрифта (в своем формате, хотелось-бы сделать поддержку стандартных, но до этого пока наверное очень далеко)
---
В примерах самолет и часы пока не нашел как устранить проблемы связанные с таймером.
В общем изменений не много.


Attachments:
vectors_090915.7z [12.21 KiB]
Downloaded 110 times
Top
   
PostPosted: Thu Sep 17, 2009 7:18 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
версия 17.09.09:
1) вызов функции vect_conv_cont делается перед прорисовкой контуров автоматически (это упрощает написание программ)
2) изменен способ задания размера текста, и сама функция вывода текста доработана (символ 13 работает как перевод строки)
из недостатков:
1) пока шрифт не в отдельном файле
2) в шрифте есть не все символы


Attachments:
vectors_090917.7z [13.97 KiB]
Downloaded 105 times
Top
   
PostPosted: Thu Sep 17, 2009 8:48 pm 
Самолет убил систему запущенную под Qemu. Я думал, что такое невозможно. :mrgreen:

Итак ошибки:
1) samolot.asm
Code:
draw_window:
  push eax ebx ecx edx
  mcall 12,1

  xor eax,eax
  mov ebx,50*65536+320
  mov ecx,30*65536+250
  mov edx,0
  or  edx,0x33000000
  mov edi,hed
  mcall

  mov eax,4 ;рисование текста
  mov ebx,5*65536+5
  mov ecx,0xffff00
  or  ecx,0x80000000
  mov edx,txtInfo
  mcall

  call draw_objects

  mcall 12,1
  pop edx ecx ebx eax
  ret


2) clock.asm
Code:
draw_window:
  push eax ebx ecx edx
  mcall 12,1

  xor eax,eax
  mov ebx,50*65536+320
  mov ecx,30*65536+250
  mov edx,0+0x33000000
  mov edi,hed
  mcall

  mov eax,4 ;рисование текста
  mov ebx,5*65536+5
  mov ecx,0xffff00
  or  ecx,0x80000000
  mov edx,txtInfo
  mcall

  call draw_objects

  mcall 12,1
  pop edx ecx ebx eax
  ret


Вопрос на засыпку кто видит ошибки? Я вижу, но не скажу.

Как там было на bash.org.ru:
Quote:
xxx: Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.


Top
   
PostPosted: Thu Sep 17, 2009 8:55 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Mario79 wrote:
Как там было на bash.org.ru:
Quote:
xxx: Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.

Распространённый-то он распространённый, но это не влияет на тот факт, что этот способ не работает (неоднократно проверял... пришлось писать отладчик).
P.S. Да, а копипастить при программировании вообще не стоит. Хотя в данном случае скорее имеет место быть банальная опечатка.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
PostPosted: Thu Sep 17, 2009 9:01 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
Видим и намекнем. :) Незачем программам по 2 окна.


Top
   
PostPosted: Thu Sep 17, 2009 9:04 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
кажись я понял в чем юмор:
1)
Code:
push eax ebx ecx edx ;в начале функции
...
mov edi,hed ;в нутри функции, хотя edi не в стеке
2)
Code:
mcall 12,1 ;в начале
...
mcall 12,1 ;в конце, должно быть mcall 12,2


Top
   
PostPosted: Thu Sep 17, 2009 9:06 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
первое не критично, если по ходу программы ты в edi не хранишь нечто важное, хотя в твоем варианте, наверное проще написать pushad/popad


Top
   
PostPosted: Sat Sep 19, 2009 11:14 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Исправил ошибки в примерах, немного изменил 2 функции в библиотеке. Самое главное перенес данные по шрифту в отдельный файл. Теперь можно создавать файлы шрифтов, не сидящие внутри kex файла.
Если разобрать формат ttf, то думаю можно сделать прогрмму для конвертирования этих файлов, в таком случае не нужно будет создавать свои шрифты с 0 (тем более что я так до конца не заполнил все символы).


Attachments:
vectors_090919.7z [15.48 KiB]
Downloaded 114 times
Top
   
PostPosted: Sat Sep 19, 2009 11:51 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
Пример с отображением шрифта не очень удачный т.к. при непосредственном выводе без буферизации в ОЗУ глифов медленно. Конечно, лучше разобраться с существующими форматами шрифтов (хотя бы одним). У меня нет достаточно времени, что бы этим заняться...


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 99 posts ]  Go to page Previous 1 2 3 4 57 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited