도스박스

도스박스(DOSBox)는 도스 운영 체제를 구동하는 IBM PC 호환기종을 가상으로 구현하는 에뮬레이터 프로그램이다. 수많은 IBM PC 호환 그래픽 및 사운드 카드들 또한 가상으로 구현된다. 즉, 현대의 컴퓨터들이 구식 환경의 지원을 중단하였음에도 불구하고 PC 게임을 포함한 오리지널 도스 프로그램들이 올바르게 동작할 수 있는 환경을 제공한다는 의미이다.
역사.
도스박스는 주로 C++로 개발된 자유 소프트웨어이며 GNU 일반 공중 사용 허가서 라이선스로 배포된다. 도스박스는 2002년 소스포지에 출시된 이후로 34,000,000건 이상 다운로드되었다.
단순히 도스 이외에 수많은 유용한 기능들이 도스박스에 추가되었다. 추가된 기능들에는 가상 하드 드라이브, P2P 네트워크, 화면 캡처, 가상 구현된 화면의 스크린캐스트가 포함된다.
2010년의 0.74에서부터 2019년의 최신 버전 0.74-3에 이르기까지 9년 이상의 세월이 흘렀으며, 버전 0.75의 경우 지금 출시되는 것이 좋으나 일부 버그로 인해 예상보다 오래 소요되는 바람에 보안 릴리스(security release)격으로 0.74-3이 출시되었다. 그러나 이 수년의 기간 동안 개발은 SVN 버전을 통해 계속되었다. 도스박스 SVN 다음, 도스박스 SVN-lfn 등의 포크(fork)들은 추가 기능을 제공하는데, 여기에는 상태 저장 기능, 긴 파일 이름(LFN)이 포함되며 도스박스-X의 경우 PC-9800 시리즈와 같은 일본 시스템 환경의 에뮬레이션을 추가하고 여러 데모씬 프로덕션과의 호환성을 제고시켰다.
수많은 빈티지 도스 게임들이 도스박스 안에 캡슐화되어 현대의 운영 체제에서 실행될 수 있도록 상용판으로 재출시되었다.
기능.
도스박스는 명령 줄 매개변수의 설정을 통해서나 플레인 텍스트 구성 파일을 편집함으로써 구성되는 명령 줄 인터페이스 프로그램이다. 쉬운 사용을 위해 여러 그래픽 프론트엔드가 사용자 커뮤니티에 의해 개발되고 있다.
도스박스의 유명한 기능으로는 스크린샷을 캡처하고 게임플레이 동영상을 녹화하는 기능이다. 동영상은 비손실 코덱인 Zip Motion Block Video 코덱을 사용하여 압축된다. 비압축 상태에서 동영상은 원래의 프로그램의 복제본과 거의 동일한 품질을 가진다. 동영상 녹화 기능은 버전 0.65에 추가되었다. 초기 버전의 경우 커스텀 수정이나 서드파티 화면 녹화 프로그램에 의존하여 동영상을 녹화해야 했으나 품질과 에뮬레이터 성능이 전반적으로 매우 저조하였다.
도스박스 프로젝트의 정책은 구현에 상당한 노력이 들 경우 도스용 게임에 쓰이지 않는 기능을 추가하지 않는 것인데 그 이유는 버그나 포팅 문제의 근원이 되거나 성능에 영향을 줄 가능성이 있기 때문이다. 도스박스 공식 버전에서 에뮬레이트하지 않는 도스 시절 PC의 가장 일반적인 하드웨어 기능은 프린터 연결에 사용되는 병렬 포트이다. 그 대안으로 현대의 운영 체제의 프린트 스크린 기능을 사용하여 도스박스의 출력을 캡처할 수 있다. 비슷한 이유로, 긴 파일 이름, Pause 키 지원이 공식 버전에 추가되지 않았으나 일부 비공식 강화 SVN 빌드들에서는 지원된다.
하드웨어 에뮬레이션.
도스박스는 완전한 CPU 에뮬레이터이며 CPU가 리얼 모드나 보호 모드 상태에서 실행이 가능한 도스용 프로그램들을 구동할 수 있다. 윈도우 및 OS/2용의 DOSEMU, VDM 등 다른 유사 프로그램들은 호환성 계층을 사용하며 386 계열 프로세서의 가상화 기능에 의존한다. 도스박스가 인터프리트 방식을 통해 CPU를 가상으로 구현할 수 있기 때문에 가상 구현되는 환경은 완전히 호스트 CPU와 독립적이다. 그러나 인텔 80386 명령어 집합을 제공하는 시스템의 경우 도스박스는 동적 명령어 변환을 사용하여 인터프리트 방식의 CPU 에뮬레이션보다 수배 더 빠르게 실행을 가속시킬 수 있다. 도스박스에서 에뮬레이트되는 CPU 속도는 도스용 프로그램들이 처음 작성된 당시의 시스템 속도를 맞추기 위해 사용자가 수동으로 조정이 가능하다.
도스박스는 다양한 그래픽스, 사운드 하드웨어를 가상으로 구현할 수 있다. 그래픽스 에뮬레이션에는 텍스트 모드, 허큘레스, CGA(일부 컴포지트 모드, 160x100x16 트윅 모드 포함), 탠디, EGA, VGA(모드 X 및 기타 트윅), VESA, 완전한 S3 트리오 64 에뮬레이션이 포함된다. 가상 구현이 가능한 사운드 하드웨어로는 PC 스피커(물리적인 내부 PC 스피커가 아닌 호스트의 표준 소리 출력으로 재생됨), 애드립, 그레비스 울트라사운드(GUS), 탠디, 크리에이티브 뮤직 시스템/게임블라스터, 사운드 블라스터 1.x/2.0/프로/16, 디즈니 사운드 소스가 포함된다. 에뮬레이트되는 MPU-401 인터페이스를 경유하는 MIDI 출력을 이용할 수 있는데, 이는 호스트가 물리적인 미디 출력 단자를 갖추고 있거나 적절한 소프트웨어 미디 신시사이저가 있을 경우 가능하다.(MT-32/CM-32L 에뮬레이션이 비공식 강화 빌드에 포함되어 있으나 공식 소스 코드 저장소에는 저작권이 있는 롬 이미지가 필요하다는 이유로 포함되어 있지 않다) 스토리지는 에뮬레이터에서 드라이브 문자를 호스트의 디렉터리, 이미지 파일, 플로피 디스크 드라이브, CD-ROM 드라이브에 매핑(또는 에뮬레이터 내에서 구성 파일을 통해서나 명령어를 통해서)하는 방식으로 관리된다. 영구적으로 매핑된 Z: 드라이브는 도스박스 명령들과 시작 스크립트가 저장된다.
2010년 10월 기준으로 부두 카드의 에뮬레이션이 개발 중이다. 글라이드 API를 사용하는 게임뿐 아니라 Win9x 게스트의 Direct3D 지원 제공까지 가능하다.
다른 수많은 에뮬레이터들과 달리 도스박스는 P2P 네트워크나 인터넷/인트라넷 네트워크를 지원한다. 여기에는 TCP/IP를 경유한 모뎀 시뮬레이션이 포함되어 있어서 도스용 모뎀 게임들이 현대의 LAN이나 인터넷을 경유하여 플레이하거나, IPX 네트워크 터널링을 사용하여 고전 IPX 도스용 다인용 게임들을 모뎀 LAN 또는 인터넷을 경유하여 사용자 데이터그램 프로토콜(UDP)로 플레이할 수 있다. Win32 및 리눅스 특화 빌드들은 직접 직렬 포트 접근을 지원한다. 일부 서드파티 패치를 통해 도스박스가 NE2000 계열 네트워크 인터페이스 컨트롤러를 호스트 컴퓨터 자체 네트워크 카드로 패스스루(passthrough) 처리할 수 있게 할 수 있으며 이로써 넷스케이프 내비게이터와 같은 프로그램들을 사용하여 완전한 인터넷 연결 및 웹 브라우징이 가능해진다.
도스박스는 시리얼 포트의 타이밍 호환 구현이 가능하므로 구형 하드웨어와 소프트웨어가 직렬 포트 타이밍에 의존적으로 동작할 수 있게 하지만 호스트 운영 체제가 지원하는 일부 USB 장치들은 에뮬레이터 사용 시 구형 시리얼 포트 장치들을 대체하는 역할을 할 수 있다.
운영 체제 에뮬레이션.
도스박스는 도스와 바이오스 인터럽트의 에뮬레이션을 제공하며 내장 도스와 같은 셸을 포함하고 있다. 이를 통해 실제 도스용 운영 체제의 라이선스를 소유하지 않고 사용이 가능하다는 의미이다. 인스톨러 배치 파일에 흔히 사용되는 대부분의 명령들이 지원되지만 후기 도스 버전(예: 윈도우 98 이후 도스 셸)의 고급 명령들 중 다수는 지원되지 않는다. 내부 셸 외에도 운영 체제 없이 시작하도록 고안된 게임과 소프트웨어의 이미지 파일의 구동 또한 지원한다. 도스 에뮬레이션을 통해 도스박스는 호스트 운영 체제의 폴더를 가상 드라이브로 마운트할 수 있다.
실제 도스 환경(예: MS-DOS, PC DOS, DR-DOS, 프리도스) 및 기타 운영 체제들로 디스크 이미지를 기동할 수도 있다. 도스박스가 이러한 운용 방식에 최적화된 것은 아니기 때문에 실제 운영 체제를 도스박스에 기동하게 되면 디렉터리 기반 가상 하드 드라이브를 사용하지 못하고 실제 운영 체제가 하드웨어에 접근하는 방식과 직접 호환되지 않는 일부 기타 환경을 사용하지 못한다. 하드웨어 레지스터에 직접 접근, 경유하지 않고 도스를 통해, 바이오스를 통해, 소프트웨어 드라이버를 통해 도스용 게임이 거의 무조건 접근하는 하드웨어류(예: 디스크 드라이브 컨트롤러와 컴퓨터 마우스)의 경우 도스박스는 일반적으로 하드웨어 수준의 에뮬레이션을 제공하지 않는다. 즉, 복사 보호 물리 미디어나 비표준 포맷의 플로피 디스크는 일반적으로 도스박스에서 사용이 불가능하다는 이야기이다.
명령어.
다음의 명령어가 도스박스에 의해 지원된다:
도스박스에는 MOVE 명령이 존재하지 않는다. REN 명령을 사용하여 파일을 이동할 수 있다.
포팅.
도스박스는 SDL 라이브러리를 사용하며 수많은 운영 체제들로 이식되었다. 마이크로소프트 엑스박스의 포팅(이른바 DosXbox)이 2004년 출시되었다. HX 도스 확장자를 사용하여 도스에서도 구동이 가능하다. 소스 코드는 x86이 아닌 수많은 PC 컴퓨터 플랫폼에 호환성을 제공하도록 포크(fork)되고 있는데, 여기에는 팜 OS, 플레이스테이션 포터블, 안드로이드, iOS, 심비안 OS, 마에모, 블랙베리 플레이북, Wii(홈브루 브라우저가 설치된 홈브루 채널 필요), 아미가, GP2X가 포함되며 파워PC, SPARC, MIPS, ARM 등 다양한 컴퓨터 아키텍처에서 실행된다. 도스박스는 수많은 리눅스 배포판의 소프트웨어 저장소에 포함되는데 여기에는 페도라, 데비안, 우분투 등이 있다. NaClBox라는 이름의 구글 네이티브 클라이언트로의 포팅, jDosbox라는 이름의 자바 애플릿으로의 포팅, jDosBox를 GWT로 포팅한(캔버스 요소 사용) 버전(jsDOSBox)이 포함된다.
현대의 브라우저에서 구동이 가능한 Em-DOSBox라는 이름의 도스박스 포팅판이 존재한다. Emscripten을 사용하여 C/C++ 소스 코드를 자바스크립트나 웹어셈블리로 컴파일한 것으로, SDL 2의 Emscripten 포팅을 통해 브라우저에서 그래픽스, 입력, 소리가 동작한다.
도스박스와 와인 호환성 계층.
1.3.12 버전을 기점으로, 와인 호환성 계층 개발자들은 도스박스를 와인으로 통합하시켜 와인 가상 도스 머신(winevdm)에서 네이티브로 지원하지 않는 도스용 프로그램의 실행을 용이케 하는 과정을 시작하였다.
이용.
상업적인 이용.
이드 소프트웨어는 도스박스를 사용하여 《울펜슈타인 3D》, 《커맨더 킨》 등의 빈티지 게임들을 밸브의 스팀에 재출시하였다. 이 과정에서 도스박스의 라이선스 GNU GPL을 위반하였다는 보고를 받았다. 이는 이드 소프트웨어가 간과한 것으로 보고되어 빠르게 조치되었다. 액티비전 블리자드 또한 시에라 엔터테인먼트의 도스용 게임들을 재출시하기 위해 도스박스를 사용했다. 루카스아츠는 현대의 기기에서 《》를 스팀에 재출시하기 위해 도스박스를 사용했다. 2K 제작자 제이슨 버그먼(Jason Bergman)은 자사가 《X-Com》 시리즈의 특정 부분을 스팀에 재출시하기 위해 도스박스를 사용하였음을 언급했다. GOG.com은 일부 도스 릴리스를 위해 도스박스를 사용한다. 베데스다 소프트웍스는 도스박스를 권장하고 있으며 《》, 《》의 다운로드 페이지에 도스박스 웹사이트의 링크를 제공하고 있다. Bethesda 또한 《엘더 스크롤 앤솔로지》 릴리스에 해당 두 게임을 도스박스와 함께 배포하였다.
일렉트로닉 아츠는 자사의 오리진 클라이언트의 고전 게임 중 일부를 위해 도스박스를 사용하는데, 이를테면 《윙 커맨더 III》, 《》, 《심시티 2000》 등이 있다.
DBASE는 2012년 이후로 dbDOS 제품에 도스박스를 활용한다.
비상업적 이용.
2014년 12월 23일 이후로 인터넷 아카이브는 Em-DOSBox 포트를 사용하여 브라우저에서 플레이가 가능한 PC 게임 수천 개를 호스팅하고 있다. 이 컬렉션은 연구 목적으로만 제공된다.
같이 보기.
유사 소프트웨어
기타