Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Sep 23, 2019 11:31 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 1120 posts ]  Go to page Previous 166 67 68 69 7075 Next
Author Message
PostPosted: Fri Mar 20, 2015 6:49 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
Видимо код уже ненужен, но возможно пригодится новичкам, IMHO. :wink:


Attachments:
WriteInFile.7z [1.07 KiB]
Downloaded 86 times
Top
   
PostPosted: Mon Mar 23, 2015 3:40 pm 
Offline

Joined: Tue Jun 11, 2013 3:29 pm
Posts: 24
How can I use relative path to work with files? I have a executable .kex and a file (image.raw) and I want to use only the name of the file, not the full path. In the root directory /rd/1/ it works, but in another directory, for example /hd0/1/projects/ don't work. I remember hearing something about this but I do not remember where. Thanks in advance.


Top
   
PostPosted: Mon Mar 23, 2015 3:49 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
default path is /sys/ (= /rd1/1/)
It can be changed with sysfn 30.1
The path of the executable can be obtained through the last dword in header.

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Mon Mar 23, 2015 3:51 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
See line 162 of dungeons.asm for an example implementation
http://websvn.kolibrios.org/filedetails ... ngeons.asm

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Top
   
PostPosted: Mon Mar 23, 2015 3:57 pm 
Offline

Joined: Tue Jun 11, 2013 3:29 pm
Posts: 24
Thanks hidnplayr for your quick response. Very well explained


Top
   
PostPosted: Tue Mar 24, 2015 9:44 am 
Offline
User avatar

Joined: Sat Apr 20, 2013 6:43 am
Posts: 26
Yason wrote:
gc986 wrote:
Gluk wrote:
А вы пользуетесь отладчиком?

Странно. Запустил под отладчиком. Данные аккумулируются в переменной, [button2], но у меня её нет в тексте программы. В отладчике вроде всё правильно - происходит аккумуляция, а далее ожидание события, требуется нажать на кнопку, Но когда программа работает нормально, я один раз нажимаю (видимо происходит цикл) и программа заканчивается.
Держи исправленый вариант. Программа отображает число нажатий на кнопку, и завершается, если на кнопку снизу, нажать 10 раз.

Бдагодарю! :D
Оказывается из-за невнимательности забыл вызвать функцию определения нажатой кнопки )))


Top
   
PostPosted: Thu Apr 02, 2015 3:03 pm 
Offline
User avatar

Joined: Sat Apr 20, 2013 6:43 am
Posts: 26
Я делаю калькулятор и теперь необходимо формировать строку из чисел соответствующих нажатой клавише. Чтобы поместить символ в строку на определённую позицию необходимо к адресу строки прибавить необходимое количество байт и затем помещать туда символ, например так
Code:
mov byte [str+2], '1'

Но что делать если требуется постепенно перемещать курсор ввода (перемещаться по строке) и вводить данные, как в обычном калькуляторе? Или есть способ получше?
много вариантов перепробовал но постоянно нарушаю семантику языка


Top
   
PostPosted: Mon Apr 06, 2015 8:35 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
gc986 wrote:
Я делаю калькулятор и теперь необходимо формировать строку из чисел соответствующих нажатой клавише. Чтобы поместить символ в строку на определённую позицию необходимо к адресу строки прибавить необходимое количество байт и затем помещать туда символ, например так
Code:
mov byte [str+2], '1'

Но что делать если требуется постепенно перемещать курсор ввода (перемещаться по строке) и вводить данные, как в обычном калькуляторе? Или есть способ получше?
много вариантов перепробовал но постоянно нарушаю семантику языка
Если я правильно понял, то тебе нужна косвенная адресация.

З.Ы. А вообще почитай книгу по Ассемблеру (например:Зубков С.В. - Ассемблер язык неограниченных возможностей), прежде чем задавать вопросы. Там, есть ответ на твой вопрос.


Attachments:
Screenshot.png
Screenshot.png [ 2.43 KiB | Viewed 2453 times ]
hello [493 Bytes]
Downloaded 74 times
Top
   
PostPosted: Wed May 27, 2015 12:14 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1150
Какой алгоритм копирования файла наиболее оптимальный? В Eolite сейчас идет считывание всего файла за раз, и дальнейшая запись. Но, насколько я понимаю, это плохо. Копирования блоками фиксированного размера тоже плохо, если я понял правильно из последних обсуждений. Тоесть, наиболее оптимальный вариантЮ копироватиьб блоками размером x% от свободной ОЗУ, верно?

_________________
я лишь учусь


Top
   
PostPosted: Wed May 27, 2015 1:37 am 
Offline
Just Flooding
User avatar

