db 'MENUET01'
dd 1
dd start
dd i_end
dd mem
dd mem
dd 0
dd app_path ;буфер для хранения полного пути приложения. 1024 байта
start:
; находим последний '/' и заменяем его 0. Получается полный путь к ;каталогу из которого запущена программа.
pushd path
push '/'
push app_path
call _strrchr ;стандартная функция С ищет в строке последний указанный символ
mov byte [eax], 0
;делаем этот каталог текущим рабочим
mov eax, 30
mov ebx, 1
mov ecx, [esp+8]
int 0x40
;теперь программа может открывать файлы в своей папке без указания полного пути
Всё это должны были делать файловые менеджеры, но они этого не делают. В результате все программы запущенные в Колибри получают своим рабочим каталогом /rd/1/
db 'MENUET01'
dd 1
dd start
dd i_end
dd mem
dd mem
dd 0
dd app_path ;буфер для хранения полного пути приложения. 1024 байта
start:
mov edi,app_path
mov ecx,1024
mov esi,ecx
xor eax,eax
cld
repne scasb
test ecx,ecx
jz exit
sub esi,ecx
mov ecx,esi
std
mov al,'/'
repne scasb
test ecx,ecx
jz exit
add edi,2
mov [edi],0 ;ACSIIZ строка
; сейчас edi указывает на конец строчки типка /rd/1/File manager/
; ^ - тут edi
mov eax, 30
mov ebx, 1
mov ecx, app_path
int 0x40
....
app_path rb 1024
i_end:
PS если нужно загрузить либу, то смотри код
svn\bin\programs\develop\box_lib\trunk\editbox_ex.asm
тут реализован код загрузки библиотеки из папки в которой загружена программа, а если невозможно загрузить, используется ini_file db '/sys/lib/box_lib.obj',0
Nable
Я мог бы применить сказанные мной слова не только к Serge'у, а ко многим людям которые занимаются разработкой прикладного и системного софта для ОС Колибри, а также развитием собственно её. Ну а Serge'у и другим людям, которые своевременно отвечают на мои может быть иногда и дурацкие иногда вопросы я лично благодарен, т.к. их ответы помогают мне самому больше узнать Колибри и быстрее писать для неё программы не тратя время на самостоятельный поиск нужной информации.
LRZ
Respect, не прийдется самому заниматься переводом на ассемблер, а это как я уже написал Nable'у ускоряет мою работу.
Отцами-основателями Колибри считаю Mario79, Mike.dld и Diamond'а, возвращению последнего на форум я искренне рад, хотелось бы верить и в возвращение Mario79.