Операционные системы, среды и оболочки. Лабораторная работа 4. Перекрытие прерываний и резидентные программы. ----------------------------------------- Общее задание. -------------- Написать резидентную программу, использующую механизм перекрытия прерываний. Совместно с преподавателем выбрать себе вариант задания. Работа сдается в правильно закомментированных исходниках (не более трех файлов с именами как в первой работе), с демонстрацией работы и пояснением принципов реализации. Языки: pascal, c/c++. Важное замечание. ----------------- В случае возникновения сомнений, неопределенностей, дилемм, касающихся задания работы попытаться выполнить одно из следующих действий (именно в таком порядке): 1. Изучить литературу по предмету (включая конспект лекций) и таким образом лучше понять свое задание. 2. Реализовать все возможные варианты решения. 3. Обратиться за разъяснениями к преподавателю. Варианты задания. ----------------- 1. При нажатии ключевой комбинации клавиш (выбирается в параметрах запуска) сохранять содержимое экрана (текстовые режимы) в файл с именем "scrXXX.txt", где индекс XXX выбирается в порядке возрастания с учетом наличиствующих в текущем каталоге файлов. 2. При отсутствии сигналов от клавиатуры в течение 1 минуты начать выполнение процедуры экранной заставки (одного из вариантов первой работы, помеченного как "демонстрация"). Заставку убрать по нажатию на клавишу или по введенному паролю (режим выбирается параметром запуска). 3. При нажатии ключевой комбинации клавиш (выбирается в параметрах запуска) менять написание некоторого набора символов. Набор символов и его новое написание хранится в файле, имя которого передается программе через параметры запуска. 4. Анализируя содержание специального файла производить запуск указанных программ в указанное время. Имя файла передается как параметр запуска. 5. При нажатии ключевой комбинации клавиш (выбирается в параметрах запуска) вызвать процедуру калькулятора в специальном окне. Следить за сохранностью содержимого экрана при выходе из процедуры. 6. В указанный в параметрах запуска момент времени вызвать процедуру последовательного вывода некольких кадров (хранимых в файлах) на экран. 7. При нажатии ключевой комбинации клавиш (выбирается в параметрах запуска) вывести полную карту содержимого оперативной памяти (блоки) в файл с именем "memXXX.txt", где индекс XXX выбирается в порядке возрастания с учетом наличиствующих в текущем каталоге файлов. 8. Несколько свободных векторов прерываний перенаправить на процедуры, выполняющие элементарные матричные операции (сложение, перемножение и т.д.). Написать обычную программу вычисляющую матричные выражения путем вызова прерываний. 9. Сохранять весь консольный вывод, пользуясь временным файлом, реализовать прокрутку экранного буфера. 10. В указанные в специальном файле моменты времени производить сохранение содержимого видеопамяти в файлы с именами "scrXXX.txt", где индекс XXX выбирается в порядке возрастания с учетом наличиствующих в текущем каталоге файлов. Имя файла расписания указывается в параметрах запуска. 11. В указанные в специальном файле промежутки времени производить сохранение всего консольного ввода в файлы с именами "conXXX.txt", где индекс XXX выбирается в порядке возрастания с учетом наличиствующих в текущем каталоге файлов. Имя файла расписания указывается в параметрах запуска. 12. После ввода ключевой последовательности символов сохранять весь консольный ввод в файл. Ключевая последовательность, имя выходного файла и его максимальный размер указываются в параметрах запуска программы. 13. После ввода ключевой последовательности символов подменять весь консольный ввод содержимым файла. Ключевая последовательность и имя выходного файла указываются в параметрах запуска программы. 14. При нажатии ключевой комбинации клавиш сохранять полные оглавления (со сканированием подкаталогов) указанных в специальном файле каталогов в файлы с именами "dirXXX.txt", где индекс XXX выбирается в порядке возрастания с учетом наличиствующих в текущем каталоге файлов. Ключевая комбинация клавиш и имя входного файла указываются в параметрах запуска программы. 15. При нажатии ключевой комбинации клавиш в специальном окне открывается для просмотра некий файл. После окончания просмотра окно закрывается, а содержимое экрана восстанавливается. Ключевая комбинация клавиш и имя файла для просмотра указываются в параметрах запуска программы. 16. В специальном файле, имя которого указывается в прараметрах запуска, хранится список соответствия комбинаций клавиш и команд. Реализорвать вызов команд по нажатию соответствующих комбинаций клавиш. Имя входного файла указывается в параметрах запуска программы. 17. В указанное в параметрах запука программы время вывести в специальном окне текст файла, имя которого также указывается при запуске. По клавише Escape закрыть окно и восстановить содержимое экрана под ним. 18. При нажатии ключевой комбинации клавиш в специальном окне появляются поля ввода двух натуральных чисел, а также две кнопки "А" и "С". После ввода чисел и выбора кнопки посчитать и вывести в том же окне соответствующую комбинаторную формулу. Комбинация клавиш указывается в параметрах вызова программы. 19. В файле указаны слова, соответствующие некоторым клавишам. Заменять при вводе символы на соответствующие слова. Имя входного файла указывается в параметрах вызова. 20. В файле указаны слова, соответствующие некоторым символьным последовательностям (начинающиеся с них). При вводе дописывать слова. Имя входного файла указывается в параметрах вызова. 21. По нажатию контрольных клавиш отображать и скрывать часы в окне. Контрольные клавиши указываются в параметрах запуска. 22. По нажатию контрольных клавиш отображать и скрывать, а также останавливать и запускать таймер в окне. Контрольные клавиши указываются в параметрах запуска. 23. При вводе ключевой последовательности символов, случайным образом перемещать курсор. Ключ указывается как параметр запуска. 24. В заданный при запуске момент времени отключить несколько клавиш. Во второй зхаданный момент времени - включить их обратно. 25. В заданный при запуске момент времени перевести системные часы на час назад.