могла занимать 256 байт, но у каждого слота были еще 2 килобайта адресного пространства, чтобы запускать дополнительный программный код. Нужно было знать, что на каждой плате есть эти дополнительные адреса памяти. Чтобы их использовать, нужны были микросхемы, обрабатывающие информацию о том, какая именно плата посылает сигнал.

В противном случае, когда эти 2 килобайта адресов подключались, процессор получал данные от нескольких плат сразу, и возникал конфликт. На каждой плате также были шестнадцать заранее отведенных адресов для управления оборудованием.

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

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

Мы стали открытием того времени, и все журналы (даже массовая пресса) начали писать о нас хвалебные статьи. Они были повсюду. Такой пиар невозможно было купить. Да нам и не приходилось этого делать.

* * *

Итак, данные в Apple II хранились на кассетах. Я ни разу в жизни не пользовался флоппи-диском. Но они существовали. Я слышал, что продаются дискеты для компьютеров в сборке типа «Альтаира», и, конечно, на них работали дорогие мини-компьютеры той эпохи. Все эти диски были большого формата, восемь дюймов[4], то есть сделаны на основе магнитных дисков такого диаметра. И на каждой такой дискете можно было хранить лишь 100 килобайт данных. По нынешним стандартам не шибко много. Это лишь около 100 000 печатных знаков.

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

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

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

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

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

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

* * *

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

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

* * *

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

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

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

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

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

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

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

* * *

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

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

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

Я сделал ее из двух чипов, что было замечательным достижением. Один чип представлял собой

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату