Cтраница 3
Следующие далее макрокоманда GET и пять машинных команд составляют циклическую часть программы MAXIMUM, повторяющуюся столько раз, сколько карт с числами будет подложено к программе. При этом предполагается, что каждое число имеет ровно три цифры, отперфорированные в трех первых колонках карты. Когда после очередного перехода к макрокоманде GET последняя обнаружит, что карты с данными окончились, она передаст управление по адресу END, внесенному ранее в таблицу управления вводом. Команда UNPK переведет значение МАХ в зонный формат и запишет его в три байта, расположенные на поле С сразу после байта с внутренним кодом знака равенства. В левой половине младшего байта результата, имеющего адрес С 32, появится код знака плюс В 1100, выработанный командой АР. Поэтому макрокоманда PUT напечатает правильно все три цифры результата. При этом первая буква М слова МАКСИМУМ будет расположена на бумаге на 20 позиций правее левого края поля печати. [31]
Для адаптера CGA в режиме четырех цветов ( 320X200 точек) на каждую точку приходится два бита. Таким образом, один байт содержит информацию о двух точках. Соответственно образована копия фрагмента экрана в памяти при использовании процедур Getlmage и Putlmage. Любая строка прямоугольной области экрана закодирована четырьмя последовательностями байт, каждая из которых отображается на свою карту памяти. Поэтому один байт содержит информацию о восьми точках экрана, но через равные промежутки в памяти встречаются еще три байта, которые несут всю дополнительную информацию об этих же восьми точках. Прямая адресация в видеопамять EGA затруднена. Она требует задействовать специальные регистры видеопамяти, иначе все адреса свыше 64К ( а видеопамять EGA может достигать 256К) окажутся недостижимыми. Ниже приведен пример упрощенной программы, позволяющей читать картинку из файла в формате известного графического редактора PaintBrush. Изображение, созданное для адаптера CGA в системе PaintBrush, сохраняется в файле, а затем программой, написанной на Паскале, считывается из файла, раскодируется, записывается в память и после этого командой Putlmage заносится в видеопамять экрана. [32]