CP/M
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
CP/M은 1973년에서 1974년 사이에 게리 킬달이 개발한 마이크로컴퓨터용 운영 체제이다. 인텔렉-8 개발 시스템에서 구동되었으며, 8인치 플로피 디스크 드라이브를 지원했다. CP/M은 1970년대 후반 상업적으로 성공하여, 8비트 마이크로컴퓨터 시장에서 널리 사용되었다. MS-DOS의 등장으로 시장 점유율을 잃었지만, MS-DOS와 윈도우에 영향을 미쳐, 파일 이름 규칙, 와일드카드, 드라이브 문자 등에서 그 유산을 확인할 수 있다.
더 읽어볼만한 페이지
- CP/M - CP/M-86
디지털 리서치가 개발한 16비트 운영 체제 CP/M-86은 인텔 8086 프로세서용으로 설계된 CP/M-80의 후속작이었으나 MS-DOS에 밀려 널리 사용되지 못했고, 다양한 버전과 간지 CP/M-86도 존재했으며, 1990년대 후반에 오픈 소스화되었다. - 디지털 리서치 소프트웨어 - GEM (소프트웨어)
GEM은 Digital Research가 개발한 GUI로, MS-DOS 환경에서 매킨토시와 유사한 경험을 제공하려 했으나, 애플과의 소송과 오픈 소스화 이후 FreeGEM, OpenGEM 등의 파생 프로젝트로 개발이 이어졌다. - 디지털 리서치 소프트웨어 - DR-DOS
DR-DOS는 디지털 리서치가 1988년 5월에 처음 발표한 디스크 운영 체제로, MS-DOS와 경쟁하며 다양한 기능과 개선된 메모리 관리 기능을 제공했고 여러 차례 소유권 이전과 버전 업데이트를 거쳐 현재는 DRDOS, Inc.에서 임베디드 시스템용으로 판매되고 있다. - 1974년 소프트웨어 - IBM 시스템 R
- 1974년 소프트웨어 - Diff
diff는 1974년 더글러스 매킬로이가 개발한 텍스트 파일 비교 유틸리티로, 최장 공통 부분 수열 알고리즘을 기반으로 파일 간의 차이점을 식별하고 변경 사항을 표시하며, 래리 월이 개발한 patch 유틸리티와 함께 활용된다.
| CP/M | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | Digital Research, Inc., 게리 킬달 |
| 작업 상태 | 역사적 |
| 소스 모델 | 원래 클로즈드 소스, 현재 오픈 소스 |
| 출시일 | 1974년 |
| 최신 버전 | 3.1 |
| 최신 버전 출시일 | 1983년 |
| 프로그래밍 언어 | PL/M, 어셈블리어 |
| 사용 가능한 프로그래밍 언어 | 어셈블리어, 베이직, 모듈라-2, 파스칼 등 |
| 언어 | 영어 |
| 업데이트 모델 | 재설치 |
| 패키지 관리자 | 없음 |
| 지원 플랫폼 | 인텔 8080 인텔 8085 자일로그 Z80 자일로그 Z8000 인텔 8086 모토로라 68000 |
| 커널 유형 | 모놀리식 커널 |
| 영향을 받은 운영 체제 | RT-11 OS/8 |
| 사용자 인터페이스 | 명령 줄 인터페이스 (CCP.COM) |
| 라이선스 | 원래 독점, 현재 BSD와 유사 |
| 계승 운영 체제 | MP/M CP/M-86 |
| 웹사이트 | 디지털 리서치 CP/M 페이지 |
2. 역사
게리 킬달이 개발한 CP/M은 1970년대와 1980년대 초반 마이크로컴퓨터 분야에서 중요한 역할을 한 운영 체제이다.
1973년에서 1974년에 걸쳐, 킬달은 인텔 인텔렉-8 개발 시스템에서 작동하는 CP/M을 처음 개발했다. 이 시스템은 슈거트 어소시에이트의 8인치 플로피 디스크 드라이브와 커스텀 플로피 디스크 컨트롤러를 통해 연결되었다.[21] 킬달은 자신이 개발한 PL/M 프로그래밍 언어를 사용하여 CP/M을 작성했다. CP/M은 킬달이 개발에 사용했던 DECsystem-10 메인프레임 컴퓨터의 TOPS-10 운영 체제에서 영향을 받았다.
CP/M은 원래 "제어 프로그램/모니터"의 약자였으나, 1977년 11월 상표 등록을 하면서 "마이크로컴퓨터용 제어 프로그램"으로 변경되었다. CP/M이라는 이름은 킬달이 개발한 프로그래밍 언어 PL/M, 프라임 컴퓨터의 PL/P와 같이 당시 유행하던 작명 방식을 따랐으며, 이들은 모두 IBM의 PL/I에서 영감을 받았다. 킬달은 해군대학원에서 IBM의 CP/CMS 운영 체제를 사용한 경험이 있었다.
킬달과 그의 아내 도로시 맥큐언은 킬달의 개인 프로젝트였던 CP/M과 인텔과의 계약으로 개발한 PL/M을 사업으로 전환하기 위해 노력했다. 킬달은 디지털 리서치가 마이크로컴퓨터의 대명사가 되기를 원했다. 인터갤럭틱 디지털 리서치는 나중에 디지털 리서치로 회사명을 변경했다.
1979년에는 다중 사용자 지원 버전인 MP/M이 출시되었다. MP/M은 여러 사용자가 하나의 컴퓨터에 연결하여 각자 디스플레이와 키보드를 갖춘 단말기를 사용할 수 있게 했다. 이후 버전에서는 16비트 CPU도 지원했다.
1983년에 출시된 8비트 CP/M의 최종 버전인 버전 3은 CP/M Plus로 불렸다. 이 버전은 MP/M의 뱅크 스위칭 메모리 관리 기능을 단일 사용자, 단일 작업 환경에 통합하여 CP/M 2.2 애플리케이션과 호환성을 유지했다. CP/M 3는 8080 또는 Z80 프로세서에서 64KB 이상의 메모리를 사용할 수 있었다. 파일에 타임스탬프를 기록하는 기능과 어셈블러, 링커도 함께 제공되었다. CP/M 3는 암스트래드 PCW, 암스트래드 CPC, ZX 스펙트럼 +3, 코모도어 128, MSX, 라디오샥 TRS-80 모델 4 등 8비트 마이크로컴퓨터에서 사용되었다.
16비트 CPU를 위한 CP/M 버전도 개발되었다.
인텔 8086 프로세서용 CP/M-86이 최초의 16비트 버전이었고, 이후 모토로라 68000 프로세서용 CP/M-68K가 출시되었다. 1982년에 출시된 CP/M-68K는 나중에 C언어로 이식되었다. 혼란을 피하기 위해 원래의 8비트 버전 CP/M은 CP/M-80으로 불리게 되었다. 1982년에서 1983년경에는 Z8000에서 동작하는 CP/M-8000이 C언어로 개발되었다.
CP/M-86은 IBM PC의 표준 운영 체제가 될 것으로 기대되었지만, 디지털 리서치와 IBM은 개발 및 계약에 대한 합의를 이루지 못했다. IBM은 마이크로소프트와 협력하여 86-DOS를 기반으로 PC DOS를 개발하여 제공했다. 디지털 리서치는 IBM을 상대로 소송을 제기했고, CP/M-86도 IBM PC에서 사용할 수 있게 되었지만, PC DOS가 40달러였던 반면 CP/M-86은 240달러로 가격 차이가 컸다.[16]
DEC은 IBM의 경쟁 제품으로 레인보우 100을 출시하면서 Z80을 사용한 CP/M-80과 8088을 사용한 CP/M-86 및 MS-DOS를 함께 제공하여 CP/M-86과 CP/M-80을 동시에 사용할 수 있게 했다. Z80과 8088은 병렬로 작동했다.
CP/M-68K는 아타리 ST에 탑재될 예정이었지만, 아타리는 GEMDOS라는 새로운 DOS를 사용하기로 결정했다. CP/M-68K는 소드(SORD)의 M68과 M68MX에서도 사용되었다.
16비트 버전 CP/M의 애플리케이션은 새로운 CPU용으로 재컴파일이 필요했고, 어셈블러로 작성된 경우 1981년 킬달이 개발한 XLT86을 사용하여 8080용 ASM 파일을 8086용 A86 파일로 변환할 수 있었다. XLAT86는 PL/I-80으로 작성되었으며, CP/M-80과 DEC VMS에서 작동했다.
아키텍처 종류별로 트랜션트 명령어의 확장자가 달랐다(CP/M-80:.COM, CP/M-86:.CMD, CP/M-68K:.68K 등). 동일한 파일 시스템 내에서 여러 아키텍처용 CP/M을 혼합하여 사용할 수 있었다. PC-9800 시리즈용 SPARK 시리즈가 그 예시이다.
구 동구권에서는 SCP, 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 등 여러 이름으로 다양한 CP/M-80 파생 운영 체제가 존재했다. SCP1700, CP/K, K8918-OS 등의 CP/M-86 파생 운영 체제도 있었다. 이들은 동독의 VEB 로보트론(VEB Robotron) 등에서 개발되었다.
1980년대 한국에서는 일본전기(NEC)의 PC-8000 시리즈/PC-8800 시리즈, 샤프의 MZ 시리즈/X1 시리즈 등 Z80 프로세서를 탑재한 8비트 퍼스널 컴퓨터에 이식된 CP/M 패키지가 제공되었다. 샤프가 직접 공급한 X1 시리즈용 CP/M은 완성도가 높았고 가격도 저렴했다.[1]
소니의 SMC 시리즈 중 SMC-777은 CP/M 1.4 기반의 SONY FILER라는 OS를 탑재했다. SMC-70, SMC-70G는 별매였지만 사실상 CP/M 2.2가 표준 OS로 사용되었다.[1]
MSX에 제공된 MSX-DOS는 겉모습은 MS-DOS와 유사했지만, 내용은 CP/M과 유사하여 CP/M 소프트웨어가 대부분 동작했다.[1]
2. 1. 초기 역사 (1973-1978)
게리 킬달은 1973년에서 1974년에 걸쳐 CP/M을 처음 개발했다. CP/M은 인텔 인텔렉-8 개발 시스템에서 구동되었으며, 슈거트 어소시에이트 8인치 플로피 디스크 드라이브와 커스텀 플로피 디스크 컨트롤러를 통해 접속되었다.[21] CP/M은 킬달이 직접 만든 PL/M(마이크로컴퓨터용 프로그래밍 언어)으로 작성되었다. CP/M의 여러 측면은 킬달이 개발 환경으로 사용했던 DECsystem-10 메인프레임 컴퓨터의 TOPS-10 운영 체제의 영향을 받았다.CP/M은 원래 "제어 프로그램/모니터"를 의미했지만, 1977년 11월 상표 등록 과정에서 "마이크로컴퓨터용 제어 프로그램"으로 명칭이 변경되었다. CP/M이라는 이름은 킬달의 PL/M 언어와 프라임 컴퓨터의 PL/P(Prime용 프로그래밍 언어)처럼 당시 유행하던 명명 체계를 따랐으며, 이들은 모두 IBM의 PL/I에서 영향을 받았다. 또한 킬달이 해군대학원에서 사용했던 IBM의 CP/CMS 운영 체제도 영향을 주었다.
킬달 부부는 디지털 리서치 브랜드와 제품을 "마이크로컴퓨터"와 동의어로 만들고자 했다. 이는 IBM과 마이크로소프트가 "개인용 컴퓨터"를 자사 제품과 동의어로 만든 것과 유사한 전략이었다. Intergalactic Digital Research, Inc.는 나중에 Digital Research, Inc.로 사명을 변경했다.
1978년, 존 피어스는 킬달의 지휘 아래 CP/M 2.0 개발에 주력했다. 1979년 초, 킬달의 해군대학원 친구였던 캐서린 스트루틴스키가 디지털 리서치의 네 번째 직원이 되었다. 그녀는 CP/M 2.0 디버깅을 시작으로 CP/M 2.2 및 CP/M Plus의 핵심 개발자로 활동했다. CP/M 기반의 초기 개발자로는 로버트 "밥" 실버스타인과 데이비드 "데이브" K. 브라운이 있다.
2. 2. 상업적 성공과 발전 (1979-1983)
1981년 9월까지 디지털 리서치는 25만 개 이상의 CP/M 라이선스를 판매했으며, ''인포월드''는 하위 라이선스로 인해 실제 시장 규모는 더 클 것이라고 보도했다. 많은 회사들이 다양한 시장을 위해 CP/M 기반 컴퓨터를 생산했으며, "CP/M은 소형 컴퓨터 운영 체제로서 자리를 확고히 하고 있다"고 언급되었다.회사들은 방대한 소프트웨어 라이브러리 때문에 CP/M을 지원하기로 선택했다. 제록스는 "수천 개의 프로그램이 작성되어 있으므로 이를 활용하지 않는 것은 현명하지 않다"고 말하며 제록스 820에 이 운영 체제를 탑재했다. 1984년까지 컬럼비아 대학교는 동일한 소스 코드를 사용하여 12개가 넘는 다양한 CP/M 시스템과 두 가지 일반 버전에 대한 커밋 바이너리를 구축했다. 이 운영 체제는 "소프트웨어 버스"로 설명되었으며,[4][5] 여러 프로그램이 표준화된 방식으로 서로 다른 하드웨어와 상호 작용할 수 있도록 했다.
CP/M용으로 작성된 프로그램은 일반적으로 서로 다른 기계 간에 이식 가능했으며, 화면과 프린터 제어를 위한 이스케이프 시퀀스만 지정하면 되었다. 이러한 이식성으로 인해 CP/M이 인기를 얻었고, 단일 브랜드의 하드웨어에서만 실행되는 운영 체제보다 CP/M용으로 훨씬 더 많은 소프트웨어가 작성되었다. 이식성에 대한 한 가지 제약은 특정 프로그램이 Z80 프로세서의 확장된 명령어 세트를 사용했으며 8080 또는 8085 프로세서에서는 작동하지 않는다는 점이었다. 또 다른 제약은 게임 및 그래픽 프로그램에서 특히 그래픽 루틴이었는데, 이는 OS와 BIOS를 우회하여 속도를 위해 직접 하드웨어 액세스를 사용했기 때문에 기계별이었다.
빌 게이츠는 Z-80 소프트카드가 장착된 애플 II가 가장 인기 있는 CP/M 하드웨어 플랫폼이라고 주장했다. 알테어 8800, IMSAI 8080, 오스본 1, Kaypro 휴대용 컴퓨터, MSX 컴퓨터 등 여러 브랜드의 기계가 이 운영 체제를 실행했다. 역대 최고 판매 CP/M 호환 시스템은 아마도 암스트래드 PCW였을 것이다. 영국에서는 CP/M이 리서치 머신 교육용 컴퓨터와 Z80 코프로세서가 장착된 BBC 마이크로에서도 사용할 수 있었다. 또한 암스트래드 CPC 시리즈, 코모도어 128, TRS-80, 후기 모델의 ZX 스펙트럼에서도 사용할 수 있었다.
1979년, CP/M과 호환되는 다중 사용자 운영 체제인 MP/M이 출시되었다. MP/M은 여러 사용자가 단일 컴퓨터에 여러 터미널을 통해 연결하여 각 사용자에게 화면과 키보드를 제공할 수 있도록 했다. 후속 버전들은 16비트 프로세서에서 실행되었다.
1983년에 출시된 CP/M의 마지막 8비트 버전은 버전 3으로, CP/M Plus라고도 불린다. CP/M Plus는 단일 사용자, 단일 작업 환경에서 MP/M의 뱅크 스위칭 메모리 관리 기능을 통합하여 CP/M 2.2 응용 프로그램과 호환된다. 따라서 CP/M 3은 8080 또는 Z80 프로세서에서 64KB 이상의 메모리를 사용할 수 있었다. 시스템은 파일의 날짜 표시를 지원하도록 구성할 수 있었으며, 운영 체제 배포 소프트웨어에는 재배치 어셈블러와 링커도 포함되어 있었다. CP/M 3는 암스트래드 PCW, 암스트래드 CPC, ZX 스펙트럼 +3, 코모도어 128, MSX 기기 및 라디오샥 TRS-80 Model 4와 같이 마지막 세대의 8비트 컴퓨터에서 사용할 수 있었다.
2. 3. MS-DOS와의 경쟁 및 쇠퇴 (1981-1980년대 후반)
1981년 11월, 인텔 8086용 CP/M-86이 출시되면서 16비트 CPU를 위한 CP/M 버전이 등장했다. 이 시점에서 혼동을 피하기 위해 기존의 8비트 CP/M은 ''CP/M-80''이라는 이름으로 불리게 되었다.CP/M-86은 IBM PC의 표준 운영 체제가 될 것으로 예상되었지만, DRI와 IBM은 라이선스 조건에 대해 합의하지 못했다. IBM은 마이크로소프트와 계약하여 86-DOS를 기반으로 한 PC DOS를 제공받았다. DRI가 법적 조치를 취하겠다고 위협하자, IBM은 CP/M-86을 IBM PC의 옵션으로 제공했지만, PC DOS보다 훨씬 높은 가격(각각 240USD와 40USD) 때문에 대부분의 고객은 CP/M-86을 외면했다.
디지털 이큅먼트 코퍼레이션(DEC)은 IBM에 대항하기 위해 Rainbow 100을 출시하면서 CP/M-80, CP/M-86, MS-DOS, 또는 이들을 모두 사용하는 CP/M-86/80을 함께 제공했다. Z80 및 8088 CPU는 동시에 실행되었다. Rainbow의 장점은 8비트 CP/M 소프트웨어를 계속 실행하여 사용자가 MS-DOS로 전환할 때 투자를 유지할 수 있다는 것이었다. CompuPro System 816영어에 대한 유사한 듀얼 프로세서 적용은 CP/M 8-16이라고 명명되었다.
CP/M-86이 나온 직후, 모토롤라 68000용 ''CP/M-68K''가 출시되었다. 1982년 CP/M-68K의 원래 버전은 Pascal/MT+68k로 작성되었지만, 나중에 C로 이식되었다. CP/M-68K는 Atari ST 컴퓨터에 사용될 예정이었지만, Atari는 GEMDOS를 사용하기로 결정했다. CP/M-68K는 SORD M68 및 M68MX 컴퓨터에서도 사용되었다. 1982년에는 질로그 Z8000의 16비트 올리베티 M20에 대한 CP/M-68K에서 C로 작성된 ''CP/M-8000'' 포트도 있었다.
이러한 16비트 버전의 CP/M은 응용 프로그램이 새로운 CPU용으로 다시 컴파일될 것을 요구했다. 어셈블리어로 작성된 일부 프로그램은 XLT86과 같은 도구를 사용하여 새로운 프로세서에 대해 자동으로 번역될 수 있었다.
많은 사람들은 CP/M이 16비트 컴퓨터의 표준 운영 체제가 될 것이라고 예상했지만, 1980년 IBM은 빌 게이츠의 제안으로 디지털 리서치에 접촉하여 IBM PC용 CP/M 라이선스를 얻으려 했으나, 비밀유지계약 체결에 실패하면서 협상은 결렬되었고, IBM은 대신 마이크로소프트와 계약하여 MS-DOS를 제공받았다.
초기 MS-DOS 버전은 CP/M과 매우 유사했다. 파일 처리 데이터 구조와 같은 내부 구조는 동일했고, 두 운영 체제 모두 디스크 드라이브를 문자(
A:, B: 등)로 참조했다. MS-DOS의 주요 혁신은 FAT 파일 시스템이었다. 이러한 유사성 덕분에 워드스타나 dBase와 같은 인기 있는 CP/M 소프트웨어를 이식하기가 쉬웠다. 그러나 CP/M의 동일한 디스크 상의 파일을 위한 별도의 사용자 영역 개념은 MS-DOS로 이식되지 않았다. MS-DOS는 더 많은 메모리에 접근할 수 있었기 때문에 더 많은 명령어가 명령줄 인터페이스에 내장되어 플로피 디스크 기반 컴퓨터에서 MS-DOS를 더 빠르고 사용하기 쉽게 만들었다.IBM PC의 초기 주변 기기 중 하나는 8비트 CP/M 소프트웨어를 실행할 수 있도록 하는 SoftCard와 유사한 확장 카드였다. 하지만 ''InfoWorld''는 1984년 CP/M을 가정용 시장에 도입하려는 노력은 대부분 성공적이지 못했고, 대부분의 CP/M 소프트웨어는 가정 사용자에게 너무 비쌌다고 보도했다. 1986년에는 Kaypro가 MS-DOS 호환 시스템 판매에 집중하기 위해 8비트 CP/M 기반 모델 생산을 중단했다고 보도했는데, 이는 다른 대부분의 업체들이 CP/M용 새 장비와 소프트웨어 생산을 중단한 지 오래된 후였다. 마이크로컴퓨팅 시장이 IBM 호환 플랫폼으로 이동하면서 CP/M은 시장 점유율을 빠르게 잃었고, 이전의 인기를 회복하지 못했다.
후기 CP/M-86 버전은 성능과 사용성 면에서 상당한 발전을 이루었고 MS-DOS와의 호환성도 확보했다. 이 호환성을 반영하여 이름이 변경되었고, CP/M-86은 DOS Plus가 되었고, 다시 DR-DOS가 되었다.
2. 4. 동구권에서의 CP/M
구 동구권에서는 SCP (Single User Control Program|징글 유저 콘트롤 프로그램de), 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 등 여러 이름으로 다양한 CP/M-80 파생 운영 체제가 존재했다. SCP1700, CP/K, K8918-OS 등의 CP/M-86 파생 운영 체제도 있었다. 이들은 동독의 VEB 로보트론(VEB Robotron) 등에서 개발되었다.
2. 5. 한국에서의 CP/M (1980년대)
1980년대에는 일본전기(NEC)의 PC-8000 시리즈/PC-8800 시리즈, 샤프의 MZ 시리즈/X1 시리즈 등 Z80 프로세서를 탑재한 8비트 퍼스널 컴퓨터에 이식된 CP/M 패키지가 하드웨어 제조업체 및 서드파티로부터 제공되었다. 특히 샤프가 직접 공급한 X1 시리즈용 CP/M은 완성도가 높았고, 가격도 저렴했다.[1]소니의 SMC 시리즈 중 SMC-777은 CP/M 1.4 기반의 SONY FILER라는 OS를 표준으로 탑재했다. SMC-70, SMC-70G는 별매였지만 사실상 CP/M 2.2가 표준 OS로 사용되었다.[1]
MSX에 제공된 MSX-DOS는 겉모습은 MS-DOS와 유사했지만, 내용은 CP/M과 유사하여 CP/M 소프트웨어가 대부분 동작했다.[1]
3. 하드웨어 모델
CP/M 시스템은 최소한 다음과 같은 하드웨어 부품으로 구성되어야 했다.[6][7][8][9]
- 아스키 문자 집합을 사용하는 컴퓨터 터미널. 아주 오래된 시스템은 텔레프린터를 사용했다.
- 인텔 8080 (이후에는 8085) 또는 자일로그 Z80 마이크로프로세서.
- 최소 16킬로바이트 RAM.
- 디스켓 첫 섹터를 부트스트래핑할 수 있는 환경.
- 최소 한 개의 플로피 디스크 드라이브.


