CP/M

CP/M
CP/M-86의 스크린샷
개발자디지털 리서치, 게리 킬달
프로그래밍 언어어셈블리어, 베이직, Modula-2, 파스칼 등
상태역사적
소스 형태원래 사유 소프트웨어였으나, 현재는 오픈 소스
최초 버전 출시일1974년(52년 전)(1974)
최신 버전3.1 / 1983년(43년 전)(1983)
업데이트 방식재설치
패키지 관리자없음
플랫폼인텔 8080, 인텔 8085, 자일로그 Z80, 자일로그 Z8000, 인텔 8086, 모토로라 68000
커널모놀리식 커널
영향을 받은 운영 체제RT-11, OS/8
기본 UI명령줄 인터페이스 (CCP.COM)
라이선스원래 사유 소프트웨어였으나, 현재는 BSD 계열
다음MP/M, CP/M-86
공식 웹사이트디지털 리서치 CP/M 역사 웹사이트

CP/M은 원래 Control Program/Monitor의 약자였으며, 이후 Control Program for Microcomputers를 뜻하게 된 대중 시장용 운영체제로, 1974년 디지털 리서치의 게리 킬달이 인텔 8080 기반 마이크로컴퓨터를 위해 개발하였다. CP/M은 디스크 운영체제로서 자기 저장 매체에 파일을 구성하고 디스크에 저장된 프로그램을 불러와 실행하는 목적을 가진다. 초기에는 8비트 프로세서에서 단일 작업만 수행할 수 있었고 메모리도 64 킬로바이트로 제한되었으나, 이후 버전에서는 다중 사용자 변형이 추가되었고 16비트 프로세서로 이식되었다.

CP/M의 핵심 구성 요소는 BIOS(Basic Input/Output System), BDOS(Basic Disk Operating System), CCP(Console Command Processor)이다. BIOS는 장치 및 시스템 하드웨어를 다루는 드라이버로 구성된다. BDOS는 파일 시스템을 구현하고 응용 프로그램에 시스템 서비스를 제공한다. CCP는 명령줄 인터페이스이며 일부 내장 명령어를 제공한다.

CP/M은 결과적으로 S-100 버스 컴퓨터와 결합하여 마이크로컴퓨터를 위한 데 팍토 표준이자 지배적인 운영체제가 되었다. 이 컴퓨터 플랫폼은 1970년대 후반부터 1980년대 중반까지 비즈니스 분야에서 널리 사용되었다. CP/M은 새로운 제조사의 컴퓨터에 응용 프로그램을 포팅하는 데 필요한 프로그래밍 양을 크게 줄임으로써 하드웨어와 소프트웨어 시장 규모를 모두 증대시켰다. 소프트웨어 혁신의 중요한 원동력은 CP/M을 구동하는 (비교적) 저렴한 마이크로컴퓨터의 등장이었는데, 독립 프로그래머와 해커들이 이를 구매하고 사용자 그룹에서 창작물을 공유했기 때문이다. CP/M은 결국 1981년 IBM PC가 출시된 이후 도스에 의해 시장 주도권을 내주게 되었다.

역사

1982년 11월 29일자 인포월드 잡지에 실린 CP/M 광고

초기 역사

게리 킬달은 1974년에 CP/M을 처음 개발하였는데, 이는 맞춤형 플로피 디스크 컨트롤러를 통해 인터페이스된 슈가트 어소시에이츠 8인치 플로피 디스크 드라이브를 갖춘 인텔 인텔렉-8 개발 시스템에서 구동하기 위한 운영체제였다. 이는 킬달이 직접 개발한 PL/M(마이크로컴퓨터를 위한 프로그래밍 언어)로 작성되었다. CP/M의 다양한 측면은 킬달이 개발 환경으로 사용했던 DEC시스템-10 메인프레임 컴퓨터의 TOPS-10 운영체제로부터 영향을 받았다.

CP/M은 8080 및 자일로그 Z80 CPU 기반의 광범위한 컴퓨터를 지원했다. 초기 외부 라이선스 업체 중 하나는 캘리포니아주 샌디에이고의 초기 마이크로컴퓨터 개발사인 Gnat Computers였다. 1977년, 이 회사는 90달러의 비용으로 원하는 모든 마이크로컴퓨터에서 CP/M 1.0을 사용할 수 있는 라이선스를 취득했다. 1년 안에 CP/M에 대한 수요가 급증하자 디지털 리서치는 라이선스 비용을 수만 달러로 인상했다.

킬달의 지휘 아래 CP/M 2.0 개발은 1978년 주로 존 피어스가 수행했다. 미국 해군대학원(NPS)에서 킬달의 친구였던 캐서린 스트루틴스키는 1979년 초 디지털 리서치의 네 번째 직원이 되었다. 그녀는 CP/M 2.0 디버깅을 시작으로, 나중에는 CP/M 2.2 및 CP/M Plus의 핵심 개발자로서 영향력을 발휘했다. 그 외 초기 CP/M 개발자로는 로버트 "밥" 실버스타인과 데이비드 "데이브" K. 브라운이 있다.

CP/M은 원래 "Control Program/Monitor"를 의미했으며, 이는 운영체제의 초기 조상격인 상주 모니터를 암시하는 이름이었다. 그러나 CP/M이 상업용 제품으로 전환되는 과정에서 1977년 11월에 등록된 상표 문서에는 제품명이 "Control Program for Microcomputers"로 명시되었다. CP/M이라는 이름은 당시 지배적이었던 작명 체계를 따랐는데, 이는 킬달의 PL/M 언어, 프라임 컴퓨터의 PL/P, 그리고 킬달이 NPS에서 일할 때 사용했던 IBM의 CP/CMS 운영체제와 유사하며, 모두 IBM의 PL/I를 연상시킨다. CP/M의 이러한 개명은 킬달과 그의 아내, 그리고 사업 파트너인 도로시 맥유엔이 킬달의 개인 프로젝트였던 CP/M과 인텔과 계약한 PL/M 컴파일러를 상업적 기업으로 전환하려는 대규모 노력의 일부였다. 킬달 부부는 디지털 리서치 브랜드와 제품군을 IBM과 마이크로소프트가 나중에 "개인용 컴퓨터"를 성공적으로 정의했던 것처럼 소비자의 마음속에 "마이크로컴퓨터"와 동의어로 만들고자 했다. 인터갈락틱 디지털 리서치는 이후 사명 변경 신고를 통해 디지털 리서치로 재명명되었다.

초기 성공

매뉴얼이 포함된 애플 CP/M 카드

1981년 9월까지 디지털 리서치는 250,000건 이상의 CP/M 라이선스를 판매했으며,
250,000 인포월드는 서브라이선스까지 고려하면 실제 시장 규모는 더 클 것으로 추정했다. 많은 기업이 다양한 시장을 위해 CP/M 기반 컴퓨터를 생산했으며, 이 잡지는 "CP/M이 소형 컴퓨터 운영체제로 자리를 잡아가고 있다"고 언급했다. 히스/제니스 (HDOS)와 같이 독자적인 운영체제를 가진 기업들조차 8080/Z80 기반 시스템을 위한 대안으로 CP/M을 제공했다. 대조적으로 당시 인기를 끌었던 6502 CPU 기반 컴퓨터에는 그에 필적하는 표준이 존재하지 않았다. 그들이 CP/M을 지원한 이유는 거대한 소프트웨어 라이브러리 때문이었다. 제록스 820은 "수천 개의 프로그램이 작성되어 있는 운영체제를 활용하지 않는 것은 현명하지 못하다"는 이유로 해당 운영체제를 구동했다. (제록스는 디지털 리서치의 문서가 끔찍하고 불완전하며 이해하기 어렵고 색인도 부족하다는 평가에 대한 보완책으로 하워드 W. 샘스 CP/M 매뉴얼을 포함시켰다.) 이러한 평판을 인지한 디지털 리서치의 고든 유뱅크스는 1982년 자사의 문서 수준이 개선될 것이라고 약속했다.) 1984년 컬럼비아 대학교는 동일한 소스 코드를 사용하여 12개 이상의 서로 다른 CP/M 시스템을 위한 커밋 바이너리와 두 가지 범용 버전을 구축했다. 이 운영체제는 "소프트웨어 버스"로 묘사되었으며, 여러 프로그램이 다양한 하드웨어와 표준화된 방식으로 상호 작용할 수 있게 했다. CP/M용 프로그램은 일반적으로 서로 다른 기기 간에 이식 가능했으며, 보통 화면과 프린터를 제어하기 위한 이스케이프 시퀀스만 지정하면 되었다. 이러한 이식성 덕분에 CP/M은 대중화되었고, 단일 하드웨어 브랜드에서만 구동되는 운영체제보다 CP/M용 소프트웨어가 훨씬 많이 작성되었다. 이식성에 대한 한 가지 제약은 특정 프로그램이 자일로그 Z80의 확장 명령어 세트를 사용하여 8080이나 8085 프로세서에서 작동하지 않는다는 점이었다. 또 다른 문제는 그래픽 루틴이었는데, 특히 게임과 그래픽 프로그램의 경우 속도를 위해 운영체제와 BIOS를 거치지 않고 하드웨어에 직접 접근하는 경우가 많아 기기 종속적이었다(이는 초기 도스 기기에서도 공통적인 문제였다).

빌 게이츠는 Z-80 소프트카드를 장착한 애플 II가 가장 인기 있는 CP/M 하드웨어 플랫폼이라고 주장했다. 디지털 리서치는 1982년 이 운영체제가 450종 이상의 컴퓨터 시스템에 라이선스되었다고 밝혔다. 앨테어 8800, IMSAI 8080, 오스본 1 및 케이프로 휴대용 기기, MSX 컴퓨터 등 많은 브랜드가 이 운영체제를 사용했다. 역대 가장 많이 팔린 CP/M 구동 시스템은 아마도 암스트래드 PCW일 것이다. 영국에서는 리서치 머신즈 교육용 컴퓨터와 BBC 마이크로에 Z80 보조 프로세서를 장착했을 때도 CP/M을 사용할 수 있었다. 또한 암스트래드 CPC 시리즈, 코모도어 128, TRS-80, ZX 스펙트럼 후기 모델에서도 사용할 수 있었다. CP/M 3은 A. C. 닐슨의 내부 사용을 위해 설계된 1 메가바이트 SSD 메모리 기반의 맞춤형 휴대용 컴퓨터인 NIAT에서도 사용되었다.

다중 사용자

1979년, CP/M의 다중 사용자 호환 파생 버전이 출시되었다. MP/M은 여러 사용자가 단일 컴퓨터에 접속하여 각자 화면과 키보드를 가진 여러 터미널을 사용할 수 있게 했다. 이후 버전은 16비트 프로세서에서 구동되었다.

CP/M Plus

CP/M Plus (CP/M 3) 시스템 가이드

