MSX-DOS

**MSX-DOS**는 마이크로소프트의 일본 자회사가 8비트 가정용 컴퓨터 표준인 MSX를 위해 개발한 단종된 디스크 운영체제이며, MS-DOS v1.25와 CP/M-80 v2.2의 교차점이다.

## MSX-DOS
MSX-DOS와 3.5인치 플로피 디스크 지원이 포함된 확장 베이직은 MSX 가정용 컴퓨터 표준을 위한 소프트웨어 및 하드웨어 표준으로 마이크로소프트와 아스키 (기업)가 동시에 개발했다. 이는 베이직에 디스크 기능을 추가하고 시스템에 메모리 롬 카트리지보다 저렴한 소프트웨어 매체를 제공하며, 콤팩트 카세트보다 강력한 저장 시스템을 제공하기 위함이었다. 확장되지 않은 MSX 컴퓨터의 표준 바이오스는 내장된 디스크 지원 기능이 없었지만, 디스크 확장을 위한 훅을 제공했기 때문에 추가 플로피 디스크 확장 시스템에는 BDOS라고 불리는 자체 바이오스 확장 롬(디스크 컨트롤러에 내장)이 함께 제공되었다.

이 바이오스는 MSX 베이직에 플로피 디스크 지원 명령을 추가했을 뿐만 아니라 실제 디스크 운영 체제를 부팅할 수 있는 부팅 시스템도 추가했다.

MSX-DOS는 CP/M-80과 이진 호환되었으며, MSX 컴퓨터가 당시에는 매우 저렴한 비용으로 방대한 CP/M 소프트웨어 라이브러리에 쉽게 접근할 수 있게 했다.

### 부팅 처리
MSX-DOS가 로드되면 시스템은 MSX-DOS 디스크에서 COMMAND.COM 파일을 찾아 메모리에 로드한다. 이 경우 BDOS는 베이직 롬을 우회하여 MSX 컴퓨터 내의 Z80 마이크로프로세서의 전체 64KB 주소 공간이 DOS 또는 다른 부팅 가능한 디스크(예: 디스크 기반 게임)에 사용될 수 있도록 했다. 동시에 원래의 바이오스 롬은 "메모리 뱅크 전환" 메커니즘을 통해 여전히 접근할 수 있었으므로 DOS 기반 소프트웨어는 여전히 바이오스 호출을 사용하여 하드웨어 및 주 롬이 제공하는 다른 소프트웨어 메커니즘을 제어할 수 있었다. 또한 BDOS 롬 덕분에 확장된 베이직 명령을 사용하여 명령어 해석기 없이도 기본 파일 접근 기능을 사용할 수 있었다.

초기 시작 시, COMMAND.COM은 선택적 배치 파일인 AUTOEXEC.BAT을 찾고, 존재하면 거기에 지정된 명령을 실행한다. MSX-DOS가 호출되지 않고 디스크 베이직이 시작되면, 존재하는 경우 "AUTOEXEC.BAS"라는 베이직 프로그램이 대신 실행된다.

### MSX-DOS와 MS-DOS의 유사점 및 차이점
* MSX-DOS1은 MS-DOS 1.25와 마찬가지로 부트 섹터의 BIOS 파라미터 블록(BPB)에서가 아니라 FAT의 첫 번째 바이트에서 FAT ID 값을 사용하여 FAT12 파일 시스템의 파일 시스템 파라미터 프로필을 선택했다.
* MSX에는 두 개 이상의 카트리지 슬롯에 두 개 이상의 플로피 디스크 컨트롤러가 있을 수 있었고, MSX-DOS는 여러 다른 플로피 디스크 드라이브에서 부팅할 수 있었다. 이는 5¼인치 플로피 디스크 드라이브와 3½인치 디스크 드라이브를 모두 가질 수 있었고, 사용자는 부팅 가능한 플로피가 들어 있는 드라이브에 따라 둘 중 하나에서 부팅할 수 있었다는 의미이다.
* MS-DOS 1.25와 마찬가지로 MSX-DOS의 첫 번째 버전에는 서브디렉토리가 없었다.

### 명령어
다음은 MSX-DOS에서 지원하는 내장 명령어 목록이다.

* 베이직
* COPY
* DATE
* DEL
* DELETE
* DIR
* ERASE
* FORMAT
* MODE
* PAUSE
* REM
* REN
* RENAME
* TIME
* TYPE
* VERIFY

## 개발 역사

1983년 8월 10일, 폴 앨런은 86-도스와 MS-DOS 1.x의 원작자인 팀 패터슨에게 전화하여 MSX 표준을 위한 "Z80 버전 MS-DOS"를 요청했다. 당시 패터슨은 자신의 스타트업 팔콘 시스템즈의 첫 제품을 출시하느라 바빴기 때문에 다른 개발자 몇 명을 추천했지만, 앨런은 이미 그들에게 물어봤다고 말했다. 앨런은 서둘러 일을 마쳐야 했고 다른 누구도 그의 일정을 맞출 수 없었다. 앨런과 패터슨은 마침내 합의했고, 8월 17일에 "Z80 MS-DOS 1.25"를 10만 달러에 개발하고, 패터슨의 회사가 MS-DOS 2.0, 2.5, 3.0을 하드웨어 제품과 함께 로열티 없이 배포할 권리를 부여하는 계약을 체결했다.

패터슨에게 이것은 주로 번역 과정이었다. 그는 이미 Z80에서 8086 어셈블리어 번역 프로그램(TRANS.COM)을 작성했다. 이 경우 그는 수동으로 반대 방향으로 번역하고 있었다. MS-DOS 1.x는 CP/M의 API를 모델로 했고 소스 수준에서 8086으로 번역된 CP/M 애플리케이션을 실행할 수 있었기 때문에, MSX-DOS는 CP/M 프로그램을 직접 실행할 수 있을 것이다.

이 프로젝트를 위해 패터슨은 MS-DOS에서 실행되는 Z80 에뮬레이터도 작성했으며, 이를 통해 그는 전체 개발 프로젝트를 MS-DOS에서 수행할 수 있었다. 그가 작성하고 있던 MSX-DOS에는 I/O 시스템 레이어가 있었는데, 이 레이어는 에뮬레이션을 실행하고 있던 MS-DOS 머신의 I/O 시스템 레이어와 직접 인터페이스했다. 이를 통해 MSX-DOS는 디스크 형식에 직접 접근하고 제어할 수 있었다. 핵심 코드의 대부분은 파일 관리였으므로 이를 테스트하는 것이 필요했다.

1983년 10월 2일까지 그는 MSX-DOS에서 마이크로소프트 베이직과 마이크로소프트 M80 매크로 어셈블러를 실행했다. 며칠 후 COMMAND.COM 코딩을 마쳤다. 그는 몇 가지 버그를 해결하고 10월 11일 폴 앨런에게 MSX-DOS를 시연했다. 베타 테스트 버전은 1983년 10월 26일에 공식적으로 제공되었다. 여기에는 패터슨의 이름을 인쇄하는 이스터 에그가 포함되어 있었다. 이름은 FAT 코드로 인코딩되어 파일 검색만으로는 찾을 수 없었다. 베타 버전이 전달된 후 코드는 일본의 아스키로 보내졌다. 그들은 MSX 머신용 I/O 시스템을 만들었다. 그 코드는 제이 스즈키가 개발했다. 그는 이스터 에그를 알아냈고 자신의 이름을 추가했다.

아스키는 실제 MSX 머신에서 MSX-DOS를 작동시키는 데 문제가 있었다. 그들은 패터슨에게 실제 MSX 머신을 제공하지 않았고, 대신 1984년 1월 28일 그를 도쿄로 비행시켜 도움을 주었다. 아스키가 패터슨에게 알리지 않고 코드를 수정하고 있었고, 그래서 같은 코드베이스로 작업하고 있지 않았다는 사실이 밝혀졌다. 패터슨은 도쿄에서 사흘 동안 문제를 해결하고 시애틀로 돌아왔다.

마이크로소프트의 크리스 라슨과 제이 스즈키는 1984년 2월 말에서 3월 초 시애틀에서 패터슨을 방문했다. 그들은 디버깅을 위한 인서킷 에뮬레이터(ICE)가 장착된 MSX 머신을 가져왔다. 그들은 모든 것을 작동시켰고 1984년 4월 23일, 마이크로소프트는 MSX-DOS의 납품을 수락하고 패터슨에게 최종 대금을 지급했다.