NEC V20 및 V30 프로세서는 8080 에뮬레이션 모드를 지원하여 PC-DOS/MS-DOS 컴퓨터에서 8비트 CP/M을 실행할 수 있었다. 디지털 리서치에서 판매한 CP/M이 지원하는 유일한 하드웨어 시스템은 인텔 8080 개발 시스템이었다. CP/M 호환 시스템 제조업체는 설치된 메모리, 디스크 드라이브 및 콘솔 장치의 조합에 맞춰 운영 체제의 일부를 사용자 지정했다. Z80은 8080 코드와 호환되었으므로 CP/M은 자일로그 Z80 프로세서 기반 시스템에서도 실행되었다.
디지털 리서치는 이후 자일로그와 아메리칸 마이크로시스템즈와 파트너십을 맺고 디스크 드라이브 없이도 장착할 수 있는 저가 시스템을 목표로 한 ROM 기반 운영 체제인 퍼스널 CP/M을 출시했다.[6] 아메리칸 마이크로시스템즈는 운영 체제 및 BIOS를 위한 8KB의 패키지 내장 ROM과 64킬로비트 동적 RAM 장치와의 인터페이싱을 위한 포괄적인 로직을 특징으로 하는 Z80 호환 마이크로프로세서 S83을 발표했다.[8] S83의 단가는 1,000개 단위로 32USD로 책정되었다.[9]
대부분의 시스템에서 부트스트랩은 최소한의 부트로더가 ROM에 포함되어 있고, 최소한의 뱅크 스위칭 수단이나 버스에 코드를 주입하는 수단이 있었다.
CP/M은 7비트 ASCII 집합을 사용했다. 8비트 바이트로 가능한 나머지 128개 문자는 표준화되지 않았다. 예를 들어, 케이프로는 이 문자들을 그리스 문자에 사용했고, 오스본 시스템은 밑줄이 그어진 문자를 나타내는 데 8번째 비트를 사용했다. 워드스타는 8번째 비트를 단어 끝 표시기로 사용했다. 국제 CP/M 시스템은 대부분 7비트 경계를 넘어 추가하는 대신 특정 ASCII 문자를 지역화된 문자로 바꾸는 지역화된 문자 집합에 대한 ISO 646 표준을 사용했다.
IBM 시스템/34와 IBM 3740의 단일 밀도, 단면 형식은 CP/M의 표준 8인치 플로피 디스크 형식이다. 표준 5.25인치 CP/M 디스크 형식은 존재하지 않으며, Kaypro, 모로우 디자인스, 오스본 등은 각자 자체 형식을 사용했다. 1981년 ''InfoWorld''는 소프트웨어 제작사가 고려해야 할 인기 있는 형식이 약 24가지나 된다고 추정했다. 예를 들어, JRT 파스칼은 노스 스타, 오스본, 애플, 히스 하드 섹터와 소프트 섹터, 그리고 슈퍼브레인용 5.25인치 디스크 버전과 8인치 버전 하나를 제공했다.
특정 시스템의 특성과 설계자의 선택에 따라 다양한 형식이 사용되었다. CP/M은 디스크의 예약 영역과 디렉터리 영역의 크기 및 CP/M 프로그램에서 볼 수 있는 논리적 디스크 섹터와 디스크에 할당된 물리적 섹터 간의 매핑을 제어하는 옵션을 지원했다. 모든 시스템에 대해 이러한 매개변수를 사용자 지정하는 방법이 많았다.
1985년에 등장한 마지막 주목할 만한 CP/M 호환 기기 중 하나는 코모도어 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(Montezuma CP/M 2.2 실행)도 3.5인치 플로피 디스크를 사용한 CP/M 사용을 지원했다. 암스트래드 PCW는 처음에는 3인치 플로피 드라이브를 사용하여 CP/M을 실행했고, 나중에는 3.5인치 드라이브로 전환했다.
4. 운영 체제의 구성 요소
8비트 버전 CP/M 운영 체제는 메모리에 다음과 같은 세 가지 구성 요소를 가지고 있었다:
- BIOS (Basic Input/Output System)
- 기본 디스크 운영 시스템 (BDOS)
- 콘솔 명령 처리기 (CCP)
BIOS와 BDOS는 메모리 상주형이며, CCP는 응용 프로그램에 의해 덮어쓰이지 않는 한 메모리 상주형이었다. 응용 프로그램 실행이 완료되면 CCP는 자동으로 다시 로드되었다. 표준 유틸리티를 위한 여러 임시 명령도 제공되었는데, 이들은 디스크에 .COM 확장자를 가진 파일 형태로 상주했다.
BIOS는 CPU와 주 메모리 이외의 하드웨어 구성 요소를 직접 제어했으며, 여기에는 문자 입출력 및 디스크 섹터 읽기/쓰기와 같은 기능이 포함되었다. BDOS는 BIOS 위에 CP/M 파일 시스템과 일부 입출력 추상화(예: 리다이렉션)를 구현했다. CCP는 사용자 명령을 받아 직접 실행하거나(예: 디렉터리 표시 DIR, 파일 삭제 ERA), 지정된 이름의 실행 파일을 로드하고 시작했다(예: 파일 복사 PIP.COM, 파일 및 시스템 정보 표시 STAT.COM). CP/M용 타사 응용 프로그램도 기본적으로 임시 명령이었다.
BDOS, CCP 및 표준 임시 명령은 특정 CP/M 개정판의 모든 설치에서 동일했지만, BIOS 부분은 항상 특정 하드웨어에 맞게 조정되었다. CP/M의 복잡성 대부분은 BDOS, 그리고 부분적으로 CCP와 임시 명령에 집중되어 있었다. 즉, BIOS의 소수의 간단한 루틴을 특정 하드웨어 플랫폼으로 이식하면 전체 OS가 작동한다는 의미였다. 이는 새로운 기기를 지원하는 데 필요한 개발 시간을 크게 단축했으며, CP/M이 널리 사용된 주된 이유 중 하나였다. 오늘날 이러한 종류의 추상화는 대부분의 OS(하드웨어 추상화 계층)에서 일반적이지만, CP/M이 탄생했을 당시 OS는 일반적으로 단일 기계 플랫폼에서만 실행되도록 설계되었으며, 다계층 설계는 불필요한 것으로 간주되었다.
컴퓨터에 메모리를 추가하면 임시 프로그램이 추가 메모리 공간을 사용할 수 있도록 CP/M 시스템을 다시 설치해야 했다. 시스템 배포판에는 객체 코드를 다른 메모리 영역으로 재배치할 수 있는 유틸리티 프로그램(MOVCPM (CP/M)pl)이 제공되었다. 이 프로그램은 절대 점프 및 서브루틴 호출 명령어의 주소를 프로세서 메모리의 새 위치에 맞게 조정했다. 이렇게 패치된 새 버전은 새 디스크에 저장되어 응용 프로그램이 추가 메모리를 사용할 수 있게 했다. 설치된 운영 체제(BIOS, BDOS, CCP)는 시스템 부팅에 사용되는 모든 디스크의 시작 부분에 있는 예약된 영역에 저장되었다. 시작 시 부트로더(일반적으로 ROM 펌웨어 칩에 포함됨)는 드라이브 `A:`의 디스크에서 운영 체제를 로드했다.
현대적인 표준으로 볼 때 CP/M은 프로그램 크기에 대한 엄격한 제약으로 인해 원시적이었다. 버전 1.0에는 변경된 디스크를 감지하는 기능이 없었다. 사용자가 수동으로 디스크 디렉터리를 다시 읽지 않고 디스크를 변경하면 시스템은 이전 디스크의 디렉터리 정보를 사용하여 새 디스크에 쓰기 때문에 데이터가 손상되었다. 버전 1.1 이상에서는 디스크를 변경한 후 디렉터리를 읽기 전에 쓰려고 하면 치명적인 오류가 발생했다. 이는 디스크 덮어쓰기를 방지했지만 재부팅이 필요하고 데이터가 손실될 수 있었다.
4. 1. 기본 입출력 시스템 (BIOS)
기본 입출력 시스템(BIOS)은 운영 체제에 필요한 가장 낮은 수준의 기능을 제공한다.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 프로그램은 특정 기계의 직렬 포트에 액세스하는 데 필요한 모든 코드가 포함된 사용자 설치 오버레이를 갖는 것이 일반적이었다.
하드웨어 의존 부분은 BIOS에 집중되어 있으므로, BIOS만 변경하면 대부분의 하드웨어로 이식이 가능했다. BIOS의 기능은 시스템 초기화, CCP의 리부트(응용 프로그램 실행 종료와 쉘 재시작), 콘솔 등의 문자 장치의 리다이렉트가 포함된 입출력, 플로피 디스크/하드 디스크 등의 1섹터 단위의 입출력 등이다.
BIOS라는 용어는 일반화되어 보통 명사가 되었고, PC/AT 호환기의 보급 이후로는 ROM에 기록된 저수준 입출력 프로그램을 가리키는 경우가 많아졌지만, CP/M에서의 BIOS는 대부분의 경우 디스크에서 메모리로 로드되는 것이다.
4. 2. 기본 디스크 운영 체제 (BDOS)
8비트 버전에서 실행 중인 CP/M 운영 체제는 메모리에 다음 세 가지 구성 요소를 로드한다.- 기본 디스크 운영 시스템(BDOS)
BDOS는 BIOS 위에 CP/M 파일 시스템과 일부 입출력 추상화(예: 리다이렉션)를 구현한다. CCP는 사용자 명령을 받아 직접 실행(디렉터리를 표시하는 DIR이나 파일을 삭제하는 ERA와 같은 내부 명령)하거나 지정된 이름의 실행 파일을 로드하고 시작한다(파일을 복사하는 PIP.COM이나 다양한 파일 및 시스템 정보를 표시하는 STAT.COM과 같은 임시 명령). 응용 프로그램은 작업에 대한 기능 코드와 매개변수 또는 메모리 버퍼의 주소를 프로세서 레지스터에 로드하고 메모리의 고정된 주소를 호출한다. 주소는 시스템의 메모리 양과 무관하게 동일하기 때문에 응용 프로그램은 어떤 유형 또는 구성의 하드웨어에 대해서도 동일한 방식으로 실행된다.
CP/M의 복잡성 대부분은 BDOS에, 그리고 부분적으로 CCP와 임시 명령에 집중되어 있다.
참고로, BIOS라는 용어는 일반화되어 보통 명사가 되었고, PC/AT 호환기의 보급 이후로는 ROM에 기록된 저수준 입출력 프로그램을 가리키는 경우가 많아졌지만, CP/M에서의 BIOS는 대부분 디스크에서 메모리로 로드되는 것이다.
4. 3. 콘솔 명령어 처리기 (CCP)
콘솔 명령어 처리기(CCP, Console Command Processor)는 사용자가 키보드로 입력한 명령을 받아 처리하고 결과를 터미널에 표시하는 프로그램이다. CP/M 자체는 프린팅 터미널이나 비디오 터미널에서 모두 작동한다. 모든 CP/M 명령어는 명령줄에 입력해야 한다. 콘솔은 현재 기본 디스크 드라이브를 나타내는 `A>` 프롬프트를 표시하는데, 비디오 터미널에서는 깜빡이는 커서가 함께 표시된다. CCP는 사용자가 명령어를 입력하기를 기다린다.내장 명령어는 드라이브 문자 뒤에 콜론(`:`)을 붙여 기본 드라이브를 선택하는 기능을 제공한다. 예를 들어, `B:`를 입력하고 Enter 키를 누르면 기본 드라이브가 B로 변경되고, 프롬프트는 `B>`로 바뀐다.
CP/M의 명령줄 인터페이스는 디지털 이큅먼트 코퍼레이션의 운영 체제(예: PDP-11용 RT-11, PDP-8용 OS/8)를 모델로 만들어졌다. 명령어는 키워드와 공백 또는 특수 문자로 구분된 매개변수 목록으로 구성된다. 유닉스 셸 내장 명령어처럼, CCP는 내부 명령어를 직접 실행한다. 그렇지 않으면 현재 디스크 드라이브 및 사용자 영역에서 실행 파일을 찾아 로드하고, 명령줄 매개변수를 전달한다. 이러한 프로그램을 "일시적(transient)" 프로그램이라고 하며, 완료되면 BDOS가 CCP를 다시 로드하여 일시적 프로그램이 더 큰 메모리 공간을 사용할 수 있도록 한다.
명령어는 때때로 모호할 수 있다. 예를 들어, 파일을 복사하는 명령어는 `PIP`(Peripheral-Interchange-Program)인데, 이는 이전 DEC 유틸리티의 이름에서 따온 것이다. 프로그램에 제공되는 매개변수 형식은 표준화되지 않아, 옵션을 파일 이름과 구분하는 단일 옵션 문자가 없다. 다른 프로그램들은 서로 다른 문자를 사용할 수 있다.
CP/M 콘솔 명령어 처리기에는 다음과 같은 내장 명령어가 포함되어 있다:
- DIR
- ERA
- REN
- SAVE
- TYPE
- USER
CP/M의 일시적 명령어는 다음과 같다:
- ASM
- DDT
- DUMP
- ED
- LOAD
- 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

5. 파일 시스템
CP/M의 표준 8인치 플로피 디스크 형식은 IBM 시스템/34(IBM System/34)와 IBM 3740의 단일 밀도, 단면 형식을 따랐다. 5.25인치 CP/M 디스크는 표준 형식이 없었으며, Kaypro, 모로우 디자인스(George Morrow (computers)), 오스본 등 여러 회사들이 각자의 형식을 사용했다. 일부 형식은 다른 형식보다 더 인기가 있었는데, 대부분의 소프트웨어는 제록스 820 형식으로 제공되었고 Kaypro II와 같은 다른 컴퓨터도 이와 호환되었다. 그러나 ''InfoWorld''는 1981년 9월, 소프트웨어 제작자가 고려해야 할 인기 있는 형식이 약 24가지나 된다고 추산했다. 예를 들어, JRT 파스칼(JRT Pascal)은 노스 스타(North Star Computers), 오스본, 애플, 히스(Zenith Data Systems) 하드 섹터와 소프트 섹터, 슈퍼브레인(Intertec Superbrain)용 5.25인치 디스크 버전과 8인치 버전 하나를 제공했다. Ellis Computing은 두 가지 다른 TRS-80 CP/M 수정 버전을 포함한 16가지의 다른 5.25인치 형식과 히스 형식의 소프트웨어를 제공했다.
CP/M 기기 간의 이식성은 사용된 디스크 드라이브와 컨트롤러의 유형에 따라 달랐다. 8인치 및 5.25인치 형식 모두 다양한 플로피 유형이 존재했다. 디스크는 하드 또는 소프트 섹터, 단일 또는 이중 밀도, 단면 또는 양면, 35/40/77/80트랙 등 다양한 형식이 있었고, 섹터 레이아웃, 크기, 인터리브도 크게 다를 수 있었다. 변환 프로그램을 통해 다른 기기의 디스크 유형을 읽을 수 있었지만, 드라이브 유형과 컨트롤러도 영향을 미쳤다. 1982년까지 소프트 섹터, 단면, 40트랙 5.25인치 디스크는 애플 II, TRS-80, 오스본 1, Kaypro II, IBM PC와 같은 일반적인 소비자 수준 기기에서 사용되었기 때문에 CP/M 소프트웨어 배포에 가장 인기 있는 형식이 되었다. Kaypro II는 TRS-80, 오스본(Osborne 1), IBM PC, 엡손(Epson QX-10) 디스크를 읽을 수 있었다. 하지만 80트랙 또는 하드 섹터와 같은 다른 디스크 유형은 읽을 수 없었다. 양면 디스크(엡손 QX-10 등)의 첫 번째 절반만 읽을 수 있었는데, 이는 CP/M이 디스크 트랙에 순차적으로 접근했기 때문이다(트랙 0은 1면의 첫 번째 트랙, 트랙 79(40트랙 디스크)는 2면의 마지막 트랙). 애플 II 사용자는 애플의 GCR 형식이 아닌 다른 형식을 사용할 수 없어 애플 형식 디스크에 CP/M 소프트웨어를 얻거나 직렬 링크를 통해 전송해야 했다.
다양한 디스크 형식을 보유하거나 다중 형식 복제 장비에 투자해야 하는 분열된 CP/M 시장은 더 표준화된 IBM PC 디스크 형식과 비교하여 1981년 이후 CP/M이 빠르게 쇠퇴하는 요인이 되었다.
1985년에 등장한 마지막 주목할 만한 CP/M 호환 기기 중 하나는 코모도어 128(Commodore 128)이었다. 이 기기는 6502 파생 CPU를 사용하는 기본 모드 외에도 CP/M 지원을 위해 Z80을 탑재했다. CP/M을 사용하려면 소프트 섹터 40트랙 MFM(Modified frequency modulation) 형식 디스크를 읽을 수 있는 1571(Commodore 1571) 또는 1581(Commodore 1581) 디스크 드라이브가 필요했다.
소니 SMC-70는 3.5인치 플로피 드라이브를 처음 사용한 컴퓨터로 CP/M 2.2를 실행했다. 코모도어 128, 본드웰 2(Bondwell-2) 노트북, Micromint/Ciarcia SB-180, MSX, TRS-80 모델 4(Montezuma CP/M 2.2 실행)도 3.5인치 플로피 디스크를 사용한 CP/M을 지원했다. 애플드 엔지니어링(Applied Engineering)의 CP/AM도 3.5인치 디스크(및 애플 II 메모리 확장 카드와 호환되는 RAM 카드의 RAM 디스크)를 지원했다.[10] 암스트래드 PCW(Amstrad PCW)는 처음에는 3인치 플로피 드라이브를 사용하여 CP/M을 실행했고, 나중에는 3.5인치 드라이브로 전환했다.
6. 응용 프로그램
CP/M 환경에서는 다음과 같은 다양한 응용 프로그램들이 출시되었다.
| 응용 프로그램 | 설명 |
|---|---|
| 워드스타(WordStar) | 초기 널리 사용된 워드 프로세서 중 하나로, CP/M용으로 처음 개발되었다. 편리한 다이아몬드 커서 이동 키 바인딩은 이후 많은 스크린 에디터에 계승되었다. |
| dBase | 마이크로컴퓨터용 초기 인기 데이터베이스 프로그램으로, 역시 CP/M용으로 처음 작성되었다. |
| KAMAS (Knowledge and Mind Amplification System) 및 Out-Think | 초기 아웃라이너 프로그램으로, CP/M용으로 개발되었다가 나중에 MS-DOS용으로 다시 작성되었다. |
| 터보 파스칼(Turbo Pascal) | 델파이의 조상으로, MS-DOS 버전이 출시되기 전에 CP/M에서 먼저 등장했다. |
| 멀티플랜(Multiplan) | 마이크로소프트 엑셀의 조상으로, 역시 CP/M에서 처음 출시되었다. |
| 비지캘크(VisiCalc) | 최초의 스프레드시트 프로그램으로, CP/M용으로 제공되었다. |
| 슈퍼캘크(SuperCalc) | 소르심(Sorcim)에서 개발한 CP/M용 스프레드시트로, CP/M 시장에서 사실상 표준이 되었으며, MS-DOS에서도 경쟁력을 가졌다. |
| 오토캐드(AutoCAD) | 오토데스크(Autodesk)의 CAD 애플리케이션으로, CP/M에서 처음 출시되었다. |
프로그래밍 언어 측면에서는 베이직(BASIC), 포트란(FORTRAN), PL/I[14] 등 다양한 언어의 컴파일러와 인터프리터가 제공되었으며, 초기 마이크로소프트(Microsoft) 제품도 포함되었다.
CP/M 소프트웨어는 종종 다양한 컴퓨터에 맞게 조정하는 설치 프로그램과 함께 제공되었다. 복사 방지는 이 운영 체제에서는 효과가 없었다.
표준화된 그래픽 지원의 부족으로 비디오 게임은 제한적이었지만, ''텔렌가드(Telengard)'', ''고릴라스'', ''하무라비'', ''루나랜더''와 같은 캐릭터 및 텍스트 기반 게임과 ''조크(Zork)'' 시리즈, ''콜로설 케이브 어드벤처(Colossal Cave Adventure)''를 포함한 초기 인터랙티브 픽션이 이식되었다. 인포컴(Infocom)은 CP/M 형식으로 게임을 꾸준히 출시한 몇 안 되는 게시자 중 하나였다.
라이프보트 어소시에이츠(Lifeboat Associates)는 사용자가 작성한 "무료" 소프트웨어를 수집하고 배포했는데, XMODEM이 그중 하나였다.
7. ZCPR
ZCPR(Z80 명령 처리기 교체)는 1982년 2월 2일에 표준 디지털 리서치 콘솔 명령 처리기(CCP)를 대체하는 프로그램으로 출시되었으며, 초기에는 "CCP 그룹"이라고 불리는 컴퓨터 취미가들의 그룹에 의해 작성되었다. 이들은 프랭크 완초, 키스 피터슨(Simtel의 당시 관리자), 론 파울러, 찰리 스트롬, 밥 마티아스, 그리고 리처드 콘이었다. 리처드 콘은 이 그룹의 주도적인 인물이었다.
ZCPR1은 뉴저지 아마추어 컴퓨터 클럽의 SIG/M(Special Interest Group/Microcomputers)에서 배포한 디스크를 통해 출시되었다.
ZCPR2는 1983년 2월 14일에 출시되었으며, SIG/M에서 10개의 디스크 세트로 출시되었다. ZCPR2는 2.3으로 업그레이드되었으며, 8080 코드로도 출시되어 8080 및 8085 시스템에서도 ZCPR2를 사용할 수 있게 되었다.
ZCPR3는 1984년 7월 14일에 SIG/M에서 9개의 디스크 세트로 출시되었다. ZCPR3의 코드는 (기능이 축소된 상태로) 8080용으로 컴파일할 수도 있으며, Z80 마이크로프로세서가 없는 시스템에서도 실행될 수 있었다. 1987년 1월, 리처드 콘은 ZCPR 개발을 중단했고, Echelon은 제이 세이지(이미 개인적으로 향상된 ZCPR 3.1을 보유하고 있었음)에게 작업을 계속하도록 요청했다. 따라서 ZCPR 3.3이 개발되어 출시되었다. ZCPR 3.3은 더 이상 8080 계열 마이크로프로세서를 지원하지 않았으며, ZCPR 라인의 어떤 업그레이드보다 가장 많은 기능을 추가했다. ZCPR 3.3에는 상당히 확장된 기능을 갖춘 완벽한 유틸리티 세트도 포함되어 있었다.
버전 3 기준 ZCPR의 기능은 다음과 같다.
- 셸
- 별칭
- I/O 리다이렉션
- 흐름 제어
- 명명된 디렉터리
- 검색 경로
- 사용자 지정 메뉴
- 암호
- 온라인 도움말
ZCPR은 당시 CP/M 사용자 기반의 열렬한 지지를 받았지만, ZCPR만으로는 CP/M의 쇠퇴를 늦추기에는 충분하지 않았다.
8. MS-DOS와 CP/M의 관계
마이크로소프트 윈도우의 여러 동작들은 MS-DOS와의 하위 호환성 때문이며, 이는 다시 CP/M과의 어느 정도 하위 호환성을 시도한 결과이다. MS-DOS(그리고 초기 윈도우 버전)의 드라이브 문자와 8.3 파일 이름 규칙은 원래 CP/M에서 채택되었다. 윈도우에서 사용하는 와일드카드 일치 문자(? 와 *)는 CP/M의 것을 기반으로 하며, 출력을 프린터("PRN:")로 리다이렉션하는 데 사용되는 예약된 파일 이름과 시스템 콘솔("CON:")도 마찬가지이다. 드라이브 이름 A와 B는 CP/M 시스템에서 일반적으로 사용하는 두 개의 플로피 디스크 드라이브를 나타내는 데 사용되었으며, 하드 드라이브가 등장했을 때 C로 지정되었고, 이는 `C:\>` 명령 프롬프트로 MS-DOS에서도 계속 사용되었다. 일부 텍스트 파일의 파일 끝을 표시하는 제어 문자 ^Z도 CP/M에서 유래한 것이다. DOS의 여러 명령어는 CP/M 명령어를 모델로 했으며, DIR, REN/RENAME 또는 TYPE(그리고 DR-DOS의 ERA/ERASE)과 같이 이름까지 같은 것도 있다. .TXT 또는 .COM과 같은 파일 확장자는 많은 운영 체제에서 파일 유형을 식별하는 데 여전히 사용된다.
초기 버전의 MS-DOS는 기본적인 개념과 구조가 CP/M과 유사했다. 파일의 데이터 구조가 같았고, 디스크 드라이브에 드라이브 문자(A:나 B: 등)를 할당하는 방식도 같았다. 파일 시스템의 FAT는 CP/M과 비교했을 때 MS-DOS가 가장 다른 점이었다. 전반적으로 큰 차이가 없었기 때문에 WordStar나 dBase와 같은 CP/M의 인기 소프트웨어를 쉽게 이식할 수 있었다. 반면 CP/M에 있던 사용자별로 디스크의 영역을 분할하는 기능은 MS-DOS에는 채택되지 않았다. IBM PC는 일부를 제외하고 64KB 이상의 메모리를 사용할 수 있었던 반면, CP/M은 16KB의 메모리에서 작동하도록 설계되었기 때문에, MS-DOS는 더 많은 메모리를 사용하여 COMMAND.COM의 내장 명령어를 늘릴 수 있었고, 플로피 디스크에서 명령어를 읽을 필요가 줄어 처리 속도가 빨라졌으며, OS 플로피를 응용 프로그램이나 데이터 파일의 플로피로 바꿔도 조작할 수 있는 경우가 많아져 사용 편의성이 향상되었다.
초기 MS-DOS/PC DOS(시애틀 컴퓨터 프로덕츠의 86-DOS가 전신)는 CP/M을 모델로 설계되었기에 여러 면에서 유사점이 보인다.
- 파일 이름은 8자+3자이며, 확장자로 파일 종류를 구분한다. 실행 파일의 확장자는 .COM이다. 와일드카드 "*","?"가 있다. 와일드카드 자체는 유닉스 유래이지만, CP/M과 MS-DOS 모두 기능은 크게 단순화되어 있다. CP/M에서는 "파일 매칭"이라는 명칭을 사용한다.
- 드라이브 문자, 현재 드라이브, 장치 이름 등의 개념이 있다.
- 명령 프롬프트는 ">"이다 (예: A>).
- DIR, REN, TYPE 등의 내장 명령어가 있다.
- ^S로 출력 일시 정지, ^C로 애플리케이션 중단, ^P로 프린터 출력 전환을 수행한다. 이것 역시 유닉스 계열 쉘 환경 유래의 기능이다.
- CP/M의 CCP, BDOS, BIOS 3계층 구조는 MS-DOS에서는 COMMAND.COM, MSDOS.SYS, IO.SYS(PC DOS에서는 COMMAND.COM, IBMDOS.COM, IBMBIO.COM)가 된다.
- 시스템 콜 기능과 호출 방법, 애플리케이션의 메모리 배치, 명령줄 인수 전달 방식 등이 매우 유사하다. 일반적으로 MS-DOS에서 시스템 콜을 이용하는 경우에는 "INT 21H"의 소프트웨어 인터럽트를 이용한다는 큰 원칙이 있지만, "CALL 5H"로도 그대로 동작하도록 되어 있었다. 어셈블러 소스 파일을 MS-DOS로 전송한 후, 레지스터 이름을 치환하기만 해도 동작하는 프로그램도 있다.
- 파일을 삭제하면 디렉터리 엔트리의 선두 바이트가 E5H가 된다. 이 E5H라는 값은 당시 플로피 디스크를 물리적으로 포맷할 때 기록된 값에 유래한다. 즉, 물리적 포맷 후 논리적 포맷이 필요 없도록 설계되어 있다. 하지만 MS-DOS의 경우 FAT나 부트 섹터를 기록해야 하므로 별도의 논리적 포맷이 필수적이다.
한편, 다음과 같은 차이점(개선점)도 있다.
- CP/M에서 파일을 삭제하는 ERA(ERASE) 명령어에 해당하는 MS-DOS의 명령어는 DEL(DELETE)이다. 단, ERASE라는 별칭도 사용 가능하다.
- CP/M의 DIR 명령어는 MS-DOS의 DIR/W에 해당하는 출력 형식만 있다. 파일의 상세 정보를 알려면 STAT 명령어를 사용한다.
- CP/M의 REN 명령어는 "REN 새 파일 이름 = 이전 파일 이름"으로 작성하며, MS-DOS의 그것과 인수 순서가 반대이다.
- CP/M에서는 파일 복사에 트랜션트 명령어 PIP가 필요했지만, MS-DOS에서는 내장 명령어 COPY로 가능하다. 인수 순서도 REN 명령어와 마찬가지로 반대이다.
- CP/M에서는 플로피 디스크 교체와 관련된 문제가 있지만, MS-DOS에서는 그런 것이 없다.
- CP/M에서는 배치 파일(.SUB) 실행에 트랜션트 명령어 SUBMIT이 필요했지만, MS-DOS에서는 COMMAND.COM 자체가 배치 파일 실행 기능을 가지고 있다.
- CP/M에서는 CCP 등 OS 구성 요소는 디스크의 전용 영역에 저장되지만, MS-DOS에서는 COMMAND.COM은 일반 파일과 같은 방법으로 저장된다.
- CP/M의 디스크 I/O 기본 단위는 128바이트이며, 파일 크기도 128바이트 단위이다. 이는 표준 미디어가 8인치 단밀도 플로피 디스크(섹터 크기 128바이트)였기 때문이다. 한편, MS-DOS의 디스크 I/O는 128/256/512/1024바이트 등의 단위로 가능하며, 파일 크기도 바이트 단위로 지정할 수 있다.
- CP/M의 파일 시스템에서는 파일의 배치 정보가 디렉터리와 통합되어 있어 큰 파일이 있으면 디렉터리 엔트리를 여러 개 소비한다는 문제가 있었지만, MS-DOS에서는 FAT로 독립되어 있다.
2016년에, 자이드만 컨설팅(Zaidman Consulting)의 밥 자이드만(Bob Zaidman)은 디지털 리서치(Digital Research)가 개발한 CP/M과 팀 패터슨(Tim Paterson)이 개발하고 오랫동안 전자의 코드를 기반으로 한 것으로 의심되었던 DOS의 소스 코드를 비교하여, 초판 DOS 소스 코드가 CP/M 소스 코드를 기반으로 했는지 조사했다.
DOS와 CP/M의 명령어를 비교해 보면 일치하는 것은 극히 적다. DOS와 OS/8의 명령어 사이에는 DOS와 CP/M 사이보다 공통 명령어가 더 많다. 해당 명령어는 모두 동작을 직접 나타내는 영단어이기 때문이다.
하지만 두 운영 체제의 시스템 콜을 분석해 보면, DOS에 있는 시스템 콜은 명백히 CP/M의 시스템 콜을 모방한 것임을 알 수 있다. 같은 기능을 나타내는 같은 숫자가 여러 개 있다는 점에서 팀 패터슨이 DOS를 개발할 때 CP/M 설명서를 참고했음은 명확하다.
자이드만의 결론은 DOS가 CP/M의 코드를 전혀 기반으로 하지 않았다는 것이지만, 시스템 콜의 많은 부분이 모방되었다.[19]
9. 유산
마이크로소프트 윈도우의 여러 동작들은 MS-DOS와의 하위 호환성 때문이며, 이는 다시 CP/M과의 어느 정도 하위 호환성을 시도한 결과이다. MS-DOS(그리고 초기 윈도우 버전)의 드라이브 문자와 8.3 파일 이름 규칙은 원래 CP/M에서 채택되었다. 윈도우에서 사용하는 와일드카드 일치 문자(? 와 *)는 CP/M의 것을 기반으로 하며, 출력을 프린터("PRN:")로 리다이렉션하는 데 사용되는 예약된 파일 이름과 시스템 콘솔("CON:")도 마찬가지이다. 드라이브 이름 A와 B는 CP/M 시스템에서 일반적으로 사용하는 두 개의 플로피 디스크 드라이브를 나타내는 데 사용되었으며, 하드 드라이브가 등장했을 때 C로 지정되었고, 이는 `C:\> ` 명령 프롬프트로 MS-DOS에서도 계속 사용되었다. 일부 텍스트 파일의 파일 끝을 표시하는 제어 문자 ^Z도 CP/M에서 유래한 것이다. DOS의 여러 명령어는 CP/M 명령어를 모델로 했으며, DIR, REN/RENAME 또는 TYPE(그리고 DR-DOS의 ERA/ERASE)과 같이 이름까지 같은 것도 있다. .TXT 또는 .COM과 같은 파일 확장자는 많은 운영 체제에서 파일 유형을 식별하는 데 여전히 사용된다.
1997년과 1998년, 칼데라는 오픈 소스 라이선스에 따라 일부 CP/M 2.2 바이너리와 소스 코드를 공개했으며, 1997년부터 Tim Olmstead의 "The Unofficial CP/M Web site"를 통해 CP/M 및 MP/M 계열과 관련된 추가 수집된 디지털 리서치 파일의 재배포 및 수정도 허용했다. 2001년 9월 12일 Olmstead가 사망한 후, 그 당시 디지털 리서치 자산의 소유자가 된 리네오가 2001년 10월 19일에 배포 라이선스를 갱신하고 확장했다. 2014년 10월, CP/M 최초 발표 40주년을 기념하여 컴퓨터 역사 박물관은 초기 소스 코드 버전을 공개했다.
현재, 많은 활동적인 빈티지, 취미 및 레트로 컴퓨터 관련 개인 및 그룹, 그리고 일부 소규모 상업 기업들이 CP/M(주로 2.2)을 호스트 운영 체제로 사용하는 컴퓨터 플랫폼을 개발하고 지원하고 있다. 디지털 리서치는 1991년 노벨에 인수되었고, 이후 칼데라(2002년 SCO로 개명)에 매각되었다. 현재 CP/M 자산은 칼데라의 자회사인 리네오가 보유하고 있으며, 대부분은 회사의 허가를 받은 "http://www.cpm.z80.de/ 비공식 CP/M 사이트"에서 다운로드할 수 있다.
현재, 일본 국내에서 CP/M의 상표는 기술소년출판(技術少年出版)이 소유한다.[20]
참조
[1]
웹사이트
CPM 50th Anniversary
https://www.theregis[...]
[2]
서적
Fire in the Valley: The Making of the Personal Computer
https://archive.org/[...]
McGraw-Hill
2000
[3]
학술지
Microsoft's Z80 SoftCard
https://books.google[...]
Popular Computing
1981-03-03
[4]
서적
CP/M - the Software Bus: A Programmer's Companion
https://archive.org/[...]
Sigma Press
1983-10-26
[5]
웹사이트
CP/M and Digital Research Inc. (DRI) History
https://retrotechnol[...]
2014-07-30
[6]
잡지
Plug-in CP/M coming
https://archive.org/[...]
1984-01-14
[7]
잡지
Sharp MZ-800
https://archive.org/[...]
1985-02
[8]
잡지
Cheaper, simpler CP/M
https://worldradiohi[...]
1984-06
[9]
잡지
AMI releases specs on CP/M microchip
https://archive.org/[...]
1984-06
[10]
서적
CP/AM 5.1 User Manual
https://archive.org/[...]
Applied Engineering
2020-05-22
[11]
문서
伏見 (1982:11)
[12]
문서
大方の概念について言及。
1982
[13]
문서
NEC PC-8801シリーズやPC-9801シリーズのリファレンスマニュアル等
[14]
웹사이트
PL/I Language Programmer's Guide
http://bitsavers.inf[...]
디지털리서치
2019-12-22
[15]
웹사이트
Old-computers.com: The Museum
http://www.old-compu[...]
2017-10-06
[16]
웹사이트
The complete history of the IBM PC, part two: The DOS empire strikes
https://arstechnica.[...]
2017-07-31
[17]
웹사이트
ZCPR - oldcomputers.ddns.org
http://oldcomputers-[...]
2019-12-22
[18]
웹사이트
The Wonderful World of ZCPR3
http://susowa.homeft[...]
1987-11-30
[19]
학술지
Source Code Comparison of DOS and CP/M
https://www.scirp.or[...]
Scientific Research Publishing
2016-10-18
[20]
웹사이트
株式会社技術少年出版 会社概要
http://www.gijyutu-s[...]
[21]
웹인용
The History of CP/M, THE EVOLUTION OF AN INDUSTRY: ONE PERSON'S VIEWPOINT
http://www.retrotech[...]
Dr. Dobb's Journal of Computer Calisthenics & Orthodontia
1980-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
