Набор символов ZX Spectrum - ZX Spectrum character set
В Набор символов ZX Spectrum это вариант ASCII используется в британском Sinclair ZX Spectrum семейные компьютеры. Он основан на ASCII-1967 но символы ^, `и DEL
заменяются на ↑, £ и ©. Он также отличается использованием Коды управления C0 кроме обычных BS
и CR
, и он использует 128 символов старшего разряда вне диапазона ASCII.[1] Основной набор печатных символов и системный шрифт ZX Spectrum также используются Юпитер Туз компьютер.
Печатные символы
Стандартный US-ASCII, 0x20–0x7F, включен в набор символов Spectrum, за исключением того, что кодовая точка 0x5E является стрелка вверх (↑) вместо каретка (^), 0x60 - это знак фунта стерлингов (£) вместо серьезный акцент (`), а 0x7F - это знак авторского права (©) вместо управляющий персонаж DEL
. Обратите внимание, что использование 0x5E как ↑ также имело место в более старой версии ASCII 1963 года. Знак £ не был сопоставлен с 0x23, как в британском варианте ASCII (ISO-646-ГБ ), позволяя как знак фунта, так и числовой знак (#) одновременно. Символ ↑ - это возведение в степень оператор в БАЗОВЫЙ СПЕКТРУМ, точно так же, как ^ он заменяет по сравнению с ASCII-1967, используется для возведения в степень во многих других диалектах BASIC и других языков программирования.
За пределами 0x7F набор символов Spectrum использует диапазон старших битов 0x80–0xFF для специальных целей. 0x80–0x8F содержат одинаковые 2 × 2 блочная графика персонажи, которые Набор символов ZX80 и Набор символов ZX81 есть (в других местах), также доступны в Блочные элементы Блок Unicode. Однако стандартный набор символов ZX Spectrum не включает ZX80 / 81 50%. смущенный Графические символы блока 1 × 2. Кодовые точки 0x90–0xA4 содержат исходный 21 символ определяемой пользователем графики (UDG), а 0xA5–0xFF содержат ключевые слова BASIC, обозначенные как отдельные кодовые точки. В режиме 128 BASIC, представленном позже, это было изменено на 19 символов UDG, заканчивающихся на 0xA2, за которыми следуют два новых токена. СПЕКТР
и ИГРАТЬ В
. Кодовые точки 0xC7–0xC9 являются двухсимвольными операторами. <=
, >=
и <>
, аналогично токенизированные в отдельные кодовые точки. Эти токены позволяют использовать команду BASIC, например РАСПЕЧАТАТЬ
вводится одним нажатием клавиши п в начале строки (то есть в командном режиме), который сгенерировал 0xF6. Это отображается как полное ключевое слово РАСПЕЧАТАТЬ
на экране, но сохраняется только однобайтовый токен, поэтому интерпретатор должен анализировать только этот один байт или сохранять / загружать из внешнего хранилища, такого как лента.
Все символы, не относящиеся к UDG Spectrum, могут быть сопоставлены с Unicode. Три символа, отличных от ASCII-1967, ↑, £ и ©, находятся в U + 2191, U + 00A3 и U + 00A9. Графические символы блока 2 × 2 находятся в Блочные элементы блок в U + 2580 – U + 259F, хотя поддержка шрифтов для последнего не универсальна.
Форма символов UDG отображается на баран область памяти и инициализируется копиями символов A-U, но может быть произвольно переопределена, например, с помощью команды BASIC POKE
. Как и все символы системного шрифта, они используют сетку 8 × 8 пикселей, хранящуюся в 8 байтах. Их переопределение меняет их внешний вид в последующих РАСПЕЧАТАТЬ
операторы, но это не меняет символы UDG, уже нарисованные на экране. Местоположение определения символа UDG можно определить с помощью функции BASIC USR
с символом в качестве аргумента, например ЕГР «А»
для первого. По умолчанию это указывает на последние 168 (21 × 8) байтов ОЗУ по адресам памяти от 65368 (0xFF58) до 65535 (0xFFFF) для спектра 48 КБ. Местоположение указывает системная переменная UDG[2] который находится по адресу памяти 23675/6 (0x5C7B / C) и может быть изменен. В TK90X, бразильский клон ZX Spectrum включал в ПЗУ приложение для графического редактирования этих UDG-символов, а также функцию предварительной загрузки, а затем акцентированных букв, используемых в португальском языке. (Для этого в TK90X определены две дополнительные базовые команды с кодами 0 и 1, соответственно «trace» и «udg»)[3]
На определение основного системного шрифта, от 32 (пробел) до 127 (авторское право), ссылается системная переменная CHARS, которая находится по адресу памяти 23606/7 (0x5C36 / 7). Он определяется как на 256 байт меньше первого байта символа пробела, что упрощает формулу поиска символа до CHARS + 8 ×кодовая точка. Значение CHARS по умолчанию равно 15360 (0x3C00), с системным шрифтом в конце ПЗУ Spectrum по адресу от 15616 (0x3D00) до 16383 (0x3FFF). Целые альтернативные шрифты могут быть загружены в оперативную память, и переменная CHARS соответственно изменится.[2]
Коды управления
В области кодов управления (диапазон C0) Spectrum в основном использует собственные элементы управления, такие как INK и PAPER, для управления цветом переднего плана и фона. Однако общий BS
и CR
кодовые точки такие же, как в ASCII. Перемещение курсора вниз (0x0A, перевод строки ASCII) может быть смоделировано с 32 пробелами, напечатанными с OVER 1 (прозрачное наложение), а перемещение курсора вверх 0x0B (вертикальная табуляция ASCII) может быть смоделировано с 32 пробелами назад. Системное ПЗУ имеет ошибку, которая препятствует работе курсора вправо в 0x09 (например, ASCII Horizontal Tabulation).[4][5]
Управляющий код 0x0E используется, чтобы указать, что следует число с плавающей запятой, чтобы ускорить обработку текста. В Sinclair BASIC числовые константы программы сохраняются как ASCII, за которым следует байт 0x0E и 5-байтовое двоичное представление с плавающей запятой. При перечислении программы BASIC используется только часть ASCII, но во время выполнения используется только двоичное представление. Некоторые программы Spectrum использовали это для обфускации чисел, в то время как другие делали это для экономии памяти.[6] Например, строка BASIC отображается как ПЕРЕЙТИ К 10
может содержать символы ASCII для цифр 1 и 0, за которыми следует байт 0x0E и представление с плавающей запятой 100 вместо 10. Любой, кто перечислял эту программу, видел число 10, но при выполнении программа перескакивала на строку 100.
Неопределенные коды
Диапазоны 0x00–0x05, 0x07, 0x0A – 0x0C, 0x0F и 0x17–0x1F не определены. В большинстве случаев при выводе на дисплей будет отображаться вопросительный знак. Однако они могут использоваться для представления своих буквальных числовых значений в сочетании с определенными управляющими кодами: например, INK + 0x07 устанавливает цвет чернил (текст переднего плана) на цвет номер 7 (белый).
Набор символов
Набор символов спектра[1] | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ нажатие клавиши | 0_ символ | 1_ | 2_ | 3_ | 4_ | 5_ | 6_ | 7_ | 8_ | 9_ | A_ | B_ | C_ | D_ | E_ | F_ | |
_0 | ЧЕРНИЛА | 0 | @ | п | £[а] | п | (А)[b] | (Q)[b] | ВАЛ | USR | ФОРМАТ | LPRINT | СПИСОК | ||||
_1 | БУМАГА | ! | 1 | А | Q | а | q | (В)[b] | (Р)[b] | LEN | STR $ | ДВИГАТЬСЯ | СПИСОК | ПОЗВОЛЯТЬ | |||
_2 | ВСПЫШКА | " | 2 | B | р | б | р | (С)[b] | (S)[b] | ГРЕХ | CHR $ | СТЕРЕТЬ | ОСТАНОВКА | ПАУЗА | |||
_3 | ЯРКИЙ | # | 3 | C | S | c | s | (D)[b] | (Т)[c] | COS | НЕТ | ОТКРЫТО # | ЧИТАТЬ | СЛЕДУЮЩИЙ | |||
_4 | истинное видео | ОБРАТНЫЙ | $ | 4 | D | Т | d | т | (E)[b] | (U)[d] | TAN | BIN | ЗАКРЫТЬ # | ДАННЫЕ | POKE | ||
_5 | inv видео | НАД | % | 5 | E | U | е | ты | (F)[b] | RND | ASN | ИЛИ ЖЕ | ОБЪЕДИНЕНИЕ | ВОССТАНОВИТЬ | РАСПЕЧАТАТЬ | ||
_6 | Caps Lock | запятая | В | & | 6 | F | V | ж | v | (ГРАММ)[b] | INKEY $ | ACS | И | ПРОВЕРЯТЬ | НОВЫЙ | УЧАСТОК | |
_7 | редактировать | TAB | ' | 7 | грамм | W | грамм | ш | (ЧАС)[b] | ЧИСЛО ПИ | ATN | <= | BEEP | ГРАНИЦА | ПРОБЕГ | ||
_8 | оставили | оставили[e] | ( | 8 | ЧАС | Икс | час | Икс | (Я)[b] | FN | LN | >= | КРУГ | ПРОДОЛЖИТЬ | СПАСТИ | ||
_9 | верно | верно[f] | ) | 9 | я | Y | я | у | (J)[b] | ТОЧКА | EXP | <> | ЧЕРНИЛА | Тусклый | Рандомизировать | ||
_A | вниз | * | : | J | Z | j | z | (K)[b] | ЭКРАН $ | INT | ЛИНИЯ | БУМАГА | REM | ЕСЛИ | |||
_B | вверх | + | ; | K | [ | k | { | (L)[b] | ATTR | SQR | ТОГДА | ВСПЫШКА | ЗА | CLS | |||
_C | Удалить | , | < | L | \ | л | | | (М)[b] | В | SGN | К | ЯРКИЙ | ИДТИ К | РИСОВАТЬ | |||
_D | войти | войти | - | = | M | ] | м | } | (N)[b] | TAB | АБС | ШАГ | ОБРАТНЫЙ | ПЕРЕЙТИ | ЧИСТО | ||
_E | продлевать | номер[грамм] | . | > | N | ↑[а] | п | ~ | (O)[b] | VAL $ | PEEK | DEF FN | НАД | ВХОД | ВОЗВРАЩАТЬСЯ | ||
_F | графика | / | ? | О | _ | о | ©[а] | (П)[b] | КОД | В | КОТ | ИЗ | НАГРУЗКА | КОПИРОВАТЬ |
Смотрите также
Примечания
- ^ а б c В отличие от US-ASCII.
- ^ а б c d е ж грамм час я j k л м п о п q р s UDG (определяемая пользователем графика) символ.
- ^ UDG T на 48 BASIC, ключевое слово СПЕКТР в 128 BASIC.
- ^ UDG U в 48 BASIC, ключевое слово ИГРАТЬ В в 128 BASIC.
- ^ В Стандартном ПЗУ
8 швейцарских франков
не возвращается от строки 1 к нулевой строке и откатывается от нулевой строки. - ^ В Стандартном ПЗУ
9 швейцарских франков
фактически не перемещает позицию вывода текста. - ^ Используется в программах на BASIC как маркер перед 5-байтовым числом с плавающей запятой.
Рекомендации
- ^ а б ZX Spectrum manual, Приложение A, набор символов
- ^ а б Руководство ZX Spectrum, Глава 25, системные переменные
- ^ "Los Comandos Exclusivos de la TK 90X".
- ^ Логан, Ян (1983). Понимание вашего спектра. Мельбурн Хаус. п. 189. ISBN 086161111X.
- ^ Уэрмаут, Джефф. "Список файлов сборки для создания 16-килобайтной ПЗУ для ZX Spectrum". Архивировано из оригинал 25 августа 2015 года.
- ^ Суонн, Ричард П. «Часть 4 Расшифровщики». КАК Взломать ZX Spectrum.
внешняя ссылка
- Sinclair Spectrum + набор символов 48K С сайта Михаила Зарецкого
- Таблица преобразования из Sinclair Spectrum + 48K Character Set в Unicode С того же сайта
- Пакет с плавающей запятой