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

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

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

Содержание

  • 1 Печатные символы
  • 2 Управляющие коды
  • 3 Неопределенные коды
  • 4 Набор символов
  • 5 См. Также
  • 6 Примечания
  • 7 Ссылки
  • 8 Внешние ссылки

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

Снимок экрана программы Sinclair BASIC, демонстрирующий все печатаемые кодовые точки, включая ключевые слова BASIC и пользовательские графические символы (по умолчанию определены как копии AU).

Standard US-ASCII, 0x20–0x7F, включен в набор символов Spectrum, за исключением того, что кодовая точка 0x5E представляет собой стрелку вверх (↑) вместо каретки (^), 0x60 - знак фунта (£) вместо серьезного ударения (`), а 0x7F - знак авторского права (©) вместо управляющего символа DEL . Обратите внимание, что использование 0x5E как ↑ также имело место в более старой версии ASCII 1963 года. Знак £ не был сопоставлен с 0x23, как в британском варианте ASCII (ISO-646-GB ), позволяя одновременно использовать знак фунта и числовой знак (#). Символ ↑ - это оператор возведения в степень в Spectrum BASIC, точно так же, как ^, который он заменяет по сравнению с 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, за которыми следуют два новых токена 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 отображается в область памяти RAM и инициализируется копиями символов AU, но может быть произвольно переопределена, например, с помощью команды BASIC ТОЧИТЬ . Как и все символы системного шрифта, они используют сетку 8 × 8 пикселей, хранящуюся в 8 байтах. Их переопределение изменяет их внешний вид в последующих операторах PRINT, но не изменяет никаких символов UDG, уже нарисованных на экране. Расположение определения символа UDG можно определить с помощью функции BASIC USRс символом в качестве аргумента, например USR "A"для первого. По умолчанию это указывает на последние 168 (21 × 8) байтов ОЗУ по адресам памяти от 65368 (0xFF58) до 65535 (0xFFFF) для спектра 48 КБ. Местоположение указывается системной переменной UDG, которая находится по адресу памяти 23675/6 (0x5C7B / C) и может быть изменена. TK90X, бразильский клон ZX Spectrum, включал в ПЗУ приложение для графического редактирования этих UDG-символов, а также функцию предварительной загрузки, а затем акцентированных букв, используемых в португальском языке. (Для этого в TK90X определены две дополнительные базовые команды с кодами 0 и 1, соответственно, "trace" и "udg")

Определение основного системного шрифта, от 32 (пробел) до 127 (авторское право), ссылаются на системную переменную CHARS, которая находится по адресу памяти 23606/7 (0x5C36 / 7). Он определяется как 256 байт ниже первого байта символа пробела, что упрощает формулу для определения местоположения символа до кодовой точки CHARS + 8 ×. Значение CHARS по умолчанию равно 15360 (0x3C00), с системным шрифтом в конце ПЗУ Spectrum по адресу от 15616 (0x3D00) до 16383 (0x3FFF). Целые альтернативные шрифты могут быть загружены в ОЗУ, и переменная CHARS соответственно изменится.

Управляющие коды

В области управляющих кодов (диапазон C0) Spectrum в основном использует собственные элементы управления, такие как как ЧЕРНИЛА и БУМАГА для управления цветом переднего плана и фона. Однако общие кодовые точки BS и CR такие же, как и в ASCII. Курсор вниз (0x0A, перевод строки ASCII) может быть смоделирован с 32 пробелами, напечатанными с OVER 1 (прозрачное наложение), а перемещение курсора вверх 0x0B (вертикальная табуляция ASCII) может быть имитировано с 32 пробелами назад. Системное ПЗУ имеет ошибку, которая препятствует работе курсора вправо в 0x09 (например, ASCII Horizontal Tabulation).

Управляющий код 0x0E используется, чтобы указать, что следует число с плавающей запятой, для ускорения обработки текста. В программе Sinclair BASIC числовые константы сохраняются в виде ASCII, за которым следует байт 0x0E и 5-байтовое двоичное представление с плавающей запятой. При перечислении программы BASIC используется только часть ASCII, но во время выполнения используется только двоичное представление. Некоторые программы Spectrum использовали это для обфускации чисел, в то время как другие делали это для экономии памяти. Например, строка BASIC, отображаемая как GO TO 10, может содержать символы ASCII для цифр 1 и 0, за которыми следует байт 0x0E и представление с плавающей запятой 100 вместо 10. Любой, кто перечислял эту программу, видел номер 10, но при выполнении программа перешла на строку 100.

Неопределенные коды

Диапазоны 0x00–0x05, 0x07, 0x0A – 0x0C, 0x0F и 0x17–0x1F не определены. В большинстве случаев при выводе на дисплей будет отображаться вопросительный знак. Однако они могут использоваться для представления их буквальных числовых значений в сочетании с определенными управляющими кодами: например, INK + 0x07 устанавливает цвет чернил (текст переднего плана) на цвет номер 7 (белый).

Набор символов

Набор символов спектра
0_ нажатие клавиши0_ символ1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_
_0INK0@P£pZXSpectrum80.svg (A)(Q)VALUSRFORMATLPRINTLIST
_1PAPER!1AQaqZXSpectrum81.svg (B)(R)LENSTR $MOVELLISTLET
_2FLASH"2BRbrZXSpectrum82.svg (C)(S)SINCHR $СТЕРЕТЬСТОППАУЗА
_3ЯРКО#3CScsZXSpectrum83.svg (D)(T)COSНЕОТКРЫТЬ #ПРОЧИТАЙТЕСЛЕДУЮЩИЙ
_4истинное видео ОБРАТНОЕ$4DTdtZXSpectrum84.svg (E)(U)TANBINЗАКРЫТЬ #ДАННЫЕPOKE
_5inv video OVER%5EUeuZXSpectrum85.svg (F)RNDASNORMERGERESTOREPRINT
_6caps lockзапятая AT6FVfvZXSpect rum86.svg (G)INKEY $ACSИПРОВЕРКАНОВАЯУЧАСТОК
_7редактироватьTAB'7GWgwZXSpectrum87.svg (H)PIATN<=BEEPBORDERRUN
_8left left (8HXhxZXSpectrum88.svg (I)FNLN>=CIRCLEПРОДОЛЖИТЬСОХРАНИТЬ
_9справа справа)9IYiyZXSpectrum89.svg (J)ТОЧКАEXP<>INKDIMRANDOMIZE
_Aвниз *:JZjzZXSpectrum8a.svg (K)SCREEN $INTLINEP APERREMIF
_Bup +;K[k{ZXSpectrum8b.svg (L)ATTRSQRTHENFLASHFORCLS
_Cудалить,<L\l|ZXSpectrum8c.svg (M)ATSGNTOBRIGHTПЕРЕЙДИТЕ НАDRAW
_Dвведитевведите -=M]m}ZXSpectrum8d.svg (N)TABABSSTEPINVERSEGO SUBCLEAR
_Eextendnumber.>Nn~ZXSpectrum8e.svg (O)VAL $PEEKDEF FNOVERINPUTRETURN
_Fграфика/?O_o©ZXSpectrum8f.svg (P)CODEINCATOUTЗАГРУЗИТЬКОПИРОВАТЬ

См. Также

Примечания

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-23 05:22:53
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте