Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт ноя 16, 2018 12:54 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 1115 сообщений ]  На страницу Пред. 166 67 68 69 7075 След.
Автор Сообщение
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт мар 20, 2015 6:49 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб сен 27, 2014 2:59 pm
Сообщения: 102
Видимо код уже ненужен, но возможно пригодится новичкам, IMHO. :wink:


Вложения:
WriteInFile.7z [1.07 КБ]
73 скачивания
Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн мар 23, 2015 3:40 pm 
Не в сети

Зарегистрирован: Вт июн 11, 2013 3:29 pm
Сообщения: 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.


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн мар 23, 2015 3:49 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1242
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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн мар 23, 2015 3:51 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1242
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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн мар 23, 2015 3:57 pm 
Не в сети

Зарегистрирован: Вт июн 11, 2013 3:29 pm
Сообщения: 24
Thanks hidnplayr for your quick response. Very well explained


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт мар 24, 2015 9:44 am 
Не в сети
Аватара пользователя

Зарегистрирован: Сб апр 20, 2013 6:43 am
Сообщения: 26
Yason писал(а):
gc986 писал(а):
Gluk писал(а):
А вы пользуетесь отладчиком?

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

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Чт апр 02, 2015 3:03 pm 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн апр 06, 2015 8:35 pm 
Не в сети
Аватара пользователя

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

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

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


Вложения:
Screenshot.png
Screenshot.png [ 2.43 КБ | 2082 просмотра ]
hello [493 байт]
62 скачивания
Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Ср май 27, 2015 12:14 am 
Не в сети

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

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Ср май 27, 2015 1:37 am 
Не в сети
Just Flooding
Аватара пользователя

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Ср май 27, 2015 1:55 am 
Не в сети

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

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

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Ср май 27, 2015 2:31 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн июн 01, 2015 4:21 am 
Не в сети

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

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

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

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

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт авг 18, 2015 5:33 am 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт авг 18, 2015 6:54 pm 
Не в сети
Kernel Developer

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1115 сообщений ]  На страницу Пред. 166 67 68 69 7075 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB