ZX-Spectrum & TR-DOS для пользователей и программистов 1994 г.

Русификация ZX SPECTRUM - использование символов, определяемых пользователем.


РУСИФИКАЦИЯ ZX SPECTRUM

Один из первых вопросов, который задают наши соотечественники
при покупке импортного компьютера: «А можно ли его приспособить для
работы с русским шрифтом, попросту — русифицировать?». Вопрос резо-
нен, ведь каждый желает общаться с машиной на своем родном языке. И
если Вы остановили свой выбор на ZX Spectrum, то можете не волноваться
— он легко обучаем любому языку.

Использование символов, определяемых пользователем

Самый простой способ русифицировать ZX Spectrum — это поместить
русский шрифт в область графических символов, определяемых пользователем
(UDG — User defined graphics). Эти символы вводятся с клавиатуры в режиме
курсора G. Область UDG представляет собой блок в ОЗУ длиной 168 байт
(см. «Архитектура ZX Spectrum»). Адрес начала области задается системной
переменной UDG (23675/76). Его значение можно узнать, выполнив один
из следующих операторов:

PRINT USR "А"
либо

PRINT РЕЕК 23675+256*РЕЕК 23676

А изменить (конечно, в разумных пределах) операторами:

РОКЕ 23675,<адрес>—256*1ЫТ(<адрес>/256): РОКЕ 23676,1ЫТ(<адрес>/256)
или

RANDOMIZE <адрес>: РОКЕ 23675,РЕЕК 23670: РОКЕ 23676,РЕЕК 23671

Применение UDG позволяет создать до 22 символов произвольного
начертания, в том числе буквы русского алфавита — кириллицу. Вы можете
возразить, что для этого маловато будет 22 знаков, и будете правы. Но обойти
проблему помогает использование латинских букв, схожих по начертанию с
русскими (О, А, Е и др.).

Напомним, что под каждый символ на экране ZX Spectrum выделяется
знакоместо, размером 8x8 точек. Его можно представить в цифровом виде
как последовательность из 8 байт, в которых каждой высвеченной на экране
точке соответствует установленный в единицу бит. Например, изображение
графического символа в виде буквы Я, можно задать байтами:

0, 62, 66, 66, 62. 34, 66, 0

Прокомментируем это:

00000000 0x128+ 0x64+ 0x 32+ 0x16+ 0x8+ 0x4+ 0x2+ 0x1 =0

00111110 0x128+ 0x64+ 1x32+ 1x16+ 1x8+ 1x4+ 1x2+ 0x1 =62

01000010 0x128+ 1Х64+ 0x32+ 0x16+ 0x8+ 0x4+ 1x2+ 0x1 = 66

01000010 0X128+ 1X64+ 0X32+ 0x16+ 0x8+ 0x4+ 1x2+ 0x1 =66

00111110 0X128+ 0X64+ 1x32+ 1x16+ 1x8+ 1x4+ 1x2+ 0x1 =62

00100010 0x128+ 0x64+ 1x32+ 0x16+ 0x8+ 0x4+ 1x2+ 0x1 =34

01000010 0x128+ 1x64+ 0X32+ 0x16+ 0x8+ 0x4+ 1x2+ 0x1 =66

00000000 0x128+ 0x64+ 0x32+ 0x16+ 0x8+ 0x4+ 0x2+ 0x1 =0

Точно также можно сконструировать и остальные символы кирилли-
цы, хотя это и очень утомительно. Поэтому для тех, кто хочет побыстрее
увидеть на экране Speccy все 32 русские буквы, мы предлагаем небольшую
готовую программу. Она создает один из вариантов русского шрифта и
загружает его в область графических символов, определяемых пользовате-
лем. После запуска программы на запрос Starting address: введите начальный
адрес размещения 16 8-байтного блока графики. Если Вас устраивает стан-
дартный адрес, устанавливаемый операционной системой (65368), нажмите
клавишу Enter.

