Atari SIO - Atari SIO

Последовательный ввод-вывод Atari (SIO)
Atari-800-Computer-Port-Side.jpg
Порты Atari 800 со вторым слева портом SIO.
Типпоследовательная шина
ДизайнерДжо Декуир / Atari Inc.
Разработан1978; 42 года назад (1978)
ПроизводительAtari Inc.
ПроизведеноС 1979 по 1992 год
Горячее подключениев теории
Внешнийда
Булавки13
КоннекторD-сверхминиатюрный вариант
Сигнал данныхДвунаправленный серийный
Ширина8 + старт / стоп = 10
Битрейт~ 120 кбит / с максимум
Максимум. устройства256 максимум
8 в использовании
ПротоколСерийный
Контакт 1ЧАСЫВход часов
Контакт 2ЧАСЫ ИЗВыход часов
Пин 3ДАННЫЕВвод данных
Штырь 4GNDЗемля
Штырь 5ДАННЫЕВывод данных
Пин 6GNDЗемля
Штырь 7КОМАНДАКоманда
Пин 8МОТОРБлок управления двигателем
Пин 9ПРОДОЛЖИТЬПродолжить
Пин 10+ 5В+ 5В / готово
Штырь 11АУДИОАудио вход
Штырь 12+ 12В+ 12В (только 400/800)
Пин 13ПрерватьПрерывать

В Последовательный ввод / вывод система, широко известная как SIO, был проприетарным периферийная шина и сопутствующее программное обеспечение стеки протоколов используется на Семейство 8-битных Atari предоставить большую часть ввод, вывод обязанности для этих компьютеров. В отличие от большинства систем ввода-вывода того времени, таких как RS-232, SIO включал облегченный протокол, позволяющий подключать несколько устройств к одному прикованный цепочкой порт, поддерживающий десятки устройств. Он также поддерживал подключи и играй операции. Дизайнер SIO, Джо Декуир, считает свою работу над системой основой USB.

SIO был разработан для обеспечения возможности расширения без использования внутренних слоты для карт как в Яблоко II, из-за проблем с FCC над радиопомехи. Для этого требовалось, чтобы он был достаточно гибким с точки зрения поддержки устройств. Устройства, которые использовали интерфейс SIO, включали принтеры, дисководы гибких дисков, кассетные деки, модемы и блоки расширения. У некоторых устройств были драйверы на основе ПЗУ, которые были скопированы на главный компьютер при загрузке, что позволяло поддерживать новые устройства без встроенной поддержки, встроенной в сам компьютер.

SIO требовалась логика в периферийных устройствах для поддержки протоколов, а в некоторых случаях требовалось значительное количество вычислительной мощности - Atari 810 дискета привод включал Технология MOS 6507 например. Кроме того, большой нестандартный соединитель был дорогим. Это привело к увеличению затрат на систему SIO, и Декуир винит это в «потоплении системы».[1][2] За 8-битную историю попытки снизить стоимость системы были безуспешны.

Название "SIO" правильно относится только к разделам Операционная система которая обрабатывала обмен данными, в документации Atari сама шина - это просто «последовательная шина» или «интерфейсная шина», хотя иногда ее также называют SIO.[3] В общем, SIO относится ко всей системе от операционной системы до шины и даже к физическим разъемам.

История

Проблема FCC

Система SIO в конечном итоге обязана своим существованием правилам FCC о допустимом количестве радиочастотных помех, которые могут протекать от любого устройства, которое непосредственно генерирует аналоговое телевидение сигналы. Эти правила требовали очень небольшого количества утечек и должны были пройти комплексное тестирование. Эти правила подвергались пересмотру в период, когда Atari Группа Grass Valley разрабатывал машину Коллин, которая впоследствии стала Atari 800.[4]

В Яблоко II, одна из немногих готовых машин, подключенных к телевизору в ту эпоху, избежала этой проблемы, не включив Модулятор RF в компьютере. Вместо этого Apple заключила сделку с местной компанией по производству электроники M&R Enterprises о продаже подключаемых модуляторов под названием Sup'R'Mod. Это означало, что Apple технически не генерировала телевизионные сигналы и не должна была проходить тестирование FCC. Один из основных поставщиков Atari, Sears, сочли, что это не подходящее решение для их готовых продаж, поэтому для удовлетворения требований к помехам они заключили всю систему в литой алюминиевый блок толщиной 2 мм.[4]

Коллин изначально задумывалась как игровая консоль, преемник Atari 2600. Успех Apple II привел к репозиционированию системы как домашний компьютер, и этому рынку требовались периферийные устройства. На таких машинах, как Apple II, для поддержки периферийных устройств нужно было вставить карту адаптера в один из внутренних слотов для карт, пропустить кабель через отверстие в корпусе и подключить устройство к этому кабелю. Отверстие, достаточно большое для такого кабеля, означало бы, что Коллин не прошла бы тесты RF, что представляло серьезную проблему. Вдобавок конвекционное охлаждение карт было бы очень затруднительным.[4]

TI диверсия

Во время визита в начале 1978 г.[а] а Инструменты Техаса (TI) продавец продемонстрировал систему, состоящую из оптоволоконный кабель кабель с трансиверами на обоих концах. Джо Декуир предложил использовать это для отправки видеосигнала на внешний радиочастотный модулятор, который будет так же прост в использовании, как коаксиальный кабель, необходимый для передачи сигнала на телевизор. Теперь в компьютере могли быть нормальные слоты; Как и Apple II, RF-часть будет полностью внешней и может быть протестирована отдельно от компьютера.[4]

Когда Декуир объяснил свою концепцию, у продавца «почти вылезли глаза».[4] Неизвестная команде Grass Valley, TI в то время занималась разработкой ТИ-99/4 и столкнулся с той же проблемой с выходом RF. Когда позже Декуир объяснил эту идею своему боссу Уэйду Туме, Тума ответил, что «Нет, Федеральная комиссия по связи никогда не позволит нам уйти от этого трюка».[4] Это подтвердилось; TI воспользовалась идеей Декуира, и когда они представили ее FCC в 1979 году, они сразу же отвергли ее. TI пришлось переработать свою систему, и в результате задержка означала, что Atari первой вышла на рынок.[4]

SIO

Когда этот путь к разрешению слотов для карт заблокирован, Декуир вернулся к проблеме обеспечения расширения через какую-то внешнюю систему.[4]

К этому времени была проделана значительная работа по использованию Atari's ПОКЕЙ чип для запуска кассетная дека путем прямого вывода звуков, которые будут записаны на ленту. Было понято, что при соответствующих модификациях POKEY может обойти аппаратное обеспечение цифро-аналогового преобразования и управлять TTL вывод напрямую. Для создания цифровой шины TTL система SIO использовала два из четырех звуковых каналов POKEY для создания устойчивых тонов, представляющих тактовые сигналы заданной частоты. Для отправки и приема данных использовался однобайтовый буфер; каждый раз при переключении тактового сигнала один бит из буфера считывался или записывался. Когда все восемь бит были прочитаны или записаны, система генерировала прерывание, которое запускало Операционная система читать или писать больше данных.[5]

В отличие от кассетного интерфейса, где обычно используется только одно устройство, внешний порт расширения должен поддерживать более одного устройства. Для поддержки этого был разработан простой протокол и несколько новых контактов добавлены к первоначальному простому порту кассеты. Наиболее важным из них был вывод COMMAND, который запускал устройства для прослушивания 5-байтового сообщения, которое активировало одно из устройств на шине и запрашивало у него данные (или отправляло ему команды).[6] Они также добавили контакты PROCEED и INTERRUPT, которые могли использоваться устройствами для установки битов в регистрах управления на хосте, но они не использовались в развернутой системе. Точно так же сигналы синхронизации, генерируемые POKEY, были отправлены на выводы CLOCKOUT и CLOCKIN, хотя асинхронный протокол их не использовал.[7]

Описание

Оборудование

В разъеме SIO использовались пружинные металлические листы для надежного соединения с контактами устройств. Прорези, прорезанные в разъеме, позволяют листам двигаться.
Atari 850 предоставил Принтер Centronics и RS-232 последовательные порты для подключения к сторонним устройствам. Типичный для устройств SIO, он имеет как входные, так и выходные порты для обеспечения последовательного подключения.

Шина SIO была реализована с использованием специального 13-контактного D-разъема (хотя и не D-сверхминиатюрный ) с вилками на устройствах и розетками на обоих концах кабелей.[8] Разъемы были физически прочными, чтобы допускать многократное использование, с очень прочными контактами в гнезде устройства и пружинными разъемами в кабелях, в отличие от фрикционной посадки, как в типичном D-разъеме. У большинства устройств были входные и выходные порты для обеспечения возможности последовательного подключения периферийных устройств, хотя программный рекордер Atari 410 должен был быть размещен в конце цепочки и поэтому не имел выходного порта.

Связь

