Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

История [ править ]

Проблема FCC [ править ]

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

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

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

TI диверсия [ править ]

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

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

SIO [ править ]

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

К этому времени была проделана значительная работа по использованию микросхемы Atari POKEY для работы с кассетной декой путем прямого вывода звуков, которые будут записаны на ленту. Было понято, что при соответствующих модификациях 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 управлялся микросхемой PoKEY Atari , которая включала в себя ряд таймеров общего назначения. Четыре из них позволяли точно контролировать частоту синхронизации и были предназначены для использования для вывода звука путем подключения их к аналого-цифровому преобразователю (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 - Computer Systems , Atari, Inc. , заархивировано из оригинала 08 декабря 2015 г. , получено 14 января 2015 г.
  3. ^ SIO 1980 , стр. 1.
  4. ^ a b c d e f g h Decuir .
  5. ^ SIO 1980 , стр. 6-7.
  6. ^ а б СИО 1980 , стр. 13.
  7. ^ SIO 1980 , стр. 8.
  8. ^ а б СИО 1980 , стр. 7.
  9. ^ а б в СИО 1980 , стр. 6.
  10. ^ SIO 1980 , стр. 18.
  11. ^ SIO 1980 , стр. 16.
  12. ^ Atari 810 Disk Drive Operator's Manual (PDF) (Технический отчет). 1979. стр. 6.
  13. ^ «Установка Indus GT» .
  14. ^ SIO 1980 , стр. 25.
  15. ^ SIO 1980 , стр. 28.
  16. ^ a b c DeRe 1981 , стр. Приложение C.
  17. ^ Виктор, Джон (октябрь 1982). «Аудио, пока ты загружаешься» . Античный .

Библиография [ править ]

  • Операционная система Atari 400/800. Руководство пользователя . Atari. 1980 г.
  • Руководство по аппаратному обеспечению Atari 400/800 (PDF) . Atari. 1980 г.
  • Домашняя компьютерная система Atari: последовательный интерфейс ввода / вывода (PDF) . 1980 г.
  • De Re Atari . Atari. 1981 г.
  • Decuir, Джо. «Интервью с Джо Декуиром» (Интервью). Беседовал Курт Вендель.