Одноплатный компьютер с ОС CP/M

Чтобы поработать с китайскими производителями печатных плат (смотри начало эпопеи), мне нужен был какой-нибудь простой проект, с которым было бы интересно повозиться. После небольшого обдумывания, захотелось сделать микрокомпьютер с операционкой CP/M. Почему?

Для этого немного окунёмся в историю и очень кратко коснёмся значимых событий, связанных с одним из выдающихся инженеров ранней компьютерной эры – Гари Килдаллом.

 

ИСТОРИЯ

Самое начало 1970-х… Килдалл заканчивает математический факультет Университета штата Вашингтон и чтобы «откосить» от армии и не попасть во Вьетнам, устраивается в качестве в качестве преподавателя программирования в морскую школу U.S. Naval Postgraduate School.

В 1972 году Интел выпускает первый 4-разрядный микропроцессор 4004. Килдалл захотел использовать его в навигационных расчётах, но программировать в машинных кодах было довольно трудоёмко и у него возникла идея создать язык высокого уровня для этого процессора. Пользуясь знакомством с разработчиками из Интел Килдалл создаёт язык программирования PL/M (Programming Language for Microprocessors).

Гари Килдалл (1942-1994)

В Интел у Килдалла был доступ к компьютеру DEC PDP-10 и он мог писать программы для процессоров 4004 и уже вышедшего 8008 в режиме эмуляции. Сотрудничество с Интел позволило Килдаллу создать лабораторию по исследованию и применению микропроцессоров, куда Интел поставил свой первый персональный компьютер (тогда это называлось «микрокомпьютер») Intellec-8 с процессором 8080, клавиатурой, монитором и считывателем с перфоленты. Работать с перфолентой было неудобно и Килдалл придумал подключить флоппи-диск. По сути это были работы по созданию первого удобного для пользователя настоящего персонального компьютера и это было за 5-6 лет до появления официально признанного первого ПК Altair, для которого некие Билл Гейтс и Пол Аллен напишут свой интерпретатор Бейсика.

Для подключения флоппи-дисков, производимых компанией Shugart (вначале 8-дюймовых ёмкостью 180/360 Кбайт, позже 5-дюймовых), потребовалось создать новый тип устройства – контроллер дисков. Это не так просто как кажется: в те времена контроллер для флоппи-диска представлял собой фактически ещё один компьютер, с процессором, памятью и соответствующей «обвязкой». К этой работе присоединился университетский товарищ Килдалла Джон Тород и в итоге они собрали нечто, очень похожее на прототип современного ПК. Но была одна проблема: не было самого главного, что превращает просто набор электронных устройств в нормальную вычислительную машину – операционной системы.

Килдалл взялся за написание такой операционки на своём же языке PL/M, получившей название CP/M (Control Program for Microcomputers или Control Program/Monitor), ставшей через несколько лет промышленным стандартом для компьютеров на базе процессоров Intel 8080, Intel 8085 и Zilog Z80. В Интел не заинтересовались работой Килдалла, так как просто не поверили в то, что кому-то может понадобиться микрокомпьютер типа их же собственного детища Intellec-8 и решают сосредоточиться на растущем рынке микропроцессоров.

Реклама CP/M. Журнал BYTE, конец 1970-х годов

В 1974 году Килдалл вместе со своей женой Дороти создаёт компанию Intergalactic Digital Research, которая в последующем стала известна под более простым названием Digital Research. Свой бизнес они намеревались делать на распространении CP/M.

Шла вторая половина 70-х и возникший рынок персональных компьютеров переживал настоящий бум. ПК штамповались как горячие пирожки почти всеми, кто умел держать в руках паяльник. Появилось множество контор, которые изготовляли периферийное оборудование. Поэтому операционная система, которая позволила бы управлять новым «железом» была просто необходима. Не удивительно, что ОС от Digital Reserch мгновенно приобрела популярность. Более того, она расходилась в таких количествах, что фирму Килдалла даже обвинили в монополизме!

Реклама CP/M. Журнал BYTE, конец 1970-х годов