마지막 8비트 CP/M 버전은 1983년에 출시된 CP/M Plus(CP/M 3)였다. BDOS는 데이비드 K. 브라운이 설계했다. 이는 CP/M 2.2 응용 프로그램과 호환되는 단일 사용자 단일 작업 운영체제에서 MP/M의 뱅크 전환 메모리 관리 기능을 통합했다. 따라서 CP/M 3는 8080이나 Z80 프로세서에서 64 KB 이상의 메모리를 사용할 수 있었다. 또한 파일의 날짜 스탬프 기능을 지원하도록 구성할 수 있었다. 운영체제 배포 소프트웨어에는 재배치 가능한 어셈블러와 링커도 포함되었다. CP/M 3는 암스트래드 PCW, 암스트래드 CPC, ZX 스펙트럼 +3, 코모도어 128, MSX, 라디오 쉑 TRS-80 모델 4와 같은 마지막 세대 8비트 홈 컴퓨터에서 사용할 수 있었다.

16비트 버전

DEC Professional 3xx 시리즈의 Z80-A 보조 프로세서용 DEC PRO-CP/M-80 플로피 디스크 배포판

일부 16비트 CPU를 위한 CP/M 버전도 존재했다.

16비트 제품군의 첫 번째 버전은 1981년 11월 인텔 8086용으로 출시된 CP/M-86이었다. 캐서린 스트루틴스키는 진화하는 CP/M-86 운영체제 라인의 프로젝트 관리자였다. 이 시점에서 원래의 8비트 CP/M은 혼동을 피하기 위해 레트로님인 CP/M-80으로 불리게 되었다.

CP/M-86은 새로운 IBM PC의 표준 운영체제가 될 것으로 기대되었으나, 디지털 리서치와 IBM은 개발 및 라이선스 조건을 협상하는 데 실패했다. IBM은 대신 마이크로소프트를 선택했고, 마이크로소프트는 86-도스를 기반으로 PC 도스를 제공했다. CP/M-86은 디지털 리서치가 법적 대응을 예고한 후 IBM PC의 선택 사항이 되었으나, 마이크로소프트의 시스템을 넘어서지는 못했다. 대부분의 고객은 IBM이 PC 도스보다 CP/M-86에 부과한 훨씬 높은 가격(각각 US$240와 US$40) 때문에 등을 돌렸다.

디지털 이큅먼트 코퍼레이션(DEC)이 IBM과 경쟁하기 위해 레인보우 100을 출시했을 때, 이는 Z80 칩을 사용하는 CP/M-80, 8088 마이크로프로세서를 사용하는 CP/M-86 또는 MS-도스, 혹은 둘 다 사용하는 CP/M-86/80과 함께 제공되었다. Z80과 8088 CPU는 동시에 구동되었다. 레인보우의 장점은 8비트 CP/M 소프트웨어를 계속 실행할 수 있어 사용자가 MS-도스라는 16비트 세계로 진입할 때 기존의 상당한 투자를 보존할 수 있었다는 점이다. 컴퓨프로 시스템 816(세르비아어판)을 위한 유사한 이중 프로세서 적용 모델은 CP/M 8-16이라 명명되었다. 8085/8088 기반 제니스 Z-100을 위한 CP/M-86 적용 버전 또한 두 CPU용 프로그램을 모두 실행할 수 있었다.

CP/M-86 이후 곧이어 모토로라 68000용 16비트 CP/M 버전인 CP/M-68K가 출시되었다. 1982년 CP/M-68K의 원래 버전은 파스칼/MT+68k로 작성되었으나 나중에 C로 포팅되었다. 모토로라 EXORmacs 시스템에서 구동되던 CP/M-68K는 원래 아타리 ST 컴퓨터에 사용될 예정이었으나, 아타리는 GEMDOS라는 새로운 디스크 운영체제를 선택했다. CP/M-68K는 SORD M68 및 M68MX 컴퓨터에서도 사용되었다.

1982년에는 올리베티 M20을 위해 C로 작성된, 16비트 자일로그 Z8000용 CP/M-68K 포트인 CP/M-8000도 있었다.

이러한 16비트 CP/M 버전들은 응용 프로그램이 새로운 CPU를 위해 재컴파일되어야 했다. 어셈블리어로 작성된 일부 프로그램은 새로운 프로세서로 자동 번역될 수 있었다. 이를 위한 도구 중 하나가 디지털 리서치의 XLT86으로, 인텔 8080 프로세서용 .ASM 소스 코드를 인텔 8086용 .A86 소스 코드로 번역했다. 이 번역기는 코드 크기에 맞게 출력을 최적화하고 호출 규약을 처리하여 CP/M-80 및 MP/M-80 프로그램이 CP/M-86 및 MP/M-86 플랫폼으로 자동으로 포팅될 수 있게 했다. XLT86 자체는 PL/I-80으로 작성되었으며 CP/M-80 플랫폼뿐만 아니라 VAX/VMS용으로도 제공되었다.

MS-DOS에 의한 대체

1980년대 초까지 약 2,000개의 CP/M 응용 프로그램이 존재했으며, 이는 HDOS와 같은 사유 운영체제보다 훨씬 많은 수였다. 많은 이들이 CP/M이 16비트 컴퓨터의 표준 운영체제가 될 것으로 기대했다. 1980년 IBM은 빌 게이츠의 제안에 따라 자사의 새로운 제품인 IBM 개인용 컴퓨터를 위한 CP/M 차기 버전을 라이선스하기 위해 디지털 리서치에 접근했다. 단독 기밀유지 협약 체결에 실패하면서 협상은 결렬되었고, IBM은 대신 마이크로소프트와 계약하여 운영체제를 제공받았다.

초기 MS-도스의 기본 개념과 메커니즘 중 다수는 CP/M과 유사하다. 파일 처리 데이터 구조와 같은 내부 구조는 동일하며, 둘 다 디스크 드라이브를 문자(A:, B: 등)로 참조한다. MS-도스의 주된 혁신은 FAT 파일 시스템이었다. 이러한 유사성으로 인해 워드스타나 DBASE와 같은 인기 있는 CP/M 소프트웨어를 포팅하기가 더 쉬웠다. 그러나 동일 디스크 내의 별도 사용자 영역이라는 CP/M의 개념은 MS-도스로 포팅되지 않았다. MS-도스는 더 많은 메모리에 접근할 수 있고(64 KB 미만의 메모리를 탑재한 IBM PC는 거의 없었던 반면, CP/M은 필요하면 16 KB에서도 실행 가능), 명령줄 인터페이스 셸 내에 더 많은 명령어가 내장되어 있어 플로피 기반 컴퓨터에서 MS-도스가 다소 빠르고 사용하기 편했다.

IBM PC의 초기 주변기기 중 하나인 베이비 블루 카드는 PC가 아직 이용할 수 없는 워드스타와 같은 8비트 CP/M 소프트웨어를 구동할 수 있게 해주는 소프트카드 방식의 확장 카드였으며, 1982년 바이트 잡지는 MS-도스와 CP/M을 다윗과 골리앗에 비유하면서도 MS-도스가 "훨씬 더 사용자 친화적이고 빠르며, 더 많은 장점과 적은 단점을 가지고 있다"고 기술했다. 인포월드는 1984년 홈 시장에 CP/M을 도입하려는 노력은 대체로 실패했으며 대부분의 CP/M 소프트웨어는 가정용 사용자에게 너무 비쌌다고 보도했다. 1986년 이 잡지는 다른 공급업체들이 CP/M을 위한 신규 장비 및 소프트웨어 생산을 중단한 지 오래된 시점에, 케이프로도 MS-도스 호환 시스템 판매에 집중하기 위해 8비트 CP/M 기반 모델 생산을 중단했다고 밝혔다. 마이크로컴퓨팅 시장이 IBM 호환 플랫폼으로 이동함에 따라 CP/M은 빠르게 시장 점유율을 잃었으며 과거의 인기를 회복하지 못했다. 마이크로컴퓨터 분야의 주요 잡지 중 하나인 바이트는 IBM PC 도입 후 몇 년 내에 사실상 CP/M 관련 제품 다루기를 중단했다. 예를 들어 1983년까지만 해도 S-100 보드 광고나 CP/M 소프트웨어 기사가 있었지만, 1987년에는 잡지에서 찾아볼 수 없게 되었다.

이후 CP/M-86 버전들은 성능과 사용성 면에서 상당한 진전을 이루었고 MS-도스와 호환되게 만들어졌다. 이러한 호환성을 반영하여 CP/M-86은 도스 플러스로 이름이 변경되었고, 이는 다시 DR-DOS가 되었다.

ZCPR

ZCPR(Z80 Command Processor Replacement)은 1982년 2월 2일 디지털 리서치의 표준 콘솔 명령 프로세서(CCP)를 대체하기 위한 용도로 도입되었으며, 당초 "CCP 그룹"이라고 불리는 컴퓨터 취미가 그룹에 의해 작성되었다. 멤버는 프랭크 완초, 키스 피터슨(당시 심텔의 아키비스트), 론 파울러, 찰리 스트롬, 밥 마티아스, 리처드 콘이었다. 사실상 이 그룹의 원동력은 리처드 콘이었으며, 이들은 이메일을 통해 연락을 주고받았다.

ZCPR1은 뉴저지주 아마추어 컴퓨터 클럽의 일부인 SIG/M(Special Interest Group/Microcomputers)이 배포한 디스크를 통해 출시되었다.

ZCPR2는 1983년 2월 14일에 출시되었다. 이는 SIG/M의 10장짜리 디스크 세트로 배포되었다. ZCPR2는 2.3으로 업그레이드되었으며 8080 코드 버전으로도 출시되어 8080 및 8085 시스템에서도 ZCPR2를 사용할 수 있게 되었다.

콘과 프랭크 고드는 ZCPR의 다음 버전을 상업적 제품으로 출판하기 위해 Echelon Inc.를 설립했지만, 여전히 자유 소프트웨어로 배포했다. ZCPR3은 1984년 7월 14일, SIG/M의 9장짜리 디스크 세트로 출시되었다. ZCPR3의 코드는 8080용으로 (기능을 축소하여) 컴파일할 수 있었으며 필수적인 자일로그 Z80 마이크로프로세서가 없는 시스템에서도 구동될 수 있었다. 버전 3의 ZCPR 기능에는 셸, 별칭, I/O 리다이렉션, 흐름 제어, 명명된 디렉토리, 검색 경로, 맞춤형 메뉴, 암호, 온라인 도움말이 포함되었다. 1987년 1월, 리처드 콘은 ZCPR 개발을 중단했고, Echelon은 이미 ZCPR 3.1을 개인적으로 개선해 사용하던 제이 세이지에게 작업을 이어가 달라고 요청했다. 그리하여 ZCPR 3.3이 개발되어 출시되었다. ZCPR 3.3은 더 이상 8080 시리즈 마이크로프로세서를 지원하지 않았으며, ZCPR 라인업 중 가장 많은 기능을 추가했다. 또한 상당히 확장된 기능의 유틸리티 전체 세트를 포함했다. 당시 CP/M 사용자들의 열렬한 지지를 받았음에도, ZCPR만으로는 CP/M의 몰락을 늦추기에 역부족이었다.

하드웨어 모델

CP/M 2.2(1982)에서 구동되는 Sanco 8001 컴퓨터
코모도어 64용 CP/M 카트리지

최소 사양의 8비트 CP/M 시스템은 다음과 같은 구성 요소를 포함한다:

