Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс апр 30, 2017 1:54 pm

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




Начать новую тему  Ответить на тему  [ 14 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Вт мар 24, 2009 4:41 pm 
Не в сети

Зарегистрирован: Ср мар 18, 2009 10:52 pm
Сообщения: 9
Пытаюсь кодить под Колибри, попутно изучаяя fasm
Возникло два вопросика.
Запускаю программу под эмулятором, ругается на вызов функции 70. Это нормально? Если да, то отлаживать
прогу под виндой не выйдет?
Запускаю эту же программу под KolibriOS, рисует вместо букв в тексте черные прямоугольники,
выглядит как сплошная линия длиной в предолагаемый текст. Я пытался прочитать сколько-нибудь байт из файла и вывести в виде текста (проверить, как прочиталось).
Если текст задаю явно, та же ботва. В чем может быть дело? Под Win - нормально.

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


Вложения:
reg.rar [1.52 КБ]
153 скачивания
Вернуться к началу
СообщениеДобавлено: Вт мар 24, 2009 5:28 pm 
Не в сети

Зарегистрирован: Пт окт 12, 2007 1:04 pm
Сообщения: 141
Ты забыл установить цвет фона, поэтому он получается чёрным (в эмуляторе либо ошибка, либо edi случайно другой). Собственно ошибка здесь:
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Вернуться к началу
СообщениеДобавлено: Вт мар 24, 2009 10:40 pm 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: Ср мар 25, 2009 1:45 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1070
Насколько я знаю, работа ф 70 в эмуляторе реализована, насчет 58 не уверен (просто автор 70 функции и автор эмулятора - один и тот же человек). Единственное, что 70 функция требует, чтобы программа запускалась из известной эмулятору папки, которые вбиваются в настройках эмулятора.
У меня, например, в klbrinwin.ini:
RamDisk=D:\install\os\kolibri\img\
hd0n=1
hd0_1=D:\install\os\kolibri\soft\


Вернуться к началу
СообщениеДобавлено: Ср мар 25, 2009 4:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 738
Цитата:
Насколько я знаю, работа ф 70 в эмуляторе реализована

У меня была подобная проблема, оказалось что под эмулятором необходимо вводить путь к файлу так же как в ОС Win, а не так как в Колибри.
Т. е. C:/1.txt и /hd0/1/1.txt указывают на один и тот же файл, только 1-й вариант для эмулятора а 2-й для Колибри


Вернуться к началу
СообщениеДобавлено: Чт мар 26, 2009 3:17 pm 
Не в сети

Зарегистрирован: Ср мар 18, 2009 10:52 pm
Сообщения: 9
сделал так:
Код:
RamDisk=c:\ram\
hd0n=1
hd0_1=c:\hdd\

в папку С:\hdd\ поместил WINDOWS\system32\config\system
Путь в программе пытался писать по разному:
Код:
.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"


Вернуться к началу
СообщениеДобавлено: Чт мар 26, 2009 3:45 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
Flinta
Цитата:
'bd0/1/windows/system32/config/system',0

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


Вернуться к началу
СообщениеДобавлено: Чт мар 26, 2009 3:46 pm 
Не в сети

Зарегистрирован: Пт окт 12, 2007 1:04 pm
Сообщения: 141
Во-первых, писать надо /bd0/...
Во-вторых, если задать hd0_1=c:\hdd, то, наверное, надо использовать /hd0/1/...


Вернуться к началу
СообщениеДобавлено: Чт мар 26, 2009 4:28 pm 
Вот пример работающего у меня файла настроек:
Код:
[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 контроллером.


Вернуться к началу
   
СообщениеДобавлено: Чт мар 26, 2009 4:41 pm 
Не в сети

Зарегистрирован: Ср мар 18, 2009 10:52 pm
Сообщения: 9
Спасибо, теперь еще дома поковыряю.
Mario писал(а):
Диски BD используются исключительно, когда идет работа с эмуляцией в самой Колибри. Поскольку оно реализовано через прерывание BIOS то обозвано не HD, а BD.
В эмуляторе надо использовать только HD, потому что он эмулирует работу системы со стандартным IDE parallel ATA контроллером

Эмулятор с SATA все же должен работать? (Если использовать hd?)


Вернуться к началу
СообщениеДобавлено: Чт мар 26, 2009 4:44 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
Flinta писал(а):
Эмулятор с SATA все же должен работать? (Если использовать hd?)

100% должен. Если винда с ним работает. :)


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


Вернуться к началу
   
СообщениеДобавлено: Чт мар 26, 2009 7:52 pm 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: Пт мар 27, 2009 9:17 am 
Flinta
Кстати поосторожней с экспериментами. Файлы удаленные в эмуляторе удаляются не в корзину, а сразу стираются. Однажды ткнув на удаление я потерял половину файлов в папке, т.к. они были уже битые, хотя утилиту восстановления запустил сразу же.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 14 сообщений ] 

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


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

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


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

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