Но особое значение имело соглашение с IMSAI, заключённое в 1977 году. Эта компания одной из первых стала поставлять на рынок полностью интегрированные клоны Altair, включающие процессорный блок, монитор и гибкие диски. Единственное, чего не хватало – операционной системы, и IMSAI предложила Килдаллу продать им свою ОС. Сделка состоялась и CP/M начала отдельное от автора существование. Правда, условия сделки были не очень выгодны для Килдалла, но она помогла становлению CP/M и теперь другие компании лицензировали ОС с большей выгодой для её создателя, и он вскоре стал весьма состоятельным человеком.

Реклама CP/M. Журнал InfoWorld, середина 1980-х годов

В 1980 году компания IBM начала поиск подходящей 16-разрядной операционной системы для своего новейшего персонального компьютера IBM PC. Хотя на горизонте и маячила молодая фирмочка Microsoft, но она была известна своей специализацией по языкам программирования типа Бэйсика. Создателями операционных систем считалась уже солидная контора Digital Research, которая к тому времени уже несколько лет поддерживала и развивала всем известную тогда операционную систему CP/M. Но, к сожалению, на тот момент у Килдалла не было 16-разрядной версии и сделка не состоялась.

16-разрядную версию CP/M сделал Тим Патерсон из маленькой компании Seattle Computer Products и называлась эта версия 86-DOS. Версия была очень сырая с большим количеством багов, так как «состряпал» он её довольно быстро – за два месяца. Рабочее название было QDOS (Quick and Dirty Operating System). Гейтс, всегда державший нос по ветру, уже предчувствовал большие барыши, поэтому Майкрософт лицензировала у компании Seattle Computer Products сырую систему 86-DOS и Билли сделал IBM предложение, от которого они уже не смогли отказаться.

Договор IBM с Microsoft, по всей видимости, произошёл  не без участия матери Билла Гейтса, которая была тогда председателем исполнительного комитета в United Way International, вместе с двумя влиятельными руководителями IBM.

Новая операционная система получила название MS DOS, а IBM ставила её на свои компьютеры под названием PC DOS.

В итоге, мало того, что Билли толкнул IBM «сырую» версию операционки с кучей ошибок, так ещё и заставил Голубого Гиганта фактически работать на себя – программистам из IBM пришлось самостоятельно «допиливать» PC DOS чтобы не упасть в грязь лицом перед клиентами и успеть выпустить свой компьютер к установленному сроку, а так как контракт у IBM был с Майкрософт, то и весь «профит» (в смысле прибыль и славу) от продажи компов с MS DOS/PC DOS получил Билли и Ко. Настощий талант!

А у Digital Research всё было далеко не так радужно. Фирма осталась без серьёзного контракта, но всё же CP/M продолжала развиваться. Вначале обнаружилась необходимость отделить общую часть ОС от специализированной, связанной с определённой архитектурой процессора и системы, и появился такой известный сегодня компонент как BIOS (Basic Input/Output System). Затем была разработана многозадачная версия – MP/M, наконец, с появлением процессоров 8086 была создана версия CP/M-86. С 1987 года система стала называться DR-DOS, и её первой стандартной редакцией в 1988 году стала версия DR-DOS 3.41, конкурировавшая с MS-DOS 3.3.

Беспрецедентная популярность ОС СР/М объясняется простотой принципов её работы, наличием простого и компактного набора команд, а также исключительной гибкостью в адаптации к различному периферийному оборудованию. СР/М включает набор стандартных команд и утилит. Некоторые из них – это команды просмотра каталогов файлов и команды манипулирования файлами, команды получения характеристик файлов, устройств и данных об объёме свободного пространства, программа-редактор текста, программа для копирования файлов и т. д. Есть и дополнительные средства для разработки программ.

В СССР была произведена неофициальная адаптация (и русификация) системы CP/M для работы на советских компьютерах. Полученная система получила названия МикроДОС и М86, которые использовались на различных советских компьютерных системах. МикроДОС был несколько расширен по сравнению с оригиналом (программный интерфейс содержал большее количество системных процедур).

Начиная примерно с 1985 года МикроДОС поддерживали следующие советские компьютеры: КОРВЕТ, ВЕКТОР-06Ц, KC85 (ГДР, Роботрон), Robotron KC compact (ГДР, клон Amstrad CPC).

