cObj - ещё одна программа для разработчиков

...
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Хорошо - при опции -d будет добавляться заголовок в духе:

fprintf(outfile, "LIBRARY %s\n\n", basename(argv[IN]));
fputs("EXPORTS\n", outfile);
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

С опцией -c я явно погорячился, 54.2 выполняется успешно,
НО ни CEdit, ни TINYPAD не видят данных, хотя друг с другом обмениваются успешно
Здесь
- либо я "забыл" правильно оформить посылаемую информацию (что скорее всего точно верно);
- либо CEdit c TINYPAD используют legacy interface не использующий sysfn 54.
Скорее всего и то и другое ...

Конечно я не использовал и половину времени - "ещё не вечер",
но считаю правильным оставить -c для версии 0.3 :
TODO (ver.0.3)
помещение информации в карман:

[а также поместить кнопку и <Ctrl + C> для той же функции]
заголовок .def файла:
[поместить кнопку <Ctrl + D> переключения отображения .def заголовка]
обмен информацией по IPC:
-i
Вывод информации об использовании при отсутствии командной строки
(возможно при наличии опции -h)


А для версии 0.2:
TODO (ver.0.2)
(1) Закомментировать нерабочий код для опции -c
(2) Обкатать на реальном компьютере
(3) Проверить вывод ошибок в случае, когда окно не отображается
(4) Выслушать и как-то учесть пожелания команды разработчиков Kolibri OS


Код и исполняемый файл: https://drive.google.com/file/d/17_FUrb ... sp=sharing
Исполняемый файл cobj_c находится в папке bin .
Видео сессии использования: https://drive.google.com/file/d/1D1_ty ... sp=sharing
Надеюсь Google у вас не заблокирован и у меня с cсылками всё получилось правильно ...

И да - я переключаюсь на экзекуцию ассемблерного варианта (считается, что GUI версия - это оригинал).
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Сразу предупреждаю, я так удачно реализовал опцию -c.
что Clipview падает намертво ... [Edit: была старая версия, новая бы не упала]

Edit:
Уже разобрался с -с , как только нашёл пример, так и разобрался ...
Сообщил, чтобы кто-то не бросился мне помогать - не тратил зря время.
Так что всё-таки направляюсь в направлении ver.0.3 - и как же я -i буду тестировать ?..

Однако выстрел выявил сразу два бага:
- ядро по идее не должно принимать некорректный контейнер; [Edit: но у разработчиков ядра есть своё мнение, и это правильно]
- Clipview не должен вылетать, получив неожиданные данные на вход. [Edit: а новая версия и не вылетает]

Edit2: (v.0.3 "пре релиз")
Демонстрация использования:
https://drive.google.com/file/d/1ufAvrm ... sp=sharing
Исходники и исполняемый файл (в bin/):
https://drive.google.com/file/d/1UdH45G ... sp=sharing
Last edited by Valery on Sun Jul 31, 2022 4:31 pm, edited 1 time in total.
Doczom
Posts: 126
Joined: Tue Nov 03, 2020 5:47 pm
Has thanked: 1 time
Been thanked: 2 times

Re: cObj - ещё одна программа для разработчиков

Post by Doczom »

ядро не производит проверку содержимого контейнера, кроме размера вроде, проверка на содержимое происходит в программе, которая получает эти данные. Какую версию clipwiev вы используете и какие данные туда вводите(полностью всю структуру)?
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

ядро не производит проверку содержимого контейнера, кроме размера вроде
Похоже ничего не проверяет ... Размер то можно было проверить ... Ну ладно: хозяин - барин.
какие данные туда вводите
Вводил текст по прямой, без контейнера ...
Разведка боем: решил попробовать и ... ядро приняло, а clipview вылетел намертво.

Но версия была устаревшая - прошлогодняя,
в версии из (почти) последнего дистрибутива clipview не падает а выдаёт информацию,
что тип данных неизвесте: то есть работает корректно.
(Я прямо дальше писал - что не разобрался, потому и оказалось:
- поведение ядра соответствует замыслу разработчиков (не баг);
- баг устаревшей версии в новой версии полностью устранён.
Так что простите пожалуйста, если кого нечаянно обидел. )
Doczom
Posts: 126
Joined: Tue Nov 03, 2020 5:47 pm
Has thanked: 1 time
Been thanked: 2 times

Re: cObj - ещё одна программа для разработчиков

Post by Doczom »

ничего, бывает, но всё же стоит сделать копирование в соответствии с документацией(если кратко то записать перед самой строкой 3 dword, в первом длина сообщения, включая эти данные, во втором тип содержимого, то есть 0, в третьем кодировка, 0-utf8 1-866(ASCII) 2-cp1251)
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

но всё же стоит сделать копирование в соответствии с документацией
Уже сделано - в "пре релизе" копирование работает в соответствии с документацией.
(о чём я сразу сообщил: "Уже разобрался с -с , как только нашёл пример, так и разобрался ...", но видимо невнятно ...)
Дополненная ассемблерная версия уже на подходе и там -c тоже работает (в соответствии с документацией).

В любом случае спасибо за помощь !
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Уже готов пре релиз версии CObj на ассемблере:
cObj.kex
(1.32 KiB) Downloaded 13 times
, только надо убрать расширение .kex .
Код: https://drive.google.com/file/d/1Yz45GM ... sp=sharing
Демонстрация работы: https://drive.google.com/file/d/181-u6 ... sp=sharing

