Page 1 of 1

Функция 18, подфункция 13 - получить версию ядра.

Posted: Wed Jan 10, 2007 5:48 am
by vectoroc
Предлагаю изменить формат возвращаемых данных c
Структура буфера:
db a,b,c,d для версии a.b.c.d
db UID_xxx: одно из UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
db 'name',0 - ASCIIZ-строка с именем
Для ядра Kolibri 0.5.8.1:
db 0,5,8,1
db 2
db 'Kolibri',0
на
db a,b,c,d; для текущей актуальной версии a.b.c.d
db UID_xxx; одно из UID_NONE=0 (типа миф?), UID_MENUET=1, UID_KOLIBRI=2, UID_DIAMOND_EMUL=3
dd N; номер svn версии, функциональности которой соответствует это "ядро"

Высказывайте свои за и против

Posted: Wed Jan 10, 2007 5:53 am
by mike.dld
+1
Номер ревизии очень бы помог программам, у которых есть ограничения "ревизия не менее ...", потому что мало кто читает ридми, а проблемами хочет поделиться каждый. Например, Tinypad 4.0.4 будет использовать менеджер памяти, и я бы добавил проверку на номер ревизии с превеликим удовольствием.

Posted: Wed Jan 10, 2007 8:15 am
by Mario79
В принципе можно, пока еще эту функцию широко не используют.

Posted: Wed Jan 10, 2007 8:45 am
by YELLOW
Согласен.

Posted: Wed Jan 10, 2007 6:30 pm
by Serge
Я за.

Posted: Thu Jan 11, 2007 5:46 pm
by diamond
Это несколько неудобно с точки зрения работы с svn: что ли, при каждом commit вручную изменять поле в kernel.asm?

Posted: Thu Jan 11, 2007 7:33 pm
by mike.dld
Мы об этом думали. Есть парочка вариантов, нужно лишь уточнить возможность их реализуемости:
1. создать файл revision.inc и при каждом коммите перехватывать данные и изменять их; реализация вроде как несколько проблематична
2. интегрировать получение текущей ревизии в build.bat/makefile; более удобный вариант, но тоже нужно ещё постараться, чтобы реализовать
Возможно какие-то ещё, которые я сейчас не вспомнил или не знаю.

Posted: Thu Jan 11, 2007 8:18 pm
by mike.dld
Вопрос изучен и решение найдено. Не только для kernel.asm, но возможно и для всех файлов нужно включить замену keywords. Например, таким образом SVN сам может заменять последовательность $Revision$ на номер ревизии внутри файла, коммит которого производится.

http://svnbook.red-bean.com/nightly/ru/ ... l.keywords

Posted: Mon Jan 15, 2007 12:08 pm
by diamond
А не на строку, включающую номер ревизии, из которой надо ещё каким-то образом получить сам номер ревизии, пригодный для определения dd?

Posted: Mon Jun 11, 2007 3:47 pm
by vectoroc
сделано

Code: Select all

include 'MACROS.INC'
header '01',1,START,I_END,0x100000,0x100000,0,0
__DEBUG__ equ 1
__DEBUG_LEVEL__ equ 1
include 'DEBUG-FDO.INC'
        struct VERSION_INFO
           a        db ?
           b        db ?
           c        db ?
           d        db ?
           type     db ?
           revision dd ?
        ends
;---------------------------------------------------------------------
START:
        mcall   18,13,ver
        DEBUGF  1,'%d.%d.%d.%d\n', [ver.a]:1,[ver.b]:1, [ver.c]:1, [ver.d]:1
        DEBUGF  1,'type=%d\n', [ver.type]:1
        DEBUGF  1,'rev=%d\n', [ver.revision]
        mcall   -1

        ver VERSION_INFO;
        include_debug_strings ;
;---------------------------------------------------------------------
I_END:
небольшой тестик... вроде работает :)