Joined: Thu Dec 11, 2014 1:31 am
Posts: 173
тот, который быстрее других найдет куда писать и откуда брать и выполнит копирование за меньшее количество операций с ОЗУ:
при копировании блоками тратится время на доступ к блоку за каждое обращение; если блоки не последовательны и не попали в кеш НЖМД, а они не попали в >99% случаев, то тратится время на доступ к каждому фрагменту; если сектор долго не читается, то проще его пропустить и вернутся к нему и другим таким в конце и т.д. и т.п.
эффективнее управлять DMA конечно, когда и если он будет...
а так, да, но для тестирования копирования чем больше, тем... :mrgreen:


Top
   
PostPosted: Wed May 27, 2015 1:55 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1150
kiv wrote:
тот, который быстрее других найдет куда писать и откуда брать и выполнит копирование за меньшее количество операций с ОЗУ:
при копировании блоками тратится время на доступ к блоку за каждое обращение; если блоки не последовательны и не попали в кеш НЖМД, а они не попали в >99% случаев, то тратится время на доступ к каждому фрагменту; если сектор долго не читается, то проще его пропустить и вернутся к нему и другим таким в конце и т.д. и т.п.
эффективнее управлять DMA конечно, когда и если он будет...
а так, да, но для тестирования копирования чем больше, тем... :mrgreen:

Мне больше для правильной реализации в Eolite, а то длгадываюсь, что при текущей реализации для копирования фильма например, ОЗУ у меня не хватит :)

_________________
я лишь учусь


Top
   
PostPosted: Wed May 27, 2015 2:31 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1264
punk_joker, а Eolite вообще проверяет сколько памяти свободно? Если да, то можешь не торопиться - сейчас фильм будет копироваться где-то час. Поскольку память задействуется кратковременно, думаю, оптимально брать половину памяти. Тут такой момент, я в ntfs пока фрагментацию не делал, ищется цельное место. Когда сделаю редактирование файла, копирование маленькими кусками сможет приводить к сильной фрагментации, подход будет похерен и придётся писать ещё и дефрагментатор.

Или вот такой подход, без ограничений. Делишь размер файла на количество памяти, а потом делишь файл на равные куски.


Top
   
PostPosted: Mon Jun 01, 2015 4:21 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1150
Pathoswithin wrote:
punk_joker, а Eolite вообще проверяет сколько памяти свободно? Если да, то можешь не торопиться - сейчас фильм будет копироваться где-то час. Поскольку память задействуется кратковременно, думаю, оптимально брать половину памяти. Тут такой момент, я в ntfs пока фрагментацию не делал, ищется цельное место. Когда сделаю редактирование файла, копирование маленькими кусками сможет приводить к сильной фрагментации, подход будет похерен и придётся писать ещё и дефрагментатор.

Или вот такой подход, без ограничений. Делишь размер файла на количество памяти, а потом делишь файл на равные куски.

В том то и дело, что не проверяет, и даже не сообщает о ошибке выделения. Потому и хочу переписать, чтоб было нормально. Думаю копирование кусками размером половину свободной ОЗУ будет наиболее оптимальным вариантом.

Eolite писался Leency еще когда он только начинал изучать программирование, потому под красивой шкуркой много плохого кода :D Хоть он многое и переписал уже в приличный вид, но некоторые куски все еще оставляют желать лучшего

_________________
я лишь учусь


Top
   
PostPosted: Tue Aug 18, 2015 5:33 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Я тут в ядре решил кодом побаловаться, с WINDOW.INC . Добавил в функцию calculatescreen немного кода - запустил - вылетело всё. Исправил баги - опять вылетело. Вместо своего кода запихнул много nop'ов - вылетело. Тут я уже впал в некоторое недоумение. Вопрос такой: что такого сдвигает растолстевший немного calculatescreen и как всё таки мне сделать свою хотелку? Если что, вылет выглядит так: загрузился синий экран с 5 секундами успешно, нажимаю энтер и комп тут же на перезапуск. Ни логи, ни чего-то ещё не показывается(или не успеваю заметить, хотя вряд ли). Ещё в одной из моих глючных модернизаций вылетел драйвер RDC.SYS(в доске отладки написало), мышь перестала перерисовываться(подвигаю - не двигается, нажму кнопку Пуск - перерисовалась в новом месте). Вот. Версия ядра - 5665.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Aug 18, 2015 6:54 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Есть вероятность, что ты залез в стек ядра. Посмотри внимательно карту памяти ядра. Самый надёжный способ найти ошибку - протрассировать в Bochs. Даже 100% правильный на первый взгляд код может содержать ошибки.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1120 posts ]  Go to page Previous 166 67 68 69 7075 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


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