Вход/Регистрация
Стив Джобс и я: подлинная история Apple
вернуться

Возняк Стивен Гэри

Шрифт:

Но на одном из совещаний Майк Марккула сказал мне, что Apple II непременно должен работать с дискетами. Его раздражало, что его маленькая бухгалтерская программа загружается с кассеты целую вечность. Флоппи-диск крутится гораздо быстрее, плотность записи на нем гораздо выше, и с него программа грузилась бы гораздо быстрее.

К примеру, с кассеты компьютер мог читать 1000 бит в секунду, а с дискеты – 100 000 бит в секунду.

Я помнил, что скоро в Лас-Вегасе пройдет выставка потребительской электроники CES. Это была первая CES, где планировалось демонстрировать компьютеры, и из Apple туда собирались только маркетологи.

Я спросил Майка: а если я закончу разработку дисковода вовремя, могу я тоже отправиться в Вегас на выставку? Он ответил утвердительно.

У меня оставалось лишь две недели, чтобы подготовить флоппи-дисковод для Apple II. Я ни разу в жизни не видел такое устройство в работе и никак его не использовал. Но теперь у меня была надуманная мотивация (надуманная – потому что, конечно, я и так мог бы съездить на CES, если бы захотел): снова изумить своих коллег по Apple.

Я работал днями и ночами, в Рождество и на Новый год. Рэнди Уиггингтон, тогда поступивший в Хоумстед – школу, которую закончили мы со Стивом, – много помогал мне с этим проектом.

* * *

Чтобы меня подстегнуть, Стив сообщил мне, что, по его информации, компания Shugart, главный производитель флоппи-дисководов на тот момент, собирается выйти на рынок с пятидюймовым форматом [5] . (Алан Шугарт изобрел флоппи-диски несколькими годами ранее, когда работал в IBM.) Стив всегда искал новые технологии, имеющие преимущества и способные стать трендом, и это был как раз тот случай.

Он заполучил один из новых пятидюймовых дисководов Shugart, чтобы я попробовал приладить его к Apple II. Мне нужно было сделать вот что: разработать плату контроллера, которая подключалась бы к Apple II и позволяла читать и записывать данные на дискету. Первым делом я изучил сам дисковод, его собственный контроллер и принципы его работы. Я проштудировал инструкцию. А затем проанализировал печатную схему дисковода и микросхему самого диска. Она содержала коннектор и протокол, определяющий, как обрабатывается сигнал на запись данных. В итоге я решил, что двадцать чипов из двадцати двух – или около того – не нужны. Чтобы флоппи-диск читался, нужны были уже имеющаяся микросхема на дисководе Shugart и схема, которую мне предстояло разработать. Я выдернул двадцать из их чипов, то есть в моем конечном продукте стало на двадцать процессоров меньше. Это мой обычный подход к работе. Теперь я мог отправлять данные с моего собственного контроллера дискет на головки чтения и записи и запускать свои собственные алгоритмы на компьютере. По правде сказать, с самим компьютером нужно было проделать меньше работы, чем ушло на генерацию смешного протокола, требовавшегося Shugart. Потом я посидел, подумал и придумал очень простую микросхему, записывающую данные на дискеты и читающую с них. Вот это оказалось серьезной проблемой.

5

Около 13 сантиметров.

* * *

В интерфейсе для кассет, который я разрабатывал, уровень сигнала постоянно менялся: от низкого к высокому и наоборот. Сигнал поступал постоянно, пока крутилась пленка. Так что микросхема, отвечающая за обмен данными с магнитофоном, просто не предусматривала поддержку постоянного уровня сигнала.

А на кассете нельзя было записать сигнал, сохраняющий один и тот же уровень достаточно долгое время. Так что микропроцессор менял уровень сигнала исходя из того, какие данные записывались: нули или единицы. Я установил скорость обмена данных с кассетой на уровне 1000–2000 герц. Это обычные для человеческого голоса частоты, для их записи и воспроизведения и предназначались кассеты. Это примерно одна миллисекунда (одна тысячная секунды) на переключение уровня сигнала.

Но при работе с дискетами переключение должно было происходить гораздо быстрее – за четыре-восемь микросекунд (миллионных долей секунды). Мой микропроцессор никак не мог генерировать такие сигналы напрямую из потока данных из нулей и единиц. Он не был рассчитан на такие скорости. Ведь микропроцессор 6502, на котором был основан Apple II, работал со скоростью приблизительно 1 мегагерц. Самые быстрые инструкции исполнялись за две микросекунды, а для генерации сигнала требовалось множество инструкций. Это была проблема.

К счастью, я нашел решение.

Apple II мог читать и записывать данные на карты, присоединенные к восьми слотам расширения, и выполнял эту задачу очень эффективно. Так что я придумал схему, позволяющую выводить 8 бит (1 байт) данных на контроллер флоппи-диска, а тот мог передавать эти биты раз в четыре микросекунды, по одному биту за раз. Восьмибитный код получался из 4 битов реальных компьютерных данных.

Но и этого было едва достаточно, чтобы моя идеальная программа могла угнаться за такой скоростью. Мне пришлось выяснять точное число тактов процессора, в микросекундах, для каждого шага. Таким образом, когда я отправлял на контроллер 8 битов кода каждые 32 микросекунды, скорость передачи совпадала с нужной скоростью записи. И не важно было, по какому пути идет моя программа, сколько в ней инструкций, сколько ответвлений, сколько циклов. Это всегда происходило ровно раз в 32 микросекунды, когда приходила очередь записать следующий пакет данных.

С таким точным расчетом в программировании может справиться только ум, настроенный на работу с аппаратной частью. У обычных программистов вовсе нет необходимости так точно рассчитывать время.

* * *

Программирование оборудования – весьма хитрая штука. Даже крохотные изменения в микропроцессоре могут свести всю проделанную работу на нет. Например, если бы вышла версия процессора 6502, выполняющая конкретные инструкции за три микросекунды, а не за четыре, все мои расчеты и настройки пошли бы к чертям.

Карта дисковода должна была принимать данные по 8 бит и лишь передавать их на флоппи-диск, на магнитную головку записи – примерно так же записывались данные на кассеты. Сохранить данные на дискете было просто. Восьмибитный регистр (регистры содержат данные) мог быть загружен из системной памяти и передать данные за требуемые четыре микросекунды.

А вот движение данных в обратном направлении – чтение с дискеты – было куда более сложной задачей. Я придумал вот что: создать крохотный микропроцессор и внедрить его в качестве так называемой машины состояний.

  • Читать дальше
  • 1
  • ...
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: