С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Добрый день, Patron.
Работаю с привязкой HD к каталогу Windows. Пока не сделаю dir hd7: или squ hd7: - у меня скопированные из RT файлы в каталоге windows не появляются. Проблема в том, что если копирование файлов делать из командного файлы - то и dir со squ не помогают. Конкретно у меня такая последовательность команд:
MOUNT '$ld' '$fn'.dsk
INITIALIZE/NOQUERY '$hd7'
DIRECTORY/COLUMNS:1/FULL/BLOCKS/VOLUME '$ld'
COPY/IMAGE/NOLOG '$ld' '$hd7'
DISMOUNT '$ld'
SQUEEZE/NOQUERY '$hd7'
DIRECTORY '$hd7'
.ask Ready Ready
после этого в каталоге Windows только BootSectors.bin
Пришлось пойти на извращение. Вот такая последовательность
MOUNT '$ld' '$fn'.dsk
INITIALIZE/NOQUERY '$hd7'
DIRECTORY/COLUMNS:1/FULL/BLOCKS/VOLUME '$ld'
COPY/IMAGE/NOLOG '$ld' '$hd7'
DISMOUNT '$ld'
DIRECTORY '$hd7'
.ask Ready Ready
DIRECTORY '$hd7'
.ask Ready Ready2
приводит к цели - я вижу всё скопированное на hd7:
В связи с этим вопрос - можно ли как то пнуть из RT появление файлов в каталоге Windows, что бы без двух команд dir hd7:?
Какой?
- - - Добавлено - - -
Не факт, что из командика приведёт к успеху - сейчас налетел на то, что если на первый вопрос Ready нажать быстро два раза Enter - тоже не появляется. Морг-морг!
Обычно такое волнует при пакетной обработке - тогда можно просто в конце командного файла закрыть эмулятор утилитой RT-11: EXIT.SAV
В принципе - можно добавить контроллеру HD ( по аналогии с закрывающей эмулятор командой EXIT ) команду принудительной синхронизации конкретного виртуального диска с подключенным каталогом или принудительной синхронизации всех виртуальных дисков, если номер привода не указан, но насколько это актуально?
Последний раз редактировалось Patron; 09.08.2017 в 17:59.
Пакетник в данном случае - файл для ind.sav - и в нем цикл, который крутится, пока не обработает все .dsk файлы. Так что EXIT.SAV - не выход из положения.
А хрен её знать.
Собственно, это у меня такой извращённый способ извлечения файлов из эмулятора (идут разборки с моей файловой помойкой). Пока я копирую извлечённые из .dsk файлы руками (хотя в принципе ничего невозможного в плане написания скрипта под windows, который будет сам копировать копируемое в нужный каталог и давать сигнал пакетнику, что можно переходить к обработке следующего .dsk - нет - и вот тогда эта несинхронность будет проблемой).
Давайте попробуем зайти с другой стороны - а почему в данном сценарии работы с HD есть задержка в синхронизации содержимого HD и связанного с ним каталога Windows и почему dir может привести к синхронизации?
Потому что файловые операции RT-11 устроены так, что содержимое каталога RT-11 не должно изменяться в промежутке между чтением сегмента каталога в буфер USR и записью ранее считанного сегмента каталога из буфера USR. Гарантией, что записи из буфера USR не будет - является только очередное чтение сегмента каталога в буфер USR и поэтому только в этот момент возможна автоматическая синхронизация.
Но на самом деле - идея с принудительной синхронизацией хороша ещё и тем, что это единственный способ разблокировать запрет синхронизации при наличии в каталоге временного файла. На текущий момент ситуация такова, что если программа создала временный файл и потом ухитрилась вылететь так, что операционка этот временный файл не сбросила и он остался в каталоге - то синхронизация такого каталога блокируется, поскольку при наличии в каталоге временных файлов - внешнее изменение распределения виртуального диска невозможно. Тогда по команде принудительной синхронизации всех приводов - контроллер HD тут же удалит все временные файлы из каталогов всех виртуальных дисков ( в многозадачных операционках - верная дорога к краху ).
Последний раз редактировалось Patron; 09.08.2017 в 18:23.
Понятно. Ну, поскольку я нашёл обходной манёвр и он пока меня устраивает - бросаться что-то срочно реализовывать смысла пока А когда появится возможность выдачи какой либо команды принудительной синхронизации (я так понимаю - через .SPFUN?) - тогда и переделаю скрипты
- - - Добавлено - - -
Спасибо!
Через запись слова команды в регистр контроллера.
Но в принципе - тему можно развить. Дело в том, что сейчас синхронизация производится всегда сразу в обе стороны, поэтому не может осуществляться в тех случаях, когда внешние изменения содержимого каталога RT-11 недопустимы. Если же предусмотреть возможность отдельной синхронизации только "наружу" ( для приведения каталога Windows в соответствие с каталогом RT-11 ), то на её осуществление теоретических ограничений нет. На практике ограничением является нежелательность читать/писать содержимое каталога Windows без нужды. В такой ситуации введение команды контроллера для синхронизации только "наружу" - может быть весьма удобным при отсутствии побочных эффектов.
Это я уже про драйвер Понятно, что на более низком уровне - команда для самого контроллера.
Если к этому подойти со стороны - это (как бы) диск эмулируемой системы, с которым она работает фактически на блочном уровне (и контролирует файловую систему) - наверное, это будет правильно и идеологически. Хотя возможность таким образом залить что то внутрь эмулируемой системы (причём очень простым способом) - тоже приятная возможность . Но на крайняк это можно сделать, когда эмулируемая система выключена.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)