Набор символов ZX Spectrum - ZX Spectrum character set

Набор символов ZX Spectrum, отображаемый в системном шрифте (не включая символы пользовательской графики).

В Набор символов ZX Spectrum это вариант ASCII используется в британском Sinclair ZX Spectrum семейные компьютеры. Он основан на ASCII-1967 но символы ^, `и DEL заменяются на ↑, £ и ©. Он также отличается использованием Коды управления C0 кроме обычных BS и CR, и он использует 128 символов старшего разряда вне диапазона ASCII.[1] Основной набор печатных символов и системный шрифт ZX Spectrum также используются Юпитер Туз компьютер.

Печатные символы

Скриншот Sinclair BASIC программа, которая демонстрирует все печатаемые кодовые точки, включая ключевые слова BASIC и определяемые пользователем графические символы (по умолчанию определенные как копии A-U).

Стандартный 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@п£[а]пZXSpectrum80.svg(А)[b](Q)[b]ВАЛUSRФОРМАТLPRINTСПИСОК
_1БУМАГА!1АQаqZXSpectrum81.svg(В)[b](Р)[b]LENSTR $ДВИГАТЬСЯСПИСОКПОЗВОЛЯТЬ
_2ВСПЫШКА"2BрбрZXSpectrum82.svg(С)[b](S)[b]ГРЕХCHR $СТЕРЕТЬОСТАНОВКАПАУЗА
_3ЯРКИЙ#3CScsZXSpectrum83.svg(D)[b](Т)[c]COSНЕТОТКРЫТО #ЧИТАТЬСЛЕДУЮЩИЙ
_4истинное видеоОБРАТНЫЙ$4DТdтZXSpectrum84.svg(E)[b](U)[d]TANBINЗАКРЫТЬ #ДАННЫЕPOKE
_5inv видеоНАД%5EUетыZXSpectrum85.svg(F)[b]RNDASNИЛИ ЖЕОБЪЕДИНЕНИЕВОССТАНОВИТЬРАСПЕЧАТАТЬ
_6Caps LockзапятаяВ&6FVжvZXSpectrum86.svg(ГРАММ)[b]INKEY $ACSИПРОВЕРЯТЬНОВЫЙУЧАСТОК
_7редактироватьTAB'7граммWграммшZXSpectrum87.svg(ЧАС)[b]ЧИСЛО ПИATN<=BEEPГРАНИЦАПРОБЕГ
_8оставилиоставили[e](8ЧАСИксчасИксZXSpectrum88.svg(Я)[b]FNLN>=КРУГПРОДОЛЖИТЬСПАСТИ
_9верноверно[f])9яYяуZXSpectrum89.svg(J)[b]ТОЧКАEXP<>ЧЕРНИЛАТусклыйРандомизировать
_Aвниз*:JZjzZXSpectrum8a.svg(K)[b]ЭКРАН $INTЛИНИЯБУМАГАREMЕСЛИ
_Bвверх+;K[k{ZXSpectrum8b.svg(L)[b]ATTRSQRТОГДАВСПЫШКАЗАCLS
_CУдалить,<L\л|ZXSpectrum8c.svg(М)[b]ВSGNКЯРКИЙИДТИ КРИСОВАТЬ
_Dвойтивойти-=M]м}ZXSpectrum8d.svg(N)[b]TABАБСШАГОБРАТНЫЙПЕРЕЙТИЧИСТО
_Eпродлеватьномер[грамм].>N[а]п~ZXSpectrum8e.svg(O)[b]VAL $PEEKDEF FNНАДВХОДВОЗВРАЩАТЬСЯ
_Fграфика/?О_о©[а]ZXSpectrum8f.svg(П)[b]КОДВКОТИЗНАГРУЗКАКОПИРОВАТЬ

Смотрите также

Примечания

  1. ^ а б c В отличие от US-ASCII.
  2. ^ а б c d е ж грамм час я j k л м п о п q р s UDG (определяемая пользователем графика) символ.
  3. ^ UDG T на 48 BASIC, ключевое слово СПЕКТР в 128 BASIC.
  4. ^ UDG U в 48 BASIC, ключевое слово ИГРАТЬ В в 128 BASIC.
  5. ^ В Стандартном ПЗУ 8 швейцарских франков не возвращается от строки 1 к нулевой строке и откатывается от нулевой строки.
  6. ^ В Стандартном ПЗУ 9 швейцарских франков фактически не перемещает позицию вывода текста.
  7. ^ Используется в программах на BASIC как маркер перед 5-байтовым числом с плавающей запятой.

Рекомендации

  1. ^ а б ZX Spectrum manual, Приложение A, набор символов
  2. ^ а б Руководство ZX Spectrum, Глава 25, системные переменные
  3. ^ "Los Comandos Exclusivos de la TK 90X".
  4. ^ Логан, Ян (1983). Понимание вашего спектра. Мельбурн Хаус. п. 189. ISBN  086161111X.
  5. ^ Уэрмаут, Джефф. "Список файлов сборки для создания 16-килобайтной ПЗУ для ZX Spectrum". Архивировано из оригинал 25 августа 2015 года.
  6. ^ Суонн, Ричард П. «Часть 4 Расшифровщики». КАК Взломать ZX Spectrum.

внешняя ссылка