Операционные системы, среды и оболочки. Лабораторная работа 1. Работа с видеопамятью в текстовом режиме. Общее задание: Выполнить задание в виде функции в отдельном модуле. Написать программу, наглядно демонстрирующую все аспекты работы функции. Язык: Borland Pascal или Borland C++ Средства реализации: - обращение к видеопамяти как к массиву (смещение - $b800, в BP - массив mem[]) - работа с буфером (воспомогательным массивом) Требования: - работа сдается в двух файлах сдемонстрацией компиляции и запуска - файлы должны называться следующим образом: для С++ - GGlLvVV.cpp - основная программа и GGlLvVV.hpp - модуль для Pascal - GGlLvVV.pas - основная программа и GGlLvVVu.pas - модуль здесь большие латинские буквы надо заменить на соответствующую информацию: GG - группа: IS - для ИС-21, PR - для ПРИ-21, MD - для МОД-21 L - номер лаб. работы, в данном случае 1 VV - номер варианта: 02, 06, 12 и т. д. пример имен файлов: isl1v25.cpp - основная прогр. на C++, вариант 25, работа 1, группа ИС-21 mdl1v01u.pas - модуль на Pascal, вариант 1, работа 1, группа МОД-21 - первые пять строк каждого файла должны содержать комментарий со следующей информацией: Фамилия, Имя, Группа, Предмет, Номер работы, Номер варианта, Основная (демонстрационная) программа или Воспомогательный (функциональный) модуль, - следующие несколько строк каждого файла должны содержать данный вариант задания в виде комментария, - каждому объявлению процедуры или функции должна предшествовать строка комментария, с пояснением ее назначения. - первый файл содержит основную (демонстрационную) программу, здесь не должно присутствовать описания и реализации процедур или функций, а только вызов стандартных процедур и одной (единственной) процедуры (функции) из воспомогательного (функционального) модуля. Основная (демонстрационная) программа должна наглядно демонстрировать все аспекты работы реализованной процедуры (функции) путем имитации ее использования в программном продукте. То есть, здесь должно имитироваться неоторое осмысленное наполнение текстового экрана, затем осуществляться вызов реализованной функции (для вариантов задания реализующих элементы интерфейса - многократный вызов в различных областях экрана). В результате на экране должно оставаться его исходное содержимое (имитированное демонстрационной программой). - второй файл содержит описане и реализацию функции, выполняющей вариант задания, а также всех воспомогательных процедур и функций. В интерфейсе модуля должна находиться только основная функция, реализующая вариант задания. - вся работа с текстовым экраном (исключая демонстрационную программу) должна производиться посредством непосредственного обращения к к сегменту памяти видеоадаптера (B800h). - в буфер следует сохранять минимальный объем информации. - программа должна компилироваться и выполняться на любом терминале, в случае необходимости дополнительных настроек компилятора их следует описать в комментарии после текста задания. Варианты задания могут быть сформулированы в общих чертах, за пояснениями сути задания следует обращаться к преподавателю. Все варианты заданий условно делятся на два типа: - элементы пользовательского интерфейса (помечены как "интерфейс"). - процедуры демонстрационного назначения (помечены как "демонстрация"). Требования для вариантов помеченых как "интерфейс": - на вход основной функции подаются (начальные) координаты отображения элемента интерфеса (рамочки, ...), - в демонстрационной программе основная функция вызывается многократно с различными входными параметрами. - возвращаемый функцией результат никак не отображается. - затирается только та часть экрана, где должна разместиться рамка. - в буфере хранится только затираемая часть экрана. Требования для вариантов помеченых как "демонстрация": - в демонстрационной программе основная вункция вызывается однократно. - в буфере хранится минимальный объем информации. - содержимое экрана до и после выполнения оновной функции должно быть идентичным. Варианты задания: 1. интерфейс Запрос типа Да/Нет в виде рамки с двумя кнопками. После получения информации с клавиатуры восстановить содержимое экрана. Вернуть целое число. 2. интерфейс Запрос на введение текстовой строки в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 3. интерфейс Запрос на введение фиксированного цифрового кода в виде рамки. Сразу после введения корректного кода вернуть единицу. По нажатию клавиши Esc вернуть ноль. Вместо введенных цифр отображать символ *. После получения информации восстановить содержимое экрана. 4. интерфейс Запрос в виде вертикального меню из трех опций. Вернуть номер выбранной позиции. После получения информации восстановить содержимое экрана. 5. интерфейс Запрос в виде горизонтального меню из трех опций. Вернуть номер выбранной позиции. После получения информации восстановить содержимое экрана. 6. интерфейс Рамка с бегущей строкой. Отображение прекратить по нажатию на клавишу. После сворачивания рамки восстановить содержимое экрана. 7. интерфейс Рамка с надписью, перемещаемая клавишами курсора. Отображение прекратить по нажатию на клавишу Enter. Следить за восстановлением содержимого экрана. 8. демонстрация Циклическая прокрутка содержимого экрана при помощи клавиш курсора. Отображение прекратить по нажатию на клавишу Enter. 9. демонстрация Вывод на экран текстового файла, с возможностью прокрутки его содержимого вниз и вверх. По нажатию на клавишу Esc отображение прекратить, содержимое экрана восстановить. 10. демонстрация Пробегание цветовых волн (столбцов или строк, в пределах которых меняется цвет символов или фона) по экрану. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 11. демонстрация Перемещение по экрану цветового пятна (области, в пределах которой меняется цвет символов или фона) при помощи клавиш курсора. Действие прекратить по клавише Enter. Следить за сохранностью содержимого экрана. 12. демонстрация Изменять регистр буквенных символов на экране по строкам или по столбцам. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 13. интерфейс Деформируемая клавишами курсора рамка с отображением размеров внутри рамки. Отображение прекратить по нажатию на клавишу Enter. Следить за восстановлением содержимого экрана. 14. интерфейс Перемещение курсора по экрану с отображением в рамке позиции. Действие прекратить по клавише Enter. Следить за сохранностью содержимого экрана. 15. демонстрация Перемещение курсора по экрану с отображением его проекций на краях экрана. Действие прекратить по клавише Enter. Следить за сохранностью содержимого экрана. 16. демонстрация Постепенная перемена местами символов на экране. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 17. демонстрация Звездное небо. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 18. демонстрация Постепенная перемена местами строк и столбцов на экране. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 19. демонстрация Броуновское движение символа на экране. Действие прекратить по нажатию на клавишу. Следить за сохранностью содержимого экрана. 20. интерфейс Запрос на введение целого числа в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 21. интерфейс Запрос на введение действительного числа в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 22. интерфейс Запрос на введение двоичного числа в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 23. интерфейс Запрос на введение шестнадцатиричного числа в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 24. интерфейс Запрос на введение восьмеричного числа в виде рамки с полем ввода. После получения информации восстановить содердимое экрана. Вернуть указатель на строку. 25. демонстрация Сохранить содержимое экрана в текстовом файле.