Название: Cache': перехват текущего устройства
Вид работы: доклад
Рубрика: Информатика и программирование
Размер файла: 14.08 Kb
Скачать файл: referat.me-137353.docx
Краткое описание работы: Неудобство стандартных устройств mumps состоит в том, что если выполняется программный код, осуществляющий ввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе как установкой возможных опций устройству.
Cache': перехват текущего устройства
Евгений Каратаев
Эта заметка описывает программный перехват ввода-вывода текущего устройства в Cache'. Неудобство стандартных устройств mumps, а точнее определенного их поведения состоит в том, что если выполняется программный код, осуществляющий ввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе как установкой возможных опций устройству. В то время как в некоторых случаях очень нужно иметь возможность выполнить так называемый унаследованный (legacy) код, который оперирует текущим устройством, но при этом в самих операциях ввода-вывода произвести дополнительные действия.
Ситуация примерно аналогична вводу-выводу в сишном стиле и в стиле C++, когда в первом случае мы можем открыть файл и передать его коду, а во втором случае мы можем создать объект ввода-вывода и переопределить для него операции чтения - записи.
Для перехвата операций ввода-вывода текущего устройства нужно
Сделать отдельную рутину, в которой прописать функции, вызываемые при операциях ввода-вывода.
Указать текущему устройству эту рутину как мнемоническую в команде use
Включить перенаправление для текущего устройства
В функциях переопределяющих операции ввода-вывода можно использовать штатное поведение текущего устройства если отключить перенаправление и при выходе из обработчика снова его включить.
Рутина-перехватчик должна реализовать на свое усмотрение метки
rstr(len,to) | Чтение с опциональным указанием заданной длины и таймаута |
rchr(to) | Чтение номера символа |
wstr(expr) | Запись строки W expr |
wchr(expr) | Запись символа W *expr |
wtab(expr) | Запись пропуска W ?expr |
wnl | Перевод строки W ! |
wff | Очистка экрана W # |
Шаблон рутины примерно такой:
rstr(len,to)
D $ZU(82,12,0)
if $D(len)&&$D(to) d
. ; перехват
. R data#len:to
e i $D(len) d
. ; перехват
. R data#len
e i $D(to) d
. ; перехват
. R data:to
e d
. ; перехват
. R data
D $ZU(82,12,1)
; перехват
Q $G(data)
rchr(to)
D $ZU(82,12,0)
i $d(to)
. ; перехват
. R *data:to
. ; перехват
e d
. ; перехват
. R *data
. ; перехват
D $ZU(82,12,1)
; перехват
Q data
// W expr
wstr(expr)
D $ZU(82,12,0)
; перехват
W expr
D $ZU(82,12,1)
Q
// W *expr
wchr(expr)
D $ZU(82,12,0)
; перехват
W *expr
D $ZU(82,12,1)
Q
// W ?expr
wtab(expr)
D $ZU(82,12,0)
; перехват
W ?expr
D $ZU(82,12,1)
Q
// W !
wnl
D $ZU(82,12,0)
; перехват
W !
D $ZU(82,12,1)
Q
// W #
wff
D $ZU(82,12,0)
; перехват
W #
D $ZU(82,12,1)
Q
После чего можно пользоваться, указывая прехватчик:
u dev::"^ИМЯРУТИНЫ" ; указываем какую мнемонику использовать
D $ZU(82,12,1) ; реально включаем флаг использования
d normal() ; что будет писать в текущий девайс
D $ZU(82,12,0) ; перед закрытием девайса возвращаем флажок
c dev
Кроме программного назначения перехвата для обработки вывода наследованного кода можно использовать также и другие возможности: спулер, запись-чтение внешних файлов, межпроцессное взаимодействие.
Похожие работы
-
Максимальное ускорение алгоритма поиска
Если производится поиск DWORD-числа среди набора (массива) таких же значений, то самым оптимальным и скоростным будет последовательное сравнение заданного значения со всеми элементами массива до обнаружения совпадения.
-
Двунаправленный динамический список
Листинг программного изделия на языке программирования “С”. #include #include #include #include typedef struct inform {char name[15],fam[15],fanem[15],b_day[3],b_manth[10],b_year[5],zodiak[8];
-
Билеты по информатике 10 класс: Visual Basic
Билет №2 Do While L } S выполняется S }если L-истина Loop } Do }S выполняется S }пока L-истина Loop While L } Do }S выполняется S }вечно, пока не [exit do] } будет перехода
-
Шины
Виды системных шин. Пропускная способность шины.
-
HDD Utility
Как говорит разработчик, HDD UTILity - программный комплекс, ориентированный на IDE Hard Disk Drives и предназначенный для диагностики, измерения производительности, восстановления сбойных участков поверхности.
-
Как сделать двунаправленный запрос
Можно ли сделать в Cache' такой запрос, чтобы его можно было бы прокручивать назад, например что-то вроде команды, парной к Fetch, например Prior. Собственные средства Cache' почему-то не предоставляют такой возможности.
-
Комментарии в Cache
Стандартный однострочный комментарий. Стандартный двойной комментарий. Макрокомментарий.
-
Форматирование текстовых документов
Выбор шрифтов. Окно Шрифт со списком установленных шрифтов. Работа с отступами и параметрами страницы. Верхний и нижний колонтитулы. Обрамление и заливка. Колонки. Таблицы. Сноски. Примечания и исправления.
-
Физическая и функциональная структура микропроцессора
Функционально микропроцессор делят на операционную и интерфейсную части. В состав микропроцессора Pentium входят: ядро МП, исполняющий модуль, регистры, блок для работы с числами, кэш первого уровня, блоки декодирования инструкций и интерфейсные шины.
-
Подготовка дистрибутива MUI к установке
Microsoft выпустила 6 CD с MUI, на каждом из которых содержится несколько различных языков. CD с MUI не распространяются через розничную сеть, и доступны только корпоративным пользователям.