MSX-DOS가 작성될 당시, 8비트 인텔 8080 호환 마이크로프로세서용으로 인기 있는 디스크 운영 체제는 디지털 리서치의 CP/M-80 시스템 하나뿐이었다. 또한 Z80이 확장된 8080 아키텍처를 사용했기 때문에 Z80 시스템에서도 자주 사용되었다. 마이크로소프트 자체 디스크 운영 체제도 CP/M에서 영감을 받았다.

(약간 수정된) CP/M 소프트웨어를 실행할 수 있도록 마이크로소프트는 파일 열기 등 특정 디스크 운영 작업을 수행하는 데 CP/M 시스템이 사용했던 루틴인 CP/M BIOS의 주요 부분과 유사한 기능을 구현하기로 결정했다. CP/M의 CCP를 기반으로 하는 대신(이는 사용자 불편함으로 알려져 있었음), MS-DOS의 대응 버전을 기반으로 한 명령줄 해석기(COMMAND.COM)가 사용되었다. 마이크로소프트는 또한 CP/M의 파일링 방식 대신 자체 FAT12 파일 시스템을 선택했다. 이를 통해 MSX-DOS 플로피를 MS-DOS 머신에서 사용할 수 있었고, 단 하나의 포맷 및 파일링 시스템만 사용될 수 있었다. CP/M 디스크는 종종 기기 간에 호환되지 않는 디스크 포맷 방식을 사용하는 경우가 많았기 때문에 이것은 중요한 결정이었다.

마이크로소프트는 또한 MSX-DOS에 MS-DOS와 호환되지만 CP/M과는 호환되지 않는 표준 디스크 명령어 세트를 추가했다. 마지막으로 그들은 파이프라인 시스템을 MS-DOS에서 MSX-DOS로 변환했다. 그 결과 DOS는 CP/M보다 훨씬 사용자 친화적인 시스템이었지만, 워드스타, 터보 파스칼 및 "M80" 어셈블러와 "L80" 링커와 같은 주요 CP/M 소프트웨어 패키지와 (원칙적으로) 호환되었다.

## 개선된 버전
* MSX-DOS2: 1988년에 출시되었으며, 서브디렉토리, 최대 16MB의 메모리 관리, 환경 변수 등 많은 개선 사항을 특징으로 했다. 후기 버전의 MSX 컴퓨터(MSX2)는 파일 시간 스탬핑에 MSX-DOS가 사용할 수 있는 내부 실시간 시계를 추가했다.
* Nextor: Konamiman이 원본 MSX-DOS2 소스 코드를 기반으로 개발한 MSX-DOS2의 향상된 버전이다.

### 명령어
다음 명령어는 MSX-DOS 버전 2에서 지원된다.

* ASSIGN
* ATDIR
* ATTRIB
* 베이직
* BUFFERS
* CD
* CHDIR
* CHKDSK
* CLS
* COMMAND2
* CONCAT
* COPY
* DATE
* DEL
* DIR
* diskcopy
* ECHO
* ERA
* ERASE
* EXIT
* FIXDISK
* FORMAT
* HELP
* MD
* MKDIR
* MODE
* MOVE
* MVDIR
* PATH
* PAUSE
* RAMDISK
* RD
* REM
* REN
* RENAME
* RMDIR
* RNDIR
* SET
* TIME
* TYPE
* UNDEL
* VER
* VERIFY
* VOL
* XCOPY
* XDIR

또한 아스키는 다음 MSX-DOS2 도구를 제공했다.

* ADDAUX
* BEEP
* BIO
* BODY
* BSAVE
* CAL
* CALC
* DUMP
* EXPAND
* Grep
* HEAD
* KEY
* LIST
* LS
* MENU
* MORE
* Patch
* SLEEP
* SORT
* SPEED
* TAIL
* TR
* Uniq
* VIEW
* WC

## 같이 보기
* 심보스
* 86-도스
* MIDAS
* DOS 플러스

## 각주

분류:CP/M
분류:디스크 운영체제
분류:1984년 소프트웨어