디지털 리서치가 판매한 CP/M이 지원하는 유일한 하드웨어 시스템은 인텔 8080 개발 시스템이었다. CP/M 호환 시스템 제조업체들은 설치된 메모리, 디스크 드라이브, 콘솔 장치의 조합에 맞춰 운영체제의 일부를 사용자화했다. CP/M은 Z80이 8080 코드와 호환되었기 때문에 자일로그 Z80 프로세서 기반 시스템에서도 구동되었다. 디지털 리서치가 배포한 CP/M의 핵심(BDOS, CCP, 기본 트랜지언트 명령어)은 Z80 전용 명령어를 사용하지 않았으나, 많은 Z80 기반 시스템은 시스템 종속적인 BIOS에서 Z80 코드를 사용했고 많은 응용 프로그램이 Z80 기반 CP/M 기기 전용으로 만들어졌다.

디지털 리서치는 이후 Zilog 및 아메리칸 마이크로시스템즈와 제휴하여, 디스크 드라이브 없이도 구동될 수 있는 저비용 시스템을 겨냥한 ROM 기반 운영체제인 퍼스널 CP/M을 생산했다. 옵션 디스크 드라이브를 갖춘 카세트 기반 시스템인 샤프 MZ-800에서 처음 선보였으며, 퍼스널 CP/M은 8080과의 이식성을 유지하는 대신 "확장된 Z-80 명령어 세트를 활용하기 위해 재작성되었다"고 설명되었다. 아메리칸 마이크로시스템즈는 운영체제와 BIOS를 위한 8 KB의 내장 ROM과 64킬로비트 동적 RAM 장치와 인터페이스하기 위한 포괄적인 로직을 특징으로 하는 S83이라는 Z80 호환 마이크로프로세서를 발표했다. S83의 단가는 1,000개 주문 시 32달러로 책정되었다.

대부분의 기기에서 부트스트랩은 ROM 내의 최소한의 부트로더와 약간의 뱅크 전환 또는 버스에 코드를 주입하는 수단의 조합이었다(8080은 시작 시 주소 0에서 부트 코드를 확인해야 하는데 CP/M은 그곳에 RAM이 필요하기 때문). 다른 기기들은 시스템을 시작할 때마다 전면 패널 컨트롤을 사용하여 메모리에 이 부트스트랩을 직접 입력해야 했다.

CP/M은 7비트 ASCII 세트를 사용했다. 8비트 바이트로 가능한 나머지 128개 문자는 표준화되지 않았다. 예를 들어, 한 케이프로 기기는 이를 그리스 문자로 사용했고, 오스본 기기는 8번째 비트를 밑줄 친 문자를 나타내는 데 사용했다. 워드스타는 8번째 비트를 단어 끝 마커로 사용했다. 국제 CP/M 시스템은 지역화된 문자 세트에 대해 ISO 646 표준을 가장 흔히 사용했으며, 7비트 경계를 넘어 문자를 추가하기보다 특정 ASCII 문자를 지역화된 문자로 대체했다.

구성 요소

실행 중인 메모리에 로드된 CP/M 운영체제는 세 가지 구성 요소를 가진다:: 2 : 1 : 3, 4–5 : 1-4–1-6 

BIOS와 BDOS는 메모리에 상주하며, CCP는 응용 프로그램에 의해 덮어쓰이지 않는 한 메모리에 상주한다. 덮어쓰일 경우 응용 프로그램이 실행을 마친 후 자동으로 다시 로드된다. 표준 유틸리티를 위한 수많은 트랜지언트 명령어들도 제공된다. 트랜지언트 명령어는 디스크상에서 .COM 확장자를 가진 파일에 존재한다.

BIOS는 CPU와 주 메모리를 제외한 하드웨어 구성 요소를 직접 제어한다. 여기에는 문자 입출력 및 디스크 섹터 읽기/쓰기와 같은 기능이 포함된다. BDOS는 BIOS 위에 CP/M 파일 시스템과 (리다이렉션과 같은) 일부 입출력 추상화를 구현한다. CCP는 사용자 명령어를 받아 직접 실행하거나(디렉토리를 보여주는 DIR이나 파일을 삭제하는 ERA와 같은 내부 명령어), 주어진 이름의 실행 파일을 찾아 로드하고 시작한다(파일을 복사하는 PIP.COM이나 각종 파일 및 시스템 정보를 보여주는 STAT.COM과 같은 트랜지언트 명령어). CP/M용 타사 응용 프로그램도 본질적으로는 트랜지언트 명령어이다.

BDOS, CCP 및 표준 트랜지언트 명령어는 특정 CP/M 버전의 모든 설치 환경에서 동일하지만, BIOS 부분은 항상 특정 하드웨어에 맞게 조정된다.

예를 들어 컴퓨터에 메모리를 추가하면, 추가된 메모리 공간을 트랜지언트 프로그램이 사용할 수 있도록 CP/M 시스템을 재설치해야 한다. 시스템 배포판과 함께 제공되는 유틸리티 프로그램(MOVCPM)을 사용하면 목적 코드를 다른 메모리 영역으로 재배치할 수 있다. 이 유틸리티 프로그램은 절대 점프 및 서브루틴 호출 명령어의 주소를 프로세서 메모리 내 운영체제의 새로운 위치에 필요한 새 주소로 조정한다. 이 새로 패치된 버전은 새 디스크에 저장될 수 있으며, 이를 통해 응용 프로그램은 시스템 구성 요소를 이동함으로써 확보된 추가 메모리에 접근할 수 있다. 설치가 완료되면 운영체제(BIOS, BDOS 및 CCP)는 시스템을 부팅하는 데 사용할 수 있는 디스크 앞부분의 예약 영역에 저장된다. 시작 시 부트로더(보통 ROM 펌웨어 칩에 포함됨)가 A: 드라이브의 디스크에서 운영체제를 로드한다.

현대적인 기준으로 볼 때 CP/M은 프로그램 크기에 대한 극단적인 제약 때문에 원시적이다. 버전 1.0에는 디스크 변경을 감지하는 기능이 없다. 사용자가 디스크 디렉토리를 수동으로 다시 읽지 않고 디스크를 교체하면, 시스템은 이전 디스크의 디렉토리 정보를 사용하여 새 디스크에 기록하게 되어 새 디스크에 저장된 데이터를 망치게 된다. 버전 1.1이나 1.2부터는 디스크를 교체한 후 디렉토리를 읽기 전에 기록을 시도하면 치명적인 오류가 발생한다. 이는 디스크 덮어쓰기는 방지하지만 재부팅이 필요하며 디스크에 저장할 데이터가 손실된다.

CP/M 복잡성의 대부분은 BDOS와 다소 정도가 낮은 CCP 및 트랜지언트 명령어에 집중되어 있다. 이는 BIOS의 단순한 루틴 일부만 특정 하드웨어 플랫폼으로 포팅하면 전체 운영체제가 작동한다는 것을 의미했다. 이는 새로운 기기를 지원하는 데 필요한 개발 시간을 크게 줄였고 CP/M이 널리 사용된 주요 이유 중 하나였다. 오늘날 이러한 추상화 방식은 대부분의 운영체제에서 공통적(하드웨어 추상화 계층)이지만, CP/M이 탄생할 당시에는 운영체제가 단일 기기 플랫폼에서만 실행되도록 의도되었고 다층 설계는 불필요한 것으로 간주되었다.

콘솔 명령 프로세서

코모도어 128 홈 컴퓨터에서 DIR 명령어를 사용하여 CP/M 3.0 디렉토리 목록을 보여주는 스크린샷

콘솔 명령 프로세서(CCP)는 키보드로부터 입력을 받아 결과를 단말기로 전달한다. CP/M 자체는 프린팅 단말기나 비디오 단말기에서 작동한다. 모든 CP/M 명령어는 명령줄에 입력되어야 한다. 콘솔에는 현재 기본 디스크 드라이브를 나타내기 위해 A> 프롬프트가 가장 자주 표시된다. 비디오 단말기와 함께 사용될 때는 보통 단말기가 제공하는 깜박이는 커서가 그 뒤를 따른다. CCP는 사용자로부터의 입력을 대기한다. 콜론이 뒤에 오는 드라이브 문자로 구성된 CCP 내부 명령어를 사용하여 기본 드라이브를 선택할 수 있다. 예를 들어, 명령 프롬프트에서 B:를 입력하고 엔터를 누르면 기본 드라이브가 B로 변경되고, 명령 프롬프트는 이를 나타내기 위해 B>로 바뀐다.

CP/M의 명령줄 인터페이스는 PDP-11용 RT-11이나 PDP-8용 OS/8과 같이 디지털 이큅먼트의 운영체제에서 사용된 Concise Command Language를 본떠 만들어졌다. 명령어는 키워드 뒤에 공백이나 특수 문자로 구분된 매개변수 목록이 오는 형태를 취한다. 유닉스 셸 내장 명령어와 유사하게 내부 명령어라면 CCP 자체가 실행한다. 그렇지 않으면 현재 로그온된 디스크 드라이브와 (이후 버전에서는) 사용자 영역에서 실행 파일을 찾아 로드하고 명령줄의 추가 매개변수를 전달한다. 이를 "트랜지언트" 프로그램이라고 한다. 완료 시, BDOS는 응용 프로그램에 의해 덮어쓰인 CCP를 다시 로드하는데, 이는 트랜지언트 프로그램이 더 큰 메모리 공간을 가질 수 있게 하기 위함이다.

명령어 자체는 때때로 모호할 수 있다. 예를 들어 파일을 복제하는 명령어는 과거 DEC 유틸리티의 이름을 딴 PIP(Peripheral-Interchange-Program)이다. 프로그램에 주어지는 매개변수 형식은 표준화되지 않았기에 옵션과 파일 이름을 구분하는 단일 옵션 문자가 존재하지 않는다. 서로 다른 프로그램들은 서로 다른 문자를 사용할 수 있으며 실제로도 사용한다.

CP/M 콘솔 명령 프로세서에는 DIR, ERA, REN, SAVE, TYPE, USER가 내장 명령어로 포함되어 있다. CP/M의 트랜지언트 명령어에는 ASM, DDT, DUMP, ED, LOAD, MOVCPM(폴란드어판), PIP, STAT, SUBMIT, SYSGEN이 있다.

CP/M Plus(CP/M 버전 3)에는 DIR(SYS 속성으로 표시된 파일을 제외하고 디렉토리 파일 목록 표시), DIRSYS / DIRS(디렉토리에서 SYS 속성으로 표시된 파일 목록 표시), ERASE / ERA(파일 삭제), RENAME / REN(파일 이름 변경), TYPE / TYP(ASCII 텍스트 파일 내용 표시), USER / USE(사용자 번호 변경)가 내장 명령어로 포함되어 있다: CP/M 3은 사용자가 내장 명령어를 줄여 쓸 수 있게 한다. CP/M 3의 트랜지언트 명령어에는 COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, XREF가 있다.

기본 디스크 운영체제

