User Tag List

Показано с 1 по 10 из 12

Тема: Estex DSS и shell

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Romych Посмотреть сообщение
    приложение должно подстраиваться под ОС для которой оно написано.
    А не получится подстроиться под CCP. Ведь это может быть требуемым условием - чтобы файл не оканчивался переводом строки (например если этот файл - часть полученная split-ом большого файла), и тогда type (если оно аналог CPM и MSDOS) или cat (если аналог unix) пришлось бы чтобы подстраиваясь к выводу на экран добавлять в конце вывода отсебятину. Что не давало бы обратно собрать из кусочков оригинальный файл: внедрялась бы отсебятина.

    Кстати, все еще актуален вопрос - чем в estex принято просматривать файл в CCP (type,cat,...) ?

    Сразу задам еще вопросики. Потом объединю в первом посте, будет шпаргалка для начинающих.
    Есть ли дока по устройству estex? В которой было бы описано:

    1) откуда стартует и где заканчивается TPA (область в адресном пространстве процессора где программа пользователя может использовать ОЗУ адресного пространства CPU без подключения доп. страниц и с гарантией что ее там никто не пропилит). Интересует окружение когда прога запущена из CCP как "стандарт" (FN по-хорошему при старте чужой проги должен отдавать ей такое же окружение, да FN и вообще может не быть. FN же для запуска DSS 40h (64) EXEC использует или что-то своё? А DSS 40h (64) EXEC - стандарт окружения или тоже не гарантия?).
    Ну т.е. по остаточной памяти в 16к сегменте 0 сидит BIOS/DSS, с 4000h где-то еще вкрапления экранов, и с какого то адреса должна начаться "безопасная область". 8000..BFFF "взятые с потолка" как в большинстве примеров, это слишком мало. Вопрос со стеком тут ранее уже задавали, тоже осталось не совсем понятно: DSS при выполнении "чреватых" операций уносит стек на свой безопасный с восстановлением оригинального при выходе из п/п или нет? Стек ниже BFFF - это неудобно.

    2) Как приложению передается строка параметров ОС (то что мы наколотили в строке ввода shell) - в каком-то буфере? Или адрес буфера не гарантирован и требуются функции типа 43h (67) GSWITCH (Get command line switch), довольно странного вида?

    3) Estex делает ли предразбор строки (как делали CPM и MSDOS заполняя FCB1 и FCB2)?

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

    Это вопросы, сразу возникающие при первом helloworld, и сходу (без лазания в чужие проги) не освещенные (или не на поверхности). Т.е. to be continued... КМК, статья, которая тут получится (или FAQ), будет полезна всем. В т.ч. как и общий знаменатель чтобы не плодить зоопарк.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    1) откуда стартует и где заканчивается TPA (область в адресном пространстве процессора где программа пользователя может использовать ОЗУ адресного пространства CPU без подключения доп. страниц и с гарантией что ее там никто не пропилит). Интересует окружение когда прога запущена из CCP как "стандарт" (FN по-хорошему при старте чужой проги должен отдавать ей такое же окружение, да FN и вообще может не быть. FN же для запуска DSS 40h (64) EXEC использует или что-то своё? А DSS 40h (64) EXEC - стандарт окружения или тоже не гарантия?).
    Ну т.е. по остаточной памяти в 16к сегменте 0 сидит BIOS/DSS, с 4000h где-то еще вкрапления экранов, и с какого то адреса должна начаться "безопасная область". 8000..BFFF "взятые с потолка" как в большинстве примеров, это слишком мало. Вопрос со стеком тут ранее уже задавали, тоже осталось не совсем понятно: DSS при выполнении "чреватых" операций уносит стек на свой безопасный с восстановлением оригинального при выходе из п/п или нет? Стек ниже BFFF - это неудобно.
    При старте из шелла простейшее приложение helloworld из примера стартует с таким набором страниц:
    0000..3fff = FB:82 {page:xframe}
    4000..7fff = FF:A2
    8000..bfff = F6:C2
    c000..ffff = FF:E2

    что прискорбно (т.к. это фактически с 16кб ОЗУ TPA), и сразу надо начинать с операций над страницами (либо уживаться как есть если приложение маленькое).

    Цитата Сообщение от Error404 Посмотреть сообщение
    2) Как приложению передается строка параметров ОС (то что мы наколотили в строке ввода shell) - в каком-то буфере? Или адрес буфера не гарантирован и требуются функции типа 43h (67) GSWITCH (Get command line switch), довольно странного вида?
    Адрес буфера передается приложению параметром в регистре IX и обычно равен "адресу посадки" минус 128. Буфер хранится в виде такой структуры: <length>< cmdline>0000h<self>
    что похоже на то как командная строка передается в CP/M и MSDOS
    Последний раз редактировалось Error404; 05.02.2022 в 23:10.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

    Этот пользователь поблагодарил Error404 за это полезное сообщение:

    Romych(06.02.2022)

  4. #3

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Кстати, все еще актуален вопрос - чем в estex принято просматривать файл в CCP (type,cat,...) ?
    type чёто поломался. толи исходник битый, толи не понятно. не работает. надо чинить.

    откуда стартует и где заканчивается TPA
    так исторически сложилось, что "система" при запуске какой то программы выдаёт этой проге N памяти. если она до 16кб, то 1 страница. если больше, то больше. например, зачем твоему helloword`у тпа в 60кб? не нужно. а если вдруг потребовалось, то, опять же, так сложилось, что прога запрашивает у системы сколько ей нужно памяти. Вопрос - правильно это или нет тут не стоит. оно просто есть 20 лет как и меняться уже не будет. страницу воткнуть можно 2мя способами - системный вызов (медленно) и "ручками" через порты (быстро) можно перед установкой нужной страницы, старое содержимое прочитать и запомнить. вообще, тпа тут такая штука, что если надо, то все 64кб тебе доступны. ведь выделенную страницу можно воткнуть в 0е окно. но, при выходе надо восстановить в ней системную страницу.

    Как приложению передается строка параметров ОС
    ты почти всё верно сказал, кроме одного момента - строка ком.строки начинается по смещению -128 от адреса старта программы. а вот по смещению -3 от комстроки есть ещё 3 переменные:
    CMD line size(IX+0)
    File handle for preloader(IX-3)
    Memory handle(IX-2)
    Level(IX-1)
    Estex делает ли предразбор строки
    есть функция разбора строки. но при запуске программы её нет смысла разбирать (не разбирает).

    установка текстовых режимов в начале каждого консольного приложения как я вижу в некоторых исходниках - это требование или перестраховка?
    какой то определённой системы в этом плане у нас не сформировалось. это конечно плохо. надо как то исправлять.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

    Этот пользователь поблагодарил Sayman за это полезное сообщение:

    Error404(06.02.2022)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Estex API
    от Smalovsky в разделе Sprinter
    Ответов: 11
    Последнее: 26.07.2021, 00:10

Ваши права

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