SIO контролировалась Atari's ПОКЕЙ чип, включающий в себя ряд таймеров общего назначения. Четыре из них позволяли точно контролировать частоту синхронизации и были предназначены для использования для вывода звука путем подключения их к аналого-цифровой преобразователь (A-to-D), а затем смешивают их в телевизионный сигнал перед входом в RF-модулятор. Они были повторно использованы в качестве основы системы SIO, использовались в качестве тактовых импульсов в некоторых режимах или для создания выходных сигналов непосредственно в других.

Система включала единый «регистр сдвига», который использовался для полуавтоматизации большинства передач данных. Он состоял из одного 8-битного значения, сначала LSB,[9] который использовался для буферизации чтения и записи. Пользователь обращается к ним через две области памяти, известные как SEROUT для записи и SERIN для чтения. Это были «теневые регистры», места в ОЗУ которые отражают регистры в различных микросхемах поддержки, таких как POKEY. Биты данных были объединены в один нулевой стартовый бит и один стоповый бит, и четность не использовалась.[9]

Для записи данных в синхронном режиме основные каналы таймера POKEY были установлены на соответствующую тактовую частоту, скажем, 9600 бит / с. Любые данные, записанные в регистр SEROUT, затем отправлялись по одному биту каждый раз, когда сигнал становился высоким. Это было синхронизировано, поэтому сигнал вернулся на низкий уровень в середине бита. Когда все 10 бит (включая начало и конец) были отправлены, POKEY отправил маскируемое прерывание в ЦП, чтобы указать, что он готов к передаче другого байта. При чтении, если перед считыванием SERIN был получен другой байт данных, 3-й бит SKSTAT был установлен в истинное значение, чтобы указать на переполнение. Отдельные считываемые биты также отправлялись в 4-й бит SKSTAT по мере их поступления, что позволяло прямое считывание данных, не дожидаясь завершения кадрирования.

Система официально поддерживала скорость до 19 200 бит / с, но эта скорость была выбрана только потому, что инженер Atari анализатор протокола достиг максимальной скорости. Система действительно была способна работать намного лучше. Ряд сторонних устройств, особенно дисководы гибких дисков, использовало специальное оборудование и драйверы для значительного увеличения скорости передачи до 72 000 бит / с.

Хотя в системе были выводы CLOCKOUT и CLOCKIN, которые теоретически могли использоваться для синхронной связи, на практике использовалась только асинхронная система. В этом случае базовая скорость была установлена, как указано выше, в POKEY, которая будет следовать за изменениями до 5% от этой базовой скорости. Это значительно упростило работу с реальными устройствами, где механические или электрические проблемы вызывали небольшое изменение скорости с течением времени. Одним из примеров была кассетная дека, где растяжение ленты могло изменять скорость, другим - модем, где удаленная система может не быть точно синхронизирована с заданной скоростью.

Управление устройством

Система SIO позволяла подключать устройства в гирляндную цепочку и, таким образом, требовала некоторого способа идентификации того, что информация на различных выводах данных предназначалась для конкретного устройства в цепочке. Это было выполнено с помощью булавки КОМАНДА.[9]

Контакт COMMAND обычно находился в высоком состоянии,[8] и когда он был понижен, устройства на шине должны были прослушивать "командный кадр". Он состоял из 5-байтового пакета; первый байт был идентификатором устройства, второй - номером команды устройства, а затем два вспомогательных байта данных, которые могли использоваться драйвером для любых целей. За этими четырьмя последовал байт контрольной суммы.[6] Когда фрейм был завершен, контакт COMMAND снова стал высоким.[10]

При получении пакета ожидалось, что устройство, указанное в первом байте, ответит. Он состоял из одного байта, содержащего символ ASCII, «A» для подтверждения, если пакет был правильно декодирован и контрольная сумма совпала, в противном случае «N». Для команд, которые обмениваются данными, за кадром команды будет следовать «кадр данных» от или к выбранному устройству. Затем этот кадр будет подтвержден получателем с помощью «C» для завершения или «E» для ошибки.[11] Поскольку каждый пакет из 128 байтов данных требовал еще одного кадра команды, прежде чем мог быть отправлен следующий, на пропускную способность влияли проблемы с задержкой; дисковый накопитель Atari 810 обычно использовал скорость 19 200 бит / с, но ее скорость была ограничена примерно 6000 бит / с из-за накладных расходов.[12]

Перечисление устройств производилось механически, обычно с использованием небольших DIP-переключатели.[13] Каждому классу устройств был дан свой набор из 16 возможных чисел, основанный на шестнадцатеричных числах, например, диапазон 30 долларов для дисковых накопителей и 40 долларов для принтеров. Однако каждый драйвер мог поддерживать столько устройств, сколько хотел; драйвер принтера Atari 820 поддерживал только один принтер стоимостью 40 долларов,[14] в то время как драйверы дисков могли поддерживать четыре диска стоимостью от 31 до 34 долларов.[15]

