ZX Spectrum для пользователей и программистов 1991 г.

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


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

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

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

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

PRINT USR "А"

либо

PRINT PEEK 23 675+25 6*РЕЕК 23676

А изменить (конечно, в разумных пределах) операторами:
РОКЕ 23675,<адрес>-256*таТ(<адрес>/256): POKE 23676,INT(<a«pec>/256)

или

RANDOMIZE <адрес>: POKE 23675.PEEK 23670:POKE 23676,PEEK 23671

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

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

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

9900 INPUT "Starting address: ";a$
9905 IF a$="" THEN LET a$="65368"
9910 LET s=VAL a$
9915 RANDOMIZE s

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

9925 FOR c=1 TO 20

9930 READ a$

9935 FOR s=0 TO 7

9940 READ sx

9945 POKE USR a$+s,sx

9950 NEXT s

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 DATА "J",0,73,73,62,73,73,73,0

9964 DATA "I",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 "O",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 "F",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 на экране будут печататься следующие русские:

Q

Ы

D

Д

Е

Э

F

Ф

R

Ь

G

Г

Т

Ъ

Н

Ч

U

Ю

J

Ж

I

И

L

Л

О

У

С

Ц

Р

П

В

Б

А

Я

N

Ш

М

Щ

S

Й

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

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

SAVE "RUS"CODE USR "A",168

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

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

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

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

_Использование дополнительных фонтов

Другим, более гибким способом русификации является переключение
работы компьютера с основного набора символов (фонта) на другой, подгружаемый в память.

Полный набор символов ZX Spectrum состоит из 96 знаков — большие и маленькие латинские буквы,
цифры, знаки препинания и т. д. Он занимает в ПЗУ 96x8=768 байт и не может быть изменен. Однако
существует системная переменная CHARS, указывающая местоположение набора символов, с которым в
данный момент работает компьютер (текущего фонта). Изменив значение этой переменной, можно назна-
чить текущим фонт, расположенный по другому адресу, например, в ОЗУ. Переменная CHARS находится по
адресам 23606/07 и при работе со стандартным набором указывает на адрес 15360 (число, на 256 мень-
шее адреса начала фонта в ПЗУ, см. «Системные переменные»).

Для изменения адреса текущего фонта нужно выполнить следующие
операторы:

INPUT "address: ";a: REM адрес нового фонта

POKE 23606,a-256*INT (a/256):POKE 23607,INT (а/256)-1

Файл с полным набором символов, созданных в графическом редакторе, записывается на магнитный но-
ситель и обычно имеет длину 768 байт. Для загрузки фонта и назначения его текущим можно воспользо-
ваться следующей подпрограммой:

9989 INPUT "Starting address: ";a: REM адрес загрузки шрифта

9990 IF a<25000 OR a>64768 THEN GO TO 9989

9991 CLEAR a-1: LET a=PEEK 23730+2S6*PEEK 23731 + 1

9992 LET RUS=9996: LET LAT=9998

9993 LOAD "RUS"CODE a: REM загрузка шрифта

9994 LET a2=INT (a/256)-1: LET a1=a-256*INT (a/256)

9995 STOP

9996 POKE 23606,a1: POKE 23607,a2: REM русский регистр

9997 RETURN

9998 POKE 23606,0: POKE 23607,60: REM латинский регистр

9999 RETURN

Теперь для переключения на русский шрифт достаточно вызвать
подпрограмму, расположенную со строки 9996, то есть выполнить оператор GO SUB RUS, а для возвраще-
ния к латинскому — оператор GO SUB LAT. Переключения можно производить как в непосредственном ре-
жиме, так и вставляя операторы GO SUB в программу. В последнем случае можно получать на экране од-
новременно и латинский, и русский текст. Например, дописав в рассмотренную выше программу не со-
всем понятную строку

10 GO SUB LAT: PRINT "ZX Spectrum -";: GO SUB RUS:
PRINT "moj drug"

и запустив программу командой RUN, на экране получим вполне
осмысленную фразу:

ZX Spectrum — мой друг

При выводе листинга текст на экране может быть представлен только либо латинским, либо русским
шрифтом.

Адрес размещения подгружаемого фонта рекомендуется выбирать в
конце ОЗУ (например, 64768). Количество дополнительных фонтов, одновременно находящихся в памяти,
ограничено лишь ее объемом.

Если область, которую занимают фонты, защитить оператором CLEAR
(как это сделано в приведенном примере), то они не будут удаляться из памяти даже после выполнения
оператора NEW.

Заметим, что этот способ русификации программ наиболее универсален — такие программы будут рабо-
тать на любом Spectrum-совместимом компьютере, в отличие от других вариантов, когда, например,
русский фонт «зашивается» в стандартов ПЗУ. Правда, размещение кириллицы в ПЗУ

дает и определенные удобства, но, обычно, лишь ценой частичной, а иногда и полной потери совмести-
мости с ZX Spectrum.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Программы - Exhumator: программа для "эксгумации дисков".
Реклама и обьявления - нарисуйте заставку к журналу.
Программистам - Системы: Редактор миссий к игре Laser Squad
Millennium’1901 - Вдогонку уходящему Линолеуму (выводы и размышления).
Проект - О проекте Virtual FunTop (первое виртуальное демопати).

В этот день...   21 ноября