기본 디스크 운영체제(), 또는 BDOS()는 파일 열기, 콘솔 출력, 인쇄와 같은 작업에 대한 접근을 제공한다. 응용 프로그램은 연산을 위한 함수 코드와 매개변수 또는 메모리 버퍼 주소를 프로세서 레지스터에 로드하고 메모리의 고정된 주소를 호출한다. 시스템의 메모리 양과 관계없이 주소가 동일하기 때문에 응용 프로그램은 어떤 유형이나 구성의 하드웨어에서도 동일하게 실행된다.

기본 입출력 시스템

1978년 12월 11일자 인포월드 잡지에 실린 CP/M 광고

기본 입출력 시스템 또는 BIOS()는 운영체제가 필요로 하는 최하위 수준의 기능을 제공한다.

여기에는 시스템 콘솔에 단일 문자를 읽거나 쓰거나 디스크에서 데이터 섹터를 읽거나 쓰는 작업이 포함된다. BDOS는 디스켓으로부터의 데이터 버퍼링 일부를 처리하지만, CP/M 3.0 이전에는 단일 밀도 8인치 플로피 디스크에서 사용하는 128바이트의 고정 디스크 섹터 크기를 가정한다. 대부분의 5.25인치 디스크 형식은 더 큰 섹터를 사용하므로, 블로킹과 디블로킹 및 디스크 버퍼 영역 관리는 BIOS 내의 모델 종속적 코드에 의해 처리된다.

하드웨어 선택이 어떠한 인기 표준과의 호환성에도 얽매이지 않기 때문에 사용자화가 필요하다. 예를 들어 일부 제조업체는 통합 비디오 디스플레이 시스템을 설계한 반면, 다른 제조업체들은 별도의 컴퓨터 단말기에 의존했다. 프린터와 모뎀을 위한 직렬 포트는 서로 다른 유형의 UART 칩을 사용할 수 있으며 포트 주소는 고정되어 있지 않다. 일부 기기는 8080 I/O 주소 공간 대신 메모리 맵 I/O를 사용한다. 이러한 하드웨어의 모든 변형은 문자 I/O나 디스크 블록 접근과 같이 CP/M을 구동하는 데 필요한 서비스의 표준 진입점을 사용하는 BIOS를 통해 시스템의 다른 모듈로부터 숨겨진다. 모뎀에 대한 직렬 통신 지원은 BIOS에서 매우 기초적이거나 아예 없을 수 있으므로, 모뎀을 사용하는 CP/M 프로그램이 특정 기기의 직렬 포트에 접근하는 데 필요한 모든 코드를 담은 사용자 설치 오버레이를 가지는 것이 일반적인 관례이다.

응용 프로그램

8비트 CP/M용으로 출시된 워드스타 워드 프로세서 프로그램의 마지막 버전(버전 4)용 5+1⁄4인치 디스켓과 패키지

초기 널리 사용된 워드 프로세서 중 하나인 워드스타와, 초기 마이크로컴퓨터용 데이터베이스 프로그램으로 인기를 끌었던 DBASE는 원래 CP/M용으로 작성되었다. 초기 두 아웃라이너인 KAMAS(Knowledge and Mind Amplification System)와 그 축소판인 Out-Think(프로그래밍 기능 없이 8080/V20 호환성을 위해 개조됨)도 CP/M용으로 작성되었으며 나중에 MS-도스용으로 재작성되었다. 볼랜드 델파이의 조상인 터보 파스칼과 마이크로소프트 엑셀의 조상인 멀티플랜도 MS-도스 버전이 나오기 전에 CP/M에서 처음 데뷔했다. 최초의 스프레드시트 프로그램인 비지칼크도 CP/M에서 사용할 수 있게 되었다. 또 다른 회사인 Sorcim은 CP/M용 스프레드시트인 슈퍼칼크를 제작했는데, 이는 CP/M 시장의 리더이자 사실상 표준이 되었다. 슈퍼칼크는 이후 MS-도스 환경의 스프레드시트 시장에서 경쟁자로 자리 잡았다. 오토데스크의 CAD 응용 프로그램인 오토캐드도 CP/M에서 처음 출시되었다. 당시 인기 있던 프로그래밍 언어용 컴파일러와 인터프리터(예: 베이직, 볼랜드의 터보 파스칼, FORTRAN, 심지어 PL/I)가 다수 제공되었으며, 그중에는 마이크로소프트의 초기 제품들도 포함되어 있었다.

CP/M 소프트웨어는 종종 다양한 컴퓨터에 적응할 수 있는 인스톨러와 함께 제공된다. 예를 들어 케이프로 II 소유자는 제록스 820 형식의 소프트웨어를 얻은 다음, 이를 케이프로 형식의 디스크로 복사하여 실행할 수 있다. 베이직 프로그램의 소스 코드는 쉽게 접근할 수 있으며 대부분의 복사 방지 형태는 운영체제에서 효과가 없다. 현대 운영체제의 복사 방지 프로그램들은 종종 다른 소프트웨어가 읽을 수 없는 비표준 디스크 형식을 사용하지만, CP/M 사용자들은 자신의 파일에 대한 교차 소프트웨어 호환성을 기대한다. 읽을 수 없는 디스크는 정의상 CP/M 형식이 아니다.

표준화된 그래픽 지원의 부족으로 비디오 게임은 제한적이었지만, Telengard, Gorillas, Hamurabi, Lunar Lander와 같은 다양한 문자 및 텍스트 기반 게임들이 포팅되었으며, 조크 시리즈와 콜로설 케이브 어드벤처를 포함한 초기 인터랙티브 픽션도 있었다. 텍스트 어드벤처 전문 업체인 인포컴은 지속적으로 CP/M 형식으로 게임을 출시한 몇 안 되는 발행사 중 하나였다. Lifeboat Associates는 사용자가 작성한 "무료" 소프트웨어를 수집하고 배포하기 시작했다. 그중 첫 번째는 모뎀과 전화선을 통해 신뢰할 수 있는 파일 전송을 가능하게 했던 XMODEM이었다. CP/M 고유의 또 다른 프로그램은 아웃라인 프로세서 KAMAS였다.

트랜지언트 프로그램 영역

8080, 8085 및 Z80용 오리지널 CP/M 버전에서 16진수 0100번지부터 0006H에 저장된 주소(BDOS의 최저 주소) 바로 이전 번지까지의 읽기/쓰기 메모리는 CP/M 응용 프로그램이 사용할 수 있는 트랜지언트 프로그램 영역(TPA)이다.: 2, 233  모든 Z80 및 8080 프로세서가 64킬로바이트의 메모리를 어드레싱할 수 있었지만, 응용 프로그램에 사용할 수 있는 양은 특정 컴퓨터의 설계에 따라 다를 수 있었다. 일부 컴퓨터는 BIOS ROM이나 비디오 디스플레이 메모리와 같은 용도로 주소 공간의 상당 부분을 사용했다. 결과적으로 일부 시스템은 다른 시스템보다 더 많은 TPA 메모리를 사용할 수 있었다. 뱅크 전환은 ROM이나 비디오 메모리 공간을 필요에 따라 전환하면서 시스템이 큰 TPA를 가질 수 있게 해주는 일반적인 기술이었다. CP/M 3.0은 BDOS의 일부도 뱅크 전환 메모리에 위치할 수 있도록 허용했다.

응용 프로그램 디버깅

CP/M은 (살충제 이름에서 딴, 즉 버그 살충제라는 의미의) DDT라는 별칭을 가진 동적 디버깅 도구를 함께 제공했는데, 이는 메모리와 프로그램 모듈을 검사 및 조작하고 프로그램을 한 단계씩 실행할 수 있게 했다.

상주 프로그램

CP/M은 원래 도스처럼 종료 후 상주 프로그램(Terminate and Stay Resident, TSR)에 해당하는 기능을 지원하지 않았다. 프로그래머들은 특정 운영체제 호출을 가로채어 기능을 확장하거나 변경할 수 있는 소프트웨어를 작성할 수 있었다. 이 기능을 사용하여 프로그래머들은 임의의 문자열을 키에 할당하는 키보드 유틸리티인 SmartKey와 같은 보조 데스크 액세서리 프로그램을 개발하고 판매했다. 그러나 CP/M 3는 동적으로 로드 가능한 상주 시스템 확장(RSX) 지원을 추가했다. 소위 널 커맨드 파일을 사용하여 CCP가 트랜지언트 프로그램 없이 RSX를 로드하도록 할 수 있었다. RSM(상주 시스템 모듈)과 같은 유사한 솔루션들도 제3자에 의해 CP/M 2.2 시스템에 개조되어 적용되었다.

소프트웨어 설치

CP/M은 디스크 I/O나 콘솔 I/O 인터페이스를 표준화하기 위해 어느 정도의 하드웨어 추상화를 제공하지만, 응용 프로그램은 일반적으로 프린터나 단말기와 같은 장비의 모든 기능을 사용하기 위해 설치가 필요하다. 종종 이들은 장치마다 변경되어야 하는 이스케이프 시퀀스에 의해 제어된다. 예를 들어, 프린터에서 굵게 인쇄를 선택하기 위한 이스케이프 시퀀스는 제조업체마다, 때로는 동일 제조업체의 모델마다 다르다. 이 절차는 운영체제에 의해 정의되지 않으며, 사용자는 일반적으로 장치 범위에서 선택할 수 있거나 기능에 접근하는 데 필요한 이스케이프 시퀀스를 기능별로 편집할 수 있는 설치 프로그램을 실행한다. 운영체제에서 이러한 장치를 위한 중앙 집중식 서비스를 제공하지 않으므로, 이 절차는 각 응용 프로그램마다 반복되어야 한다.

각 프린터 모델에 대한 초기화 코드는 응용 프로그램에 작성되어야 한다. 워드스타와 같은 프로그램을 둘 이상의 프린터(예: 빠른 도트 매트릭스 프린터나 느리지만 발표용 품질의 데이지 휠 프린터)와 함께 사용하려면, 워드스타 버전을 별도로 준비해야 하며, 사용자는 선택한 프린터에 해당하는 워드스타 버전을 로드해야 한다(프린터를 변경하려면 종료하고 다시 로드해야 한다).

특정 컴퓨터나 단말기에 대한 지원을 명시하는 설치 소프트웨어가 그 기능들을 모두 지원한다는 의미는 아니다. 1983년 히스/제니스 컴퓨터를 위한 8개의 스프레드시트 평가에서 Sextant의 리뷰어는 대부분이 단말기의 키보드를 완전히 활용하기 위해 사용자화가 필요했다고 지적했다. 그는 "대부분의 제조업체가 왜 H19에 36개의 키와 거대한 CTRL 키만 있다고 생각하는지 도저히 이해할 수 없다"고 의문을 표했다.

비디오 게임

이 목록에는 8인치 디스크 기반의 53개의 상업용 CP/M 게임이 포함되어 있다.

