Microsoft, “현재까지 발견된 가장 오래된 DOS 소스 코드” 오픈소스 공개
(arstechnica.com)- Microsoft가 MS-DOS라는 이름이 붙기 전까지 거슬러 올라가는 초기 DOS 자료를 공개해, 기존 공개분보다 더 오래전의 개발 단계를 보여줌
- 공개 자료에는 86-DOS 1.00 커널 소스, PC-DOS 1.00 커널의 여러 개발 스냅샷, CHKDSK 같은 유틸리티가 포함됨
- Tim Paterson은 Seattle Computer Products의 Intel 8086 컴퓨터 키트용으로 86-DOS를 만들었고, 이 운영체제는 QDOS로도 알려졌음
- Microsoft는 IBM PC 5150용 운영체제를 위해 86-DOS를 라이선스하고 Paterson을 고용한 뒤, 권리를 사들여 PC-DOS와 MS-DOS로 확장함
- 이번 코드는 디지털 보관본이 아니라 Paterson의 종이 출력물에서 수작업 전사·스캔돼, 초기 PC 운영체제 연구 자료의 범위를 넓힘
공개된 초기 DOS 소스 코드
- Microsoft가 “지금까지 공개한 DOS 소스 코드 중 가장 오래된 DOS 소스 코드”를 공개함
- 이번 공개는 MS-DOS라는 이름이 붙기 전의 코드까지 거슬러 올라가며, Microsoft의 공개 글에는
86-DOS 1.00커널 소스,PC-DOS 1.00커널의 여러 개발 스냅샷,CHKDSK같은 유틸리티가 포함됨 - 기존에 공개된 MS-DOS 소스보다 더 이른 시점의 자료라, 초기 DOS 개발 과정을 더 앞단에서 확인할 수 있음
86-DOS에서 MS-DOS로 이어진 경로
- Tim Paterson은 Seattle Computer Products가 판매한 Intel 8086 기반 컴퓨터 키트를 위해 86-DOS를 처음 만들었음
- 86-DOS는 이전에 QDOS로 알려졌고, QDOS는 “quick and dirty operating system”의 약자였음
- Microsoft는 아직 개발 중이던 IBM PC 5150에 운영체제를 제공하기 위해 86-DOS를 라이선스하고 Paterson을 고용해 개발을 이어가게 함
- 이후 Microsoft는 86-DOS 권리를 완전히 사들였고, IBM에는 PC-DOS로 라이선스하면서 다른 회사에도 판매할 수 있는 권리를 유지함
- Microsoft가 판매한 버전은 MS-DOS로 불렸고, 1980년대와 1990년대에 타사 IBM PC 호환 기종이 확산되면서 널리 쓰인 운영체제가 됨
종이 출력물에서 복원된 코드
- 이번 소스 코드는 너무 오래되어 디지털 형태로 보관되지 않았음
- Yufeng Gao와 Rich Cini가 이끄는 역사가와 보존 전문가 팀은 “DOS Disassembly Group”이라는 이름으로 Paterson이 제공한 종이 출력물에서 코드를 수작업으로 전사하고 스캔함
- 수십 년 된 출력물의 품질 때문에 현대 OCR 소프트웨어가 제대로 처리하기 어려워 복원 작업이 더 까다로웠음
관련 공개와 보존 흐름
- Microsoft는 2014년에 MS-DOS 1.25와 2.0을 오픈소스로 공개했고, 2018년에 다시 공개함
- 2024년에는 특이한 버전으로 묘사된 MS-DOS 4.0 소스 코드도 공개했으며, 이 버전들은 같은 GitHub 저장소에 올라와 있음
- 이번 공개는 2020년대에 새로 재발견된 첫 86-DOS 관련 자료는 아니며, 2년 전에는 알려진 가장 이른 86-DOS 버전이 재발견되어 Internet Archive에 업로드됨
- MS-DOS 브랜드 이전의 코드, 개발 스냅샷, 유틸리티가 함께 공개되면서 초기 PC 운영체제 역사를 연구할 원자료가 더 넓어짐
댓글과 토론
Hacker News 의견들
-
이런 말은 드물지만, 고마워 Microsoft. 사실 DOS만큼이나, 어쩌면 더 중요한 건 Microsoft가 만든 BASIC이었음
그들이 진짜 하고 싶었던 일은 BASIC이었고, DOS는 IBM 계약을 따내게 해준 계기였음. 수십 년 동안 Microsoft는 운영체제와 기타 소프트웨어를 부업으로 만드는 개발자 도구 회사에 가까웠고, 그 BASIC 코드도 오픈소스로 공개했음 https://opensource.microsoft.com/blog/2025/09/03/microsoft-o...- 커밋에 49년 전이라고 찍힌 건 처음 보는 것 같음
- Commodore 64를 쓰면서도 사실 계속 Microsoft를 쓰고 있었다는 걸 깨달았던 기억이 남
- 흥미로운 건 Microsoft BASIC 자체가 BASIC-PLUS에서 파생됐고, BASIC-PLUS는 Dartmouth BASIC에서 나왔다는 점임
Dartmouth BASIC은 나중에 구조적 프로그래밍 언어인 SBASIC(Structured BASIC)으로 발전했지만, Microsoft BASIC의 인기가 오히려 SBASIC의 ANSI 표준화를 멈추게 만들었음
https://en.wikipedia.org/wiki/Microsoft_BASIC
Altair BASIC 인터프리터는 Paul Allen과 Bill Gates가 PDP-10 미니컴퓨터에서 직접 만든 Intel 8080 에뮬레이터를 이용해 개발했고, Microsoft 방언은 Gates가 고등학교 때 썼던 DEC의 BASIC-PLUS를 본뜬 것이었음
https://en.wikipedia.org/wiki/Dartmouth_BASIC
Dartmouth BASIC은 John G. Kemeny와 Thomas E. Kurtz가 만든 원조 BASIC이며, DTSS와 함께 학부생과 대학 구성원 전체에 대화형 프로그래밍 환경을 제공했음. 1975년에는 구조적 프로그래밍 개념을 넣은 SBASIC을 내놓았고, 이는 1980년대 초 ANSI “Standard BASIC” 작업의 기반이 됨
하지만 1980년대 후반에는 수천만 대의 가정용 컴퓨터가 MS BASIC 인터프리터 변종을 돌리면서 사실상 표준이 되었고, 결국 ANSI SBASIC 노력은 중단됨. Kemeny와 Kurtz는 그 개념을 이어가 True BASIC을 만들었지만, 2026년 2월 기준 TrueBASIC 웹사이트는 공식적으로 닫힘
https://en.wikipedia.org/wiki/True_BASIC
-
그 시절에는 어셈블리 몇천 줄을 쓰는 것만으로 성공적인 소프트웨어 회사를 시작할 수 있었다는 사실이 정말 부러움
- 맞지만, 그 어셈블리는 DOS가 아니었고 쉬운 일도 아니었음
Microsoft는 DOS 코드를 직접 쓴 게 아니라 구매했음. 물론 이후 개발하고 수정하긴 했지만, 그건 기술적 성취라기보다 영리하고 운도 따른 사업 거래였음
Microsoft의 진짜 시작은 그보다 앞서 Allen, Gates, Davidoff가 Altair BASIC 인터프리터를 만든 일이었고, 그건 상당한 성취였음
그들은 대상 컴퓨터를 본 적도 없었고, 컴퓨터를 소유하지도 않았음. 쓰면 안 되는 대학 컴퓨터에서 8주 동안 작업했음
“Altair는 BASIC 인터프리터 구매 가능성을 두고 만나기로 했지만, Gates와 Allen에게는 BASIC 인터프리터도 Altair 시스템도 없었다. Allen은 PDP-10 시분할 컴퓨터에서 도는 Intel 8008 에뮬레이터를 만들어 둔 상태였고, 이를 Altair 프로그래머 가이드에 맞춰 수정해 Harvard의 PDP-10에서 인터프리터를 개발하고 테스트했다.”
완성된 인터프리터는 자체 입출력 시스템과 줄 편집기를 포함해 4KB 메모리에 들어갔고, 해석할 프로그램을 위한 공간도 충분히 남겼음. 데모 준비를 위해 완성된 인터프리터를 Altair가 읽을 수 있는 천공 테이프에 저장했고, Paul Allen은 Altair를 만나러 Albuquerque로 날아갔음
착륙 직전 Allen은 테이프를 메모리로 읽어들이는 부트로더를 깜빡했다는 걸 깨닫고, 8080 기계어로 비행기가 착륙하기 전에 프로그램을 완성했음. Altair에 프로그램을 올리고 시스템 메모리 크기를 묻는 프롬프트가 뜬 뒤에야 Gates와 Allen은 인터프리터가 실제 Altair 하드웨어에서 동작한다는 걸 알았음
https://en.wikipedia.org/wiki/Altair_BASIC - 공정하게 말하면 회사를 이끌 냉혹한 사업가도 필요했을 것 같음. 지금도 대체로 마찬가지고
- 오히려 정반대로 느껴짐. 정말로 맞는 사람이 맞는 장소에 맞는 시점에 있어야 했던 것임
- 그렇게 단순한 프로세서와 시스템에서조차 그랬다는 게 놀라움. 디스크립터 테이블도 없고, 메모리 관리 설정도 없었음
요즘은 시작만 하려고 해도 주 프로세서 안의 작은 프로세서가 따로 필요함. 그때가 황금기였음 - 어셈블리를 TypeScript/Rust/Go 같은 것으로 바꿔도, 아이디어가 좋고 유용하다면 지금도 같은 원리가 적용됨
- 맞지만, 그 어셈블리는 DOS가 아니었고 쉬운 일도 아니었음
-
당시 소스 관련 논의는 여기 있음. 24일 전, 79점, 댓글 19개 https://news.ycombinator.com/item?id=47957494
GitHub 클론 관련 논의도 있음. 162점, 댓글 15개 https://news.ycombinator.com/item?id=47946813 -
놀랍게도 종이 출력물을 다시 OCR로 읽어 들여야 했음
이 소스 코드는 디지털로 저장돼 있지 않을 정도로 오래됐고, Yufeng Gao와 Rich Cini가 이끄는 역사학자와 보존가 팀 “DOS Disassembly Group”이 Paterson이 제공한 종이 출력물에서 코드를 힘들게 전사하고 스캔했음. 수십 년 된 출력물 품질 때문에 최신 OCR 소프트웨어도 어려움을 겪었다고 함- 도트 매트릭스 글꼴 OCR에서 무엇이 잘 먹히는지 더 듣고 싶음
레터 품질 프린터 출력은 97% 정도까지 OCR해본 적이 있는데, 주로 O와 X 문제가 있었음
그런데 요즘 기계학습 기반 텍스트 인식은 컴퓨터 코드가 사람 언어처럼 보이지 않는다는 이유로 거부하는 쪽으로도 편향된 것 같음 - 아버지 서류 속에서 발견한 목록을 스캔해서, 예전에 내가 쓴 오래된 소프트웨어 일부를 복구한 적이 있음
- 종이에 인쇄된 텍스트가 어떤 디지털 저장장치보다 오래 살아남은 또 하나의 사례임
- 도트 매트릭스 글꼴 OCR에서 무엇이 잘 먹히는지 더 듣고 싶음
-
Microsoft가 어떻게 운영체제 사업에 들어갔는지 흥미로운 이야기임. IBM은 CP/M 운영체제를 원했지만 Digital Research가 IBM의 NDA에 서명하지 않았고, 이게 컴퓨팅 역사에서 큰 분기점이 됨
“Triumph of the Nerds” TV 대본에서 인용하면:
https://www.pbs.org/nerds/part2.html
Jack Sams(IBM)는 Microsoft가 BASIC 언어와 운영체제를 모두 담은 패키지를 갖고 있다고 생각했지만, IBM은 사전 조사를 제대로 하지 않았음
Steve Ballmer에 따르면 IBM은 Microsoft가 SoftCard 제품에 CP/M을 얹어 팔았기 때문에, 새 개인용 컴퓨터용 CP/M을 라이선스할 수 있다고 생각했음. Microsoft는 “우리는 그 사업을 하지 않는다”고 답했음
Jack Sams는 Bill Gates가 권리가 없다고 설명하면서도 Gary Kildall이 준비가 돼 있을 것 같다고 했고, 그래서 그 자리에서 Digital Research의 Gary에게 전화해 IBM 사람들을 잘 대해달라고 했다고 함- 이 이야기의 세부 사실은 거의 전부 당사자들 사이에서도 다툼이 있음. 잘 안 풀린 회의가 있었다는 큰 줄기 정도만 확실해 보임
-
가장 초기 Windows 버전 소스가 공개되기까지 얼마나 걸릴지 궁금함. 이렇게 오래된 DOS 소스가 아직 남아 있다는 사실만으로도 예전 Windows 소스도 보존돼 있을 거라는 희망은 생김
- Windows 2000 코드베이스가 오픈소스나 소스 공개 형태로 나오는 날이면 행복하게 죽을 수 있을 것 같음
물론 그런 가능성의 빛이라도 보일 때쯤이면 이미 오래전에 죽어 있을 가능성이 크지만. 정말 아름답고 매끄럽게 돌아가던 운영체제였음 - 디스어셈블하는 건 어렵지 않을 것 같음
- 머지않았을 수도 있다고 봄. Microsoft가 플랫폼으로서의 Windows를 거의 마무리해 가는 인상을 받음
- 초기 Windows 3.11만 봐도 영감과 배울 만한 좋은 자료가 많을 것 같음
- 흥미를 끌기에는 수십 년쯤 너무 늦게 공개한 듯함
- Windows 2000 코드베이스가 오픈소스나 소스 공개 형태로 나오는 날이면 행복하게 죽을 수 있을 것 같음
-
최근 관련 글: Microsoft open sources DOS 1.00 on 45th anniversary - https://news.ycombinator.com/item?id=47957494 - 2026년 4월, 댓글 19개
-
현대 컴퓨팅의 초기 시절은 정말 빛났음. 우리는 기계를 있는 그대로 기계로 대했음
성능, 창의성, 과학이 모두 386 기계를 제대로 작동시키는 데 필요했음. 요즘은 라이브러리, 가상화, 나쁜 코드 위에 나쁜 코드 위에 나쁜 코드를 쌓는 것뿐이라 마음에 들지 않음- 가끔 내 컴퓨터 정신 모델이 아직도 48KB RAM의 Apple ][+ 라서 더 나은 코드를 쓰는 것 같다고 생각함
- 꽤 오래전부터 저수준 개념을 전혀 이해하지 못하는 프로그래머들이 많아졌음. JavaScript나 Python으로 시작해서 아래를 내려다본 적이 없고, 그들이 정상이라고 여길 괴물 같은 구조에는 한계가 없음
Linus Torvalds도 몇 달 전 AI 코딩 도구를 이야기하면서 비슷한 취지로 말했음. 그의 세대, 그리고 내 세대는 저수준부터 시작해 전체 스택에 대한 감각을 유지할 수 있어 운이 좋았지만, 요즘 아이들은 그런 기회를 얻기 어렵다는 것임
아이의 첫 코딩 경험이 천재처럼 보이는 챗봇이라면, 컴퓨터와 알고리즘, 자료구조에 대한 그런 수준의 감각을 익히기는 쉽지 않을 것 같음 - DOS와 “훌륭함”이 같은 문장에 있다니…
-
이건 가장 오래된 소스이긴 하지만, 86-DOS v0.1-C 바이너리는 이 v1.00 소스보다 더 이르고 v0.34도 발견됐으며, 에뮬레이터에서 내려받아 실행할 수 있음 :-)
https://arstechnica.com/gadgets/2024/01/the-oldest-known-ver...