В конце 80-х - в начале 90-х годах Гари Килдалл принимал участие в различных ТВ программах о компьютерных технологиях (можно найти на Ютубе), писал статьи и в целом вёл довольно активную жизнь. Но, к сожалению, в 1994 году он трагически и загадочно погибает (убили?) при невыясненных обстоятельствах в одном из баров Калифорнии.

 

 

ПРАКТИКА

Сделать одноплатный компьютер с ОС CP/M – неплохой вариант для отработки технологии и повод вспомнить былые времена и ушедших героев.

Помимо этого решался ещё один вопрос – можно ли покупать в Китае комплектующие, так как на форумах я часто встречаю опасения (не без основания), что в Китае одни подделки. Для меня вопрос поддельности не принципиален – если деталь или схема выполняет свои задачи, то какая разница «родная» она или «скопированная»?

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

«Родные» детали – это те, которые вообще ничем не отличаются от оригинальных. Возможно, что это просто «серые», завалявшиеся на складах или ещё каким-то образом попадающие на китайский рынок.

Просто выпаянные со старых плат б/у детали. Не самый плохой вариант, при этом можно найти кое-что интересное и уже не выпускаемое.

Откровенные подделки – когда, например, в корпус крупного конденсатора впихивают мелкий (правда, такое я видел только на картинках лет 10 назад), или в стандартный транзисторный корпус (даже в железные транзисторы в корпусе ТО3) запихивают маленький кристалл (а это уже, к сожалению, реальность). В микросхемы усилителей запихивают вообще что-то непонятное, что сильно влияет на звук (смотрел видео со сравнением «родных» усилителей с китайскими).

И последний тип – просто неработающий брак. Такой мне попадался всего один раз.

Правило я выработал простое: для экспериментов и «поиграться» подойдёт и китайское «железо», для чего-то серьёзного лучше всё же покупать в проверенных местах. И, конечно, перед использованием очень желательно все комплектующие тщательно проверить (и «родные», и не очень).

Пару слов о самом интересном для меня – о печатных платах.

В Китае на данный момент уже существуют несколько контор, которые изготовляют печатные платы (и я думаю, что со временем их будет ещё больше). В той, которую выбрал я (pcbway), делают по весьма привлекательной цене, но при одном условии – плата должна быть не более 100х100 мм, со стандартной толщиной фольги (35 мкм) и текстолита (1,6 мм). Делают сразу пять штук. Если размер отклоняется хотя бы на 1 мм по длинной стороне (даже если общая площадь платы уменьшилась, например вам нужно 110х70), то цена возрастает в 1,5-2 раза!

С толщиной фльги ещё бОльшая неприятность. Если вы захотите фольгу потолще (у них толщина почему то измеряется в унциях), например 2 oz, что равно 75 человеческих мкм, то придётся заплатить даже не в 2 раза дороже, а в 3-4 раза! Что почти сравняется с отечественными ценами.

Если вы не делаете ничего нестандартного, то платы 100х100 хватит для реализации множества проектов. Я даже посчитал, что если вдруг вам понадобится большая плата, то сделать два заказа с платами 100х100 будет дешевле, чем одну 100х200. Так что разбивайте свои проекты на модули.

Итого за 5 баксов плюс доставка (в рублях будет около 830-860 р., доставка в Москву в среднем три недели) вы получаете пять плат, изготовленных промышленным способом. В России за такие деньги не делает никто, поэтому это очень выгодное предложение.

Я хочу попробовать другого производителя и сравнить (мне как раз будет нужна плата больше чем 100 мм по длинной стороне).

Переходим к изготовлению.

Я искал схемы простых одноплатных компьютеров на процессоре Zilog Z80 и наткнулся на сайт Grant'а Sirl’а (все ссылки в конце статьи),  и разработанные им схемы ретрокомпов не только на Z80, но и на моторолах 6802 (на них делались первые Apple). Схема была отработана и написано ПО, поэтому я и остановился на ней.

