
이게 무슨 일이냐면요
게임 개발자라면 한 번쯤 들어봤을 SDL(Simple DirectMedia Layer)이 DOS를 정식으로 지원하기 시작했어요. SDL이 뭐냐면, 창 띄우기, 키보드 입력 받기, 사운드 재생하기, 그래픽 그리기 같은 걸 운영체제마다 따로 짜지 않고 한 번만 짜면 어디서든 돌아가게 해주는 라이브러리거든요. 윈도우, 맥, 리눅스, 안드로이드, iOS는 물론이고 심지어 닌텐도 스위치나 플레이스테이션 같은 콘솔에서도 쓸 수 있어요. Valve의 Steam Deck이 리눅스 기반인데도 수많은 게임이 잘 돌아가는 이유 중 하나가 바로 이 SDL 덕분이에요.
그런데 이번에 병합된 PR은 좀 특이해요. 2026년에 DOS 지원이라니, 처음 들으면 "DOS를 아직도 쓰나?" 싶을 거예요. 여기서 말하는 DOS는 1980년대 후반부터 1990년대 중반까지 PC를 지배했던 그 운영체제 맞아요. MS-DOS, FreeDOS, DR-DOS 같은 것들이죠. 이미 상용 지원은 끝난 지 오래됐지만, 레트로 게임 개발자들과 임베디드 시스템 쪽에서는 여전히 쓰는 사람들이 있어요.
기술적으로 뭐가 대단하냐면
DOS는 현대 운영체제랑 완전히 달라요. 멀티태스킹도 제대로 안 되고, 메모리 보호도 없고, 가상 메모리 개념도 다르고, 심지어 드라이버 구조도 완전히 다르거든요. 그래픽을 그리려면 VGA 레지스터를 직접 건드려야 하고, 사운드를 내려면 Sound Blaster나 AdLib 같은 특정 카드의 하드웨어 주소에 직접 데이터를 써넣어야 해요. 지금 우리가 쓰는 API 기반 프로그래밍이랑은 세상이 다른 방식이에요.
이번 SDL의 DOS 포팅은 DJGPP라는 DOS용 GCC 컴파일러 환경을 기반으로 작업됐어요. DJGPP는 32비트 보호 모드로 DOS 프로그램을 돌릴 수 있게 해주는 도구인데, 이게 있어야 현대적인 C/C++ 코드를 DOS에서 컴파일할 수 있거든요. SDL 코드베이스에 DOS 전용 비디오, 오디오, 입력 백엔드가 추가됐고, VGA 모드 13h(그 유명한 320x200 256색 모드)부터 VESA 고해상도 모드까지 지원해요. 사운드는 Sound Blaster 계열 카드를 지원하고, 키보드와 마우스 입력도 BIOS 인터럽트를 통해 받아와요.
재밌는 건 SDL이 유지하는 추상화 레이어 덕분에, 기존에 SDL로 짠 게임이 거의 수정 없이 DOS에서도 빌드되고 돌아갈 수 있다는 거예요. 물론 메모리 제약(예전 DOS는 640KB 기본 메모리 한계가 있었죠)이나 부동소수점 성능 같은 건 신경써야 하지만, 적어도 창 시스템이나 이벤트 루프 코드는 그대로 쓸 수 있어요.
왜 지금 이걸 하냐면
레트로 컴퓨팅 씬이 생각보다 활발해요. DOSBox, DOSBox Staging 같은 에뮬레이터로 옛날 게임을 돌리는 사람도 많고, 실제 486이나 펜티엄 1 같은 오래된 하드웨어를 복원해서 쓰는 커뮤니티도 꽤 커요. FreeDOS 프로젝트는 2024년에 1.3 버전을 내놓으면서 여전히 활발히 개발되고 있고요. 이런 환경에서 현대적인 크로스 플랫폼 개발 도구가 DOS를 지원한다는 건 취미 개발자들한테는 큰 선물이에요.
비슷한 맥락의 프로젝트로는 Allegro라는 게임 라이브러리가 있는데, Allegro는 원래부터 DOS에서 시작된 라이브러리였어요. Raylib도 최근에 레트로 플랫폼 지원을 확장하는 분위기고요. 하지만 SDL은 업계 표준에 가까운 위치에 있어서, 이번 DOS 지원이 가지는 상징성이 더 커요.
한국 개발자 입장에서는
솔직히 실무에서 DOS용 소프트웨어를 만들 일은 거의 없을 거예요. 하지만 이게 의미가 없는 건 아니에요. 첫째로, 저수준 하드웨어 프로그래밍을 공부하고 싶을 때 DOS는 여전히 훌륭한 학습 환경이에요. 운영체제가 방해하지 않으니까 VGA 레지스터를 직접 건드려보거나, 인터럽트를 직접 처리해보는 경험을 할 수 있거든요. 임베디드 개발자라면 이런 경험이 실제 베어메탈 프로그래밍에 도움이 돼요.
둘째로, 레트로 게임 개발이나 데모씬(demoscene) 같은 취미 영역에 관심이 있다면 진입장벽이 많이 낮아진 거예요. 예전엔 DOS 개발을 하려면 Turbo C나 Watcom C++ 같은 옛날 도구를 찾아서 세팅하는 것만 해도 일이었는데, 이제는 SDL의 익숙한 API로 짜고 DOS 타겟으로 빌드만 하면 되거든요.
마무리
오래된 플랫폼을 계속 지원한다는 건 오픈소스 생태계의 건강함을 보여주는 지표이기도 해요. 상업적 이익이 거의 없는 일이지만, 누군가는 여전히 그 플랫폼에서 뭔가를 만들고 싶어하고, 그 욕구를 충족시켜주는 게 라이브러리의 역할이니까요. 여러분은 요즘도 옛날 하드웨어나 운영체제에서 코드를 돌려본 경험이 있나요? 아니면 DOS 같은 환경에서 배울 수 있는 것 중에 지금까지 가치 있다고 느끼는 게 있다면 뭔가요?
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공