Использование кассеты

Оригинальный 410 был заменен гораздо меньшим 1010 в эпоху XL.

Дизайн того, что стало SIO, начинался как система взаимодействия с кассета записывающие устройства, использующие звуковое оборудование для генерации соответствующих тонов. Эта возможность была сохранена в производственных версиях, что позволило Atari 410 и его преемникам быть относительно простыми устройствами.

Когда настроена работа с кассетой, выходы каналов 1 и 2 POKEY были отправлены на DATAOUT, а не на контакты синхронизации. Два канала были настроены на воспроизведение тонов, которые можно было безопасно записать на ленту, 3995 Гц для нуля было в канале 2 POKEY и 5326 Гц для одного было в канале 1. В этом режиме, когда POKEY считывает биты из SERIN , любая 1 приводила к воспроизведению канала 1 на выводе данных, а 0 - к воспроизведению канала 2. Таким образом, байт данных был преобразован в тоны на ленте. При чтении, однако, использовалась другая система, поскольку в компьютере не было аналого-цифрового преобразователя. Вместо этого кассетные деки включали два узкополосных фильтра, настроенных на две частоты. Во время чтения вывод одного или другого из этих фильтров будет утверждаться, поскольку биты считываются с ленты. Они были отправлены в виде цифровых данных обратно на главный компьютер.[16]

Поскольку лента была подвержена растяжению и другим механическим проблемам, которые могли ускорить или замедлить транспортировку по головкам, система использовала асинхронные операции чтения и записи. Данные были записаны блоками по 132 байта на запись, причем первые два байта были битовой комбинацией «01010101 01010101». Промежуток между записями между блоками без тонов позволил операционной системе узнать, когда начинается новая запись, путем поиска ведущего нуля. Затем он быстро считывает порт и синхронизирует переходы битов синхронизации с 0 на 1 и обратно, чтобы определить точную скорость передачи данных. Следующий байт был контрольным байтом, определяющим, была ли это обычная запись из 128 байтов данных, короткий блок или конец файла. До 128 байтов данных, за которыми следует байт контрольной суммы, включая все, что было до контрольной суммы.[16]

Операция далее контролировалась выводом MOTOR порта SIO, предназначенным для этой цели. Когда этот штифт был низким, двигатель в деке был выключен. Это позволяло пользователю нажимать кнопку воспроизведения или воспроизведения и записи без движения ленты. Когда на компьютере была введена соответствующая команда, активировался ДВИГАТЕЛЬ, и кассета начинала вращаться.[16]

Другим выделенным контактом был AUDIOIN, который был подключен непосредственно к схемам вывода звука между D-to-A преобразователями POKEY и конечным выходом, так что любой сигнал на контакте смешивался со звуком из POKEY (если есть) и затем отправлено на телевизионный динамик. Он был подключен к левому звуковому каналу в кассете, а правый канал был подключен к выводам данных. Это позволило пользователям записывать обычные звуки на левом канале, а затем воспроизводить их по телевизору. Это часто сочеталось с прямым моторным контролем для создания интерактивных лент для изучения языка и подобных программ. Некоторые компании-разработчики программного обеспечения записывают на этот канал звуки или музыку, чтобы сделать процесс загрузки более приятным.[17]

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

Примечания

  1. ^ Другой источник сообщает, что это было в июле 1977 года.

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

  1. ^ "Интервью с Джо Декуиром". Музей Атари.
  2. ^ Atari - Компьютерные системы, Atari, Inc., заархивировано из оригинал на 2015-12-08, получено 2015-01-14
  3. ^ SIO 1980, п. 1.
  4. ^ а б c d е ж г час Decuir.
  5. ^ SIO 1980, стр. 6-7.
  6. ^ а б SIO 1980, п. 13.
  7. ^ SIO 1980, п. 8.
  8. ^ а б SIO 1980, п. 7.
  9. ^ а б c SIO 1980, п. 6.
  10. ^ SIO 1980, п. 18.
  11. ^ SIO 1980, п. 16.
  12. ^ Руководство оператора дисковода Atari 810 (PDF) (Технический отчет). 1979. стр. 6.
  13. ^ «Установка Indus GT».
  14. ^ SIO 1980, п. 25.
  15. ^ SIO 1980, п. 28.
  16. ^ а б c DeRe 1981, п. Приложение C.
  17. ^ Виктор, Джон (октябрь 1982 г.). "Аудио во время загрузки". Античный.

Список используемой литературы