게임 연도 발행사 출처
Adventure #3 1981 Adventure International
Adventureland 1978 Adventure International
Backgammon 2.0 1981 DynaComp, Inc.
Basic Games-3 1979 Sensational Soft. Creative Computing Soft. label
Basic Games-4 1979 Sensational Soft. Creative Computing Soft. label
Battlefield!!! 1982 DynaComp, Inc.
Blackjack Coach 1983 DynaComp, Inc.
Bridge 2.0 1979 DynaComp, Inc.
Bridge Master 1982 DynaComp, Inc.
Cranston Manor Adventure 1981 DynaComp, Inc.
Deadline 1982 Infocom
Enchanter 1983 Infocom
Flight Simulator 1981 DynaComp, Inc.
Games Pack I DynaComp, Inc.
Games Pack II DynaComp, Inc.
Gigatrek 1982 Artworx Soft. Co., Inc.
Ghost Town 1981 Adventure International
Golden Voyage 1981 Adventure International
Hearts 1.5 1980 DynaComp, Inc.
Infidel 1983 Infocom
Management Simulator 1981 DynaComp, Inc.
Mensa Master 1982 DynaComp, Inc.
Microchess 1977 Micro-Ware, Ltd.
Munchkin 1981 The Software Toolworks
Mystery Fun House 1980 Adventure International
Mychess 1979 The Software Toolworks
Pirate Adventure 1981 Adventure International
Planetfall 1983 Infocom
Poker Party 1980 DynaComp, Inc.
Pyramid of Doom 1979 Adventure International
Rogue Epyx, Inc.
Sargon 1978 Hayden Book Co.
Sargon II 1978 Spracklen & Spracklen
Savage Island 1981 Adventure International
Seastalker 1984 Infocom
Sensational Software: Games-1 1978 Creative Computing Soft.
Sensational Software: Games-2 1978 Creative Computing Soft.
Sorcerer 1984 Infocom
Sorcerer of Claymorgue Castle 1979 Adventure International
Star Trek 3.2 1981 DynaComp, Inc.
Starcross 1982 Infocom
Start Trek 3.2 1981 DynaComp, Inc.
Strange Odyssey 1979 Adventure International
Suspended 1983 Infocom
Teacher's Pet I 1981 DynaComp, Inc.
The Adventure 1982 The Software Toolworks
The Count 1979 Adventure International
The Witness 1983 Infocom
Valdez 1980 DynaComp, Inc.
Voodoo Castle 1979 Adventure International
Zork I - The Great Underground Empire 1980 Infocom
Zork II - The Wizard of Frobozz 1981 Infocom
Zork III - The Dungeon Master 1982 Infocom

디스크 형식

IBM 시스템/34 및 IBM 3740의 128바이트/섹터, 단일 밀도, 단일 면 형식은 CP/M의 표준 8인치 플로피 디스크 형식이다. 표준 5.25인치 CP/M 디스크 형식은 존재하지 않으며, 케이프로, 모로우 디자인, 오스본 등은 각각 자신들만의 형식을 사용했다. 특정 형식이 다른 것보다 더 인기가 있었다. 대부분의 소프트웨어는 제록스 820 형식으로 제공되었으며, 케이프로 II와 같은 다른 컴퓨터들은 이와 호환되었다. 반면, 한 히스 사용자는 1983년에 히스 5.25인치 디스크로 소프트웨어를 제공하는 업체가 거의 없으며 "제공하는 곳들 중 상당수도 간헐적으로만 했다"고 불평했다.

인포월드는 1981년 9월 "소프트웨어 제작자들이 가장 넓은 시장에 도달하기 위해 고려해야 할 정도로 대중적인 형식이 약 20여 개 있었다"고 추정했다. 예를 들어 JRT 파스칼은 노스 스타, 오스본, 애플, 히스/제니스 하드 섹터 및 소프트 섹터, 슈퍼브레인, 그리고 8인치 버전까지 5.25인치 디스크용 버전을 제공했다. Ellis Computing 또한 히스 두 형식 모두를 지원하는 소프트웨어를 제공했으며, 두 가지 다른 TRS-80 CP/M 개조 버전을 포함하여 16개의 다른 5.25인치 형식을 제공했다. 1984년 기준 인포컴은 5개의 서로 다른 CP/M 시스템과 8인치 디스크상의 범용 CP/M용으로 게임을 출판했다. Lifetree와 다른 소프트웨어 유통사들도 CP/M 응용 프로그램을 다양한 시스템용으로 변환했다.

특정 시스템의 특성과 디자이너의 선택에 따라 다양한 형식이 사용되었다. CP/M은 디스크의 예약 영역과 디렉토리 영역의 크기, 그리고 (CP/M 프로그램이 보는) 논리 디스크 섹터와 디스크상에 할당된 실제 섹터 간의 매핑을 제어하는 옵션을 지원한다. 모든 시스템에 대해 이러한 매개변수를 사용자화하는 많은 방법이 있지만, 일단 설정되면 다른 시스템에서 포맷된 디스크로부터 시스템이 매개변수를 로드할 표준화된 방법은 존재하지 않는다.

8인치 드라이브를 갖춘 거의 모든 CP/M 시스템은 앞서 언급한 IBM 단면 단일 밀도 형식을 읽을 수 있지만, 다른 형식의 경우 디스크 드라이브와 컨트롤러 유형에 따라 서로 다른 CP/M 기기 간의 이식 정도가 달라지는데, CP/M 시대에는 8인치 및 5.25인치 크기의 플로피 유형이 매우 다양했기 때문이다. 디스크는 하드 섹터 방식일 수도, 소프트 섹터 방식일 수도 있고, 단일 밀도나 이중 밀도, 단면이나 양면, 35트랙, 40트랙, 77트랙, 80트랙일 수 있으며, 섹터 레이아웃, 크기 및 인터리브도 크게 다를 수 있다. 변환 프로그램을 사용하면 사용자가 다른 기기의 디스크 유형을 읽을 수 있지만, 드라이브 유형과 컨트롤러도 변수이다. 1982년까지 소프트 섹터, 단면, 40트랙 5.25인치 디스크가 당시의 가장 대중적인 소비자급 기기인 애플 II, TRS-80, 오스본 1, 케이프로 II, IBM PC에서 사용되었기 때문에 CP/M 소프트웨어를 배포하는 가장 인기 있는 형식이 되었다. 변환 프로그램은 사용자가 유사한 형식을 가진 기기에서 디스크를 읽을 수 있게 해준다. 예를 들어 케이프로 II는 TRS-80, 오스본, IBM PC, 엡손 디스크를 읽을 수 있다. 80트랙이나 하드 섹터와 같은 다른 디스크 유형은 읽는 것이 완전히 불가능하다. (엡손 QX-10의 디스크와 같은) 양면 디스크의 전반부는 CP/M이 디스크 트랙을 순차적으로 접근했기 때문에 읽을 수 있는데, 0번 트랙이 1면의 첫 번째(가장 바깥쪽) 트랙이고 79번 트랙(40트랙 디스크의 경우)이 2면의 마지막(가장 안쪽) 트랙이 된다. 애플 II 사용자는 애플의 GCR 형식 외에는 아무것도 사용할 수 없으므로 애플 형식 디스크로 CP/M 소프트웨어를 구하거나 직렬 링크를 통해 전송해야 한다.

파편화된 CP/M 시장은 유통업체가 여러 형식의 디스크를 재고로 확보하거나 다중 형식 복제 장비에 투자해야 하게 만들었으며, 이는 더 표준화된 IBM PC 디스크 형식과 비교되어 1981년 이후 CP/M이 빠르게 구식화되는 요인이 되었다.

CP/M 구동이 가능한 마지막 주목할 만한 기기 중 하나는 1985년에 등장한 코모도어 128로, 6502 파생 CPU를 사용하는 기본 모드 외에도 CP/M 지원을 위한 Z80이 탑재되어 있었다. CP/M을 사용하려면 소프트 섹터 40트랙 MFM 형식 디스크를 읽을 수 있는 코모도어 1571이나 코모도어 1581 디스크 드라이브가 필요했다.

3.5인치 플로피 드라이브를 최초로 사용한 컴퓨터인 소니 SMC-70은 CP/M 2.2를 구동했다. 코모도어 128, 본드웰-2 노트북, Micromint/Ciarcia SB-180, MSX, TRS-80 모델 4(몬테주마 CP/M 2.2 구동)도 3.5인치 플로피 디스크에서 CP/M 사용을 지원했다. 애플 II용 CP/M 버전인 Applied Engineering의 CP/AM도 3.5인치 디스크(및 애플 II 메모리 확장 카드와 호환되는 RAM 카드상의 RAM 디스크)를 지원했다. 암스트래드 PCW는 처음에 3인치 플로피 드라이브를 사용하여 CP/M을 구동했고, 나중에 3.5인치 드라이브로 전환했다.

파일 시스템

파일 이름은 최대 8자까지의 문자열 뒤에 마침표를 찍고, 최대 3자까지의 파일 이름 확장자를 붙여 지정했다("8.3" 파일 이름 형식). 확장자는 보통 파일 유형을 식별했다. 예를 들어 .COM은 실행 가능한 프로그램 파일을, .TXT는 ASCII 텍스트를 포함하는 파일을 나타냈다. 명령 프롬프트에서 입력된 파일 이름의 문자는 대문자로 변환되었지만 운영체제에 의해 강제되지는 않았다. 프로그램들(MBASIC이 주목할 만한 예)은 소문자를 포함한 파일 이름을 만들 수 있었는데, 이는 명령줄에서 쉽게 참조할 수 없었다.

각 디스크 드라이브는 드라이브 문자로 식별되었다(예: 드라이브 A, 드라이브 B). 특정 드라이브의 파일을 참조하려면 파일 이름 앞에 콜론으로 구분된 드라이브 문자를 붙였다(예: A:FILE.TXT). 드라이브 문자 접두사가 없으면 현재 기본 드라이브의 파일에 접근했다.

파일 크기는 파일이 디스크에서 차지하는 128바이트 레코드(8인치 드라이브의 디스크 섹터와 직접 대응됨)의 수로 지정되었다. 일반적으로 바이트 단위의 정확한 파일 크기를 지정하는 방법은 지원되지 않았다. 파일의 현재 크기는 운영체제에 의해 파일의 파일 제어 블록(FCB) 내에 유지되었다. 많은 응용 프로그램(문서 편집기와 같은)은 파일을 레코드 시퀀스가 아닌 문자 시퀀스로 다루는 것을 선호하기 때문에 관례상 텍스트 파일은 control-Z 문자(ASCII SUB, 십육진법 1A)로 종료되었다. 따라서 텍스트 파일의 끝을 결정하는 것은 파일의 마지막 레코드를 검사하여 종료 control-Z를 찾는 과정을 포함했다. 이는 또한 파일 중간에 control-Z 문자를 삽입하면 일반적으로 파일의 텍스트 내용이 잘리는 효과가 있음을 의미했다.

더 큰 이동식 및 고정식 디스크 드라이브의 등장으로 디스크 디블로킹 공식이 채택되었으며, 이는 논리적 파일 할당 블록당 더 많은 디스크 블록을 할당하는 결과를 낳았다. 이는 더 큰 파일 크기를 허용했지만, 단일 바이트만 포함하는 파일에 대해서는 1 킬로바이트(단일 밀도 드라이브)에서 2 KB(이중 밀도 드라이브) 등으로 할당할 수 있는 최소 파일 크기가 최대 32 KB까지 증가함을 의미했다. 이는 디스크에 많은 수의 작은 파일이 포함되어 있을 경우 디스크 공간을 비효율적으로 사용하는 원인이 되었다.

파일 수정 타임스탬프는 CP/M 2.2까지 지원되지 않았으나, MP/M 및 CP/M 3.0에서는 선택적 기능이었다.

CP/M 2.2는 파일 구조에 하위 디렉토리가 없었지만, 디스크상에서 파일을 구성하기 위해 16개의 번호가 매겨진 사용자 영역을 제공했다. 사용자를 변경하려면 명령 프롬프트에서 "User X"라고 입력하기만 하면 되었으며, X는 사용자 번호였다. 개인용 컴퓨터에서는 보안이 존재하지 않았으며 불필요한 것으로 간주되었다. 사용자 영역 개념은 CP/M 단일 사용자 버전을 다중 사용자 MP/M 시스템과 어느 정도 호환되도록 하기 위한 것이었다. CP/M 및 파생 운영체제에 대한 일반적인 패치는 설정된 현재 사용자 영역과 관계없이 한 사용자 영역을 사용자가 접근할 수 있도록 만드는 것이었다. USER 명령어를 사용하면 사용자 영역을 0에서 15 사이의 영역으로 변경할 수 있었다. 사용자 0이 기본값이었으며, 다른 사용자(예: USER 1)로 변경하면 해당 사용자를 위해 디스크에 저장된 자료는 USER 1만 이용할 수 있었다. USER 2는 해당 자료를 보거나 접근할 수 없었다. 그러나 USER 0 영역에 저장된 파일은 다른 모든 사용자가 접근할 수 있었는데, USER 0의 파일은 USER 0으로 로그인한 사람에게만 보였기 때문에 파일 위치는 앞에 붙는 경로로 지정되었다. 사용자 영역 기능은 작은 플로피 디스크에서 거의 효용이 없었지만, 하드 드라이브를 사용하는 기기에서 파일을 구성하는 데는 유용했다. 이 기능의 의도는 동일한 컴퓨터를 다른 작업에 쉽게 사용하도록 하기 위함이었다. 예를 들어 비서가 데이터 입력을 하고, 사용자 영역을 전환한 후 다른 직원이 동일한 기기를 사용하여 청구 업무를 볼 수 있게 하되 파일들이 서로 섞이지 않도록 할 수 있었다.

그래픽

당시 일반적이었던 흑백 모니터에 표시된 MBASIC 텍스트 출력

상업적인 S-100 버스의 상용화 단계부터 그래픽 지원이 가능한 S-100 시스템이 존재했지만, CP/M은 1982년 GSX(Graphics System Extension)가 나오기 전까지는 어떠한 표준화된 그래픽 지원도 제공하지 않았다. 가용한 메모리가 적었기 때문에 그래픽은 8비트 CP/M 운영체제와 관련된 일반적인 기능이 아니었다. 대부분의 시스템은 텍스트 모드나 사용자 정의 문자 세트를 사용하여 기초적인 아스키 아트 차트와 도표만 표시할 수 있었다. 케이프로 라인 및 TRS-80 모델 4의 일부 컴퓨터는 블록 그래픽 문자를 지원하는 비디오 하드웨어를 갖추고 있었으며, 이는 어셈블러 프로그래머와 CHR$ 함수를 사용하는 베이직 프로그래머가 접근할 수 있었다. 모델 4는 옵션 고해상도 보드를 장착하면 640x240 픽셀 그래픽을 표시할 수 있었다.

파생 운영체제

동독의 로보트론 PC 1715에서 구동되는 CP/M 파생형 SCP
Elwro 804 Junior에서 구동되는 CP/J 버전 2.21

공식

일부 기업들은 디지털 리서치 소스 코드를 기반으로 CP/M의 공식적인 향상 버전을 만들었다. 그 예로 IMS Associates, Inc.가 유명한 앨테어 8800의 클론인 IMSAI 8080 컴퓨터를 위해 만든 IMDOS가 있다.

호환 운영체제

다른 CP/M 호환 운영체제들은 독립적으로 개발되었으며 디지털 리서치의 코드를 전혀 사용하지 않았다. 몇 가지 동시대 사례는 다음과 같다:

향상된 버전

일부 CP/M 호환 운영체제는 기본 기능을 확장하여 원본을 훨씬 능가했는데, 예를 들어 다중 프로세서를 지원하는 TurboDOS가 있다.

동구권

옛 동구권에는 다양한 이름의 CP/M-80 파생형들이 존재했는데, 여기에는 SCP(Single User Control Program), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC 등이 있다. 또한 SCP1700, CP/K, K8918-OS라는 CP/M-86 파생형도 있었다. 이들은 동독의 VEB 로보트론 등에 의해 생산되었다.

유산

마이크로소프트 윈도우가 보이는 일부 동작은 MS-도스와의 하위 호환성의 결과이며, MS-도스는 다시 CP/M과의 하위 호환성을 시도했다. MS-도스(및 초기 윈도우 버전)의 드라이브 문자와 8.3 파일 이름 규칙은 원래 CP/M에서 채택된 것이다. 윈도우에서 사용하는 와일드카드 매칭 문자(? 및 *)는 CP/M의 것들을 기반으로 하며, 출력을 프린터("PRN:") 및 콘솔("CON:")으로 리다이렉션하기 위해 사용되는 예약된 파일 이름들도 마찬가지이다. 드라이브 이름 A와 B는 CP/M 시스템이 일반적으로 사용했던 두 개의 플로피 디스크 드라이브를 지정하는 데 사용되었다. 하드 드라이브가 나타났을 때는 C로 지정되었고, 이는 MS-도스의 C:\> 명령 프롬프트로 살아남았다. 일부 텍스트 파일의 끝을 표시하는 제어 문자 ^Z 또한 CP/M에 기인할 수 있다. 도스의 다양한 명령어들은 CP/M 명령어를 모델로 했다. 일부는 DIR, REN/RENAME, TYPE(그리고 DR-도스의 ERA/ERASE)처럼 같은 이름을 공유하기도 했다. .TXT나 .COM과 같은 파일 확장자는 여전히 많은 운영체제에서 파일 유형을 식별하는 데 사용된다.

1997년과 1998년, 칼데라는 CP/M 2.2 바이너리와 소스 코드 일부를 오픈 소스 라이선스로 공개했으며, 1997년부터 팀 옴스테드의 "The Unofficial CP/M Web site"를 통해 CP/M 및 MP/M 제품군과 관련된 추가 수집된 디지털 리서치 파일들을 재배포하고 수정할 수 있도록 허용했다. 2001년 9월 12일 옴스테드가 사망한 후, 배포 라이선스는 2001년 10월 19일 해당 디지털 리서치 자산의 소유주가 된 Lineo에 의해 갱신 및 확장되었다.

2014년 10월, CP/M 최초 발표 40주년을 기념하여 컴퓨터 역사 박물관은 초기 CP/M 소스 코드 버전을 공개했다.

2018년 기준, CP/M(대부분 2.2)을 호스트 운영체제로 사용하는 컴퓨터 플랫폼을 여전히 개발하고 지원하는 다수의 빈티지, 취미 및 레트로 컴퓨터 개인 및 그룹, 그리고 일부 소규모 상업 기업들이 존재한다.

같이 보기

