ГЛАВА 14
НАБОР СИМВОЛОВ
Краткое содержание: CODE, CHR$, POKE, PEEK,USR, BIN.
Буквы, цифры, знаки пунктуации обозначаются символами и образуют
алфавит или набор символов, используемый компьютером. Отдельные
символы называемые знаками, образуют целые слова,, например: PRINT,
STOP и т.д.Компьютер ZX Spectru. использует 256 символов с кодами от 0 до 255.
Все они приведены в приложении А. Для преобразования из символьной
<(ю|)мы во внутреннюю кодовую и наоборот служат две функции CODE иCODE применяется к строке символов и возвращает код внутреннего
представления первого символа в строке или 0, если строка пустая.CHR$ применяется к числу и возвращает один символ, код которого
представлен этим числом.Следующая программа выводит весь отображаемый символьный набор:
10 FOR А-32 ТО 255: PRINT CHR$ A;: NEXT АВсе эти символы (кроме знака фунта и 'с' в кружочке)-образуют код
ASCII (American Standart Codes for Information Interchange).Следующие символы не входят в ASCII, но используются в ZX
SPECTRUM.Первые из них, это 15 чёрно-белых значков, называемых псевдог-
рафическими символами и используемых для изображения рисунков. Их
можно ввести с клавиатуры используя, так называемый, графический режим.
Если Вы нажмёте GRAPHICS (CAPS SHIFT "9"), то курсор изменится на [G].
Теперь цифровые клавиши с 1 по 8 выдают графические символы, обозна-
ченные на клавишах, а если при этом удерживать CAPS SHIFT, то они будут
выдавать инверсные символы, т.е. чёрное становится белым, а белое
чёрным.Независимо от CAPS SHIFT, клавиша с цифрой 9 обеспечивает Вам
возврат к обычному ([L] - курсор) режиму, а клавиша с цифрой 0 функцию
DELETE.ГРАФИЧЕСКИЕ СИМВОЛЫ
ГРАФИЧЕСКИЕ СИМВОЛЫ
![]()
где: <G> - графическая мод«
![]()
где: <G> - графическая мод«
<G> SH - то же, но с удержанием CAPS SHIFT
После графических символов на клавиатуре располагаются символы ал-
фавита от А до U. Графические значения эти клавиш могут определяться
самим пользователем, а затем использоваться в графическом режиме.
Определение графики этих клавиш проиллюстрируем на примере опреде-
ления символа буквы греческого алфавита "Пи".• 1) каждый символ представляется точками в матрице 8x8, поэтому
мы вначале начертим диаграмму, приведённую на рисунке. Мы
оставим по одной клетке по периметру символа для отделения его
от соседних знаков.• 2) закрепим данный символ за клавишей "Р", так, чтобы при
нажатии клавиши в графическом режиме выдавался Символ "Пи".![]()
• 3) запрограммируем это изображение. Каждый определяемый
пользователем символ запоминается в памяти восмью знаками, по
одному на каждый ряд. Вы можете записать их используя функцию
BIN с обозначением цифрой 0 чистой точки и 1 закрашенной точки.BIN 00000000
BIN 00000000
BIN 00000010
BIN 00111100
BIN 01010100
BIN 00010100
BIN 00010100
BIN 00000000Эти восемь двоичных чисел запоминаются в памяти в восьми ячейках,
каждая из которых имеет свой адрес. Для нашего символа адрес первого из
восьми байтов в группе будет USR "Р". Второй байт имеет адрес USR
иР"+1 и т.д. до USR "Р"+7. USR - функция преобразования строки симво-
лов в адрес первого байта в строке. Строковый аргумент может содержать
единственный символ, который будет обозначать символ, определяемый
пользователем. Имеются и другие применения функции USR с числовым ар-
гументом, но об этом позже. Поясним всё сказанное программой:
10 FOR N-0 ТО 720 INPUT ROW: POKE USR "P"+N,ROW
30 NEXT NДанная программа вводит 8 двоичных чисел, определяющих графику
:им- вола, закрепляемого за клавишей "Р". Оператор РОКЕ записывает дан-
ные непосредственно в память, минуя обычный аппарат BASIC'a. Обратным
оператору РОКЕ является оператор РЕЕК, который служит для отображениясодержимого области памяти, но об этом подробнее будем говорить в гла-
ве 24. Вернёмся к знакам. Мы ещё не поговорили о не напечатанных пер-
вых 32 знаках с кодами от 0 до 31. Это управляющие символы. Они не
отображаются, вместо них на телевизоре отображается знак "?". Назна-
чение этих символов описано в приложении А.Три символа с кодами 6, 8 и
13 имеют специальное назначение при работе с телевизором. CHR$ 6 -
печатает пробел, используемый как запятая в операторе PRINT. PRINT
1;CHR$ 6; 2 даст тот же результат что и оператор: PRINT 1,2 но это не сов-
сем корректное использование, вернее будет сделать:
10 LET A$»"1"+CHR$5 LET В« BIN 01111100: LET О BIN 00111000:
LET D« BIN 00010000
10 FOR N-l TO 6: READ P$: REM 6 pieces
20 FOR F-0 TO 7: REM read piece into 8 bytes
30 READ A: POKE USR P$+F,A
40 NEXT F
50 NEXT N
100 REM *BISHOP*
110 DATA HB",0,D, BIN 00101000, BIN 01000100
120 DATA BIN 01101100,C,B,0
130 REM ♦KING»
140 DATA "KM,0,D,C,D
150 DATA C, BIN 01000100,C,0
160 REM •ROOK»
170 DATA "R",0, BIN 01010100,В,С
180 DATA C,B,B,0
190 REM ♦QUEEN»
200 DATA^Q",0, BIN 01010100, BIN 00101000,D
210 DATA BIN 01101100,B,B,0
220 REM *PAWN*
230 DATA"P",0,0,D,C
240 DATA C,D,B,0
250 REM ♦KNIGHT*
260 DATA "N",0,D,C, BIN 01111000
270 DATA BIN 000 H000,C,B,0