Набор символов ZX Spectrum
![]() Набор символов ZX Spectrum, отображаемый в системном шрифте (не включая символы пользовательской графики) | |
Язык(и) | Английский с псевдографикой |
---|---|
Создано | Синклер Исследования |
На основе | ASCII-1967 |
Предшественник | Набор символов ZX81 |
Другая связанная кодировка(и) | Набор символов ZX80 , набор символов Jupiter Ace |
Набор символов ZX Spectrum — это вариант ASCII, используемый в компьютерах семейства ZX Spectrum . Он основан на ASCII-1967 , но символы ^, ` и DEL
заменяются на ↑, £ и ©. Он также отличается использованием кодов управления C0, отличных от обычных. BS
и CR
, и он использует 128 символов старшего разряда за пределами диапазона ASCII. [1] Основной набор печатных символов и системный шрифт ZX Spectrum также используется компьютером Jupiter Ace .
Печатные символы [ править ]

Стандартный US-ASCII, 0x20–0x7F, включен в набор символов Spectrum, за исключением того, что кодовая точка 0x5E — это стрелка вверх (↑) вместо каретки (^), 0x60 — это знак фунта (£) вместо серьезного акцента. (`), а 0x7F — знак авторских прав (©) вместо управляющего символа. DEL
. Обратите внимание, что использование 0x5E в качестве ↑ также имело место в более старой версии ASCII 1963 года. Знак £ не был сопоставлен с 0x23, как в британском варианте ASCII ( ISO-646-GB ), что позволяло одновременно использовать как знак фунта, так и знак числа (#). Символ ↑ является оператором возведения в степень в BASIC Spectrum , точно так же, как ^, который он заменяет по сравнению с ASCII-1967, используется для возведения в степень во многих других диалектах BASIC и других языках программирования.
За пределами 0x7F набор символов Spectrum использует диапазон старших битов 0x80–0xFF для специальных целей. 0x80–0x8F содержат те же блочные графические символы 2×2, что и набор символов ZX80 и набор символов ZX81 (в других местах), также доступные в блоке Unicode Block Elements . Однако стандартный набор символов ZX Spectrum не включает блочные графические символы ZX80/81 с 50% сглаживанием 1×2. Кодовые точки 0x90–0xA4 содержат исходный 21 символ пользовательской графики (UDG), а 0xA5–0xFF содержат ключевые слова BASIC, маркированные как отдельные кодовые точки. В режиме 128 BASIC, представленном позже, это было изменено на 19 символов UDG, заканчивающихся на 0xA2, за которыми следовали два новых токена. SPECTRUM
и PLAY
. Кодовые точки 0xC7–0xC9 представляют собой двухсимвольные операторы. <=
, >=
и <>
, аналогичным образом разбивается на отдельные кодовые точки. Эти токены позволяют использовать команду BASIC, например PRINT
вводиться одним нажатием клавиши P в начале строки (т.е. в командном режиме), которая генерирует 0xF6. Это отображается как полное ключевое слово PRINT
на экране, но хранится только однобайтовый токен, поэтому интерпретатору необходимо проанализировать только этот один байт или сохранить/загрузить его из внешнего хранилища, такого как лента.
Все символы, не относящиеся к UDG Spectrum, могут быть сопоставлены с Unicode . Три символа не ASCII-1967 ↑, £ и © находятся в U+2191, U+00A3 и U+00A9. Графические символы блока 2 × 2 находятся в блоке Block Elements по адресам U + 2580–U + 259F, хотя поддержка последних шрифтов не является универсальной.
Форма символов UDG отображается в области оперативной памяти и инициализируется копиями символов AU, но может быть переопределена произвольно, например, с помощью команды BASIC. POKE
. Как и все символы системного шрифта, они используют сетку пикселей 8×8, хранящуюся в 8 байтах. Их переопределение меняет их внешний вид в последующем. PRINT
операторы, но это не меняет символы UDG, уже нарисованные на экране. Местоположение определения символа UDG можно определить с помощью функции BASIC. USR
с символом в качестве аргумента, например USR "A"
для первого. По умолчанию это указывает на последние 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) не работает. [4] [5]
Управляющий код 0x0E используется для указания того, что за ним следует число с плавающей запятой, для ускорения обработки текста. В программе Sinclair BASIC числовые константы хранятся в формате ASCII, за которым следуют байт 0x0E и 5-байтовое двоичное представление с плавающей запятой. При перечислении программы BASIC используется только часть ASCII, но во время выполнения используется только двоичное представление. Некоторые программы Spectrum использовали это для запутывания чисел, тогда как другие делали это для экономии памяти. [6] Например, строка BASIC отображается как GO TO 10
мог содержать символы ASCII для цифр 1 и 0, за которыми следовал байт 0x0E и представление с плавающей запятой 100 вместо 10. Любой, кто перечислял эту программу, видел число 10, но при выполнении программа переходила на строку 100.
Неопределенные коды [ править ]
Диапазоны 0x00–0x05, 0x07, 0x0A–0x0C, 0x0F и 0x17–0x1F не определены. В большинстве случаев при выводе на дисплей они отображают вопросительный знак. Однако их можно использовать для представления их буквальных числовых значений в сочетании с определенными управляющими кодами: например, 0x10 + 0x02 устанавливает цвет чернил (текста переднего плана) на цвет номер 2 (красный).
Набор символов [ править ]
В следующей таблице показан набор символов ZX Spectrum. Каждый символ отображается с потенциальным эквивалентом Unicode . [7] [8] Символы пробела и управления представлены сокращениями их имен.
Набор символов спектра [1] | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ нажатие клавиши | 0_ символ | 1_ | 2_ | 3_ | 4_ | 5_ | 6_ | 7_ | 8_ | 9_ | А_ | Б_ | С_ | Д_ | И_ | Ф_ | |
_0 | ЧЕРНИЛА | 0 | @ | П | £ [а] | п | ![]() | (А) [б] | (К) [б] | VAL | USR | FORMAT | LPRINT | LIST | |||
_1 | БУМАГА | ! | 1 | А | вопрос | а | д | ![]() | (Б) [б] | (Р) [б] | LEN | STR$ | MOVE | LLIST | LET | ||
_2 | ВСПЫШКА | " | 2 | Б | Р | б | р | ![]() | (С) [б] | (С) [б] | SIN | CHR$ | ERASE | STOP | PAUSE | ||
_3 | ЯРКИЙ | # | 3 | С | С | с | с | ![]() | (Д) [б] | (Т) [с] | COS | NOT | OPEN # | READ | NEXT | ||
_4 | настоящее видео | ОБРАТНЫЙ | $ | 4 | Д | Т | д | т | ![]() | (И) [б] | (В) [д] | TAN | BIN | CLOSE # | DATA | POKE | |
_5 | инв видео | НАД | % | 5 | И | В | и | в | ![]() | (Ф) [б] | RND | ASN | OR | MERGE | RESTORE | ||
_6 | заглавные буквы | запятая | В | & | 6 | Ф | V | ж | v | ![]() | (Г) [б] | INKEY$ | ACS | AND | VERIFY | NEW | PLOT |
_7 | редактировать | ВКЛАДКА | ' | 7 | Г | В | г | В | ![]() | (ЧАС) [б] | PI | ATN | <= | BEEP | BORDER | RUN | |
_8 | левый | левый [и] | ( | 8 | ЧАС | Х | час | х | ![]() | (Я) [б] | FN | LN | >= | CIRCLE | CONTINUE | SAVE | |
_9 | верно | верно [ф] | ) | 9 | я | И | я | и | ![]() | (Дж) [б] | POINT | EXP | <> | INK | DIM | RANDOMIZE | |
_А | вниз | * | : | Дж | С | дж | С | ![]() | (К) [б] | SCREEN$ | INT | LINE | PAPER | REM | IF | ||
_Б | вверх | + | ; | К | [ | к | { | ![]() | (Л) [б] | ATTR | SQR | THEN | FLASH | FOR | CLS | ||
_С | удалить | , | < | л | \ | л | | | ![]() | (М) [б] | AT | SGN | TO | BRIGHT | GO TO | DRAW | ||
_Д | входить | входить | - | = | М | ] | м | } | ![]() | (Н) [б] | TAB | ABS | STEP | INVERSE | GO SUB | CLEAR | |
_И | продлевать | число [г] | . | > | Н | ↑ [а] | н | ~ | ![]() | (ТО) [б] | VAL$ | PEEK | DEF FN | OVER | INPUT | RETURN | |
_Ф | графика | / | ? | ТО | _ | тот | © [а] | ![]() | (П) [б] | CODE | IN | CAT | OUT | LOAD | COPY |
Spectrum вариант Литовский
Литовский вариант Spectrum заменяет некоторые буквы в ISO 8859-1 литовскими буквами. [9] [10] В FreeDOS она называется кодовой страницей 63283 . [11]
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | А | Б | С | Д | И | Ф | |
Сх | А 0104 | К 012E | И 0100 | Ć 0106 | Ä | Ой | С 010С | Что | Ä 0118 | Э 0116 | Э | Э | К 012E | В | вопрос | Я |
Дх | Ð | С | Ò | Ой | ЗОНТИК | ОН | С 0160 | × | Ø | Ø 0172 | О 016А | Ж 017D | О | ИДЕЯ | че | SS |
Бывший | а 0105 | на | â | ã | ä | к | С 010D | Что | ę 0119 | Эм-м-м 0117 | ага | ага | к 012F | в | вопрос | я |
Форекс | д | н | ò | от | Зонтик | он | с 0161 | ÷ | ø | Эм-м-м 0173 | Эм-м-м 016Б | час 017E | ты | идея | то есть | ÿ |
Примечания [ править ]
- ^ Jump up to: Перейти обратно: а б с Отличается от US-ASCII.
- ^ Jump up to: Перейти обратно: а б с д и ж г час я дж к л м н тот п д р с Символ UDG (пользовательская графика).
- ^ UDG T в 48 BASIC, ключевое слово SPECTRUM в 128 БЕЙСИКЕ.
- ^ UDG U в 48 BASIC, ключевое слово PLAY в 128 БЕЙСИКЕ.
- ^ В стандартном ПЗУ
CHR$ 8
не удается выполнить переход с линии 1 на нулевую строку, а также происходит сбой по-другому при переходе с нулевой строки. - ^ В стандартном ПЗУ
CHR$ 9
фактически не перемещает позицию вывода текста. - ^ Используется в программах BASIC в качестве маркера перед 5-байтовым числом с плавающей запятой.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Руководство по ZX Spectrum, Приложение А, набор символов
- ^ Jump up to: Перейти обратно: а б Руководство ZX Spectrum, глава 25, системные переменные
- ^ «Эксклюзивные команды TK 90X» . CompuClasico — Цифровой антиквариат . 2010. Архивировано из оригинала 27 марта 2019 года.
- ^ Логан, Ян (1983). Понимание вашего спектра . Мельбурн Хаус. п. 189. ИСБН 086161111X .
- ^ Уэрмут, Джефф (2004). «Список файлов сборки для создания ПЗУ размером 16 КБ для ZX Spectrum» . Неполная сборка ПЗУ Spectrum . Архивировано из оригинала 25 августа 2015 года.
- ^ Суонн, Ричард П. «Дешифраторы части 4». КАК ВЗЛОМАТЬ на ZX Spectrum .
- ^ Зарецкий, Михаил (2004). «Sinclair ZX Spectrum+ 48K символов, набор символов Unicode» . Эклектический Сатир . Архивировано из оригинала 7 марта 2005 г. Проверено 03 апреля 2023 г.
- ^ Зарецкий, Михаил (7 марта 2005 г.). «Набор символов Sinclair Spectrum + 48 тыс.» . Эклектический Сатир . Архивировано из оригинала 7 марта 2005 г. Проверено 03 апреля 2023 г.
- ^ https://xn--lietuvyb-ceb.lt/standartai/ra%C5%A1men%C5%B3-koduot%C4%97s/ .
{{cite web}}
: Отсутствует или пусто|title=
( помощь ) - ^ https://xn--lietuvyb-ceb.lt/standartai/ra%C5%A1men%C5%B3-koduot%C4%97s/spectrum.gif .
{{cite web}}
: Отсутствует или пусто|title=
( помощь ) - ^ «Cpi/CPIISO/Codepage.TXT на ведущем устройстве · FDOS/Cpi» . Гитхаб .