Почти все комплектующие я купил в Китае. Для работы с ПЗУ там же был куплен программатор и УФ-стиратель (подробнее про детали и приборы с Али я, вероятно, напишу отельную статью).

Это была последняя схема, которую я разрабатывал в уже устаревшем PCADе, последняя версия которого вышла аж в 2004 году! После этого я собрался с силами и наконец-то полностью перешёл на Altium Designer.

Схему Гранта Сирла я чуть изменил: выкинул преобразователь RS232, вместо него я использовал переходник USB-RS232 (тоже китайский, разумеется) для связи с компьютером через терминальную программу. Добавил токоограничивающие резисторы на линии TxD и RxD по 2,7 кОм. (Схема и список деталей внизу статьи).

Характеристики компьютера:

Процессор: Zilog Z80 на частоте до 7.3728 MHz (при этом скорость последовательного интерфейса будет 115200 бод)

ОЗУ: 64 КБ

ПЗУ: 16КБ, содержит бутлоадер, утилиты для загрузки, Microsoft Basic.

Диск: 64MB или 128MB CompactFlash, содержит 8 или 16 логических дисков соответственно. Я использовал флешку на 256 МБ.

Два типа аппаратного сброса: Cold Reset (полный сброс) и Warm Reset (используется для возвращения к командной строке CP/M)

Поддержка версии CP/M2.2

Разъём USB-B только для питания.

Вместо SIO/2 Грант пишет, что можно использовать и SIO/0, и SIO/1, но у них немного отличается распиновка, придётся допиливать схему. Я смог достать SIO/2.

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

Готовая плата выглядит так:

И собранная плата. Все микросхемы я устанавливаю в цанговые панельки:

У Гранта флешка подключена через разъём, я же установил обычную гребёнку с шагом 1.27, но лоханулся и перепутал ножки, пришлось припаивать её снизу, хотя изначально я хотел, чтобы флешка вставлялась сверху.

Если припаять угловую гребёнку, то получится даже аккуратней – флешка будет снизу и плашмя, не будет торчать и её вообще не будет видно.

Правильно собранная схема никакой настройки не требует и должна сразу заработать. Процесс установки CP/M подробно описан у Сирла и сложностей не вызвал.

Потребляет плата 80 мА.

Управлять компьютером можно через терминальную программу. Я пользуюсь довольно известной бесплатной PuTTY (котрая, кстати, «застветилась» в серилале «Мистер Робот», небольшой обзор в соотвтетствующей статье). Программа очень простая и какой-то особой настройки не требует.

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

Окно PuTTY с настройкой последовательного порта:

Подключив компьютер мы увидим следущее:

Нажав «?» можно выбрать опции загрузки:

Выбираем «Boot CP/M…»

Нажимаем «Y»

И вот мы загрузились. Я уже накидал разных программ:

Можно запустить утилиту STAT:

Ну и конечно, запускаем игры. Например, легендарную текстовую стратегию Planetfall. Обратите внимание на год выпуска игры.

Кстати, текстовые игрушки – это неплохой способ подучить английский язык.

Есть и текстовые шахматы Sargon:

Если надо поработать, то можно запустить SuperCalc, но я с ним не разбирался:

 

Ну и в качестве некоего резюме.

Основной вывод: заказывать платы в Китае не только можно, но и нужно. И пора уже отказываться от позорного ЛУТа!

Все детали, купленные для этого проекта на Али, работают без проблем, включая ПЗУшки и старые процессоры.

 


Источники:

М. Уэйт, Дж. Ангермейер «Операционная система CP/M», Москва, 1986 год.

Гари Килдалл и его CP/M

Википедия... Вообще, даже в Рунете про Килдалла довольно много информации, так что все заинтересовавшиеся могут провести исследование самостоятельно.


Ссылки:

Страничка проекта на сайте Гранта Сирла.

Статья и картинки к ней (включая оригинальную схему).

Архив с программами: прошивка ROM с бейсиком, сама CP/M, утилиты, ассемблер и т.п. Там же и утилитка под Винду для конвертирования CP/M'овских прожек для заливки через терминал.

Мой архив с моей схемой, списком деталей и эскизом платы.

 






www.etheroneph.com

Facebook

ВКонтакте