Система CP/M
CP/M (Control Program for Microcomputers, Программа управления для микрокомпьютеров) — это операционная система для 8-разрядных микрокомпьютеров на базе процессора Intel 8080 (и совместимых с ним Zilog Z80), разработанная американским программистом Гэри Килдаллом в 1974 году. CP/M стала первой массовой операционной системой для микрокомпьютеров, фактически установив стандарт для рынка персональных компьютеров конца 1970-х — начала 1980-х годов, прежде чем была вытеснена системами MS-DOS и PC DOS. Ключевыми характеристиками CP/M были модульная архитектура, поддержка файловых систем на гибких дисках и переносимость между различными аппаратными платформами.
История
Предыстория и создание
В начале 1970-х годов микропроцессоры, такие как Intel 8008 и 8080, стали доступны для любителей и небольших компаний. Однако для их использования требовалось написание программ на машинном коде или ассемблере, а управление устройствами ввода-вывода (дисководами, принтерами) было сложной задачей. Гэри Килдалл, работавший в Naval Postgraduate School в Монтерее (Калифорния), в 1973 году разработал язык программирования PL/M, который позволял писать системное ПО для микропроцессоров. В 1974 году, используя PL/M, он создал прототип операционной системы для Intel 8080, первоначально названный «CP/M 1.0». Первая версия была продемонстрирована в 1974 году на стенде компании Intel, но не получила коммерческого распространения.
Коммерциализация и распространение
В 1975 году Килдалл основал компанию Digital Research, Inc. (DRI), которая начала лицензировать CP/M производителям микрокомпьютеров. Первым коммерческим продуктом стала CP/M 1.3, выпущенная в 1976 году. Система быстро завоевала популярность благодаря своей модульности: производители могли адаптировать CP/M под свою аппаратуру, написав лишь небольшую часть кода — BIOS (Basic Input/Output System). К 1979 году CP/M стала доминирующей ОС для 8-разрядных компьютеров, таких как Altair 8800, IMSAI 8080, Osborne 1, Kaypro, а также для советских клонов (например, «Микроша», «Союз-Неон»). К 1981 году насчитывалось более 3000 прикладных программ для CP/M, включая текстовые редакторы (WordStar), электронные таблицы (VisiCalc), базы данных (dBASE II) и компиляторы языков (BASIC, Pascal, C).
Упадок и наследие
В начале 1980-х годов с появлением 16-разрядных процессоров Intel 8086/8088 и выходом IBM PC в 1981 году CP/M столкнулась с конкуренцией со стороны MS-DOS (разработанной Microsoft). IBM предложила DRI портировать CP/M на новый процессор, но из-за разногласий по лицензированию IBM выбрала 86-DOS (позже переименованную в PC DOS), которая была совместима с CP/M по интерфейсу и командам. Попытка DRI выпустить CP/M-86 для IBM PC не увенчалась успехом: система стоила дороже (около 250 долларов против 40 долларов за PC DOS) и не получила широкого распространения. К середине 1980-х годов CP/M была вытеснена MS-DOS, но её концепции (файловая система, командная строка, модульная архитектура) оказали влияние на последующие операционные системы. В СССР CP/M использовалась в учебных заведениях и научных учреждениях до конца 1980-х годов, а её клоны (например, «МикроДОС») применялись в бытовых компьютерах.
Архитектура и устройство
Модульная структура
CP/M состояла из трёх основных модулей, которые загружались в память при старте системы:
- CCP (Console Command Processor) — интерпретатор командной строки, отвечающий за ввод и выполнение команд пользователя (DIR, ERA, TYPE, REN, SAVE и другие). CCP располагался в фиксированной области памяти (обычно с адреса 0xE400).
- BDOS (Basic Disk Operating System) — ядро операционной системы, реализующее файловые операции (открытие, чтение, запись, удаление файлов), управление дисками и обработку ошибок. BDOS занимал область памяти с адреса 0xE000.
- BIOS (Basic Input/Output System) — низкоуровневый драйвер, зависящий от конкретной аппаратуры. BIOS обеспечивал взаимодействие с дисководами, клавиатурой, дисплеем, принтером и другими устройствами. Производители компьютеров писали свой BIOS, что позволяло легко портировать CP/M на разные платформы.
Управление памятью
CP/M работала в реальном режиме адресации процессора Intel 8080/Z80, который имел 16-битную шину адреса и мог адресовать до 64 КБ памяти. Система занимала нижние 6 КБ (от 0x0000 до 0x17FF) для системных таблиц и векторов прерываний, а также верхние 6 КБ (от 0xE000 до 0xFFFF) для CCP, BDOS и BIOS. Пользовательская программа загружалась в оставшуюся область (от 0x0100 до 0xDFFF) — так называемый «пользовательский сегмент» (TPA, Transient Program Area). Размер TPA составлял около 56 КБ, что было достаточно для большинства приложений того времени.
Файловая система
CP/M использовала простую файловую систему, основанную на каталогах, хранящихся на диске. Диски делились на дорожки и сектора (обычно 8 секторов по 128 байт на дорожку). Каталог содержал записи (по 32 байта) для каждого файла, включая имя (до 8 символов), расширение (до 3 символов), атрибуты (только чтение, системный), номер первого блока данных и размер. Файлы могли занимать несколько блоков (по 1 КБ или 2 КБ), а свободное пространство отслеживалось с помощью битовой карты. Максимальное количество файлов на диске — 64 (по числу записей в каталоге). Поддерживались до 16 логических дисков (A: до P:).
Командная строка
Пользователь взаимодействовал с CP/M через командную строку, где вводил команды после приглашения (например, «A>»). Основные команды:
- DIR — вывод списка файлов в каталоге.
- ERA — удаление файла.
- REN — переименование файла.
- TYPE — вывод содержимого текстового файла на экран.
- SAVE — сохранение содержимого памяти в файл.
- PIP — копирование файлов между устройствами (например, PIP B:=A:FILE.TXT).
- STAT — отображение информации о дисках и памяти.
- ED — простейший текстовый редактор (строчный).
- ASM — ассемблер для перевода программ из мнемоник в машинный код.
Версии и модификации
Основные версии CP/M для 8-разрядных процессоров
- CP/M 1.0 (1974) — прототип, не имел коммерческого распространения.
- CP/M 1.3 (1976) — первая коммерческая версия, поддерживала диски до 256 КБ.
- CP/M 2.0 (1978) — значительное обновление: поддержка до 16 дисков, улучшенная обработка ошибок, новые команды (PIP, STAT). Стала наиболее распространённой версией.
- CP/M 2.2 (1979) — последняя стабильная версия для 8-разрядных систем, включала исправления ошибок и поддержку дисков до 8 МБ.
- CP/M 3.0 (1983, также известная как CP/M Plus) — версия с поддержкой банковской памяти (до 1 МБ), улучшенной файловой системой (до 256 файлов на диск), встроенным текстовым редактором и поддержкой сети. Использовалась в компьютерах Amstrad CPC и некоторых советских моделях.
Версии для 16-разрядных процессоров
- CP/M-86 (1982) — порт для Intel 8086/8088, совместимый с IBM PC. Не получил широкого распространения из-за конкуренции с MS-DOS.
- Concurrent CP/M (1983) — многозадачная версия, позволявшая запускать несколько программ одновременно (до 4 терминалов). Использовалась в серверах и рабочих станциях.
- MP/M (Multi-Programming Monitor) — многопользовательская версия, поддерживавшая до 8 пользователей на одном компьютере.
Клоны и производные
- ZDOS — версия для компьютеров на Z80, разработанная компанией Zenith Data Systems.
- TurboDOS — модификация с улучшенной производительностью и поддержкой сети, популярная в начале 1980-х.
- CP/K — версия для компьютеров на процессоре 8080, созданная для учебных целей.
- В СССР существовали клоны CP/M, такие как «МикроДОС» (для компьютера «Микроша»), «Союз-ДОС» (для «Союз-Неон») и «Электроника-ДОС» (для «Электроника МС 0511»).
Применение
Персональные компьютеры
CP/M была основной операционной системой для большинства 8-разрядных персональных компьютеров конца 1970-х — начала 1980-х годов. На ней работали такие популярные модели, как:
- Altair 8800 (MITS) — один из первых микрокомпьютеров, поддерживал CP/M через плату расширения.
- IMSAI 8080 — клон Altair, широко использовался любителями.
- Osborne 1 (1981) — первый портативный компьютер, работал под CP/M.
- Kaypro II (1982) — портативный компьютер с CP/M, популярный среди бизнес-пользователей.
- Amstrad CPC (1984) — британский домашний компьютер, использовал CP/M 3.0.
- TRS-80 Model II (1979) — компьютер компании Tandy, поддерживал CP/M.
Промышленность и наука
CP/M применялась в системах управления производственными процессами, контрольно-измерительных приборах, терминалах сбора данных и лабораторных установках. Благодаря модульности и низким требованиям к ресурсам, её использовали во встраиваемых системах на базе Z80 (например, в станках с ЧПУ, медицинских устройствах). В научных учреждениях CP/M служила для обработки данных, написания отчётов и обучения программированию.
Образование
В 1980-х годах CP/M широко использовалась в учебных заведениях СССР и стран Восточной Европы для обучения основам информатики и программирования. Советские компьютеры «Микроша», «Союз-Неон», «Электроника МС 0511» и «Корвет» работали под управлением CP/M или её клонов. Учащиеся изучали командную строку, файловую систему и основы ассемблера.
Критика и ограничения
Недостатки
- Ограниченная память: 64 КБ адресного пространства было недостаточно для сложных приложений, особенно с появлением графических интерфейсов.
- Нет поддержки многозадачности: CP/M была однозадачной; для многопользовательской работы требовалась отдельная версия MP/M.
- Устаревшая файловая система: каталог на 64 файла и отсутствие поддержки длинных имён (максимум 8.3) ограничивали возможности.
- Отсутствие встроенной поддержки графики: CP/M ориентировалась на текстовый режим (80x24 символа), что затрудняло создание графических приложений.
- Зависимость от аппаратуры: BIOS требовал адаптации под каждую платформу, что замедляло внедрение новых устройств.
Конкуренция с MS-DOS
Главной причиной упадка CP/M стала победа MS-DOS на рынке IBM PC. MS-DOS была дешевле, имела лучшую поддержку со стороны Microsoft и была совместима с CP/M по интерфейсу команд (многие команды, такие как DIR, COPY, TYPE, были заимствованы). Кроме того, MS-DOS поддерживала 16-разрядные процессоры, что позволяло адресовать больше памяти и работать быстрее. Попытки DRI выпустить CP/M-86 не смогли переломить ситуацию.
Интересные факты
- Гэри Килдалл разработал CP/M на языке PL/M, который сам же и создал. Исходный код системы был написан всего на нескольких сотнях строк.
- IBM первоначально обратилась к DRI с предложением лицензировать CP/M для IBM PC, но переговоры сорвались из-за того, что Килдалл не подписал соглашение о неразглашении (по одной из версий, он был в отпуске).
- CP/M оказала прямое влияние на создание MS-DOS: Тим Патерсон из Seattle Computer Products написал 86-DOS, скопировав интерфейс и команды CP/M, чтобы обеспечить совместимость.
- В 1980 году компания Digital Research выпустила версию CP/M для процессора Motorola 68000 (CP/M-68K), но она не получила распространения.
- В СССР существовала неофициальная локализация CP/M, включавшая поддержку кириллицы (например, в компьютере «Микроша»).
Источники
- Kildall, Gary. «CP/M: A Family of Operating Systems». Digital Research, 1980.
- Freiberger, Paul; Swaine, Michael. «Fire in the Valley: The Making of the Personal Computer». McGraw-Hill, 2000.
- Дьяконов, В. П. «Микропроцессоры и микрокомпьютеры». М.: Радио и связь, 1986.
- «The CP/M Handbook» by Rodnay Zaks, Sybex, 1980.
- «История развития операционных систем» — учебное пособие для вузов, М.: МГТУ им. Н.Э. Баумана, 2005.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →