Клавиатура
Клавиатура — основное устройство ввода и управления компьютером.
Оригинальный ZX Spectrum имел 40-кнопочную клавиатуру. Клавиши были резиновыми (аналогичные используемым в калькуляторах), не обеспечивавшими чёткой обратной тактильной связи. Для частичного устранения этого недостатка во встроенном интерпретаторе языка Бейсик реализовано звуковое подтверждение при нажатии клавиш.
Поле стандартной клавиатуры содержит 26 алфавитных, 10 цифровых, пробел и три служебных клавиши — ввод (Enter) и две клавиши регистра, так называемые шифты (Symbol Shift и Caps Shift, сокращённо SS и CS). Все остальные необходимые действия, реализованные на полноценных клавиатурах в виде отдельных клавиш, выполняются комбинациями шифтов с другими клавишами.
В интерпретаторе Бейсика используется токенизированный ввод, позволяющий вводить управляющие слова нажатием одной клавиши. Так как количество слов существенно больше, чем количество клавиш, для ввода части слов также используются различные комбинации шифтов с обычными клавишами. Ввиду отсутствия возможности посимвольного ввода управляющих слов это требует запоминания множества комбинаций клавиш — около пяти вариантов использования каждой клавиши. Для частичного устранения этого недостатка на клавиши нанесены обозначения по специальной системе.
В модели ZX Spectrum+ главным улучшением стало использование расширенной 58-кнопочной клавиатуры. Дополнительные клавиши имитируют нажатие наиболее часто используемых сочетаний клавиш — например, управление курсором. При этом с программной точки зрения интерфейс клавиатуры не изменился, что, с одной стороны, не требует наличия программной поддержки расширенных клавиш в уже существующем ПО, но, с другой стороны, не позволяет отличить расширенные клавиши от клавиш, входящих в комбинацию.
Все модели ZX Spectrum 128K используют такую же клавиатуру, как и ZX Spectrum+, но у моделей ZX Spectrum +2 и ZX Spectrum +3 отсутствуют обозначения комбинаций клавиш, так как интерпретатор Бейсика для режима 128K не использует токенизированный ввод.
Отечественные клоны ZX Spectrum использовали клавиатуры различных типов и раскладок, включая 40-кнопочные и расширенные; механические, плёночные и герконовые. Также использовались стандартные клавиатуры типа МС7007 с нанесённой дополнительной маркировкой. Некоторые клоны имели дополнительные клавиши, опрашиваемые через биты 5 и 7 клавиатурного порта (Спарк/Аллофон, Орель БК-08) и поддерживаемые очень ограниченным количеством программ.
Из-за недоступности нестандартных клавиатур при широком распространении клавиатур стандарта AT (в недавнем прошлом) и PS/2, современные клоны используют специальные контроллеры, позволяющие использовать современные клавиатуры без их переделки. Такие контроллеры могут являться как отдельным устройством, так и присутствовать в компьютере штатно. Простые варианты контроллеров могут замедлять работу компьютера, генерируя сигнал WAIT, так как им требуется время для преобразования данных, получаемых от клавиатуры в требуемый набор сигналов.
Аппаратный интерфейс
Аппаратно кнопки клавиатуры представляют собой матрицу восемь на пять линий — восемь полурядов по пять кнопок. В зависимости от адреса, использованного при обращении к порту клавиатуры, в младших пяти битах возвращается состояние клавиш одного из восьми полурядов. Такая схема создаёт "эффект матрицы" (matrix effect) — при нажатии двух клавиш (одного полуряда) одновременно с третьей клавишей (в одном столбце с первой) возникает паразитное нажатие в полуряду третьей клавиши, соответствующее столбцу второй. Этот эффект можно ликвидировать размещением диода на каждой клавише.
Раскладка клавиш в Sinclair BASIC
В интерпретаторе Бейсика реализовано несколько режимов ввода. Текущий режим отображается в виде буквы-курсора. Режим ввода может изменяться автоматически, в зависимости от ситуации, а также может изменяться пользователем. Режимы:
- L (Letters?) — ввод строчных букв и цифр;
- C (Caps Lock?) — ввод заглавных букв и цифр;
- K (Keyword?) — активизируется, когда интерпретатор ожидает ввода управляющего слова, алфавитные клавиши вводят слова;
- E (Extend Mode) — вызывается одновременным нажатием Symbol Shift и Caps Shift, нажатие клавиш вводит дополнительные управляющие слова;
- G (Graphics) — ввод псевдографических символов и символов, изображение которых определяется пользователем.
Правила ввода:
- При нажатии алфавитной клавиши в режиме курсора K вводятся слова, указанные на клавише белым шрифтом левее и ниже буквы;
- Нажатие цифровой клавиши в режимах K и L вводит цифру;
- Нажатие алфавитной клавиши в режиме L вводит строчную букву, нажатие совместно с Caps Shift - заглавную букву;
- Нажатие цифровой клавиши в режимах K и L совместно с Caps Shift выполняет действие, указанное белым цветом над цифровыми клавишами (функции редактирования, управление курсором);
- Нажатие любой клавиши совместно с Symbol Shift вводит символ или слово, указанные на клавише красным шрифтом слева от основной буквы;
- Нажатие любой клавиши в режиме E вводит слова, указанные над клавишами (зелёным шрифтом);
- Нажатие любой клавиши в режиме E совместно с Symbol Shift вводит слова, указанные под клавишами (красным шрифтом).
K | SS | CS | Ext | Ext+CS | Ext+SS | |
---|---|---|---|---|---|---|
1 | 1 | ! | Edit | Код синего фона | Код синих чернил | DEF FN |
2 | 2 | @ | Caps Lock | Код красного фона | Код красных чернил | FN |
3 | 3 | # | True video | Код фиолетового фона | Код фиолетовых чернил | LINE |
4 | 4 | $ | Inverse video | Код зелёного фона | Код зелёных чернил | OPEN# |
5 | 5 | % | Курсор влево | Код голубого фона | Код голубых чернил | CLOSE# |
6 | 6 | & | Курсор вниз | Код жёлтого фона | Код жёлтых чернил | MOVE |
7 | 7 | ' | Курсор вверх | Код белого фона | Код белых чернил | ERASE |
8 | 8 | ( | Курсор вправо | POINT | ||
9 | 9 | ) | Graphics mode | CAT | ||
0 | 0 | _ | Delete | Код чёрного фона | Код чёрных чернил | FORMAT |
a | NEW | STOP | A | READ | ~ | ~ |
b | BORDER | * | B | BIN | BRIGHT | BRIGHT |
c | CONTINUE | ? | C | LPRINT | PAPER | PAPER |
d | DIM | STEP | D | DATA | \ | \ |
e | REM | >= | E | TAN | ATN | ATN |
f | FOR | TO | F | SGN | { | { |
g | GO TO | THEN | G | ABS | } | } |
h | GOSUB | ^ | H | SQR | CIRCLE | CIRCLE |
i | INPUT | AT | I | CODE | IN | IN |
j | LOAD | |||||
J | VAL | VAL$ | VAL$ | |||
k | LIST | K | LEN | SCREEN$ | SCREEN$ | |
l | LET | = | L | USR | ATTR | ATTR |
m | PAUSE | . | M | PI | INVERSE | INVERSE |
n | NEXT | , | N | INKEY$ | OVER | OVER |
o | POKE | ; | O | PEEK | OUT | OUT |
p | " | P | TAB | (C) | (C) | |
q | PLOT | <= | Q | SIN | ASN | ASN |
r | RUN | < | R | INT | VERIFY | VERIFY |
s | SAVE | NOT | S | RESTORE | | | | |
t | RANDOMIZE | > | T | RND | MERGE | MERGE |
u | IF | OR | U | CHR$ | ] | ] |
v | CLS | / | V | LLIST | FLASH | FLASH |
w | DRAW | <> | W | COS | ACS | ACS |
x | CLEAR | Фунт | X | EXP | INK | INK |
y | RETURN | AND | Y | STR$ | [ | [ |
z | COPY | : | Z | LN | BEEP | BEEP |
Пробел | Пробел | Пробел | Break | Пробел | Пробел | Пробел |
Enter | Enter | Enter | Enter | Enter | Enter | Enter |