9900 INPUT "Starting address: ";a$

9905 IF a$="" THEN LET a$="65368"

9910 LET s=VAL a$

9915 RANPOMIZEs

9920 POKE 23675,PEEK 23670: POKE 23676.PEEK 23671

9925 FOR c=1 TO 20

9*30 READ a$

9935 FOR s=0 TO 7

9940 READ sx

9945 POKE USR a$+s,sx

9950 NEXTs

9955 NEXT с

9960 DATA "B",0,124,64,124,66,66,124,0

9961 DATA "G",0,126,64,64,64,64,64,0

9962 DATA "D",0,28,36,36,36,36,126,66

9963 DATA "J",0,73,73,62,73,73,73,0

9964 DATA "Г,0,66.70,74,82.98,66,0

9965 DATA "L",0,30,34,34,34,34,98,0

9966 DATA "P",0,126,66,66,66,66,66,0

9967 DATA "0",0,66,66,36,24,16,96,0

9968 DATA "C',0,68,68,68,68,68,126,2

9969 DATA "H",0,66,66,66,62,2,2,0

9970 DATA "N".0,65,73,73,73,73,127,0

9971 DATA "M",0,65,73,73,73,73,127,1

9972 DATA "E",0,60,66,30,2,66,60,0

9973 DATA "U",0,76,82,114,82,82,76.0

9974 DATA "A",0,62,66,66,62,34,66,0

9975 DATA "S",24.66.70.74.82,98,66,0

9976 DATA "R",0,64,64,124,66,66,124,0

9977 DATA "T",0,192,64,124,66,66,124,0

9978 DATA ^",0,62,73,73,73,62,8,0

9979 DATA "Q",0,66,66,114,74,74,114,0

Если в эту программу вставить строку

9956 RETURN

то ее можно использовать как подпрограмму, например:

10 LET s=23296: GO SUB 9915: REM s - адрес загрузки шрифта
20 PRINT "РУССКИЙ ЗНАКОГЕНЕРАТОР ЗАГРУЖЕН С АДРЕСА ";s

После выполнения программы вместо латинских букв в режиме
курсора G на экране будут печататься следующие русские:

Вместо остальных русских символов используйте эквивалентные по
написанию заглавные латинские буквы А, В, Е, К, М, Н, О, Р, С, Т, X и
цифру 3.

На самом деле, вовсе не обязательно приведенную программу загру-
жать и выполнять каждый раз, когда Вам нужен русский шрифт. Достаточно
сделать это один раз и записать сформированную область UDG-символов на
магнитный носитель в виде кодового файла:

SAVE "RUS"CODE USR "А", 168

После этого Вы сможете, вставив в любую программу команду
LOAD "RUS"CODE

загрузить эти 168 байт и пользоваться кириллицей.

Если Вам не нравится начертание какой-либо русской буквы, можете
самостоятельно ее нарисовать и вычислить значения соответствующих 8
байт. Хотя, конечно, можно и облегчить себе жизнь, воспользовавшись одной
из множества специальных программ, с помощью которых символы конст-
руируются быстро и наглядно.

Несмотря на ряд преимуществ (быстрый доступ посредством режима
Graphics, относительно небольшой объем занимаемой памяти), этот способ
русификации Speccy обладает и очевидными недостатками: необходимость
перехода из режима курсора G в режим С в процессе работы с русским
текстом, невозможность одновременного определения заглавных и строчных
букв (из-за малого размера области UDG), нестандартное расположение
символов на клавиатуре.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Анкета - Результаты опроса "Лучшее программы".
Hints - секреты, читы и хитрости в играх: Super Cars, Net Walk.
Новости - Краткая хроника событий с октября 2006г. по март 2007г.
Разное - Новости от Progress, Dream Team, Rush, Phantasy, Copper Feet и т.д.
Beatles - GET BACK.

В этот день...   19 апреля