User Tag List

Страница 35 из 72 ПерваяПервая ... 313233343536373839 ... ПоследняяПоследняя
Показано с 341 по 350 из 714

Тема: Контроллер псевдодиска на SD-карте для ДВК/ УКНЦ / PDP-11 original + Ethernet

  1. #341

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Так вроде можно с помощью макроса .DSTAT.
    О! А я и забыл, что он существует в природе! Самое то!

    А можно еще вопрос? Как лучше принять ключик с консоли или из командного файла? Мне что-то кроме .CSISPC ничего в голову не приходит...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  2. #342

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну да, там в RT-11 три макрокоманды всего, 1-я строку отдаёт как есть и более ни гу-гу, вторая производит разбор строки по системному алгоритму, третья кроме разбора - открывает файлы
    В принципе можно ещё способы придумать, но они редкие и неуниверсальные...(например буфер SL посмотреть, но если SL нет или не той версии, то в пролёте)

  3. #343

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    А можно еще вопрос? Как лучше принять ключик с консоли или из командного файла? Мне что-то кроме .CSISPC ничего в голову не приходит...
    .CSIGEN/.CSISPC самое простое.
    Можно воспользоваться табличным парсером из RSXLIB (так же есть отдельно в RT-11 source kit), но это несколько муторный вариант.
    Ну и с самим разбором строки вручную есть особенности.
    Начиная с RT-11 V5.02 (кажется) все просто: строка копируется в chain area в оригинальном виде, обнаружив ее там, ее можно оттуда же и разобрать, а с помощью .GTLIN просто выбрать чтобы она не прилетела вместо следующей команды.
    В более старых RT-11 командная строка не копируется - тут только сразу выбирать .GTLIN'ом, но учитывать, что при запуске в виде "FILE command" если в командной строке есть пробелы, строка преобразуется к CSI формату ("A B" в "B=A").

    Так что если нет особых требований (многобуквенные ключи, хитрый их формат итд), то .CSISPC самое то.

    - - - Добавлено - - -

    Цитата Сообщение от Alex Посмотреть сообщение
    отдаёт как есть
    Не совсем как есть - при явном указании командной строки для программы, .GTLIN переводит строку в CSI формат (ну или точнее - до .GTLIN она дойдет уже в CSI формате).
    Последний раз редактировалось form; 22.05.2020 в 12:15.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  4. #344

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще-то .GTLIN я применял, при вводе строки с клавиатуры.Что мне нравилось - SL на ней работал
    Не надо было с редактором строки заморачиваться .
    Из командного файла, знал, что считывает строку, но особо с этим не заморачивался, просто учитывал, что строка может уйти не туды...
    Последний раз редактировалось Alex; 22.05.2020 в 13:49.

  5. #345

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Собственно, меня интересовало, как потёмкинский МХ передает управление от SET-программы себе же, загруженному в качестве простой программы, и как он при этом передает себе параметры, причем так, что можно и запустить его вручную, командой R MX и потом набрать для него команды. Я собираюсь сделать нечто подобное для AZ. Вроде бы был у меня его (МХ) исходник, но найти не удалось. Тогда я вспомнил, что чем-то похожим занимается драйвер LD и полез смотреть LD.MAC, сначала из бонусного дистрибутива, потом из 5.1. Отличаются заметно, тем не менее...

    В общем,это делают так:

    1. В программе установки SET-параметров собирают командную строку и переносят ее с адреса 522 (почему не 510? С 510 по 520 - нули).
    2. Делают .CHAIN
    3. В запущенной программе первым делом проверяют, по .CHAIN ее запустили, или нет. Если да, то третьим параметром .CSISPC делают 522, иначе - ноль.
    4. Делают .CSISPC и радуются жизни.

    То есть, если программу запустили по .CHAIN, то .CSISPC разберет строку, выложенную с адреса 522, если же ее вызвали командой монитора R, то CSISPC попросит эту командную строку из того же источника, откуда поступила команда вызова ее самой - неважно, командный файл это или ручной набор на клавиатуре.

    Непонятно, почему у LD строку выкладывают с адреса 522 - ведь в руководстве по макро .CHAIN явно написано, что строку можно начинать с адреса 510. А в LD.MAC после DBLK для файла драйвера явно прописаны пять слов нулей - .WORD 0 и .WORD 0,0,0,0. Без меток,так, что туда ничего не пишут. И в 5.1, и в бонусном...

    В общем, я планирую для AZ 4 (вернее 3) команды - SET AZ (NO)AUTONEt, SET AZ NETON и SET AZ NETOFF. Первая команда будет рулить драйвером на диске - сеть дефолтно будет включена (AUTONE) или нет (NOAUTONE), сработает это только после перезагрузки, как и заявлено для команд SET любых драйверов. Вторая и третья будут рулить драйвером в памяти, независимо от параметра (NO)AUTONE, то есть, надо - включили сеть, надо - выключили. В частности, это необходимо из-за моей недоработки: в первичном загрузчике старых версий я некорректно сбрасываю контроллер, из-за чего при запуске системы со старым драйвером командой BO AZn: из-под системы с активной сетью, загрузка валится.

    А теперь один вопрос. Это ведь не догма, что область 204-377 отведена под код инсталляции, а область 400-777 - под код SET ? Да, входы в эти программы должны лежать в этих областях, но если мне не хватит места для кода SET, а в инсталляции у меня его еще много, я ведь могу прогуляться туда CALL'ом? В памяти-то во время SET'а присутствует весь нулевой блок драйвера, вместе с первым, если что?
    Последний раз редактировалось AFZ; 22.05.2020 в 20:24.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  6. #346

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    LD строку выкладывают с адреса 522 - ведь в руководстве по макро .CHAIN
    LD для команд использует .EXIT с запуском командного файла, при этом в 510 пишет длину, в 512 и далее строки. А .CHAIN начиная с 510 принимает имя программы - так видимо LD сам себя запускает.

    Цитата Сообщение от AFZ Посмотреть сообщение
    Это ведь не догма, что область 204-377 отведена под код инсталляции, а область 400-777 - под код SET ?
    Не догма, но правила нужно соблюдать
    Если не нужна процедура инсталяции, то 200/202 лучше не трогать или забить парой RETURN.
    Если не нужны команды SET, то 400 обязан содержать 0, а все остальное можно пользовать (драйвер VS так делает - у него большая процедура инсталяции перепрыгивает через 400 и идет дальше.

    Маленький хинт: драйвер не ограничен двумя блоками для обработки команд SET.
    Можно использовать область блока #1 как оверлейный буфер и подгружать нужное (пример можно посмотреть в исходниках SL, LD и других).

    - - - Добавлено - - -

    Цитата Сообщение от AFZ Посмотреть сообщение
    1. В программе установки SET-параметров собирают командную строку и переносят ее с адреса 522 (почему не 510? С 510 по 520 - нули).
    2. Делают .CHAIN
    .CHAIN начиная с 510 должен содержать имя программы для передачи.

    - - - Добавлено - - -

    Вообще, передавать себе управление через .CHAIN необязательно.
    В принципе можно прочитать код программы в память начиная с 1000 (все реквизиты в SET хандлере мы для этого имеем, а канал 17 открыт на файле драйвера), а потом передать управление в нужное место.
    Правда если памяти совсем мало свободной - для такого маневра может не хватить места

    - - - Добавлено - - -

    Ну и еще что следует помнить - это то, что формат команды SET не ограничивается одной настройкой в команде.
    Соответственно там где подразумевается .EXIT/.CHAIN стоит делать проверку и предупреждать что часть команды будет проигнорена (пример есть в SL).
    Последний раз редактировалось form; 22.05.2020 в 20:47.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

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

  8. #347

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    .CHAIN начиная с 510 должен содержать имя программы для передачи.
    С 500. .RAD50 /SY LD SYS/; (после "LD" 4 пробела), а с 510 уже свободно.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  9. #348

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    С 500. .RAD50 /SY LD SYS/
    Точно, с 500.
    Кстати еще нюанс - если используем DBLK, не забываем что драйвер не обязательно называется XX.SYS.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  10. #349

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Не догма, но правила нужно соблюдать
    Если не нужна процедура инсталяции, то 200/202 лучше не трогать или забить парой RETURN.
    Да нет, нужно и то и другое.

    Цитата Сообщение от form Посмотреть сообщение
    Если не нужны команды SET, то 400 обязан содержать 0, а все остальное можно пользовать (драйвер VS так делает - у него большая процедура инсталяции перепрыгивает через 400 и идет дальше.
    Так у меня, похоже, ситуация обратная - и я планирую если что, перепрыгнуть из области SET в хвост области инсталляции.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  11. #350

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Так у меня, похоже, ситуация обратная - и я планирую если что, перепрыгнуть из области SET в хвост области инсталляции.
    Можно, но в условиях когда хочется побольше кода, мне кажется, что проще временно перекрывать блок #1 загруженного для выполнения SET кода. Тогда будет целый блок кода (или больше если перекрывать не один раз).
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

Страница 35 из 72 ПерваяПервая ... 313233343536373839 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 116
    Последнее: 20.01.2024, 17:40
  2. Ответов: 327
    Последнее: 03.12.2019, 22:49
  3. Контроллер IDE PATA для QBUS (Э-60, ДВК)
    от Жека:) в разделе Новодел
    Ответов: 4
    Последнее: 04.05.2012, 14:40

Ваши права

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