ZXNet эхоконференция «code.zx»


тема: *.DLL библиотеки



от: Kirill Frolov
кому: All
дата: 22 Aug 2003
Hемедленно нажми на RESET, All! Newsgroups: fido7.zx.spectrum From: Kirill Frolov Subject: Re: Doors 2003! RE:inferno4_1.zip References: <3121331872@p2.f827.n5030.z2.ftn> <1060789410@f19.n451.z2.ftn> Organization: на alasm мы ставим крест, zasm поколенье next! Followup-To: X-Comment-To: Oleg Golenkoff User-Agent: [ZX] X-FTN-PID: Lara Croft MED 5.0+ by KVA of E-mage Hемедленно нажми на RESET, Oleg Golenkoff! On Wed, 13 Aug 03 14:43:30 +0400, Oleg Golenkoff wrote: OG>>> может сделать свой компилеp ? пускай он помедленнее будет, но зато OG>>> в пpостом тексте. KF>> Для спектpума? Понадобится ещё и текстовый pедактоp и файлы... коpоче KF>> говоpя, вначале ОС какая-нибудь нужна. OG> агу! отсюда моpаль, сделать ос под свой комп, OG> и написать pедактоp - компилеp под нее с возможностью OG> пеpекомпиляции под конкpетный дpугой комп Флаг в руки... (у микрософта это дело ~15 лет заняло) Я вот мысль думаю: неплохо бы иметь некий общий формат исполняемых файлов и/или библиотек для всех ZX*OS-ов. Есть много системо-независимого кода, который может быть без модификации, или же с минимальными усилиями использован как в TR-DOS программах, так и в Aqua-OS, так и в прочих D2k и X-DOS, BeeOS... Конечно можно всегда взять в руки исходник, но исходник может быть недоступен, для этого нужен ассемблер определённой версии, несовместимый с используемым (как, например, ZASM и ALASM), наконец становится недоступна динамическая загрузка кода, ни совместное его использование несколькими программами. Что получается -- программы увеличиваются в размерах, при том что содержать практически одинаковый код. А их поддержка, в случае когда используются части кода от разных людей, становится просто невозможной -- например, если я выпустил новую версию драйвера IDE, то как я заставлю Vega вставить его в CD-Walk? (на встраивание драйвера для KAY ушло года 2, примерно) Что я имею ввиду, так это то, что нужны библиотеки. Динамически загружаемые на этапе выполнения программы. Примерно как *.dll на ПЦ, только попроще. Hапример, сейчас во многих спектрумовских программах (за 2000-2003 год) используется так называемый драйвер памяти, часов реального времени ("CMOS"), драйвер электронного диска... Hа каждом компутере практически один и тот-же "драйвер" с различными модификациями встроен в каждую программу, или же загружается при старте программы. В последнем случае, практически все программы используют несовместимые между собой драйвер, это при том, что все они обладают примерно одинаковой функциональностью. Так почему-бы и не дойти, наконец-то, к динамической загрузке кода и единому способу (формату) представления этого кода? Hа мой взгляд требования к библиотеке это в первую очередь простота их загрузки. Чтобы для загрузки трёхсот байт кода не нужна была целая ОС. Это крайне важно для поддержки библиотек в среде TR-DOS и для адаптации старых программ. Второй пункт это совместимость: должно быть достаточно традиционных для спектрума средств, таких как ALASM или ZASM, как для создания, так и для загрузки библиотеки. Впрочем, тут ещё есть над чем думать... Для драйвера IDE контроллера в программе CD-Hack я использовал некое подобие динамически загружаемой библиотеки *dll на ПЦ, что мне позволило: 1. полностью разделить программы использующие *dll файл и саму библиотеку -- теперь и библиотека, и программа могут развиваться отдельно друг от друга (то есть, выпуская новую версию драйвера не приходится думать об обновлении программы, и наоборот). 2. получить возможность динамической (грубо говоря, я их могу на ходу менять) загрузки любого из имеющихся модулей определённого класса (в данном случае -- IDE драйвера). 3. получить возможность загружать одновременно несколько разных экземпляров модулей одного класса (я могу загрузить сразу все драйверы и использовать их одновременно на машине с несколькими IDE контроллерами). 4. Один и тот-же модуль может свободно использоваться в разных программах, что сильно упрощает его сопровождение и экономит место на диске. Список преимуществ перед статически встраиваемым кодом можно продолжать долго... Есть и недостатки. Это всё-таки некоторое усложнение программы, увеличение её объёма (например, за счёт загрузчика модулей) и неэффективный с точки зрения оптимального кодирования интерфейс библиотеки и программы. Для IDE драйверов мне пришлось придумать простой формат исполняемого файла библиотеки, который бы позволял: 1. указывать список импортируемых модулей и функций, список экспортируемых функций. 2. загрузку по абсолютному и относительному (модуль перемещаемый) адресу. 3. Указывать информацию модуле, такую как его класс, имя и версия (я предполагал, что будет существовать единая иерархическая система классов, так что любая программа может определить назначение модуля). Думаю, мой вариант *.dll файлов не последний, и пока есть возможность для существенных изменений. Для ос-писателей и прочих "кодеров" я бы предложил более детально обсудить данную тему и утвердить-таки единый формат динамически загружаемых модулей. Хотелось определиться со списком требований к модулю, и вариантами реализации. Мой вариант можно подсмотреть на примере IDE драйверов, файл с которыми (ide-pack.zip) был заюючен сегодня в эху.

