Page 1 of 1

Работа под Win, а также отображение шрифтов в Колибри

Posted: Tue Mar 24, 2009 4:41 pm
by Flinta
Пытаюсь кодить под Колибри, попутно изучаяя fasm
Возникло два вопросика.
Запускаю программу под эмулятором, ругается на вызов функции 70. Это нормально? Если да, то отлаживать
прогу под виндой не выйдет?
Запускаю эту же программу под KolibriOS, рисует вместо букв в тексте черные прямоугольники,
выглядит как сплошная линия длиной в предолагаемый текст. Я пытался прочитать сколько-нибудь байт из файла и вывести в виде текста (проверить, как прочиталось).
Если текст задаю явно, та же ботва. В чем может быть дело? Под Win - нормально.

Исходник прилагаю.
ЗЫ: А почему расширение .asm запрещено Администратором?

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Tue Mar 24, 2009 5:28 pm
by vkos
Ты забыл установить цвет фона, поэтому он получается чёрным (в эмуляторе либо ошибка, либо edi случайно другой). Собственно ошибка здесь:

Code: Select all

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 mov eax,4
 mov  ebx,35 shl 16+25
 mov  ecx,[sc.work_text]
 or   ecx,0x40000000
 mov edx,hed
 mov esi,3
;; Здесь должно быть что-нибудь вроде mov edi, 0xFFFFFF
 int 0x40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Tue Mar 24, 2009 10:40 pm
by Flinta
Спасибо, с выводом разобрался.
Для тех, кто со мной на одном бронепоезде:
1) Я передавал аргументом структуру вместо указателя на нее
2) база для SATA - bd0,bd1 и тд.
3) В эмуляторе не реализована поддержка функции 70. (Попробовать старую 58 для тренировки?)

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Wed Mar 25, 2009 1:45 pm
by Heavyiron
Насколько я знаю, работа ф 70 в эмуляторе реализована, насчет 58 не уверен (просто автор 70 функции и автор эмулятора - один и тот же человек). Единственное, что 70 функция требует, чтобы программа запускалась из известной эмулятору папки, которые вбиваются в настройках эмулятора.
У меня, например, в klbrinwin.ini:
RamDisk=D:\install\os\kolibri\img\
hd0n=1
hd0_1=D:\install\os\kolibri\soft\

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Wed Mar 25, 2009 4:58 pm
by IgorA
Насколько я знаю, работа ф 70 в эмуляторе реализована
У меня была подобная проблема, оказалось что под эмулятором необходимо вводить путь к файлу так же как в ОС Win, а не так как в Колибри.
Т. е. C:/1.txt и /hd0/1/1.txt указывают на один и тот же файл, только 1-й вариант для эмулятора а 2-й для Колибри

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 3:17 pm
by Flinta
сделал так:

Code: Select all

RamDisk=c:\ram\
hd0n=1
hd0_1=c:\hdd\
в папку С:\hdd\ поместил WINDOWS\system32\config\system
Путь в программе пытался писать по разному:

Code: Select all

.path db 'C:/windows/system32/config/system',0
'bd0/1/windows/system32/config/system',0
Всегда получаю "Unsupported system function", "Emulated process called unknown system function and will be terminated"

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 3:45 pm
by Albom
Flinta
'bd0/1/windows/system32/config/system',0
Не уверен, но:
1) как говорится bd0 и hd0 (который прописан в конфиге) - это две большие разницы
2) а где корневой слэш?! т.е.:
/bd0/1/windows/system32/config/system',0

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 3:46 pm
by vkos
Во-первых, писать надо /bd0/...
Во-вторых, если задать hd0_1=c:\hdd, то, наверное, надо использовать /hd0/1/...

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 4:28 pm
by Mario
Вот пример работающего у меня файла настроек:

Code: Select all

[Disk]
# path to ramdisk, must end with '\'
RamDisk=C:\My\kolibri\progs\

# hard disks:
# there may be up to 4 physical harddisks,
#   each may contain 1 or more partitions (but no more than 255)
#     (sysfunction 18::11 returns this number as byte)
#     255 should be enough :-)
# Syntax:
#   hd<i>n = number of partitions for /hd<i>, 0 <= i <= 3
#   hd<i>_<j> = Win32 path for /hd<i>/<j>, 0 <= i <= 3, 1 <= j <= hd<i>n
#               must end with '\'
# (j is represented in decimal system)
# (if harddisk /hd<i> is used, all partitions /hd<i>/<j> must be defined)
hd0n=2
hd0_1=c:\
hd0_2=d:\
#hd0_3=g:\

