ZX Железо: ZX Interface-1
Interface-1 подключается к пользовательскому порту на задней панели. Кроме того, интерфейс крепится механически несколькими винтами. Установленный таким образом Interface-1 окажется под компьютером, из-за чего задняя часть компьютера будет немного приподнята.
Клавиатура будет стоять под небольшим углом, что облегчит набор текста. Microdrive подключается к интерфейсу слева с помощью короткого шлейфа. Чтобы эти расширения работали, операционную систему компьютера пришлось дополнить. Дополнительная ПЗУ установлена в Interface-1.
Это ПЗУ объёмом 8 КБ и специальная интегральная схема ULA, отвечающая за управление всей системой. В новой, дополнительной ПЗУ находится программа для интерпретации новых команд. Новые команды:
CAT, ERASE, FORMAT, SAVE!, LOAD!, VERIFY!, MERGE!, OPEN#, CLOSE#, MOVE, CLS#, CLEAR#.
Хотя эти команды есть на клавиатуре, компьютер с базовой ПЗУ их не знает.
Дополнительная ПЗУ работает параллельно с основной. Она занимает адресное пространство от 0 до 8191. В каждый момент активна может быть только одна из них.
Или основная ПЗУ объёмом 16 КБ, или дополнительная объёмом 8 КБ. За выбор активной ПЗУ отвечает логика, встроенная в сам интерфейс: она отслеживает состояние адресной шины и линии M1. Дополнительная ПЗУ может быть активна только в следующих случаях:
- Если в основной ПЗУ объёмом 16 КБ выполняется команда RST 8 (на машинном языке), за которой следует код ошибки. (Как вы, вероятно, знаете, по этому адресу начинается процедура анализа кода ошибки и вывода на экран соответствующего сообщения.) Если вы попытаетесь выполнить из BASIC, например, команду
CAT 1без подключённого Interface-1, то получите сообщение об ошибке:
0 Invalid stream, 0:1
Однако если Interface-1 и один Microdrive подключены, этого не произойдёт: на экране отобразится содержимое каталога микрокассеты.
Что же произошло на самом деле — вы не могли заметить. Прежде всего возникла ошибка, потому что основная ПЗУ не знает эту команду. ПЗУ собиралась вывести сообщение об ошибке с помощью RST 8. Адресный декодер Interface-1 обнаружил это, отключил основную ПЗУ, тем самым предотвратив вывод сообщения об ошибке, и в тот же момент включил дополнительную ПЗУ. В ней был проанализирован код ошибки, и операционная система установила, что это не ошибка, а допустимая команда. Программа сбросила индикатор ошибки и передала управление процедуре выполнения команды.
В конце процедуры управление снова передаётся основной ПЗУ.
- Если процедура CLOSE в основной ПЗУ, расположенная по адресу 5896, переходит в дополнительную ПЗУ, процедура выполнения в этой ПЗУ не может работать с командами, используемыми Interface-1. Управление никогда не остаётся постоянно в дополнительной ПЗУ. После выполнения новой команды оно возвращается в основную ПЗУ переходом на адрес 1792.
Interface-1, как и Spectrum, подвергался множеству изменений и усовершенствований: разработчики исправляли ошибки в ПЗУ ранних версий. Некоторые процедуры после этого стали значительно быстрее. Программистам, использующим эти процедуры в своих программах, следует учитывать и это, поскольку адреса большинства процедур также изменились.
Кроме того, в Interface-1 встроен интерфейс RS-232 для обмена данными с принтером. RS-232 обеспечивает последовательную передачу данных.
Один байт данных, отправленный или полученный через RS-232, содержит:
- один стартовый бит;
- восемь бит данных;
- два стоповых бита.
Стандартная скорость передачи — от 50 до 19 200 бит в секунду. После включения компьютера автоматически устанавливается скорость 9600 бит/с. Сэр Клайв Синклер не был бы сэром Клайвом, если бы не сделал исключение и при разработке Interface-1. Дело в том, что последовательный выход у него нестандартный.
Различие между стандартным и последовательным выходом Interface-1 заключается в двух деталях.
ZX Железо: ZX Interface-1
Первое, незначительное отличие — использование нестандартного девятиконтактного разъёма вместо стандартного 25-контактного.
Второе отличие — нестандартные уровни сигналов на входе и выходе. Из-за этого используются только сигналы, необходимые для правильной передачи и приёма данных.
Эта часть Interface-1 используется в основном для передачи данных на принтер с последовательным входом. Её можно использовать и для связи с другими компьютерами и устройствами, у которых есть последовательный вход/выход. Spectrum может использовать два канала: первый — текстовый (/T или t), второй — двоичный (/B или b).
Канал /T используется главным образом для передачи данных на принтер. Канал /B можно использовать для связи с другими компьютерами и устройствами с последовательным входом/выходом.
Эта процедура не изменяет отправляемые коды. Spectrum передаёт данные по линии RX DATA, если линия DTR находится на высоком уровне. Приём данных осуществляется по линии TX DATA, если линия CTS находится на высоком уровне.
Высокий уровень означает, что логическое состояние линии равно 1, то есть напряжение на соответствующей линии составляет 2,8 В или выше.
ЛОКАЛЬНАЯ СЕТЬ /LAN/ Подключение Spectrum к сети выполняется с помощью двух разъёмов на I-1 и соответствующего кабеля. В этой сети компьютеры обмениваются данными со скоростью 4 Кбит/с. Они также совместно используют подключённую периферию (Microdrive, принтер, дисковые накопители и т. д.). Максимальное число компьютеров в сети — 64.
Каждый компьютер в сети имеет идентификационный номер и приоритет, которые необходимо задать самостоятельно. Подключение I-1 к Spectrum вызывает также некоторые изменения в области системных переменных. Начиная с адреса 23734 добавляется ещё 58 байт для работы I-1, а также два байта по адресам 23728 и 23729, свободные на компьютере без расширений.
ПОТОКИ (STREAMS) И КАНАЛЫ (CHANNELS) Часть системы, в которую или из которой можно передавать или принимать данные, называется каналом (например, вывод на экран или считывание с клавиатуры). Однако передача или приём данных выполняется через поток. Для его обозначения используется символ # (HASH MARK, или, как его обычно называют, «решётка»).
В Spectrum без I-1 из BASIC доступны три канала. Для обозначения канала используется одна буква. Из BASIC доступны следующие каналы:
- K — канал, связанный с клавиатурой и нижней частью экрана;
- S — канал, связанный с верхней частью экрана;
- P — канал, связанный с ZX Printer.
Канал может использоваться и для двусторонней передачи данных: к одному каналу можно подключить устройства и ввода, и вывода.
Если дополнить систему I-1, появятся ещё четыре канала:
- M или m — для Microdrive;
- N или n — для локальной сети;
- B или b, T или t — для RS 232.
В Spectrum из BASIC доступны 16 потоков, четыре из которых автоматически связаны с определёнными каналами. После включения питания или выполнения команды NEW они выглядят так:
ПОТОК КАНАЛ ВЫХОД ВХОД
0 K нижняя часть клавиатура
экрана
1 K нижняя часть клавиатура
экрана
2 S верхняя часть нет
экрана
3 P ZX Printer нет
Потоки 0 и 1 постоянно связаны с каналом K. Они считывают символы с клавиатуры или выводят их в нижнюю часть экрана (сообщения об ошибках).
Поток 2 выводит символы в верхнюю часть экрана.
Поток 3 выводит символы на принтер. Потоки 2 и 3 не принимают входные данные.
Если ввести команду:
INPUT #3;A
появится сообщение об ошибке:
INVALID I/O DEVICE
Команды расширенной системы:
CAT, ERASE, FORMAT, SAVE!, LOAD!, VERIFY!, MERGE!,
OPEN#, CLOSE#, MOVE, CLS#, CLEAR#
Команды CAT и ERASE можно использовать только при работе с Microdrive. Команды FORMAT, SAVE!, LOAD!, VERIFY! и MERGE! можно использовать при работе со всеми тремя устройствами.
Команда OPEN# связывает поток (STREAM) с каналом (CHANNEL) и имеет следующий синтаксис:
ZX Железо: ZX Interface-1
OPEN #S, C$, где:
S— номер потока (0–15);C$— буква канала (K–S–P–M–N–B–T).
Команда MOVE # имеет следующий синтаксис:
MOVE #S TO D
где S и D — обозначения потоков. TO — ключевое слово BASIC. Эта команда считывает один символ из потока S и отправляет его в поток D.
Цикл повторяется, пока в потоке S есть данные или пока не произойдёт ошибка.
С помощью следующей команды можно имитировать пишущую машинку:
MOVE #0 TO #2
Предыдущую команду заменяет следующая программа на BASIC:
100 IF INKEY$<>"" THEN GO TO 100
110 IF INKEY$="" THEN GO TO 110
120 PRINT INKEY$;
130 GO TO 100
Работу приведённой выше программы (и команды) можно остановить нажатием BREAK только после того, как экран полностью заполнится и появится сообщение SCROLL?.
Команда CLS # — новая команда BASIC. Она работает так же, как старая команда CLS, но дополнительно устанавливает атрибуты:
INK 0:PAPER 7:BORDER 7:
INVERSE 0:BRIGHT 0:OVER 0:
FLASH 0
Символ # нужно отдельно ввести после команды CLS.
Материал подготовил:
Брада Йожеф
Баймочка, 18
24220 Чантавир
Поделитесь вашим мнением о статье