от: LynX
кому: Kirill Frolov
дата: 28 Aug 2003
Как твоё ничего, Kirill? 22 Aug 03 07:54, Kirill Frolov -> All: KF> загружаемыхмодулей. Хотелось определиться со списком требований к KF> модулю, и вариантамиреализации. Мой вариант можно подсмотреть на примере KF> IDE драйверов,файл с которыми (ide-pack.zip) был заюючен сегодня в эху. Hу дык, а если все модули неперемещаемы или, мало того, скомпилены под нестандартный адрес? WBR, Lynx // J!ZzZ! [team ZX] [Dark Jungle] [GoA] [J!ZzZ project] [PLUt0N!um] [GmD] [club ЛюК] [black-sand.da.ru]

от: Kirill Frolov
кому: LynX
дата: 01 Sep 2003
Hемедленно нажми на RESET, LynX! On Thu, 28 Aug 03 02:58:00 +0400, LynX wrote: KF>> загружаемыхмодулей. Хотелось определиться со списком требований к KF>> модулю, и вариантамиреализации. Мой вариант можно подсмотреть на примере KF>> IDE драйверов,файл с которыми (ide-pack.zip) был заюючен сегодня в эху. L> Hу дык, а если все модули неперемещаемы или, мало того, скомпилены под L> нестандартный адрес? У меня модули перемещаемые. Для перемещаемых модулей адрес компиляции не имеет значения. Для неперемещаемых (флаг загрузки по абсолютному адресу в заголовке должен быть установлен) загрузчик пока возвращает ошибку. Я считаю, что без механизма управления памятью это невозможно -- надо-же знать, свободна-ли запрашиваемая память и возможна-ли в неё загрузка. А твоего вопроса я не понял.

от: LynX
кому: Kirill Frolov
дата: 07 Sep 2003
Как твоё ничего, Kirill? 01 Sep 03 06:11, Kirill Frolov -> LynX: L>> Hу дык, а если все модули неперемещаемы или, мало того, скомпилены под L>> нестандартный адрес? KF> У меня модули перемещаемые. Для перемещаемых модулей адрес компиляции KF> не имеет значения. Для неперемещаемых (флаг загрузки по абсолютному KF> адресу в заголовке должен быть установлен) загрузчик пока возвращает KF> ошибку. Я считаю, что без механизма управления памятью это невозможно -- KF> надо-же знать, свободна-ли запрашиваемая память и возможна-ли в неё KF> загрузка. KF> А твоего вопроса я не понял. Адрес если не #c000, который всех устраивает, а , допустим, #9c40 ;). WBR, Lynx // J!ZzZ! [team ZX] [Dark Jungle] [GoA] [J!ZzZ project] [PLUt0N!um] [GmD] [club ЛюК] [black-sand.da.ru]

от: Evgeny Goljakov
кому: LynX
дата: 09 Sep 2003
Привет, LynX. Вс 7 Сен 02 LynX -> Kirill Frolov: L>>> Hу дык, а если все модули неперемещаемы или, мало того, L>>> скомпилены под нестандартный адрес? KF>> У меня модули перемещаемые. Для перемещаемых модулей слепой с глухим ;) L> Адрес если не #c000, который всех устраивает, а , допустим, L> #9c40 ;). прилагай табличку для перенастройки всех абсолютных адресов, относительно к-н адреса компиляции, который может быть первым в тойже табличке, имх. Спасибо за внимание.

от: Kirill Frolov
кому: LynX
дата: 11 Sep 2003
Hемедленно нажми на RESET, LynX! On Sun, 07 Sep 03 22:47:00 +0400, LynX wrote: KF>> У меня модули перемещаемые. Для перемещаемых модулей адрес компиляции KF>> не имеет значения. Для неперемещаемых (флаг загрузки по абсолютному KF>> адресу в заголовке должен быть установлен) загрузчик пока возвращает KF>> ошибку. Я считаю, что без механизма управления памятью это невозможно -- KF>> надо-же знать, свободна-ли запрашиваемая память и возможна-ли в неё KF>> загрузка. KF>> А твоего вопроса я не понял. L> Адрес если не #c000, который всех устраивает, а , допустим, #9c40 ;). Адрес может быть любой, лишь бы через границу 0xffff не перелезал. Модулей с абсолютным адресом загрузки пока не существует, все модули перемещаемые. То-есть адрес там хоть #3d13 может быть, а он по #c000 грузится, настраивается и нормально работает. Так что вопроса я опять не понял.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
BBS-Лист - Список Vicomm-совместимых BBS.
Пробы пера - рассказ "Элексир Зверя".
Новости - презентация нового европейского демопати - FOREVER 2E3.
ZX-World news - Супер-стратегия Civilization близка к завершению. Вячеслав Медноногов о выходе "Черного ворона"". О новом журнале "Scenergy". Готовится проект TECHNODROM II. Новая сетевая программа BBS v4.01 для XTR-модемов. CD-ROM с коллекцией программ для ZX-SPECTRUMA.
Мнение - Анализ ситуации с компьютерами в Ростове.

В этот день...   8 мая