# example for /hd2
# hd2n=2
# hd2_1=c:\dir1\subdirx\
# hd2_2=c:\dir1\subdiry\

[Main]
# skin file name
Skin=blue.skn

# first font must be 9*0x100 bytes, second 10*0x100 bytes
Font1=char.mt
Font2=char2.mt

# DO NOT MODIFY THIS PARAMETER UNLESS YOU KNOW WHAT ARE YOU DOING!!!
# if this parameter is not empty,
#     on NT/2k/XP+ administrator rights are required
# enables i/o ports for function 46
# all ports from this parameter can be reserved with fn46,
#     and (after reservation) may be accessed via in/out.
# DO NOT ADD SYSTEM CRITICAL PORTS!!!
# USE THIS PARAMETER ONLY AT YOUR OWN RISK!!!
# note that Menuet/Kolibri reserves ports 0-FF for system use
# syntax: EnablePorts=port1 port2beg-port2end port3 ...
# (when range is used, both begin and end are included)
# example (only for syntax demonstration!!!): EnablePorts=A3 B1 92-9f 70-74 269
# total length of parameter string is limited to 1024 chars (must be enough :) )
EnablePorts=

# boolean parameter (true/false)
# if this parameter is not empty,
#     on NT/2k/XP+ administrator rights are required
# enables function 68.3
AllowReadMSR=true

[Questions]
# on set background question
# 0=ask, 1=set permanently, 2=set temporarily, 3=don't set
SetBgr=0

[sys_setup]
# kernel global variable sound_flag
# 0=playnote sound on, 1=off (it is for 55::55 function only)
sound_flag=0

# kernel global variable syslang (see functions 21::5, 26::5)
# 1=eng 2=fi 3=ger 4=ru
syslang=1

# kernel global variable keyboard (see functions 21::2::9, 26::2::9)
# 1=eng 2=fi 3=ger 4=ru
# Note that this definition doesn't affect keymap tables,
# it only sets variable for functions above
# (in Kolibri application @panel/setup changes keymap tables)
keyboard=1
Эмулятор работает с синтаксисом путей, которые использует Колибри -один в один. Никаких "C:" в пути для приложений Колибри быть не должно.

Диски BD используются исключительно, когда идет работа с эмуляцией в самой Колибри. Поскольку оно реализовано через прерывание BIOS то обозвано не HD, а BD.
В эмуляторе надо использовать только HD, потому что он эмулирует работу системы со стандартным IDE parallel ATA контроллером.

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 4:41 pm
by Flinta
Спасибо, теперь еще дома поковыряю.
Mario wrote: Диски BD используются исключительно, когда идет работа с эмуляцией в самой Колибри. Поскольку оно реализовано через прерывание BIOS то обозвано не HD, а BD.
В эмуляторе надо использовать только HD, потому что он эмулирует работу системы со стандартным IDE parallel ATA контроллером
Эмулятор с SATA все же должен работать? (Если использовать hd?)

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 4:44 pm
by Albom
Flinta wrote:Эмулятор с SATA все же должен работать? (Если использовать hd?)
100% должен. Если винда с ним работает. :)

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 5:09 pm
by Mario
Flinta
Винда предоставляет в своем формате VFS (виртуальная файловая система) все доступные ей дисковые устройства. Эмулятор из этого формата переводит в VFS формат Колибри (в основном имеется ввиду функция 70, функцию 58 мы не рассматриваем в связи с устареванием и низкой функциональностью). Если ты правильно прописал файл настроек эмулятора и если ты запрашиваешь правильный путь в синтаксисе Колибри, то все должно работать. Проверь сначала на KFAR и KFM - если они у тебя работают на требуемом пути, то вопрос останется только к коду твоей программы.

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Thu Mar 26, 2009 7:52 pm
by Flinta
Или в моем генетическом...
Опаньки, хотел поэсксперементировать с влиянием касперского, а оно дома запустилось. Тупо с работы притащил конфиг(сделанный с учетом замечаний. Спасибо). Если честно, до последнего не верилось, что дело в проге. Ошибка, вроде бы, на другое указывала. Разберемся.
Буду дальше штурмовать fasm... Спасибо всем!

Re: Работа под Win, а также отображение шрифтов в Колибри

Posted: Fri Mar 27, 2009 9:17 am
by Mario
Flinta
Кстати поосторожней с экспериментами. Файлы удаленные в эмуляторе удаляются не в корзину, а сразу стираются. Однажды ткнув на удаление я потерял половину файлов в папке, т.к. они были уже битые, хотя утилиту восстановления запустил сразу же.