Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
ZXDev + TR-DOS https://zx.oberon.org/forum/viewtopic.php?f=10&t=139 |
Страница 1 из 1 |
Автор: | Sergey [ 13 сен 2013, 20:36 ] | ||
Заголовок сообщения: | ZXDev + TR-DOS | ||
Привет, Олег. Не помню, в какой теме ты просил присылать библиотеки, поэтому отвечу здесь. В приложении архив с "оберткой" функций TR-DOS для SDCC. Я уже с месяц как выкладывал её на zx.pk.ru и tslabs.info, но почему-то до сих пор не обнаружил в твоём релизе ZXDEV. Она тоже сделана по твоим советам по методу умной линковки - каждая функция - это отдельный файл, и при компиляции в код включается только необходимая подпрограмма, а не вся библиотека. До "затачивания" под Оберон пока не дорос, - хотелось бы посмотреть, как она будет выглядеть после адаптации. В качестве анонса: в скором времени будет готова интерфейсная библиотека для плагинной системы WildCommander (ZX-Evo/TS-Labs-Config).
|
Автор: | Zorko [ 13 сен 2013, 23:04 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Привет, Sergey! ![]() Я конечно дико извиняюсь, но могу себе позволить в настоящее время только ленивое добавление в ZXDev тех фич, которые мне реально нужны (в качестве исключения, правда, позволяю себе помогать людям, которые, не смотря ни на что, решились делать свой проект на ZXDev. В ZX-свете повальной если не ассемблеризации, то Си-онизации такие люди мне чем-то импонируют). Изменения для адаптации минимальны. Слегка изменённые имена плюс интерфейсный Оберон-модуль, всё это сделать несложно, но вопрос в том кому нужна работа с TR-DOS на низком уровне из Оберона? Вот такие дела. Кстати, хорошо, что разместил либу здесь, я не всегда успеваю следить за такими вещами. Если будет вдохновение, конечно сделаю адаптацию. Просто неохота "в стол" работать. ![]() P.S. Что-то у тебя функции #05 и #06 имеют одинаковое имя "trdosReadSectors". Опечатка или так было задумано? P.P.S. А прототип trdosWriteSectors не присутствует в trdos.h. Тоже так нужно? |
Автор: | Zorko [ 14 сен 2013, 00:24 ] | ||
Заголовок сообщения: | Re: ZXDev + TR-DOS | ||
Всё-таки сделал. В качестве лоска потребуется более продвинутое тестирование всех процедур и, возможно, правка типов для большего удобства использования. Простые тесты работают. Поскольку я в своё время имел Спек только с магнитофоном, экспрессия TR-DOS'а прошла как-то мимо. ![]() P.S. Использовал один из возможных способов связки Оберон-модулей с сишными исходниками (прослойка между именами, принятыми в Ofront, и библиотечными в виде заголовочного файла с макроопределениями). Способ выбран затем, чтобы не менять ни саму библиотеку, ни её исходники. Есть и другие способы адаптации сишных вызовов к XDev/Ofront (например, средствами Ofront'а), примеры есть в библиотеках подсистем ZXDev и WinDev.
|
Автор: | Sergey [ 14 сен 2013, 09:21 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Zorko писал(а): кому нужна работа с TR-DOS на низком уровне из Оберона? Разве в Обероне есть свои функции работы с TR-DOS?! ![]() Zorko писал(а): P.S. Что-то у тебя функции #05 и #06 имеют одинаковое имя "trdosReadSectors". Опечатка или так было задумано? P.P.S. А прототип trdosWriteSectors не присутствует в trdos.h. Тоже так нужно? Это, естествено, опечатка. Перезалил архив. Достаточно для функции #06 исправить имя в прототипе. |
Автор: | Zorko [ 14 сен 2013, 12:10 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Sergey писал(а): Разве в Обероне есть свои функции работы с TR-DOS?! Уже есть, благодаря тебе. ![]() ![]() ![]() Sergey писал(а): Это, естествено, опечатка. Перезалил архив. Достаточно для функции #06 исправить имя в прототипе. Хорошо, я тоже исправил.Кстати, я НЕ считаю тебя неопытным разработчиком из-за этого ляпа. Просто людям свойственно ошибаться, и ошибки допускают даже очень опытные программисты, но язык Си по превратностям судьбы, приведшим в итоге к разрешению многократного включения *.h-файлов и всего из этого вытекающего (назовём это корявостью дизайна языка), по задумке, а не по недоразумению не имеет механизма предупреждений о продублированных прототипах, разве что если они отличаются типами (но если я верно помню, SDCC даже такие прототипы не ловит). И SDCC не помог тебе найти эту ошибку на стадии работы над библиотекой. Я тоже, естественно, не проверял все имена в trdos.h на уникальность, а просто скомпилировал интерфейсный Оберон-модуль в ZXDev. И Ofront сразу выдал ошибку дублирования имени. И подобные моменты, где Оберон имеет преимущества перед Си, я могу приводить десятками. Только меня никто не хочет слушать, напирая на рулезность всё ещё хорошо сохранившегося Си с плюсами и дотнета с джавами. ![]() ![]() Кстати, можешь сообщить своё полное ФИО, добавлю в благодарности. И ЛС читай почаще. ![]() |
Автор: | Sergey [ 14 сен 2013, 18:13 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Zorko писал(а): Уже есть, благодаря тебе. ![]() ![]() Всем нужно. Вот захотел кто-то для спека Оберон попробовать из интереса, - безделицу какую-нибудь написать. И тут выясняется, что ему надо еще и обвязку к TR-DOS саомому писать (а трдос для спека - это наше всё), - т.е. дополнительный демотиватор на пути. А так, - пожалуйста. Zorko писал(а): Хорошо, я тоже исправил. Кстати, я НЕ считаю тебя неопытным разработчиком из-за этого ляпа. И очень даже зря. ![]() ![]() Я по образованию и профессии - юрист. Программирование для меня - это хобби, поэтому критика приветствуется. С сями давно познакомился. На Амиге - пока болел, написал распаковщик архивов Hrip (не опубликован). А SDCC осваивать и либы писать в этом году начал. Просто сейчас, благодаря платформе ZX-Evolution, а тем более прошивке TS-Labs к ней, где почти все операции с графикой (растрами, шрифтом, спрайтами, тайлами и т.п.) и пересылки данных взяло на себя железо, появилась реальная возможность писать программы на высокоуровневых языках. Это, действительно, приносит свои плоды: не успеют открыться исходники (на Си) какой-нибудь игры для аналогичных спеку платформ, на следующий день Sergey78 релизит её версию для ZX-Evo. Вот на днях, он AlterEgo портировал с NES, к примеру. А я так, по мелочи, делаю, что умею. Цитата: Ofront сразу выдал ошибку дублирования имени. И подобные моменты, где Оберон имеет преимущества перед Си, я могу приводить десятками. Только меня никто не хочет слушать, напирая на рулезность всё ещё хорошо сохранившегося Си с плюсами и дотнета с джавами. ![]() ![]() То что Оберон язык по-серьёзней, бросается в глаза. Я, вот, обратил внимание на то, что из исходника сразу понятно, функция из какой библиотеки используется - не нужно лазить по h-файлам. До оберона, по-моему, дорасти надо. Пока поучусь как либы под него делать, а уж там поглядим. Кстати планов по либам много. Цитата: Кстати, можешь сообщить своё полное ФИО, добавлю в благодарности. И ЛС читай почаще. ![]() Я не скрываюсь, но ника пока вполне достаточно. |
Автор: | Zorko [ 16 сен 2013, 13:33 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Sergey писал(а): Вот захотел кто-то для спека Оберон попробовать из интереса, - безделицу какую-нибудь написать. И тут выясняется, что ему надо еще и обвязку к TR-DOS саомому писать (а трдос для спека - это наше всё), - т.е. дополнительный демотиватор на пути. А так, - пожалуйста. Вобщем-то да, хотя программеры для Спека — люди обычно не ленивые, кодинг-то на асме выглядит посерьёзнее, чем делание обвязок. ![]() Sergey писал(а): Zorko писал(а): Кстати, я НЕ считаю тебя неопытным разработчиком из-за этого ляпа. И очень даже зря. ![]() ![]() ![]() Sergey писал(а): Я по образованию и профессии - юрист. Программирование для меня - это хобби, поэтому критика приветствуется. Без проблем.Sergey писал(а): С сями давно познакомился. На Амиге - пока болел, написал распаковщик архивов Hrip (не опубликован). А SDCC осваивать и либы писать в этом году начал. Всё дело в увлечённости и энтузиазме. Если человеку интересно, он способен на многое. И, работая за деньги, редко получаешь такое удовольствие от внешне простенько выглядящих вещей (таких как игры на Спеке). ![]() Sergey писал(а): Просто сейчас, благодаря платформе ZX-Evolution, а тем более прошивке TS-Labs к ней, где почти все операции с графикой (растрами, шрифтом, спрайтами, тайлами и т.п.) и пересылки данных взяло на себя железо, появилась реальная возможность писать программы на высокоуровневых языках. Это, действительно, приносит свои плоды: не успеют открыться исходники (на Си) какой-нибудь игры для аналогичных спеку платформ, на следующий день Sergey78 релизит её версию для ZX-Evo. Вот на днях, он AlterEgo портировал с NES, к примеру. Здорово! Это талант. ![]() Правда, игры на Си для аналогичных Спеку платформ часто настолько пестрят низкоуровневыми фишками, что всерьёз рассматривать их портирование на что-то сильно отличающееся от Спека (даже если проц будет уже не Z80) наверное наивно, или просто это мне такие попадались? Да, вот бы заинтересовать Serge'я78 Обероном. Если конечно это возможно. ![]() Sergey писал(а): То что Оберон язык по-серьёзней, бросается в глаза. Я, вот, обратил внимание на то, что из исходника сразу понятно, функция из какой библиотеки используется - не нужно лазить по h-файлам. Верно. Это называется квалифицированный импорт (а имя модуля перед процедурой — квалификатором). Импорт Оберона является пересмотренным и улучшенным импортом Модулы-2, в которой это выглядело причудливее и сложнее. Квалификация обязательная, что даёт дополнительные плюсы — видно из какого модуля пришла сущность (это особенно важно для больших проектов — меньше путаницы). В Дельфи есть возможность необязательной квалификации (может опускаться), но и по сей день в Дельфи нет возможности, которая есть в Обероне — можно для сокращения обозначать имя квалификатора алиасом:Код: "OBERON"
Sergey писал(а): До оберона, по-моему, дорасти надо. Согласен. Я тоже считаю, что Оберон сильно опередил своё время. Вот современные кодеры, поизучав дотнет, уже столько понадпридумывали всяких понятий типа Code Injection, а в Обероне, которому чуть больше 25 лет, всё это легко реализуется, и без жуткого оверхеда в десятки мегабайтов, и без концептуальной сверхперегруженности, и без прослойки в виде виртуальной машины. Оберон прост и прозрачен. Даже скажу больше. Недостатки C, C++, C# и Java представляются мне абсолютно не подлежащими исправлению, по разным причинам. У Оберона недостатки тоже есть, но исправить их представляется весьма возможным. Например, Оберон подходит для чисто системного программирования несколько хуже, чем Си, но это с лихвой компенсируется его достоинствами, которые выходят на передний план при проектировании больших программных систем.Но скромных возможностей тружениика Z80, увы, недостаточны для того, чтобы полностью испробовать высокоуровневые средства Оберона — гибкое межмодульное взаимодействие (динамическая модульность с загрузкой-выгрузкой и переключением модулей), автоматическое управление памятью (снижающее вероятность её утечки), охрану типов (предотвращающую обращение не к тем областям памяти), моментальную отладку (термин мой; в других источниках её называют посмертной) — моментальное обнаружение и исправление ошибок без многочасовых бдений в отладчиках, работа со сложными иерархическими структурами данных и т.п. Мне очень ценно было узнать мнение slenkar'а: он реально поработал на Обероне и сказал, что допускает меньше ошибок, чем на Си. И к этому мнению чистого практика действительно стоит прислушаться. Всё это магия Оберона, за что и любим. ![]() Недостатки Оберона — совсем другого порядка, чем чисто языковые корявости. Мало библиотек. Мало пользователей. Мало инструментальных средств. Зато есть к чему приложить руку, не опасаясь, что завтра процессор X устареет и платформа Y придёт в упадок. Делаем как бы навечно! ![]() Sergey писал(а): Пока поучусь как либы под него делать, а уж там поглядим. Кстати планов по либам много. Что ж, рад приветствовать единомышленника! Мы тут люди вольные, делаем что нам нравится, и каждый в своём темпе, так что если тебе это по душе — добро пожаловать!ZXDev как среда разработки начался скромненько и вырос из простого желания ускорить спектрумного Дурака (от CopperFeet). Видит бог, на асм я его переписывать не хотел, поэтому адаптировал для начала под SDCC библиотеку Laser, и понеслось. И либы под разные платформы крайне нужны. Буду рад, если будешь вести разработку прямо на форуме, по ходу решая возникающие проблемы. Можем также сделать отдельный раздел для ZX-Evolution. |
Автор: | Zorko [ 21 сен 2013, 19:27 ] |
Заголовок сообщения: | Re: ZXDev + TR-DOS |
Sergey, есть парочка вопросов по TR-DOS, на случай когда буду адаптировать модуль XDev/Files под Спек. 1. Вызов trdosInit(), как я понимаю, является обязательным перед вызовом любой другой функции TR-DOS? А то я запихнул его в инициализатор модуля (в терминологии ООП — конструктор, только не класса, а модуля), а вдруг не нужно было? (в ZXDev/Basic я специально не добавлял процедуру Init в инициализатор, поскольку многие процедуры этой библиотеки работают без инициализации, и есть возможность на маленьких программках схитрить и сделать её необязательной). 2. Каким является размер блока данных, оптимальный для загрузки в TR-DOS? Или: какого размера секторами-кластерами и проч. читаются файлы в этой системе? Вопрос связан с тем, что для чтения и записи файлов побайтово есть смысл для эффективности использовать буфер. Каким лучше всего сделать его размер по умолчанию, чтобы не терять эффективность операций чтения-записи, но и не делать слишком больших расходов по памяти? |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |