ГЛАВА 5
МЕТОДЫ ВВЕДЕНИЯ РУССКОГО ШРИФТА
Обеспечение возможности работы компьютера с символами русского
алфавита является, наверное, одной из первых задач для того, кто хочет
писать программы на SPECTRUM'e.
Есть два принципиально различных подхода к решению этой задачи.
Первый состоит в использовании символов графики пользователя, а второй -
в создании нового набора символов, размещении его в оперативной памяти
и назначении его действующим с помощью системной переменной CHARS.
ИСПОЛЬЗОВАНИЕ ГРАФИКИ ПОЛЬЗОВАТЕЛЯ
В графическом режиме Вы можете, во-первых, набирать символы блоч-
ной графики (псевдографики), расположенные на цифровых клавишах, а так-
же можете пользоваться символами графики пользователя. Их может быть до
21; они воспроизводятся нажатием на клавиши от «А» до «и» в графическом
Ьежиме (курсор «G»). Изображения символов графики пользователя должны
быть сформированы в специальной области памяти, на которую указывает
системная переменная UDG.
Адрес, в котором расположено изображение символа (8 байтов), можно
получить с помощью функции USR. Таким образом, заслав 8 байтов,
формирующих изображение, скажем, буквы «Я», в память, начиная с адреса
USR "А", мы получим возможность печатать букву «Я» в графическом
режиме нажатием буквы «А».
Учитывая, что многие буквы русского и латинского алфавитов имеют
сходное начертание, можно задать прописные буквы, не имеющие латинских
аналогов, и при этом уложиться в разрешенное количество символов (21).
Изображение буквы «Я» формируется из пикселей (точек экрана).
Например так:
00000000 0*128+0*64+0*32+0*16+0*8+0*4+0*2+0*1« О
00111110 0* 128+0*64+1 *32+1*16+1 *8+1 *4+1 *2+0* 1 -62
01000010 0*128+1*64+0*32-К)*16-К)*8+<)*4+1*2-К)*1 -66
01000010 0* 128+1*64+0*32+0* 16+0*8+0*4+1 *2+0* 1 «66
00111110 0* 128+0*64+1 *32+1 * 16+1 *8+1 *4+1 *2+0* 1 «62
00100010 0* 128+0*64+1 *32+0* 16+0*8+0*4+1 *2+0* 1 =34
01000010 0*128+1 *64-Ю*32+0*16-Ю*8-Ю*4+1*2-Ю*1 -66
00000000 0* 128+0*64+0*32+0* 16+0*8+0*4+0*2+0* 1 - О
Таким образом формируется шаблон буквы «Я», то есть, эту букву мы
представляем, размещая в определенном месте последовательность из сле-
дующих 8-ми байтов: 0,62,66,66,62,34,66,0. Таким же образом можно
изобразить и остальные желаемые символы. Для тех, кто не хочет долго
возиться с битами, мы предлагаем небольшую программу, которую Вы може-
те набрать и выгрузить на ленту. Всякий раз, как у Вас возникнет необ-
ходимость в русских буквах, загрузите ее (LOAD) и стартуйте (RUN). После
остановки программы дайте LIST, э затем продолжайте набирать свою
программу со строки 100.
10 FOR ZfI ТО 20
20 READ А$
30 FOR Х=0 ТО 7
40 READ Y
50 POKE USR А$ + X,Y
60 NEXT X
70 NEXT Z
80 DATA "B",0,126,64,124,66,66,124,0
81 DATA "G' ,126,64,64,64,64,64,0
82 DATA UD",0,28,36,36,36,36,126,66
83 DATA "J",0,65,73,62,73,73,65,0
84 DATA 4T %66,70,74,82,98,66,0
85 DATA "L",0,30,34,34,34,34,98,0
86 DATA "P",0,126,66,66,66,66,66,0
87 DATA "0M,0,66,66,36,24,16,96,0
88 DATA "C' ,68,68,68,68,68,126,2
89 DATA "H",0,66,66,66,126,2,2,0
90 DATA "N",0,65,73,73,73,73,127,0
91 DATA "M",0,65,73,73,73,73,127,1
92 DATA "E' ,60,66,30,2,66,60,0
93 DATA "IT,0,76,82,114,82,82,76,0
94 DATA "A",0,62,66,66,62,34,66,0
95 DATA "S'24,66,70,74,82,98,66,0
97 DATA "TM,0,192,64,124,66,66,124,0
98 DATA "F",0,127,73,73,73,127,8,0
99 DATA "Q",0,66,66,114,74,74,114,0
В результате работы этой программы устанавливается следующее соот-
ветствие между клавишами и символами русского алфавита (при работе в
графическом режиме!):
ИЗМЕНЕНИЕ НАБОРА ЗНАКОВ
Набор знаков компьютеров SPECTRUM'a состоит из 96 символов и
занимает 96*8»768 байтов. Стандартный набор находится в ПЗУ по адресу
15616. Этот адрес определяется с помощью системной переменной CHARS'
PRINT PEEK 23606 + 256»РЕЕК 23606 + 256 <ENTER>
15616 O.K.
При этом в ячейке 23606 находится 0. а в ячейке 23607 - 60. Изменение
набора знаков состоит в том. чтобы с помощью какой-либо специальной
программы или вручную сформировать желаемый набор знаков в любом сво-
бодном месте памяти и адрес этого места занести в ячейки 23606 и 23607
Рассмотрим конкретный пример.
1. Для формирования набора знаков очень удобно испопьзовать
графический редактор ARTSTUDIO. Эта программа является идеальным
графическим редактором, позволяющим легко создавать графические
изображения и конструировать шрифты. Выгрузим сконструированный
шрифт на магнитную ленту.
2. ДопусУйм, мы хотим разместить новый шрифт с адреса 30000.
Загрузим его с ленты;
LOAD ""CODE 30000,768.
3. Системная переменная CHARS должна указывать на адрес, нахо-
дящийся на 256 байтов ниже, чем набор, т.е. на 30000 - 256 = 29744.
4. Определим старший байт (двухбайтной переменной) CHARS.
В2« INT (29744/256) - 116
5. Теперь младший байт CHARS:
В1 -29744 - 116*256 «48
6. Чтобы переключиться на печать сформированным шрифтом, надо:
РОКЕ 23606,48: РОКЕ 23607,116
7. Обратное переключение (на стандартный латинский шрифт):
РОКЕ 23606,0 : РОКЕ 23607,60