각주

  1. 1 2 Gasperson, Tina (2001년 11월 26일). “CP/M collection is back online with an Open Source licence - Walk down memory lane”. 《The Register》. 2017년 9월 1일에 원본 문서에서 보존된 문서.
  2. 1 2 Mann, Stephen (1983년 8월 15일). “CP/M Plus, a third, updated version of CP/M”. 《InfoWorld》. 5권 33호. 49쪽. ISSN 0199-6649.
  3. 1 2 3 Sandberg-Diment, Erik (1983년 5월 3일). “Personal Computers: The Operating System in the middle”. 《The New York Times》. 2019년 12월 23일에 원본 문서에서 보존된 문서. 2019년 11월 15일에 확인함.
  4. 1 2 3 Markoff, John (1994년 7월 13일). “Gary Kildall, 52, Crucial Player In Computer Development, Dies”. 《The New York Times》. 2017년 10월 3일에 원본 문서에서 보존된 문서. 2019년 11월 18일에 확인함.
  5. 1 2 Shustek, Len (2016년 8월 2일). “In His Own Words: Gary Kildall”. 《Remarkable People》. Computer History Museum. 2016년 12월 17일에 원본 문서에서 보존된 문서.
  6. 1 2 3 Kildall, Gary Arlen (2016년 8월 2일). Kildall, Scott; Kildall, Kristin (편집). 《Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry》 (Manuscript, part 1). Kildall Family. 2016년 11월 17일에 원본 문서에서 보존된 문서. 2016년 11월 17일에 확인함.
  7. ↑ Newton, Harry (2000). 《Newton's Telecom Dictionary》. New York, New York, US: CMP Books. 228쪽. ISBN 1-57820-053-9.
  8. ↑ Dahmke, Mark (1983년 7월 1일). “CP/M Plus: The new disk operating system is faster and more efficient than CP/M”. 《BYTE Magazine》. 8권 7호. 360쪽.
  9. ↑ Proven, Liam (2024년 8월 2일). “50 years ago, CP/M started the microcomputer revolution”. 《The Register》.
  10. ↑ “Compupro 8/16”. 《old-computers.com》. 2016년 1월 3일에 원본 문서에서 보존된 문서. 2022년 4월 21일에 확인함.
  11. ↑ Cole, Maggie (1981년 5월 25일). “Gary Kildall and the Digital Research Success Story”. 《InfoWorld》. 3권 10호 (Palo Alto, California, US). 52–53쪽. ISSN 0199-6649. 2024년 7월 1일에 원본 문서에서 보존된 문서. 2020년 9월 25일에 확인함.
  12. ↑ Freiberger, Paul (1982년 7월 5일). “History of microcomputing, part 3: software genesis”. 《InfoWorld》. 4권 26호 (Palo Alto, California, US). 41쪽. ISSN 0199-6649. 2024년 7월 1일에 원본 문서에서 보존된 문서. 2020년 9월 25일에 확인함.
  13. ↑ Waite, Mitchell; Lafore, Robert W.; Volpe, Jerry (1982). 《The Official Book for the Commodore 128》. H.W. Sams. 110쪽. ISBN 978-0-67222456-0.
  14. 1 2 3 4 Kildall, Gary Arlen (January 1980). “The History of CP/M, The Evolution Of An Industry: One Person's Viewpoint”. 《Dr. Dobb's Journal》. 5권 1 #41호. 6–7쪽. 2016년 11월 24일에 원본 문서에서 보존된 문서. 2013년 6월 3일에 확인함.
  15. 1 2 3 4 Kildall, Gary Arlen (June 1975), 《CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories》
  16. ↑ Johnson, Herbert R. (2009년 1월 4일). “CP/M and Digital Research Inc. (DRI) History”. 《retrotechnology.com》. 2008년 8월 20일에 원본 문서에서 보존된 문서. 2009년 1월 28일에 확인함.
  17. ↑ Warren, Jim (April 1976). “First word on a floppy-disk operating system”. 《Dr. Dobb's Journal》. 1권 4호 (Menlo Park, California, US). 5쪽. Subtitle: Command language & facilities similar to DECSYSTEM-10.
  18. ↑ Digital Research (1978). 《CP/M》. Pacific Grove, California, US: Digital Research. OCLC 221485970.
  19. 1 2 Wilkinson, Bill (1981년 10월 19일). “Software interchangeability problems in the 6502 marketplace”. 《InfoWorld》 (IDG Publications) 3 (22): 16. 2023년 4월 20일에 원본 문서에서 보존된 문서. 2023년 4월 19일에 확인함 – Google Books 경유.
  20. ↑ Freiberger, Paul; Michael Swaine (2000). 《Fire in the Valley: The Making of the Personal Computer》. McGraw-Hill. 175쪽. ISBN 0071358927 – the Internet Archive 경유.
  21. 1 2 3 4 5 6 7 8 Brown, David K.; Strutynski, Kathryn; Wharton, John Harrison (1983년 5월 14일). “Tweaking more performance from an operating system - Hashing, caching, and memory blocking are just a few of the techniques used to punch up performance in the latest version of CP/M.”. System Design/Software. 《Computer Design - The Magazine of Computer Based Systems》. 22권 6호 (Littleton, Massachusetts, US: PennWell Publications / PennWell Publishing Company). 193–194, 196, 198, 200, 202, 204쪽. ISSN 0010-4566. OCLC 1564597. CODEN CMPDA. ark:/13960/t3hz07m4t. 2021년 8월 14일에 확인함. (7 pages)
  22. 1 2 “Kathryn Betty Strutynski” (Obituary). 《Monterey Herald》. 2010년 6월 19일. 2021년 8월 14일에 원본 문서에서 보존된 문서. 2021년 8월 10일에 확인함 – Legacy.com 경유.
  23. 1 2 Hogan, Thom (1981년 9월 14일). “State of Microcomputing / Some Horses Running Neck and Neck”. 10–12면. 2024년 6월 24일에 원본 문서에서 보존된 문서. 2019년 4월 8일에 확인함.
  24. ↑ Wise, Deborah (1982년 5월 10일). “Mainframe makers court third-party vendors for micro software”. 《InfoWorld》. 4권 18호. 21–22쪽. 2015년 3월 18일에 원본 문서에서 보존된 문서. 2015년 1월 25일에 확인함.
  25. 1 2 Meyer, Edwin W. (1982년 6월 14일). “The Xerox 820, a CP/M-operated system from Xerox”. 《InfoWorld》. 4권 23호. 101–104쪽. 2024년 7월 1일에 원본 문서에서 보존된 문서. 2019년 3월 30일에 확인함.
  26. ↑ Hogan, Thom (1981년 3월 3일). “Microsoft's Z80 SoftCard”. 《InfoWorld》 (Popular Computing) 3 (4): 20–21. ISSN 0199-6649.
  27. ↑ Zimmerman, Frederick (Winter 1983). “HUGCon 1”. 《Sextant》. 4호. 7–34쪽. 2026년 1월 24일에 확인함.
  28. ↑ da Cruz, Frank (1984년 4월 27일). “New release of KERMIT for CP/M-80” (메일링 리스트). 《Info-CP/M》 (Kermit Project, Columbia University). 2025년 1월 2일에 확인함.
  29. ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (1983년 10월 26일). 《CP/M - the Software Bus: A Programmer's Companion》. Sigma Press. ISBN 978-0905104188.
  30. ↑ Johnson, Herbert R. (2014년 7월 30일). “CP/M and Digital Research Inc. (DRI) History”. 2021년 6월 29일에 원본 문서에서 보존된 문서. 2021년 6월 29일에 확인함.
  31. ↑ Swaine, Michael (1997년 4월 1일). “Gary Kildall and Collegial Entrepreneurship”. 《Dr. Dobb's Journal》. 2007년 1월 24일에 원본 문서에서 보존된 문서. 2006년 11월 20일에 확인함.
  32. ↑ Bunnell, David (February 1982). “The Man Behind The Machine? / A PC Exclusive Interview With Software Guru Bill Gates”. 《PC Magazine》. 1권 1호. 16–23 [20]쪽. 2013년 5월 9일에 원본 문서에서 보존된 문서. 2012년 2월 17일에 확인함.
  33. 1 2 Libes, Sol (June 1982). “Bytelines”. 《BYTE》. 440–450쪽. 2025년 3월 17일에 확인함.
  34. ↑ “Radio Shack Computer Catalog RSC-12 page 28”. 《radioshackcomputercatalogs.com》. Tandy/Radio Shack. 2016년 10월 13일에 원본 문서에서 보존된 문서. 2016년 7월 6일에 확인함.
  35. 1 2 “Digital Research Has CP/M-86 for IBM Displaywriter” (PDF). 《Digital Research News - for Digital Research Users Everywhere》 (Pacific Grove, California, US: Digital Research, Inc.) 1 (1): 2, 5, 7. November 1981. Fourth Quarter. 2021년 4월 17일에 원본 문서 (PDF)에서 보존된 문서. 2020년 1월 18일에 확인함.
  36. ↑ Maher, Jimmy (2017년 7월 31일). “The complete history of the IBM PC, part two: The DOS empire strikes”. 《Ars Technica》. 3쪽. 2019년 7월 8일에 원본 문서에서 보존된 문서. 2019년 9월 8일에 확인함.
  37. 1 2 Kildall, Gary Arlen (1982년 9월 16일). “Running 8-bit software on dual-processor computers” (PDF). 《Electronic Design》: 157. 2017년 8월 19일에 원본 문서 (PDF)에서 보존된 문서. 2017년 8월 19일에 확인함.
  38. ↑ Snyder, John J. (June 1983). “A DEC on Every Desk?”. 《BYTE》. 8권 6호. 104–106쪽. 2015년 1월 2일에 원본 문서에서 보존된 문서. 2015년 2월 5일에 확인함.
  39. ↑ “M 68 / M 68 MX”. 2016년 3월 6일에 원본 문서에서 보존된 문서. 2012년 9월 17일에 확인함.
  40. ↑ Thomas, Rebecca A.; Yates, Jean L. (1981년 5월 11일). “Books, Boards and Software for The New 16-Bit Processors”. 《InfoWorld - The Newspaper for the Microcomputing Community》 3 (9) (Popular Computing, Inc.). 42–43면. ISSN 0199-6649. 2020년 1월 24일에 확인함.
  41. ↑ Olmstead, Tim; Chaudry, Gabriele "Gaby". “Digital Research Source Code”. 2016년 2월 5일에 원본 문서에서 보존된 문서.
  42. ↑ Digital Research (1981): XLT86 - 8080 to 8086 Assembly Language Translator - User's Guide 보관됨 2016-11-18 - 웨이백 머신 Digital Research Inc, Pacific Grove
  43. 1 2 Magid, Lawrence J. (June–July 1982). “Baby Blue”. 《PC Magazine》. 1권 3호. 49쪽. 2015년 3월 18일에 원본 문서에서 보존된 문서. 2025년 3월 17일에 확인함.
  44. ↑ Zimmerman, Fredrick (Fall 1982). “The H8's Fifth Anniversary: Origins and Outlook”. 《Sextant》.
  45. ↑ Pournelle, Jerry (March 1984). “New Machines, Networks, and Sundry Software”. 《BYTE》. 9권 3호. 46쪽. 2015년 2월 2일에 원본 문서에서 보존된 문서. 2013년 10월 22일에 확인함.
  46. ↑ Isaacson, Walter (2014). 《The Innovators: How a Group of Inventors, Hackers, Geniuses, and Geeks Created the Digital Revolution》. Simon & Schuster. 358쪽. ISBN 978-1-47670869-0.
  47. ↑ Bellis, Mary. “Inventors of the Modern Computer Series - The History of the MS-DOS Operating Systems, Microsoft, Tim Paterson, and Gary Kildall”. 2012년 4월 27일에 원본 문서에서 보존된 문서. 2010년 9월 9일에 확인함.
  48. ↑ Mace, Scott (1984년 6월 11일). “CP/M Eludes Home Market”. 《InfoWorld》. 6권 24호. 46쪽. 2021년 9월 20일에 원본 문서에서 보존된 문서. 2021년 9월 20일에 확인함.
  49. ↑ Groth, Nancy (1986년 2월 10일). “Kaypro is retreating on CP/M”. 《InfoWorld》. 8권 6호. 6쪽. 2022년 3월 20일에 원본 문서에서 보존된 문서. 2021년 10월 29일에 확인함.
  50. ↑ “ZCPR - oldcomputers.ddns.org”.
  51. ↑ Markoff, John; Shapiro, Ezra (September 1984). “Z Whiz”. BYTE West Coast. 《BYTE》. 396–397쪽. 2025년 4월 10일에 확인함.
  52. ↑ “The Wonderful World of ZCPR3”. 1987년 11월 30일. 2019년 12월 23일에 원본 문서에서 보존된 문서. 2019년 11월 18일에 확인함.
  53. ↑ “CP/M emulators for DOS”. 《retroarchive.org/cpm》. Luis Basto. 2016년 7월 9일에 원본 문서에서 보존된 문서. 2016년 7월 6일에 확인함.
  54. ↑ Davis, Randy (December 1985 – January 1986). Greenville, Texas, US에서 작성. “The New NEC Microprocessors - 8080, 8086, Or 8088?” (PDF). 《Micro Cornucopia》 (27) (Bend, Oregon, US: Micro Cornucopia Inc.). 4–7면. ISSN 0747-587X. 2020년 2월 11일에 원본 문서 (PDF)에서 보존된 문서. 2020년 2월 11일에 확인함.
  55. ↑ “Plug-in CP/M coming”. 《Personal Computer News》. 1984년 1월 14일. 7쪽. 2022년 10월 3일에 확인함.
  56. ↑ Hetherington, Tony (February 1985). “Sharp MZ-800”. 《Personal Computer World》. 144–146, 149–150쪽. 2022년 10월 3일에 확인함.
  57. ↑ Coles, Ray (June 1984). “Cheaper, simpler CP/M” (PDF). 《Practical Computing》. 43쪽. 2022년 10월 3일에 확인함.
  58. ↑ “AMI releases specs on CP/M microchip”. 《Microsystems》. June 1984. 12쪽. 2023년 3월 25일에 확인함.
  59. 1 2 《CP/M Operating System Manual》 (PDF). Digital Research. July 1982.
  60. ↑ 《CP/M-86 System Guide》 (PDF). Digital Research. 1981.
  61. ↑ 《CP/M-68K Operating System System Guide》 (PDF). Digital Research. January 1983.
  62. ↑ 《CP/M-8000 Operating System System Guide》 (PDF). Digital Research. August 1984.
  63. 1 2 “CP/M Operating System Manual” (PDF). 2019년 12월 14일에 원본 문서 (PDF)에서 보존된 문서. 2019년 2월 23일에 확인함.
  64. 1 2 3 《CP/M Plus (CP/M Version 3) Operating System Programmers Guide》 (PDF) 2판. Digital Research. April 1983. 2016년 11월 25일에 원본 문서 (PDF)에서 보존된 문서. 2016년 11월 25일에 확인함.
  65. 1 2 《CP/M Plus (CP/M Version 3) Operating System User's Guide》 (PDF). Digital Research. 1983. 2019년 11월 26일에 원본 문서 (PDF)에서 보존된 문서. 2020년 5월 9일에 확인함.
  66. ↑ “PL/I Language Programmer's Guide” (PDF). Digital Research. 2019년 9월 25일에 원본 문서 (PDF)에서 보존된 문서. 2019년 11월 18일에 확인함.
  67. ↑ Mace, Scott (1984년 1월 9일). “IBM PC clone makers shun total compatibility”. 《InfoWorld》. 6권 2&3호. 79–81쪽. 2015년 3월 16일에 원본 문서에서 보존된 문서. 2015년 2월 4일에 확인함.
  68. 1 2 Derfler, Frank J. (1982년 10월 18일). “Kaypro II—a low-priced, 26-pound portable micro”. 《InfoWorld》. 59면. 2014년 1월 1일에 원본 문서에서 보존된 문서. 2013년 10월 22일에 확인함.
  69. ↑ Pournelle, Jerry (June 1983). “Zenith Z-100, Epson QX-10, Software Licensing, and the Software Piracy Problem”. 《BYTE》. 8권 6호. 411쪽. 2014년 6월 9일에 원본 문서에서 보존된 문서. 2013년 10월 20일에 확인함.
  70. 1 2 Arnow, Murray (1985). 《The Apple CP/M Book》. Scott, Foresman and Company. 2,145쪽. ISBN 0-673-18068-9. 2025년 6월 25일에 확인함.
  71. ↑ Loguidice, Bill (2012년 7월 28일). “More on Avalon Hill Computer Games on Heath/Zenith platforms”. 《Armchair Arcade》. 2015년 7월 23일에 원본 문서에서 보존된 문서. 2015년 7월 22일에 확인함.
  72. ↑ Sblendorio, Francesco (2015년 12월 1일). “Gorillas for CP/M”. 《GitHub》. 2016년 2월 5일에 원본 문서에서 보존된 문서. 2015년 7월 22일에 확인함.
  73. ↑ 〈Section 4 - CP/M Dynamic Debugging Tool〉. 《CP/M 2.2》. 2015년 6월 17일에 원본 문서에서 보존된 문서. 2014년 8월 29일에 확인함.
  74. ↑ 《CP/M Dynamic Debugging Tool (DDT) - User's Guide》 (PDF). Digital Research. 1978. 2014년 10월 28일에 원본 문서 (PDF)에서 보존된 문서. 2014년 8월 29일에 확인함.
  75. ↑ Shael (2010년 6월 26일). “DDT Utility”. 2015년 12월 8일에 원본 문서에서 보존된 문서. 2014년 8월 29일에 확인함.
  76. ↑ Brand, Stewart (1984). 《Whole Earth Software Catalog》. Quantum Press/Doubleday. ISBN 978-0-38519166-1. 2015년 7월 4일에 원본 문서에서 보존된 문서.
  77. ↑ Lieber, Eckhard; von Massenbach, Thomas (1987). “CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M” (독일어) (part 1). 《c't - magazin für computertechnik》. 1987권 1호 (Heise Verlag). 124–135쪽.
  78. ↑ Lieber, Eckhard; von Massenbach, Thomas (1987). “CP/M 2 lernt dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M” (독일어) (part 2). 《c't - magazin für computertechnik》. 1987권 2호 (Heise Verlag). 78–85쪽.
  79. ↑ Huck, Alex (2016년 10월 9일). “RSM für CP/M 2.2” (독일어). 《Homecompuer DDR》. 2016년 11월 25일에 원본 문서에서 보존된 문서. 2016년 11월 25일에 확인함.
  80. ↑ Patrick, Kenneth A. (Winter 1983). “Eight Spreadsheets Compared: Charting Products to Eliminate Tedious Calculations”. 《Sextant》. 4호. 40–55쪽. 2026년 1월 24일에 확인함.
  81. 1 2 3 4 5 6 7 8 9 10 11 12 “Adventure International Catalog v3n5 (1983)”. 《Internet Archive》. 2026년 2월 19일에 확인함.
  82. 1 2 3 4 5 6 7 8 9 10 11 12 13 “Dynacomp, Inc. Catalog: Summer 1981 (text)” (PDF). 《Internet Archive》. 2026년 2월 19일에 확인함.[깨진 링크(과거 내용 찾기)]
  83. 1 2 3 4 5 6 7 8 9 10 11 12 13 “Infocom order form (BB-84)” (PDF). 《The Museum of Computer Adventure Game History》. 2026년 2월 19일에 확인함.
  84. ↑ “MyChess entry”. 《Chess Programming Wiki》. 2026년 2월 19일에 확인함.
  85. ↑ “The Rogue Archive (entries tagged [cp], from Epyx disk collection)”. 《The Rogue Archive》. 2026년 2월 19일에 확인함.
  86. ↑ “Epyx PC Floppy Disk Image Collection”. 《Internet Archive》. 2026년 2월 19일에 확인함.
  87. ↑ Pournelle, Jerry (April 1982). “The Osborne 1, Zeke's New Friends, and Spelling Revisited”. 《BYTE》. 7권 4호. 212쪽. 2021년 5월 24일에 확인함.
  88. 1 2 Pournelle, Jerry (September 1982). “Letters, Pascal, CB/80, and Cardfile”. 《BYTE》. 318–341쪽. 2024년 12월 30일에 확인함.
  89. ↑ Waite, Mitchell; Lafore, Robert W.; Volpe, Jerry (1985). 〈The CP/M Mode〉. 《The Official Book for the Commodore 128 Personal Computer》. Howard W. Sams & Co. 98쪽. ISBN 0-672-22456-9.
  90. ↑ Fager, Roger; Bohr, John (September 1983). “The Kaypro II”. 《BYTE》. 8권 9호. 212쪽. 2014년 3월 2일에 원본 문서에서 보존된 문서. 2013년 10월 20일에 확인함.
  91. ↑ Pilarski, James A. (Winter 1983). “Venturing Beyond the Heath/Zenith Disk Controller”. 《Sextant》. 4호. 67–73쪽. 2026년 1월 24일에 확인함.
  92. ↑ “Now: A Complete CP/M Pascal for Only $29.95!” (advertisement). 《BYTE》. 7권 12호. December 1982. 11쪽. 2016년 7월 21일에 원본 문서에서 보존된 문서. 2016년 10월 1일에 확인함.
  93. ↑ “Ellis Computing” (advertisement). 《BYTE》. 8권 12호. December 1983. 69쪽.
  94. ↑ “Distribution I: Software” (PDF). 《더 로젠 일렉트로닉스 레터》. 1983년 2월 22일. 6–11면. 2025년 6월 5일에 확인함.
  95. ↑ Johnson-Laird, Andy (1983). 〈3〉. 《The programmer's CP/M handbook》. Berkeley, California, US: Osborne/McGraw-Hill. ISBN 0-88134-103-7.
  96. ↑ “Old-computers.com: The Museum”. 2013년 7월 3일에 원본 문서에서 보존된 문서. 2017년 10월 6일에 확인함.
  97. ↑ Ciarcia, Steve (September 1985). “Build the SB-180” (PDF). 《BYTE Magazine》. CMP Media. 100쪽. 2019년 11월 29일에 원본 문서 (PDF)에서 보존된 문서. 2019년 6월 18일에 확인함.
  98. ↑ 《CP/AM 5.1 User Manual》. Applied Engineering. 1쪽. 2020년 5월 22일에 확인함.
  99. ↑ “CP/M Builtin Commands”. 《discordia.org.uk》. 2008년 4월 12일에 원본 문서에서 보존된 문서. 2009년 1월 28일에 확인함.
  100. 1 2 Pohlers, Volker (2019년 4월 30일). “CP/A” (독일어). 《Homecomputer DDR》. 2020년 2월 21일에 원본 문서에서 보존된 문서. 2020년 2월 21일에 확인함.
  101. 1 2 Kurth, Rüdiger; Groß, Martin; Hunger, Henry (2019년 1월 3일). “Betriebssysteme” (독일어). 《robotrontechnik.de》. 2019년 4월 27일에 확인함.
  102. 1 2 3 Kurth, Rüdiger; Groß, Martin; Hunger, Henry (2019년 1월 3일). “Betriebssystem SCP” (독일어). 《robotrontechnik.de》. 2019년 4월 27일에 확인함.
  103. ↑ Chen, Raymond (2009년 6월 10일). “Why does MS-DOS use 8.3 filenames instead of, say, 11.2 or 16.16?”. 《The Old New Thing》. 2011년 9월 22일에 원본 문서에서 보존된 문서. 2010년 12월 17일에 확인함.
  104. ↑ Chen, Raymond (2007년 12월 17일). “How did wildcards work in MS-DOS?”. 《The Old New Thing》. 2011년 5월 8일에 원본 문서에서 보존된 문서. 2010년 12월 17일에 확인함.
  105. 1 2 Chen, Raymond (2003년 10월 22일). “What's the deal with those reserved filenames like NUL and CON?”. 《The Old New Thing》. 2010년 8월 2일에 원본 문서에서 보존된 문서. 2010년 12월 17일에 확인함.
  106. ↑ Chen, Raymond (2004년 3월 16일). “Why do text files end in Ctrl+Z?”. 《The Old New Thing》. 2011년 2월 6일에 원본 문서에서 보존된 문서. 2010년 12월 17일에 확인함.
  107. ↑ Olmstead, Tim (1997년 8월 10일). “CP/M Web site needs a host”. 뉴스그룹: comp.os.cpm. 2017년 9월 1일에 원본 문서에서 보존된 문서. 2018년 9월 9일에 확인함.
  108. ↑ Olmstead, Tim (1997년 8월 29일). “ANNOUNCE: Caldera CP/M site is now up”. 뉴스그룹: comp.os.cpm. 2017년 9월 1일에 원본 문서에서 보존된 문서. 2018년 9월 9일에 확인함.
  109. ↑ “License Agreement”. Caldera, Inc. 1997년 8월 28일. 2015년 7월 25일에 확인함. [깨진 링크] [깨진 링크]
  110. ↑ “Tim Olmstead”. 2001년 9월 12일. 2018년 9월 9일에 원본 문서에서 보존된 문서.
  111. ↑ Sparks, Bryan Wayne (2001년 10월 19일). Chaudry, Gabriele "Gaby" (편집). “License agreement for the CP/M material presented on this site”. Lineo, Inc. 2015년 7월 25일에 확인함.
  112. ↑ Chaudry, Gabriele "Gaby" (편집). “The Unofficial CP/M Web Site”. 2016년 2월 3일에 원본 문서에서 보존된 문서.
  113. ↑ Swaine, Michael (2004년 6월 1일). “CP/M and DRM”. 《Dr. Dobb's Journal》. 29권 6호 (CMP Media LLC). 71–73쪽. #361. 2018년 9월 9일에 원본 문서에서 보존된 문서. 2018년 9월 9일에 확인함. 보관됨 2024-07-01 - 웨이백 머신
  114. ↑ Laws, David (2014년 10월 1일). “Early Digital Research CP/M Source Code”. Computer History Museum. 2015년 7월 27일에 원본 문서에서 보존된 문서. 2015년 7월 25일에 확인함.

외부 링크