Referat.me

Название: 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 не распространяются через розничную сеть, и доступны только корпоративным пользователям.