От изначальной версии (автор Albom) остались лишь код загрузки console.obj, да инициализация с "финализацией".
Ввиду введения дополнительных возможностей и более 50% собственного кода, считаю вправе
- не упоминать ни себя, ни автора изначальной версии в заголовке программы (есть упоминание в тексте кода);
- установить "лицензию" Public Domain.

P.S.
Замечу, что пре релиз подразумевает условно законченную работу (с удовлетворительным качеством - "на троечку").
Так что задачу с версией на C также удалось выполнить в срок (который завтра истекает) - "на троечку".
[смотрите ранее по теме]
Для ассемблерной версии "троечка" уже есть, но есть и более чем 20 дней срока.

Основная проблема - для тестирования IPC требуется писать отдельную программу (либо довести shell).
User avatar
rgimad
Posts: 162
Joined: Mon Apr 06, 2020 1:09 pm
Has thanked: 6 times
Been thanked: 1 time

Re: cObj - ещё одна программа для разработчиков

Post by rgimad »

ох как опций много стало) это круто, надо только предусмотреть хэлпу в самой программе
The best way to predict the future is to create it.
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Для ассемблерной версии есть минимальная подсказка (если вызвать без аргументов [cObj] или с -h [cObj -h] (сейчас только что прокрутил в голове алгоритм и возник хороший вопрос, а сработает ли так? [cObj xxx -h] точно сработает - надо будет проверить)).
C версия в этом случае выводит более развёрнутый текст но несколько корявый.
Учту в версии 0.4 - постараюсь улучшить текст в C - версии и перенести его также в ассемблерную версию.

TODO1: надо поправить алгоритм так, чтобы первый аргумент до опции -f , не начинающийся с '-' был интерпретирован как
имя obj - файла, (сейчас имя obj-файла обязательно должно идти самым первым)
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Главная проблема преодолена - появилась возможность протестировать опцию -i :
https://drive.google.com/file/d/11_Q7a5 ... sp=sharing
Теперь остаётся править баги ...
P.S.
Самым лёгким способом оказалось сделать fork программы shell и прикрутить там взаимодействие с вызываемыми программами по IPC.
User avatar
rgimad
Posts: 162
Joined: Mon Apr 06, 2020 1:09 pm
Has thanked: 6 times
Been thanked: 1 time

Re: cObj - ещё одна программа для разработчиков

Post by rgimad »

круто! ждем релизов
The best way to predict the future is to create it.
Valery
Posts: 81
Joined: Tue Jul 19, 2022 11:41 am
Has thanked: 1 time
Been thanked: 6 times

Re: cObj - ещё одна программа для разработчиков

Post by Valery »

Пришла пора бета релиза (с этого момента разработка постепенно переходит в стадию поддержки) ...
Процесс совершенствования - это бесконечный процесс, но надо вовремя остановится.
Если не потребуется серьёзно переделывать программу, то после полугода версия будет изменена на 1.0 - полноценный релиз.

C-версия (полностью автономная):
cObj.kex
(2.16 KiB) Downloaded 8 times
Архив с исходным кодом: https://drive.google.com/file/d/1mKNOu ... sp=sharing
Демонстрационное видео: https://drive.google.com/file/d/1mTMBjv ... sp=sharing
Лицензия: Public Domain

FASM-версия (70% зависимлсть от console.obj, но работает и без, хотя "пользователи вряд ли захотят использовать её без console.obj"):
cObj.kex
(1.63 KiB) Downloaded 8 times
Архив с исходным кодом:https://drive.google.com/file/d/1_SQjdb ... sp=sharing
Демонстрационное видео:https://drive.google.com/file/d/1jMAiSW ... sp=sharing
Лицензия: Public Domain

В видео используется изменённая версия программы shell:
sh.kex
(8.02 KiB) Downloaded 8 times
Лицензия GNU GPL требует распространения только предоставив иходный код:
https://drive.google.com/file/d/1ba08b5 ... sp=sharing

С-версия вряд ли будет Вам нужна, а вот насчёт ассемблерной - хорошо бы было чтобы кто-то из команды разработчиков предоставил услугу по размещению исходников в автосборку ... Макросы здесь не используются, локализации тоже нет, так что размещение должно быть тривиальным.

P.S.
(1) Поддержка коммуникации по имеющемуся протоколу shell (с использованием разделяемой памяти) мною отвергается - она в разы сложнее, этот протокол вроде как нигде не используется (IPC правда тоже), она также shell специфичная (правда это означает, что придётся мне взяться за shell - в изменённой версии, в частности, доведены до ума обёртки системных вызовов - иначе они просто не собираются компилятором clang);
(2) C-версия только на 30% больше, чем FASM-версия пр том, что самостоятельно занимается графическим интерфесом. Так что если код на ЯВУ написан грамотно - 30% экономии места является абсолютным пределом.
(3) Предыдущая версия использует заимствование одной тривиальной стандартной функции из dietlibc. От неё пришлось отказаться (ибо dietlibc имеет лицензию GNU GPL, а я хочу Public Domain)- надо было не рыться по библиотекам, а написать свою версию - сэкономил бы часок другой времени.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest