Практикум по среде и языку QBasic 161
страницы). Пара чисел в начале каждого подзаголовка сообщает о размерах фонта.
Что касается остальных числовых параметров в заголовках, то любопытные могут при желании потренироваться на роль Шерлока Холмса или хотя бы доктора Ватсона.
Теперь вам не составит особого труда разобраться в нижеприведенной программе вывода символов фонта 8Х16 кодовой страницы 866 в увеличенном виде на экран дисплея. Если вы введете эту программу без ошибок, то она покажет вам с интервалом 1 с все символы с 0 по 255. Символы увеличенного размера выводятся желтым цветом на синем фоне, в верхнем левом углу экрана выводятся десятичные значения кода.
CLS 'очистка экрана POINT$ = STRING$(3, CHR$(219)) 'строковая константа "точка" EMPTY$ = " " 'строковая константа "пусто" DIM byte AS STRING * 1 'определение байта OPEN "C:\dos\ega3.cpi" FOR BINARY AS #1 'открытие файла I& = 39185 'адрес начала фонта 16Х8 FOR J% = О ТО 255 'начало цикла по 256 символам LOCATE 1, 1 'установка курсора в угол PRINT USING "###"; J% 'вывод номера символа COLOR 14, 1 'желтый цвет на синем фоне FOR К% = 1 ТО 16 'начало цикла по 16 строкам
I& = I& + 1 'следующий байт кодовой страницы
GET #1, I&, byte 'чтение байта кодовой страницы
Х$ = "" 'пустая заготовка для вывода
Z = ASC(byte) 'код байта
FOR JT% = 1 ТО 8 'начало цикла по битам
IF Z > 127 THEN 'проверка старшего бита на 1 Х$ = Х$ + EOINT$ 'добавление "точки" в заготовку Z = Z - 128 'стирание 1 в старшем бите ELSE 'иначе
Х$ = Х$ + EMPTY$ 'добавление "пусто" в заготовку END IF 'конец условного оператора Z = Z * 2 'сдвиг байта влево на 1 разряд NEXT JT% 'конец цикла по битам LOCATE 4 + К%, 30 'установка курсора по строке PRINT X$ ; 'вывод строки NEXT K% 'конец цикла по строкам COLOR 7, 0 'белый цвет на черном фоне SLEEP 1 ' ожидание 1 с NEXT J% 'конец цикла по символам CLOSE #1 'закрытие файла
Для перехода к соседней кодовой странице вам необходимо изменить адрес начала фонта на 9780 в ту или другую сторону. При необходимости вывода другого фонта нетрудно рассчитать, что для перехода от 8Х16 к 8Х14 необходимо увеличить адрес на 16*256 + 6 = 4102, а для перехода от 8Х14 к 8Х8 - на 14*256 + 6 = 3590. Не забывайте при этом изменять количество выводимых строк в символе на 14 и 8 соответственно.
В заключение спешу утешить тех читателей, которые еще помнят об обещанном в начале этого занятия ознакомлении с принципами записи информации в файл. Вас не обманули. Записывать в файл вы научитесь